Commit Graph

13143 Commits

Author SHA1 Message Date
Samir Jindel 927b0cb9ed [vm/aot] Support optimization of modulo against a power-of-two.
Improves MD5 performance on ARM32 by 15%, from 1.25s to 1.05s.

Cq-Include-Trybots: luci.dart.try:vm-kernel-optcounter-threshold-linux-release-x64-try, vm-kernel-precomp-linux-debug-x64-try, vm-kernel-precomp-linux-release-simarm-try, vm-kernel-precomp-linux-release-simarm64-try, vm-kernel-precomp-linux-release-x64-try, vm-kernel-precomp-mac-release-simarm64-try, vm-kernel-precomp-win-release-x64-try
Change-Id: Ia7a0614da662a80db051362fff7a4acacbc2455f
Reviewed-on: https://dart-review.googlesource.com/c/88723
Commit-Queue: Samir Jindel <sjindel@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2019-01-09 16:26:35 +00:00
Mouad Debbar 6bb1dcdfa4 Fix wording
The current wording seems to be saying the opposite of what it's supposed to.

Closes #35507
https://github.com/dart-lang/sdk/pull/35507

GitOrigin-RevId: cd1493d8bebf468459b3bd44544a24e18cda24cf
Change-Id: I200327ff152e23b56b11d0d503212926da3fe084
Reviewed-on: https://dart-review.googlesource.com/c/88123
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Michael Thomsen <mit@google.com>
2019-01-09 15:41:31 +00:00
Martin Kustermann e749576caa [VM/Compiler/AOT] Do not populate unused arguments descriptor in bare instructions mode
This saves around 1.5% RX on gallery in dart-aot (profile) mode when using bare instructions.

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

Change-Id: I6b72e5d9ee9e3785d9adb46a7fc542f80a07f8ba
Reviewed-on: https://dart-review.googlesource.com/c/88449
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
2019-01-09 14:28:42 +00:00
Martin Kustermann 3c662736d9 [VM] Ensure PP is restored when returning from runtime calls in bare instructions mode.
Now that we have a moving GC it's no longer sufficient to rely on callee-saving
behavior of PP.

This change also ensures that all calls go through RuntimeEntry::Call() .

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

Change-Id: I159986dc18a9b201175fd4a7064a24a1533790ef
Reviewed-on: https://dart-review.googlesource.com/c/88711
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
2019-01-09 08:34:55 +00:00
Alexander Markov 13a689f0fd [vm] Remove unnecessary class finalization
Change-Id: I4c51328af5f32fdb3c3065293e82993220b57b9d
Reviewed-on: https://dart-review.googlesource.com/c/88745
Reviewed-by: Régis Crelier <regis@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2019-01-08 23:56:23 +00:00
Ryan Macnak efdbeb8059 [vm] Repair JIT snapshots generated from gen_snapshot.
Bare-metal relocation processing was removing the static call table, which is needed at runtime for JIT code.

Change-Id: Iab9a5a9256afd5f3985e8311a0131471cd04932d
Reviewed-on: https://dart-review.googlesource.com/c/88762
Reviewed-by: Zach Anderson <zra@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2019-01-08 22:52:13 +00:00
Samir Jindel ac4809a1de [vm/aot] Support optimization of bitwise not.
Improves performance of MD5 by 3X on ARM32.

Cq-Include-Trybots: luci.dart.try:vm-kernel-optcounter-threshold-linux-release-x64-try, vm-kernel-precomp-linux-debug-x64-try, vm-kernel-precomp-linux-release-simarm-try, vm-kernel-precomp-linux-release-simarm64-try, vm-kernel-precomp-linux-release-x64-try, vm-kernel-precomp-mac-release-simarm64-try, vm-kernel-precomp-win-release-x64-try
Change-Id: I235fece1d6adfb15ce8c3beed6ffb6ee3e753de7
Reviewed-on: https://dart-review.googlesource.com/c/88709
Commit-Queue: Samir Jindel <sjindel@google.com>
Auto-Submit: Samir Jindel <sjindel@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2019-01-08 14:04:00 +00:00
Martin Kustermann 48f99e98d8 [VM] Fix calculation of unchecked entrypoint offset
On arm64 Code.UncheckedEntryPoint() returned the wrong value because it
is based on the offset of the Label of FunctionEntryInstr.

