Commit Graph

13143 Commits

Author SHA1 Message Date
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
Aart Bik c1a0c611c3 [vm/compiler] Add missing case for CP
Rationale:
Constant propagator was missing a case for a
double binary operator.

https://github.com/dart-lang/sdk/issues/35321
https://github.com/dart-lang/sdk/issues/35355



Change-Id: Ie88fe082e88b74651e798d516784737b36b4dcd1
Reviewed-on: https://dart-review.googlesource.com/c/86101
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Aart Bik <ajcbik@google.com>
2018-12-07 22:38:10 +00:00
Ryan Macnak 4191437ccc Revert "[vm] Fix crash when enum initialization hits a stack overflow."
This reverts commit 67b5c878b3.

Reason for revert: Failures on KBC and ASAN.

Original change's description:
> [vm] Fix crash when enum initialization hits a stack overflow.
> 
> Also, give the compiler more headroom.
> 
> Bug: https://github.com/dart-lang/sdk/issues/35224
> Bug: https://github.com/flutter/flutter/issues/25041
> Change-Id: I51b24cdd79ac790c0ee951e14738a6e7b6f65647
> Reviewed-on: https://dart-review.googlesource.com/c/86584
> Commit-Queue: Ryan Macnak <rmacnak@google.com>
> Reviewed-by: Aart Bik <ajcbik@google.com>

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

Change-Id: I1d4c2297154f93f16d2e33756713b30ebe024901
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/86683
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2018-12-07 21:08:33 +00:00
Ryan Macnak 499b5b23e1 [vm] Don't touch the PCMarker slot in the Dart profiler walker.
- The PCMarker slot may be uninitialized (okay, a few skipped samples) and on a guard page (not okay, crash).
 - With the upcoming "bare instructions" mode, some Dart frames will lack a PC marker slot.

Instead, add a sentinel value to the entry frame *above* its FP.

Change-Id: I70d737a6f2f76febe61fe774932127f5274565b1
Reviewed-on: https://dart-review.googlesource.com/c/86502
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Régis Crelier <regis@google.com>
2018-12-07 20:48:49 +00:00
Ryan Macnak 67b5c878b3 [vm] Fix crash when enum initialization hits a stack overflow.
Also, give the compiler more headroom.

Bug: https://github.com/dart-lang/sdk/issues/35224
Bug: https://github.com/flutter/flutter/issues/25041
Change-Id: I51b24cdd79ac790c0ee951e14738a6e7b6f65647
Reviewed-on: https://dart-review.googlesource.com/c/86584
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Aart Bik <ajcbik@google.com>
2018-12-07 19:54:41 +00:00
Samir Jindel 921e62f1bf [vm] Introduce multiple entrypoints to AOT.
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
Change-Id: I8643033febf9bdc57c8298dca5f43346fb8bf6d1
Reviewed-on: https://dart-review.googlesource.com/c/80304
Commit-Queue: Samir Jindel <sjindel@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2018-12-07 13:19:24 +00:00
Ryan Macnak 3e3f31b808 Reapply "[vm] Annotate longjmp-like functions with DART_NORETURN."
Fix repeated annoation on dart::bin::Platform::Exit.

Bug: https://github.com/dart-lang/sdk/issues/35224
Change-Id: I360c5b0bb3bb8b8f1688ad3cb6a8ad874bce56dc
Reviewed-on: https://dart-review.googlesource.com/c/86262
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2018-12-06 19:09:06 +00:00
Alexander Aprelev 2bf29f6244 [kernel] Avoid reporting token position on InvalidExpression.
Source line information is part of the message from the frontend itself already. Including it here results in double-reporting of the source line quote.

Bug: https://github.com/dart-lang/sdk/issues/35239
Change-Id: I4b2c88900ac029982ed08102ce37e87f8f83d180
Reviewed-on: https://dart-review.googlesource.com/c/86243
Reviewed-by: Peter von der Ahé <ahe@google.com>
Commit-Queue: Alexander Aprelev <aam@google.com>
2018-12-06 16:55:26 +00:00
Aske Simon Christensen 05fb37a808 Add SetLiteral node to kernel.
Change-Id: I2f12662efc8ae3f064674bba03c333e0c23ffa0d
Reviewed-on: https://dart-review.googlesource.com/c/85681
Reviewed-by: Martin Kustermann <kustermann@google.com>
Reviewed-by: Kevin Millikin <kmillikin@google.com>
Reviewed-by: Jenny Messerly <jmesserly@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2018-12-06 14:46:58 +00:00
Aart Bik e566ca90b4 [vm/compiler] Fix AOT null comparison
Rationale:
Found by DartFuzz, AOT did not always properly implement
the == test on null. Associated regression test is
heavily stripped down test.

https://github.com/dart-lang/sdk/issues/35325
https://github.com/dart-lang/sdk/issues/32166

