Commit Graph

9245 Commits

Author SHA1 Message Date
Ryan Macnak 00ec3b0867 [vm] Fix several kernel-specific memory leaks.
Bug: https://github.com/dart-lang/sdk/issues/32615
Change-Id: Ic969915c6084b9deef0d86c8f8a0e9aa4f4640e5
Reviewed-on: https://dart-review.googlesource.com/47321
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Alexander Aprelev <aam@google.com>
2018-03-20 23:23:49 +00:00
Alexander Markov b7c3c32f63 [vm] Do not assign type to phi if it was loaded from a different local
During SSA construction in strong mode, types of local variables are
propagated (assigned) to phis which are 'loaded' from slots corresponding
to those local variables.

It is incorrect if phi was stored in a different local variable with a more
specific type and then reloaded.

After this change, type is propagated from local variable to phis only if
phi was created for this local.

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

Change-Id: I7d86c2ef79d14895c9b4c3651d0234b3f9c66173
Reviewed-on: https://dart-review.googlesource.com/47200
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2018-03-20 23:08:49 +00:00
Ben Konyi 06638dd17f [ VM / Dart 2 ] Removed DartAPI_NativeFieldAccess and DartAPI_InjectNativeFields1 as they were using Dart_CreateNativeWrapper which doesn't make sense in the context of Dart 2. Also did some status file cleanup and reorganization.
Change-Id: I8e8b309ba7aa453e85f6e68d96bb8b4702ff7bb4
Reviewed-on: https://dart-review.googlesource.com/47322
Commit-Queue: Ben Konyi <bkonyi@google.com>
Reviewed-by: Zach Anderson <zra@google.com>
2018-03-20 22:43:09 +00:00
Ben Konyi ec65830504 [ VM / Dart 2 ] Fixed DartAPI_LookupLibrary test which was treating the script in Dart_LoadScript as kernel instead of source.
Change-Id: I979ddd774904d4a3058ff92d93ddf9c2efe14673
Reviewed-on: https://dart-review.googlesource.com/47320
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Ben Konyi <bkonyi@google.com>
2018-03-20 21:50:19 +00:00
Ryan Macnak 3989d09c95 [vm] Move writing snapshot magic value from embedder to VM.
Add Dart_IsSnapshot and Dart_IsKernel to the embedding API.

Change-Id: I7d4e1d145557e8f11dbc3c143767ad38b3615a4a
Reviewed-on: https://dart-review.googlesource.com/46360
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
2018-03-19 17:47:55 +00:00
Vyacheslav Egorov d41794ee11 [vm/compiler] Fix UB in ToIntegerConstant helper
Change-Id: I5ffbebb12bd84eacca33fb81b3df51ba4ca291a8
Reviewed-on: https://dart-review.googlesource.com/46722
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
2018-03-19 14:12:15 +00:00
Ryan Macnak d1f8f8b259 [vm] Clean up any remaining API scopes in Dart_ShutdownIsolate.
Some embedders, i.e. tonic, sometimes call Dart_ShutdownIsolate after encountering a fatal error without calling Dart_ExitScope.

Change-Id: Iedba50b6d87acd277812ca6a476964c007b5416a
Reviewed-on: https://dart-review.googlesource.com/46840
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2018-03-17 00:01:48 +00:00
Ryan Macnak 8590919ca6 [vm] Add a timeline stream for recording the zone high watermark.
Change-Id: Ic7f899dbb29eb732b54d7164968a176d7b1025b9
Reviewed-on: https://dart-review.googlesource.com/45544
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2018-03-16 17:43:27 +00:00
Ryan Macnak f36358c370 [vm] Replace Dart_LoadKernel with Dart_LoadLibrary/ScriptFromKernel.
Dart_LoadKernel is only used in Flutter engine and dart_runner, where it is always used as Dart_LoadKernel(Dart_ReadKernelBinary). These uses should be replaced with Dart_LoadScriptFromKernel.