That works on X64/ARM, but not on ARM64, because there the monomorphic
entry and frame setup is emitted in FlowGraphCompiler::CompileGraph().

Change-Id: I9c1b1be71997b83d76b385d5b811a665015c32b5
Reviewed-on: https://dart-review.googlesource.com/c/88708
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
2019-01-08 12:39:13 +00:00
Samir Jindel b58e8d7307 [vm] Use TFA to remove explicit type-checks (including keyword-covariant parameters).
- Also allow using the unchecked entry-point for invocations of generic functions where
  there are no bounds or the bounds don't require dynamic checks.

Change-Id: I6ca1ebec777ecf2989c4fb77425d65d542d5adf2
Cq-Include-Trybots: luci.dart.try:vm-kernel-optcounter-threshold-linux-release-x64-try, vm-kernel-precomp-linux-debug-x64-try, vm-kernel-precomp-linux-release-simarm-try, vm-kernel-precomp-linux-release-simarm64-try, vm-kernel-precomp-linux-release-x64-try, vm-kernel-precomp-mac-release-simarm64-try, vm-kernel-precomp-win-release-x64-try
Reviewed-on: https://dart-review.googlesource.com/c/87181
Commit-Queue: Samir Jindel <sjindel@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2019-01-08 08:36:58 +00:00
asiva a69e73e42a [VM / Runtime] Remove more dead code
Remove ValidatePostFinalizePatch and SetRefinalizeAfterPatch which are
not used anymore

Remove RawClass::kRefinalizeAfterPatch bit

Change-Id: I289df7ffe3e3017335510b5c14331254ca73c503
Reviewed-on: https://dart-review.googlesource.com/c/88621
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Siva Annamalai <asiva@google.com>
2019-01-08 01:26:18 +00:00
Ryan Macnak e639c0df28 [vm, profiler] Place idle GC into a separate VM tag.
Bug: https://github.com/dart-lang/sdk/issues/35394
Change-Id: If95ac1cf140f0a37a161cd9d0bd846c62ce29eb2
Reviewed-on: https://dart-review.googlesource.com/c/88382
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2019-01-08 00:28:59 +00:00
Alexander Markov f6ce65b9b1 [vm] Fix handling of unwind errors in RegExp_ExecuteMatch* native methods
Fixes https://github.com/dart-lang/sdk/issues/35588

Change-Id: I59b4bd82033108e206572b27fda737a675c0da62
Reviewed-on: https://dart-review.googlesource.com/c/88620
Auto-Submit: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2019-01-07 22:47:33 +00:00
asiva 2427a69e14 [VM/Runtime] Refactoring sources to enable interpreter only builds.
The interpreter only build of the Dart VM should not be including any
sources from the 'compiler' directory.
First part of restructuring sources to enable an interpreter only build
of the VM
- Move CompileClass from compiler.cc file to class_finalizer.cc

Change-Id: I8743c6537ed2d63e6991d78949f858a1ae506121
Reviewed-on: https://dart-review.googlesource.com/c/87987
Commit-Queue: Siva Annamalai <asiva@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Régis Crelier <regis@google.com>
2019-01-07 18:49:17 +00:00
Vyacheslav Egorov a62e924859 [vm/compiler] Ensure that field is added to guarded fields when Slot::Get uses its guarded properties.
There might be a race between background compiler and mutator where
mutator changes guarded state of the field after Slot was created from
it.

A situation is possible where we have a clone of a field with its
guarded state set to unknown, however Slot::Get for this field returns
a Slot created from the previous clone of the same field with a known
guarded state. In this case we must add *old* clone from which the Slot
was created to guarded fields and not the new clone, because new clone
has no guarded state to begin with and thus
ParsedFunction::AddToGuardedFields(...) would simply ignore it.

