Change the call out to be an unexpected call (using silent spill/fill mechanisms), add a structure check & compact load to the JIT code, and add patching mechanisms. Since DFGOperations may want to be be implemented in asm, make these symbols be extern "C". Add an asm wrapper to pass the return address to the optimizing get-by-id operation, so that it can look up its StructureStubInfo.
Created attachment 94936 [details] The patch
Attachment 94936 [details] did not pass style-queue: Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'Source/JavaScriptCore/ChangeLog', u'Source..." exit_code: 1 Source/JavaScriptCore/dfg/DFGOperations.cpp:36: Alphabetical sorting problem. [build/include_order] [4] Source/JavaScriptCore/dfg/DFGOperations.cpp:39: Extra space before ( in function call [whitespace/parens] [4] Source/JavaScriptCore/dfg/DFGRepatch.h:35: The parameter name "exec" adds no information, so it should be removed. [readability/parameter_name] [5] Source/JavaScriptCore/dfg/DFGRepatch.h:35: The parameter name "slot" adds no information, so it should be removed. [readability/parameter_name] [5] Source/JavaScriptCore/dfg/DFGRepatch.h:35: The parameter name "stubInfo" adds no information, so it should be removed. [readability/parameter_name] [5] Total errors found: 5 in 11 files If any of these errors are false positives, please file a bug against check-webkit-style.
Comment on attachment 94936 [details] The patch View in context: https://bugs.webkit.org/attachment.cgi?id=94936&action=review Please fix style bot issues and change C-style casts to C++-style casts. r=me > Source/JavaScriptCore/dfg/DFGRepatch.cpp:46 > + // Only optimize once! I still think it's crazy that all of this stuff is called "repatch" even though it can only happen once. This comment fills me with sad irony.
fixed in r87431