Commit Graph

15405 Commits

Author SHA1 Message Date
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
Lasse R.H. Nielsen 5d85f113e8 Add constant map-based set implementation.
Change-Id: I3be60bdfea2b0f8c8238705d7f6a830147083b76
Reviewed-on: https://dart-review.googlesource.com/c/85704
Commit-Queue: Lasse R.H. Nielsen <lrn@google.com>
Reviewed-by: Aske Simon Christensen <askesc@google.com>
2019-01-03 14:47:28 +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
Ben Konyi b61efcd3c4 [ VM / Service ] Started cleaning up tests for the service protocol.
Mostly focused on app_jitk tests in this CL, but updated issue numbers
and statuses where appropriate.

Change-Id: I6b57d0a3091ad10ddd143c5b420f6b2121e9cc73
Reviewed-on: https://dart-review.googlesource.com/c/88128
Commit-Queue: Ben Konyi <bkonyi@google.com>
Auto-Submit: Ben Konyi <bkonyi@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
2018-12-28 20:53:39 +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
Alexander Aprelev 7d14785115 This relands "Load isolate from parent's kernel in Isolate.spawn calls.".
Original PR was reverted because it broke hot-reload bots. This CL adds steps to initialize kernel_service compiler for child isolate. Compiler is needed to support hot-reload request. Child isolate's compiler is created from full kernel file produced by main isolate's compiler. Changes since original PR are pkg/vm/bin/kernel_service.dart in pkg/vm/lib/incremental_compiler.dart.

Further this CL changes kernel fingerprint calculation for interface types so it calculates the hash of the canonical names themselves, rather than indices(that might change from one compilation to another).

This reverts commit 63fd8f63e6.

Change-Id: I6fe5b2ef99f209b32cd4087dfd1c8cac229c2d8b
Reviewed-on: https://dart-review.googlesource.com/c/87265
Commit-Queue: Alexander Aprelev <aam@google.com>
Reviewed-by: Liam Appelbe <liama@google.com>
2018-12-14 23:45:57 +00:00
Ryan Macnak d9c8f29b48 [vm, dbc] Remove bad assert from DBC deoptimization.
DBC's "FPU registers" are in fact stack slots.

Bug: https://github.com/dart-lang/sdk/issues/35395
Change-Id: I64f90f29b55f3f9bb0fec863e1a13c651f364ee7
Reviewed-on: https://dart-review.googlesource.com/c/87271
Reviewed-by: Aart Bik <ajcbik@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2018-12-14 20:18:46 +00:00
Aart Bik fa181d94ef [dart/compiler] Refactor negate/flip token utilities
Rationale:
Avoids code duplication, also for planned uses later.
Change-Id: I05b97809f016805a2692c1fca3ec5a26354c527a
Reviewed-on: https://dart-review.googlesource.com/c/87300
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Aart Bik <ajcbik@google.com>
2018-12-14 17:29:44 +00:00
Martin Kustermann 5054079c7a [VM] Bare instructions - Part 6: Get rid of CODE_REG indirection in CallThroughCode/CallThroughFunction stubs
If the --use-bare-instructions flag is enabled we will:

  * Not load CODE_REG inside CallThroughCode (polymorphic case)

  * Not load CODE_REG inside CallThroughFunction (megamorphic case)

  * Store the EntryPoint of the function in the MegamorphicCache tables
    (instead of a Function pointer)

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

Change-Id: I8aca689dc4e92ece897972da4ae202338527ac62
Reviewed-on: https://dart-review.googlesource.com/c/86928
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-12-14 16:52:41 +00:00
Régis Crelier 25851db73d [vm/bytecode] Replace InstanceCall instruction with InterfaceCall and DynamicCall.
Dispatch interface calls via hashtable rather than inline cache.
InterfaceCall doesn't need to take arguments descriptor into account
when doing method lookup.

