Commit Graph

3601 Commits

Author SHA1 Message Date
Zachary Anderson 130f3be297 [dart:io] Move _getUriBaseClosure to dart:io
In a forthcoming change, this will allow Uri.base to be aware of
the isolate's current namespace.

R=rmacnak@google.com

Review-Url: https://codereview.chromium.org/2998373002 .
2017-08-24 20:06:52 -07:00
Zachary Anderson 4a5cd4dd57 [dart:io] Remove socket_unsupported.cc
Forgot to remove a file in my last change.

R=asiva@google.com

Review-Url: https://codereview.chromium.org/3008433003 .
2017-08-24 14:42:25 -07:00
Zachary Anderson 747868f2b1 [dart:io] Remove DART_IO_DISABLED
This was only used by Dartium.

Review-Url: https://codereview.chromium.org/3009523002 .
2017-08-24 11:17:52 -07:00
Siva Annamalai cfac48179b 1. Figure out the modified libraries from the specifeid kernel file during
reload instead of computing it based on the source modification information.

2. Fix for failure in Unit test case https://github.com/dart-lang/sdk/issues/30322

3. Fix crash in test that was being skipped in https://github.com/dart-lang/sdk/issues/30109 and turn that test on.

This CL is work towards completing issue https://github.com/dart-lang/sdk/issues/28051

R=aam@google.com

Review-Url: https://codereview.chromium.org/2998983002 .
2017-08-18 13:42:19 -07:00
Ryan Macnak 60a7160273 Reapply "[vm] Prevent non-fatal errors from causing timers to be dropped."
Fix Linux event handler to re-arm the timer_fd after handling a wakeup.

R=zra@google.com

Review-Url: https://codereview.chromium.org/2996243003 .
2017-08-18 13:38:08 -07:00
Alexander Aprelev ba543167ec Pass path to platform kernel binary to kernel-service.
Currently kernel-service derives path to platform binary from path to dart executable. It doesn't always work, so dartk tests fail.

R=asiva@google.com, sigmund@google.com

BUG:http://dartbug.com/30456
Review-Url: https://codereview.chromium.org/3001013002 .
2017-08-17 09:49:48 -07:00
Alexander Markov d89b06ab09 [vm,aot] Fix AOT snapshot creation with kernel front-end
The following problems are fixed in dart_bootstrap when it is used to
create AOT snapshot along with new kernel front-end:

* Data race between main isolate and service isolate when accessing
  vmservice_io kernel program stored in DFE::kernel_vmservice_io_.

* Double-deletion of vmservice_io kernel file program from
  VmService::LoadForGenPrecompiled / Dart_LoadLibrary /
  LoadKernelProgram and then from DFE::~DFE.

It looks like both of these bugs were introduced in
c7faf2dc6b.

R=jensj@google.com, rmacnak@google.com

Review-Url: https://codereview.chromium.org/3002733002 .
2017-08-16 12:44:44 -07:00
Carlo Bernaschina 491390eeaa Refactor of the GetEmbedderInformation APIs
The embedder can rely on embedded_dart_io to partially fill the
Dart_EmbedderInformation structure with all the process related
information.

R=zra@google.com

Review-Url: https://codereview.chromium.org/2997013002 .
2017-08-16 10:59:27 -07:00
Zachary Anderson 734beef062 [infra] Translate _sources.gypi files to _sources.gni files
Also deletes code that becomes dead as a result.

R=rmacnak@google.com

Review-Url: https://codereview.chromium.org/2996903002 .
2017-08-14 21:54:36 -07:00
Carlo Bernaschina 0cbbeeb288 Restore "Add current rss and embedder name to Observatory"
Made benchmark_test.cc independent from Service by using the
implementation of MaxRSS from bin::Process

Related https://github.com/dart-lang/sdk/commit/ce736d3ef009bf334a92d5b7d354fc0b04805b4f

R=bkonyi@google.com
TBR=rmacnak@google.com

Review-Url: https://codereview.chromium.org/2994223002 .
2017-08-14 17:02:30 -07:00
Carlo Bernaschina 2f5a59e658 Revert "Add current rss and embedder name to Observatory"
This reverts commit ce736d3ef0.

TBR=zra@google.com

