Commit Graph

10912 Commits

Author SHA1 Message Date
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 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
Samir Jindel ae3a33bd79 [vm/aot] Fix issues with multiple entry-points.
- We can now skip checks on tearoffs of functions called only via tearoffs.
- We don't always insert a check when intrinsifying the an unchecked call to set indexed.
- We only build the unchecked entry-point of regular methods when inlining to reduce code size.

Change-Id: I2e6a647409130385cda03906e734a3c161d56ab4
Cq-Include-Trybots: luci.dart.try:vm-kernel-win-release-x64-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-win-release-x64-try
Reviewed-on: https://dart-review.googlesource.com/c/86562
Commit-Queue: Samir Jindel <sjindel@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-12-13 16:13:50 +00:00
Martin Kustermann 288d5f0a2a [VM] Bare instructions - Part 2: Start relocating instructions in AOT mode
Start ordering instructions before writing them out in AOT snapshots.

This is done by:

  * discovery of relevant code objects
  * ordering of the code objects (currently simply discovery order)
  * relocate any pc-relative calls by patching up pc-relative calls with
    the actual distance
  * producing image writer commands which tell it in which order and at
    which .text offsets to write out instructions

Note: Our compiler currently does not emit any pc-relative calls. This
will be added later on.

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

Change-Id: I0153c32a7427ea395e80489efadd5513fe7ca371
Reviewed-on: https://dart-review.googlesource.com/c/85745
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-12-13 12:53:09 +00:00
Martin Kustermann e4e77b9817 [VM] Bare instructions - Part 1: Add support for telling the image writer in which order instructions should be written
Issue https://github.com/dart-lang/sdk/issues/33274

Change-Id: If8c967d3ecafc551938271ce52157c5c4f384dff
Reviewed-on: https://dart-review.googlesource.com/c/85764
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-12-13 12:10:59 +00:00
Alexander Aprelev ca41d01170 [vm] Fix lookup of async variables by taking ctx_level into account.
Until this CL variables are assumed to be found in current context only even though they could come from parent's contexts.

Bug: https://github.com/dart-lang/sdk/issues/34134
Change-Id: Ibcfe1449558086d0c82a85cfd213667e8c917fe0
Reviewed-on: https://dart-review.googlesource.com/c/87163
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Alexander Aprelev <aam@google.com>
2018-12-13 02:16:44 +00:00
Ryan Macnak 0b1935ca70 [vm] Remove hash-by-address from the ObjectPool builder.
Bug: https://github.com/dart-lang/sdk/issues/30978
Change-Id: I345be6d3f1d4680bd247225cb714017ac16501ec
Reviewed-on: https://dart-review.googlesource.com/c/85649
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2018-12-13 01:30:54 +00:00
Ryan Macnak e15e8609aa [vm, gc] Fix merge mistake from 04941b5507 that effectively disabled concurrent marking by setting the soft and hard allocation limits to be the same.
Revert 0b66d91cd4, which has issues unmasked by the above.

Bug: https://github.com/dart-lang/sdk/issues/30433
Bug: https://github.com/dart-lang/sdk/issues/34002
Change-Id: I95129dd2bbafa717989a57c5d62582fdb2e64ffe
Reviewed-on: https://dart-review.googlesource.com/c/87121
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2018-12-12 23:14:08 +00:00
Ryan Macnak f6b5f9ce2e [vm] Add --gc_every to trigger major GC every N stack overflow checks.
Add DartFuzz configurations for various stress flags.

Change-Id: I2278ffcd1ea4193067c4c9f12ec669e48a182f00
Reviewed-on: https://dart-review.googlesource.com/c/86822
Reviewed-by: Aart Bik <ajcbik@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2018-12-11 01:28:02 +00:00
Régis Crelier d8bd7d68b8 [vm] Fix bots after commit 5f36c5f9.
Add signature_ field to runtime/vm/raw_object_fields.cc.
This field was changed from a union (sig_or_err_) to a proper field and was
previously not listed in runtime/vm/raw_object_fields.cc.

Change-Id: I03736c003811a3e3b17c56d7419c53796d3ea0ec
Reviewed-on: https://dart-review.googlesource.com/c/86840
Reviewed-by: Régis Crelier <regis@google.com>
Commit-Queue: Régis Crelier <regis@google.com>
2018-12-10 23:53:12 +00:00
Ryan Macnak 30896b87f1 [vm] Fix crash when enum initialization hits a stack overflow.
Give the compiler more headroom.

