[webkit-reviews] review denied: [Bug 131515] [ftlopt] Inlining native functions into the JavaScript in the FTL : [Attachment 232451] Native runtime library inlining in FTL for ftlopt branch

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Tue Jun 3 21:47:32 PDT 2014


Filip Pizlo <fpizlo at apple.com> has denied  review:
Bug 131515: [ftlopt] Inlining native functions into the JavaScript in the FTL
https://bugs.webkit.org/show_bug.cgi?id=131515

Attachment 232451: Native runtime library inlining in FTL for ftlopt branch
https://bugs.webkit.org/attachment.cgi?id=232451&action=review

------- Additional Comments from Filip Pizlo <fpizlo at apple.com>
View in context: https://bugs.webkit.org/attachment.cgi?id=232451&action=review


> Source/JavaScriptCore/ChangeLog:23
> +	   Rather than loading Runtime.symtbl at runtime FTLState.cpp now
includes a file 
> +	   InlineRuntimeSymbolTable.h which statically builds the symbol table
hash table.  
> +	   Currently build-symbol-table-index.py updates this file from the 
> +	   contents of tested-symbols.symlst when done building as a matter of
convenience.  
> +	   However, in order to include the new contents of the file in the
build
> +	   you'd need to build twice.  This will be fixed in future versions.

We shouldn't do this.  Sorry, I hadn't realized the full effect of this.  Every
time someone builds, they will get a different InlineRuntimeSymbolTable.h and
it will show up in their diff.	This pretty much breaks the typical WebKit
development workflow.  Things that are checked into the repository shouldn't be
automagically mutated by the build system.  Can you remove this feature and
post a new patch?

> Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:3677
> +#if CPU(X86_64)
> +	       "/Resources/Runtime/x86_64/",
> +#elif CPU(ARM64) 
> +	       "/Resources/Runtime/arm64/",
> +#else
> +#error "Unrecognized Architecture"
> +#endif

You should find a way of saying this that doesn't involve preprocessor #if's. 
Notice that we have isX86() and isARM64() inline functions in
AbstractMacroAssembler.h, and the FTL tends to use those whenever possible.

> Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:3733
> +#if ASSERT_DISABLED
> +		   llvm->RemoveFunctionAttr(function,
LLVMStackProtectAttribute);
> +#endif // ASSERT_DISABLED

Change this to just "if (ASSERT_DISABLED) llvm->RemoveFunctionAttr(function,
LLVMStackProtectAttribute);" (on two lines, not one, of course).  That's the
style elsewhere in this file.

> Source/JavaScriptCore/ftl/FTLState.cpp:43
> +#define LINE_SIZE 500

No need to use #define.  Use "static const unsigned lineSize = 500".  Also, I'm
not sure where you're using this?


More information about the webkit-reviews mailing list