Commit Graph

3172 Commits

Author SHA1 Message Date
Zachary Anderson fc41a57a93 [dart:io] Allow an embedder to disallow certain operaions
Fuchsia's Dart and Flutter content handlers share the implementation of
dart:io with the command line embedder, but would like to disable
some operations that don't make sense for them, like exiting thoe whole
process, which may be hosting multiple unrelated Isolates.
Change-Id: I825ece49c685471ff85802873b1c0f974c507aed
Reviewed-on: https://dart-review.googlesource.com/3687
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2017-09-08 05:02:07 +00:00
Ryan Macnak 8e89cd046f [gen_snapshot] Allow blank lines and shell-style comments in entry point manifests.
Change-Id: I7074e2bd16c951c978bbdd90defd7af2d7978791
Reviewed-on: https://dart-review.googlesource.com/3760
Reviewed-by: Zach Anderson <zra@google.com>
2017-09-07 21:52:06 +00:00
Zachary Anderson 05dc2936bb [Fuchsia] Update include path for netconfig.h
Change-Id: I0853256e0684d2c312d8d8747c203ba9adb36e72
Reviewed-on: https://dart-review.googlesource.com/3308
Reviewed-by: Zach Anderson <zra@google.com>
Commit-Queue: Zach Anderson <zra@google.com>
2017-09-05 19:23:09 +00:00
Ryan Macnak a456515c6e [ios] Use mach_absolute_time instead of boot time for the monotonic clock.
Allows for direct conversion between ftl::TimePoint and Dart_TimelineGetMicros().

Change-Id: I253c9f109f9b80f86aee8e8ed5202a4d6e8b7a85
Reviewed-on: https://dart-review.googlesource.com/3301
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2017-09-05 16:49:35 +00:00
Vyacheslav Egorov 8a179fb953 [VM, Compiler] Move compiler to a separate folder.
New folder structure (nested under vm/):

- compiler/
-   jit/         - JIT specific code
-   aot/         - AOT specific code
-   backend/     - all middle-end and back-end code (IL, flow graph)
-   assembler/   - assemblers and disassemblers
-   frontend/    - front ends (AST -> IL, Kernel -> IL)

compiler/README.md would be the documentation root for the compiler
pipeline

Bug: https://github.com/dart-lang/sdk/issues/30575
Change-Id: I2dfd9688793bff737f7632ddc77fca766875ce36
Reviewed-on: https://dart-review.googlesource.com/2940
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
2017-09-04 15:15:18 +00:00
Zachary Anderson e2bce948ed [dart:io] Adds Platform.operatingSystemVersion
fixes #30018

R=rmacnak@google.com

Review-Url: https://codereview.chromium.org/3006873002 .
2017-09-01 22:08:48 -07:00
Terry Lucas 0585e74b63 Fixed analyzer test to use dart2js not dartium
R=paulberry@google.com

Committed: https://github.com/dart-lang/sdk/commit/704de3bb3e27313c0eb6eb5ebc03173a5396dd1e
Review-Url: https://codereview.chromium.org/3004153002 .
2017-09-01 09:03:16 -07:00
William Hesse a8cab7a205 Revert "Removed Dartium SDK libs"
This reverts commit 4a58918382.
That commit seems to have broken docgen on the html libraries.

BUG=
TBR=terry@google.com

Review-Url: https://codereview.chromium.org/3004173002 .
2017-09-01 00:47:57 +02:00
Carlo Bernaschina 05367c3db8 Update iOS FileSystemWatcher::WatchPath signature
TBR=zra@google.com

Review-Url: https://codereview.chromium.org/3011703002 .
2017-08-31 09:46:28 -07:00
Terry Lucas 4a58918382 Removed Dartium SDK libs
First stage remove the libraries that are no longer part of 1.25 and beyond.

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

Committed: https://github.com/dart-lang/sdk/commit/a18908461adc431af2ee0114ed5ea9ef781bfb67
Committed: https://github.com/dart-lang/sdk/commit/d96561af083777ac9529c75ae05b6e89f8f06a6c
Review-Url: https://codereview.chromium.org/3008563002 .
2017-08-31 07:17:23 -07:00
Terry Lucas f1269525a8 Revert: Removed Dartium SDK libs
Review-Url: https://codereview.chromium.org/3005913003 .
2017-08-30 20:47:07 -07:00
Terry Lucas d96561af08 Removed Dartium SDK libs
First stage remove the libraries that are no longer part of 1.25 and beyond.

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

Committed: https://github.com/dart-lang/sdk/commit/a18908461adc431af2ee0114ed5ea9ef781bfb67
Review-Url: https://codereview.chromium.org/3008563002 .
2017-08-30 20:07:15 -07:00
Zachary Anderson 732bb45c45 [dart:io] Remove double-close from recursive directory delete
closedir() closes the file descriptor wrapped by the DIR, so we
shouldn't close it again.