Review-Url: https://codereview.chromium.org/2999933002 .
2017-08-14 15:45:13 -07:00
Zachary Anderson 0908a611f4 Copy libhello_fuchsia.so into root output directory
R=mcgrathr@chromium.org, zra@google.com

https://fuchsia-review.googlesource.com/37541 enables building all
shared library in Fuchsia using the shared toolchain, but that means
libhello_fuchsia.so will end up in a different directory, so we need
to copy it to root output directory afterwards.
Review-Url: https://codereview.chromium.org/3000873002 .
2017-08-14 15:24:24 -07:00
Carlo Bernaschina ce736d3ef0 Add current rss and embedder name to Observatory
Moved the responsibility to provide MaxRSS and CurrentRSS from the VM to
the embedder.

The embedder can opt-it by setting a Dart_GetEmbedderInformation
callback using the public Dart_SetEmbedderInformationCallback API.

The implementation of the Dart_GetEmbedderInformation should mandatory
fill the version field and the ones it is able to fill.
The name field must reference a constant C style string, it will not be
freed by the VM code.

R=zra@google.com

Review-Url: https://codereview.chromium.org/2996803002 .
2017-08-14 15:22:46 -07:00
Jens Johansen c7faf2dc6b [kernel] Free memory for kernel data.
This should cleanup user script kernel data and service isolate kernel data,
but leave the platform kernel data alone as it is used several times,
and it is unclear to me when it is safe to free it.

BUG=
R=kmillikin@google.com

Review-Url: https://codereview.chromium.org/3000623002 .
2017-08-14 10:38:15 +02:00
Siva Annamalai 73d30074b1 - Convert all isolate flags to a bit field.
- Add a new isolate specific flag to cause the isolate to run in kernel mode.

R=rmacnak@google.com

Review-Url: https://codereview.chromium.org/2995723002 .
2017-08-11 12:38:25 -07:00
Ryan Macnak 7dfe62f70d [standalone] Automatically decompress gzip'd resources, including sources and script snapshots.
Closes #30315

R=asiva@google.com, zra@google.com

Review-Url: https://codereview.chromium.org/2991393002 .
2017-08-11 12:18:19 -07:00
Ryan Macnak f8e47a9e26 Reapply "[vm] Don't enable the profiler by default. Enable the profiler at startup with --observe, or later through Observatory."
Ensure we still start NativeSymbolResolver even if the profiler is off, since it is also used name weak handler finalizer functions and to produce stack traces for crashes.

R=bkonyi@google.com

Review-Url: https://codereview.chromium.org/2992893002 .
2017-08-09 11:20:58 -07:00
Zach Anderson 0394d3a0cf [infra] Begin removing gyp
This CL begins removing gyp from Dart's tree.

Removing gyp will go in three stages:
1. Remove unused .gyp and .gypi files.
2. Translate *_sources.gypi files to *_sources.gni files
3. Remove //third_party/gyp from DEPS

This CL is stage 1.

R=asiva@google.com

Review-Url: https://codereview.chromium.org/2992593002 .
2017-08-04 22:19:35 -07:00
Dmitry Stefantsov eddc456f29 Revert "[vm] Don't enable the profiler by default. Enable the profiler at startup with --observe, or later through Observatory."
This reverts commit cc08f2ddd8.

R=whesse@google.com

Review-Url: https://codereview.chromium.org/2990173002 .
2017-08-02 11:30:16 +02:00
Ryan Macnak cc08f2ddd8 [vm] Don't enable the profiler by default. Enable the profiler at startup with --observe, or later through Observatory.
Note there is no option to disable the profiler. The profiler on Mac, Linux, and Android is based on SIGPROF, and there is no way to wait for all the outstanding signals as required to be able to safely free the sample buffer.

Saves ~20MB on 64-bit VMs.

R=cbernaschina@google.com, zra@google.com

Review-Url: https://codereview.chromium.org/2989093002 .
2017-08-01 17:57:08 -07:00
Zachary Anderson e8eebba056 [Fuchsia] Fix Process exit code handler
There was a bug in the logic for maintaining the array of handles to
wait on. Using the ports API instead removes the need to maintain an
array of handles.

R=rmacnak@google.com

Review-Url: https://codereview.chromium.org/2992803002 .
2017-08-01 13:57:41 -07:00
Florian Loitsch ee46026671 Don't use LinkedList in the core libraries anymore.
R=lrn@google.com