Such slots with inconsistent guarded state that are not in the current
list of guarded fields arise due to unsuccessful inlining attempts.
If we built and discard the graph, then guarded fields associated with
that graph are also discarded. However the slot itself stays behind in
the compilation global cache.

TEST=vm/cc/SlotFromGuardedField

Bug: b/121271056
Change-Id: Ib6ee5ec4922c033c3a71bdc46da74ead47b1edd0
Reviewed-on: https://dart-review.googlesource.com/c/88575
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2019-01-07 16:25:02 +00:00
Alexander Markov 3b29f5ad81 [VM/AOT/TFA] Do not attribute calls via fields/getters with inference results
MethodInvocation nodes which have field or getter as interface target
actually correspond to 2 calls: 1) getter; 2) implicit call() on the result
of the getter.

While this was correctly modeled in summaries in TFA, it is not correct
to attribute such MethodInvocation nodes with results of the inference,
as results correspond to an each distinct call. To fix this, Call
statements in summaries are created without attaching them to a
corresponding kernel AST node.

Change-Id: I3ea28ed85550192f8b592a926cac0eae23810811
Reviewed-on: https://dart-review.googlesource.com/c/88424
Commit-Queue: Martin Kustermann <kustermann@google.com>
Auto-Submit: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2019-01-07 10:22:40 +00:00
asiva d9ac2704f8 [VM / Runtime] Remove Class::ApplyPatch which is dead code now.
All application of patches is now done in the front end there
are no callers to Class::ApplyPatch, deleting it.

Change-Id: I84857ea49463faea8df6ce1ce88c0f704a893e65
Reviewed-on: https://dart-review.googlesource.com/c/88426
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Siva Annamalai <asiva@google.com>
2019-01-04 22:36:28 +00:00
Jens Johansen d53f02aa8a Remove writeOptionalReference
References can be null --- it's written as the byte [0].
Thus in the null case it would before be [0] and now be [0].
In the non-null case it would before be [1, xyz] (1 for Tag.Something
and xyz for the actual, now positive, uint30). Now it would be [xyz].

Change-Id: Ibc08d3afb7275b0429a4d6c5e667fbd381121489
Reviewed-on: https://dart-review.googlesource.com/c/85394
Reviewed-by: Kevin Millikin <kmillikin@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2019-01-04 13:31:03 +00:00
Alexander Markov 0e65e45e9e [vm/compiler] Do not use interface target for calls via getters
For calls via getters and fields front-end generates MethodInvocation
node with interface target pointing to a getter/field.
Such target doesn't fully represent what is being called - it should
be implicitly chained by call(), so it is incorrect to use such
interface target for type propagation.

Change-Id: I76198b443474fdcb383671fbc9946b4938a4e1df
Reviewed-on: https://dart-review.googlesource.com/c/88260
Auto-Submit: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Régis Crelier <regis@google.com>
Commit-Queue: Régis Crelier <regis@google.com>
2019-01-03 22:03:13 +00:00
Ryan Macnak fdee3a42e0 [vm, gc] Fix untracked pointer in DeoptContext.
Bug: https://github.com/dart-lang/sdk/issues/35547
Change-Id: I610b2ad863c973fe2c46787c07e4be39aea8eb89
Reviewed-on: https://dart-review.googlesource.com/c/88288
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2019-01-03 20:59:00 +00:00
Régis Crelier 0668014f30 [VM compiler] Take FutureOr into account when checking for Number type.
A field typed 'FutureOr<T>' may contain an instance of a Number type at runtime.
This fixes issue #35542 and adds a regression test.