Dart_LoadLibraryFromKernel is needed for loading split kernel files and implementing IsolateMirror.loadUri.

Change-Id: Ib505350eff53ec889406747f8f99393ebbdb4c7d
Reviewed-on: https://dart-review.googlesource.com/46220
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Zach Anderson <zra@google.com>
2018-03-15 23:24:44 +00:00
Ryan Macnak 82ed3eb9ed [vm, kernel] Fix loading enum classes from kernel when the embedder does not use DFE.
Change-Id: I3a88d1d4bb3741bf9199acd62d4be54d60849146
Reviewed-on: https://dart-review.googlesource.com/46823
Reviewed-by: Ben Konyi <bkonyi@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2018-03-15 23:05:06 +00:00
Ben Konyi 0ff7eb02cf [VM] Fix for crash when changing root script uri during reload.
Change-Id: I3eec560c94022e536f6cc3623cf47cb791a9a159
Reviewed-on: https://dart-review.googlesource.com/46401
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Ben Konyi <bkonyi@google.com>
2018-03-14 23:25:32 +00:00
Kevin Millikin 65b19ffa3c Translate asserts in the VM-specific async translation
Translate assert statements in async functions.  The translation of
the condition subexpression can produce a sequence of statements that
have been hoisted out of it.  These need to be guarded so they are
executed only when asserts are enabled.

For this purpose, we introduce an AssertBlock.  The semantics of the
assert block:

assert { s0; ...; sn; }

is the same as:

if (assertsEnabled) { s0; ...; sn; }

where assertsEnabled is a more primitive nullary expression that is
true iff. assertions are enabled.  We chose not to encode this using a
construct like assertsEnabled because (1) we would have to support it
appearing as an arbitrary expression which we don't currently need
and (2) it requires deeper pattern matching to detect and skip the
guarded code when desired.

The translation is more complicated because if there is a message
subexpression in an assert, it is conditionally evaluated only if the
assert's condition is false.

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

