Commit Graph

15405 Commits

Author SHA1 Message Date
Vyacheslav Egorov d01d6f454c [vm] Fix a bug in the specialization of implicit setters
CallSpecializer::TryInlineInstanceSetter was using IsReceiver to determine
type check could be skipped. However it is incorrect to use IsReceiver,
because it uses SSA notion of the receiver - rather than a syntactic
notion and all strong mode guarantees apply at syntactic level.

Additionally this CL expands support for exactness tracking to PropertySet
operations and uses it to eliminate checks on setters.

Change-Id: Idce559c4ca4c88f5788d3b6b9955b5af076bd7eb
Reviewed-on: https://dart-review.googlesource.com/72442
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Samir Jindel <sjindel@google.com>
2018-09-03 13:43:41 +00:00
Vyacheslav Egorov 0a673617ac [vm/compiler] Fix a typo introduced by 325a8fee4d
It essentially disabled AOT optimizations of typed array accesses.

Change-Id: I02e1d89bbf0f266a88c6497228e23168858ed957
Reviewed-on: https://dart-review.googlesource.com/72661
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
2018-09-03 13:29:44 +00:00
Régis Crelier 73d8bb13e2 [VM interpreter] Consider scheduled interrupts when checking for stack overflow.
Minor cleanup (not a bug): do not share result slot with passed argument in runtime call.
Change-Id: Ib4565b692b03d485de75cc519b98b5ad6f2c8026
Reviewed-on: https://dart-review.googlesource.com/72548
Commit-Queue: Régis Crelier <regis@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2018-08-31 23:10:30 +00:00
Ben Konyi 59df1ad2a7 [ VM / dart:mirrors ] Mark private members of dart:* as non-reflectable (Issue #34194).
Change-Id: If3d79955c7bd336a54e3716d22e1c3c8ee2e07ee
Reviewed-on: https://dart-review.googlesource.com/72141
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Ben Konyi <bkonyi@google.com>
2018-08-31 20:12:47 +00:00
Ryan Macnak 8b702ef80f [vm, compiler] Do not constant fold if the result is a new-space object.
Bug: IA32 opt-counter language/async_star_test
Change-Id: Id09cb477ecd81750baa8bddc142a8ee38376dc76
Reviewed-on: https://dart-review.googlesource.com/72241
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2018-08-31 16:24:48 +00:00
Samir Jindel b38a49e81c Revert "[vm] Skip bounds checks on invocation of partially instantiated closures."
This reverts commit 5e34333c12.

Reason for revert: Broke several bots.

Original change's description:
> [vm] Skip bounds checks on invocation of partially instantiated closures.
> 
> Change-Id: I042607b6c255b20d8071dd51439a50bfd4c3bee7
> Reviewed-on: https://dart-review.googlesource.com/72460
> Commit-Queue: Samir Jindel <sjindel@google.com>
> Reviewed-by: Vyacheslav Egorov <vegorov@google.com>

TBR=vegorov@google.com,sjindel@google.com

Change-Id: Ie52f0da8e1a52d48dabff458bf391e3cb7f11d16
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://dart-review.googlesource.com/72402
Reviewed-by: Samir Jindel <sjindel@google.com>
Commit-Queue: Samir Jindel <sjindel@google.com>
2018-08-31 16:05:41 +00:00
Samir Jindel 5e34333c12 [vm] Skip bounds checks on invocation of partially instantiated closures.
Change-Id: I042607b6c255b20d8071dd51439a50bfd4c3bee7
Reviewed-on: https://dart-review.googlesource.com/72460
Commit-Queue: Samir Jindel <sjindel@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-08-31 15:09:06 +00:00
Vyacheslav Egorov be2cecb717 [vm/libs] Properly type _FixedSizeArrayIterator to avoid implicit cast.
There was an implicit cast when initializing List<E> _array field with a
value of type List<dynamic>.

Change-Id: I8c8b9091b691b6e7ad429ae8ad08e52504faf56f
Reviewed-on: https://dart-review.googlesource.com/72461
Reviewed-by: Samir Jindel <sjindel@google.com>
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
2018-08-31 13:51:43 +00:00
Martin Kustermann ab7b1e3539 [VM] Restore small intrinsics (which never take the fall-through path) on AOT
This reduces flutter gallery RX size by around 0.2%

Change-Id: Iaf4db565ce42e70e0d1811b762820d2114daec9b
Reviewed-on: https://dart-review.googlesource.com/72440
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-08-31 13:38:58 +00:00
Martin Kustermann c5295037c4 [VM] Use one instruction to unwind frame and return instead of two on ARM
This reduces AOT flutter gallery RX size by 0.81 %.

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

Change-Id: I1a3c3f48af9ae5d89d3d89da1d86c798145dbd99
Reviewed-on: https://dart-review.googlesource.com/72383
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-08-31 12:23:54 +00:00
Ankur Mittal ffdcc72678 [fuchsia] Remove soon to be deleted header file.
environment_services.h would be deleted soon. It is no longer used, so
removing the reference.

CP-120 #comment

Change-Id: I7b1e4e78e3558e01a21afd75eae4f6866edb2c9f
Reviewed-on: https://dart-review.googlesource.com/72083
Commit-Queue: Zach Anderson <zra@google.com>
Reviewed-by: Zach Anderson <zra@google.com>
2018-08-31 12:11:22 +00:00
Samir Jindel 777b95cdfc [vm] Fixes and review comments to change in partial instantiation semantics revision.
Change-Id: Ic6eb4f7827ef60e7347a747912dee434080d5da6
Reviewed-on: https://dart-review.googlesource.com/72420
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Samir Jindel <sjindel@google.com>
2018-08-31 12:00:19 +00:00
Samir Jindel dbe868de02 [vm] Correct semantics of bounds-checks on partial instantiation.
Fixes #34267.

Change-Id: Ieb557e186aa457bac3b99b6817050bde8f8e142f
Reviewed-on: https://dart-review.googlesource.com/72161
Commit-Queue: Samir Jindel <sjindel@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2018-08-31 10:13:51 +00:00
Samir Jindel 3603af3ea5 [vm] Instantiate type parameter bounds on closures.
Fixes #34308.

Change-Id: I7d998daa752ada13368631fc327a5c3595ec406c
Reviewed-on: https://dart-review.googlesource.com/72160
Commit-Queue: Samir Jindel <sjindel@google.com>
Reviewed-by: Régis Crelier <regis@google.com>
2018-08-31 09:56:34 +00:00
Kevin Millikin 9803d5c786 Signal an error when invoking a non-function
When invoking an expression whose static type is not a function type,
signal an error.  However, allow invocations of expressions with
static type `dynamic` or `Function`.  Fixes #32975.

Change-Id: Ia54d8df650076ad5c9c9c3a2c6f79ea31acbbbfe
Reviewed-on: https://dart-review.googlesource.com/72082
Commit-Queue: Kevin Millikin <kmillikin@google.com>
Reviewed-by: Daniel Hillerström <hillerstrom@google.com>
2018-08-31 02:30:46 +00:00
Régis Crelier 35d8f0bef8 [VM runtime] Introduce a VM class NativeEntryData.
This class replaces a TypedData array used to describe native calls in the
constant pool of kernel bytecode.

Change-Id: Ic19c592fabde8c24f903d9c94a4d282da3e7b383
Reviewed-on: https://dart-review.googlesource.com/72242
Commit-Queue: Régis Crelier <regis@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2018-08-30 22:47:07 +00:00
David Moore aa0d868b81 [syscalls] Change vmar..._old() calls back and use new params
ZX-2264
Test:CQ

Change-Id: I9765bf5b2d8f143710af9c423bbd762a94ec2159
Reviewed-on: https://dart-review.googlesource.com/72142
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2018-08-30 22:06:39 +00:00
Ryan Macnak b090682ad9 [vm, gc] Fix scavenge speed estimate.
UsedBefore was often bogus because it was saved before coordinating Thread and Scavenger's bump pointers. It remains incorrect for --verbose-gc. Fixing that requires fairly disruptive changes to the placement of safepoint operation scopes to allow safe access to the bump pointers in Heap::RecordBeforeGC.

Change-Id: Ia7abfe0c89c4c6d92ca6c086b2a093e793c71c87
Reviewed-on: https://dart-review.googlesource.com/72071
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2018-08-30 21:16:34 +00:00
Vyacheslav Egorov 52cacc6ef5 [vm/compiler] Use exactness when converting instance call to unchecked static call
JitCallSpecializer::VisitInstanceCall has two places where it converts
instance call into a static call. Previously we only made use of
exactness information in one of those places.

On dart2js compiling dart2js this change reduces number of times
we enter Map.putIfAbsent through checked entry point from
1107368 to 8640.

Bug: https://github.com/dart-lang/sdk/issues/31798
Change-Id: Id1665b998ecdf4c4d46cb7605a11bdde2e8c9782
Reviewed-on: https://dart-review.googlesource.com/72220
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
2018-08-30 20:30:52 +00:00
Samir Jindel f8575698af Revert "[vm/precomp] Use @pragma("vm:exact-result-type") to specify method behavior."
This reverts commit ade6742ee9.

Reason for revert: Some service tests are broken.

Original change's description:
> [vm/precomp] Use @pragma("vm:exact-result-type") to specify method behavior.
> 
> 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: I6eeafeea734efb2e876c5e03f12092b5229ad2bc
> Reviewed-on: https://dart-review.googlesource.com/70284
> Commit-Queue: Samir Jindel <sjindel@google.com>
> Reviewed-by: Alexander Markov <alexmarkov@google.com>

TBR=vegorov@google.com,alexmarkov@google.com,sjindel@google.com

Change-Id: If95f68704737b1da7553c68eb4e22a4c554d3a4b
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
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/72200
Reviewed-by: Samir Jindel <sjindel@google.com>
Commit-Queue: Samir Jindel <sjindel@google.com>
2018-08-30 19:02:45 +00:00
Samir Jindel ade6742ee9 [vm/precomp] Use @pragma("vm:exact-result-type") to specify method behavior.
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: I6eeafeea734efb2e876c5e03f12092b5229ad2bc
Reviewed-on: https://dart-review.googlesource.com/70284
Commit-Queue: Samir Jindel <sjindel@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2018-08-30 15:30:40 +00:00
Vyacheslav Egorov b9a2e1026b [vm] Fix order of operations in Code::FinalizeCode
There should be no GCs between Instructions::New and
all write into the instructions object, because GC indiscriminately
write protects all code objects at the end of the GC.

In the previous version of the code assembler->GetCodeComments would
potentially trigger a GC and the code would crash trying to write
pointers into the code.

Also move FlushICache to the point after everything is written
into the code object.

Fixes #34030

Change-Id: I83742715f825f897a8612dda5ef7352c572517ee
Reviewed-on: https://dart-review.googlesource.com/72103
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
2018-08-30 12:20:19 +00:00
Vyacheslav Egorov 325a8fee4d [vm] Fix experimental_unsafe_mode_use_at_your_own_risk mode.
Turn it into an isolate specific flag so that Kernel isolate continues
to run from app-jit snapshot without trusting any types.

Change-Id: I627a40025d53c23586da5a207eb096886ca98bc4
Reviewed-on: https://dart-review.googlesource.com/72040
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2018-08-30 12:04:37 +00:00
Alexander Markov f45ca5c4ac [vm] Refine comment
Change-Id: I6ab11d4226c5f40bcb2025f074db94f56db75945
Reviewed-on: https://dart-review.googlesource.com/71927
Reviewed-by: Aart Bik <ajcbik@google.com>
Commit-Queue: Aart Bik <ajcbik@google.com>
2018-08-30 07:06:23 +00:00
Ryan Macnak 14bdc51ff5 [vm, gc] Update the growth policy after reading a snapshot.
The initial growth limit is a constant value (based on --old_gen_growth_rate, 35MB). When reading a snapshot that produces a heap larger than this limit (e.g., dart2js), the first old space GC will happen soon after and fail to free much memory because objects from the snapshot have a very high survivorship rate. When reading a snapshot that produces a heap much smaller than this limit (e.g., AOT Flutter), it takes a long time to hit the first old space GC.

Also fix more missing safepoint transitions exposed by the change in GC timing.

Change-Id: I19c36e49cd8b886bd8c4652e6cfcdfb01a0d33fd
Reviewed-on: https://dart-review.googlesource.com/71621
Reviewed-by: Zach Anderson <zra@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
2018-08-30 00:47:34 +00:00
Ryan Macnak d8cfe19916 Revert "[vm, gc] Don't eagerly evacuate new space on old allocation failure."
This reverts commit 2891a57322.

Reason for revert: greatly increases memory usage in language_2/closure_cycles_test

Original change's description:
> [vm, gc] Don't eagerly evacuate new space on old allocation failure.
> 
> Large allocations and direct old space allocations are not signals that the current new space objects will be long lived.
> 
> Change-Id: Id271623b84795eafa81f1b08f9511b53fb354276
> Reviewed-on: https://dart-review.googlesource.com/70541
> Reviewed-by: Zach Anderson <zra@google.com>
> Reviewed-by: Siva Annamalai <asiva@google.com>

TBR=rmacnak@google.com,zra@google.com,asiva@google.com

Change-Id: If65600a0846d5c6f746b765bf24148880376e365
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://dart-review.googlesource.com/72080
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2018-08-30 00:20:17 +00:00
Devon Carew 87bbceb3f1 More cleanup of analyzer status file predicates.
Change-Id: I047be4db04227d406ade3f206478d382e810cdd4
Reviewed-on: https://dart-review.googlesource.com/72063
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
Commit-Queue: Devon Carew <devoncarew@google.com>
2018-08-29 22:48:29 +00:00
Ryan Macnak 2cfe3b36ab [vm, gc] Adjust header bits to allow generational and incremental barrier filters to run together in one shift-and-mask.
Claims 3 header bits :(

Bug: https://github.com/dart-lang/sdk/issues/34002
Change-Id: Ia4fcc9f2b38ed5aa98a28823616b7de766cdde2d
Reviewed-on: https://dart-review.googlesource.com/69222
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
2018-08-29 22:17:55 +00:00
Ryan Macnak 2891a57322 [vm, gc] Don't eagerly evacuate new space on old allocation failure.
Large allocations and direct old space allocations are not signals that the current new space objects will be long lived.

Change-Id: Id271623b84795eafa81f1b08f9511b53fb354276
Reviewed-on: https://dart-review.googlesource.com/70541
Reviewed-by: Zach Anderson <zra@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
2018-08-29 21:11:30 +00:00
Ryan Macnak e38e5aae46 [vm, gc] Force inline ScavengePointer into its sole caller.
Improves x64 SplayHarder by +20%, dart2js-compile geomean +2.28%.

Change-Id: Id6892e52378cb7ebc050615db6552d650ecaa82d
Reviewed-on: https://dart-review.googlesource.com/71887
Reviewed-by: Zach Anderson <zra@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2018-08-29 17:19:36 +00:00
Régis Crelier 99f8523b2b [VM interpreter] Use write barrier when setting index or data in LinkedHashMap.
Change-Id: I162b263957c59154af69e45860a89e7be3491e63
Reviewed-on: https://dart-review.googlesource.com/71920
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Régis Crelier <regis@google.com>
2018-08-29 15:48:11 +00:00
Vyacheslav Egorov a4b3a85a67 [vm/compiler] Use unchecked entry point when static receiver type is non-generic.
This guarantees that type checks are skipped in the code like this:

class X<T> {
  void method(X<T> other) {
  }
}

class Y extends X<String> {
}

void foo(Y y, Y z) {
  y.method(z);  // No need to check on the callee side. No variance.
}

Additionally ammend IL printing to print user visible type names instead
of internal type names for brevity.

Bug: https://github.com/dart-lang/sdk/issues/31798
Change-Id: I4fe16d5dc7de01bb0a8ba834569d90ee5ce7ac74
Reviewed-on: https://dart-review.googlesource.com/72001
Reviewed-by: Samir Jindel <sjindel@google.com>
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
2018-08-29 13:19:11 +00:00
Samir Jindel 0227b0f25f [vm] Update status file for rewind_test.
Change-Id: I080088762b11fae963b37bb338a866f25ead8790
Reviewed-on: https://dart-review.googlesource.com/71944
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Samir Jindel <sjindel@google.com>
2018-08-29 13:10:36 +00:00
Alexander Markov dbbf0880d3 [vm/compiler] Fix canonicalization of left shift
Fixes https://github.com/dart-lang/sdk/issues/34288

Change-Id: Ie391fc28047a5b963dcc239cf196473e70c067b0
Reviewed-on: https://dart-review.googlesource.com/71881
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-08-29 10:18:01 +00:00
Vyacheslav Egorov 80615aed27 [vm] Implement static type exactness tracking for method receivers.
Change-Id: I35ffcee7dfa741d2095b711d402a6caae388b2c4
Reviewed-on: https://dart-review.googlesource.com/68943
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2018-08-29 10:11:17 +00:00
Régis Crelier 11d986a03e [VM runtime] Introduce a DeoptIdScope class to safely save/restore deoptid.
Change-Id: I5debdd2accd9735ddabd3862165f3d04824b8247
Reviewed-on: https://dart-review.googlesource.com/71740
Commit-Queue: Régis Crelier <regis@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2018-08-28 18:38:27 +00:00
Ryan Macnak 14db718ed5 [vm] Add missing safepoint transitions.
Mostly tests; 1 non-test bug in propagating an error through Dart_SetReturnValue.

This is progress towards asserting thread->excution_state() == kThreadInVM in Object::Allocate.

Change-Id: I6a59549868ab317b3c0d32aa42f3661289cbf456
Reviewed-on: https://dart-review.googlesource.com/71720
Reviewed-by: Siva Annamalai <asiva@google.com>
Reviewed-by: Ben Konyi <bkonyi@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2018-08-28 16:40:17 +00:00
Samir Jindel 315d7876f1 [vm] Keep this-invocation optimization disabled in AOT.
Change-Id: I78001679857a0744512bc92b6b8c5185ed7afdce
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/71841
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-08-28 14:19:17 +00:00
Samir Jindel 60757d0873 [vm/kernel] Fix bug with optimization of this-invocations.
Fixes #34268.

Change-Id: Ie6a70f80d4e01d83e0381412c1c908d241e33ecd
Reviewed-on: https://dart-review.googlesource.com/71640
Commit-Queue: Samir Jindel <sjindel@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-08-28 12:22:20 +00:00
Martin Kustermann c5a4d084a2 [VM] Fix mismatched registername array to avoid hitting ASSERT(), remove left-over pool-load in allocation stub
Change-Id: Icf10490666522bb07e0d20493b68d87db9c13998
Reviewed-on: https://dart-review.googlesource.com/71821
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
2018-08-28 12:07:44 +00:00
Régis Crelier 4b8d3e4cf1 [VM runtime] Restore global isolate state after loading bytecode.
This caused deopt_ids to be wrongly reused when mixing
jitted and interpreted code.

Change-Id: I23eb93bb79d7297f8d9efdd81844394fee3fb821
Reviewed-on: https://dart-review.googlesource.com/71703
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Régis Crelier <regis@google.com>
2018-08-27 23:24:40 +00:00
Samir Jindel c691a85b92 [vm/kernel] Fix type arguments handling in IL construction.
Thanks to Alex Markov for the test case!

Fixes #34269.

Change-Id: I66371532b40984c58332ee43c99e744d746ecfae
Reviewed-on: https://dart-review.googlesource.com/71540
Commit-Queue: Samir Jindel <sjindel@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2018-08-27 19:39:27 +00:00
Martin Kustermann 8b5a2b01e7 [VM] Move any updates to static call targets array into the flow graph compiler
We already do this for static calls, with this CL we'll also do it for stub calls.

Change-Id: I2ec78a94165472d4a197f78a5789336b1b29e089
Reviewed-on: https://dart-review.googlesource.com/71402
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
2018-08-27 14:11:02 +00:00
Samir Jindel a11e079d4c [vm] Fix oversight in status file.
Change-Id: Icf9631799058ad4c6f1fd465f454950bcc11c8c5
Reviewed-on: https://dart-review.googlesource.com/71406
Reviewed-by: Samir Jindel <sjindel@google.com>
2018-08-24 17:41:41 +00:00
Samir Jindel cf6c57de40 [vm] Update status file for BitTestImmediate on Windows 32-bit.
Change-Id: I0269fe14090515eb77ba18af1932c8c31d2f663f
Reviewed-on: https://dart-review.googlesource.com/71405
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2018-08-24 17:11:12 +00:00
Alexander Markov 3e3459b0ab [vm/kernel/bytecode] Use default type args (bounds) in generic functions
This CL adds checking of number of passed function type arguments into
prologue of generic functions in bytecode. If type arguments are not
passed, then default type arguments (instantiated bounds) are used.

This mimics IL generated in StreamingFlowGraphBuilder::BuildDefaultTypeHandling.

In order to implement this check, a new bytecode instruction
JumpIfNotZeroTypeArgs is added to bytecode generator and interpreter.

Fixes language_2/function_apply_generic2_test in bytecode mode.

Change-Id: I70901c16b8bfc5f86623d51fccaf50f8969c587e
Reviewed-on: https://dart-review.googlesource.com/71387
Reviewed-by: Régis Crelier <regis@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2018-08-24 15:55:05 +00:00
asiva 0a29264117 [VM] Remove vm_platform from the dart binary
- Remove vm_platform from the dart binary
- kernel isolate always compiles in strong mode

Change-Id: I4e3973fdaee0bda1c43244ea04673f253eaae249
Reviewed-on: https://dart-review.googlesource.com/65788
Commit-Queue: Siva Annamalai <asiva@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2018-08-24 15:45:04 +00:00
Kevin Millikin 6e63df3bfb Revert "Avoid the deprecated input error in source_loader"
Reverted because of failures on the VM reload tests.

Change-Id: I880523a5f3e14cc6d318d4493f037b79515b1dce
Reviewed-on: https://dart-review.googlesource.com/71401
Reviewed-by: Kevin Millikin <kmillikin@google.com>
Commit-Queue: Kevin Millikin <kmillikin@google.com>
2018-08-24 11:03:28 +00:00
Kevin Millikin 0eb0f700b8 Avoid the deprecated input error in source_loader
Avoid using deprecated errors by hadling them on a case-by-case basis.
This is a version of https://dart-review.googlesource.com/c/sdk/+/63144
with merge conflicts resolved.

Fixes #33686

Change-Id: I726740af2db5d32f15c8103c903376bc8ea948e6
Reviewed-on: https://dart-review.googlesource.com/71161
Reviewed-by: Kevin Millikin <kmillikin@google.com>
Commit-Queue: Kevin Millikin <kmillikin@google.com>
2018-08-24 09:14:15 +00:00
Régis Crelier 3d74bb0980 [VM runtime] Fix Compiler::CompileAllFunctions() to work with interpreter.
Change-Id: Icd82beb21f7d5f22d9422bd730774e859e025694
Reviewed-on: https://dart-review.googlesource.com/71365
Commit-Queue: Régis Crelier <regis@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2018-08-23 21:40:37 +00:00