RESOLVED FIXED 210176
[JSC][32-bits] Build failure after r259676 (Not using strict mode within ClassDeclaration statement)
https://bugs.webkit.org/show_bug.cgi?id=210176
Summary [JSC][32-bits] Build failure after r259676 (Not using strict mode within Clas...
Pablo Saavedra
Reported 2020-04-08 00:42:22 PDT
Buildjob: https://build.webkit.org/builders/JSCOnly%20Linux%20ARMv7%20Thumb2%20Release/builds/11260 ``` Category None Changed by tzagallo@apple.com Changed at Tue 07 Apr 2020 15:32:22 Repository /var/svn/webkit Branch trunk Revision 259676 Comments Not using strict mode within ClassDeclaration statement https://bugs.webkit.org/show_bug.cgi?id=205578 <rdar://problem/58194589> Reviewed by Yusuke Suzuki. ``` Errors: ``` 6303-FAILED: Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/dfg/DFGSpeculativeJIT32_64.cpp.o 6304-/usr/bin/ccache /home/bot/toolchain_env_wandboard-mesa-wpe-nightly/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-g++ -march=armv7-a -mthumb -mfpu=neon -mfloat-abi=hard -fstack-protector-strong -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security --sysroot=/home/bot/toolchain_env_wandboard-mesa-wpe-nightly/sysroots/armv7at2hf-neon-poky-linux-gnueabi --sysroot=/home/bot/toolchain_env_wandboard-mesa-wpe-nightly/sysroots/armv7at2hf-neon-poky-linux-gnueabi -DBUILDING_JavaScriptCore -DBUILDING_WITH_CMAKE=1 -DBUILDING_WPE__=1 -DGETTEXT_PACKAGE=\"WPE\" -DHAVE_CONFIG_H=1 -DJSC_COMPILATION -DJSC_GLIB_API_ENABLED -DPKGLIBDIR=\"/usr/local/lib/wpe-webkit-1.0\" -DSVN_REVISION=\"r259680\" -DU_SHOW_CPLUSPLUS_API=0 -IDerivedSources/ForwardingHeaders -I. -I../../Source/JavaScriptCore -I../../Source/JavaScriptCore/API -I../../Source/JavaScriptCore/assembler -I../../Source/JavaScriptCore/b3 -I../../Source/JavaScriptCore/b3/air -I../../Source/JavaScriptCore/bindings -I../../Source/JavaScriptCore/builtins -I../../Source/JavaScriptCore/bytecode -I../../Source/JavaScriptCore/bytecompiler -I../../Source/JavaScriptCore/dfg -I../../Source/JavaScriptCore/disassembler -I../../Source/JavaScriptCore/disassembler/ARM64 -I../../Source/JavaScriptCore/disassembler/udis86 -I../../Source/JavaScriptCore/domjit -I../../Source/JavaScriptCore/ftl -I../../Source/JavaScriptCore/heap -I../../Source/JavaScriptCore/debugger -I../../Source/JavaScriptCore/inspector -I../../Source/JavaScriptCore/inspector/agents -I../../Source/JavaScriptCore/inspector/augmentable -I../../Source/JavaScriptCore/inspector/remote -I../../Source/JavaScriptCore/interpreter -I../../Source/JavaScriptCore/jit -I../../Source/JavaScriptCore/llint -I../../Source/JavaScriptCore/parser -I../../Source/JavaScriptCore/profiler -I../../Source/JavaScriptCore/runtime -I../../Source/JavaScriptCore/tools -I../../Source/JavaScriptCore/wasm -I../../Source/JavaScriptCore/wasm/js -I../../Source/JavaScriptCore/yarr -IDerivedSources/JavaScriptCore -IDerivedSources/JavaScriptCore/inspector -IDerivedSources/JavaScriptCore/runtime -IDerivedSources/JavaScriptCore/yarr -I../../Source/ThirdParty/capstone/Source/include -IDerivedSources/ForwardingHeaders/JavaScriptCore/glib -IDerivedSources/JavaScriptCore/javascriptcorewpe/jsc -I../../Source/JavaScriptCore/API/glib -IDerivedSources -I../../Source/ThirdParty -isystem /home/bot/toolchain_env_wandboard-mesa-wpe-nightly/sysroots/armv7at2hf-neon-poky-linux-gnueabi/usr/include/glib-2.0 -isystem /home/bot/toolchain_env_wandboard-mesa-wpe-nightly/sysroots/armv7at2hf-neon-poky-linux-gnueabi/usr/lib/glib-2.0/include -fdiagnostics-color=always -Wextra -Wall -Wno-expansion-to-defined -Wno-noexcept-type -Wno-psabi -Wno-maybe-uninitialized -Wwrite-strings -Wundef -Wpointer-arith -Wmissing-format-attribute -Wformat-security -Wcast-align -O2 -pipe -g -feliminate-unused-debug-types -fno-strict-aliasing -fno-exceptions -fno-rtti -O3 -DNDEBUG -fPIC -ffp-contract=off -std=c++17 -MD -MT Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/dfg/DFGSpeculativeJIT32_64.cpp.o -MF Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/dfg/DFGSpeculativeJIT32_64.cpp.o.d -o Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/dfg/DFGSpeculativeJIT32_64.cpp.o -c ../../Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp 6305-../../Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp: In member function ‘void JSC::DFG::SpeculativeJIT::compileContiguousPutByVal(JSC::DFG::Node*, BaseOperandType&, PropertyOperandType&, ValueOperandType&, JSC::GPRReg, TagType)’: 6306:../../Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:1787:23: error: ‘class JSC::DFG::JITCompiler’ has no member named ‘isStrictModeFor’ 6307- 1787 | m_jit.isStrictModeFor(node->origin.semantic) ? operationPutByValDirectBeyondArrayBoundsStrict : operationPutByValDirectBeyondArrayBoundsNonStrict, 6308- | ^~~~~~~~~~~~~~~ 6309:../../Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:1792:23: error: ‘class JSC::DFG::JITCompiler’ has no member named ‘isStrictModeFor’ 6310- 1792 | m_jit.isStrictModeFor(node->origin.semantic) ? operationPutByValBeyondArrayBoundsStrict : operationPutByValBeyondArrayBoundsNonStrict, 6311- | ^~~~~~~~~~~~~~~ 6312-../../Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp: In member function ‘void JSC::DFG::SpeculativeJIT::compile(JSC::DFG::Node*)’: 6313:../../Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:2632:37: error: ‘class JSC::DFG::JITCompiler’ has no member named ‘isStrictModeFor’ 6314- 2632 | callOperation(m_jit.isStrictModeFor(node->origin.semantic) ? operationPutByValDirectCellStrict : operationPutByValDirectCellNonStrict, TrustedImmPtr::weakPointer(m_graph, m_graph.globalObjectFor(node->origin.semantic)), baseGPR, propertyRegs, valueRegs); 6315- | ^~~~~~~~~~~~~~~ 6316:../../Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:2634:37: error: ‘class JSC::DFG::JITCompiler’ has no member named ‘isStrictModeFor’ 6317- 2634 | callOperation(m_jit.isStrictModeFor(node->origin.semantic) ? operationPutByValCellStrict : operationPutByValCellNonStrict, TrustedImmPtr::weakPointer(m_graph, m_graph.globalObjectFor(node->origin.semantic)), baseGPR, propertyRegs, valueRegs); 6318- | ^~~~~~~~~~~~~~~ 6319:../../Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:2745:31: error: ‘class JSC::DFG::JITCompiler’ has no member named ‘isStrictModeFor’ 6320- 2745 | m_jit.isStrictModeFor(node->origin.semantic) ? operationPutByValDirectBeyondArrayBoundsStrict : operationPutByValDirectBeyondArrayBoundsNonStrict, 6321- | ^~~~~~~~~~~~~~~ 6322:../../Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:2750:31: error: ‘class JSC::DFG::JITCompiler’ has no member named ‘isStrictModeFor’ 6323- 2750 | m_jit.isStrictModeFor(node->origin.semantic) ? operationPutByValBeyondArrayBoundsStrict : operationPutByValBeyondArrayBoundsNonStrict, 6324- | ^~~~~~~~~~~~~~~ 6325:../../Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:2785:29: error: ‘class JSC::DFG::JITCompiler’ has no member named ‘isStrictModeFor’ 6326- 2785 | callOperation(m_jit.isStrictModeFor(node->origin.semantic) ? operationPutByValWithThisStrict : operationPutByValWithThis, 6327- | ``` also: ``` 6393:../../Source/JavaScriptCore/jit/CCallHelpers.h:635:60: error: static assertion failed: One last sanity check 6394- 635 | static_assert(FunctionTraits<OperationType>::arity == numGPRArgs + numFPRArgs, "One last sanity check"); 6395- | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~ 6396-../../Source/JavaScriptCore/jit/CCallHelpers.h: In instantiation of ‘void JSC::CCallHelpers::setupArgumentsImpl(JSC::CCallHelpers::ArgCollection<numGPRArgs, numGPRSources, numFPRArgs, numFPRSources, numCrossSources, extraGPRArgs, extraPoke>) [with OperationType = long long int(JSC::JSGlobalObject*, JSC::CallFrame*, JSC::ECMAMode); unsigned int numGPRArgs = 2; unsigned int numGPRSources = 0; unsigned int numFPRArgs = 0; unsigned int numFPRSources = 0; unsigned int numCrossSources = 0; unsigned int extraGPRArgs = 0; unsigned int extraPoke = 0]’: 6397-../../Source/JavaScriptCore/jit/CCallHelpers.h:491:9: required from ‘std::enable_if_t<(sizeof (typename WTF::FunctionTraits<T>::ArgumentType<(numGPRArgs + numFPRArgs)>) <= 4)> JSC::CCallHelpers::setupArgumentsImpl(JSC::CCallHelpers::ArgCollection<numGPRArgs, numGPRSources, numFPRArgs, numFPRSources, numCrossSources, extraGPRArgs, extraPoke>, JSC::GPRReg, Args ...) [with OperationType = long long int(JSC::JSGlobalObject*, JSC::CallFrame*, JSC::ECMAMode); unsigned int numGPRArgs = 1; unsigned int numGPRSources = 0; unsigned int numFPRArgs = 0; unsigned int numFPRSources = 0; unsigned int numCrossSources = 0; unsigned int extraGPRArgs = 0; unsigned int extraPoke = 0; Args = {}; std::enable_if_t<(sizeof (typename WTF::FunctionTraits<T>::ArgumentType<(numGPRArgs + numFPRArgs)>) <= 4)> = void; JSC::GPRReg = JSC::ARMRegisters::RegisterID]’ 6398-../../Source/JavaScriptCore/jit/CCallHelpers.h:579:13: required from ‘std::enable_if_t<(std::is_base_of<JSC::AbstractMacroAssembler<JSC::ARMv7Assembler>::TrustedImm, Arg>::value || std::is_convertible<Arg, JSC::AbstractMacroAssembler<JSC::ARMv7Assembler>::TrustedImm>::value)> JSC::CCallHelpers::setupArgumentsImpl(JSC::CCallHelpers::ArgCollection<numGPRArgs, numGPRSources, numFPRArgs, numFPRSources, numCrossSources, extraGPRArgs, extraPoke>, Arg, Args ...) [with OperationType = long long int(JSC::JSGlobalObject*, JSC::CallFrame*, JSC::ECMAMode); unsigned int numGPRArgs = 0; unsigned int numGPRSources = 0; unsigned int numFPRArgs = 0; unsigned int numFPRSources = 0; unsigned int numCrossSources = 0; unsigned int extraGPRArgs = 0; unsigned int extraPoke = 0; Arg = JSC::DFG::SpeculativeJIT::TrustedImmPtr; Args = {JSC::ARMRegisters::RegisterID}; std::enable_if_t<(std::is_base_of<JSC::AbstractMacroAssembler<JSC::ARMv7Assembler>::TrustedImm, Arg>::value || std::is_convertible<Arg, JSC::AbstractMacroAssembler<JSC::ARMv7Assembler>::TrustedImm>::value)> = void]’ 6399-../../Source/JavaScriptCore/jit/CCallHelpers.h:669:9: required from ‘std::enable_if_t<(! std::is_same<typename WTF::FunctionTraits<T>::ArgumentType<0>, JSC::CallFrame*>::value)> JSC::CCallHelpers::setupArguments(Args ...) [with OperationType = long long int(JSC::JSGlobalObject*, JSC::CallFrame*, JSC::ECMAMode); Args = {JSC::DFG::SpeculativeJIT::TrustedImmPtr, JSC::ARMRegisters::RegisterID}; std::enable_if_t<(! std::is_same<typename WTF::FunctionTraits<T>::ArgumentType<0>, JSC::CallFrame*>::value)> = void]’ 6400-../../Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:811:124: required from here 6401:../../Source/JavaScriptCore/jit/CCallHelpers.h:635:60: error: static assertion failed: One last sanity check 6402-In file included from ../../Source/JavaScriptCore/heap/BlockDirectoryBits.h:30, 6403- from ../../Source/JavaScriptCore/heap/BlockDirectory.h:29, 6404- from ../../Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h:30, 6405- from ../../Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:28: 6406-DerivedSources/ForwardingHeaders/wtf/Vector.h: In instantiation of ‘static void WTF::VectorMover<false, T>::move(T*, T*, T*) [with T = JSC::ARMv7Assembler::LinkRecord]’: 6407-DerivedSources/ForwardingHeaders/wtf/Vector.h:257:65: required from ‘static void WTF::VectorTypeOperations<T>::move(T*, T*, T*) [with T = JSC::ARMv7Assembler::LinkRecord]’ 6408-DerivedSources/ForwardingHeaders/wtf/Vector.h:1194:25: required from ‘void WTF::Vector< <template-parameter-1-1>, <anonymous>, <template-parameter-1-3>, <anonymous>, Malloc>::reserveCapacity(size_t) [with T = JSC::ARMv7Assembler::LinkRecord; unsigned int inlineCapacity = 0; OverflowHandler = WTF::UnsafeVectorOverflow; unsigned int minCapacity = 16; Malloc = WTF::FastMalloc; size_t = unsigned int]’ 6409-DerivedSources/ForwardingHeaders/wtf/Vector.h:1047:5: required from ‘void WTF::Vector< <template-parameter-1-1>, <anonymous>, <template-parameter-1-3>, <anonymous>, Malloc>::expandCapacity(size_t) [with T = JSC::ARMv7Assembler::LinkRecord; unsigned int inlineCapacity = 0; OverflowHandler = WTF::UnsafeVectorOverflow; unsigned int minCapacity = 16; Malloc = WTF::FastMalloc; size_t = unsigned int]’ 6410-DerivedSources/ForwardingHeaders/wtf/Vector.h:1054:9: required from ‘T* WTF::Vector< <template-parameter-1-1>, <anonymous>, <template-parameter-1-3>, <anonymous>, Malloc>::expandCapacity(size_t, T*) [with T = JSC::ARMv7Assembler::LinkRecord; unsigned int inlineCapacity = 0; OverflowHandler = WTF::UnsafeVectorOverflow; unsigned int minCapacity = 16; Malloc = WTF::FastMalloc; size_t = unsigned int]’ 6411-DerivedSources/ForwardingHeaders/wtf/Vector.h:1347:9: required from ‘void WTF::Vector< <template-parameter-1-1>, <anonymous>, <template-parameter-1-3>, <anonymous>, Malloc>::appendSlowCase(U&&) [with U = JSC::ARMv7Assembler::LinkRecord; T = JSC::ARMv7Assembler::LinkRecord; unsigned int inlineCapacity = 0; OverflowHandler = WTF::UnsafeVectorOverflow; unsigned int minCapacity = 16; Malloc = WTF::FastMalloc]’ 6412-DerivedSources/ForwardingHeaders/wtf/Vector.h:1309:5: required from ‘void WTF::Vector< <template-parameter-1-1>, <anonymous>, <template-parameter-1-3>, <anonymous>, Malloc>::append(U&&) [with U = JSC::ARMv7Assembler::LinkRecord; T = JSC::ARMv7Assembler::LinkRecord; unsigned int inlineCapacity = 0; OverflowHandler = WTF::UnsafeVectorOverflow; unsigned int minCapacity = 16; Malloc = WTF::FastMalloc]’ 6413-DerivedSources/ForwardingHeaders/wtf/Vector.h:773:52: required from ‘void WTF::Vector< <template-parameter-1-1>, <anonymous>, <template-parameter-1-3>, <anonymous>, Malloc>::append(WTF::Vector< <template-parameter-1-1>, <anonymous>, <template-parameter-1-3>, <anonymous>, Malloc>::ValueType&&) [with T = JSC::ARMv7Assembler::LinkRecord; unsigned int inlineCapacity = 0; OverflowHandler = WTF::UnsafeVectorOverflow; unsigned int minCapacity = 16; Malloc = WTF::FastMalloc; WTF::Vector< <template-parameter-1-1>, <anonymous>, <template-parameter-1-3>, <anonymous>, Malloc>::ValueType = JSC::ARMv7Assembler::LinkRecord]’ ```
Attachments
Patch (13.55 KB, patch)
2020-04-08 04:13 PDT, Guillaume Emont
no flags
Guillaume Emont
Comment 1 2020-04-08 04:13:25 PDT
Created attachment 395789 [details] Patch First attempt at the patch. This fixes building on armv7, relying on EWS to run tests
Aakash Jain
Comment 2 2020-04-08 04:21:56 PDT
*** Bug 210181 has been marked as a duplicate of this bug. ***
Caio Lima
Comment 3 2020-04-08 06:42:48 PDT
Comment on attachment 395789 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=395789&action=review Informal review there. LGTM. > Source/JavaScriptCore/jit/JITPropertyAccess32_64.cpp:404 > + ECMAMode ecmaMode = ECMAMode::strict(); Is there a reason to initialize it? IIUC, load will set a value below based on `bytecode.m_ecmaMode`;
Aakash Jain
Comment 4 2020-04-08 07:08:25 PDT
Comment on attachment 395789 [details] Patch setting r+ and cq+ since it passes EWS and fix the build breakage. Further improvements (if any) can be done in follow-up patch.
EWS
Comment 5 2020-04-08 07:32:19 PDT
Committed r259715: <https://trac.webkit.org/changeset/259715> All reviewed patches have been landed. Closing bug and clearing flags on attachment 395789 [details].
Radar WebKit Bug Importer
Comment 6 2020-04-08 07:33:13 PDT
Guillaume Emont
Comment 7 2020-04-08 07:38:00 PDT
(In reply to Caio Lima from comment #3) > Comment on attachment 395789 [details] > Patch > > View in context: > https://bugs.webkit.org/attachment.cgi?id=395789&action=review > > Informal review there. LGTM. > > > Source/JavaScriptCore/jit/JITPropertyAccess32_64.cpp:404 > > + ECMAMode ecmaMode = ECMAMode::strict(); > > Is there a reason to initialize it? IIUC, load will set a value below based > on `bytecode.m_ecmaMode`; That's a good question I'd like to forward to Tadeu, since I basically cut and paste his code from JITPropertyAccess.cpp: https://github.com/WebKit/webkit/blob/master/Source/JavaScriptCore/jit/JITPropertyAccess.cpp#L308 but yeah, it doesn't look like it's needed.
Tadeu Zagallo
Comment 8 2020-04-08 09:52:02 PDT
(In reply to Guillaume Emont from comment #7) > (In reply to Caio Lima from comment #3) > > Comment on attachment 395789 [details] > > Patch > > > > View in context: > > https://bugs.webkit.org/attachment.cgi?id=395789&action=review > > > > Informal review there. LGTM. > > > > > Source/JavaScriptCore/jit/JITPropertyAccess32_64.cpp:404 > > > + ECMAMode ecmaMode = ECMAMode::strict(); > > > > Is there a reason to initialize it? IIUC, load will set a value below based > > on `bytecode.m_ecmaMode`; > > That's a good question I'd like to forward to Tadeu, since I basically cut > and paste his code from JITPropertyAccess.cpp: > > https://github.com/WebKit/webkit/blob/master/Source/JavaScriptCore/jit/ > JITPropertyAccess.cpp#L308 > > but yeah, it doesn't look like it's needed. The reason is that ECMAMode doesn't have a default initializer. I found it easier to not add one while refactoring so I'd look at all usages of it.
Note You need to log in before you can comment on or make changes to this bug.