Change-Id: I0912a57104ede3160533e49f65b6fb79b76f1500
Reviewed-on: https://dart-review.googlesource.com/46442
Commit-Queue: Kevin Millikin <kmillikin@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2018-03-14 19:41:09 +00:00
Martin Kustermann aeee91ac5d [VM] Remaining fixes for flutter coverage issue
This CL changes:

   * package:kernel/clone.dart: To not clone file offsets if the
     file-uri we copy from is unknown.

   * package:kernel/binary/ast_to_binary.dart: To not write out file
     offsets if the file-uri is not written/indexed (which happens if
     the file uri is not in the `Program.uriToSource` map).

   * It reverts the file renaming part of 60a2cfa219 which
     fixed the name collision problem only partially (it missed to
     rename `runtime/lib/double.dart`, which is not possible because
     there's already a `double_patch.dart` file).

     Instead of renaming, we solve the problem by mangling the names as follows:

         .../sdk/lib/core/double.dart       ->  dart:core/double.dart
         .../runtime/lib/double.dart        ->  dart:core/runtime/lib/double.dart
         .../runtime/lib/double_patch.dart  ->  dart:core/runtime/lib/double_patch.dart

   * It changes the test to ignore any negative token positions.  The vm
     service does not just expose `-1` token positions for places where
     there is no source, but also e.g. `-9` (which means TokenPosition::kMethodExtractor),
     this was one reason why the appjit test failed.

   * It changes the test to try to force-compile everything (unsure if that works).

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

Change-Id: Ia9f42ca9d56d987e3041175add549bb7a133f269
Reviewed-on: https://dart-review.googlesource.com/46341
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-03-14 17:08:17 +00:00
Erik Corry 79942bf18f [VM] Unify filter methods in assemblers
R=kustermann@google.com

Inspired by https://chromereviews.googleplex.com/593797014/
(Vipunen StoreField write-barrier improvements)
Next step is to move part of the write barrier to the end
of the function.
Bug:
Change-Id: I4d49625c9cf5b3488e4633084790f4a018021866
Reviewed-on: https://dart-review.googlesource.com/31100
Reviewed-by: Martin Kustermann <kustermann@google.com>
2018-03-14 07:38:45 +00:00
Ben Konyi b28c4664c0 Revert "[VM] Move runtime/lib/{developer,profiler,timeline}.dart -> ..._patch.dart, fix owner of constructors"
This reverts commit 60a2cfa219.

Change-Id: I6d83653c72d5e8576952a631d23be5be5d9c71f6
Reviewed-on: https://dart-review.googlesource.com/46384
Reviewed-by: Ben Konyi <bkonyi@google.com>
Reviewed-by: Zach Anderson <zra@google.com>
Commit-Queue: Ben Konyi <bkonyi@google.com>
2018-03-13 22:24:19 +00:00
Zach Anderson ffb4bc0d5b [vm] Relax low profile period conditions
The lower profiler period should only be needed on older ARM hardware.

Change-Id: I737aee2385f74a5026d9d8155ea8e33c94d92422
Reviewed-on: https://dart-review.googlesource.com/46361
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2018-03-13 19:58:25 +00:00
Alexander Markov 881c0196aa [vm] Fix type test '_Closure class IS FunctionType' in strong mode
Closes https://github.com/dart-lang/sdk/issues/32508

Change-Id: Ib3455edd393d0ce5ccd5fe315f8d54f14606cc25
Reviewed-on: https://dart-review.googlesource.com/46201
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-03-13 19:08:56 +00:00
Martin Kustermann 8dadc89bfb [VM] Disallow ConstructorInvocation/ListLiteral/MapLiteral in constant evaluator
Change-Id: I4ef12bd25974bba9aa69127630b05f2e4fd46657
Reviewed-on: https://dart-review.googlesource.com/46241
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-03-13 12:59:09 +00:00
Martin Kustermann 60a2cfa219 [VM] Move runtime/lib/{developer,profiler,timeline}.dart -> ..._patch.dart, fix owner of constructors
This makes sure we can distinguish e.g. 2 different timeline.dart files
(from runtime/lib/timeline.dart and sdk/lib/developer/timeline.dart)

This CL also fixes the owner of constructors to be patch classes, if
the constructors come from a patch.

This CL also adds a service/valid_source_locations_test, which loops
over libraries/classes/fields/functions and obtains source locations for
them, including line numbers.  This ensures that if there is a source
location attached to a member, we can use it's token position to get to
the line number.

This CL also changes package:kernel's [Cloner] to clone fileOffsets (and
not just fileEndOffsets). This is important for mixin resolution, where
we copy members into mixin application classes.

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

Change-Id: I4fea5cd646d81f47e1c4ede1e86d477ba6de3e82
Reviewed-on: https://dart-review.googlesource.com/46141
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-03-13 10:27:26 +00:00
Erik Corry 65776fdc3e [VM] ARM64: Fix tbz instruction for bit positions >= 32
R=kustermann@google.com

Change-Id: I03f42ee44a37da7e064f79db18a7f45fa25ee010
Reviewed-on: https://dart-review.googlesource.com/46063
Reviewed-by: Martin Kustermann <kustermann@google.com>
2018-03-13 09:31:50 +00:00
Jens Johansen 5e629d24ac Hot reload test that demonstrated a hot reload failure before fix
Fix was given in 66af0113de

Change-Id: I5209d4951cc00a5656e852c7c418dd198a317a5a
Reviewed-on: https://dart-review.googlesource.com/46041
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-03-13 08:44:42 +00:00
Adam Barth 3c6961fcc2 [fuchsia] Update to the FIDL2 String API
Change-Id: Ie7dc0ee3236587c9e86fba862c9ae2275f8e44dc
Reviewed-on: https://dart-review.googlesource.com/46200
Reviewed-by: Zach Anderson <zra@google.com>
Commit-Queue: Adam Barth <abarth@google.com>
2018-03-12 22:58:29 +00:00
Ryan Macnak 66af0113de [vm, reload] Eagerly assign static field initializers a PatchClass owner.
Static field initializers are not added as members of their owning class, so they must be pre-emptively given a patch class to avoid the meaning of their kernel/token position changing during a reload. Member functions and fields have their owner changed to patch class only when the class is changed during a reload.