Have the simulators and interpreters distinguish between the true stack limit and the limit for trigger an overflow exception.

Bug: https://github.com/dart-lang/sdk/issues/35224
Bug: https://github.com/flutter/flutter/issues/25041
Change-Id: I048d73b649b4ce1f3d9b5a33d898ee9cfe54f6ca
Reviewed-on: https://dart-review.googlesource.com/c/86821
Reviewed-by: Aart Bik <ajcbik@google.com>
Reviewed-by: Régis Crelier <regis@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2018-12-10 23:40:21 +00:00
Aart Bik 81de5ec21c [vm/compiler] Do not use UnboxedIntConverter on tagged.
Rationale:
This avoids rewriting
   v1 <- Constant(#1)
   v2 <- BoxInt64:1402(v1)
   v3 <- UnboxInt64(v2)
into the non-existing
   v3 <- UnboxedIntConverter(tagged->int64, v1)

Note:
Arguably the input was incorrect (v1 should have been
an unboxed constant), but we allow type sloppy expressions
at a lot of places that are repaired later on, as for
this case after the fix. See the bug for more details.

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

Change-Id: I719124ba150a1c72fe6819a1edd8380847fd82c2
Reviewed-on: https://dart-review.googlesource.com/c/86823
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Aart Bik <ajcbik@google.com>
2018-12-10 23:24:37 +00:00
Régis Crelier 5f36c5f9d8 [vm] Delete BoundedType class in VM.
In Dart2, type bounds checking is either performed by the common front-end or
by explicitly generated code, but not by type finalization or runtime anymore,
as it was done in Dart1.
Consequently, the class BoundedType is not needed anymore, and malbounded or
malformed types are not seen by the runtime either.

Change-Id: I5d6e4c68d153d6730fa7ff7f6d9dcfa611299c16
Reviewed-on: https://dart-review.googlesource.com/c/86687
Commit-Queue: Régis Crelier <regis@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Samir Jindel <sjindel@google.com>
2018-12-10 23:15:27 +00:00
Ryan Macnak 4463aa0038 Revert "[vm] Fix crash when enum initialization hits a stack overflow."
This reverts commit e59312dafa.

Reason for revert: Broken arm and arm64 simulators

Original change's description:
> [vm] Fix crash when enum initialization hits a stack overflow.
> 
> Give the compiler more headroom.
> 
> Have the KBC and DBC interpreters distinguish between the true stack limit and the limit for trigger an overflow exception.
> 
> Bug: https://github.com/dart-lang/sdk/issues/35224
> Bug: https://github.com/flutter/flutter/issues/25041
> Change-Id: I85e72e1d3cceb70858c53567a4c8d3635e42165b
> Reviewed-on: https://dart-review.googlesource.com/c/86684
> Reviewed-by: Régis Crelier <regis@google.com>
> Commit-Queue: Ryan Macnak <rmacnak@google.com>

TBR=rmacnak@google.com,regis@google.com,ajcbik@google.com

Change-Id: I923cca32d34de37b761196f536873aaf81dcbc92
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: https://github.com/dart-lang/sdk/issues/35224, https://github.com/flutter/flutter/issues/25041
Reviewed-on: https://dart-review.googlesource.com/c/86782
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2018-12-10 18:52:10 +00:00
Ryan Macnak e59312dafa [vm] Fix crash when enum initialization hits a stack overflow.
Give the compiler more headroom.

Have the KBC and DBC interpreters distinguish between the true stack limit and the limit for trigger an overflow exception.

Bug: https://github.com/dart-lang/sdk/issues/35224
Bug: https://github.com/flutter/flutter/issues/25041
Change-Id: I85e72e1d3cceb70858c53567a4c8d3635e42165b
Reviewed-on: https://dart-review.googlesource.com/c/86684
Reviewed-by: Régis Crelier <regis@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2018-12-10 18:29:43 +00:00
Stevie Strickland 40be306fb0 [gardening] Always copy ICData prior to write.
To do this, we create a new Truncate() methods for Arrays, truncate
the ICData array to either 1 (just sentinel) or 2 (SMI + sentinel)
entries in Reset(), and change FindFreeIndex() to instead be
GrowFreeIndex() (which always copies).

Closes #35010.

Change-Id: Ia30f4b490cf9420caef843d7fcde9f461d15a206
Reviewed-on: https://dart-review.googlesource.com/c/86563
Commit-Queue: Stevie Strickland <sstrickl@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-12-10 17:09:21 +00:00