This CL rewrites the EventHandler on Fuchsia to use
the low-level ports system call API instead of the
epoll() emulation in musl. This will allow the
Magenta team to remove the epoll() emulation and
the deprecated system call API it is based on.
The new ports API doesn't provide epoll()-like
edge-triggering that clients of the EventHandler
expect. Therefore, this CL emulates it by adding
a level of indirection through a new "IOHandle"
object, which the socket code now uses instead
of file descriptors. This is similar to what we do
on Windows. See the comment at the top of
eventhandler_fuchsia.cc for more details.
Fuchsia issue US-251
R=asiva@google.com
Review-Url: https://codereview.chromium.org/2910853002 .
This new flag value specifies the directory in which the VM should look
up the platform.dill file. A future change will require the VM to load
another kernel binary from disk. This binary will also live in the same
directory that --kernel-binaries specifies. This way, we avoid adding a
different flag for each of the different binaries.
R=asiva@google.com
Review-Url: https://codereview.chromium.org/2933203004 .
This directory has a libraries.json file pointing to vmservice_io and
_vmservice in the source tree. The script tools/patch_sdk.dart has been
updated to use this new directory as the sdk directory when compiling
dart:vmservice_io. This way, to build vmservice_io.dill, we
do not need to copy the dart files pertaining to vmservice_io and
_vmservice.
Fixes#29859R=sigmund@google.com
Review-Url: https://codereview.chromium.org/2938903003 .
2. Get rid of _getMainClosure()
3. Adjust the AOT compiler to ensure it retains the function associated with
the main closure without having to include '_getMainClosure()' in the list
of embedder specified entry points
4. Get rid of the hack in kernel reader to do a delayed patch of
'_getMainClosure()' in the builtin library.
BUG=
R=aam@google.com, rmacnak@google.com
Review-Url: https://codereview.chromium.org/2933603002 .
Build another varient of dart_bootstrap targeting the host architecture to ensure reasonable Observatory build times.
Remove assert assuming a root script, which does not exist when gen_snapshot builds core snapshots.
R=zra@google.com
Review-Url: https://codereview.chromium.org/2924173005 .
2. Read the platform dill file at startup not for every isolate creation
3. Store the memory representation of kernel program in isolate data so that it is deleted when the isolate is shutdown
R=aam@google.com
Review-Url: https://codereview.chromium.org/2927493002 .
- Don't try to mmap an empty file.
- Use correct filename for mapping errors.
- Don't set the root library for core-jit snapshots.
- Accept hyphen variants of options for entry points and compilation traces.
R=zra@google.com
Review-Url: https://codereview.chromium.org/2928663002 .
Only include OSR and field guards in the features descriptor for JIT code to avoid gen_snapshot and dart having different default values.
Disabled since core snapshots with code break tests with non-default flags for type checks, assertions, strict errors, OSR, or field guards.
R=zra@google.com
Review-Url: https://codereview.chromium.org/2902313004 .
process_fuchsia.cc has the ability to drain stdout, stderr, and exit
status from a child process. It was using epoll to multiplex these
streams which worked but required complicated emulation in libc which
we'd like to unwind as well as some tricky locking. This replaces the
epoll with a direct mx_object_wait_many() call that waits on the
Magenta handles backing the streams.
R=zra@google.com
Review-Url: https://codereview.chromium.org/2903373003 .
Previous change removed the limit, but this causes too many
threads to be spawned at the same time on Windows, which
crashes the VM. This change restores the limit, but continues
use of the free-list approach, which still avoids the blocking
problem fixed by the previous change.
fixes#29702R=rmacnak@google.com
Review-Url: https://codereview.chromium.org/2903013002 .
This change prevents IO Service requests from colliding on the same
IO Service port. If requests can collide, a request that could otherwise
be serviced immediately can become blocked on a request that is blocked.
To avoid collisions, this change maintains a free list of IO Service
ports. If the free list is empty, we allocate a new IO Service port.
R=bkonyi@google.com
Review-Url: https://codereview.chromium.org/2903593004 .
Only reload packages map when we are actually doing the isolate reload.
Snapshotting creates and destroys and loader object every time it loads a dart
file - which means kInitLoader is on the hot path and we should avoid rereading
packages map.
R=asiva@google.com, rmacnak@google.com
Review-Url: https://codereview.chromium.org/2901093002 .
This has a few advantages:
- We can track dependencies more precisely
- ninja can assemble things in parallel as they're ready rather than
sequentially all at once.
- It is easier to customize SDKs depending on target platform, e.g.
Fuchsia.
This CL also has a number of cleanups:
- Defining is_fuchsia and is_fuchsia host so we don't always have to check
- Piping through toolchain overrides in more places
- Fixing bugs in copy_tree.py, not using list_files.py, which is broken on Windows
related #29558R=whesse@google.com
Review-Url: https://codereview.chromium.org/2848943003 .
This reverts commit d91f228766.
The commit causes a failure in
tools/build/mac/verify_order _ChromeMain "${BUILT_PRODUCTS_DIR}/${EXECUTABLE_PATH}":
unordered symbols in out/Release/Chromium Framework.framework/Versions/A/Chromium Framework:
BUG=
R=dmitryas@google.com
Review-Url: https://codereview.chromium.org/2884383005 .
With this change one can run run_vm_tests and pass to it reference to kernel parser snapshot. For example,
out/DebugX64/run_vm_tests --dfe=out/DebugX64/gen/kernel-service.dart.snapshot Debugger_RemoveBreakpoint
As this represents first step, this change enables only tests in debugger_test.cc to run with kernel frontend. There will be follow-up cls that enable all of the VM tests to use kernel frontend.
BUG=https://github.com/dart-lang/sdk/issues/28264R=asiva@google.com
Review-Url: https://codereview.chromium.org/2881953002 .