Change-Id: I30eae6ea638d1d2ad2cf3ff073c653fee3377f31
Reviewed-on: https://dart-review.googlesource.com/c/86106
Reviewed-by: Zach Anderson <zra@google.com>
Commit-Queue: Régis Crelier <regis@google.com>
2018-12-14 16:51:51 +00:00
Martin Kustermann 28f8c96abe [VM] Bare instructions - Part 5: Get rid of CODE_REG indirection in SwitchableCalls
If the --use-bare-instructions flag is enabled we will:

  * Make call sites load the target directly from the pool (instead of
    the code object) - this saves one instruction (and an indirect load)

  * Ensure the object pool will have direct entry addresses by:

     - Letting the clustered snapshot reader change any StubCode::UnlinkedCall()
       in the object pool by it's monomorphic entry
     - Change the code patcher to patch SwitchableCalls by writing the
       monomorphic entry into the pool (instead of the code object)

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

Change-Id: I4e41fc8e4461bde477cc559a6a4fccaaf3a350b5
Reviewed-on: https://dart-review.googlesource.com/c/86160
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-12-14 16:11:53 +00:00
Martin Kustermann f205292227 [VM] Bare instructions - Part 4: Add --use-bare-instructions flag to AOT compiler & runtime
This is the final CL which adds a new --use-bare-instructions flag to
the VM.

If this flag is set during AOT compilation, we will:

  * Build one global object pool (abbr: GOP) which all code objects
    share. This gop will be stored in the object store.  The PP register
    is populated in the enter dart stub and it is restored when
    returning from native calls.

  * Gets rid of the CODE_REG/PP slots from the dart frames. Instead the
    compiled code uses the global object pool, which is always in PP.

  * Starts emitting pc-relative calls for calls between two dart
    functions or when invoking a stub.
    Limitation: We only emit pc-relative calls between two code objects
    in the same isolate (this is because the image writer is writing
    instruction objects for vm-isolate/main-isolate seperately)

  * We do compile-time relocation of those static calls after the
    precompiler has finished its work, but before writing the snapshot.
    This patches all the instruction objects with pc-relative calls to
    have the right .text distance.

  * We emit a sorted list of code objects in ObjectStore::reverse_code_table,
    which will be used by the AOT runtime to go back from PC to Code
    objects (where all metadata, e.g. stack maps, catch entry moves, pc
    descriptors are available).

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

Change-Id: I6c5dd2b1571e3a889b27e804a24c2986c71e03b6
Reviewed-on: https://dart-review.googlesource.com/c/85769
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-12-14 16:03:04 +00:00
Vyacheslav Egorov 2e3788898a [vm] Remove Dart_CreateNativeWrapperClass API.
This API does not work in CFE world because CFE does not see classes
created dynamically.

Fix UseDartAPI benchmark that was using this API and was broken as a result.

Change-Id: If691373d32ac5b8ff23e350ce2eb5ed44045b1f1
Reviewed-on: https://dart-review.googlesource.com/c/87183
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
Auto-Submit: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Daco Harkes <dacoharkes@google.com>
2018-12-14 15:25:53 +00:00
Martin Kustermann 08c386a33e [VM] Do not use the contents of the megamorphic miss code in stack_frame
The megamorphic miss stub might not be initialized at the point in time
when we access it.

Fixes https://github.com/dart-lang/sdk/issues/35405

Change-Id: If20622bd4f3b14d6ece5a8de6f006d7081d6cf76
Reviewed-on: https://dart-review.googlesource.com/c/87322
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-12-14 15:06:10 +00:00
Stan Manilov 78f913273b Fix link to 'getScripts'
This was perhaps overlooked during refactoring. The current link doesn't
work.

Change-Id: Ia4f1378ba5c16a3ca1386e5fbebd1c78d824aa4e
Reviewed-on: https://dart-review.googlesource.com/c/87076
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Keerti Parthasarathy <keertip@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
2018-12-14 10:49:18 +00:00
Ryan Macnak 3e8b335af8 [vm] Adjust concurrent marker to re-enable code W^X.
Take 2: account for encountering Instructions in the write barrier.