Change-Id: Idd19dff3edc5e061da28ab2906c34b3133ea8bd8
Reviewed-on: https://dart-review.googlesource.com/c/88280
Commit-Queue: Régis Crelier <regis@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2019-01-03 19:45:53 +00:00
Zach Anderson 42702e2c64 [vm] Spot fixes for Fuchsia
Change-Id: I4714f92cd2732875df584fc816228fb4b88f5828
Reviewed-on: https://dart-review.googlesource.com/c/88285
Reviewed-by: Siva Annamalai <asiva@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Zach Anderson <zra@google.com>
2019-01-03 19:04:10 +00:00
Alexander Aprelev 15b1c1c401 [vm] Return empty array for constant table rather than null when there are no libraries.
This is follow-up to https://dart-review.googlesource.com/c/sdk/+/87613.

Change-Id: I4c26b07c36b1db31a20c11c1194f66f9ce56a03f
Reviewed-on: https://dart-review.googlesource.com/c/88201
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Alexander Aprelev <aam@google.com>
2019-01-03 17:17:54 +00:00
Stevie Strickland 38829df284 [VM/Compiler] Fix binds replaced with statements.
In some cases, we could replace a binding instruction like a
InstanceCall with a subgraph that would end with a non-binding
instruction like a StoreInstanceFieldExpr.  When the inliner attempted
to replace the uses of the former, the lack of an SSA temp in the latter
would cause weird results.

Change the code to check that the new replacement has an SSA temp, and
if it doesn't, use the temp assigned to the null constant in the flow
graph.

Closes https://github.com/dart-lang/sdk/issues/35481

Change-Id: Id90717b6a906703fb442f9cd0cacc3bc14fb4887
Reviewed-on: https://dart-review.googlesource.com/c/88321
Commit-Queue: Stevie Strickland <sstrickl@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2019-01-03 13:11:36 +00:00
Ryan Macnak c37c7a2a77 [observatory] Include Contexts in user heap snapshots.
Change-Id: If9f29a6ea81ef5cb2bfd73b9dc2a21086fdc3eac
Reviewed-on: https://dart-review.googlesource.com/c/88240
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2019-01-03 01:49:05 +00:00
Régis Crelier 08492f41cd [VM Runtime] Removed 'IsMoreSpecificThan' support in the VM.
In Dart2, the type relation "is more specific than" is no different than "is
subtype of". Since Dart1 is not supported anymore, type checking in the runtime
can be simplified and cleaned up.

Change-Id: I8e95b9e47146315c9a6f6c29b732ecbeb4e9ae97
Reviewed-on: https://dart-review.googlesource.com/c/88221
Commit-Queue: Régis Crelier <regis@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
2019-01-03 00:41:20 +00:00
Alexander Markov d8e920fbad [vm/bytecode] Correct token kind for _instanceOf calls
When building flow graph from bytecode, token kind was not assigned
to _instanceOf calls, disabling certain optimizations.

Results on Iteration benchmark in --use-bytecode-compiler mode:

Before:
Iteration.concat.manual2(RunTime): 5234.970684073108 us.
Iteration.concat.manual2.typed(RunTime): 11202.951642458102 us.

After:
Iteration.concat.manual2(RunTime): 646.3644823909532 us.
Iteration.concat.manual2.typed(RunTime): 687.4386742268042 us.

Change-Id: Ica48634ba1cdaf65ffff290e251de8e6f3b5a165
Reviewed-on: https://dart-review.googlesource.com/c/88230
Auto-Submit: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Régis Crelier <regis@google.com>
Reviewed-by: Régis Crelier <regis@google.com>
2019-01-02 23:18:38 +00:00
Ian McKellar e548154bbb [fuchsia] Update to new FIDL API
There's an incoming change to use std:: types for non-nullable strings
and vectors.

See: https://fuchsia-review.googlesource.com/c/garnet/+/236996

Change-Id: Ib924e812a679213928a26dbf29402f40cb5f4cb3
Reviewed-on: https://dart-review.googlesource.com/c/88122
Commit-Queue: Zach Anderson <zra@google.com>
Reviewed-by: Zach Anderson <zra@google.com>
2019-01-02 17:57:52 +00:00
Liam Appelbe 28fb42cc5b [VM] Filter noSuchMethod forwarders from coverage reports
Closes https://github.com/dart-lang/sdk/issues/35453

