Commit Graph

3601 Commits

Author SHA1 Message Date
Vyacheslav Egorov b2eab8b96e [VM/Service] Restore zero-copying handling of JSON messages in vmservice.
In 5a44162c97 in attempt to adhere to declared
method signatures we lost zero-copying JSON decoding of responses from
VM: `Message.sendToVM` was changed to always decode the response into
string before passing it to the caller and the logic to use fused
JSON decoding was removed. This increased peak memory consumption by
the VM Service.

This commit addresses the issue by restoring the zero-copying JSON decoding
logic while adding a wrapper around responses that make it clear what kind
of data is passed around and how that data is encoded and handled.

We introduce a class `Response` which can contain either a Dart string, a
binary data (represented as a Uint8List) or utf8 encoded string (represented
as a Uint8List). This class is used in all places where previously a String
or dynamic were used, e.g. MessageRouter.routeRequest is changed to return
Future<Response> rather than Future<String>. This allows callees to
decode JSON responses without copying them into Dart heap while
maintaining sufficient level of typing to make the code easy to reason about.

This commit also removes some dead code from the VM service related to old
Service API and TAR assets unpacking (which has been long done in C++).

Bug: https://github.com/flutter/flutter/issues/13626
Change-Id: Ifbba56944a552034a0f802a965a313326a1236e7
Reviewed-on: https://dart-review.googlesource.com/30280
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
2017-12-18 19:06:06 +00:00
Florian Loitsch f3e845cf48 Revert "Reland: [dart:io] Adds waitForEventSync"
This reverts commit 3ea5e13ad7.

Change-Id: Ic9fae69f3b7ef6e41aac3c7ebca3e1d288dbffb1
Reviewed-on: https://dart-review.googlesource.com/29589
Reviewed-by: Florian Loitsch <floitsch@google.com>
2017-12-14 14:10:45 +00:00
Vyacheslav Egorov daa7cbf517 [vm/io] Fix more typing issues socket_patch
Socket.{addStream,flush,close,get:done} are returning Future<dynamic>
not Future<Socket> because they simply delegate to IOSink which returns
Future<dynamic>.

Bug:
Change-Id: I3ba33b296d750b08d867d3a4e2bac38ee7968ef2
Reviewed-on: https://dart-review.googlesource.com/29322
Reviewed-by: Zach Anderson <zra@google.com>
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
2017-12-13 21:00:54 +00:00
Martin Kustermann 6e34fa1b75 [VM] Allow run_vm_tests to load like we do in normal dart
Our build files use non-appjit snapshots for kernel-service for
certain architectures, e.g. simulators.

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

Change-Id: I5162b8fe266f97710c50c347ae20b53cd66cf75d
Reviewed-on: https://dart-review.googlesource.com/29240
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2017-12-13 18:39:54 +00:00
Zachary Anderson 3ea5e13ad7 Reland: [dart:io] Adds waitForEventSync
The only fix needed for relanding is adding _ensureScheduleImmediate
to the list of vm entrypoints in //runtime/vm/compiler/aot/precompiler.cc

Original commit message:

Adds a top-level call waitForEventSync to dart:io that blocks the
thread an Isolate is running on until messages are available.
Before the thread blocks, the microtask queue is drained.
Before waitForEventSync returns, all messages are handled.

Lifting this up from a comment:

This is apropos of the request that nweiz@ sent to the mailing list a
couple weeks back. I'm not sure we should land this. We certainly
shouldn't land it without some annotations that will make the analyzer
complain a lot in most configurations, but I don't know what those
annotations are.

fixes #31102

Change-Id: Id96de46cc5f10e1847045cfafb7cfed6a38bce16
Reviewed-on: https://dart-review.googlesource.com/28920
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Zach Anderson <zra@google.com>
2017-12-12 23:16:50 +00:00
Zach Anderson 9d8e6453d2 Revert "[dart:io] Adds waitForEventSync"
This reverts commit 2aed87a133.

Reverting for failures on precompiled bots.