Bug: https://github.com/dart-lang/sdk/issues/34002
Change-Id: I31a8fc8965042678a861a05b09070d52fa07e4a5
Reviewed-on: https://dart-review.googlesource.com/c/87082
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
2018-12-14 02:02:54 +00:00
Ryan Macnak a33cb92c4f [vm, bytecode] Fix memory leak in calls from compiled code to interpreted code.
Change-Id: If82d371fc49892508dd33cd837e6b06b40325a48
Reviewed-on: https://dart-review.googlesource.com/c/87264
Reviewed-by: Régis Crelier <regis@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2018-12-14 00:50:38 +00:00
Aart Bik 80a6f4b5dd [dart/fuzzer] refactor lists into new file
Rationale:
Refactor DartFuzz so that long lists of values appear
in separate file, making the actual fuzzing code easier
to read. Also, this prepares generating some of the
lists automaticaly (such a library methods). Note that
*no* version bump is required, since this refactoring
does not change behavior.
Change-Id: Ic58eb7bc1aa63f48ec0d37e3c2399917786086bd
Reviewed-on: https://dart-review.googlesource.com/c/87266
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Aart Bik <ajcbik@google.com>
2018-12-14 00:22:07 +00:00
Aart Bik 52030e8eac [vm/compiler] avoid literal null is non-nullable
Rationale:
Having a literal null checked by CheckNull with
a subsequent Redefinition resulted in some strange
unboxing that crashed AOT (fix courtesy Slava!).
Note that we still have some ambiguity around
adding/removing environments from instructions
that may deoptimize, but this change fixes all
prior related DartFuzz failures.

https://github.com/dart-lang/sdk/issues/35335

Change-Id: Ifb50d8cddf93e57758b2bbb83ad397ea281e9307
Reviewed-on: https://dart-review.googlesource.com/c/87280
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Aart Bik <ajcbik@google.com>
2018-12-13 22:38:48 +00:00
Régis Crelier cb8c0ab8f5 [vm] Remove MixinAppType VM class and VM code supporting type resolution.
In Dart2, mixin application classes are generated by kernel and type resolution
is performed by kernel. In Dart1, using the VM parser, these tasks were done
during class and type finalization.

Change-Id: I927b1446d906ffd76ed9591c96e0d974df09f3bf
Reviewed-on: https://dart-review.googlesource.com/c/87025
Commit-Queue: Régis Crelier <regis@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2018-12-13 20:18:36 +00:00
Daco Harkes 14ff2110ce [vm] refactor native entry and native entry type arguments
Change-Id: I03efbbf4340de1c8f23c60854ed991671ca2b647
Reviewed-on: https://dart-review.googlesource.com/c/87077
Commit-Queue: Daco Harkes <dacoharkes@google.com>
Reviewed-by: Samir Jindel <sjindel@google.com>
2018-12-13 19:29:26 +00:00
Aart Bik ddf3c5ee8c [vm/compiler] proper reason for deopt stub
Rationale:
Reporting check-class instead of the proper unbox
yields an incorrect compiler diagnostic, which may
obscure subsequent debugging.

https://github.com/dart-lang/sdk/issues/35335

Change-Id: I99358ef3432e77b4432d9a96755747eaadc27067
Reviewed-on: https://dart-review.googlesource.com/c/87161
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Aart Bik <ajcbik@google.com>
Commit-Queue: Aart Bik <ajcbik@google.com>
2018-12-13 18:35:24 +00:00
Martin Kustermann 2440a32461 [VM] Bare instructions - Part 3: Add support for building a PC -> Code mapping table
This CL adds a [ReversePcLookupCache] which, based on a list of code
objects, builds up a binary searchable table for mapping PCs to Code
objects (where all the metadata is available, like stackmaps, ...).

This CL also adds stack walking support for "bare instruction" frames.

In a later part we will start emitting the sorted list of code objects
(via the new field in the object store) under a flag.

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

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