Committed: https://github.com/dart-lang/sdk/commit/fe17b5b2bc24454dd2f596d8ce6e2e7661e87f10
Reverted: https://github.com/dart-lang/sdk/commit/5d4a786f4466ebcb06c36ed44f262c9e120a7273
Review-Url: https://codereview.chromium.org/2975443002 .
2017-07-28 21:14:11 +02:00
Siva Annamalai 53cf85abc8 Fix for issue 29819 https://github.com/dart-lang/sdk/issues/29819 when a 'dill' file is loaded directly into the VM, set mode to dart front end mode and use that when reloading files too, this ensures that we reload correctly.
Adjust pkg.status to account for the hot_reload_e2e_test passing.

R=aam@google.com

https://github.com/dart-lang/sdk/issues/29819
Review-Url: https://codereview.chromium.org/2990833002 .
2017-07-27 10:06:54 -07:00
Ryan Macnak a86bc67d9b [standalone] Register a segfault handler on Android as already done on Linux.
R=asiva@google.com

Review-Url: https://codereview.chromium.org/2985963002 .
2017-07-27 09:47:24 -07:00
Ryan Macnak c83a6831fc [vm] Remove Dartium's vm-service implementation.
R=asiva@google.com

Review-Url: https://codereview.chromium.org/2985183002 .
2017-07-26 18:21:57 -07:00
Ryan Macnak 02ec4f494e Remove old dead tag handler.
R=asiva@google.com, zra@google.com

Review-Url: https://codereview.chromium.org/2991763002 .
2017-07-26 09:53:04 -07:00
Zachary Anderson 4b752eaf05 [Fuchsia] Fixes and cleanup for launchpad_vmo_from_file() deprecation
R=rmacnak@google.com, swetland@google.com

Review-Url: https://codereview.chromium.org/2986803002 .
2017-07-24 13:32:15 -07:00
Zachary Anderson 9e7e66602f Compute the script Uri lazily
Previously, the string set up by the embedder was eagerly passed to
Uri.parse during Isolate startup. This is expensive both in time and
memory footprint. This CL causes Uri.parse() to be called only
when needed. This change will allow reducing the memory footprint
of Fuchsia's Dart content handler on hello world by ~1MB.

fixes #25603

R=asiva@google.com