Change-Id: I758bfc72d8f5e67b0e5e12a7367a47f1df9364e2
Reviewed-on: https://dart-review.googlesource.com/28900
Reviewed-by: Zach Anderson <zra@google.com>
Commit-Queue: Zach Anderson <zra@google.com>
2017-12-12 21:05:01 +00:00
Zachary Anderson 2aed87a133 [dart:io] Adds waitForEventSync
Adds a top-level call waitForEventSync to dart:io that blocks the
thread an Isolate is running on until messages are available.
Before the thread blocks, the microtask queue is drained.
Before waitForEventSync returns, all messages are handled.

Lifting this up from a comment:

This is apropos of the request that nweiz@ sent to the mailing list a
couple weeks back. I'm not sure we should land this. We certainly
shouldn't land it without some annotations that will make the analyzer
complain a lot in most configurations, but I don't know what those
annotations are.

Change-Id: If8286f4525994a162dd4f4563fefccb9d0984f7c
Reviewed-on: https://dart-review.googlesource.com/25281
Commit-Queue: Zach Anderson <zra@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
2017-12-12 19:12:58 +00:00
William Hesse 455b177ebb Move GN default argument to a .gni import, to avoid duplicate loads.
Bug:
Change-Id: I1e6d2cfe2e2aec5a122c431963a2b0a9f79af652
R=athom@google.com,rnystrom@google.com
TBR=rnystrom@google.com,zra@google.com
Reviewed-on: https://dart-review.googlesource.com/28700
Reviewed-by: William Hesse <whesse@google.com>
2017-12-12 13:50:01 +00:00
Alexander Markov 0352170a8f [VM] Avoid depending on --kernel-binaries if .dill file is specified
If a .dill file is specified on the VM command line (dart/dart_bootstrap),
and --kernel-binaries is not specified, then this dill file is used as
the source of platform libraries.

It supports the case of AOT-compiling a self-contained .dill file.

Change-Id: I42956a20b98958b9a2440f156fbbef17bfc359f8
Reviewed-on: https://dart-review.googlesource.com/24341
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2017-12-11 20:53:46 +00:00
Paul Berry eb3cf7c035 Strong mode fix for vmservice_io.dart.
The method _clearFuture needs to have return type `Server` so that it
can be used in a "then" call that's expected to return a value of type
`Future<Server>`.

Change-Id: Ia63309c16a2f28457e06a52419219c93a38ef389
Reviewed-on: https://dart-review.googlesource.com/26161
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2017-12-05 18:19:21 +00:00
Zachary Anderson 74071c0738 [dart:io] Fix getchar() error detection
fixes #31530

Change-Id: Ic88408b39cbba8aaac6c59356381161a2db3c2b0
Reviewed-on: https://dart-review.googlesource.com/26321
Commit-Queue: Zach Anderson <zra@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2017-12-05 17:26:21 +00:00
Ryan Macnak 76842f7a70 [vm] Fix leak when generating snapshot depfile.
Use depfiles for the SDK's application snapshots.

Add check that we don't try to create a script snapshot after loading from an app snapshot.

Bug: TO-596
Change-Id: Ib4209c3062dbe0f3c37b8f65e5a50ca64544a39b
Reviewed-on: https://dart-review.googlesource.com/26043
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Zach Anderson <zra@google.com>
2017-12-05 17:09:52 +00:00
Martin Kustermann 6957d0aeb7 Initialize Thread also during startup for run_vm_tests
[Gardening] Mark analyzer/test/src/dart/analysis/driver_kernel_test as Slow

Reviewed-on: https://dart-review.googlesource.com/26181
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
Change-Id: Ife44f4fe2d908736dc7e3ff80f077bc5475df4ba
Reviewed-on: https://dart-review.googlesource.com/26240
2017-12-05 11:56:35 +00:00
Martin Kustermann a94395ea5b Ensure timer and eventhandler is started for reload tests
The reload tests are now using kernel-isolate which requires
eventhandler and timer functionality.

Some of ahe@'s changes cause e.g. a division-by-zero trap due to the
TimerUtils not being setup.

Change-Id: Ie56cb222aef5f689d5a16975f960a157ad986845
Reviewed-on: https://dart-review.googlesource.com/25980
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
2017-12-05 10:00:21 +00:00
Adam Barth 0df9248f26 Fix namespace bypass on Fuchsia
We were opening the untransformed path, which bypasses the namespace.
The other platforms appear to correctly use the transformed path in
their analogous code.

