IIRC, it spends a bunch of time in the offline assembler ruby scripts. AFAIK, those scripts only depend on the LowLevelInterpreter*.asm files.
We’re talking about the offset extractor binary, which depends on most of JSC’s and WTF’s headers, and the asm.rb build, which depends on:
- all of the offlineasm ruby scripts
- all of the *.asm files
- everything that the offset extractor binary depended on (so most of JSC’s and WTF’s headers).
So we should only need to run it if those files have changed. Or, for the assembly generation half, if there is also a new object offsets binary (from LLIntOffsetsExtractor.cpp).
We’re talking about the compiling of the offset extractor binary and the assembly generation half.
-Filip
Cheers,
Keith
Sorry, I should have asked: does it even rebuild when you change nothing?
That llint step really does depend on most headers in WTF and JSC, so if you change any of them then I would expect a rebuild of that file. It may be that the right solution is to make that step faster and to make it possible to run it in parallel to other steps.
-Filip
I don’t know.
Sent from my iPhone
Which offline assembler build step are you referring to?
The one that is the “Offline Assembler” target in Xcode, which runs this command:
ruby JavaScriptCore/offlineasm/asm.rb JavaScriptCore/llint/LowLevelInterpreter.asm "${BUILT_PRODUCTS_DIR}/JSCLLIntOffsetsExtractor” LLIntAssembly.h
For a “nothing rebuild” of all of WebKit and all of Safari for iOS on my iMac, it takes about 10 seconds out of a 30 second total “build" time.
Looking more carefully at the build log now, it seems that recompiling LLIntOffsetExtractor.cpp is also taking multiple seconds. Not executing generate_offset_extractor.rb, but compiling the output.
Does every build that you do rebuild LLIntOffsetExtractor.cpp? Including a clean build?
-Filip
_______________________________________________
webkit-dev mailing list
webkit-dev@lists.webkit.orghttps://lists.webkit.org/mailman/listinfo/webkit-dev