Curiously, this was originally done in the C++ front end before hot reload: https://codereview.chromium.org//1317753004

Bug: https://github.com/dart-lang/sdk/issues/32497
Change-Id: I236c188a4b9e05a1e3c011d27e123979db1ca2e5
Reviewed-on: https://dart-review.googlesource.com/46124
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-03-12 21:12:29 +00:00
Ryan Macnak 180866dc46 [vm] Make Dart_DumpStackTrace work when there is no current isolate.
Bug: https://github.com/dart-lang/sdk/issues/32391
Change-Id: Idb1b44509a7bf2269e2f2c0dc1f7ffa0a2a4408c
Reviewed-on: https://dart-review.googlesource.com/44804
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-03-12 19:59:23 +00:00
Vyacheslav Egorov d8e96a8700 [vm/cleanup] Remove vm/cc/Sleep test.
This test was skipped for ages and it does not seem to be very useful.

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

Change-Id: I9035956069fc7d42e710c3c49f98811db10f7d36
Reviewed-on: https://dart-review.googlesource.com/46062
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
2018-03-12 17:15:28 +00:00
Vyacheslav Egorov f0455493de [vm/kernel] Do not skip type checks on closure functions.
Fixes https://github.com/dart-lang/sdk/issues/32502

Bug: 32502
Change-Id: I3e4e9d6dd884f9660380994b24b7a263777f1a18
Reviewed-on: https://dart-review.googlesource.com/46066
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
2018-03-12 17:13:20 +00:00
Vyacheslav Egorov 009b6673ce [vm/kernel] Make 'unsupported tag' errors more verbose
This simplifies figuring out what went wrong from just
debugging output in some cases.

Change-Id: Ie7a775c57fb691d6bd3ca1c70a04fb6cbe9e0875
Reviewed-on: https://dart-review.googlesource.com/43060
Reviewed-by: Jens Johansen <jensj@google.com>
2018-03-11 20:57:08 +00:00
Alexander Markov aff70cafc1 [vm] Fix reading of Object::extractor_parameter_types() from a snapshot
Before this fix, Object::extractor_parameter_types() and Object::extractor_parameter_names()
were initialized in Object::FinalizeVMIsolate(), which was called after
reading VM snapshot. So VM snapshot reader was registering nulls in place
of these VM objects in Deserializer::AddVMIsolateBaseObjects().
As a result, all references to Object::extractor_parameter_names()
were replaced with nulls while reading a snapshot.

The fix is to move initialization of those objects to Object::InitOnce().

Change-Id: I5f68853d9de23c94eb901080d9677100a6856c0c
Reviewed-on: https://dart-review.googlesource.com/45747
Commit-Queue: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2018-03-09 17:55:39 +00:00
Erik Corry 23fccf2e59 [VM] ARM64 unboxed 64 bit fix signed/unsigned const shift
R=vegorov@google.com
TBR=vegorov@google.com

Change-Id: I3f67bbce487a1d2133080a1c441814ba0dd47ead
Reviewed-on: https://dart-review.googlesource.com/45706
Reviewed-by: Erik Corry <erikcorry@google.com>
2018-03-09 14:18:55 +00:00
Erik Corry 30a87ce3fa [VM] ARM64: Add unboxed 64 bit integers
R=rmacnak@google.com

Change-Id: I9b18ef5385d3fbf615b82713f1af3f6a2facfb3d
Reviewed-on: https://dart-review.googlesource.com/45421
Commit-Queue: Erik Corry <erikcorry@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2018-03-09 09:09:18 +00:00
Zach Anderson 76b8e397ed Revert "Reland "[VM runtime] Switch intrinsics from old to new Bigint implementation.""
This reverts commit be62fff82f.