Change-Id: Ide9e98aa5a689a3634c30ff0fb53f7e5b2f25564
Reviewed-on: https://dart-review.googlesource.com/25514
Reviewed-by: Zach Anderson <zra@google.com>
2017-12-03 07:25:12 +00:00
Siva Chandra 4a19ab4e22 [gen_snapshot] Create and write dependencies in the kernel flow.
Fixes 31502

Change-Id: Idae179c0b37dfe9d6c26fe19bc25062e947f656c
Reviewed-on: https://dart-review.googlesource.com/25510
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Siva Chandra <sivachandra@google.com>
2017-12-02 00:57:42 +00:00
Siva Chandra 124d592f59 [gen_snapshot] Separate the kernel flow.
Change-Id: I289f33637485c3865bef3d05855dbfef202f36f2
Reviewed-on: https://dart-review.googlesource.com/24561
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Siva Chandra <sivachandra@google.com>
2017-11-30 05:33:42 +00:00
Zach Anderson c36cd6b143 Revert "Remove the now unused runtime/bin/snapshot_in.cc"
This reverts commit 5853eac5c0.

The file is still used in an internal build.

Change-Id: Idb336a8c01369d16d34d1cc8f2df4203fa1a7784
Reviewed-on: https://dart-review.googlesource.com/23880
Reviewed-by: Keerti Parthasarathy <keertip@google.com>
Commit-Queue: Zach Anderson <zra@google.com>
2017-11-27 17:57:21 +00:00
P.Y. Laligand c13e40613b [fuchsia] Update path to package template.
Change-Id: I6fbac01b875627adf9fb4dab708077a1c7c94be9
Bug:
Reviewed-on: https://dart-review.googlesource.com/23240
Reviewed-by: Zach Anderson <zra@google.com>
Commit-Queue: Zach Anderson <zra@google.com>
2017-11-23 06:49:56 +00:00
Ryan Macnak d366f9619a [vm] Toward deterministic builds.
- Remove random build-id.
 - Replace build time in embedded version string with commit time.
 - Remove timestamps from Observatory tarball.
 - Zero-initialize skipped bytes in snapshot streams.
 - Fix uninitialized fields in PatchClass, Script and Library.
 - Disable (under flag) random identity hashes and concurrent GC.

Bug: https://github.com/dart-lang/sdk/issues/31427
Change-Id: I3e95de679c8372841cd27ca60df78d9b00ffbfe1
Reviewed-on: https://dart-review.googlesource.com/22901
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Zach Anderson <zra@google.com>
2017-11-23 00:07:56 +00:00
Siva Chandra 5853eac5c0 Remove the now unused runtime/bin/snapshot_in.cc
Change-Id: I7b857c55a162f11b6761aee44f3461a6d8a541c7
Reviewed-on: https://dart-review.googlesource.com/22841
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Siva Chandra <sivachandra@google.com>
2017-11-22 18:24:48 +00:00
Martin Kustermann d38c08d973 Revert "Allow gen_snapshot to create a core snapshot from a platform dill file."
This reverts commit 5ac157c572.

Reason for revert:

  After a roll of this into flutter engine and a roll of flutter engine
  into flutter this broke flutter tests.

  In particular it causes us to not load the entire application from the
  dill file which makes us crash during lookup of embedder entrypoints,
  or more specifically during lookup of "main" since
  `I->object_store()->root_library()` is `null`.

Bug:
Change-Id: If3b05cba47ed20c2e9bfd48c89abd8200e0bf28b
Reviewed-on: https://dart-review.googlesource.com/23001
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2017-11-22 12:17:46 +00:00
Régis Crelier f91f67a5be [VM] Emit type checks for incoming function arguments in strong mode.
Change-Id: Icd64913f0fc6ba54a0b8517bf05ae4babfae3bdc
Reviewed-on: https://dart-review.googlesource.com/19287
Reviewed-by: Siva Annamalai <asiva@google.com>
2017-11-18 00:31:35 +00:00
Alexander Markov 58ffdbf5fc [VM] Move kernel service to pkg/vm, populate pkg/vm with necessary files
* kernel-service.dart is moved to pkg/vm/bin and renamed to
  kernel_service.dart