Bug: https://github.com/dart-lang/sdk/issues/35453
Change-Id: I763d705b9b3968452d569cf30b05ef4de25995b1
Reviewed-on: https://dart-review.googlesource.com/c/88121
Commit-Queue: Liam Appelbe <liama@google.com>
Reviewed-by: Alexander Aprelev <aam@google.com>
2018-12-28 23:31:54 +00:00
Michael Goderbauer d1817ddc91 Fix typo
This one is giving Flutter's license script the hick-ups.

Change-Id: I5a1bc0b8bf26694cd85fec417922f25fa7211c5b
Reviewed-on: https://dart-review.googlesource.com/c/87986
Reviewed-by: Siva Annamalai <asiva@google.com>
2018-12-21 22:08:36 +00:00
Alexander Aprelev 2f26679409 [vm/reload] Reset isolate reload kernel library stats to zero.
This is follow-up to https://dart-review.googlesource.com/c/87706.

Change-Id: I134fbb9c2640c6022b01430ebc04f902c6b02a31
Reviewed-on: https://dart-review.googlesource.com/c/87943
Commit-Queue: Alexander Aprelev <aam@google.com>
Commit-Queue: Siva Annamalai <asiva@google.com>
Auto-Submit: Alexander Aprelev <aam@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
2018-12-21 00:31:40 +00:00
asiva e6696267b2 [VM/GC] Fix field initialization bug.
Missed field initialization in previous commit.

Change-Id: Ia77aaeca4aff52e59204a5272404dbb24c28742a
Reviewed-on: https://dart-review.googlesource.com/c/87944
Reviewed-by: Siva Annamalai <asiva@google.com>
2018-12-21 00:11:20 +00:00
asiva dff358223e [VM/Runtime] Delete flag --sync-async and it's uses.
Remove all references to the --sync-async flag which was added as a transition step
when the feature was being introduced.

