The Jumbo build is the Chromium implementation of a Unity build system
aimed at dramatically lowering the compilation times. It can be easily
enabled with `use_jumbo_build=true`.
When you enable this, the biggest problem is that name conflicts can
occur between multiple c++ files merged, which is no problem for `deno`.
Because the V8's Jumbo build is managed in upstream, and `deno` will
just pick up a stable build V8.
So, this patch enables Jumbo build by default. After this patch, the
total number of build objects are halved. (1014 -> 493)
FYI, the following results are tested in my local environment.
- IMAC 5K, i5 4-cores, 24GB, 512GB SSD
Test result1: No use ccache
| |Jumbo build without ccache|Normal build without ccache|
|---|--------------------------|---------------------------|
| 1 | 0:05:26 | 0:11:31 |
| 2 | 0:05:24 | 0:11:29 |
| 3 | 0:05:25 | 0:11:28 |
| 4 | 0:05:24 | 0:11:29 |
| 5 | 0:05:26 | 0:11:29 |
|AVG| 0:05:25 | 0:11:29 |
Test result2: Use ccache
| |Jumbo build with ccache|Normal build with ccache|
|---|-----------------------|------------------------|
| 1 | 0:01:38 | 0:01:13 |
| 2 | 0:01:45 | 0:01:21 |
| 3 | 0:01:39 | 0:02:20 |
| 4 | 0:01:45 | 0:02:16 |
| 5 | 0:01:42 | 0:02:19 |
| 6 | 0:01:17 | 0:01:11 |
| 7 | 0:01:01 | 0:01:48 |
| 8 | 0:00:54 | 0:01:57 |
| 9 | 0:01:03 | 0:02:15 |
|10 | 0:01:36 | 0:02:19 |
|AVG| 0:01:26 | 0:01:54 |
Refs: https://chromium.googlesource.com/chromium/src/+/master/docs/jumbo.md
(Use C:\deno instead of c:\deno in appveyor config because it's cloned to c:\ by clone_folder variable in .appveyor.yml. On the other hand, build directory is pointed to C:\ by $(APPVEYOR_BUILD_FOLDER) so that test targets are placed on separated partitions.)
This will improve the threshold benchmark. Using 32k because that's what
Go uses, but we should explore the value in the future.
a0d6420d8b/src/io/io.go (L391)
Checks the output more carefully. The first line of output from
js/unit_tests.ts should be something like "running 96 tests"
And the last line should be something like
"test result: ok. 96 passed; 0 failed; 0 ignored; 0 measured; 36
filtered out"
This parses those strings and make sure they align.
This will catch silent death bugs.
Ensure that at most one mutable Isolate reference exists at a time.
`deno_execute()` and `deno_respond()` now borrow a reference to the rust-side
isolate from the caller. When we need a reference to the isolate while one of
these functions is on the stack, `deno_get_data()` can be used to borrow back
that reference.