* LICENSE, pubspec.yaml and analysis_options.yaml added to pkg/vm.

* Kernel isolate name is corrected to be independent of URI passed
  in --dfe VM option.

Change-Id: I5b7b860297314e240e557af80913e7ac3e6324ad
Reviewed-on: https://dart-review.googlesource.com/21260
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2017-11-17 17:45:03 +00:00
Paul Berry 7a778cf47c Strong mode fix for vmservice_io.dart.
Change-Id: I3cb1b44969779018cccff91e45eba11d60afcd58
Reviewed-on: https://dart-review.googlesource.com/21568
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2017-11-17 08:31:56 +00:00
Paul Berry ff898fded5 Strong mode fix for socket_patch.dart.
Change-Id: Icf5bcc7ba370ad9880c1565faf3ace046e47abe0
Reviewed-on: https://dart-review.googlesource.com/21262
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2017-11-15 20:45:31 +00:00
Alexander Markov c1212311bf [VM] Fix OOM handling when allocating buffers in dart:io
Reland 1d6c1020c9 with the fix for ASAN
bots.

* Test standalone_2/file_error_test is updated for Dart 2.0 fixed-size
  integers.

* This update revealed that certain dart:io native methods do not handle
  out-of-memory properly when I/O buffers are allocated.
  This CL fixes this bug.

* Updated test point is extracted to a separate test
  standalone_2/file_error2_test as it needs custom ASAN options.

Change-Id: Ifb1fa59828f36dc03d45c18a41d45da6b989d70a
Reviewed-on: https://dart-review.googlesource.com/20908
Reviewed-by: Zach Anderson <zra@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2017-11-15 18:06:31 +00:00
Paul Berry 7cec90293e [VM,libs] Add workaround for issue 31305.
The tear-off of _NativeSocket.multiplex needs to have runtime type
`(Object) -> void` in order to be passed to the RawReceivePort
constructor.  Once issue #31305 is fixed, we should be able to fix
this by marking _NativeSocket.multiplex's argument as "covariant".
Until then, we have to type the argument as `Object` and then assign
it.

Change-Id: I1c9b7fb77dd3b0a71037459206f8de30ad77f73e
Reviewed-on: https://dart-review.googlesource.com/20822
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2017-11-14 21:46:45 +00:00
Alexander Markov f28005819b Revert "[VM] Fix OOM handling when allocating buffers in dart:io"
This reverts commit 1d6c1020c9.

Reason: failures on ASAN bots as ASAN is not configured to
accept memory allocations with huge size.
Change-Id: Ibb3b27f60017fb42e0f36caea2262125f5bb40d0
Reviewed-on: https://dart-review.googlesource.com/20900
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Zach Anderson <zra@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2017-11-14 21:33:25 +00:00
Alexander Markov 1d6c1020c9 [VM] Fix OOM handling when allocating buffers in dart:io
* Test standalone_2/file_error_test is updated for Dart 2.0 fixed-size
  integers.

* This update revealed that certain dart:io native methods do not handle
  out-of-memory properly when I/O buffers are allocated.
  This CL fixes this bug.

Change-Id: I6a9018ab86da7b163d9797d745544835dfb0f15c
Reviewed-on: https://dart-review.googlesource.com/20582
Commit-Queue: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Zach Anderson <zra@google.com>
2017-11-14 18:26:34 +00:00
Zachary Anderson 0af5298845 [dart:io] Adds optional withTrustedRoots parameter to SecurityContext()
The parameter defaults to false. This enables creating a
SecurityContext that includes the trusted root certificates that can
be modified per-connection.

fixes #24693

Change-Id: I22e5736838755ce4055f77b1b17aeb5176329240
Reviewed-on: https://dart-review.googlesource.com/20580
Reviewed-by: William Hesse <whesse@google.com>
Commit-Queue: Zach Anderson <zra@google.com>
2017-11-14 18:09:34 +00:00
Vyacheslav Egorov ca8f7b58ae [VM] Fix a bug in dart::Monitor::Wait and dart::bin::Monitor::Wait
Code path Monitor::Wait that handles timeout contains a race between removing
waiter from the list and another thread signaling waiter's event:

T1: WaitForSingleObject(wait_data->event_, ...) returns with WAIT_TIMEOUT
        T2:  SetEvent(wait_data->event_)
T1: data_.RemoveWaiter(wait_data->event_)

This race leaves wait_data->event_ signaled, which breaks an important invariant
the method relies on: if WaitForSingleObject returns successfully (neither
timedout nor failed), that implies that wait_data was removed from the
waiters list by the method that signaled the event (SignalAndRemoveAllWaiters
or SignalAndRemoveFirstWaiter). However if wait_data->event_ is left signaled
the next invocation to WaitForSingleObject will return prior to any invocation
of SignalAndRemoveAllWaiters/SignalAndRemoveFirstWaiter, which means that
wait_data->event_ will be left in the list, which can lead to all sorts of
bugs, for example:

T1: // Assuming that wait_data WD1 for thread T1 is left with signaled event.
T1: ml.Wait()                                        | waiters list: WD1
T1: | WaitForSingleObject(...) returns "spuriously"  | waiters list: WD1
T1: // WD1 is still on the waiters list, even though |
T1  // it is not waiting anymore                     | waiters list: WD1
                                                     |
  T2: ml.Wait()                                      | waiters list: WD1 -> WD2
                                                     |
T1: // wait on the same monitor again                |
T1: ml.Wait()                                        | waiters list: WD1 -> WD2
T1: | GetMonitorWaitDataForThread()                  | waiters list: WD1 -> WD2
T1: | | wait_data->next_ = NULL                      | waiters list: WD1

  T3: // Notify all waiters. Only T1 will wake up!
  T3: ml.NotifyAll()

Notice how waiting on the same monitor caused us to corrupt the singled
linked list of waiters, because GetMonitorWaitDataForThread(...) does
wait_data->next_ = NULL - which means that if WD1 was accidentally left
in the list of waiters then all elements on that list after WD1 are lost.

This means that NotifyAll will not wake up all threads.

