Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(246)

Side by Side Diff: docs/windows_split_dll.md

Issue 1314463004: Doc style: windows_split_dll.md (Closed) Base URL: https://chromium.googlesource.com/chromium/src@master
Patch Set: Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Introduction 1 # Windows Split DLLs
2 2
3 A build mode where chrome.dll is split into two separate DLLs. This was undertak en as one possible workaround for toolchain limitations on Windows. 3 A build mode where chrome.dll is split into two separate DLLs. This was
4 4 undertaken as one possible workaround for toolchain limitations on Windows.
5
6 # Details
7 5
8 ## How 6 ## How
9 7
10 Normally, you probably don't need to worry about doing this build. If for some r eason you need to build it locally: 8 Normally, you probably don't need to worry about doing this build. If for some
9 reason you need to build it locally:
11 10
12 * From a _Visual Studio Command Prompt_ running as **Administrator** run `pyth on tools\win\split_link\install_split_link.py`. 11 1. From a _Visual Studio Command Prompt_ running as **Administrator** run
13 * Set `GYP_DEFINES=chrome_split_dll=1`. In particular, don't have `component=s hared_library`. Other things, like `buildtype` or `fastbuild` are fine. 12 `python tools\win\split_link\install_split_link.py`.
14 * `gclient runhooks` 13 1. Set `GYP_DEFINES=chrome_split_dll=1`. In particular, don't have
15 * `ninja -C out\Release chrome` 14 `component=shared_library`. Other things, like `buildtype` or `fastbuild`
15 are fine.
16 1. `gclient runhooks`
17 1. `ninja -C out\Release chrome`
16 18
17 `chrome_split_dll` currently applies only to chrome.dll (and not test binaries). 19 `chrome_split_dll` currently applies only to chrome.dll (and not test binaries).
18 20
19 ## What 21 ## What
20 22
21 This is intended to be a temporary measure until either the toolchain is improve d or the code can be physically separated into two DLLs (based on a browser/chil d split). 23 This is intended to be a temporary measure until either the toolchain is
24 improved or the code can be physically separated into two DLLs (based on a
25 browser/child split).
22 26
23 The link replacement forcibly splits chrome.dll into two halves based on a descr iption in `build\split_link_partition.py`. Code is primarily split along browser /renderer lines. Roughly, Blink and its direct dependencies are in the "chrome1. dll", and the rest of the browser code remains in "chrome.dll". 27 The link replacement forcibly splits chrome.dll into two halves based on a
28 description in `build\split_link_partition.py`. Code is primarily split along
29 browser/renderer lines. Roughly, Blink and its direct dependencies are in the
30 "chrome1.dll", and the rest of the browser code remains in "chrome.dll".
24 31
25 Splitting the code this way allows keeping maximum optimization on the Blink por tion of the code, which is important for performance. 32 TODO: build\split_link_partition.py doesn't exist.
26 33
27 There is a compile time define set when building in this mode `CHROME_SPLIT_DLL` , however it should be used very sparingly-to-not-at-all. 34 Splitting the code this way allows keeping maximum optimization on the Blink
35 portion of the code, which is important for performance.
36
37 There is a compile time define set when building in this mode
38 `CHROME_SPLIT_DLL`, however it should be used very sparingly-to-not-at-all.
28 39
29 ## Details 40 ## Details
30 41
31 This forcible split is implemented by putting .lib files in either one DLL or th e other, and causing unresolved externals that result during linking to be forci bly exported from the other DLL. This works relatively cleanly for function impo rt/export, however it cannot work for data export. 42 This forcible split is implemented by putting .lib files in either one DLL or
43 the other, and causing unresolved externals that result during linking to be
44 forcibly exported from the other DLL. This works relatively cleanly for function
45 import/export, however it cannot work for data export.
32 46
33 There are relatively few instances where data exports are required across the DL L boundary. The waterfall builder http://build.chromium.org/p/chromium/waterfall ?show=Win%20Split will detect when new data exports are added, and these will ne ed to be repaired. For constants, the data can be duplicated to both DLLs, but f or writeable data, a wrapping set/get function will need to be added. 47 There are relatively few instances where data exports are required across the
48 DLL boundary. The waterfall builder
49 http://build.chromium.org/p/chromium/waterfall?show=Win%20Split will detect when
50 new data exports are added, and these will need to be repaired. For constants,
51 the data can be duplicated to both DLLs, but for writeable data, a wrapping
52 set/get function will need to be added.
34 53
35 Some more details can be found on the initial commit of the split\_link script h ttp://src.chromium.org/viewvc/chrome?revision=200049&view=revision and the assoc iated bugs: http://crbug.com/237249 http://crbug.com/237267 54 http://build.chromium.org/p/chromium/waterfall?show=Win%20Split does not exist.
55
56 Some more details can be found on the initial commit of the split_link script
57 http://src.chromium.org/viewvc/chrome?revision=200049&view=revision and the
58 associated bugs: http://crbug.com/237249 http://crbug.com/237267.
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698