Reason for revert: See https://github.com/dart-lang/sdk/issues/32465

Original change's description:
> Reland "[VM runtime] Switch intrinsics from old to new Bigint implementation."
> 
> The change was reverted (thanks Slava) because gen_snapshot was failing to
> find the core lib class _BigIntImpl on flutter.
> The PR https://github.com/flutter/engine/pull/4735 fixed that issue on flutter.
> 
> Change-Id: Id6863d79f7fdb17f0076b63b0168394d5e95ec8d
> Reviewed-on: https://dart-review.googlesource.com/44660
> Reviewed-by: Alexander Markov <alexmarkov@google.com>

TBR=alexmarkov@google.com,regis@google.com

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

Change-Id: I412f5143442ca6ad43784b037c01fcf9bb42c348
Reviewed-on: https://dart-review.googlesource.com/45800
Reviewed-by: Zach Anderson <zra@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Zach Anderson <zra@google.com>
2018-03-09 08:59:58 +00:00
Zach Anderson 2cb80620bd Revert "[vm/simarm] Fix VRECPS/VRSQRTSQS instruction implementation."
This reverts commit 3da9c349d4.

Reason for revert: Broke the build on vm-kernel-precomp-linux-release-simarm

Original change's description:
> [vm/simarm] Fix VRECPS/VRSQRTSQS instruction implementation.
> 
> This instruction handles 0.0 and infinity operands
> specially because otherwise it produces NaN where it
> should produce appropriate infinity or zero.
> 
> Fixes https://github.com/dart-lang/sdk/issues/24399
> Fixes https://github.com/dart-lang/sdk/issues/26675
> 
> Change-Id: I0741d0daa8b92b4dcd780b1453c9ec449552b1fd
> Reviewed-on: https://dart-review.googlesource.com/45382
> Reviewed-by: Zach Anderson <zra@google.com>

TBR=whesse@google.com,vegorov@google.com,alexmarkov@google.com,zra@google.com

Change-Id: I413be56fdce8afa0e2faa6ed2b16ef0f68b795b0
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://dart-review.googlesource.com/45683
Reviewed-by: Zach Anderson <zra@google.com>
Commit-Queue: Zach Anderson <zra@google.com>
2018-03-09 06:09:40 +00:00
Alexander Markov 97bbe2f20b [vm] Avoid using objects in VM isolate heap for de-duplication
Parameter types in application isolate could be modified during
execution, so it is incorrect to de-duplicate them with
read-only objects from VM isolate.

Fixes crash in pkg/front_end/tool/incremental_perf.dart
benchmark running from appjit snapshot. This crash appears after
https://dart-review.googlesource.com/c/sdk/+/45747 is applied.

Change-Id: I42a2007d02e04e0720c7e5d15224fcb6994bc515
Reviewed-on: https://dart-review.googlesource.com/45752
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2018-03-09 01:53:17 +00:00
Alexander Markov 7aa3e54acf [vm] Fix computation of hashCode of a closure with null receiver
As tests/language_2/tearoff_dynamic_test.dart shows, it is perfectly
valid to take a tear-off of an instance method from null, and then call
hashCode from such tear-off.

The implementation of hashCode for closures, Closure::ComputeHash()
was calling Instance::Cast(receiver) which asserts for null.
This code is revised to allow null receiver.

Change-Id: I85cc7abf25aab99590b53403904e8bac25328308
Reviewed-on: https://dart-review.googlesource.com/45749
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2018-03-09 00:26:31 +00:00
Ryan Macnak 22ccad1aa6 [vm] Stream writing snapshots as assembly to reduce peak memory usage.
Bug: US-449
Change-Id: Ic1ce6881b54c8c0eb7c93cbbda8057d7268bb3fd
Reviewed-on: https://dart-review.googlesource.com/45580
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2018-03-08 19:26:17 +00:00
Vyacheslav Egorov 3da9c349d4 [vm/simarm] Fix VRECPS/VRSQRTSQS instruction implementation.
This instruction handles 0.0 and infinity operands
specially because otherwise it produces NaN where it
should produce appropriate infinity or zero.

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

