- Split interface to provide direct access to raw clock value and clock frequency.
- Update Stopwatch to use raw clock value and clock frequency instead of microseconds.
- Fix possible initialization race on OSX
R=rmacnak@google.com
Review URL: https://codereview.chromium.org/1563473002 .
- Make --gen/run-precompiled-snapshot take a directory to use for the snapshot pieces.
- Throw on Platform.executeable to prevent tests from becoming fork-bombs.
- Update status files so 'dart_precompiled' is generally expected to behave the same as 'vm'.
Currently multitests will fail unless run with --jobs=1 because the test harness assigns them the same temporary directory.
Running this also requires a great deal of space. My out directory is 380G.
BUG=http://dartbug.com/24975R=fschneider@google.com, srdjan@google.com
Review URL: https://codereview.chromium.org/1507943002 .
Three types of fixes:
1. Remove redundant const_cast
2. Remove const_cast by adding const when appropiate.
3. Remove const_cast by removing const (e.g. places where we call free with it)
For now I only fixed places where the fix is local enough - i.e. does not require
changed a large amount of code.
BUG=
R=rmacnak@google.com
Review URL: https://codereview.chromium.org/1526123002 .
Remove -fdata-section again from the Linux build configuration: It prevented
some optimizations in gcc and clang - fewer things were recognized as constants.
Add const to pointers/arrays in some places to help compilers with determining
what is a constant. A common pattern is strlen of a string literal const char*,
or an array of function pointers.
Tested with gcc 4.8.4 / clang 3.4 and improves code qualtiy + reduces binary size.
BUG=
R=iposva@google.com, rmacnak@google.com
Review URL: https://codereview.chromium.org/1462953002 .
This removes most of the compiler-related code from dart_precompiled:
x64 stripped binary size 13M -> 9.1M
ARM stripped binary size 12M -> 8.3M
The precompiled build defines the DART_PRECOMPILED macro. This
stubs out the public interface to the compiler/parser with empty
function bodies.
Use gcc options -ffunction-sections and --gc-sections to make the linker remove
unused functions/symbols.
BUG=
R=rmacnak@google.com
Review URL: https://codereview.chromium.org/1459443002 .
- API breakage: Dart_IsolateBlocked, Dart_IsolateUnblocked -> Dart_ThreadDisableProfiling, Dart_ThreadEnableProfiling.
- Remove IsolateProfilerData.
- Move thread at blocking call count from isolate to thread.
- Always interrupt threads unless they are blocked.
- We can no longer count "idle" ticks.
- Only record sample if thread is the current mutator of an isolate.
- Refactor ThreadInterrupterCallback to ensure that Thread* is valid.
Threads are only ever sent signals if ThreadInterruptsEnabled is true. Which is controlled by two functions:
void DisableThreadInterrupts();
void EnableThreadInterrupts();
R=asiva@google.com, iposva@google.com
Review URL: https://codereview.chromium.org/1423473004 .
- When a process exits on Windows, Windows closes all handles
- Our mutexes use a handle to a semaphore for locking
- If our TLS destructors need to take a lock during thread exit (but after process has started to shutdown) we will deadlock waiting on a handle that's been closed.
This works around the problem by not running tls destructors when we are exiting the process.
R=zra@google.com
Review URL: https://codereview.chromium.org/1409723007 .
- When a process exits on Windows, Windows closes all handles
- Our mutexes use a handle to a semaphore for locking
- If our TLS destructors need to take a lock during thread exit (but after process has started to shutdown) we will deadlock waiting on a handle that's been closed.
This works around the problem by not running tls destructors when we are exiting the process.
R=zra@google.com
Review URL: https://codereview.chromium.org/1416063005 .
- API breakage: Dart_IsolateBlocked, Dart_IsolateUnblocked -> Dart_ThreadDisableProfiling, Dart_ThreadEnableProfiling.
- Remove IsolateProfilerData.
- Move thread at blocking call count from isolate to thread.
- Always interrupt threads unless they are blocked.
- We can no longer count "idle" ticks.
- Only record sample if thread is the current mutator of an isolate.
- Refactor ThreadInterrupterCallback to ensure that Thread* is valid.
Threads are only ever sent signals if ThreadInterruptsEnabled is true. Which is controlled by two functions:
void DisableThreadInterrupts();
void EnableThreadInterrupts();
R=asiva@google.com, iposva@google.com
Review URL: https://codereview.chromium.org/1412733008 .