Change-Id: Ic5b1c8c8b3e2d92a70d954d401afeddfd43f5e92
Reviewed-on: https://dart-review.googlesource.com/c/87381
Commit-Queue: Siva Annamalai <asiva@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2018-12-20 23:37:45 +00:00
Alexander Aprelev 7a02066c30 [vm] Report kernel program stats for hot-reload request.
Change-Id: I73de5869bea60153ffb416a2a05cd7de538b0f59
Reviewed-on: https://dart-review.googlesource.com/c/87706
Commit-Queue: Alexander Aprelev <aam@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
2018-12-20 23:14:16 +00:00
asiva c0083a6e03 [VM/GC] Turn off concurrent marking during a reload.
Turn off concurrent marking during a reload as new instances could be allocated when loading a kernel file and this results in inconsistencies for the marking thread which is traversing the heap and expects to find instances only from the old set of classes.
(This change is related to Issue https://github.com/dart-lang/sdk/issues/35401)

Change-Id: I294b91d2cc5d86b860a77684457b0f963d2fe557
Reviewed-on: https://dart-review.googlesource.com/c/87707
Commit-Queue: Siva Annamalai <asiva@google.com>
Reviewed-by: Zach Anderson <zra@google.com>
2018-12-20 22:18:27 +00:00
Aart Bik aec0aab155 [vm/compiler] Detect proper induction bounds
Rationale:
Finds general bounds on an induction variable by
looking at loop exits that use strict comparisons.
An intended client is bounds-check-elimination (AOT).


Change-Id: Icfd6481aad9669c15b78630e4322667cfce7c1ef
Reviewed-on: https://dart-review.googlesource.com/c/87485
Commit-Queue: Aart Bik <ajcbik@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2018-12-20 18:49:30 +00:00
Alexander Aprelev 9611f8bd99 [vm] Ensure ReadConstantTable works if no libraries in the kernel file.
This fixes pkg/vm/incremental_compiler_test when it is run in debug mode.

Change-Id: I6445c87175531be569bce72556a38361b2f2d602
Reviewed-on: https://dart-review.googlesource.com/c/87613
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Alexander Aprelev <aam@google.com>
2018-12-20 02:35:19 +00:00
Régis Crelier 9c8d627347 [vm interpreter] Remove intrinsics code as 'Intrinsic' bytecode is not used.
Change-Id: I9590bea15eeacafc32e3f31cfb5a41243556f979
Reviewed-on: https://dart-review.googlesource.com/c/87720
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Régis Crelier <regis@google.com>
2018-12-19 23:05:36 +00:00
Zichang Guo 5a0dd76be0 #35222 Return null and Print Error with invalid UTF8 input
Change-Id: Ic186d8139b6466cbace3db51c662ce8951462e89
Reviewed-on: https://dart-review.googlesource.com/c/87460
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Zichang Guo <zichangguo@google.com>
2018-12-19 22:04:45 +00:00
Régis Crelier a94137136f [vm] Propagate failure to instantiate bogus signature to optimizing compiler.
This is a follow up to change https://dart-review.googlesource.com/c/sdk/+/87500
The regression test is expanded to cover the new case.
Unrelated change: properly recognize TypeRef as function type.

Change-Id: Ibfb4c18825f70433766a1151f087db5fab52a1ca
Reviewed-on: https://dart-review.googlesource.com/c/87704
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Régis Crelier <regis@google.com>
2018-12-19 21:47:34 +00:00
Régis Crelier 1a260925ef [vm] Unify CanonicalType and DeclarationType on 'Class' VM class.
CanonicalType is a leftover method/field from the time classes were keeping
track of their own canonical types and is still used for non-generic classes.
DeclarationType is more general and can be used where CanonicalType is used.
The field canonical_type_ is renamed to declaration_type_ and now caches the
DeclarationType.

Change-Id: I585c7bc2d3ae760a4a0e783bc77fb8d8efdbf682
Reviewed-on: https://dart-review.googlesource.com/c/87482
Commit-Queue: Régis Crelier <regis@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2018-12-19 18:46:39 +00:00
Alexander Aprelev b1c963c84b Load kernel files in reverse order to accommodate topological order that pub build_runner produces.
This fixes a bug with generation of coverage report in presence of mixin declaration/application coming from different dill files.

Change-Id: Ie80fd6080cf65c3b895606809194c2bc6a08612a
Reviewed-on: https://dart-review.googlesource.com/c/87605
Reviewed-by: Siva Annamalai <asiva@google.com>
Reviewed-by: Keerti Parthasarathy <keertip@google.com>
Commit-Queue: Alexander Aprelev <aam@google.com>
2018-12-18 22:09:53 +00:00
Liam Appelbe f8a680e511 Revert "Remove kernel isolate API from the public dart_api.h"
This reverts commit 9906819fb7.

Reason for revert: Follow up CLs are more complicated than I thought, so I don't want to leave it in an inconsistent state.

Original change's description:
> Remove kernel isolate API from the public dart_api.h
> 
> This is the first step in moving the kernel isolate out
> of the VM and into the standalone embedder.
> 
> Bug: https://github.com/dart-lang/sdk/issues/33433
> Change-Id: Ie8d9ac1c27efe2661f0441b75275119966d197af
> Reviewed-on: https://dart-review.googlesource.com/c/84829
> Commit-Queue: Liam Appelbe <liama@google.com>
> Reviewed-by: Ryan Macnak <rmacnak@google.com>

TBR=rmacnak@google.com,liama@google.com

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug: https://github.com/dart-lang/sdk/issues/33433
Change-Id: Iaf753c210e918df167364b50ee823b2557896628
Reviewed-on: https://dart-review.googlesource.com/c/87623
Reviewed-by: Liam Appelbe <liama@google.com>
Reviewed-by: Zach Anderson <zra@google.com>
Commit-Queue: Liam Appelbe <liama@google.com>
2018-12-18 20:20:42 +00:00
Liam Appelbe 47fec6ce00 Make capacity check and usage increase atomic.
The fiddly part of this is that the current flow is: check
capacity, allocate page, increase usage (but only if page
allocation was successful). So the idea of this CL is to
increase the usage optimistically, then decrease it if the
page allocation fails.

Closes https://github.com/dart-lang/sdk/issues/27413

Bug: https://github.com/dart-lang/sdk/issues/27413
Change-Id: I97ccf3c5a449dc377b8748a73ff4fcffe6d07f2b
Reviewed-on: https://dart-review.googlesource.com/c/86943
Commit-Queue: Liam Appelbe <liama@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2018-12-18 18:31:10 +00:00
Régis Crelier 8535d0641a [vm] Workaround for failure to instantiate bogus type in optimizing compiler.
This temporarily fixes issue 35432, but a more permanent fix should be applied
to the optimizing compiler.

Change-Id: Ibb43b180ea74f2693c48128e90badbb6b411f5b5
Reviewed-on: https://dart-review.googlesource.com/c/87500
Commit-Queue: Régis Crelier <regis@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-12-18 18:13:50 +00:00
Daco Harkes 78fb462332 [vm] documentation of TypeArguments vs arguments
Change-Id: I1bae456f70c79ac7c56c380b106e9ac8c89eaef6
Reviewed-on: https://dart-review.googlesource.com/c/87584
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Daco Harkes <dacoharkes@google.com>
2018-12-18 17:13:13 +00:00
Vyacheslav Egorov 7840675171 [vm] Fix vm/cc/ICDataTest: use release-store/acquire-load for array of ICData objects.
Previous the test was accessing this array without any synchronization
meaning that stores of new ICData objects into this array could
be observed too early, before ICData object itself is initialized.

Also add release/acquire in the code that attaches ICData map to
the function - to ensure that if compiler thread sees ICData map
then it is guaranteed to be fully initialized.

Closes #34999

Change-Id: I95ba857122e2a5afed90b1518d591282e8255002
Reviewed-on: https://dart-review.googlesource.com/c/87583
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
Auto-Submit: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2018-12-18 16:46:03 +00:00
Clement Skau 01a9c1bd11 Adds simple native ServiceStream consumer API.
This enables metric collection of e.g. garbage collection by listening to all GC events.

Bug: b/117604553
Change-Id: Ic36fd2446cba90be0253ec5e24eddd1c16629c4b
Reviewed-on: https://dart-review.googlesource.com/c/85922
Commit-Queue: Clement Skau <cskau@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2018-12-18 14:58:42 +00:00
Liam Appelbe dcf24df2bb Shorten the script URI in stack traces for URI encoded scripts.
Closes https://github.com/dart-lang/sdk/issues/34091

Bug: https://github.com/dart-lang/sdk/issues/34091
Change-Id: I1dbf0c8ff282f617f3503265f7e3a24ab56dd57f
Reviewed-on: https://dart-review.googlesource.com/c/87421
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Liam Appelbe <liama@google.com>
2018-12-17 23:36:09 +00:00
Ryan Macnak e92c7678a7 [vm, observatory] Respect requested tag order even when --profile-vm=false.
Blame time waiting for service or kernel isolate startup against LoadWait instead of VM.

In the table profile view, include VM tags. Because of the flattening nature of this view, it is less intrusive than in the tree view.

Bug: https://github.com/dart-lang/sdk/issues/35394
Change-Id: If13c57daa96cb69c5e5a009dfd973b491b694d04
Reviewed-on: https://dart-review.googlesource.com/c/87380
Reviewed-by: Alexander Aprelev <aam@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2018-12-17 23:35:24 +00:00
Martin Kustermann 52f7e9ed71 [VM] Ensure the start of the entrypoints is also 2-byte aligned
Fixes https://github.com/dart-lang/sdk/issues/35419

Change-Id: I1e4478573c6fc032485ad7c1ec3069e4fa946733
Reviewed-on: https://dart-review.googlesource.com/c/87404
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
2018-12-17 12:45:35 +00:00