Bug 183263

Summary: Meta-program setupArguments and callOperation
Product: WebKit Reporter: Keith Miller <keith_miller>
Component: New BugsAssignee: Keith Miller <keith_miller>
Status: RESOLVED FIXED    
Severity: Normal CC: benjamin, cdumez, chris.reid, cmarcelo, dbates, ews-watchlist, fpizlo, guijemont, jfbastien, mark.lam, mcatanzaro, msaboff, ross.kirsling, saam, webkit-bug-importer, ysuzuki
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
See Also: https://bugs.webkit.org/show_bug.cgi?id=183464
https://bugs.webkit.org/show_bug.cgi?id=183673
Attachments:
Description Flags
WIP
none
WIP needs 32-bit and Baseline
none
Patch
none
Patch
none
Patch
none
Patch
none
Patch
none
Archive of layout-test-results from ews116 for mac-sierra
none
Patch
none
Baseline disassembly (WinCairo 64-bit Debug) none

Keith Miller
Reported 2018-03-01 14:27:32 PST
Meta-program setupArguments and callOperation
Attachments
WIP (68.25 KB, patch)
2018-03-01 14:28 PST, Keith Miller
no flags
WIP needs 32-bit and Baseline (179.70 KB, patch)
2018-03-02 14:20 PST, Keith Miller
no flags
Patch (352.14 KB, patch)
2018-03-07 14:13 PST, Keith Miller
no flags
Patch (352.46 KB, patch)
2018-03-07 14:23 PST, Keith Miller
no flags
Patch (352.23 KB, patch)
2018-03-07 14:37 PST, Keith Miller
no flags
Patch (352.25 KB, patch)
2018-03-07 14:56 PST, Keith Miller
no flags
Patch (352.29 KB, patch)
2018-03-07 16:05 PST, Keith Miller
no flags
Archive of layout-test-results from ews116 for mac-sierra (3.58 MB, application/zip)
2018-03-07 18:01 PST, EWS Watchlist
no flags
Patch (352.30 KB, patch)
2018-03-07 18:24 PST, Keith Miller
no flags
Baseline disassembly (WinCairo 64-bit Debug) (20.55 KB, text/plain)
2018-03-13 13:37 PDT, Ross Kirsling
no flags
Keith Miller
Comment 1 2018-03-01 14:28:01 PST
Keith Miller
Comment 2 2018-03-02 14:20:07 PST
Created attachment 334929 [details] WIP needs 32-bit and Baseline
Filip Pizlo
Comment 3 2018-03-02 14:51:04 PST
Comment on attachment 334929 [details] WIP needs 32-bit and Baseline looks pretty good so far
Saam Barati
Comment 4 2018-03-02 17:37:14 PST
Comment on attachment 334929 [details] WIP needs 32-bit and Baseline So much red 👌🏽
JF Bastien
Comment 5 2018-03-02 17:42:58 PST
Comment on attachment 334929 [details] WIP needs 32-bit and Baseline View in context: https://bugs.webkit.org/attachment.cgi?id=334929&action=review I like how much red is in the patch. > Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h:937 > + callOperation(OperationType operation, ResultRegType result, Args... args) Args&&... args and below std::forward<Args>(args)... > Source/JavaScriptCore/jit/CCallHelpers.h:413 > + || std::is_convertible<Arg, TrustedImm>::value> // We have this since Speculative JIT has it's own implementation of TrustedImmPtr "its" > Source/JavaScriptCore/jit/FPRInfo.h:309 > +// We using this hack for getting the FPRInfo from the FPRReg type in templates because our code is bad and we should feel bad.. We using? > Source/WTF/wtf/FunctionTraits.h:36 > +struct FunctionTraits<Result(Args...)> { mlam and I were just checking out std::result_of versus std::invoke_result yesterday. Context turns out to be http://wg21.link/P0604
Keith Miller
Comment 6 2018-03-07 14:13:03 PST
Keith Miller
Comment 7 2018-03-07 14:23:29 PST
Filip Pizlo
Comment 8 2018-03-07 14:28:25 PST
Comment on attachment 335220 [details] Patch rs=me
Keith Miller
Comment 9 2018-03-07 14:37:24 PST
Keith Miller
Comment 10 2018-03-07 14:56:09 PST
Keith Miller
Comment 11 2018-03-07 15:00:47 PST
Just as a heads up this is definitely going to break the ARM32 JITs.
Keith Miller
Comment 12 2018-03-07 15:02:11 PST
(In reply to Keith Miller from comment #11) > Just as a heads up this is definitely going to break the ARM32 JITs. Also, probably MIPS.
Saam Barati
Comment 13 2018-03-07 15:49:17 PST
Comment on attachment 335227 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=335227&action=review LGTM too > Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:2248 > + // FIXME: This is kinda a hack since we don't use xmm7 as a temp. Bug #? > Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:4317 > +// m_jit.probe([=] (Probe::Context& context) { Remove > Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:10145 > + operationSwitchString, string, size_t(data->switchTableIndex), string); Static cast > Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:10182 > + callOperation(operationSwitchString, string, size_t(data->switchTableIndex), string); Ditto > Source/JavaScriptCore/jit/FPRInfo.h:309 > +// We using this hack for getting the FPRInfo from the FPRReg type in templates because our code is bad and we should feel bad.. Is this actually true? Doesn’t seem like this does anything > Source/JavaScriptCore/jit/FPRInfo.h:310 > +constexpr FPRInfo toInfoFromReg(FPRReg) { return FPRInfo(); } Also, “we using” in above comment > Source/JavaScriptCore/jit/GPRInfo.h:811 > +// We using this hack for getting the GPRInfo from the GPRReg type in templates because our code is bad and we should feel bad.. Ditto
Michael Catanzaro
Comment 14 2018-03-07 16:03:14 PST
Thanks for the heads-up!
Keith Miller
Comment 15 2018-03-07 16:05:31 PST
Keith Miller
Comment 16 2018-03-07 16:18:30 PST
Comment on attachment 335227 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=335227&action=review uuse >> Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:2248 >> + // FIXME: This is kinda a hack since we don't use xmm7 as a temp. > > Bug #? I'm gonna make this not a FIXME since I don't think there's an alternative... >> Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:4317 >> +// m_jit.probe([=] (Probe::Context& context) { > > Remove Fixed. >> Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:10145 >> + operationSwitchString, string, size_t(data->switchTableIndex), string); > > Static cast changed. >> Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:10182 >> + callOperation(operationSwitchString, string, size_t(data->switchTableIndex), string); > > Ditto changed. >> Source/JavaScriptCore/jit/FPRInfo.h:309 >> +// We using this hack for getting the FPRInfo from the FPRReg type in templates because our code is bad and we should feel bad.. > > Is this actually true? Doesn’t seem like this does anything What do you mean? If you have a function: template<typename RegType> void foo(RegType reg) { using RegInfo = decltype(toInfoFromReg(reg)); { How do you get the RegType's Info class without something like this? >> Source/JavaScriptCore/jit/FPRInfo.h:310 >> +constexpr FPRInfo toInfoFromReg(FPRReg) { return FPRInfo(); } > > Also, “we using” in above comment Fixed. >> Source/JavaScriptCore/jit/GPRInfo.h:811 >> +// We using this hack for getting the GPRInfo from the GPRReg type in templates because our code is bad and we should feel bad.. > > Ditto Fixed.
EWS Watchlist
Comment 17 2018-03-07 18:01:54 PST
Comment on attachment 335236 [details] Patch Attachment 335236 [details] did not pass mac-debug-ews (mac): Output: http://webkit-queues.webkit.org/results/6847337 New failing tests: imported/w3c/web-platform-tests/dom/nodes/Document-characterSet-normalization.html js/dom/dfg-custom-getter-throw-inlined.html js/dom/dfg-inline-resolve.html fast/workers/worker-cloneport.html imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-CBC.worker.html js/dom/dfg-custom-getter-throw.html
EWS Watchlist
Comment 18 2018-03-07 18:01:55 PST
Created attachment 335247 [details] Archive of layout-test-results from ews116 for mac-sierra The attached test failures were seen while running run-webkit-tests on the mac-debug-ews. Bot: ews116 Port: mac-sierra Platform: Mac OS X 10.12.6
Keith Miller
Comment 19 2018-03-07 18:23:53 PST
Windows looks like it failed to build for unrelated reasons (built through JSC). Fixed an issue where I wasn't setting vm.topCallFrame before calling into DOM getters (I guess they don't expect to need to set topCallFrame).
Keith Miller
Comment 20 2018-03-07 18:24:08 PST
Keith Miller
Comment 21 2018-03-07 18:27:03 PST
Radar WebKit Bug Importer
Comment 22 2018-03-07 18:28:27 PST
Yusuke Suzuki
Comment 23 2018-03-08 02:54:38 PST
Really awesome!
Ross Kirsling
Comment 24 2018-03-12 14:15:25 PDT
The Windows build break from this patch was fixed in https://bugs.webkit.org/show_bug.cgi?id=183450, but this only fixed compile-time errors and not runtime ones. Specifically, WinCairo (and perhaps AppleWin too) crashes when (e.g.) trying to launch Web Inspector as of this revision. The first issue is here, where the array is supposedly uninitialized: https://github.com/WebKit/webkit/blob/master/Source/JavaScriptCore/jit/CCallHelpers.h#L262 A compiler warning for this was squelched in r229424/r229432 but I don't think that helps at all(?) because there's still a runtime error either way. If I add braces to the std::array declaration, the next error is here: https://github.com/WebKit/webkit/blob/master/Source/JavaScriptCore/interpreter/Register.h#L203 With the following call stack: > JavaScriptCore.dll!JSC::Register::pointer() Line 203 > JavaScriptCore.dll!JSC::ExecState::callee() Line 108 > JavaScriptCore.dll!JSC::ExecState::vm() Line 129 > JavaScriptCore.dll!operationOptimize(JSC::ExecState * exec, unsigned int bytecodeIndex) Line 1302 > [External Code]
Keith Miller
Comment 25 2018-03-12 15:01:04 PDT
(In reply to Ross Kirsling from comment #24) > The Windows build break from this patch was fixed in > https://bugs.webkit.org/show_bug.cgi?id=183450, but this only fixed > compile-time errors and not runtime ones. > > Specifically, WinCairo (and perhaps AppleWin too) crashes when (e.g.) trying > to launch Web Inspector as of this revision. AFAICT, the AppleWin bots don't have any new failing tests from this patch. > > The first issue is here, where the array is supposedly uninitialized: > https://github.com/WebKit/webkit/blob/master/Source/JavaScriptCore/jit/ > CCallHelpers.h#L262 > A compiler warning for this was squelched in r229424/r229432 but I don't > think that helps at all(?) because there's still a runtime error either way. Oh? I thought all of the following were equivalent in C++ (at least since C++11): T v; T v(); T v { }; If so, all that would happen is that the std::array would contain indeterminate values until they were initialized in the loop below. Maybe I'm wrong though? > > If I add braces to the std::array declaration, the next error is here: > https://github.com/WebKit/webkit/blob/master/Source/JavaScriptCore/ > interpreter/Register.h#L203 > With the following call stack: > > JavaScriptCore.dll!JSC::Register::pointer() Line 203 > > JavaScriptCore.dll!JSC::ExecState::callee() Line 108 > > JavaScriptCore.dll!JSC::ExecState::vm() Line 129 > > JavaScriptCore.dll!operationOptimize(JSC::ExecState * exec, unsigned int bytecodeIndex) Line 1302 > > [External Code] Seems weird that there would be a crash there since that's just a cast. Is this from a release build?
Ross Kirsling
Comment 26 2018-03-12 15:20:00 PDT
(In reply to Keith Miller from comment #25) > (In reply to Ross Kirsling from comment #24) > > The Windows build break from this patch was fixed in > > https://bugs.webkit.org/show_bug.cgi?id=183450, but this only fixed > > compile-time errors and not runtime ones. > > > > Specifically, WinCairo (and perhaps AppleWin too) crashes when (e.g.) trying > > to launch Web Inspector as of this revision. > > AFAICT, the AppleWin bots don't have any new failing tests from this patch. Damn, I was hoping our destinies would align. :P > > > > The first issue is here, where the array is supposedly uninitialized: > > https://github.com/WebKit/webkit/blob/master/Source/JavaScriptCore/jit/ > > CCallHelpers.h#L262 > > A compiler warning for this was squelched in r229424/r229432 but I don't > > think that helps at all(?) because there's still a runtime error either way. > > Oh? I thought all of the following were equivalent in C++ (at least since > C++11): > > T v; > T v(); > T v { }; > > If so, all that would happen is that the std::array would contain > indeterminate values until they were initialized in the loop below. Maybe > I'm wrong though? While `T v();` would be taken as a function declaration (the so-called "most vexing parse"), my understanding too is that adding braces shouldn't help, so I was surprised when they did. Perhaps this is disguising a different issue -- is it problematic that TargetSize is 0? > > > > If I add braces to the std::array declaration, the next error is here: > > https://github.com/WebKit/webkit/blob/master/Source/JavaScriptCore/ > > interpreter/Register.h#L203 > > With the following call stack: > > > JavaScriptCore.dll!JSC::Register::pointer() Line 203 > > > JavaScriptCore.dll!JSC::ExecState::callee() Line 108 > > > JavaScriptCore.dll!JSC::ExecState::vm() Line 129 > > > JavaScriptCore.dll!operationOptimize(JSC::ExecState * exec, unsigned int bytecodeIndex) Line 1302 > > > [External Code] > > Seems weird that there would be a crash there since that's just a cast. Is > this from a release build? Whoops, I stupidly forgot to say what the error is -- that `this` is null. It's from a Debug build, as I was getting awfully confused trying to debug in Release mode, hehe.
Christopher Reid
Comment 27 2018-03-12 16:44:50 PDT
(In reply to Ross Kirsling from comment #26) > (In reply to Keith Miller from comment #25) > > (In reply to Ross Kirsling from comment #24) > > > The Windows build break from this patch was fixed in > > > https://bugs.webkit.org/show_bug.cgi?id=183450, but this only fixed > > > compile-time errors and not runtime ones. > > > > > > Specifically, WinCairo (and perhaps AppleWin too) crashes when (e.g.) trying > > > to launch Web Inspector as of this revision. > > > > AFAICT, the AppleWin bots don't have any new failing tests from this patch. > > Damn, I was hoping our destinies would align. :P It looks like AppleWin is at least affected by the same uninitialized Run-time check failure. I downloaded the latest AppleWin artifacts (https://s3-us-west-2.amazonaws.com/archives.webkit.org/win-i386-debug/229557.zip) and tested a simple looped function call. function foo(a){ a += 1; }; for (i=0; i<1000; i++) foo(1); print('done'); 'done' is not getting printed unless I lower the maximum iterations to around 10. I attached a debugger to confirm that it was hitting that same uninitialized Run-time check failure. I'm not sure if I can easily check to see if AppleWin hitting that null crash too without getting a build going.
Keith Miller
Comment 28 2018-03-12 19:28:23 PDT
(In reply to Christopher Reid from comment #27) > (In reply to Ross Kirsling from comment #26) > > (In reply to Keith Miller from comment #25) > > > (In reply to Ross Kirsling from comment #24) > > > > The Windows build break from this patch was fixed in > > > > https://bugs.webkit.org/show_bug.cgi?id=183450, but this only fixed > > > > compile-time errors and not runtime ones. > > > > > > > > Specifically, WinCairo (and perhaps AppleWin too) crashes when (e.g.) trying > > > > to launch Web Inspector as of this revision. > > > > > > AFAICT, the AppleWin bots don't have any new failing tests from this patch. > > > > Damn, I was hoping our destinies would align. :P > > It looks like AppleWin is at least affected by the same uninitialized > Run-time check failure. I downloaded the latest AppleWin artifacts > (https://s3-us-west-2.amazonaws.com/archives.webkit.org/win-i386-debug/ > 229557.zip) and tested a simple looped function call. > > function foo(a){ > a += 1; > }; > for (i=0; i<1000; i++) > foo(1); > print('done'); > > 'done' is not getting printed unless I lower the maximum iterations to > around 10. I attached a debugger to confirm that it was hitting that same > uninitialized Run-time check failure. > > I'm not sure if I can easily check to see if AppleWin hitting that null > crash too without getting a build going. Interesting... It's weird that the bots are not showing it? https://build.webkit.org/builders/Apple%20Win%207%20Release%20%28Tests%29?numbuilds=200 doesn't show any new regressions after the patch landed. (In reply to Ross Kirsling from comment #26) > (In reply to Keith Miller from comment #25) > > (In reply to Ross Kirsling from comment #24) > > > The Windows build break from this patch was fixed in > > > https://bugs.webkit.org/show_bug.cgi?id=183450, but this only fixed > > > compile-time errors and not runtime ones. > > > > > > Specifically, WinCairo (and perhaps AppleWin too) crashes when (e.g.) trying > > > to launch Web Inspector as of this revision. > > > > AFAICT, the AppleWin bots don't have any new failing tests from this patch. > > Damn, I was hoping our destinies would align. :P > > > > > > > The first issue is here, where the array is supposedly uninitialized: > > > https://github.com/WebKit/webkit/blob/master/Source/JavaScriptCore/jit/ > > > CCallHelpers.h#L262 > > > A compiler warning for this was squelched in r229424/r229432 but I don't > > > think that helps at all(?) because there's still a runtime error either way. > > > > Oh? I thought all of the following were equivalent in C++ (at least since > > C++11): > > > > T v; > > T v(); > > T v { }; > > > > If so, all that would happen is that the std::array would contain > > indeterminate values until they were initialized in the loop below. Maybe > > I'm wrong though? > > While `T v();` would be taken as a function declaration (the so-called "most > vexing parse"), my understanding too is that adding braces shouldn't help, > so I was surprised when they did. Perhaps this is disguising a different > issue -- is it problematic that TargetSize is 0? Right, C++ is such a beautiful language... I don't think it should be a problem if TargetSize is 0. We only ever loop on the iterator or indexed on the size of the array. If the size of the std::array is 0 then begin() == end() so the loops should never run. Maybe there's some weird MSVC bug? I don't have a windows machine right now but I might be able to find one and take a look. If you could run: function foo(a){ a += 1; }; for (i=0; i<1000; i++) foo(1); print('done'); again in jsc. With `--dumpDisassembly=1 --useDFGJIT=0` and send me the Baseline disassembly that might help me fix the issue too.
Ross Kirsling
Comment 29 2018-03-13 13:37:34 PDT
Created attachment 335721 [details] Baseline disassembly (WinCairo 64-bit Debug) Here's the disassembly with the options you requested. I noticed that (on my machine at least) the crash occurs when the loop has 485+ iterations, but not with less than that.
Christopher Reid
Comment 30 2018-03-13 14:39:27 PDT
(In reply to Keith Miller from comment #28) > (In reply to Christopher Reid from comment #27) > > (In reply to Ross Kirsling from comment #26) > > > (In reply to Keith Miller from comment #25) > > > > (In reply to Ross Kirsling from comment #24) > > > > > The Windows build break from this patch was fixed in > > > > > https://bugs.webkit.org/show_bug.cgi?id=183450, but this only fixed > > > > > compile-time errors and not runtime ones. > > > > > > > > > > Specifically, WinCairo (and perhaps AppleWin too) crashes when (e.g.) trying > > > > > to launch Web Inspector as of this revision. > > > > > > > > AFAICT, the AppleWin bots don't have any new failing tests from this patch. > > > > > > Damn, I was hoping our destinies would align. :P > > > > It looks like AppleWin is at least affected by the same uninitialized > > Run-time check failure. I downloaded the latest AppleWin artifacts > > (https://s3-us-west-2.amazonaws.com/archives.webkit.org/win-i386-debug/ > > 229557.zip) and tested a simple looped function call. > > > > function foo(a){ > > a += 1; > > }; > > for (i=0; i<1000; i++) > > foo(1); > > print('done'); > > > > 'done' is not getting printed unless I lower the maximum iterations to > > around 10. I attached a debugger to confirm that it was hitting that same > > uninitialized Run-time check failure. > > > > I'm not sure if I can easily check to see if AppleWin hitting that null > > crash too without getting a build going. > > Interesting... It's weird that the bots are not showing it? > https://build.webkit.org/builders/ > Apple%20Win%207%20Release%20%28Tests%29?numbuilds=200 doesn't show any new > regressions after the patch landed. Ah, it looks like the RTC failure is only happening on debug builds and AppleWin tests are running on release. The crash looks Wincario specific as it crashes in Wincairo release but not on AppleWin release. I'm not sure what could be causing that, but it's starting to look like a separate issue. I took a look at the MSVC disassembly https://godbolt.org/g/FMCe9b. For whatever reason MSVC is initializing the std::array to null causing _RTC_UninitUse to get hit. With braces, the _RTC_UninitUse call doesn't get compiled in. Adding braces is looking like the best fix here.
Ross Kirsling
Comment 31 2018-03-13 14:50:25 PDT
(In reply to Christopher Reid from comment #30) > (In reply to Keith Miller from comment #28) > > (In reply to Christopher Reid from comment #27) > > > (In reply to Ross Kirsling from comment #26) > > > > (In reply to Keith Miller from comment #25) > > > > > (In reply to Ross Kirsling from comment #24) > > > > > > The Windows build break from this patch was fixed in > > > > > > https://bugs.webkit.org/show_bug.cgi?id=183450, but this only fixed > > > > > > compile-time errors and not runtime ones. > > > > > > > > > > > > Specifically, WinCairo (and perhaps AppleWin too) crashes when (e.g.) trying > > > > > > to launch Web Inspector as of this revision. > > > > > > > > > > AFAICT, the AppleWin bots don't have any new failing tests from this patch. > > > > > > > > Damn, I was hoping our destinies would align. :P > > > > > > It looks like AppleWin is at least affected by the same uninitialized > > > Run-time check failure. I downloaded the latest AppleWin artifacts > > > (https://s3-us-west-2.amazonaws.com/archives.webkit.org/win-i386-debug/ > > > 229557.zip) and tested a simple looped function call. > > > > > > function foo(a){ > > > a += 1; > > > }; > > > for (i=0; i<1000; i++) > > > foo(1); > > > print('done'); > > > > > > 'done' is not getting printed unless I lower the maximum iterations to > > > around 10. I attached a debugger to confirm that it was hitting that same > > > uninitialized Run-time check failure. > > > > > > I'm not sure if I can easily check to see if AppleWin hitting that null > > > crash too without getting a build going. > > > > Interesting... It's weird that the bots are not showing it? > > https://build.webkit.org/builders/ > > Apple%20Win%207%20Release%20%28Tests%29?numbuilds=200 doesn't show any new > > regressions after the patch landed. > > Ah, it looks like the RTC failure is only happening on debug builds and > AppleWin tests are running on release. The crash looks Wincario specific as > it crashes in Wincairo release but not on AppleWin release. I'm not sure > what could be causing that, but it's starting to look like a separate issue. > > I took a look at the MSVC disassembly https://godbolt.org/g/FMCe9b. For > whatever reason MSVC is initializing the std::array to null causing > _RTC_UninitUse to get hit. With braces, the _RTC_UninitUse call doesn't get > compiled in. Adding braces is looking like the best fix here. Seems like perhaps that's the only issue with the example script? But on Web Inspector launch, we still end up with no VM (?) here: https://github.com/WebKit/webkit/blob/master/Source/JavaScriptCore/jit/JITOperations.cpp#L1302
Ross Kirsling
Comment 32 2018-03-14 17:17:19 PDT
(In reply to Ross Kirsling from comment #31) > ... on Web Inspector launch, we still end up with no VM (?) here: > https://github.com/WebKit/webkit/blob/master/Source/JavaScriptCore/jit/ > JITOperations.cpp#L1302 I'm still looking into this, but it appears that `callOperation(operationOptimize, m_bytecodeOffset);` @ JIT::emitEnterOptimizationCheck / JIT::emitSlow_op_loop_hint used to take us into: JIT::appendCallWithExceptionCheckAndSlowPathReturnType JIT::appendCallWithSlowPathReturnType MacroAssemblerX86_64::callWithSlowPathReturnType These functions are all #if'ed for 64-bit Windows and were not removed in the patch, yet they no longer appear to be used anywhere in JSC -- after this patch, we enter the non-SPRT call chain instead. Perhaps this is the cause of the issue?
Mark Lam
Comment 33 2018-03-15 00:19:44 PDT
(In reply to Ross Kirsling from comment #32) > (In reply to Ross Kirsling from comment #31) > > ... on Web Inspector launch, we still end up with no VM (?) here: > > https://github.com/WebKit/webkit/blob/master/Source/JavaScriptCore/jit/ > > JITOperations.cpp#L1302 > > I'm still looking into this, but it appears that > `callOperation(operationOptimize, m_bytecodeOffset);` @ > JIT::emitEnterOptimizationCheck / JIT::emitSlow_op_loop_hint used to take us > into: > JIT::appendCallWithExceptionCheckAndSlowPathReturnType > JIT::appendCallWithSlowPathReturnType > MacroAssemblerX86_64::callWithSlowPathReturnType > > These functions are all #if'ed for 64-bit Windows and were not removed in > the patch, yet they no longer appear to be used anywhere in JSC -- after > this patch, we enter the non-SPRT call chain instead. Perhaps this is the > cause of the issue? Yes, I think this is a likely cause of crashes on Windows. I just happened to discover this independently while analyzing the code. I filed https://bugs.webkit.org/show_bug.cgi?id=183655 to track this.
Ross Kirsling
Comment 34 2018-03-15 13:23:21 PDT
(In reply to Mark Lam from comment #33) > Yes, I think this is a likely cause of crashes on Windows. I just happened > to discover this independently while analyzing the code. I filed > https://bugs.webkit.org/show_bug.cgi?id=183655 to track this. Great! I've put up a patch for the braces issue in https://bugs.webkit.org/show_bug.cgi?id=183673.
Note You need to log in before you can comment on or make changes to this bug.