File: v8_context_snapshot.gni

package info (click to toggle)
chromium 139.0.7258.127-1
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 6,122,068 kB
  • sloc: cpp: 35,100,771; ansic: 7,163,530; javascript: 4,103,002; python: 1,436,920; asm: 946,517; xml: 746,709; pascal: 187,653; perl: 88,691; sh: 88,436; objc: 79,953; sql: 51,488; cs: 44,583; fortran: 24,137; makefile: 22,147; tcl: 15,277; php: 13,980; yacc: 8,984; ruby: 7,485; awk: 3,720; lisp: 3,096; lex: 1,327; ada: 727; jsp: 228; sed: 36
file content (73 lines) | stat: -rw-r--r-- 3,022 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# Copyright 2017 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# Targets in ths file are to take a V8 context snapshot on build time.
# Created V8 context snapshot is used in
# third_party/blink/renderer/bindings/core/v8/v8_context_snapshot.{cc|h}.
# to speedup creating a V8 context and setting up around it.

import("//build/config/cast.gni")
import("//build/config/chromeos/ui_mode.gni")
import("//build/config/v8_target_cpu.gni")
import("//v8/gni/v8.gni")

declare_args() {
  # If set, both snapshots are included. At this time, this only applicable to
  # android. In other words, it will not work correctly on other platforms.
  # Building the context snapshots on android requires building blink multiple
  # times. To avoid impacting developer productivity the context snapshot is
  # only built for official builds.
  include_both_v8_snapshots =
      is_official_build && target_os == "android" && target_cpu == "arm64"

  if (target_os == "android") {
    # Whether to include both snapshots on arm32 when building fat binary.
    include_both_v8_snapshots_android_secondary_abi = false

    # Whether Android's secondary ABI should use the context snapshot.
    use_v8_context_snapshot_android_secondary_abi = false
  }
}

declare_args() {
  # TODO(crbug.com/40539769): Enable the feature on more environments.
  # Disable in mac and win cross builds since building Blink twice is slow.
  use_v8_context_snapshot =
      include_both_v8_snapshots ||
      (!is_chromeos && !is_android && !is_castos && !is_fuchsia &&
       !(host_toolchain == default_toolchain && is_msan) &&
       !(is_win && host_os != "win") && !(is_mac && host_os != "mac"))
}

# Apply the secondary abi overrides. Must occur outside of declare_args in
# order to take effect when include_both_v8_snapshots / use_v8_context_snapshot
# are set via args.gn.
if (target_os == "android" && v8_current_cpu != v8_target_cpu) {
  include_both_v8_snapshots = include_both_v8_snapshots_android_secondary_abi
  use_v8_context_snapshot = use_v8_context_snapshot_android_secondary_abi
}

# We use a different filename for arm64 macOS builds so that the arm64 and
# x64 snapshots can live side-by-side in a universal macOS app.
if (is_mac) {
  if (v8_target_cpu == "x64") {
    v8_context_snapshot_filename = "v8_context_snapshot.x86_64.bin"
  } else if (v8_target_cpu == "arm64") {
    v8_context_snapshot_filename = "v8_context_snapshot.arm64.bin"
  }
} else if (target_os == "android") {
  if (v8_current_cpu == "arm" || v8_current_cpu == "x86" ||
      v8_current_cpu == "mipsel") {
    v8_context_snapshot_filename = "v8_context_snapshot_32.bin"
  } else {
    v8_context_snapshot_filename = "v8_context_snapshot_64.bin"
  }
} else {
  v8_context_snapshot_filename = "v8_context_snapshot.bin"
}

# We cannot use V8 context snapshot, if V8 doesn't use snapshot files.
if (use_v8_context_snapshot && !v8_use_external_startup_data) {
  use_v8_context_snapshot = false
}