This was causing deadlocks in GC (#29261) by breaking ThreadBarrier logic.

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

Bug:
Change-Id: Ia61efa065bc7db8fe4bbf549032f35932356a0f4
Reviewed-on: https://dart-review.googlesource.com/20760
Reviewed-by: Zach Anderson <zra@google.com>
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
2017-11-14 17:00:16 +00:00
Lasse R.H. Nielsen 0b58c4bd10 Change some constant declarations to lowerCase.
Retain the old values.

Reapply of https://dart-review.googlesource.com/c/sdk/+/20680 with fixes
for VM method fingerprints.

Change-Id: Ie14e7ccc3194d5561983348e6b6752728913ff4d
Reviewed-on: https://dart-review.googlesource.com/20664
Reviewed-by: Erik Ernst <eernst@google.com>
Commit-Queue: Lasse R.H. Nielsen <lrn@google.com>
2017-11-14 12:59:14 +00:00
Lasse R.H. Nielsen e61fc07b58 Revert "Change some constant declarations to lowerCase."
This reverts commit c048cfb178.

Reason for revert: VM code fingerprints needs update.

Original change's description:
> Change some constant declarations to lowerCase.
> 
> Retain the old values.
> 
> Change-Id: I03bd326f379fe5f96d8f6081a7133de956d745c0
> Reviewed-on: https://dart-review.googlesource.com/11520
> Commit-Queue: Lasse R.H. Nielsen <lrn@google.com>
> Reviewed-by: Florian Loitsch <floitsch@google.com>

TBR=lrn@google.com,floitsch@google.com

Change-Id: I095e8198304ca4e59b39d30b0fdf0af4945e5231
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://dart-review.googlesource.com/20680
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
Commit-Queue: Lasse R.H. Nielsen <lrn@google.com>
2017-11-14 11:23:08 +00:00
Lasse R.H. Nielsen c048cfb178 Change some constant declarations to lowerCase.
Retain the old values.

Change-Id: I03bd326f379fe5f96d8f6081a7133de956d745c0
Reviewed-on: https://dart-review.googlesource.com/11520
Commit-Queue: Lasse R.H. Nielsen <lrn@google.com>
Reviewed-by: Florian Loitsch <floitsch@google.com>
2017-11-14 11:13:04 +00:00
Paul Berry 8f57cf8e45 Strong mode fix for runtime/bin/vmservice/loader.dart
The values in isolateEmbedderData have IsolateLoaderState in practice,
but the static type system only guarantees they have type
IsolateEmbedderData (a supertype).  So we need an implicit downcast.

Change-Id: I9da0c9a34deae233e3bb25d264e4307fd186c3c7
Reviewed-on: https://dart-review.googlesource.com/20160
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2017-11-11 15:38:51 +00:00
Siva Annamalai c29b19fb34 - Do not generate a separate vmservice kernel file, include it in vm_platform file
- Load vmservice_io library only in the service isolate or when an AOT snapshot is being generated

This should account for the following issues:
- https://github.com/dart-lang/sdk/issues/31203 - there should be a vmservice_io_strong.dill file
- https://github.com/dart-lang/sdk/issues/30158 - Consider extracting flutter vmservice_sky into
                                                  separate .dill from platform.dill
- https://github.com/dart-lang/sdk/issues/30111 - support compiling vmservice with an external
                                                  outline of the sdk

Bug:
Change-Id: If945ec05afe8127e288e8d3b55172c0f7c3d6e7a
Reviewed-on: https://dart-review.googlesource.com/18147
Commit-Queue: Siva Annamalai <asiva@google.com>
Reviewed-by: Siva Chandra <sivachandra@google.com>
Reviewed-by: Alexander Aprelev <aam@google.com>
2017-11-09 19:05:15 +00:00
Siva Chandra 5ac157c572 Allow gen_snapshot to create a core snapshot from a platform dill file.
Change-Id: I3aca208200960a023b7062c1abe3c2ba81f2e214
Reviewed-on: https://dart-review.googlesource.com/19447
Commit-Queue: Siva Chandra <sivachandra@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
2017-11-09 00:24:31 +00:00
Dmitry Stefantsov 714dae5ac4 Fix a strong-mode issue in the io-library
Help the compiler to infer types by adding the explicit type argument.

Bug:
Change-Id: I19f0caaf324801d887c6e7a8c782eca667fae069
Reviewed-on: https://dart-review.googlesource.com/18822
Commit-Queue: Dmitry Stefantsov <dmitryas@google.com>
Reviewed-by: Samir Jindel <sjindel@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
2017-11-07 13:44:19 +00:00
Paul Berry 49817352ab Fix strong mode issue in _SignalController.
_SignalController._controller needs to have runtime type
StreamController<ProcessSignal> to avoid an implicit downcast failure
in the getter _SignalController.stream.

Change-Id: Idb033897525e26e17d7cdad345ee0cb6080626a8
Reviewed-on: https://dart-review.googlesource.com/18682
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2017-11-04 16:44:16 +00:00
Adam Barth a30002cfbd [fuchsia] Update package() BUILD.gn syntax
Update the package() template to match the new syntax. This change keeps these
packages working the same way they do currently (i.e., being included in the
system image). In the future, we'll want to remove this annotation and separate
these packages from the system image.

Change-Id: I0f0de3a07afc68a36d07c2e1cc9aa5b22072bf65
Reviewed-on: https://dart-review.googlesource.com/18241
Reviewed-by: Zach Anderson <zra@google.com>
Commit-Queue: Zach Anderson <zra@google.com>
2017-11-02 16:44:28 +00:00
Zachary Anderson 9ab8b55663 [gn] Split target arch/os defines from dart_config
This is a baby-step towards building an SDK targeting the host arch
during a cross-build. This will require a similar update to the use
of dart_config in the Flutter engine at //flutter/lib/io/BUILD.gn:19.

Change-Id: I8b871cceb53038cab8407264664c5ce545e6e010
Reviewed-on: https://dart-review.googlesource.com/17523
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2017-10-31 17:33:13 +00:00
Vyacheslav Egorov 4985165e76 [VM] Make "Hello, World!" run in strong mode (through DFE).
Includes the following changes:

- Disable type checking in the service isolate when strong mode is 
turned on. We don't yet have strong mode clean vmservice Kernel 
binary available (Issue #31203);
- Introduce new Dart VM API to allow creating List<T> (T in {String, int}).
Current API only allows to create List<dynamic> and in strong mode 
List<dynamic> is not assignable to List<T>. For now we limit this API to 
a fixed number of core types for performance considerations (type 
arguments can be canonicalized and cache ahead of time). We will
extend the API allowing creation of arbitrary List<T> if we will
discover the need for it later;
- Use this new API to fix CreateRuntimeOptions to create List<String>
and not List<dynamic>;
- Likewise fix OneByteString_splitWithCharCode to return List<String>
and not List<dynamic>;

Additionally this CL refactors how getters and setters are created
in object_store.h removing 500 lines of largely boilerplate code.

Bug: https://github.com/dart-lang/sdk/issues/31052
Change-Id: I3fdcd2d54ff3f307db0913c67a7c2f009ea9d7a7
Reviewed-on: https://dart-review.googlesource.com/15884
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
2017-10-24 11:43:48 +00:00
Ryan Macnak 1ed184b13b [vm] Invoke Platform::Initialize in gen_snapshot.
Should improve crash behavior on Windows.

Change-Id: I2771abeed3efd137092a80af7d65bc5add69aa6a
Reviewed-on: https://dart-review.googlesource.com/15985
Reviewed-by: Zach Anderson <zra@google.com>
2017-10-23 22:19:39 +00:00
Vyacheslav Egorov 0fe889dbd7 [VM] Pass --strong down to DFE isolate
Bug: https://github.com/dart-lang/sdk/issues/31147
Change-Id: Id8dbdadc1f69213604572efc815d45675d49734e
Reviewed-on: https://dart-review.googlesource.com/15883
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2017-10-23 11:27:47 +00:00
Sean Klein e4b72146ca Reduce usage of LP_CLONE_FDIO_CWD
To pass a CWD to a child through launchpad, simply set
the PWD environment variable, and the child will open
their CWD relative to their root handle when they initialize.

Change-Id: I24cd01c05e705c5a0ec2dfbaae4dbe8de42d7ed4
Reviewed-on: https://dart-review.googlesource.com/15421
Reviewed-by: Zach Anderson <zra@google.com>
Commit-Queue: Zach Anderson <zra@google.com>
2017-10-20 03:50:27 +00:00
Adam Barth 5d7970dde9 Add package() declaration for Fuchsia
This declaration lets us add the dart command line program to the Fuchsia
system image.

Change-Id: I5a1049a47693bd0c0a1287a652758ae7047a4f06
Reviewed-on: https://dart-review.googlesource.com/15008
Reviewed-by: Zach Anderson <zra@google.com>
2017-10-19 15:39:56 +00:00
Vyacheslav Egorov 528bc96858 [VM] Cleanup static typing issues in IO implementation
Bug: https://github.com/dart-lang/sdk/issues/31052
Change-Id: I11788f267f99fe5a8d871b8500ca70abe04c7146
Reviewed-on: https://dart-review.googlesource.com/13040
Reviewed-by: Zach Anderson <zra@google.com>
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
2017-10-16 10:05:06 +00:00
Zachary Anderson dcd275fa74 [dart:io] Begins work on mocking support
Change-Id: I770ed9485a934af07e570fbad3f3fb84ebef973d
Reviewed-on: https://dart-review.googlesource.com/3302
Commit-Queue: Zach Anderson <zra@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Florian Loitsch <floitsch@google.com>
2017-10-10 17:39:12 +00:00
Ryan Macnak 3609522166 printf format checking is a compiler feature, not a platform feature.
Change-Id: Ib3e0beb814b5cae6f2b4be13f055069f682674f5
Reviewed-on: https://dart-review.googlesource.com/11645
Reviewed-by: Zach Anderson <zra@google.com>
2017-10-09 22:26:01 +00:00