On Tue, Jun 20, 2017 at 3:59 AM, Julian Seward <jsew...@acm.org> wrote: > On 20/06/17 05:58, Boris Zbarsky wrote: >> On 6/19/17 11:22 PM, Gregory Szorc wrote: >>> The decision to strip Nightly builds does not come lightly. Read 1338651 >>> comment 111 and later for the ugly backstory. >> >> It's still really confusing to me that not stripping symbols has a >> significant >> performance impact. That's not the case in any other build configuration I'm >> aware of, and is somewhat surprising from first principles for everything >> except startup performance. >> >> It really would be good to figure out what's actually going on there... > > I agree. Stripping the symbols as a solution makes no sense to me, given > that they are not expected to be loaded into the process image. > > From my scan of 1338651 it appears that we've demonstrated that the same > preprocessed source is compiled in both cases. But IIUC (and correct me if > I'm wrong), we haven't shown that either the same code is generated, nor > that there is not some different interaction with the underlying machine > for the two builds.
We have demonstrated that the command lines for linking are basically identical; there are of course differences in paths. The native Mac build was passing a static libc++ archive for linking on the command line, but we showed that didn't matter by passing the same archive in the cross-compiled case, which produced no change. We have looked at the underlying machine code. It is functionally identical; jump tables are tagged as data-in-code in one, and there are some small offset differences in jump instructions (which are due to slightly different offsets in the binaries themselves), but nothing else. We have looked at the binaries themselves (e.g. sections and so forth). They are functionally identical; there are some small differences between them which I think amount to path differences being baked into the binary. The native builds are codesigned while the cross ones are not. This too makes no difference. There is some kind of interaction with the underlying machine (see comment 104 in said bug, where the binaries perform identically on a local machine, but differently on infrastructure), but we haven't tracked that down yet. Your theories are most welcome at this point. :) -Nathan _______________________________________________ dev-platform mailing list dev-platform@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-platform