Change-Id: If01d944295a089b438aabf7092987706e442ba26
Reviewed-on: https://dart-review.googlesource.com/c/86300
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Aart Bik <ajcbik@google.com>
2018-12-06 00:04:43 +00:00
Ryan Macnak 60ed5f0960 [vm] Update Thread::TopErrorHandlerIsX to account for the interpreter.
Bug: https://github.com/dart-lang/sdk/issues/35224
Change-Id: I75065f2dcbe2a957f894f772cabb0121c6cdf8fc
Reviewed-on: https://dart-review.googlesource.com/c/86280
Reviewed-by: Régis Crelier <regis@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2018-12-05 22:42:06 +00:00
Aart Bik d32254f13b [vm/compiler] Fix crash in AOT-debug (found with fuzzing)
Rationale:
After discussion with Slava, it turns out that the ASSERT
taht calls IsRepresentable() actually violates the truncating()
property that was assumed when the IsRepresentable() function was
only used in executable code. The simplest solution, therefore,
is to simply accept the uint32 case too.

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

Change-Id: I56a05c1bc0b985019f7bd2fb04afdef8708ef7ea
Reviewed-on: https://dart-review.googlesource.com/c/86251
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Aart Bik <ajcbik@google.com>
2018-12-05 21:22:23 +00:00
Régis Crelier af081ddde2 [interpreter] Revert due to regression reported by golem.
This reverts commit 74aad1162e to the interpreter.
Changes to the dbc simulator were already reverted.

Change-Id: I42193464fedc70738a998fd77902685707ac071e
Reviewed-on: https://dart-review.googlesource.com/c/86249
Reviewed-by: Régis Crelier <regis@google.com>
Commit-Queue: Régis Crelier <regis@google.com>
Auto-Submit: Régis Crelier <regis@google.com>
2018-12-05 20:18:00 +00:00
Ryan Macnak 07f43510a2 [vm] Fix some cases of dropped errors and confusion between Exceptions::PropagateError and LongJumpScope::Jump.
Assert against Exceptions::PropagateError skipping over LongJumpScopes and LongJumpScope::Jump skipping over exit frames.

Bug: https://github.com/dart-lang/sdk/issues/35224
Change-Id: I67004a73265882191cb1945cb5a049559b747e89
Reviewed-on: https://dart-review.googlesource.com/c/85411
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2018-12-05 18:57:02 +00:00
Ryan Macnak 679a1a7867 [vm] Clean up sticky error accessors.
Bug: https://github.com/dart-lang/sdk/issues/35224
Change-Id: I867b47a95d7b38e511259b06ef24424d8809096d
Reviewed-on: https://dart-review.googlesource.com/c/85861
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2018-12-05 18:39:41 +00:00
Samir Jindel 831ab3580c [vm] Don't crash on illegal entry-point access.
Fixes https://github.com/flutter/flutter/issues/24329.

Change-Id: I7de3cd5326b2719e8b5193aa12b5bc827a6ba81a
Reviewed-on: https://dart-review.googlesource.com/c/86206
Commit-Queue: Samir Jindel <sjindel@google.com>
Auto-Submit: Samir Jindel <sjindel@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2018-12-05 16:36:13 +00:00
Régis Crelier a28c29767d [dbc simulator] Partial revert due to regression reported by golem.
This reverts commit 74aad1162e to dbc simulator.
Changes to the interpreter are not reverted.

Change-Id: Id373a0497ba37c1d1c262735f995b1493515a0ed
Reviewed-on: https://dart-review.googlesource.com/c/86120
Reviewed-by: Régis Crelier <regis@google.com>
Commit-Queue: Régis Crelier <regis@google.com>
2018-12-05 02:43:57 +00:00
Ryan Macnak bb791ff34d Revert "[vm] Annotate longjmp-like functions with DART_NORETURN."
This reverts commit 27907fed2d.

Reason for revert: Windows build

Original change's description:
> [vm] Annotate longjmp-like functions with DART_NORETURN.
> 
> Bug: https://github.com/dart-lang/sdk/issues/35224
> Change-Id: Ibbcf51cc42dd193cbd96fb7111a1e45cd9c97998
> Reviewed-on: https://dart-review.googlesource.com/c/85860
> Reviewed-by: Martin Kustermann <kustermann@google.com>

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

Change-Id: Iba775ae382a41ef75f91c7097a0f042abaa12c40
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: https://github.com/dart-lang/sdk/issues/35224
Reviewed-on: https://dart-review.googlesource.com/c/86140
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2018-12-05 01:50:33 +00:00
Ryan Macnak 27907fed2d [vm] Annotate longjmp-like functions with DART_NORETURN.
Bug: https://github.com/dart-lang/sdk/issues/35224
Change-Id: Ibbcf51cc42dd193cbd96fb7111a1e45cd9c97998
Reviewed-on: https://dart-review.googlesource.com/c/85860
Reviewed-by: Martin Kustermann <kustermann@google.com>
2018-12-05 01:37:04 +00:00
Ryan Macnak 0177ee1d64 [vm] KernelLoader::FinishLoading can sometimes trigger nested class finalization.
Bug: assertion failure on DBC after d6373525f7
Change-Id: Ia47f13ef55dfac02c0b0c3a74b8f67f3d2671417
Reviewed-on: https://dart-review.googlesource.com/c/86102
Reviewed-by: Régis Crelier <regis@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2018-12-04 23:53:35 +00:00