Review-Url: https://codereview.chromium.org/2988613002 .
2017-07-24 12:56:21 -07:00
Siva Annamalai 000bec45ac Account for kernel files being passed in directly on the command line this fixes issue 30212 (https://github.com/dart-lang/sdk/issues/30212)
R=sigmund@google.com

Review-Url: https://codereview.chromium.org/2985563003 .
2017-07-21 08:27:39 -07:00
Siva Annamalai 33c50e9374 1. Correctly set root_library based on the application script URI instead of looking for the library that has the 'main' method.
2. Adjust the Dart front end to not require a 'main' method when the in memory filesystem is used, this allows execution of VM unit tests which all do not necessarily have a 'main' method (integrated CL from siggi)

3. Change kernel reader to not look for a 'main' methos when Dart_LoadKernel is called.

4. Change Dart_LoadScript to also support loading of dart programs when Dart front end is used

R=aam@google.com, sigmund@google.com

Review-Url: https://codereview.chromium.org/2948273002 .
2017-07-19 18:09:19 -07:00
Zachary Anderson fa859c507f Add libdart PRODUCT targets for Fuchsia's dart_runner
R=rmacnak@google.com

dart:hello_dart.dartx memory footprint: 6292k -> 5572k
Review-Url: https://codereview.chromium.org/2975343002 .
2017-07-15 21:43:50 -07:00
Carlo Bernaschina df8bf384eb Introduce external services registration
A new RPC is introduced `_registerService` which allow clients to
register new services that are accessible from all the other clients.

Each registered endpoint is identified by 3 strings:

 - `service`
   a non empty string which identifies the provided service
   (e.g. `HotReload`, `OpenFile`)
 - `alias`
   an alias for that particular endpoint used by clients to identify it
   (e.g. `Flutter`, `IntelliJ`)
 - `method` __generated__
   the RPC method that should be invoked from a client to request it

A new _stream_ `_Service` is introduce, and two related events:

 - `ServiceRegistered`
   which is triggered when a new client is registered.
   All the related information (`service`, `alias`, `method`) are sent.

 - `ServiceUnregistered`
   which is triggered when a client, which previously registered a
   service, disconnects.
   Just `service` and `method` are sent.

Related https://github.com/dart-lang/sdk/issues/30023

R=asiva@google.com, bkonyi@google.com

Review-Url: https://codereview.chromium.org/2980733003 .
2017-07-13 18:18:51 -07:00
Zach Anderson 0148dfce03 [Windows] Turn off TLS destructors in the Platform exception handler
R=alexmarkov@google.com

Review-Url: https://codereview.chromium.org/2981773002 .
2017-07-13 13:04:43 -07:00
Alexander Markov 2e5002d67a Add top-level exception handler on Windows to dump stack traces
R=zra@google.com

Review-Url: https://codereview.chromium.org/2976063002 .
2017-07-13 08:17:30 -07:00
Zachary Anderson 6cd8a79078 VM: Re-format to use at most one newline between functions
R=asiva@google.com

Review-Url: https://codereview.chromium.org/2974233002 .
2017-07-13 08:08:37 -07:00
Zachary Anderson b3200f4664 [Fuchsia] Routes timeline events to Fuchsia's tracing app
This CL routes timeline events to Fuchsia's tracing app when the
following arguments are passed to the VM:

--systrace_timeline
--timeline_recorder=systrace
--timeline_streams=[some streams here]

I'll add these arguments to the Flutter engine for Fuchsia after this
CL lands.

TO-367

R=rmacnak@google.com

Review-Url: https://codereview.chromium.org/2977513002 .
2017-07-11 14:12:27 -07:00
Chris Bracken b9596a86e4 Fix typo: intput-file -> input-file
BUG=
R=rmacnak@google.com

Review-Url: https://codereview.chromium.org/2975943002 .
2017-07-11 13:55:03 -07:00
Sigmund Cherem b71bd543a9 Reapply "Tweak public APIs and use them in patch_sdk, dart2js, and kernel-service.""
Original CL had a bug that wasn't visible unless you delete your
out/ReleaseX64/patched_sdk folder.

Patchset #1 is the original CL, patchset #2 shows the fix.

This reverts commit 4aadfe09df.

BUG=

Review-Url: https://codereview.chromium.org/2976543002 .
2017-07-07 15:32:24 -07:00
Sigmund Cherem 4aadfe09df Revert "Tweak public APIs and use them in patch_sdk, dart2js, and kernel-service."
Reason: broke VM bots, still investigating.

This reverts commit 610d081947.

TBR= paulberry@google.com

Review-Url: https://codereview.chromium.org/2979463002 .
2017-07-07 15:21:37 -07:00
Sigmund Cherem 610d081947 Tweak public APIs and use them in patch_sdk, dart2js, and kernel-service.
This CL tweaks the public APIs in package:front_end, and
starts using those APIs outside the package. For example, this
removes 9 uses of DillTarget, so it is not longer mentioned
outside pkg/front_end and the analyzer_target.

Actual changes:
 - in package:front_end

   * added kernel_generator_impl: new file contains code that
     used to be in kernel_generator. Code has some modifications:
     it uses a single canonical-root when loading summaries, and
     it supports generating both outlines and kernel in one go.

   * removed code that didn't belong here:
     a. most of calculating deps for .GN moved to patch_sdk
     b. vm-specific outcomes moved to kernel-service

   * updated how `native` is implemented, so we can more easily
     support dart2js and ddc

   * updated how we check where `int`, `bool`, etc can be implemented.

   * added support "hermetic mode" in modular builds
     ('chaseDependencies = false' option)

   * moved `trim` step out of fasta, and for now call it only within
     the public API. This is not yet exposed, and I stopped covering it in
     most tests (now only covered in shaker tests). The plan is to add
     tests for the public API covering this in the future.

   * removed `uriToSource` when serializing outlines

   * added unit tests for public APIs

 - patch_sdk
   * use the public API to craete platform.dill, outline.dill (now
     500K insted of 3Mb because it excludes sources), and vmservice_io.dill
   * moved here logic internal to .GN

 - kernel service
   * use the public API
   * moved here logic that depends on VM internals (e.g. status enum,
     compilation results)

 - package:compiler
   * use the public API in tools and unit tests
   * simplified patched-sdk generation: no more extending fasta's internals

 - package:kernel
   * fix bug in deserialization: initializers and other lists were
     overwritten accidentally with external definitions.
   * updated unit tests, moved shared logic to frontend/src/fasta/testing

R=johnniwinther@google.com, paulberry@google.com

Review-Url: https://codereview.chromium.org/2953703002 .
2017-07-07 15:14:22 -07:00
Ryan Macnak 9bbfd08910 [fuchsia] Use 0 instead of the deprecated MX_PORT_OPT_V2 option
Magenta has removed ports v1, and subsequently deprecated the need for
the MX_PORT_OPT_V2 option.

R=zra@google.com

Review-Url: https://codereview.chromium.org/2973893002 .
2017-07-07 10:00:16 -07:00
Ryan Macnak 6eacc4b7f8 [gen_snapshot] Escape spaces when generating depfiles.
Fixes https://github.com/dart-lang/sdk/issues/30059

R=jakobr@google.com

Review-Url: https://codereview.chromium.org/2966903003 .
2017-07-05 10:00:18 -07:00
Zachary Anderson e7c96cae8c [Fuchsia] Implements NetworkInterface.list()
US-241

R=rmacnak@google.com, tkilbourn@google.com

Review-Url: https://codereview.chromium.org/2962383002 .
2017-06-30 10:54:08 -07:00
Zachary Anderson a8f85684f1 Restore -rdynamic in Product mode build
The flag is necessary for native extensions to work. There is a small
increase in stripped binary size.

Review-Url: https://codereview.chromium.org/2967673002 .
2017-06-30 09:16:23 -07:00
Zachary Anderson 1a8174b08d Exclude Observatory assets from PRODUCT build dart, dart_precompiled_runtime
This CL also removes some compiler flags that increase space somewhat
that help the profiler find symbols, which isn't included in a PRODUCT
build.

Before:
zra@zach:~/dart/sdk$ ls -la out/ProductX64/exe.stripped/
-rwxr-x--- 1 zra eng  9693064 Jun 29 14:52 dart
-rwxr-x--- 1 zra eng  7391080 Jun 29 14:52 dart_precompiled_runtime

R=askesc@google.com, rmacnak@google.com

After:
-rwxr-x--- 1 zra eng  6809424 Jun 29 15:11 dart
-rwxr-x--- 1 zra eng  3299120 Jun 29 15:11 dart_precompiled_runtime
Review-Url: https://codereview.chromium.org/2964133002 .
2017-06-30 08:09:37 -07:00
Ryan Macnak f445c31818 [gen_snapshot] Write only one target in the depfile to appease Ninja.
Since the other targets are generated by the same action, it is enough that Ninja sees only one output as dirty.

Add missing dependencies for core-jit snapshots.

Fuchsia issue TO-365

R=zra@google.com

Review-Url: https://codereview.chromium.org/2968603002 .
2017-06-29 16:54:42 -07:00
Zachary Anderson 10d343f295 [Fuchsia] Fix definition of Process::ClearSignalHandler()
R=rmacnak@google.com

Review-Url: https://codereview.chromium.org/2960233003 .
2017-06-28 15:55:26 -07:00
Zachary Anderson 4ecf748d5e [dart:io] Fixes a crash in VM shutdown when signals are watched
This CL fixes a crash in VM shutdown which is triggered by Dart programs
that throw unhandled exceptions while watching OS signals.

fixes #30033

R=rmacnak@google.com

Review-Url: https://codereview.chromium.org/2961993002 .
2017-06-28 11:05:07 -07:00
Zachary Anderson 2a9d570f4d Use POLL* rather than EPOLL* event bits on Fuchsia
Fuchsia defines these bits identically. We are removing epoll from
Fuchsia shortly, so use the <poll.h> ones.

R=zra@google.com

Review-Url: https://codereview.chromium.org/2955023003 .
2017-06-26 14:21:27 -07:00
Adam Barth 2e55f22810 Use LP_CLONE_MXIO_NAMESPACE instead of LP_CLONE_MXIO_ROOT
The new name reflects MXIO_ROOT being deprecated.
2017-06-26 12:07:53 -07:00