Change-Id: I0741d0daa8b92b4dcd780b1453c9ec449552b1fd
Reviewed-on: https://dart-review.googlesource.com/45382
Reviewed-by: Zach Anderson <zra@google.com>
2018-03-08 17:50:29 +00:00
Régis Crelier 383517d292 [VM runtime] Fix type canonicalization (fixes #32425).
A reused type argument vector that is longer than necessary needs to be
shortened to the correct length upon type canonicalization.
The runtime call comparing two instance runtime types also needs to consider
reused vectors.
Add regression test.

Change-Id: Ib3b9620409b9cff313f270c4f3fb7051fecbb604
Reviewed-on: https://dart-review.googlesource.com/45340
Commit-Queue: Régis Crelier <regis@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
2018-03-08 09:55:35 +00:00
Ben Konyi e3ecc87eb9 [VM / Kernel ] Fixed issue where enum classes were not being marked as such in the VM. Enum class fields are now eagerly initialized.
Change-Id: I6e5a95a3289d417e1f01f14b289960e45cce6c7b
Reviewed-on: https://dart-review.googlesource.com/45365
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Ben Konyi <bkonyi@google.com>
2018-03-08 01:11:45 +00:00
Martin Kustermann aecf5bf56e [VM] Remove locking in code called by signal handler, ensure profiler thread sees valid [Redirection] list
Change-Id: Ib108b92ce67f2fe0bd18318a966cba345c834f67
Reviewed-on: https://dart-review.googlesource.com/45504
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-03-07 14:27:29 +00:00
Martin Kustermann 8d6b050e28 [VM] Guard against duplicate entries in the static [Redirection::list_]
The ARM simulator has assertions that there are no duplicates in the
[Redirection::list_] but the code does not guarantee this, since
multiple threads can add the same add [Redirection] entries for the same
native concurrently.

This CL guards the modification of [list_] with a [Mutex] and ensures
there's no duplicates.

This issue caused flakiness on the debug-simarm configuration.

Change-Id: Ia84a08e6e6f851a6047bae047ffb990044fb4a4b
Reviewed-on: https://dart-review.googlesource.com/45281
Reviewed-by: Erik Corry <erikcorry@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
2018-03-06 16:42:21 +00:00
Erik Corry 235e62264e [VM] Reland Support some 32bit instructions in 64bit assemblers.
These instructions will soon be used for for smaller (32 bit) Smis.
Also fix broken ubfiz instruction in ARM64 assembler.

This reland fixes the disassembler test that used Stop
instructions which disassemble differently on Mac
because constants have higher addresses.

Originally reviewed at
https://dart-review.googlesource.com/c/sdk/+/43668

Fix assembler test on Mac

R=kustermann@google.com

Change-Id: I61f8626184af495f18a74b5fef07bad02b6615e9
Reviewed-on: https://dart-review.googlesource.com/45240
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Erik Corry <erikcorry@google.com>
2018-03-06 10:50:21 +00:00
Erik Corry 3ac86d759e Revert "[VM] Support some 32bit instructions in 64bit assemblers."
This reverts commit a5f173f165.

Reason for revert: Some test failures.

Original change's description:
> [VM] Support some 32bit instructions in 64bit assemblers.
> 
> These instructions will soon be used for for smaller (32 bit) Smis.
> 
> Also fix broken ubfiz instruction in ARM64 assembler.
> 
> R=​kustermann@google.com
> 
> Change-Id: I9068a1c4281047dbd7c1c447fc32ac0e92c89e9d
> Reviewed-on: https://dart-review.googlesource.com/43668
> Reviewed-by: Martin Kustermann <kustermann@google.com>
> Reviewed-by: Vyacheslav Egorov <vegorov@google.com>

TBR=vegorov@google.com,kustermann@google.com,erikcorry@google.com

Change-Id: I0991712936d903f2cb1f3851c919ed6171a96711
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://dart-review.googlesource.com/44981
Reviewed-by: Erik Corry <erikcorry@google.com>
Commit-Queue: Erik Corry <erikcorry@google.com>
2018-03-05 15:29:56 +00:00
Erik Corry a5f173f165 [VM] Support some 32bit instructions in 64bit assemblers.
These instructions will soon be used for for smaller (32 bit) Smis.

Also fix broken ubfiz instruction in ARM64 assembler.

R=kustermann@google.com

Change-Id: I9068a1c4281047dbd7c1c447fc32ac0e92c89e9d
Reviewed-on: https://dart-review.googlesource.com/43668
Reviewed-by: Martin Kustermann <kustermann@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-03-05 14:45:23 +00:00
Régis Crelier c89055ee32 [VM] Fix type finalization for Kernel function types.
Change-Id: I45d1f9686ba52526af17bb9b720eb09f91f91876
Reviewed-on: https://dart-review.googlesource.com/44803
Reviewed-by: Samir Jindel <sjindel@google.com>
Commit-Queue: Régis Crelier <regis@google.com>
2018-03-05 09:18:06 +00:00
Jens Johansen 80e2d30c20 [vm] Fix issue causing recursive_mixin_test to crash
In the VM, TypeRef (extending AbstractType) did _not_ implement
error(), meaning that callong error() on such a type would call it in
AbstractType which basically just says `UNREACHABLE();`.

This fixes the issue.

Change-Id: I6cb9ebe8f814296db8383c187c880f367b096312
Reviewed-on: https://dart-review.googlesource.com/44420
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Régis Crelier <regis@google.com>
2018-03-02 17:39:39 +00:00
Martin Kustermann 2c956749a5 [VM] Add support to HierarchyInfo to not only create [CidRangeVector]s of subtypes but also subclasses
Issue https://github.com/dart-lang/sdk/issues/31798

Change-Id: I1df4b9238500a1f78b5237ee6a6be4154e7f41d2
Reviewed-on: https://dart-review.googlesource.com/44543
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-03-02 17:02:49 +00:00
Martin Kustermann 5d92543f42 [VM] Fix accidental double assignment
This broke ARM on a non-standard compiler.

Change-Id: Idf4e7d5ea9072e6e07d796dc676ec3e7afd6f235
Reviewed-on: https://dart-review.googlesource.com/44786
Reviewed-by: William Hesse <whesse@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
2018-03-02 15:40:14 +00:00
Martin Kustermann 80805ff1c1 [VM] Make FlowGraphCompiler::EmitTestAndCallCheckCid static and therefore usable from stubs
Issue https://github.com/dart-lang/sdk/issues/31798

Change-Id: I375cc01bf59d848a203dbcdbd59377d55e9aafe4
Reviewed-on: https://dart-review.googlesource.com/44540
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-03-02 15:11:59 +00:00
Martin Kustermann 9cfd721f78 [VM] Handle kVoidCid/kDynamicCid/kVectorCid the same way
Issue https://github.com/dart-lang/sdk/issues/31798

Change-Id: Ifb08ec17b29a5e8d1f2a9b8b53a32cb810a8a3da
Reviewed-on: https://dart-review.googlesource.com/44520
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
2018-03-02 15:03:49 +00:00
Martin Kustermann 65b2b1a671 [VM] Split handling of Code from non-Code in Thread::{CanLoadFromThread,OffsetFromThread}
Not only does it speed the two methods a bit up, it will also allow us to use the assembler
before all of the stubs are initialized.

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

Change-Id: Ic14743ecd9d11ca4cbc5208cacad30beee0982ef
Reviewed-on: https://dart-review.googlesource.com/44500
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-03-02 14:52:04 +00:00