R=bkonyi@google.com

Review-Url: https://codereview.chromium.org/3005883002 .
2017-08-30 12:49:05 -07:00
Zachary Anderson 959de94b85 [dart:io] Build fixes for Namespaces
Small fixes for my previous commit.

Review-Url: https://codereview.chromium.org/3008943002 .
2017-08-30 10:18:09 -07:00
Zachary Anderson d0295c873c [dart:io] Namespaces for file IO
Fuchsia requires the ability to sandbox Isolates w.r.t. file IO.
When a new Isolate starts, Fuchsia will pass the Isolate an object
called a namespace. We can translate the namespace object into a
file descriptor suitable for passing to the *at() family of
POSIX file system calls. The file system calls will then
have visibility only into the specified namespace.

We also plumb Namespaces through on all the other platforms as well to
make the change easier to test and so that in the future we can
implement e.g. per-isolate cwds.

This change adds a new internal class to dart:io called _Namespace,
which is implemented in a patch file. See:

sdk/lib/io/namespace_impl.dart
runtime/bin/namespace_patch.dart

The embedder can set up a non-default namespace by calling
_Namespace._setupNamespace during Isolate setup.

Instances of _Namespace have a native field that holds a pointer
to a native Namespace object. See:

runtime/bin/namespace.h

Calls from e.g. file_impl.dart are now also passed a
_Namespace object. The implementations in e.g. file.cc and
file_linux.cc then extract the namespace, and use it to compute a
file descriptor and path suitable for passing to e.g. openat().

related US-313

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

Review-Url: https://codereview.chromium.org/3007703002 .
2017-08-30 09:34:36 -07:00
Terry Lucas 05ca90aa8c Removed Dartium test exceptions
R=alanknight@google.com

Committed: https://github.com/dart-lang/sdk/commit/84f079f24c75aec51a53c17f1ebe0027b2adbb0c
Review-Url: https://codereview.chromium.org/2983033002 .
2017-08-29 07:15:06 -07:00
Terry Lucas a18908461a Removed Dartium SDK libs
First stage remove the libraries that are no longer part of 1.25 and beyond.

R=alanknight@google.com

Review-Url: https://codereview.chromium.org/3008563002 .
2017-08-29 06:38:53 -07:00
Siva Annamalai b4ddc97fd5 Revert "Fix for Flutter issue 11260 (https://github.com/flutter/flutter/issues/11260)"
This reverts commit 8817846da6.

BUG=

Review-Url: https://codereview.chromium.org/3005663002 .
2017-08-25 16:15:05 -07:00
Siva Annamalai 8817846da6 Fix for Flutter issue 11260 (https://github.com/flutter/flutter/issues/11260)
Do not rely on the udp_receive_buffer field from IsolateData as a buffer for
reading data in the recvfrom call.

BUG=
R=zra@google.com

Review-Url: https://codereview.chromium.org/3009643002 .
2017-08-25 15:26:55 -07:00
Siva Annamalai eac18a324c Fixes for issues
30504 - https://github.com/dart-lang/sdk/issues/30504
gen_snapshot fails to run from kernel

30517 - https://github.com/dart-lang/sdk/issues/30517
vm-kernel-precomp 'expected: !dfe.UseDartFrontend() && !dfe.kernel_file_specified()' tests regression

R=aam@google.com

Review-Url: https://codereview.chromium.org/3004563002 .
2017-08-25 10:05:13 -07:00
Vyacheslav Egorov 7d5231796e [VM, Precompiler] Support obfuscation of the symbolic information in precompiler
Obfuscation is controlled by obfuscate flag in Dart_IsolateFlags.

Obfuscation of identifiers is performed during script tokenization - when TokenStream is generated from the source. All kIDENT and kINTERPOL_VAR tokens are renamed consistently using a persistent obfuscation map stored in ObjectStore::obfuscation_map.

Some identifiers (pseudo-keywords, arithmetic operators, builtin recognized methods and entry-points) are not renamed to keep name based lookups from breaking. All other identifiers are renamed.

Constant instances of Symbol-s (both created via literal syntax #ident and using constant constructor const Symbol("ident")) are renamed consistently with corresponding identifiers.

Script urls and Library urls and names are also obfuscated.

Obfuscation map can be dumped as a JSON array at the end of precompilation using Dart_GetObfuscationMap API.

BUG=https://github.com/dart-lang/sdk/issues/30524
R=rmacnak@google.com

Review-Url: https://codereview.chromium.org/3003583002 .
2017-08-25 09:48:23 +02:00
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