Changeset 169584 in webkit
- Timestamp:
- Jun 3, 2014 9:47:43 PM (10 years ago)
- Location:
- branches/ftlopt/Source/JavaScriptCore
- Files:
-
- 1 added
- 5 deleted
- 28 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/ftlopt/Source/JavaScriptCore/ChangeLog
r169582 r169584 1 2014-06-03 Filip Pizlo <fpizlo@apple.com> 2 3 [ftlopt] Unreviewed, roll out r169578. The build system needs some more love. 4 5 * InlineRuntimeSymbolTable.h: Removed. 6 * JavaScriptCore.xcodeproj/project.pbxproj: 7 * build-symbol-table-index.py: 8 * build-symbol-table-index.sh: 9 * copy-llvm-ir-to-derived-sources.sh: 10 * dfg/DFGByteCodeParser.cpp: 11 (JSC::DFG::ByteCodeParser::handleCall): 12 * dfg/DFGNode.h: 13 (JSC::DFG::Node::canBeKnownFunction): Deleted. 14 (JSC::DFG::Node::hasKnownFunction): Deleted. 15 (JSC::DFG::Node::knownFunction): Deleted. 16 (JSC::DFG::Node::giveKnownFunction): Deleted. 17 * ftl/FTLAbbreviatedTypes.h: 18 * ftl/FTLCompile.cpp: 19 (JSC::FTL::compile): 20 * ftl/FTLLowerDFGToLLVM.cpp: 21 (JSC::FTL::LowerDFGToLLVM::LowerDFGToLLVM): 22 (JSC::FTL::LowerDFGToLLVM::lower): 23 (JSC::FTL::LowerDFGToLLVM::compileCallOrConstruct): 24 (JSC::FTL::LowerDFGToLLVM::possiblyCompileInlineableNativeCall): Deleted. 25 (JSC::FTL::LowerDFGToLLVM::getFunctionBySymbol): Deleted. 26 (JSC::FTL::LowerDFGToLLVM::getModuleByPathForSymbol): Deleted. 27 (JSC::FTL::LowerDFGToLLVM::isInlinableSize): Deleted. 28 * ftl/FTLState.cpp: 29 (JSC::FTL::State::State): 30 * ftl/FTLState.h: 31 * heap/HandleStack.h: 32 * llvm/InitializeLLVM.h: 33 * llvm/InitializeLLVMMac.cpp: Removed. 34 * llvm/InitializeLLVMMac.mm: Added. 35 (JSC::initializeLLVMImpl): 36 * llvm/LLVMAPIFunctions.h: 37 * llvm/LLVMHeaders.h: 38 * runtime/BundlePath.h: Removed. 39 * runtime/BundlePath.mm: Removed. 40 * runtime/DateConversion.h: 41 * runtime/DateInstance.h: 42 * runtime/ExceptionHelpers.h: 43 * runtime/JSArray.h: 44 * runtime/JSCJSValue.h: 45 (JSC::JSValue::toFloat): 46 * runtime/JSDateMath.h: 47 * runtime/JSObject.h: 48 * runtime/JSWrapperObject.h: 49 * runtime/Options.h: 50 * runtime/RegExp.h: 51 * runtime/StringObject.h: 52 * runtime/Structure.h: 53 * tested-symbols.symlst: Removed. 54 1 55 2014-06-03 Filip Pizlo <fpizlo@apple.com> 2 56 -
branches/ftlopt/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
r169578 r169584 478 478 0FCEFAAC1804C13E00472CE4 /* FTLSaveRestore.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCEFAAA1804C13E00472CE4 /* FTLSaveRestore.h */; settings = {ATTRIBUTES = (Private, ); }; }; 479 479 0FCEFAB01805CA6D00472CE4 /* InitializeLLVM.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCEFAAE1805CA6D00472CE4 /* InitializeLLVM.h */; settings = {ATTRIBUTES = (Private, ); }; }; 480 0FCEFAB11805CA6D00472CE4 /* InitializeLLVMMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0FCEFAAF1805CA6D00472CE4 /* InitializeLLVMMac.mm */; }; 480 481 0FCEFAC11805D94E00472CE4 /* LLVMOverrides.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FCEFAC01805D94100472CE4 /* LLVMOverrides.cpp */; }; 481 482 0FCEFAC31805E74000472CE4 /* LLVMExports.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FCEFAC21805E74000472CE4 /* LLVMExports.cpp */; }; 482 483 0FCEFACA1805E75500472CE4 /* InitializeLLVM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FCEFAC41805E75500472CE4 /* InitializeLLVM.cpp */; }; 484 0FCEFACB1805E75500472CE4 /* InitializeLLVMPOSIX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FCEFAC51805E75500472CE4 /* InitializeLLVMPOSIX.cpp */; }; 483 485 0FCEFACC1805E75500472CE4 /* InitializeLLVMPOSIX.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCEFAC61805E75500472CE4 /* InitializeLLVMPOSIX.h */; settings = {ATTRIBUTES = (Private, ); }; }; 484 486 0FCEFACD1805E75500472CE4 /* LLVMAPI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FCEFAC71805E75500472CE4 /* LLVMAPI.cpp */; }; … … 823 825 451539B912DC994500EF7AC4 /* Yarr.h in Headers */ = {isa = PBXBuildFile; fileRef = 451539B812DC994500EF7AC4 /* Yarr.h */; settings = {ATTRIBUTES = (Private, ); }; }; 824 826 5510502618EB827500001F3E /* JSCallbackFunction.h in Headers */ = {isa = PBXBuildFile; fileRef = 1440F88F0A508B100005F061 /* JSCallbackFunction.h */; }; 825 552EA70C1908704800A66F2F /* JSDataViewPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F2B66BF17B6B5AB00A7AE3F /* JSDataViewPrototype.cpp */; };826 827 5540757218DA58AD00EFF7F2 /* ArgList.h in Headers */ = {isa = PBXBuildFile; fileRef = BCF605120E203EF800B9A64D /* ArgList.h */; }; 827 828 5540757318DA58AD00EFF7F2 /* Arguments.h in Headers */ = {isa = PBXBuildFile; fileRef = BC257DE60E1F51C50016B6C9 /* Arguments.h */; }; … … 1057 1058 55407A3818DA58AD00EFF7F2 /* NumberConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC2680C20E16D4E900A06E92 /* NumberConstructor.cpp */; }; 1058 1059 55407A3A18DA58AD00EFF7F2 /* NumberPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC2680C40E16D4E900A06E92 /* NumberPrototype.cpp */; }; 1059 556A35C8190842BC00B56747 /* SetConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7299DA317D12858005F5FF9 /* SetConstructor.cpp */; };1060 556A35C9190842D500B56747 /* NativeErrorConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC02E9080E1839DB000F9297 /* NativeErrorConstructor.cpp */; };1061 556A35CA190842DD00B56747 /* Arguments.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC257DE50E1F51C50016B6C9 /* Arguments.cpp */; };1062 556A35CB190842E800B56747 /* ArgumentsIteratorPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A76140C9182982CB00750624 /* ArgumentsIteratorPrototype.cpp */; };1063 556A35CC190842F300B56747 /* ArrayIteratorPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7BDAEC217F4EA1400F6140C /* ArrayIteratorPrototype.cpp */; };1064 556A35CD190842FD00B56747 /* BooleanConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC7952320E15EB5600A898AB /* BooleanConstructor.cpp */; };1065 556A35CE1908430B00B56747 /* BooleanPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC7952340E15EB5600A898AB /* BooleanPrototype.cpp */; };1066 556A35CF1908431600B56747 /* DateConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCD203450E17135E002C7E82 /* DateConstructor.cpp */; };1067 556A35D01908432000B56747 /* DatePrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCD203470E17135E002C7E82 /* DatePrototype.cpp */; };1068 556A35D11908432900B56747 /* ErrorConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC02E9040E1839DB000F9297 /* ErrorConstructor.cpp */; };1069 556A35D21908433300B56747 /* ErrorPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC02E9060E1839DB000F9297 /* ErrorPrototype.cpp */; };1070 556A35D31908434300B56747 /* FunctionConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC2680C00E16D4E900A06E92 /* FunctionConstructor.cpp */; };1071 556A35D41908434D00B56747 /* FunctionPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F692A85C0255597D01FF60F7 /* FunctionPrototype.cpp */; };1072 556A35D51908436800B56747 /* JSArrayBufferConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F2B66B617B6B5AB00A7AE3F /* JSArrayBufferConstructor.cpp */; };1073 556A35D61908437500B56747 /* JSArrayBufferPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F2B66B817B6B5AB00A7AE3F /* JSArrayBufferPrototype.cpp */; };1074 556A35D71908438A00B56747 /* JSArrayIterator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7BDAEC417F4EA1400F6140C /* JSArrayIterator.cpp */; };1075 556A35D81908439D00B56747 /* JSBoundFunction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86FA9E8F142BBB2D001773B7 /* JSBoundFunction.cpp */; };1076 556A35D9190843B100B56747 /* JSFunction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F692A85E0255597D01FF60F7 /* JSFunction.cpp */; };1077 556A35DA190843C200B56747 /* JSGlobalObjectFunctions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC756FC60E2031B200DE7D12 /* JSGlobalObjectFunctions.cpp */; };1078 556A35DB190843CF00B56747 /* JSONObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7F9935E0FD7325100A0B2D0 /* JSONObject.cpp */; };1079 556A35DC190843E700B56747 /* JSPromiseConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C184E2017BEE240007CB63A /* JSPromiseConstructor.cpp */; };1080 556A35DD190843E700B56747 /* JSPromiseFunctions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C008CD0186F8A9300955C24 /* JSPromiseFunctions.cpp */; };1081 556A35DE190843E700B56747 /* JSPromisePrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C184E1C17BEE22E007CB63A /* JSPromisePrototype.cpp */; };1082 556A35DF190843F300B56747 /* ConsolePrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A53CE08118BC1A5600BEDF76 /* ConsolePrototype.cpp */; };1083 556A35E01908441D00B56747 /* MapConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A700873717CBE85300C3E643 /* MapConstructor.cpp */; };1084 556A35E11908441D00B56747 /* MapIteratorPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A74DEF8D182D991400522C22 /* MapIteratorPrototype.cpp */; };1085 556A35E21908441D00B56747 /* MapPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A700873B17CBE8D300C3E643 /* MapPrototype.cpp */; };1086 556A35E31908442A00B56747 /* MathObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F692A86A0255597D01FF60F7 /* MathObject.cpp */; };1087 556A35E41908443700B56747 /* NameConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86EBF2F91560F036008E9222 /* NameConstructor.cpp */; };1088 556A35E51908443700B56747 /* NamePrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86EBF2FD1560F036008E9222 /* NamePrototype.cpp */; };1089 556A35E61908444900B56747 /* ObjectConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC2680C60E16D4E900A06E92 /* ObjectConstructor.cpp */; };1090 556A35E71908444900B56747 /* ObjectPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC2680C80E16D4E900A06E92 /* ObjectPrototype.cpp */; };1091 556A35E81908448000B56747 /* RegExpConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCD202BD0E1706A7002C7E82 /* RegExpConstructor.cpp */; };1092 556A35E91908448000B56747 /* RegExpPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCD202BF0E1706A7002C7E82 /* RegExpPrototype.cpp */; };1093 556A35EA190844A000B56747 /* SetIteratorPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A790DD67182F499700588807 /* SetIteratorPrototype.cpp */; };1094 556A35EB190844A000B56747 /* SetPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7299D9F17D12848005F5FF9 /* SetPrototype.cpp */; };1095 556A35EC190844AA00B56747 /* StringConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC18C3C00E16EE3300B34460 /* StringConstructor.cpp */; };1096 556A35ED190844B500B56747 /* WeakMapConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7CA3ADD17DA41AE006538AF /* WeakMapConstructor.cpp */; };1097 556A35EE190844C000B56747 /* WeakMapPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7CA3ADF17DA41AE006538AF /* WeakMapPrototype.cpp */; };1098 55A04E211908653D0024E40C /* StringPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC18C3C50E16EE3300B34460 /* StringPrototype.cpp */; };1099 1060 5D53726F0E1C54880021E549 /* Tracing.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D53726E0E1C54880021E549 /* Tracing.h */; }; 1100 1061 5D5D8AD10E0D0EBE00F9C692 /* libedit.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 5D5D8AD00E0D0EBE00F9C692 /* libedit.dylib */; }; … … 1270 1231 99E45A2718A1B2590026D88F /* InputCursor.h in Headers */ = {isa = PBXBuildFile; fileRef = 99E45A2218A1B2590026D88F /* InputCursor.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1271 1232 99E45A2818A1B2590026D88F /* NondeterministicInput.h in Headers */ = {isa = PBXBuildFile; fileRef = 99E45A2318A1B2590026D88F /* NondeterministicInput.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1272 9E729407190F01A5001A91B5 /* InitializeThreading.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E178636C0D9BEEC300D74E75 /* InitializeThreading.cpp */; };1273 9E729408190F021E001A91B5 /* InitializeLLVMPOSIX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FCEFAC51805E75500472CE4 /* InitializeLLVMPOSIX.cpp */; };1274 9E72940B190F0514001A91B5 /* BundlePath.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E72940A190F0514001A91B5 /* BundlePath.h */; };1275 9EA5C7A1190F084200508EBE /* BundlePath.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9E729409190F0306001A91B5 /* BundlePath.mm */; };1276 9EA5C7A2190F088700508EBE /* InitializeLLVMMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9EA5C7A0190F05D200508EBE /* InitializeLLVMMac.cpp */; };1277 1233 A1712B3B11C7B212007A5315 /* RegExpCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1712B3A11C7B212007A5315 /* RegExpCache.cpp */; }; 1278 1234 A1712B3F11C7B228007A5315 /* RegExpCache.h in Headers */ = {isa = PBXBuildFile; fileRef = A1712B3E11C7B228007A5315 /* RegExpCache.h */; settings = {ATTRIBUTES = (Private, ); }; }; … … 1747 1703 E124A8F70E555775003091F1 /* OpaqueJSString.h in Headers */ = {isa = PBXBuildFile; fileRef = E124A8F50E555775003091F1 /* OpaqueJSString.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1748 1704 E124A8F80E555775003091F1 /* OpaqueJSString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E124A8F60E555775003091F1 /* OpaqueJSString.cpp */; }; 1705 E178636D0D9BEEC300D74E75 /* InitializeThreading.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E178636C0D9BEEC300D74E75 /* InitializeThreading.cpp */; }; 1749 1706 E18E3A590DF9278C00D90B34 /* VM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E18E3A570DF9278C00D90B34 /* VM.cpp */; }; 1750 1707 E49DC16B12EF293E00184A1F /* SourceProviderCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E49DC15512EF277200184A1F /* SourceProviderCache.cpp */; }; … … 2340 2297 0FCEFAAA1804C13E00472CE4 /* FTLSaveRestore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FTLSaveRestore.h; path = ftl/FTLSaveRestore.h; sourceTree = "<group>"; }; 2341 2298 0FCEFAAE1805CA6D00472CE4 /* InitializeLLVM.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = InitializeLLVM.h; path = llvm/InitializeLLVM.h; sourceTree = "<group>"; }; 2299 0FCEFAAF1805CA6D00472CE4 /* InitializeLLVMMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = InitializeLLVMMac.mm; path = llvm/InitializeLLVMMac.mm; sourceTree = "<group>"; }; 2342 2300 0FCEFAB61805D61600472CE4 /* libllvmForJSC.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = libllvmForJSC.dylib; sourceTree = BUILT_PRODUCTS_DIR; }; 2343 2301 0FCEFABE1805D86900472CE4 /* LLVMForJSC.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = LLVMForJSC.xcconfig; sourceTree = "<group>"; }; … … 2874 2832 99E45A2218A1B2590026D88F /* InputCursor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InputCursor.h; sourceTree = "<group>"; }; 2875 2833 99E45A2318A1B2590026D88F /* NondeterministicInput.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NondeterministicInput.h; sourceTree = "<group>"; }; 2876 9E729409190F0306001A91B5 /* BundlePath.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = BundlePath.mm; sourceTree = "<group>"; };2877 9E72940A190F0514001A91B5 /* BundlePath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BundlePath.h; sourceTree = "<group>"; };2878 9EA5C7A0190F05D200508EBE /* InitializeLLVMMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = InitializeLLVMMac.cpp; path = llvm/InitializeLLVMMac.cpp; sourceTree = "<group>"; };2879 2834 A1712B3A11C7B212007A5315 /* RegExpCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RegExpCache.cpp; sourceTree = "<group>"; }; 2880 2835 A1712B3E11C7B228007A5315 /* RegExpCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegExpCache.h; sourceTree = "<group>"; }; … … 3581 3536 isa = PBXGroup; 3582 3537 children = ( 3583 9EA5C7A0190F05D200508EBE /* InitializeLLVMMac.cpp */,3584 3538 0FCEFABF1805D94100472CE4 /* library */, 3585 3539 0FCEFAC41805E75500472CE4 /* InitializeLLVM.cpp */, 3586 3540 0FCEFAAE1805CA6D00472CE4 /* InitializeLLVM.h */, 3541 0FCEFAAF1805CA6D00472CE4 /* InitializeLLVMMac.mm */, 3587 3542 0FCEFAC51805E75500472CE4 /* InitializeLLVMPOSIX.cpp */, 3588 3543 0FCEFAC61805E75500472CE4 /* InitializeLLVMPOSIX.h */, … … 4213 4168 isa = PBXGroup; 4214 4169 children = ( 4215 9E72940A190F0514001A91B5 /* BundlePath.h */,4216 9E729409190F0306001A91B5 /* BundlePath.mm */,4217 4170 BCF605110E203EF800B9A64D /* ArgList.cpp */, 4218 4171 BCF605120E203EF800B9A64D /* ArgList.h */, … … 5852 5805 0F235BE017178E1C00690C7F /* FTLOSRExitCompiler.h in Headers */, 5853 5806 0FEA0A11170513DB00BB722C /* FTLOutput.h in Headers */, 5854 9E72940B190F0514001A91B5 /* BundlePath.h in Headers */,5855 5807 0F48532A187DFDEC0083B687 /* FTLRecoveryOpcode.h in Headers */, 5856 5808 0F6B1CC41862C47800845D97 /* FTLRegisterAtOffset.h in Headers */, … … 6858 6810 buildActionMask = 2147483647; 6859 6811 files = ( 6860 552EA70C1908704800A66F2F /* JSDataViewPrototype.cpp in Sources */,6861 55A04E211908653D0024E40C /* StringPrototype.cpp in Sources */,6862 556A35EE190844C000B56747 /* WeakMapPrototype.cpp in Sources */,6863 556A35ED190844B500B56747 /* WeakMapConstructor.cpp in Sources */,6864 556A35EC190844AA00B56747 /* StringConstructor.cpp in Sources */,6865 556A35EA190844A000B56747 /* SetIteratorPrototype.cpp in Sources */,6866 556A35EB190844A000B56747 /* SetPrototype.cpp in Sources */,6867 556A35E81908448000B56747 /* RegExpConstructor.cpp in Sources */,6868 556A35E91908448000B56747 /* RegExpPrototype.cpp in Sources */,6869 556A35E61908444900B56747 /* ObjectConstructor.cpp in Sources */,6870 556A35E71908444900B56747 /* ObjectPrototype.cpp in Sources */,6871 556A35E41908443700B56747 /* NameConstructor.cpp in Sources */,6872 556A35E51908443700B56747 /* NamePrototype.cpp in Sources */,6873 556A35E31908442A00B56747 /* MathObject.cpp in Sources */,6874 556A35E01908441D00B56747 /* MapConstructor.cpp in Sources */,6875 556A35E11908441D00B56747 /* MapIteratorPrototype.cpp in Sources */,6876 556A35E21908441D00B56747 /* MapPrototype.cpp in Sources */,6877 556A35DF190843F300B56747 /* ConsolePrototype.cpp in Sources */,6878 556A35DC190843E700B56747 /* JSPromiseConstructor.cpp in Sources */,6879 556A35DD190843E700B56747 /* JSPromiseFunctions.cpp in Sources */,6880 556A35DE190843E700B56747 /* JSPromisePrototype.cpp in Sources */,6881 556A35DB190843CF00B56747 /* JSONObject.cpp in Sources */,6882 556A35DA190843C200B56747 /* JSGlobalObjectFunctions.cpp in Sources */,6883 556A35D9190843B100B56747 /* JSFunction.cpp in Sources */,6884 556A35D81908439D00B56747 /* JSBoundFunction.cpp in Sources */,6885 556A35D71908438A00B56747 /* JSArrayIterator.cpp in Sources */,6886 556A35D61908437500B56747 /* JSArrayBufferPrototype.cpp in Sources */,6887 556A35D51908436800B56747 /* JSArrayBufferConstructor.cpp in Sources */,6888 556A35D41908434D00B56747 /* FunctionPrototype.cpp in Sources */,6889 556A35D31908434300B56747 /* FunctionConstructor.cpp in Sources */,6890 556A35D21908433300B56747 /* ErrorPrototype.cpp in Sources */,6891 556A35D11908432900B56747 /* ErrorConstructor.cpp in Sources */,6892 556A35D01908432000B56747 /* DatePrototype.cpp in Sources */,6893 556A35CF1908431600B56747 /* DateConstructor.cpp in Sources */,6894 556A35CE1908430B00B56747 /* BooleanPrototype.cpp in Sources */,6895 556A35CD190842FD00B56747 /* BooleanConstructor.cpp in Sources */,6896 556A35CC190842F300B56747 /* ArrayIteratorPrototype.cpp in Sources */,6897 556A35CB190842E800B56747 /* ArgumentsIteratorPrototype.cpp in Sources */,6898 556A35CA190842DD00B56747 /* Arguments.cpp in Sources */,6899 556A35C9190842D500B56747 /* NativeErrorConstructor.cpp in Sources */,6900 556A35C8190842BC00B56747 /* SetConstructor.cpp in Sources */,6901 6812 554078AB18DA58AD00EFF7F2 /* ArrayConstructor.cpp in Sources */, 6902 6813 554078AF18DA58AD00EFF7F2 /* ArrayPrototype.cpp in Sources */, … … 6918 6829 buildActionMask = 2147483647; 6919 6830 files = ( 6920 9EA5C7A2190F088700508EBE /* InitializeLLVMMac.cpp in Sources */,6921 9EA5C7A1190F084200508EBE /* BundlePath.mm in Sources */,6922 9E729408190F021E001A91B5 /* InitializeLLVMPOSIX.cpp in Sources */,6923 9E729407190F01A5001A91B5 /* InitializeThreading.cpp in Sources */,6924 6831 0FFA549716B8835000B3A982 /* A64DOpcode.cpp in Sources */, 6925 6832 0F55F0F414D1063900AC7649 /* AbstractPC.cpp in Sources */, … … 7173 7080 0F13E04E16164A1F00DC8DE7 /* IndexingType.cpp in Sources */, 7174 7081 0FCEFACA1805E75500472CE4 /* InitializeLLVM.cpp in Sources */, 7082 0FCEFAB11805CA6D00472CE4 /* InitializeLLVMMac.mm in Sources */, 7083 0FCEFACB1805E75500472CE4 /* InitializeLLVMPOSIX.cpp in Sources */, 7084 E178636D0D9BEEC300D74E75 /* InitializeThreading.cpp in Sources */, 7175 7085 A513E5B7185B8BD3007E95AD /* InjectedScript.cpp in Sources */, 7176 7086 A514B2C2185A684400F3C7CB /* InjectedScriptBase.cpp in Sources */, -
branches/ftlopt/Source/JavaScriptCore/build-symbol-table-index.py
r169578 r169584 5 5 import subprocess 6 6 import sys 7 from sets import Set8 7 from operator import itemgetter 9 8 … … 35 34 symbol_table_modification_time = os.path.getmtime(symbol_table_location) 36 35 37 file_suffix = "bc "36 file_suffix = "bc.gz" 38 37 file_suffix_length = len(file_suffix) 39 40 tested_symbols_location = "./tested-symbols.symlst"41 include_symbol_table_location = "./InlineRuntimeSymbolTable.h"42 tested_symbols = Set([])43 44 if os.path.isfile(tested_symbols_location):45 with open(tested_symbols_location, 'r') as file:46 print("Loading tested symbols")47 for line in file:48 tested_symbols.add(line[:-1])49 38 50 39 for bitcode_file in glob.iglob(os.path.join(framework_directory, "*." + file_suffix)): … … 60 49 61 50 for symbol in lines: 62 if symbol[:2] == "__" and symbol[-3:] != ".eh" and symbol in tested_symbols:63 symbol_table[symbol [1:]] = bitcode_basename51 if symbol[:2] == "__" and symbol[-3:] != ".eh": 52 symbol_table[symbol] = bitcode_basename[1:] 64 53 65 54 if not symbol_table_is_out_of_date: … … 79 68 print("Writing symbol table") 80 69 81 with open(symbol_table_location, "w") as symbol_file: 82 with open(include_symbol_table_location, "w") as include_file: 83 include_file.write("#define FOR_EACH_LIBRARY_SYMBOL(macro)") 84 for symbol, location in symbol_list: 85 symbol_file.write("{} {}\n".format(symbol, location)) 86 include_file.write(" \\\nmacro(\"{}\", \"{}\")".format(symbol, location)) 87 include_file.write("\n") 70 with open(symbol_table_location, "w") as file: 71 for symbol, location in symbol_list: 72 file.write("{} {}\n".format(symbol, location)) 73 88 74 print("Done") -
branches/ftlopt/Source/JavaScriptCore/build-symbol-table-index.sh
r169578 r169584 9 9 then 10 10 mkdir -p "$RUNTIME_INSTALL_DIR/$arch" 11 cp "$RUNTIME_DERIVED_SOURCES_DIR/$arch"/*.bc "$RUNTIME_INSTALL_DIR/$arch"/.11 cp "$RUNTIME_DERIVED_SOURCES_DIR/$arch"/*.bc.gz "$RUNTIME_INSTALL_DIR/$arch"/. 12 12 ${SRCROOT}/build-symbol-table-index.py $arch 13 13 fi -
branches/ftlopt/Source/JavaScriptCore/copy-llvm-ir-to-derived-sources.sh
r169578 r169584 12 12 do 13 13 file_name=${file##*/} 14 cp "$file" "$RUNTIME_DERIVED_SOURCES_DIR/$arch/${file_name%.o}.bc"14 gzip -9 -c "$file" > "$RUNTIME_DERIVED_SOURCES_DIR/$arch/${file_name%.o}.bc.gz" 15 15 done 16 16 fi -
branches/ftlopt/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp
r169578 r169584 1254 1254 1255 1255 Intrinsic intrinsic = callLinkStatus.intrinsicFor(specializationKind); 1256 1257 JSFunction* knownFunction = nullptr;1258 1256 if (intrinsic != NoIntrinsic) { 1259 1257 emitFunctionChecks(callLinkStatus, callTarget, registerOffset, specializationKind); … … 1272 1270 m_graph.compilation()->noticeInlinedCall(); 1273 1271 return; 1274 } else if (JSFunction* function = callLinkStatus.function()) 1275 if (function->isHostFunction()) { 1276 emitFunctionChecks(callLinkStatus, callTarget, registerOffset, specializationKind); 1277 knownFunction = function; 1278 } 1279 1280 addCall(result, op, callTarget, argumentCountIncludingThis, registerOffset)->giveKnownFunction(knownFunction); 1272 } 1273 1274 addCall(result, op, callTarget, argumentCountIncludingThis, registerOffset); 1281 1275 } 1282 1276 -
branches/ftlopt/Source/JavaScriptCore/dfg/DFGNode.h
r169578 r169584 1033 1033 } 1034 1034 1035 bool canBeKnownFunction()1036 {1037 switch (op()) {1038 case Construct:1039 case Call:1040 return true;1041 default:1042 return false;1043 }1044 }1045 1046 bool hasKnownFunction()1047 {1048 switch (op()) {1049 case Construct:1050 case Call:1051 return (bool)m_opInfo;1052 default:1053 return false;1054 }1055 }1056 1057 JSFunction* knownFunction()1058 {1059 ASSERT(canBeKnownFunction());1060 return bitwise_cast<JSFunction*>(m_opInfo);1061 }1062 1063 void giveKnownFunction(JSFunction* callData)1064 {1065 ASSERT(canBeKnownFunction());1066 m_opInfo = bitwise_cast<uintptr_t>(callData);1067 }1068 1069 1035 bool hasFunction() 1070 1036 { -
branches/ftlopt/Source/JavaScriptCore/ftl/FTLAbbreviatedTypes.h
r169578 r169584 44 44 typedef LLVMTypeRef LType; 45 45 typedef LLVMValueRef LValue; 46 typedef LLVMMemoryBufferRef LMemoryBuffer;47 46 48 47 } } // namespace JSC::FTL -
branches/ftlopt/Source/JavaScriptCore/ftl/FTLCompile.cpp
r169578 r169584 524 524 modulePasses = llvm->CreatePassManager(); 525 525 llvm->AddTargetData(llvm->GetExecutionEngineTargetData(engine), modulePasses); 526 527 LLVMTargetMachineRef targetMachine = llvm->GetExecutionEngineTargetMachine(engine);528 529 llvm->AddAnalysisPasses(targetMachine, modulePasses);530 526 llvm->AddPromoteMemoryToRegisterPass(modulePasses); 531 532 llvm->AddGlobalOptimizerPass(modulePasses);533 534 llvm->AddFunctionInliningPass(modulePasses);535 llvm->AddPruneEHPass(modulePasses);536 llvm->AddGlobalDCEPass(modulePasses);537 538 527 llvm->AddConstantPropagationPass(modulePasses); 539 llvm->AddAggressiveDCEPass(modulePasses);540 528 llvm->AddInstructionCombiningPass(modulePasses); 541 529 llvm->AddBasicAliasAnalysisPass(modulePasses); … … 544 532 llvm->AddCFGSimplificationPass(modulePasses); 545 533 llvm->AddDeadStoreEliminationPass(modulePasses); 546 547 534 llvm->RunPassManager(modulePasses, state.module); 548 535 } else { 549 536 LLVMPassManagerBuilderRef passBuilder = llvm->PassManagerBuilderCreate(); 550 537 llvm->PassManagerBuilderSetOptLevel(passBuilder, Options::llvmOptimizationLevel()); 551 llvm->PassManagerBuilderUseInlinerWithThreshold(passBuilder, 275);552 538 llvm->PassManagerBuilderSetSizeLevel(passBuilder, Options::llvmSizeLevel()); 553 539 -
branches/ftlopt/Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp
r169578 r169584 29 29 #if ENABLE(FTL_JIT) 30 30 31 #include "BundlePath.h"32 31 #include "CodeBlockWithJITType.h" 33 32 #include "DFGAbstractInterpreterInlines.h" … … 42 41 #include "FTLThunks.h" 43 42 #include "FTLWeightedTarget.h" 44 #include "JSCInlines.h"45 43 #include "LinkBuffer.h" 46 44 #include "OperandsInlines.h" 45 #include "JSCInlines.h" 47 46 #include "VirtualRegister.h" 48 47 #include <atomic> 49 #include <dlfcn.h>50 #include <llvm/InitializeLLVM.h>51 48 #include <wtf/ProcessID.h> 52 49 … … 79 76 , m_interpreter(state.graph, m_state) 80 77 , m_stackmapIDs(0) 81 , m_tbaaKind(mdKindID(state.context, "tbaa"))82 , m_tbaaStructKind(mdKindID(state.context, "tbaa.struct"))83 78 { 84 79 } … … 126 121 m_out.appendTo(m_prologue, stackOverflow); 127 122 createPhiVariables(); 128 129 Vector<BasicBlock*> depthFirst;130 m_graph.getBlocksInDepthFirstOrder(depthFirst);131 132 int maxNumberOfArguments = -1;133 for (unsigned blockIndex = depthFirst.size(); blockIndex--; ) {134 BasicBlock* block = depthFirst[blockIndex];135 for (unsigned nodeIndex = block->size(); nodeIndex--; ) {136 Node* m_node = block->at(nodeIndex);137 if (m_node->hasKnownFunction()) {138 int numArgs = m_node->numChildren();139 NativeFunction func = m_node->knownFunction()->nativeFunction();140 Dl_info info;141 if (dladdr((void*)func, &info)) {142 LValue callee = getFunctionBySymbol(info.dli_sname);143 if (callee && numArgs > maxNumberOfArguments)144 maxNumberOfArguments = numArgs;145 }146 }147 }148 }149 150 123 LValue capturedAlloca = m_out.alloca(arrayType(m_out.int64, m_graph.m_nextMachineLocal)); 151 152 if (maxNumberOfArguments >= 0) {153 m_execState = m_out.alloca(arrayType(m_out.int64, JSStack::CallFrameHeaderSize + maxNumberOfArguments));154 m_execStorage = m_out.ptrToInt(m_execState, m_out.intPtr);155 }156 157 124 m_captured = m_out.add( 158 125 m_out.ptrToInt(capturedAlloca, m_out.intPtr), … … 191 158 m_out.constInt32(MacroAssembler::maxJumpReplacementSize())); 192 159 m_out.unreachable(); 193 194 160 161 Vector<BasicBlock*> depthFirst; 162 m_graph.getBlocksInDepthFirstOrder(depthFirst); 195 163 for (unsigned i = 0; i < depthFirst.size(); ++i) 196 164 compileBlock(depthFirst[i]); … … 3561 3529 setBoolean(m_out.bitNot(boolify(m_node->child1()))); 3562 3530 } 3563 3531 3564 3532 void compileCallOrConstruct() 3565 3533 { … … 3567 3535 int numPassedArgs = m_node->numChildren() - 1; 3568 3536 int numArgs = numPassedArgs + dummyThisArgument; 3569 3570 if (m_node->hasKnownFunction() 3571 && possiblyCompileInlineableNativeCall(dummyThisArgument, numPassedArgs, numArgs)) 3572 return; 3573 3574 LValue jsCallee = lowJSValue(m_graph.varArgChild(m_node, 0)); 3575 3537 3538 LValue callee = lowJSValue(m_graph.varArgChild(m_node, 0)); 3539 3576 3540 unsigned stackmapID = m_stackmapIDs++; 3577 3541 … … 3581 3545 arguments.append(constNull(m_out.ref8)); 3582 3546 arguments.append(m_out.constInt32(1 + JSStack::CallFrameHeaderSize - JSStack::CallerFrameAndPCSize + numArgs)); 3583 arguments.append( jsCallee); // callee -> %rax3547 arguments.append(callee); // callee -> %rax 3584 3548 arguments.append(getUndef(m_out.int64)); // code block 3585 3549 arguments.append(getUndef(m_out.int64)); // scope chain 3586 arguments.append( jsCallee); // callee -> stack3550 arguments.append(callee); // callee -> stack 3587 3551 arguments.append(m_out.constInt64(numArgs)); // argument count and zeros for the tag 3588 3552 if (dummyThisArgument) … … 3600 3564 setJSValue(call); 3601 3565 } 3602 3603 bool possiblyCompileInlineableNativeCall(int dummyThisArgument, int numPassedArgs, int numArgs) 3604 { 3605 JSFunction* knownFunction = m_node->knownFunction(); 3606 NativeFunction function = knownFunction->nativeFunction(); 3607 Dl_info info; 3608 if (dladdr((void*)function, &info)) { 3609 LValue callee = getFunctionBySymbol(info.dli_sname); 3610 LType typeCallee; 3611 if (callee && (typeCallee = llvm->TypeOf(callee)) && (typeCallee = llvm->GetElementType(typeCallee))) { 3612 3613 JSScope* scope = knownFunction->scopeUnchecked(); 3614 m_out.storePtr(m_callFrame, m_execStorage, m_heaps.CallFrame_callerFrame); 3615 m_out.storePtr(constNull(m_out.intPtr), addressFor(m_execStorage, JSStack::CodeBlock)); 3616 m_out.storePtr(weakPointer(scope), addressFor(m_execStorage, JSStack::ScopeChain)); 3617 m_out.storePtr(weakPointer(knownFunction), addressFor(m_execStorage, JSStack::Callee)); 3618 3619 m_out.store64(m_out.constInt64(numArgs), addressFor(m_execStorage, JSStack::ArgumentCount)); 3620 3621 if (dummyThisArgument) 3622 m_out.storePtr(getUndef(m_out.int64), addressFor(m_execStorage, JSStack::ThisArgument)); 3623 3624 for (int i = 0; i < numPassedArgs; ++i) { 3625 m_out.storePtr(lowJSValue(m_graph.varArgChild(m_node, 1 + i)), 3626 addressFor(m_execStorage, dummyThisArgument ? JSStack::FirstArgument : JSStack::ThisArgument, i * sizeof(Register))); 3627 } 3628 3629 LType typeCalleeArg; 3630 llvm->GetParamTypes(typeCallee, &typeCalleeArg); 3631 LValue calleeCallFrame = m_out.address(m_execState, m_heaps.CallFrame_callerFrame).value(); 3632 m_out.storePtr(m_out.ptrToInt(calleeCallFrame, m_out.intPtr), m_out.absolute(&vm().topCallFrame)); 3633 3634 LValue call = vmCall(callee, 3635 m_out.bitCast(calleeCallFrame, typeCalleeArg)); 3636 3637 if (Options::verboseCompilation()) 3638 dataLog("Inlining: ", info.dli_sname, "\n"); 3639 3640 setJSValue(call); 3641 return true; 3642 } 3643 } 3644 return false; 3645 } 3646 3647 LValue getFunctionBySymbol(const CString symbol) 3648 { 3649 if (!m_ftlState.symbolTable.contains(symbol)) 3650 return nullptr; 3651 if (!getModuleByPathForSymbol(m_ftlState.symbolTable.get(symbol), symbol)) 3652 return nullptr; 3653 return llvm->GetNamedFunction(m_ftlState.module, symbol.data()); 3654 } 3655 3656 bool getModuleByPathForSymbol(const CString path, const CString symbol) 3657 { 3658 if (m_ftlState.nativeLoadedLibraries.contains(path)) { 3659 LValue function = llvm->GetNamedFunction(m_ftlState.module, symbol.data()); 3660 if (!isInlinableSize(function)) { 3661 // We had no choice but to compile this function, but don't try to inline it ever again. 3662 m_ftlState.symbolTable.remove(symbol); 3663 return false; 3664 } 3665 return true; 3666 } 3667 3668 LMemoryBuffer memBuf; 3669 3670 const CString actualPath = toCString(bundlePath().data(), 3671 #if CPU(X86_64) 3672 "/Resources/Runtime/x86_64/", 3673 #elif CPU(ARM64) 3674 "/Resources/Runtime/arm64/", 3675 #else 3676 #error "Unrecognized Architecture" 3677 #endif 3678 path.data()); 3679 3680 if (llvm->CreateMemoryBufferWithContentsOfFile(actualPath.data(), &memBuf, nullptr)) { 3681 if (Options::verboseCompilation()) 3682 dataLog("Failed to load module at ", actualPath.data(), "\n for symbol ", symbol.data()); 3683 return false; 3684 } 3685 3686 LModule module; 3687 3688 if (llvm->ParseBitcodeInContext(m_ftlState.context, memBuf, &module, nullptr)) { 3689 llvm->DisposeMemoryBuffer(memBuf); 3690 return false; 3691 } 3692 3693 llvm->DisposeMemoryBuffer(memBuf); 3694 3695 if (LValue function = llvm->GetNamedFunction(m_ftlState.module, symbol.data())) { 3696 if (!isInlinableSize(function)) { 3697 m_ftlState.symbolTable.remove(symbol); 3698 llvm->DisposeModule(module); 3699 return false; 3700 } 3701 } 3702 3703 Vector<CString> namedFunctions; 3704 for (LValue function = llvm->GetFirstFunction(module); function; function = llvm->GetNextFunction(function)) { 3705 CString functionName(llvm->GetValueName(function)); 3706 namedFunctions.append(functionName); 3707 3708 for (LBasicBlock basicBlock = llvm->GetFirstBasicBlock(function); basicBlock; basicBlock = llvm->GetNextBasicBlock(basicBlock)) { 3709 for (LValue instruction = llvm->GetFirstInstruction(basicBlock); instruction; instruction = llvm->GetNextInstruction(instruction)) { 3710 llvm->SetMetadata(instruction, m_tbaaKind, nullptr); 3711 llvm->SetMetadata(instruction, m_tbaaStructKind, nullptr); 3712 } 3713 } 3714 } 3715 3716 Vector<CString> namedGlobals; 3717 for (LValue global = llvm->GetFirstGlobal(module); global; global = llvm->GetNextGlobal(global)) { 3718 CString globalName(llvm->GetValueName(global)); 3719 namedGlobals.append(globalName); 3720 } 3721 3722 if (llvm->LinkModules(m_ftlState.module, module, LLVMLinkerDestroySource, nullptr)) 3723 return false; 3724 3725 for (CString* symbol = namedFunctions.begin(); symbol != namedFunctions.end(); ++symbol) { 3726 LValue function = llvm->GetNamedFunction(m_ftlState.module, symbol->data()); 3727 llvm->SetVisibility(function, LLVMHiddenVisibility); 3728 if (!llvm->IsDeclaration(function)) { 3729 llvm->SetLinkage(function, LLVMPrivateLinkage); 3730 3731 #if ASSERT_DISABLED 3732 llvm->RemoveFunctionAttr(function, LLVMStackProtectAttribute); 3733 #endif // ASSERT_DISABLED 3734 } 3735 } 3736 3737 for (CString* symbol = namedGlobals.begin(); symbol != namedGlobals.end(); ++symbol) { 3738 LValue global = llvm->GetNamedGlobal(m_ftlState.module, symbol->data()); 3739 llvm->SetVisibility(global, LLVMHiddenVisibility); 3740 if (!llvm->IsDeclaration(global)) 3741 llvm->SetLinkage(global, LLVMPrivateLinkage); 3742 } 3743 3744 m_ftlState.nativeLoadedLibraries.add(path); 3745 return true; 3746 } 3747 3748 bool isInlinableSize(LValue function) 3749 { 3750 size_t instructionCount = 0; 3751 size_t maxSize = Options::maximumLLVMInstructionCountForNativeInlining(); 3752 for (LBasicBlock basicBlock = llvm->GetFirstBasicBlock(function); basicBlock; basicBlock = llvm->GetNextBasicBlock(basicBlock)) { 3753 for (LValue instruction = llvm->GetFirstInstruction(basicBlock); instruction; instruction = llvm->GetNextInstruction(instruction)) { 3754 if (++instructionCount >= maxSize) 3755 return false; 3756 } 3757 } 3758 return true; 3759 } 3760 3566 3761 3567 void compileJump() 3762 3568 { … … 6277 6083 HashMap<BasicBlock*, LBasicBlock> m_blocks; 6278 6084 6279 LValue m_execState;6280 LValue m_execStorage;6281 6085 LValue m_callFrame; 6282 6086 LValue m_captured; … … 6310 6114 6311 6115 uint32_t m_stackmapIDs; 6312 unsigned m_tbaaKind;6313 unsigned m_tbaaStructKind;6314 6116 }; 6315 6117 -
branches/ftlopt/Source/JavaScriptCore/ftl/FTLState.cpp
r169578 r169584 33 33 #include "FTLJITCode.h" 34 34 #include "FTLJITFinalizer.h" 35 #include "InlineRuntimeSymbolTable.h"36 #include <llvm/InitializeLLVM.h>37 #include <stdio.h>38 35 39 36 namespace JSC { namespace FTL { … … 41 38 using namespace DFG; 42 39 43 #define LINE_SIZE 50044 40 State::State(Graph& graph) 45 41 : graph(graph) … … 51 47 , compactUnwindSize(0) 52 48 { 53 54 #define SYMBOL_TABLE_ADD(symbol, file) \55 symbolTable.fastAdd(symbol, file);56 FOR_EACH_LIBRARY_SYMBOL(SYMBOL_TABLE_ADD)57 #undef SYMBOL_TABLE_ADD58 59 49 switch (graph.m_plan.mode) { 60 50 case FTLMode: { -
branches/ftlopt/Source/JavaScriptCore/ftl/FTLState.h
r169578 r169584 82 82 83 83 void dumpState(const char* when); 84 85 HashSet<CString> nativeLoadedLibraries;86 HashMap<CString, CString> symbolTable;87 84 }; 88 85 -
branches/ftlopt/Source/JavaScriptCore/heap/HandleStack.h
r169578 r169584 54 54 55 55 private: 56 JS_EXPORT_PRIVATEvoid grow();56 void grow(); 57 57 void zapTo(Frame&); 58 58 HandleSlot findFirstAfter(HandleSlot); -
branches/ftlopt/Source/JavaScriptCore/llvm/InitializeLLVM.h
r169578 r169584 29 29 #if HAVE(LLVM) 30 30 31 #include <string>32 #include <wtf/text/CString.h>33 34 31 namespace JSC { 35 32 36 33 void initializeLLVMImpl(); 37 38 extern const CString* llvmBitcodeLibraryForInliningPath;39 34 40 35 // You msut call this before using JSC::llvm. It's safe to call this multiple times. -
branches/ftlopt/Source/JavaScriptCore/llvm/LLVMAPIFunctions.h
r169578 r169584 30 30 31 31 #define FOR_EACH_LLVM_API_FUNCTION(macro) \ 32 macro(LLVMBool, ParseBitcode, (LLVMMemoryBufferRef MemBuf, LLVMModuleRef *OutModule, char **OutMessage)) \33 macro(LLVMBool, ParseBitcodeInContext, (LLVMContextRef ContextRef, LLVMMemoryBufferRef MemBuf, LLVMModuleRef *OutModule, char **OutMessage)) \34 macro(LLVMBool, GetBitcodeModuleInContext, (LLVMContextRef ContextRef, LLVMMemoryBufferRef MemBuf, LLVMModuleRef *OutM, char **OutMessage)) \35 macro(LLVMBool, GetBitcodeModule, (LLVMMemoryBufferRef MemBuf, LLVMModuleRef *OutM, char **OutMessage)) \36 macro(LLVMBool, GetBitcodeModuleProviderInContext, (LLVMContextRef ContextRef, LLVMMemoryBufferRef MemBuf, LLVMModuleProviderRef *OutMP, char **OutMessage)) \37 macro(LLVMBool, GetBitcodeModuleProvider, (LLVMMemoryBufferRef MemBuf, LLVMModuleProviderRef *OutMP, char **OutMessage)) \38 macro(LLVMBool, LinkModules, (LLVMModuleRef Dest, LLVMModuleRef Str, LLVMLinkerMode Mode, char **OutMessage)) \39 32 macro(void, InitializeCore, (LLVMPassRegistryRef R)) \ 40 33 macro(void, Shutdown, ()) \ … … 59 52 macro(LLVMContextRef, GetModuleContext, (LLVMModuleRef M)) \ 60 53 macro(LLVMTypeRef, GetTypeByName, (LLVMModuleRef M, const char *Name)) \ 61 macro(void, DumpType, (LLVMTypeRef Val)) \62 54 macro(unsigned, GetNamedMetadataNumOperands, (LLVMModuleRef M, const char* name)) \ 63 55 macro(void, GetNamedMetadataOperands, (LLVMModuleRef M, const char* name, LLVMValueRef *Dest)) \ … … 584 576 macro(void *, RecompileAndRelinkFunction, (LLVMExecutionEngineRef EE, LLVMValueRef Fn)) \ 585 577 macro(LLVMTargetDataRef, GetExecutionEngineTargetData, (LLVMExecutionEngineRef EE)) \ 586 macro(LLVMTargetMachineRef, GetExecutionEngineTargetMachine, (LLVMExecutionEngineRef EE)) \587 578 macro(void, AddGlobalMapping, (LLVMExecutionEngineRef EE, LLVMValueRef Global, void* Addr)) \ 588 579 macro(void *, GetPointerToGlobal, (LLVMExecutionEngineRef EE, LLVMValueRef Global)) \ … … 611 602 macro(void, PassManagerBuilderPopulateModulePassManager, (LLVMPassManagerBuilderRef PMB, LLVMPassManagerRef PM)) \ 612 603 macro(void, PassManagerBuilderPopulateLTOPassManager, (LLVMPassManagerBuilderRef PMB, LLVMPassManagerRef PM, LLVMBool Internalize, LLVMBool RunInliner)) \ 613 macro(void, AddAnalysisPasses, (LLVMTargetMachineRef T, LLVMPassManagerRef PM)) \614 macro(void, AddInternalizePass, (LLVMPassManagerRef PM, unsigned AllButMain)) \615 604 macro(void, AddAggressiveDCEPass, (LLVMPassManagerRef PM)) \ 616 605 macro(void, AddCFGSimplificationPass, (LLVMPassManagerRef PM)) \ 617 606 macro(void, AddDeadStoreEliminationPass, (LLVMPassManagerRef PM)) \ 618 macro(void, AddFunctionInliningPass, (LLVMPassManagerRef PM)) \619 macro(void, AddGlobalDCEPass, (LLVMPassManagerRef PM)) \620 macro(void, AddPruneEHPass, (LLVMPassManagerRef PM)) \621 macro(void, AddIPSCCPPass, (LLVMPassManagerRef PM)) \622 macro(void, AddDeadArgEliminationPass, (LLVMPassManagerRef PM)) \623 macro(void, AddConstantMergePass, (LLVMPassManagerRef PM)) \624 macro(void, AddGlobalOptimizerPass, (LLVMPassManagerRef PM)) \625 607 macro(void, AddGVNPass, (LLVMPassManagerRef PM)) \ 626 608 macro(void, AddIndVarSimplifyPass, (LLVMPassManagerRef PM)) \ -
branches/ftlopt/Source/JavaScriptCore/llvm/LLVMHeaders.h
r169578 r169584 44 44 45 45 #include <llvm-c/Analysis.h> 46 #include <llvm-c/BitReader.h>47 46 #include <llvm-c/Core.h> 48 47 #include <llvm-c/Disassembler.h> 49 48 #include <llvm-c/ExecutionEngine.h> 50 #include <llvm-c/Initialization.h>51 #include <llvm-c/Linker.h>52 49 #include <llvm-c/Target.h> 53 #include <llvm-c/TargetMachine.h>54 #include <llvm-c/Transforms/IPO.h>55 50 #include <llvm-c/Transforms/PassManagerBuilder.h> 56 51 #include <llvm-c/Transforms/Scalar.h> -
branches/ftlopt/Source/JavaScriptCore/runtime/DateConversion.h
r169578 r169584 40 40 }; 41 41 42 JS_EXPORT_PRIVATEWTF::String formatDateTime(const GregorianDateTime&, DateTimeFormat, bool asUTCVariant);42 WTF::String formatDateTime(const GregorianDateTime&, DateTimeFormat, bool asUTCVariant); 43 43 44 44 } // namespace JSC -
branches/ftlopt/Source/JavaScriptCore/runtime/DateInstance.h
r169578 r169584 32 32 JS_EXPORT_PRIVATE void finishCreation(VM&, double); 33 33 34 JS_EXPORT_PRIVATEstatic void destroy(JSCell*);34 static void destroy(JSCell*); 35 35 36 36 public: … … 75 75 76 76 private: 77 JS_EXPORT_PRIVATEconst GregorianDateTime* calculateGregorianDateTime(ExecState*) const;78 JS_EXPORT_PRIVATEconst GregorianDateTime* calculateGregorianDateTimeUTC(ExecState*) const;77 const GregorianDateTime* calculateGregorianDateTime(ExecState*) const; 78 const GregorianDateTime* calculateGregorianDateTimeUTC(ExecState*) const; 79 79 80 80 mutable RefPtr<DateInstanceData> m_data; -
branches/ftlopt/Source/JavaScriptCore/runtime/ExceptionHelpers.h
r169578 r169584 51 51 JSString* errorDescriptionForValue(ExecState*, JSValue); 52 52 53 JS _EXPORT_PRIVATE JSObject* throwOutOfMemoryError(ExecState*);54 JS _EXPORT_PRIVATE JSObject* throwStackOverflowError(ExecState*);55 JS _EXPORT_PRIVATE JSObject* throwTerminatedExecutionException(ExecState*);53 JSObject* throwOutOfMemoryError(ExecState*); 54 JSObject* throwStackOverflowError(ExecState*); 55 JSObject* throwTerminatedExecutionException(ExecState*); 56 56 57 57 -
branches/ftlopt/Source/JavaScriptCore/runtime/JSArray.h
r169578 r169584 62 62 JS_EXPORT_PRIVATE static bool defineOwnProperty(JSObject*, ExecState*, PropertyName, const PropertyDescriptor&, bool throwException); 63 63 64 JS_EXPORT_PRIVATEstatic bool getOwnPropertySlot(JSObject*, ExecState*, PropertyName, PropertySlot&);64 static bool getOwnPropertySlot(JSObject*, ExecState*, PropertyName, PropertySlot&); 65 65 66 66 DECLARE_EXPORT_INFO; … … 68 68 unsigned length() const { return getArrayLength(); } 69 69 // OK to use on new arrays, but not if it might be a RegExpMatchArray. 70 JS_EXPORT_PRIVATEbool setLength(ExecState*, unsigned, bool throwException = false);71 72 JS_EXPORT_PRIVATEvoid sort(ExecState*);73 JS_EXPORT_PRIVATEvoid sort(ExecState*, JSValue compareFunction, CallType, const CallData&);74 JS_EXPORT_PRIVATEvoid sortNumeric(ExecState*, JSValue compareFunction, CallType, const CallData&);75 76 JS_EXPORT_PRIVATEvoid push(ExecState*, JSValue);77 JS _EXPORT_PRIVATE JSValue pop(ExecState*);70 bool setLength(ExecState*, unsigned, bool throwException = false); 71 72 void sort(ExecState*); 73 void sort(ExecState*, JSValue compareFunction, CallType, const CallData&); 74 void sortNumeric(ExecState*, JSValue compareFunction, CallType, const CallData&); 75 76 void push(ExecState*, JSValue); 77 JSValue pop(ExecState*); 78 78 79 79 enum ShiftCountMode { … … 132 132 } 133 133 134 JS_EXPORT_PRIVATEvoid fillArgList(ExecState*, MarkedArgumentBuffer&);135 JS_EXPORT_PRIVATEvoid copyToArguments(ExecState*, CallFrame*, uint32_t length, int32_t firstVarArgOffset);134 void fillArgList(ExecState*, MarkedArgumentBuffer&); 135 void copyToArguments(ExecState*, CallFrame*, uint32_t length, int32_t firstVarArgOffset); 136 136 137 137 static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype, IndexingType indexingType) … … 158 158 159 159 bool shiftCountWithAnyIndexingType(ExecState*, unsigned startIndex, unsigned count); 160 JS_EXPORT_PRIVATEbool shiftCountWithArrayStorage(unsigned startIndex, unsigned count, ArrayStorage*);160 bool shiftCountWithArrayStorage(unsigned startIndex, unsigned count, ArrayStorage*); 161 161 162 162 bool unshiftCountWithAnyIndexingType(ExecState*, unsigned startIndex, unsigned count); -
branches/ftlopt/Source/JavaScriptCore/runtime/JSCJSValue.h
r169578 r169584 241 241 242 242 // Integer conversions. 243 double toInteger(ExecState*) const;244 JS_EXPORT_PRIVATEdouble toIntegerPreserveNaN(ExecState*) const;243 JS_EXPORT_PRIVATE double toInteger(ExecState*) const; 244 double toIntegerPreserveNaN(ExecState*) const; 245 245 int32_t toInt32(ExecState*) const; 246 246 uint32_t toUInt32(ExecState*) const; … … 248 248 // Floating point conversions (this is a convenience method for webcore; 249 249 // signle precision float is not a representation used in JS or JSC). 250 JS_EXPORT_PRIVATEfloat toFloat(ExecState* exec) const { return static_cast<float>(toNumber(exec)); }250 float toFloat(ExecState* exec) const { return static_cast<float>(toNumber(exec)); } 251 251 252 252 // Object operations, with the toObject operation included. … … 256 256 JSValue get(ExecState*, unsigned propertyName, PropertySlot&) const; 257 257 void put(ExecState*, PropertyName, JSValue, PutPropertySlot&); 258 JS_EXPORT_PRIVATEvoid putToPrimitive(ExecState*, PropertyName, JSValue, PutPropertySlot&);259 JS_EXPORT_PRIVATEvoid putToPrimitiveByIndex(ExecState*, unsigned propertyName, JSValue, bool shouldThrow);258 void putToPrimitive(ExecState*, PropertyName, JSValue, PutPropertySlot&); 259 void putToPrimitiveByIndex(ExecState*, unsigned propertyName, JSValue, bool shouldThrow); 260 260 void putByIndex(ExecState*, unsigned propertyName, JSValue, bool shouldThrow); 261 261 -
branches/ftlopt/Source/JavaScriptCore/runtime/JSDateMath.h
r169578 r169584 51 51 class VM; 52 52 53 JS_EXPORT_PRIVATEvoid msToGregorianDateTime(VM&, double, bool outputIsUTC, GregorianDateTime&);54 JS_EXPORT_PRIVATEdouble gregorianDateTimeToMS(VM&, const GregorianDateTime&, double, bool inputIsUTC);55 JS_EXPORT_PRIVATEdouble getUTCOffset(VM&);56 JS_EXPORT_PRIVATEdouble parseDate(VM&, const WTF::String&);53 void msToGregorianDateTime(VM&, double, bool outputIsUTC, GregorianDateTime&); 54 double gregorianDateTimeToMS(VM&, const GregorianDateTime&, double, bool inputIsUTC); 55 double getUTCOffset(VM&); 56 double parseDate(VM&, const WTF::String&); 57 57 58 58 } // namespace JSC -
branches/ftlopt/Source/JavaScriptCore/runtime/JSObject.h
r169578 r169584 111 111 112 112 JSValue prototype() const; 113 JS_EXPORT_PRIVATEvoid setPrototype(VM&, JSValue prototype);114 JS_EXPORT_PRIVATEbool setPrototypeWithCycleCheck(ExecState*, JSValue prototype);113 void setPrototype(VM&, JSValue prototype); 114 bool setPrototypeWithCycleCheck(ExecState*, JSValue prototype); 115 115 116 116 bool mayInterceptIndexedAccesses() … … 132 132 // currently returns incorrect results for the DOM window (with non-own properties) 133 133 // being returned. Once this is fixed we should migrate code & remove this method. 134 JS_EXPORT_PRIVATEbool getOwnPropertyDescriptor(ExecState*, PropertyName, PropertyDescriptor&);135 136 JS_EXPORT_PRIVATEbool allowsAccessFrom(ExecState*);134 bool getOwnPropertyDescriptor(ExecState*, PropertyName, PropertyDescriptor&); 135 136 bool allowsAccessFrom(ExecState*); 137 137 138 138 unsigned getArrayLength() const … … 590 590 JSFunction* putDirectBuiltinFunction(VM&, JSGlobalObject*, const PropertyName&, FunctionExecutable*, unsigned attributes); 591 591 JSFunction* putDirectBuiltinFunctionWithoutTransition(VM&, JSGlobalObject*, const PropertyName&, FunctionExecutable*, unsigned attributes); 592 JS_EXPORT_PRIVATEvoid putDirectNativeFunctionWithoutTransition(VM&, JSGlobalObject*, const PropertyName&, unsigned functionLength, NativeFunction, Intrinsic, unsigned attributes);592 void putDirectNativeFunctionWithoutTransition(VM&, JSGlobalObject*, const PropertyName&, unsigned functionLength, NativeFunction, Intrinsic, unsigned attributes); 593 593 594 594 JS_EXPORT_PRIVATE static bool defineOwnProperty(JSObject*, ExecState*, PropertyName, const PropertyDescriptor&, bool shouldThrow); … … 601 601 bool isErrorInstance() const; 602 602 603 JS_EXPORT_PRIVATEvoid seal(VM&);604 JS_EXPORT_PRIVATEvoid freeze(VM&);603 void seal(VM&); 604 void freeze(VM&); 605 605 JS_EXPORT_PRIVATE void preventExtensions(VM&); 606 606 bool isSealed(VM& vm) { return structure(vm)->isSealed(vm); } … … 979 979 ContiguousJSValues ensureContiguousSlow(VM&); 980 980 ContiguousJSValues rageEnsureContiguousSlow(VM&); 981 JS_EXPORT_PRIVATEArrayStorage* ensureArrayStorageSlow(VM&);981 ArrayStorage* ensureArrayStorageSlow(VM&); 982 982 983 983 enum DoubleToContiguousMode { EncodeValueAsDouble, RageConvertDoubleToValue }; -
branches/ftlopt/Source/JavaScriptCore/runtime/JSWrapperObject.h
r169578 r169584 61 61 static const unsigned StructureFlags = OverridesVisitChildren | Base::StructureFlags; 62 62 63 JS_EXPORT_PRIVATEstatic void visitChildren(JSCell*, SlotVisitor&);63 static void visitChildren(JSCell*, SlotVisitor&); 64 64 65 65 private: -
branches/ftlopt/Source/JavaScriptCore/runtime/Options.h
r169578 r169584 197 197 v(unsigned, maximumInliningRecursionForMustInline, 3) \ 198 198 \ 199 v(unsigned, maximumLLVMInstructionCountForNativeInlining, 80) \200 \201 199 /* Maximum size of a caller for enabling inlining. This is purely to protect us */\ 202 200 /* from super long compiles that take a lot of memory. */\ -
branches/ftlopt/Source/JavaScriptCore/runtime/RegExp.h
r169578 r169584 62 62 63 63 JS_EXPORT_PRIVATE int match(VM&, const String&, unsigned startOffset, Vector<int, 32>& ovector); 64 JS_EXPORT_PRIVATEMatchResult match(VM&, const String&, unsigned startOffset);64 MatchResult match(VM&, const String&, unsigned startOffset); 65 65 unsigned numSubpatterns() const { return m_numSubpatterns; } 66 66 -
branches/ftlopt/Source/JavaScriptCore/runtime/StringObject.h
r169578 r169584 46 46 static StringObject* create(VM&, JSGlobalObject*, JSString*); 47 47 48 JS_EXPORT_PRIVATEstatic bool getOwnPropertySlot(JSObject*, ExecState*, PropertyName, PropertySlot&);49 JS_EXPORT_PRIVATEstatic bool getOwnPropertySlotByIndex(JSObject*, ExecState*, unsigned propertyName, PropertySlot&);48 static bool getOwnPropertySlot(JSObject*, ExecState*, PropertyName, PropertySlot&); 49 static bool getOwnPropertySlotByIndex(JSObject*, ExecState*, unsigned propertyName, PropertySlot&); 50 50 51 JS_EXPORT_PRIVATEstatic void put(JSCell*, ExecState*, PropertyName, JSValue, PutPropertySlot&);52 JS_EXPORT_PRIVATEstatic void putByIndex(JSCell*, ExecState*, unsigned propertyName, JSValue, bool shouldThrow);51 static void put(JSCell*, ExecState*, PropertyName, JSValue, PutPropertySlot&); 52 static void putByIndex(JSCell*, ExecState*, unsigned propertyName, JSValue, bool shouldThrow); 53 53 54 JS_EXPORT_PRIVATEstatic bool deleteProperty(JSCell*, ExecState*, PropertyName);55 JS_EXPORT_PRIVATEstatic bool deletePropertyByIndex(JSCell*, ExecState*, unsigned propertyName);56 JS_EXPORT_PRIVATEstatic void getOwnPropertyNames(JSObject*, ExecState*, PropertyNameArray&, EnumerationMode);57 JS_EXPORT_PRIVATEstatic bool defineOwnProperty(JSObject*, ExecState*, PropertyName, const PropertyDescriptor&, bool shouldThrow);54 static bool deleteProperty(JSCell*, ExecState*, PropertyName); 55 static bool deletePropertyByIndex(JSCell*, ExecState*, unsigned propertyName); 56 static void getOwnPropertyNames(JSObject*, ExecState*, PropertyNameArray&, EnumerationMode); 57 static bool defineOwnProperty(JSObject*, ExecState*, PropertyName, const PropertyDescriptor&, bool shouldThrow); 58 58 59 59 DECLARE_EXPORT_INFO; -
branches/ftlopt/Source/JavaScriptCore/runtime/Structure.h
r169578 r169584 121 121 static Structure* toCacheableDictionaryTransition(VM&, Structure*); 122 122 static Structure* toUncacheableDictionaryTransition(VM&, Structure*); 123 JS_EXPORT_PRIVATEstatic Structure* sealTransition(VM&, Structure*);124 JS_EXPORT_PRIVATEstatic Structure* freezeTransition(VM&, Structure*);123 static Structure* sealTransition(VM&, Structure*); 124 static Structure* freezeTransition(VM&, Structure*); 125 125 static Structure* preventExtensionsTransition(VM&, Structure*); 126 JS_EXPORT_PRIVATEstatic Structure* nonPropertyTransition(VM&, Structure*, NonPropertyTransition);127 128 JS_EXPORT_PRIVATEbool isSealed(VM&);129 JS_EXPORT_PRIVATEbool isFrozen(VM&);126 static Structure* nonPropertyTransition(VM&, Structure*, NonPropertyTransition); 127 128 bool isSealed(VM&); 129 bool isFrozen(VM&); 130 130 bool isExtensible() const { return !m_preventExtensions; } 131 131 bool didTransition() const { return m_didTransition; } … … 479 479 bool checkOffsetConsistency() const; 480 480 481 JS_EXPORT_PRIVATEvoid allocateRareData(VM&);481 void allocateRareData(VM&); 482 482 void cloneRareDataFrom(VM&, const Structure*); 483 483
Note: See TracChangeset
for help on using the changeset viewer.