Changeset 169628 in webkit


Ignore:
Timestamp:
Jun 5, 2014, 3:54:49 PM (11 years ago)
Author:
[email protected]
Message:

Added system for inlining native functions via the FTL.
https://bugs.webkit.org/show_bug.cgi?id=131515

Patch by Matthew Mirman <[email protected]> on 2014-06-04
Reviewed by Filip Pizlo.

Also fixed the build to not compress the bitcode and to
include all of the relevant runtime. With GCC_GENERATE_DEBUGGING_SYMBOLS = NO,
the produced bitcode files are a 100th the size they were before.
Now we can include all of the relevant runtime files with only a 3mb overhead.
This is the same overhead as for two compressed files before,
but done more efficiently (on both ends) and with less code.

Deciding whether to inline native functions is left up to LLVM.
The entire module containing the function is linked into the current
compiled JS so that inlining the native functions shouldn't make them smaller.

Rather than loading Runtime.symtbl at runtime FTLState.cpp now generates a file
InlineRuntimeSymbolTable.h which statically builds the symbol table hash table.

  • JavaScriptCore.xcodeproj/project.pbxproj: Added back runtime files to compile.
  • build-symbol-table-index.py: Changed bitcode suffix.

Added inclusion of only tested symbols.
Added output to InlineRuntimeSymbolTable.h.

  • build-symbol-table-index.sh: Changed bitcode suffix.
  • copy-llvm-ir-to-derived-sources.sh: Removed gzip compression.
  • tested-symbols.symlst: Added.
  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::handleCall):
Now sets the knownFunction of the call node if such a function exists
and emits a check that during runtime the callee is in fact known.

  • dfg/DFGNode.h:

Added functions to set the known function of a call node.
(JSC::DFG::Node::canBeKnownFunction): Added.
(JSC::DFG::Node::hasKnownFunction): Added.
(JSC::DFG::Node::knownFunction): Added.
(JSC::DFG::Node::giveKnownFunction): Added.

  • ftl/FTLAbbreviatedTypes.h: Added a typedef for LLVMMemoryBufferRef
  • ftl/FTLAbbreviations.h: Added some abbreviations.
  • ftl/FTLLowerDFGToLLVM.cpp:

(JSC::FTL::LowerDFGToLLVM::isInlinableSize): Added. Hardcoded threshold to 275.
(JSC::FTL::LowerDFGToLLVM::getModuleByPathForSymbol): Added.
(JSC::FTL::LowerDFGToLLVM::getFunctionBySymbol): Added.
(JSC::FTL::LowerDFGToLLVM::possiblyCompileInlineableNativeCall): Added.
(JSC::FTL::LowerDFGToLLVM::compileCallOrConstruct):
Added call to possiblyCompileInlineableNativeCall

  • ftl/FTLOutput.h:

(JSC::FTL::Output::allocaName): Added. Useful for debugging.

  • ftl/FTLState.cpp:

(JSC::FTL::State::State): Added an include for InlineRuntimeSymbolTable.h

  • ftl/FTLState.h: Added symbol table hash table.
  • ftl/FTLCompile.cpp:

(JSC::FTL::compile): Added inlining and dead function elimination passes.

  • heap/HandleStack.h: Added JS_EXPORT_PRIVATE to a few functions to get inlining to compile.
  • llvm/InitializeLLVMMac.mm: Deleted.
  • llvm/InitializeLLVMMac.cpp: Added.
  • llvm/LLVMAPIFunctions.h: Added macros to include Bitcode parsing and linking functions.
  • llvm/LLVMHeaders.h: Added includes for Bitcode parsing and linking.
  • runtime/BundlePath.h: Added.
  • runtime/BundlePath.mm: Added.
  • runtime/DateInstance.h: Added JS_EXPORT_PRIVATE to a few functions to get inlining to compile.
  • runtime/DateInstance.h: ditto.
  • runtime/DateConversion.h: ditto.
  • runtime/ExceptionHelpers.h: ditto.
  • runtime/JSCJSValue.h: ditto.
  • runtime/JSArray.h: ditto.
  • runtime/JSDateMath.h: ditto.
  • runtime/JSObject.h: ditto.
  • runtime/JSObject.h: ditto.
  • runtime/RegExp.h: ditto.
  • runtime/Structure.h: ditto.
  • runtime/Options.h: Added maximumLLVMInstructionCountForNativeInlining.
Location:
branches/ftlopt/Source/JavaScriptCore
Files:
4 added
1 deleted
29 edited

Legend:

Unmodified
Added
Removed
  • branches/ftlopt/Source/JavaScriptCore/ChangeLog

    r169597 r169628  
     12014-06-04  Matthew Mirman  <[email protected]>
     2
     3        Added system for inlining native functions via the FTL.
     4        https://bugs.webkit.org/show_bug.cgi?id=131515
     5
     6        Reviewed by Filip Pizlo.
     7
     8        Also fixed the build to not compress the bitcode and to
     9        include all of the relevant runtime. With GCC_GENERATE_DEBUGGING_SYMBOLS = NO,
     10        the produced bitcode files are a 100th the size they were before. 
     11        Now we can include all of the relevant runtime files with only a 3mb overhead.
     12        This is the same overhead as for two compressed files before,
     13        but done more efficiently (on both ends) and with less code.
     14       
     15        Deciding whether to inline native functions is left up to LLVM.
     16        The entire module containing the function is linked into the current
     17        compiled JS so that inlining the native functions shouldn't make them smaller.
     18       
     19        Rather than loading Runtime.symtbl at runtime FTLState.cpp now generates a file
     20        InlineRuntimeSymbolTable.h which statically builds the symbol table hash table. 
     21       
     22        * JavaScriptCore.xcodeproj/project.pbxproj: Added back runtime files to compile.
     23        * build-symbol-table-index.py: Changed bitcode suffix.
     24        Added inclusion of only tested symbols. 
     25        Added output to InlineRuntimeSymbolTable.h.
     26        * build-symbol-table-index.sh: Changed bitcode suffix.
     27        * copy-llvm-ir-to-derived-sources.sh: Removed gzip compression.
     28        * tested-symbols.symlst: Added.
     29        * dfg/DFGByteCodeParser.cpp:
     30        (JSC::DFG::ByteCodeParser::handleCall): 
     31        Now sets the knownFunction of the call node if such a function exists
     32        and emits a check that during runtime the callee is in fact known.
     33        * dfg/DFGNode.h:
     34        Added functions to set the known function of a call node.
     35        (JSC::DFG::Node::canBeKnownFunction): Added.
     36        (JSC::DFG::Node::hasKnownFunction): Added.
     37        (JSC::DFG::Node::knownFunction): Added.
     38        (JSC::DFG::Node::giveKnownFunction): Added.
     39        * ftl/FTLAbbreviatedTypes.h: Added a typedef for LLVMMemoryBufferRef
     40        * ftl/FTLAbbreviations.h: Added some abbreviations.
     41        * ftl/FTLLowerDFGToLLVM.cpp:
     42        (JSC::FTL::LowerDFGToLLVM::isInlinableSize): Added. Hardcoded threshold to 275.
     43        (JSC::FTL::LowerDFGToLLVM::getModuleByPathForSymbol): Added.
     44        (JSC::FTL::LowerDFGToLLVM::getFunctionBySymbol): Added.
     45        (JSC::FTL::LowerDFGToLLVM::possiblyCompileInlineableNativeCall): Added.
     46        (JSC::FTL::LowerDFGToLLVM::compileCallOrConstruct): 
     47        Added call to possiblyCompileInlineableNativeCall
     48        * ftl/FTLOutput.h:
     49        (JSC::FTL::Output::allocaName):  Added. Useful for debugging.
     50        * ftl/FTLState.cpp:
     51        (JSC::FTL::State::State): Added an include for InlineRuntimeSymbolTable.h
     52        * ftl/FTLState.h: Added symbol table hash table.
     53        * ftl/FTLCompile.cpp:
     54        (JSC::FTL::compile): Added inlining and dead function elimination passes.
     55        * heap/HandleStack.h: Added JS_EXPORT_PRIVATE to a few functions to get inlining to compile.
     56        * llvm/InitializeLLVMMac.mm: Deleted.
     57        * llvm/InitializeLLVMMac.cpp: Added.
     58        * llvm/LLVMAPIFunctions.h: Added macros to include Bitcode parsing and linking functions.
     59        * llvm/LLVMHeaders.h: Added includes for Bitcode parsing and linking.
     60        * runtime/BundlePath.h: Added.
     61        * runtime/BundlePath.mm: Added.
     62        * runtime/DateInstance.h: Added JS_EXPORT_PRIVATE to a few functions to get inlining to compile.
     63        * runtime/DateInstance.h: ditto.
     64        * runtime/DateConversion.h: ditto.
     65        * runtime/ExceptionHelpers.h: ditto.
     66        * runtime/JSCJSValue.h: ditto.
     67        * runtime/JSArray.h: ditto.
     68        * runtime/JSDateMath.h: ditto.
     69        * runtime/JSObject.h: ditto.
     70        * runtime/JSObject.h: ditto.
     71        * runtime/RegExp.h: ditto.
     72        * runtime/Structure.h: ditto.
     73        * runtime/Options.h:  Added maximumLLVMInstructionCountForNativeInlining.
     74
    1752014-06-04  Filip Pizlo  <[email protected]>
    276
  • branches/ftlopt/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj

    r169588 r169628  
    480480                0FCEFAAC1804C13E00472CE4 /* FTLSaveRestore.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCEFAAA1804C13E00472CE4 /* FTLSaveRestore.h */; settings = {ATTRIBUTES = (Private, ); }; };
    481481                0FCEFAB01805CA6D00472CE4 /* InitializeLLVM.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCEFAAE1805CA6D00472CE4 /* InitializeLLVM.h */; settings = {ATTRIBUTES = (Private, ); }; };
    482                 0FCEFAB11805CA6D00472CE4 /* InitializeLLVMMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0FCEFAAF1805CA6D00472CE4 /* InitializeLLVMMac.mm */; };
    483482                0FCEFAC11805D94E00472CE4 /* LLVMOverrides.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FCEFAC01805D94100472CE4 /* LLVMOverrides.cpp */; };
    484483                0FCEFAC31805E74000472CE4 /* LLVMExports.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FCEFAC21805E74000472CE4 /* LLVMExports.cpp */; };
    485484                0FCEFACA1805E75500472CE4 /* InitializeLLVM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FCEFAC41805E75500472CE4 /* InitializeLLVM.cpp */; };
    486                 0FCEFACB1805E75500472CE4 /* InitializeLLVMPOSIX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FCEFAC51805E75500472CE4 /* InitializeLLVMPOSIX.cpp */; };
    487485                0FCEFACC1805E75500472CE4 /* InitializeLLVMPOSIX.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCEFAC61805E75500472CE4 /* InitializeLLVMPOSIX.h */; settings = {ATTRIBUTES = (Private, ); }; };
    488486                0FCEFACD1805E75500472CE4 /* LLVMAPI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FCEFAC71805E75500472CE4 /* LLVMAPI.cpp */; };
     
    831829                451539B912DC994500EF7AC4 /* Yarr.h in Headers */ = {isa = PBXBuildFile; fileRef = 451539B812DC994500EF7AC4 /* Yarr.h */; settings = {ATTRIBUTES = (Private, ); }; };
    832830                5510502618EB827500001F3E /* JSCallbackFunction.h in Headers */ = {isa = PBXBuildFile; fileRef = 1440F88F0A508B100005F061 /* JSCallbackFunction.h */; };
     831                552EA70C1908704800A66F2F /* JSDataViewPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F2B66BF17B6B5AB00A7AE3F /* JSDataViewPrototype.cpp */; };
    833832                5540757218DA58AD00EFF7F2 /* ArgList.h in Headers */ = {isa = PBXBuildFile; fileRef = BCF605120E203EF800B9A64D /* ArgList.h */; };
    834833                5540757318DA58AD00EFF7F2 /* Arguments.h in Headers */ = {isa = PBXBuildFile; fileRef = BC257DE60E1F51C50016B6C9 /* Arguments.h */; };
     
    10641063                55407A3818DA58AD00EFF7F2 /* NumberConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC2680C20E16D4E900A06E92 /* NumberConstructor.cpp */; };
    10651064                55407A3A18DA58AD00EFF7F2 /* NumberPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC2680C40E16D4E900A06E92 /* NumberPrototype.cpp */; };
     1065                556A35C8190842BC00B56747 /* SetConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7299DA317D12858005F5FF9 /* SetConstructor.cpp */; };
     1066                556A35C9190842D500B56747 /* NativeErrorConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC02E9080E1839DB000F9297 /* NativeErrorConstructor.cpp */; };
     1067                556A35CA190842DD00B56747 /* Arguments.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC257DE50E1F51C50016B6C9 /* Arguments.cpp */; };
     1068                556A35CB190842E800B56747 /* ArgumentsIteratorPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A76140C9182982CB00750624 /* ArgumentsIteratorPrototype.cpp */; };
     1069                556A35CC190842F300B56747 /* ArrayIteratorPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7BDAEC217F4EA1400F6140C /* ArrayIteratorPrototype.cpp */; };
     1070                556A35CD190842FD00B56747 /* BooleanConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC7952320E15EB5600A898AB /* BooleanConstructor.cpp */; };
     1071                556A35CE1908430B00B56747 /* BooleanPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC7952340E15EB5600A898AB /* BooleanPrototype.cpp */; };
     1072                556A35CF1908431600B56747 /* DateConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCD203450E17135E002C7E82 /* DateConstructor.cpp */; };
     1073                556A35D01908432000B56747 /* DatePrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCD203470E17135E002C7E82 /* DatePrototype.cpp */; };
     1074                556A35D11908432900B56747 /* ErrorConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC02E9040E1839DB000F9297 /* ErrorConstructor.cpp */; };
     1075                556A35D21908433300B56747 /* ErrorPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC02E9060E1839DB000F9297 /* ErrorPrototype.cpp */; };
     1076                556A35D31908434300B56747 /* FunctionConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC2680C00E16D4E900A06E92 /* FunctionConstructor.cpp */; };
     1077                556A35D41908434D00B56747 /* FunctionPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F692A85C0255597D01FF60F7 /* FunctionPrototype.cpp */; };
     1078                556A35D51908436800B56747 /* JSArrayBufferConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F2B66B617B6B5AB00A7AE3F /* JSArrayBufferConstructor.cpp */; };
     1079                556A35D61908437500B56747 /* JSArrayBufferPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F2B66B817B6B5AB00A7AE3F /* JSArrayBufferPrototype.cpp */; };
     1080                556A35D71908438A00B56747 /* JSArrayIterator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7BDAEC417F4EA1400F6140C /* JSArrayIterator.cpp */; };
     1081                556A35D81908439D00B56747 /* JSBoundFunction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86FA9E8F142BBB2D001773B7 /* JSBoundFunction.cpp */; };
     1082                556A35D9190843B100B56747 /* JSFunction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F692A85E0255597D01FF60F7 /* JSFunction.cpp */; };
     1083                556A35DA190843C200B56747 /* JSGlobalObjectFunctions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC756FC60E2031B200DE7D12 /* JSGlobalObjectFunctions.cpp */; };
     1084                556A35DB190843CF00B56747 /* JSONObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7F9935E0FD7325100A0B2D0 /* JSONObject.cpp */; };
     1085                556A35DC190843E700B56747 /* JSPromiseConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C184E2017BEE240007CB63A /* JSPromiseConstructor.cpp */; };
     1086                556A35DD190843E700B56747 /* JSPromiseFunctions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C008CD0186F8A9300955C24 /* JSPromiseFunctions.cpp */; };
     1087                556A35DE190843E700B56747 /* JSPromisePrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C184E1C17BEE22E007CB63A /* JSPromisePrototype.cpp */; };
     1088                556A35DF190843F300B56747 /* ConsolePrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A53CE08118BC1A5600BEDF76 /* ConsolePrototype.cpp */; };
     1089                556A35E01908441D00B56747 /* MapConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A700873717CBE85300C3E643 /* MapConstructor.cpp */; };
     1090                556A35E11908441D00B56747 /* MapIteratorPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A74DEF8D182D991400522C22 /* MapIteratorPrototype.cpp */; };
     1091                556A35E21908441D00B56747 /* MapPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A700873B17CBE8D300C3E643 /* MapPrototype.cpp */; };
     1092                556A35E31908442A00B56747 /* MathObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F692A86A0255597D01FF60F7 /* MathObject.cpp */; };
     1093                556A35E41908443700B56747 /* NameConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86EBF2F91560F036008E9222 /* NameConstructor.cpp */; };
     1094                556A35E51908443700B56747 /* NamePrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86EBF2FD1560F036008E9222 /* NamePrototype.cpp */; };
     1095                556A35E61908444900B56747 /* ObjectConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC2680C60E16D4E900A06E92 /* ObjectConstructor.cpp */; };
     1096                556A35E71908444900B56747 /* ObjectPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC2680C80E16D4E900A06E92 /* ObjectPrototype.cpp */; };
     1097                556A35E81908448000B56747 /* RegExpConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCD202BD0E1706A7002C7E82 /* RegExpConstructor.cpp */; };
     1098                556A35E91908448000B56747 /* RegExpPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCD202BF0E1706A7002C7E82 /* RegExpPrototype.cpp */; };
     1099                556A35EA190844A000B56747 /* SetIteratorPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A790DD67182F499700588807 /* SetIteratorPrototype.cpp */; };
     1100                556A35EB190844A000B56747 /* SetPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7299D9F17D12848005F5FF9 /* SetPrototype.cpp */; };
     1101                556A35EC190844AA00B56747 /* StringConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC18C3C00E16EE3300B34460 /* StringConstructor.cpp */; };
     1102                556A35ED190844B500B56747 /* WeakMapConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7CA3ADD17DA41AE006538AF /* WeakMapConstructor.cpp */; };
     1103                556A35EE190844C000B56747 /* WeakMapPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7CA3ADF17DA41AE006538AF /* WeakMapPrototype.cpp */; };
     1104                55A04E211908653D0024E40C /* StringPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC18C3C50E16EE3300B34460 /* StringPrototype.cpp */; };
    10661105                5D53726F0E1C54880021E549 /* Tracing.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D53726E0E1C54880021E549 /* Tracing.h */; };
    10671106                5D5D8AD10E0D0EBE00F9C692 /* libedit.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 5D5D8AD00E0D0EBE00F9C692 /* libedit.dylib */; };
     
    12371276                99E45A2718A1B2590026D88F /* InputCursor.h in Headers */ = {isa = PBXBuildFile; fileRef = 99E45A2218A1B2590026D88F /* InputCursor.h */; settings = {ATTRIBUTES = (Private, ); }; };
    12381277                99E45A2818A1B2590026D88F /* NondeterministicInput.h in Headers */ = {isa = PBXBuildFile; fileRef = 99E45A2318A1B2590026D88F /* NondeterministicInput.h */; settings = {ATTRIBUTES = (Private, ); }; };
     1278                9E729407190F01A5001A91B5 /* InitializeThreading.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E178636C0D9BEEC300D74E75 /* InitializeThreading.cpp */; };
     1279                9E729408190F021E001A91B5 /* InitializeLLVMPOSIX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FCEFAC51805E75500472CE4 /* InitializeLLVMPOSIX.cpp */; };
     1280                9E72940B190F0514001A91B5 /* BundlePath.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E72940A190F0514001A91B5 /* BundlePath.h */; };
     1281                9E8791E0193FB6800076CA78 /* Arguments.h in Headers */ = {isa = PBXBuildFile; fileRef = BC257DE60E1F51C50016B6C9 /* Arguments.h */; };
     1282                9E8791E1193FB6800076CA78 /* ArgumentsIteratorConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = A76140C8182982CB00750624 /* ArgumentsIteratorConstructor.h */; };
     1283                9E8791E2193FB6800076CA78 /* ArgumentsIteratorPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = A76140CA182982CB00750624 /* ArgumentsIteratorPrototype.h */; };
     1284                9E8791E3193FB6800076CA78 /* ArrayConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = BC7952070E15E8A800A898AB /* ArrayConstructor.h */; };
     1285                9E8791E4193FB6800076CA78 /* ArrayIteratorConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = A7BDAEC117F4EA1400F6140C /* ArrayIteratorConstructor.h */; };
     1286                9E8791E5193FB6800076CA78 /* ArrayIteratorPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = A7BDAEC317F4EA1400F6140C /* ArrayIteratorPrototype.h */; };
     1287                9E8791E6193FB6800076CA78 /* BatchedTransitionOptimizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 147B83AA0E6DB8C9004775A4 /* BatchedTransitionOptimizer.h */; };
     1288                9E8791E7193FB6800076CA78 /* BigInteger.h in Headers */ = {isa = PBXBuildFile; fileRef = 866739D013BFDE710023D87C /* BigInteger.h */; };
     1289                9E8791E8193FB6800076CA78 /* CommonSlowPathsExceptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 6553A33017A1F1EE008CF6F3 /* CommonSlowPathsExceptions.h */; };
     1290                9E8791E9193FB6800076CA78 /* JSConsole.h in Headers */ = {isa = PBXBuildFile; fileRef = A53CE08418BC1A5600BEDF76 /* JSConsole.h */; };
     1291                9E8791EA193FB6800076CA78 /* DateConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = BCD203460E17135E002C7E82 /* DateConstructor.h */; };
     1292                9E8791EB193FB6800076CA78 /* DateConversion.h in Headers */ = {isa = PBXBuildFile; fileRef = D21202290AD4310C00ED79B6 /* DateConversion.h */; };
     1293                9E8791EC193FB6800076CA78 /* DatePrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = BCD203480E17135E002C7E82 /* DatePrototype.h */; };
     1294                9E8791ED193FB6800076CA78 /* ErrorConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = BC02E9050E1839DB000F9297 /* ErrorConstructor.h */; };
     1295                9E8791EE193FB6800076CA78 /* ConsolePrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = A53CE08218BC1A5600BEDF76 /* ConsolePrototype.h */; };
     1296                9E8791EF193FB6800076CA78 /* JSActivation.h in Headers */ = {isa = PBXBuildFile; fileRef = 14DA818E0D99FD2000B0A4FB /* JSActivation.h */; settings = {ATTRIBUTES = (); }; };
     1297                9E8791F0193FB6800076CA78 /* JSArgumentsIterator.h in Headers */ = {isa = PBXBuildFile; fileRef = A76140CC182982CB00750624 /* JSArgumentsIterator.h */; };
     1298                9E8791F1193FB6800076CA78 /* JSArrayIterator.h in Headers */ = {isa = PBXBuildFile; fileRef = A7BDAEC517F4EA1400F6140C /* JSArrayIterator.h */; };
     1299                9E8791F2193FB6800076CA78 /* (null) in Headers */ = {isa = PBXBuildFile; };
     1300                9E8791F3193FB6800076CA78 /* JSGlobalObjectDebuggable.h in Headers */ = {isa = PBXBuildFile; fileRef = A59455911824744700CC3843 /* JSGlobalObjectDebuggable.h */; };
     1301                9E8791F4193FB6800076CA78 /* JSGlobalObjectFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = BC756FC70E2031B200DE7D12 /* JSGlobalObjectFunctions.h */; };
     1302                9E8791F5193FB6800076CA78 /* JSMapIterator.h in Headers */ = {isa = PBXBuildFile; fileRef = A74DEF90182D991400522C22 /* JSMapIterator.h */; };
     1303                9E8791F6193FB6800076CA78 /* JSPromiseConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C184E2117BEE240007CB63A /* JSPromiseConstructor.h */; };
     1304                9E8791F7193FB6800076CA78 /* JSPromisePrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C184E1D17BEE22E007CB63A /* JSPromisePrototype.h */; };
     1305                9E8791F8193FB6800076CA78 /* JSPromiseReaction.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C008CDD1871258D00955C24 /* JSPromiseReaction.h */; };
     1306                9E8791F9193FB6800076CA78 /* JSSetIterator.h in Headers */ = {isa = PBXBuildFile; fileRef = A790DD6A182F499700588807 /* JSSetIterator.h */; };
     1307                9E8791FA193FB6800076CA78 /* JSStackInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = A7C1EAEB17987AB600299DB2 /* JSStackInlines.h */; };
     1308                9E8791FB193FB6800076CA78 /* JSStringBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 86E85538111B9968001AF51E /* JSStringBuilder.h */; };
     1309                9E8791FC193FB6800076CA78 /* JSStringJoiner.h in Headers */ = {isa = PBXBuildFile; fileRef = 2600B5A5152BAAA70091EE5F /* JSStringJoiner.h */; };
     1310                9E8791FD193FB6800076CA78 /* JSWeakMap.h in Headers */ = {isa = PBXBuildFile; fileRef = A7CA3AE217DA41AE006538AF /* JSWeakMap.h */; };
     1311                9E8791FE193FB6800076CA78 /* LiteralParser.h in Headers */ = {isa = PBXBuildFile; fileRef = A7E2EA690FB460CF00601F06 /* LiteralParser.h */; };
     1312                9E8791FF193FB6800076CA78 /* MapConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = A700873817CBE85300C3E643 /* MapConstructor.h */; };
     1313                9E879200193FB6800076CA78 /* MapIteratorConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = A74DEF8C182D991400522C22 /* MapIteratorConstructor.h */; };
     1314                9E879201193FB6800076CA78 /* MapIteratorPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = A74DEF8E182D991400522C22 /* MapIteratorPrototype.h */; };
     1315                9E879202193FB6800076CA78 /* MapPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = A700873C17CBE8D300C3E643 /* MapPrototype.h */; };
     1316                9E879203193FB6800076CA78 /* NameConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = 86EBF2FA1560F036008E9222 /* NameConstructor.h */; };
     1317                9E879204193FB6800076CA78 /* NameInstance.h in Headers */ = {isa = PBXBuildFile; fileRef = 86EBF2FC1560F036008E9222 /* NameInstance.h */; };
     1318                9E879205193FB6800076CA78 /* NamePrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = 86EBF2FE1560F036008E9222 /* NamePrototype.h */; };
     1319                9E879206193FB6800076CA78 /* NativeErrorConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = BC02E9090E1839DB000F9297 /* NativeErrorConstructor.h */; };
     1320                9E879207193FB6800076CA78 /* NativeErrorPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = BC02E90B0E1839DB000F9297 /* NativeErrorPrototype.h */; };
     1321                9E879208193FB6800076CA78 /* NumberConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = BC2680C30E16D4E900A06E92 /* NumberConstructor.h */; };
     1322                9E879209193FB6800076CA78 /* StructureIDBlob.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AAAA31018BD49D100394CC8 /* StructureIDBlob.h */; };
     1323                9E87920A193FB6800076CA78 /* ArrayBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = A7A8AF2617ADB5F3005AB174 /* ArrayBuffer.h */; };
     1324                9E87920B193FB6800076CA78 /* ArrayBufferNeuteringWatchpoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FFC99D3184EE318009C10AB /* ArrayBufferNeuteringWatchpoint.h */; };
     1325                9E87920C193FB6800076CA78 /* ArrayBufferView.h in Headers */ = {isa = PBXBuildFile; fileRef = A7A8AF2817ADB5F3005AB174 /* ArrayBufferView.h */; };
     1326                9E87920D193FB6800076CA78 /* ArrayConventions.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB7F38915ED8E3800F167B2 /* ArrayConventions.h */; };
     1327                9E87920E193FB6800076CA78 /* ArrayPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = F692A84E0255597D01FF60F7 /* ArrayPrototype.h */; };
     1328                9E87920F193FB6800076CA78 /* StructureIDTable.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AF7382B18BBBF92008A5A37 /* StructureIDTable.h */; };
     1329                9E879210193FB6800076CA78 /* ArrayStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB7F38A15ED8E3800F167B2 /* ArrayStorage.h */; };
     1330                9E879211193FB6800076CA78 /* BooleanObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 704FD35305697E6D003DBED9 /* BooleanObject.h */; };
     1331                9E879212193FB6800076CA78 /* Butterfly.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB7F38B15ED8E3800F167B2 /* Butterfly.h */; };
     1332                9E879213193FB6800076CA78 /* ButterflyInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB7F38C15ED8E3800F167B2 /* ButterflyInlines.h */; };
     1333                9E879214193FB6800076CA78 /* CallData.h in Headers */ = {isa = PBXBuildFile; fileRef = 145C507F0D9DF63B0088F6B9 /* CallData.h */; };
     1334                9E879215193FB6800076CA78 /* ClassInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = BC6AAAE40E1F426500AD87D8 /* ClassInfo.h */; };
     1335                9E879216193FB6800076CA78 /* CodeCache.h in Headers */ = {isa = PBXBuildFile; fileRef = A77F1820164088B200640A47 /* CodeCache.h */; };
     1336                9E879217193FB6800076CA78 /* CodeSpecializationKind.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F21C27914BE727300ADC64B /* CodeSpecializationKind.h */; };
     1337                9E879218193FB6800076CA78 /* CommonIdentifiers.h in Headers */ = {isa = PBXBuildFile; fileRef = 65EA73630BAE35D1001BB560 /* CommonIdentifiers.h */; };
     1338                9E879219193FB6800076CA78 /* CommonSlowPaths.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F15F15D14B7A73A005DE37D /* CommonSlowPaths.h */; };
     1339                9E87921A193FB6800076CA78 /* CompilationResult.h in Headers */ = {isa = PBXBuildFile; fileRef = A7E5A3A61797432D00E893C0 /* CompilationResult.h */; };
     1340                9E87921B193FB6800076CA78 /* Completion.h in Headers */ = {isa = PBXBuildFile; fileRef = F5BB2BC5030F772101FCFE1D /* Completion.h */; };
     1341                9E87921C193FB6800076CA78 /* ConcurrentJITLock.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FDB2CE9174896C7007B3C1B /* ConcurrentJITLock.h */; };
     1342                9E87921D193FB6800076CA78 /* ConsoleTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = A5FD0071189B038C00633231 /* ConsoleTypes.h */; };
     1343                9E87921E193FB6800076CA78 /* ConstantMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FFC99D0184EC8AD009C10AB /* ConstantMode.h */; };
     1344                9E87921F193FB6800076CA78 /* ConstructData.h in Headers */ = {isa = PBXBuildFile; fileRef = BC8F3CCF0DAF17BA00577A80 /* ConstructData.h */; };
     1345                9E879220193FB6800076CA78 /* DataView.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66B117B6B5AB00A7AE3F /* DataView.h */; };
     1346                9E879221193FB6800076CA78 /* DateInstance.h in Headers */ = {isa = PBXBuildFile; fileRef = BC1166010E1997B1008066DD /* DateInstance.h */; };
     1347                9E879222193FB6800076CA78 /* DateInstanceCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 14A1563010966365006FA260 /* DateInstanceCache.h */; };
     1348                9E879223193FB6800076CA78 /* Debugger.h in Headers */ = {isa = PBXBuildFile; fileRef = F692A8590255597D01FF60F7 /* Debugger.h */; };
     1349                9E879224193FB6800076CA78 /* DumpContext.h in Headers */ = {isa = PBXBuildFile; fileRef = A70447EC17A0BD7000F5898E /* DumpContext.h */; };
     1350                9E879225193FB6800076CA78 /* Error.h in Headers */ = {isa = PBXBuildFile; fileRef = BC3046060E1F497F003232CF /* Error.h */; };
     1351                9E879226193FB6800076CA78 /* ErrorHandlingScope.h in Headers */ = {isa = PBXBuildFile; fileRef = FEB58C13187B8B160098EF0B /* ErrorHandlingScope.h */; };
     1352                9E879227193FB6800076CA78 /* ErrorInstance.h in Headers */ = {isa = PBXBuildFile; fileRef = BC02E98B0E183E38000F9297 /* ErrorInstance.h */; };
     1353                9E879228193FB6800076CA78 /* ErrorPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = BC02E9070E1839DB000F9297 /* ErrorPrototype.h */; };
     1354                9E879229193FB6800076CA78 /* ExceptionHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = A72701B30DADE94900E548D7 /* ExceptionHelpers.h */; };
     1355                9E87922A193FB6800076CA78 /* Executable.h in Headers */ = {isa = PBXBuildFile; fileRef = 86CAFEE21035DDE60028A609 /* Executable.h */; };
     1356                9E87922B193FB6800076CA78 /* Float32Array.h in Headers */ = {isa = PBXBuildFile; fileRef = A7A8AF2917ADB5F3005AB174 /* Float32Array.h */; };
     1357                9E87922C193FB6800076CA78 /* Float64Array.h in Headers */ = {isa = PBXBuildFile; fileRef = A7A8AF2A17ADB5F3005AB174 /* Float64Array.h */; };
     1358                9E87922D193FB6800076CA78 /* ConsoleClient.h in Headers */ = {isa = PBXBuildFile; fileRef = A53CE08918BC21C300BEDF76 /* ConsoleClient.h */; };
     1359                9E87922E193FB6800076CA78 /* FunctionConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = BC2680C10E16D4E900A06E92 /* FunctionConstructor.h */; };
     1360                9E87922F193FB6800076CA78 /* FunctionExecutableDump.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB4B52216B6278D003F696B /* FunctionExecutableDump.h */; };
     1361                9E879230193FB6800076CA78 /* FunctionPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = F692A85D0255597D01FF60F7 /* FunctionPrototype.h */; };
     1362                9E879231193FB6800076CA78 /* GenericTypedArrayView.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66B217B6B5AB00A7AE3F /* GenericTypedArrayView.h */; };
     1363                9E879232193FB6800076CA78 /* GenericTypedArrayViewInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66B317B6B5AB00A7AE3F /* GenericTypedArrayViewInlines.h */; };
     1364                9E879233193FB6800076CA78 /* Identifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 933A349A038AE7C6008635CE /* Identifier.h */; };
     1365                9E879234193FB6800076CA78 /* IndexingHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB7F38D15ED8E3800F167B2 /* IndexingHeader.h */; };
     1366                9E879235193FB6800076CA78 /* IndexingHeaderInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB7F38E15ED8E3800F167B2 /* IndexingHeaderInlines.h */; };
     1367                9E879236193FB6800076CA78 /* IndexingType.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB7F38F15ED8E3800F167B2 /* IndexingType.h */; };
     1368                9E879237193FB6800076CA78 /* InitializeThreading.h in Headers */ = {isa = PBXBuildFile; fileRef = E178633F0D9BEC0000D74E75 /* InitializeThreading.h */; };
     1369                9E879238193FB6800076CA78 /* Int16Array.h in Headers */ = {isa = PBXBuildFile; fileRef = A7A8AF2C17ADB5F3005AB174 /* Int16Array.h */; };
     1370                9E879239193FB6800076CA78 /* Int32Array.h in Headers */ = {isa = PBXBuildFile; fileRef = A7A8AF2D17ADB5F3005AB174 /* Int32Array.h */; };
     1371                9E87923A193FB6800076CA78 /* Int8Array.h in Headers */ = {isa = PBXBuildFile; fileRef = A7A8AF2B17ADB5F3005AB174 /* Int8Array.h */; };
     1372                9E87923B193FB6800076CA78 /* IntendedStructureChain.h in Headers */ = {isa = PBXBuildFile; fileRef = A78853F817972629001440E4 /* IntendedStructureChain.h */; };
     1373                9E87923C193FB6800076CA78 /* InternalFunction.h in Headers */ = {isa = PBXBuildFile; fileRef = BC11667A0E199C05008066DD /* InternalFunction.h */; };
     1374                9E87923D193FB6800076CA78 /* Intrinsic.h in Headers */ = {isa = PBXBuildFile; fileRef = 86BF642A148DB2B5004DE36A /* Intrinsic.h */; };
     1375                9E87923E193FB6800076CA78 /* JSAPIValueWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = BC0894D60FAFBA2D00001865 /* JSAPIValueWrapper.h */; };
     1376                9E87923F193FB6800076CA78 /* JSArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 938772E5038BFE19008635CE /* JSArray.h */; };
     1377                9E879240193FB6800076CA78 /* JSArrayBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66B517B6B5AB00A7AE3F /* JSArrayBuffer.h */; };
     1378                9E879241193FB6800076CA78 /* JSArrayBufferConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66B717B6B5AB00A7AE3F /* JSArrayBufferConstructor.h */; };
     1379                9E879242193FB6800076CA78 /* JSArrayBufferPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66B917B6B5AB00A7AE3F /* JSArrayBufferPrototype.h */; };
     1380                9E879243193FB6800076CA78 /* JSArrayBufferView.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66BB17B6B5AB00A7AE3F /* JSArrayBufferView.h */; };
     1381                9E879244193FB6800076CA78 /* JSArrayBufferViewInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66BC17B6B5AB00A7AE3F /* JSArrayBufferViewInlines.h */; };
     1382                9E879245193FB6800076CA78 /* JSCell.h in Headers */ = {isa = PBXBuildFile; fileRef = BC1167D80E19BCC9008066DD /* JSCell.h */; };
     1383                9E879246193FB6800076CA78 /* JSCellInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F97496F1687ADE200A4FF6A /* JSCellInlines.h */; };
     1384                9E879247193FB6800076CA78 /* JSCInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F1DD84918A945BE0026F3FA /* JSCInlines.h */; };
     1385                9E879248193FB6800076CA78 /* JSCJSValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 14ABB36E099C076400E2A24F /* JSCJSValue.h */; };
     1386                9E879249193FB6800076CA78 /* JSCJSValueInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 865A30F0135007E100CDB49E /* JSCJSValueInlines.h */; };
     1387                9E87924A193FB6800076CA78 /* JSDataView.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66BE17B6B5AB00A7AE3F /* JSDataView.h */; };
     1388                9E87924B193FB6800076CA78 /* JSDataViewPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66C017B6B5AB00A7AE3F /* JSDataViewPrototype.h */; };
     1389                9E87924C193FB6800076CA78 /* JSDateMath.h in Headers */ = {isa = PBXBuildFile; fileRef = 9788FC231471AD0C0068CE2D /* JSDateMath.h */; };
     1390                9E87924D193FB6800076CA78 /* JSDestructibleObject.h in Headers */ = {isa = PBXBuildFile; fileRef = C2A7F687160432D400F76B98 /* JSDestructibleObject.h */; };
     1391                9E87924E193FB6800076CA78 /* JSExportMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = A7B4ACAE1484C9CE00B38A36 /* JSExportMacros.h */; };
     1392                9E87924F193FB6800076CA78 /* JSFloat32Array.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66C117B6B5AB00A7AE3F /* JSFloat32Array.h */; };
     1393                9E879250193FB6800076CA78 /* JSFloat64Array.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66C217B6B5AB00A7AE3F /* JSFloat64Array.h */; };
     1394                9E879251193FB6800076CA78 /* JSFunction.h in Headers */ = {isa = PBXBuildFile; fileRef = F692A85F0255597D01FF60F7 /* JSFunction.h */; };
     1395                9E879252193FB6800076CA78 /* JSFunctionInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = A72028B91797603D0098028C /* JSFunctionInlines.h */; };
     1396                9E879253193FB6800076CA78 /* JSGenericTypedArrayView.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66C317B6B5AB00A7AE3F /* JSGenericTypedArrayView.h */; };
     1397                9E879254193FB6800076CA78 /* JSGenericTypedArrayViewConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66C417B6B5AB00A7AE3F /* JSGenericTypedArrayViewConstructor.h */; };
     1398                9E879255193FB6800076CA78 /* JSGenericTypedArrayViewConstructorInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66C517B6B5AB00A7AE3F /* JSGenericTypedArrayViewConstructorInlines.h */; };
     1399                9E879256193FB6800076CA78 /* JSGenericTypedArrayViewInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66C617B6B5AB00A7AE3F /* JSGenericTypedArrayViewInlines.h */; };
     1400                9E879257193FB6800076CA78 /* JSGenericTypedArrayViewPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66C717B6B5AB00A7AE3F /* JSGenericTypedArrayViewPrototype.h */; };
     1401                9E879258193FB6800076CA78 /* JSGenericTypedArrayViewPrototypeInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66C817B6B5AB00A7AE3F /* JSGenericTypedArrayViewPrototypeInlines.h */; };
     1402                9E879259193FB6800076CA78 /* JSGlobalObject.h in Headers */ = {isa = PBXBuildFile; fileRef = A8E894330CD0603F00367179 /* JSGlobalObject.h */; };
     1403                9E87925A193FB6800076CA78 /* JSInt16Array.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66CA17B6B5AB00A7AE3F /* JSInt16Array.h */; };
     1404                9E87925B193FB6800076CA78 /* JSInt32Array.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66CB17B6B5AB00A7AE3F /* JSInt32Array.h */; };
     1405                9E87925C193FB6800076CA78 /* JSInt8Array.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66C917B6B5AB00A7AE3F /* JSInt8Array.h */; };
     1406                9E87925D193FB6800076CA78 /* JSLock.h in Headers */ = {isa = PBXBuildFile; fileRef = 65EA4C9A092AF9E20093D800 /* JSLock.h */; };
     1407                9E87925E193FB6800076CA78 /* JSMap.h in Headers */ = {isa = PBXBuildFile; fileRef = A700874017CBE8EB00C3E643 /* JSMap.h */; };
     1408                9E87925F193FB6800076CA78 /* JSNameScope.h in Headers */ = {isa = PBXBuildFile; fileRef = 14874AE015EBDE4A002E3587 /* JSNameScope.h */; };
     1409                9E879260193FB6800076CA78 /* JSObject.h in Headers */ = {isa = PBXBuildFile; fileRef = BC22A3990E16E14800AF21C8 /* JSObject.h */; };
     1410                9E879261193FB6800076CA78 /* JSONObject.h in Headers */ = {isa = PBXBuildFile; fileRef = A7F9935D0FD7325100A0B2D0 /* JSONObject.h */; };
     1411                9E879262193FB6800076CA78 /* JSPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C184E1917BEDBD3007CB63A /* JSPromise.h */; };
     1412                9E879263193FB6800076CA78 /* JSPromiseDeferred.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C008CD9187124BB00955C24 /* JSPromiseDeferred.h */; };
     1413                9E879264193FB6800076CA78 /* JSPromiseFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C008CD1186F8A9300955C24 /* JSPromiseFunctions.h */; };
     1414                9E879265193FB6800076CA78 /* JSProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 862553CF16136AA5009F17D0 /* JSProxy.h */; };
     1415                9E879266193FB6800076CA78 /* JSScope.h in Headers */ = {isa = PBXBuildFile; fileRef = 14874AE215EBDE4A002E3587 /* JSScope.h */; };
     1416                9E879267193FB6800076CA78 /* JSSegmentedVariableObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F919D0F157F3327004A4E7D /* JSSegmentedVariableObject.h */; };
     1417                9E879268193FB6800076CA78 /* JSSet.h in Headers */ = {isa = PBXBuildFile; fileRef = A7299D9C17D12837005F5FF9 /* JSSet.h */; };
     1418                9E879269193FB6800076CA78 /* JSString.h in Headers */ = {isa = PBXBuildFile; fileRef = F692A8620255597D01FF60F7 /* JSString.h */; };
     1419                9E87926A193FB6800076CA78 /* JSSymbolTableObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F919D0A157EE09D004A4E7D /* JSSymbolTableObject.h */; };
     1420                9E87926B193FB6800076CA78 /* JSType.h in Headers */ = {isa = PBXBuildFile; fileRef = 14ABB454099C2A0F00E2A24F /* JSType.h */; };
     1421                9E87926C193FB6800076CA78 /* JSTypedArrayConstructors.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66CD17B6B5AB00A7AE3F /* JSTypedArrayConstructors.h */; };
     1422                9E87926D193FB6800076CA78 /* JSTypedArrayPrototypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66CF17B6B5AB00A7AE3F /* JSTypedArrayPrototypes.h */; };
     1423                9E87926E193FB6800076CA78 /* JSTypedArrays.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66D117B6B5AB00A7AE3F /* JSTypedArrays.h */; };
     1424                9E87926F193FB6800076CA78 /* JSTypeInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 6507D2970E871E4A00D7D896 /* JSTypeInfo.h */; };
     1425                9E879270193FB6800076CA78 /* JSUint16Array.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66D417B6B5AB00A7AE3F /* JSUint16Array.h */; };
     1426                9E879271193FB6800076CA78 /* JSUint32Array.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66D517B6B5AB00A7AE3F /* JSUint32Array.h */; };
     1427                9E879272193FB6800076CA78 /* JSUint8Array.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66D217B6B5AB00A7AE3F /* JSUint8Array.h */; };
     1428                9E879273193FB6800076CA78 /* JSUint8ClampedArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66D317B6B5AB00A7AE3F /* JSUint8ClampedArray.h */; };
     1429                9E879274193FB6800076CA78 /* JSVariableObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 14F252560D08DD8D004ECFFF /* JSVariableObject.h */; };
     1430                9E879275193FB6800076CA78 /* JSWithScope.h in Headers */ = {isa = PBXBuildFile; fileRef = 1442566015EDE98D0066A49B /* JSWithScope.h */; };
     1431                9E879276193FB6800076CA78 /* JSWrapperObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 65C7A1720A8EAACB00FA37EA /* JSWrapperObject.h */; };
     1432                9E879277193FB6800076CA78 /* Lookup.h in Headers */ = {isa = PBXBuildFile; fileRef = F692A8690255597D01FF60F7 /* Lookup.h */; };
     1433                9E879278193FB6800076CA78 /* MapData.h in Headers */ = {isa = PBXBuildFile; fileRef = A78507D517CBC6FD0011F6E7 /* MapData.h */; };
     1434                9E879279193FB6800076CA78 /* MatchResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 8612E4CB1522918400C836BE /* MatchResult.h */; };
     1435                9E87927A193FB6800076CA78 /* MathObject.h in Headers */ = {isa = PBXBuildFile; fileRef = F692A86B0255597D01FF60F7 /* MathObject.h */; };
     1436                9E87927B193FB6800076CA78 /* MemoryStatistics.h in Headers */ = {isa = PBXBuildFile; fileRef = 90213E3C123A40C200D422F3 /* MemoryStatistics.h */; };
     1437                9E87927C193FB6800076CA78 /* Microtask.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C008CE5187631B600955C24 /* Microtask.h */; };
     1438                9E87927D193FB6800076CA78 /* NumberObject.h in Headers */ = {isa = PBXBuildFile; fileRef = F692A8710255597D01FF60F7 /* NumberObject.h */; };
     1439                9E87927E193FB6800076CA78 /* NumberPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = BC2680C50E16D4E900A06E92 /* NumberPrototype.h */; };
     1440                9E87927F193FB6800076CA78 /* NumericStrings.h in Headers */ = {isa = PBXBuildFile; fileRef = 142D3938103E4560007DCB52 /* NumericStrings.h */; };
     1441                9E879280193FB6800076CA78 /* ObjectConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = BC2680C70E16D4E900A06E92 /* ObjectConstructor.h */; };
     1442                9E879281193FB6800076CA78 /* ObjectPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = BC2680C90E16D4E900A06E92 /* ObjectPrototype.h */; };
     1443                9E879282193FB6800076CA78 /* Operations.h in Headers */ = {isa = PBXBuildFile; fileRef = F692A8780255597D01FF60F7 /* Operations.h */; };
     1444                9E879283193FB6800076CA78 /* Options.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FE228EB1436AB2300196C48 /* Options.h */; };
     1445                9E879284193FB6800076CA78 /* PrivateName.h in Headers */ = {isa = PBXBuildFile; fileRef = 868916A9155F285400CB2B9A /* PrivateName.h */; };
     1446                9E879285193FB6800076CA78 /* PropertyDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = A7FB604B103F5EAB0017A286 /* PropertyDescriptor.h */; };
     1447                9E879286193FB6800076CA78 /* PropertyMapHashTable.h in Headers */ = {isa = PBXBuildFile; fileRef = BC95437C0EBA70FD0072B6D3 /* PropertyMapHashTable.h */; };
     1448                9E879287193FB6800076CA78 /* PropertyName.h in Headers */ = {isa = PBXBuildFile; fileRef = 86158AB2155C8B3F00B45C9C /* PropertyName.h */; };
     1449                9E879288193FB6800076CA78 /* PropertyNameArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 65400C100A69BAF200509887 /* PropertyNameArray.h */; };
     1450                9E879289193FB6800076CA78 /* PropertyOffset.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FF7168A15A3B231008F5DAA /* PropertyOffset.h */; };
     1451                9E87928A193FB6800076CA78 /* PropertySlot.h in Headers */ = {isa = PBXBuildFile; fileRef = 65621E6C089E859700760F35 /* PropertySlot.h */; };
     1452                9E87928B193FB6800076CA78 /* PropertyStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB7F39015ED8E3800F167B2 /* PropertyStorage.h */; };
     1453                9E87928C193FB6800076CA78 /* Protect.h in Headers */ = {isa = PBXBuildFile; fileRef = 65C02FBB0637462A003E7EE6 /* Protect.h */; };
     1454                9E87928D193FB6800076CA78 /* PrototypeMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 14D844A316AA2C7000A65AF0 /* PrototypeMap.h */; };
     1455                9E87928E193FB6800076CA78 /* PutDirectIndexMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F0CD4C015F1A6040032F1C0 /* PutDirectIndexMode.h */; };
     1456                9E87928F193FB6800076CA78 /* PutPropertySlot.h in Headers */ = {isa = PBXBuildFile; fileRef = 147B84620E6DE6B1004775A4 /* PutPropertySlot.h */; };
     1457                9E879290193FB6800076CA78 /* RegExp.h in Headers */ = {isa = PBXBuildFile; fileRef = F692A87E0255597D01FF60F7 /* RegExp.h */; };
     1458                9E879291193FB6800076CA78 /* RegExpCache.h in Headers */ = {isa = PBXBuildFile; fileRef = A1712B3E11C7B228007A5315 /* RegExpCache.h */; };
     1459                9E879292193FB6800076CA78 /* RegExpKey.h in Headers */ = {isa = PBXBuildFile; fileRef = A1712B4011C7B235007A5315 /* RegExpKey.h */; };
     1460                9E879293193FB6800076CA78 /* RegExpObject.h in Headers */ = {isa = PBXBuildFile; fileRef = F692A87C0255597D01FF60F7 /* RegExpObject.h */; };
     1461                9E879294193FB6800076CA78 /* RegisterPreservationMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F6B1CB81861244C00845D97 /* RegisterPreservationMode.h */; };
     1462                9E879295193FB6800076CA78 /* Reject.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB7F39115ED8E3800F167B2 /* Reject.h */; };
     1463                9E879296193FB6800076CA78 /* SamplingCounter.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F77008E1402FDD60078EB39 /* SamplingCounter.h */; };
     1464                9E879297193FB6800076CA78 /* SimpleTypedArrayController.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66D717B6B5AB00A7AE3F /* SimpleTypedArrayController.h */; };
     1465                9E879298193FB6800076CA78 /* SmallStrings.h in Headers */ = {isa = PBXBuildFile; fileRef = 93303FEA0E6A72C000786E6A /* SmallStrings.h */; };
     1466                9E879299193FB6800076CA78 /* SparseArrayValueMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB7F39215ED8E3800F167B2 /* SparseArrayValueMap.h */; };
     1467                9E87929A193FB6800076CA78 /* StackAlignment.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F3AC751183EA1040032029F /* StackAlignment.h */; };
     1468                9E87929B193FB6800076CA78 /* StringObject.h in Headers */ = {isa = PBXBuildFile; fileRef = BC18C3C30E16EE3300B34460 /* StringObject.h */; };
     1469                9E87929C193FB6800076CA78 /* StringPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = BC18C3C60E16EE3300B34460 /* StringPrototype.h */; };
     1470                9E87929D193FB6800076CA78 /* Structure.h in Headers */ = {isa = PBXBuildFile; fileRef = BCDE3AB10E6C82CF001453A7 /* Structure.h */; };
     1471                9E87929E193FB6800076CA78 /* StructureChain.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E4EE7080EBB7963005934AA /* StructureChain.h */; };
     1472                9E87929F193FB6800076CA78 /* StructureInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FD2C92316D01EE900C7803F /* StructureInlines.h */; };
     1473                9E8792A0193FB6800076CA78 /* StructureRareData.h in Headers */ = {isa = PBXBuildFile; fileRef = C2FE18A316BAEC4000AF3061 /* StructureRareData.h */; };
     1474                9E8792A1193FB6800076CA78 /* StructureRareDataInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = C20BA92C16BB1C1500B3AEA2 /* StructureRareDataInlines.h */; };
     1475                9E8792A2193FB6800076CA78 /* StructureTransitionTable.h in Headers */ = {isa = PBXBuildFile; fileRef = BC9041470EB9250900FE26FA /* StructureTransitionTable.h */; };
     1476                9E8792A3193FB6800076CA78 /* SymbolTable.h in Headers */ = {isa = PBXBuildFile; fileRef = 14A396A60CD2933100B5B4FF /* SymbolTable.h */; };
     1477                9E8792A4193FB6800076CA78 /* TestRunnerUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FA2C17A17D7CF84009D015F /* TestRunnerUtils.h */; };
     1478                9E8792A5193FB6800076CA78 /* ToNativeFromValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F55989717C86C5600A1E543 /* ToNativeFromValue.h */; };
     1479                9E8792A6193FB6800076CA78 /* TypedArrayAdaptors.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66D817B6B5AB00A7AE3F /* TypedArrayAdaptors.h */; };
     1480                9E8792A7193FB6800076CA78 /* TypedArrayController.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66DA17B6B5AB00A7AE3F /* TypedArrayController.h */; };
     1481                9E8792A8193FB6800076CA78 /* TypedArrayInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F4B94DB17B9F07500DD03A4 /* TypedArrayInlines.h */; };
     1482                9E8792A9193FB6800076CA78 /* TypedArrays.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66DB17B6B5AB00A7AE3F /* TypedArrays.h */; };
     1483                9E8792AA193FB6800076CA78 /* TypedArrayType.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66DD17B6B5AB00A7AE3F /* TypedArrayType.h */; };
     1484                9E8792AB193FB6800076CA78 /* Uint16Array.h in Headers */ = {isa = PBXBuildFile; fileRef = A7A8AF3217ADB5F3005AB174 /* Uint16Array.h */; };
     1485                9E8792AC193FB6800076CA78 /* Uint32Array.h in Headers */ = {isa = PBXBuildFile; fileRef = A7A8AF3317ADB5F3005AB174 /* Uint32Array.h */; };
     1486                9E8792AD193FB6800076CA78 /* Uint8Array.h in Headers */ = {isa = PBXBuildFile; fileRef = A7A8AF3017ADB5F3005AB174 /* Uint8Array.h */; };
     1487                9E8792AE193FB6800076CA78 /* Uint8ClampedArray.h in Headers */ = {isa = PBXBuildFile; fileRef = A7A8AF3117ADB5F3005AB174 /* Uint8ClampedArray.h */; };
     1488                9E8792AF193FB6800076CA78 /* VM.h in Headers */ = {isa = PBXBuildFile; fileRef = E18E3A560DF9278C00D90B34 /* VM.h */; };
     1489                9E8792B0193FB6800076CA78 /* VMEntryScope.h in Headers */ = {isa = PBXBuildFile; fileRef = FE5932A6183C5A2600A1ECCC /* VMEntryScope.h */; };
     1490                9E8792B1193FB6800076CA78 /* Watchdog.h in Headers */ = {isa = PBXBuildFile; fileRef = FED94F2C171E3E2300BE77A4 /* Watchdog.h */; };
     1491                9E8792B2193FB6800076CA78 /* WeakGCMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 14BFCE6810CDB1FC00364CCE /* WeakGCMap.h */; };
     1492                9E8792B3193FB6800076CA78 /* WeakRandom.h in Headers */ = {isa = PBXBuildFile; fileRef = 1420BE7A10AA6DDB00F455D2 /* WeakRandom.h */; };
     1493                9E8792B4193FB6800076CA78 /* WriteBarrier.h in Headers */ = {isa = PBXBuildFile; fileRef = A7DCB77912E3D90500911940 /* WriteBarrier.h */; };
     1494                9E8792B5193FB6800076CA78 /* WriteBarrierInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = C2B6D75218A33793004A9301 /* WriteBarrierInlines.h */; };
     1495                9E8792B6193FB6800076CA78 /* ArityCheckMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F6B1CB71861244C00845D97 /* ArityCheckMode.h */; };
     1496                9E8792B7193FB6800076CA78 /* ArgList.h in Headers */ = {isa = PBXBuildFile; fileRef = BCF605120E203EF800B9A64D /* ArgList.h */; };
     1497                9E8792B8193FB6800076CA78 /* JSCallbackFunction.h in Headers */ = {isa = PBXBuildFile; fileRef = 1440F88F0A508B100005F061 /* JSCallbackFunction.h */; };
     1498                9E8792B9193FB6800076CA78 /* RegExpConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = BCD202BE0E1706A7002C7E82 /* RegExpConstructor.h */; };
     1499                9E8792BA193FB6800076CA78 /* RegExpPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = BCD202C00E1706A7002C7E82 /* RegExpPrototype.h */; };
     1500                9E8792BB193FB6800076CA78 /* SetConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = A7299DA417D12858005F5FF9 /* SetConstructor.h */; };
     1501                9E8792BC193FB6800076CA78 /* SetIteratorConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = A790DD66182F499700588807 /* SetIteratorConstructor.h */; };
     1502                9E8792BD193FB6800076CA78 /* SetIteratorPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = A790DD68182F499700588807 /* SetIteratorPrototype.h */; };
     1503                9E8792BE193FB6800076CA78 /* SetPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = A7299DA017D12848005F5FF9 /* SetPrototype.h */; };
     1504                9E8792BF193FB6800076CA78 /* StrictEvalActivation.h in Headers */ = {isa = PBXBuildFile; fileRef = A730B6101250068F009D25B1 /* StrictEvalActivation.h */; };
     1505                9E8792C0193FB6800076CA78 /* StringConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = BC18C3C10E16EE3300B34460 /* StringConstructor.h */; };
     1506                9E8792C1193FB6800076CA78 /* Tracing.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D53726E0E1C54880021E549 /* Tracing.h */; };
     1507                9E8792C2193FB6800076CA78 /* Uint16WithFraction.h in Headers */ = {isa = PBXBuildFile; fileRef = 866739D113BFDE710023D87C /* Uint16WithFraction.h */; };
     1508                9E8792C3193FB6800076CA78 /* WeakMapConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = A7CA3ADE17DA41AE006538AF /* WeakMapConstructor.h */; };
     1509                9E8792C4193FB6800076CA78 /* WeakMapData.h in Headers */ = {isa = PBXBuildFile; fileRef = A7CA3AEA17DA5168006538AF /* WeakMapData.h */; };
     1510                9E8792C5193FB6800076CA78 /* WeakMapPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = A7CA3AE017DA41AE006538AF /* WeakMapPrototype.h */; };
     1511                9E8792C7193FB6800076CA78 /* JSDataViewPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F2B66BF17B6B5AB00A7AE3F /* JSDataViewPrototype.cpp */; };
     1512                9E8792C8193FB6800076CA78 /* StringPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC18C3C50E16EE3300B34460 /* StringPrototype.cpp */; };
     1513                9E8792C9193FB6800076CA78 /* WeakMapPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7CA3ADF17DA41AE006538AF /* WeakMapPrototype.cpp */; };
     1514                9E8792CA193FB6800076CA78 /* WeakMapConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7CA3ADD17DA41AE006538AF /* WeakMapConstructor.cpp */; };
     1515                9E8792CB193FB6800076CA78 /* StringConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC18C3C00E16EE3300B34460 /* StringConstructor.cpp */; };
     1516                9E8792CC193FB6800076CA78 /* SetIteratorPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A790DD67182F499700588807 /* SetIteratorPrototype.cpp */; };
     1517                9E8792CD193FB6800076CA78 /* SetPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7299D9F17D12848005F5FF9 /* SetPrototype.cpp */; };
     1518                9E8792CE193FB6800076CA78 /* RegExpConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCD202BD0E1706A7002C7E82 /* RegExpConstructor.cpp */; };
     1519                9E8792CF193FB6800076CA78 /* RegExpPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCD202BF0E1706A7002C7E82 /* RegExpPrototype.cpp */; };
     1520                9E8792D0193FB6800076CA78 /* ObjectConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC2680C60E16D4E900A06E92 /* ObjectConstructor.cpp */; };
     1521                9E8792D1193FB6800076CA78 /* ObjectPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC2680C80E16D4E900A06E92 /* ObjectPrototype.cpp */; };
     1522                9E8792D2193FB6800076CA78 /* NameConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86EBF2F91560F036008E9222 /* NameConstructor.cpp */; };
     1523                9E8792D3193FB6800076CA78 /* NamePrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86EBF2FD1560F036008E9222 /* NamePrototype.cpp */; };
     1524                9E8792D4193FB6800076CA78 /* MathObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F692A86A0255597D01FF60F7 /* MathObject.cpp */; };
     1525                9E8792D5193FB6800076CA78 /* MapConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A700873717CBE85300C3E643 /* MapConstructor.cpp */; };
     1526                9E8792D6193FB6800076CA78 /* MapIteratorPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A74DEF8D182D991400522C22 /* MapIteratorPrototype.cpp */; };
     1527                9E8792D7193FB6800076CA78 /* MapPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A700873B17CBE8D300C3E643 /* MapPrototype.cpp */; };
     1528                9E8792D8193FB6800076CA78 /* ConsolePrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A53CE08118BC1A5600BEDF76 /* ConsolePrototype.cpp */; };
     1529                9E8792D9193FB6800076CA78 /* JSPromiseConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C184E2017BEE240007CB63A /* JSPromiseConstructor.cpp */; };
     1530                9E8792DA193FB6800076CA78 /* JSPromiseFunctions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C008CD0186F8A9300955C24 /* JSPromiseFunctions.cpp */; };
     1531                9E8792DB193FB6800076CA78 /* JSPromisePrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C184E1C17BEE22E007CB63A /* JSPromisePrototype.cpp */; };
     1532                9E8792DC193FB6800076CA78 /* JSONObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7F9935E0FD7325100A0B2D0 /* JSONObject.cpp */; };
     1533                9E8792DD193FB6800076CA78 /* JSGlobalObjectFunctions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC756FC60E2031B200DE7D12 /* JSGlobalObjectFunctions.cpp */; };
     1534                9E8792DE193FB6800076CA78 /* JSFunction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F692A85E0255597D01FF60F7 /* JSFunction.cpp */; };
     1535                9E8792DF193FB6800076CA78 /* JSBoundFunction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86FA9E8F142BBB2D001773B7 /* JSBoundFunction.cpp */; };
     1536                9E8792E0193FB6800076CA78 /* JSArrayIterator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7BDAEC417F4EA1400F6140C /* JSArrayIterator.cpp */; };
     1537                9E8792E1193FB6800076CA78 /* JSArrayBufferPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F2B66B817B6B5AB00A7AE3F /* JSArrayBufferPrototype.cpp */; };
     1538                9E8792E2193FB6800076CA78 /* JSArrayBufferConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F2B66B617B6B5AB00A7AE3F /* JSArrayBufferConstructor.cpp */; };
     1539                9E8792E3193FB6800076CA78 /* FunctionPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F692A85C0255597D01FF60F7 /* FunctionPrototype.cpp */; };
     1540                9E8792E4193FB6800076CA78 /* FunctionConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC2680C00E16D4E900A06E92 /* FunctionConstructor.cpp */; };
     1541                9E8792E5193FB6800076CA78 /* ErrorPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC02E9060E1839DB000F9297 /* ErrorPrototype.cpp */; };
     1542                9E8792E6193FB6800076CA78 /* ErrorConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC02E9040E1839DB000F9297 /* ErrorConstructor.cpp */; };
     1543                9E8792E7193FB6800076CA78 /* DatePrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCD203470E17135E002C7E82 /* DatePrototype.cpp */; };
     1544                9E8792E8193FB6800076CA78 /* DateConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCD203450E17135E002C7E82 /* DateConstructor.cpp */; };
     1545                9E8792E9193FB6800076CA78 /* BooleanPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC7952340E15EB5600A898AB /* BooleanPrototype.cpp */; };
     1546                9E8792EA193FB6800076CA78 /* BooleanConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC7952320E15EB5600A898AB /* BooleanConstructor.cpp */; };
     1547                9E8792EB193FB6800076CA78 /* ArrayIteratorPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7BDAEC217F4EA1400F6140C /* ArrayIteratorPrototype.cpp */; };
     1548                9E8792EC193FB6800076CA78 /* ArgumentsIteratorPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A76140C9182982CB00750624 /* ArgumentsIteratorPrototype.cpp */; };
     1549                9E8792ED193FB6800076CA78 /* Arguments.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC257DE50E1F51C50016B6C9 /* Arguments.cpp */; };
     1550                9E8792EE193FB6800076CA78 /* NativeErrorConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC02E9080E1839DB000F9297 /* NativeErrorConstructor.cpp */; };
     1551                9E8792EF193FB6800076CA78 /* SetConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7299DA317D12858005F5FF9 /* SetConstructor.cpp */; };
     1552                9E8792F0193FB6800076CA78 /* ArrayConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC7952060E15E8A800A898AB /* ArrayConstructor.cpp */; };
     1553                9E8792F1193FB6800076CA78 /* ArrayPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F692A84D0255597D01FF60F7 /* ArrayPrototype.cpp */; };
     1554                9E8792F2193FB6800076CA78 /* NumberConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC2680C20E16D4E900A06E92 /* NumberConstructor.cpp */; };
     1555                9E8792F3193FB6800076CA78 /* NumberPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC2680C40E16D4E900A06E92 /* NumberPrototype.cpp */; };
     1556                9EA5C7A1190F084200508EBE /* BundlePath.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9E729409190F0306001A91B5 /* BundlePath.mm */; };
     1557                9EA5C7A2190F088700508EBE /* InitializeLLVMMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9EA5C7A0190F05D200508EBE /* InitializeLLVMMac.cpp */; };
    12391558                A1712B3B11C7B212007A5315 /* RegExpCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1712B3A11C7B212007A5315 /* RegExpCache.cpp */; };
    12401559                A1712B3F11C7B228007A5315 /* RegExpCache.h in Headers */ = {isa = PBXBuildFile; fileRef = A1712B3E11C7B228007A5315 /* RegExpCache.h */; settings = {ATTRIBUTES = (Private, ); }; };
     
    17092028                E124A8F70E555775003091F1 /* OpaqueJSString.h in Headers */ = {isa = PBXBuildFile; fileRef = E124A8F50E555775003091F1 /* OpaqueJSString.h */; settings = {ATTRIBUTES = (Private, ); }; };
    17102029                E124A8F80E555775003091F1 /* OpaqueJSString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E124A8F60E555775003091F1 /* OpaqueJSString.cpp */; };
    1711                 E178636D0D9BEEC300D74E75 /* InitializeThreading.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E178636C0D9BEEC300D74E75 /* InitializeThreading.cpp */; };
    17122030                E18E3A590DF9278C00D90B34 /* VM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E18E3A570DF9278C00D90B34 /* VM.cpp */; };
    17132031                E49DC16B12EF293E00184A1F /* SourceProviderCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E49DC15512EF277200184A1F /* SourceProviderCache.cpp */; };
     
    17712089                        remoteInfo = "Generate Derived Sources";
    17722090                };
    1773                 55F8FC2B18EB937B00783E6E /* PBXContainerItemProxy */ = {
    1774                         isa = PBXContainerItemProxy;
    1775                         containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
    1776                         proxyType = 1;
    1777                         remoteGlobalIDString = 5540756218DA58AD00EFF7F2;
    1778                         remoteInfo = CompileRuntimeToLLVMIR;
    1779                 };
    17802091                5D69E911152BE5470028D720 /* PBXContainerItemProxy */ = {
    17812092                        isa = PBXContainerItemProxy;
     
    18612172                        remoteGlobalIDString = 932F5B3E0822A1C700736975;
    18622173                        remoteInfo = "JavaScriptCore (Upgraded)";
     2174                };
     2175                9E8791DA193FB6800076CA78 /* PBXContainerItemProxy */ = {
     2176                        isa = PBXContainerItemProxy;
     2177                        containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
     2178                        proxyType = 1;
     2179                        remoteGlobalIDString = 0FCEFAB51805D61600472CE4;
     2180                        remoteInfo = llvmForJSC;
     2181                };
     2182                9E8791DC193FB6800076CA78 /* PBXContainerItemProxy */ = {
     2183                        isa = PBXContainerItemProxy;
     2184                        containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
     2185                        proxyType = 1;
     2186                        remoteGlobalIDString = 65788A9D18B409EB00C189FF;
     2187                        remoteInfo = "Offline Assembler";
     2188                };
     2189                9E8791DE193FB6800076CA78 /* PBXContainerItemProxy */ = {
     2190                        isa = PBXContainerItemProxy;
     2191                        containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
     2192                        proxyType = 1;
     2193                        remoteGlobalIDString = 65FB3F6609D11E9100F49DEB;
     2194                        remoteInfo = "Generate Derived Sources";
     2195                };
     2196                9E8792FB193FB69F0076CA78 /* PBXContainerItemProxy */ = {
     2197                        isa = PBXContainerItemProxy;
     2198                        containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
     2199                        proxyType = 1;
     2200                        remoteGlobalIDString = 5540756218DA58AD00EFF7F2;
     2201                        remoteInfo = "Compile Runtime to LLVM IR";
     2202                };
     2203                9E8792FD193FB6A60076CA78 /* PBXContainerItemProxy */ = {
     2204                        isa = PBXContainerItemProxy;
     2205                        containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
     2206                        proxyType = 1;
     2207                        remoteGlobalIDString = 9E8791D8193FB6800076CA78;
     2208                        remoteInfo = "Compile Runtime to Binary";
    18632209                };
    18642210/* End PBXContainerItemProxy section */
     
    23052651                0FCEFAAA1804C13E00472CE4 /* FTLSaveRestore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FTLSaveRestore.h; path = ftl/FTLSaveRestore.h; sourceTree = "<group>"; };
    23062652                0FCEFAAE1805CA6D00472CE4 /* InitializeLLVM.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = InitializeLLVM.h; path = llvm/InitializeLLVM.h; sourceTree = "<group>"; };
    2307                 0FCEFAAF1805CA6D00472CE4 /* InitializeLLVMMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = InitializeLLVMMac.mm; path = llvm/InitializeLLVMMac.mm; sourceTree = "<group>"; };
    23082653                0FCEFAB61805D61600472CE4 /* libllvmForJSC.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = libllvmForJSC.dylib; sourceTree = BUILT_PRODUCTS_DIR; };
    23092654                0FCEFABE1805D86900472CE4 /* LLVMForJSC.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = LLVMForJSC.xcconfig; sourceTree = "<group>"; };
     
    28443189                99E45A2218A1B2590026D88F /* InputCursor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InputCursor.h; sourceTree = "<group>"; };
    28453190                99E45A2318A1B2590026D88F /* NondeterministicInput.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NondeterministicInput.h; sourceTree = "<group>"; };
     3191                9E729409190F0306001A91B5 /* BundlePath.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = BundlePath.mm; sourceTree = "<group>"; };
     3192                9E72940A190F0514001A91B5 /* BundlePath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BundlePath.h; sourceTree = "<group>"; };
     3193                9E8792FA193FB6800076CA78 /* libCompile Runtime to Binary.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libCompile Runtime to Binary.a"; sourceTree = BUILT_PRODUCTS_DIR; };
     3194                9EA5C7A0190F05D200508EBE /* InitializeLLVMMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = InitializeLLVMMac.cpp; path = llvm/InitializeLLVMMac.cpp; sourceTree = "<group>"; };
    28463195                A1712B3A11C7B212007A5315 /* RegExpCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RegExpCache.cpp; sourceTree = "<group>"; };
    28473196                A1712B3E11C7B228007A5315 /* RegExpCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegExpCache.h; sourceTree = "<group>"; };
     
    34493798                                6511230514046A4C002B101D /* testRegExp */,
    34503799                                55407AC818DA58AD00EFF7F2 /* libCompileRuntimeToLLVMIR.a */,
     3800                                9E8792FA193FB6800076CA78 /* libCompile Runtime to Binary.a */,
    34513801                        );
    34523802                        name = Products;
     
    35483898                        isa = PBXGroup;
    35493899                        children = (
     3900                                9EA5C7A0190F05D200508EBE /* InitializeLLVMMac.cpp */,
    35503901                                0FCEFABF1805D94100472CE4 /* library */,
    35513902                                0FCEFAC41805E75500472CE4 /* InitializeLLVM.cpp */,
    35523903                                0FCEFAAE1805CA6D00472CE4 /* InitializeLLVM.h */,
    3553                                 0FCEFAAF1805CA6D00472CE4 /* InitializeLLVMMac.mm */,
    35543904                                0FCEFAC51805E75500472CE4 /* InitializeLLVMPOSIX.cpp */,
    35553905                                0FCEFAC61805E75500472CE4 /* InitializeLLVMPOSIX.h */,
     
    41804530                        isa = PBXGroup;
    41814531                        children = (
     4532                                9E72940A190F0514001A91B5 /* BundlePath.h */,
     4533                                9E729409190F0306001A91B5 /* BundlePath.mm */,
    41824534                                BCF605110E203EF800B9A64D /* ArgList.cpp */,
    41834535                                BCF605120E203EF800B9A64D /* ArgList.h */,
     
    58246176                                0F235BE017178E1C00690C7F /* FTLOSRExitCompiler.h in Headers */,
    58256177                                0FEA0A11170513DB00BB722C /* FTLOutput.h in Headers */,
     6178                                9E72940B190F0514001A91B5 /* BundlePath.h in Headers */,
    58266179                                0F48532A187DFDEC0083B687 /* FTLRecoveryOpcode.h in Headers */,
    58276180                                0F6B1CC41862C47800845D97 /* FTLRegisterAtOffset.h in Headers */,
     
    63366689                        runOnlyForDeploymentPostprocessing = 0;
    63376690                };
     6691                9E8791DF193FB6800076CA78 /* Headers */ = {
     6692                        isa = PBXHeadersBuildPhase;
     6693                        buildActionMask = 2147483647;
     6694                        files = (
     6695                                9E8791E0193FB6800076CA78 /* Arguments.h in Headers */,
     6696                                9E8791E1193FB6800076CA78 /* ArgumentsIteratorConstructor.h in Headers */,
     6697                                9E8791E2193FB6800076CA78 /* ArgumentsIteratorPrototype.h in Headers */,
     6698                                9E8791E3193FB6800076CA78 /* ArrayConstructor.h in Headers */,
     6699                                9E8791E4193FB6800076CA78 /* ArrayIteratorConstructor.h in Headers */,
     6700                                9E8791E5193FB6800076CA78 /* ArrayIteratorPrototype.h in Headers */,
     6701                                9E8791E6193FB6800076CA78 /* BatchedTransitionOptimizer.h in Headers */,
     6702                                9E8791E7193FB6800076CA78 /* BigInteger.h in Headers */,
     6703                                9E8791E8193FB6800076CA78 /* CommonSlowPathsExceptions.h in Headers */,
     6704                                9E8791E9193FB6800076CA78 /* JSConsole.h in Headers */,
     6705                                9E8791EA193FB6800076CA78 /* DateConstructor.h in Headers */,
     6706                                9E8791EB193FB6800076CA78 /* DateConversion.h in Headers */,
     6707                                9E8791EC193FB6800076CA78 /* DatePrototype.h in Headers */,
     6708                                9E8791ED193FB6800076CA78 /* ErrorConstructor.h in Headers */,
     6709                                9E8791EE193FB6800076CA78 /* ConsolePrototype.h in Headers */,
     6710                                9E8791EF193FB6800076CA78 /* JSActivation.h in Headers */,
     6711                                9E8791F0193FB6800076CA78 /* JSArgumentsIterator.h in Headers */,
     6712                                9E8791F1193FB6800076CA78 /* JSArrayIterator.h in Headers */,
     6713                                9E8791F2193FB6800076CA78 /* (null) in Headers */,
     6714                                9E8791F3193FB6800076CA78 /* JSGlobalObjectDebuggable.h in Headers */,
     6715                                9E8791F4193FB6800076CA78 /* JSGlobalObjectFunctions.h in Headers */,
     6716                                9E8791F5193FB6800076CA78 /* JSMapIterator.h in Headers */,
     6717                                9E8791F6193FB6800076CA78 /* JSPromiseConstructor.h in Headers */,
     6718                                9E8791F7193FB6800076CA78 /* JSPromisePrototype.h in Headers */,
     6719                                9E8791F8193FB6800076CA78 /* JSPromiseReaction.h in Headers */,
     6720                                9E8791F9193FB6800076CA78 /* JSSetIterator.h in Headers */,
     6721                                9E8791FA193FB6800076CA78 /* JSStackInlines.h in Headers */,
     6722                                9E8791FB193FB6800076CA78 /* JSStringBuilder.h in Headers */,
     6723                                9E8791FC193FB6800076CA78 /* JSStringJoiner.h in Headers */,
     6724                                9E8791FD193FB6800076CA78 /* JSWeakMap.h in Headers */,
     6725                                9E8791FE193FB6800076CA78 /* LiteralParser.h in Headers */,
     6726                                9E8791FF193FB6800076CA78 /* MapConstructor.h in Headers */,
     6727                                9E879200193FB6800076CA78 /* MapIteratorConstructor.h in Headers */,
     6728                                9E879201193FB6800076CA78 /* MapIteratorPrototype.h in Headers */,
     6729                                9E879202193FB6800076CA78 /* MapPrototype.h in Headers */,
     6730                                9E879203193FB6800076CA78 /* NameConstructor.h in Headers */,
     6731                                9E879204193FB6800076CA78 /* NameInstance.h in Headers */,
     6732                                9E879205193FB6800076CA78 /* NamePrototype.h in Headers */,
     6733                                9E879206193FB6800076CA78 /* NativeErrorConstructor.h in Headers */,
     6734                                9E879207193FB6800076CA78 /* NativeErrorPrototype.h in Headers */,
     6735                                9E879208193FB6800076CA78 /* NumberConstructor.h in Headers */,
     6736                                9E879209193FB6800076CA78 /* StructureIDBlob.h in Headers */,
     6737                                9E87920A193FB6800076CA78 /* ArrayBuffer.h in Headers */,
     6738                                9E87920B193FB6800076CA78 /* ArrayBufferNeuteringWatchpoint.h in Headers */,
     6739                                9E87920C193FB6800076CA78 /* ArrayBufferView.h in Headers */,
     6740                                9E87920D193FB6800076CA78 /* ArrayConventions.h in Headers */,
     6741                                9E87920E193FB6800076CA78 /* ArrayPrototype.h in Headers */,
     6742                                9E87920F193FB6800076CA78 /* StructureIDTable.h in Headers */,
     6743                                9E879210193FB6800076CA78 /* ArrayStorage.h in Headers */,
     6744                                9E879211193FB6800076CA78 /* BooleanObject.h in Headers */,
     6745                                9E879212193FB6800076CA78 /* Butterfly.h in Headers */,
     6746                                9E879213193FB6800076CA78 /* ButterflyInlines.h in Headers */,
     6747                                9E879214193FB6800076CA78 /* CallData.h in Headers */,
     6748                                9E879215193FB6800076CA78 /* ClassInfo.h in Headers */,
     6749                                9E879216193FB6800076CA78 /* CodeCache.h in Headers */,
     6750                                9E879217193FB6800076CA78 /* CodeSpecializationKind.h in Headers */,
     6751                                9E879218193FB6800076CA78 /* CommonIdentifiers.h in Headers */,
     6752                                9E879219193FB6800076CA78 /* CommonSlowPaths.h in Headers */,
     6753                                9E87921A193FB6800076CA78 /* CompilationResult.h in Headers */,
     6754                                9E87921B193FB6800076CA78 /* Completion.h in Headers */,
     6755                                9E87921C193FB6800076CA78 /* ConcurrentJITLock.h in Headers */,
     6756                                9E87921D193FB6800076CA78 /* ConsoleTypes.h in Headers */,
     6757                                9E87921E193FB6800076CA78 /* ConstantMode.h in Headers */,
     6758                                9E87921F193FB6800076CA78 /* ConstructData.h in Headers */,
     6759                                9E879220193FB6800076CA78 /* DataView.h in Headers */,
     6760                                9E879221193FB6800076CA78 /* DateInstance.h in Headers */,
     6761                                9E879222193FB6800076CA78 /* DateInstanceCache.h in Headers */,
     6762                                9E879223193FB6800076CA78 /* Debugger.h in Headers */,
     6763                                9E879224193FB6800076CA78 /* DumpContext.h in Headers */,
     6764                                9E879225193FB6800076CA78 /* Error.h in Headers */,
     6765                                9E879226193FB6800076CA78 /* ErrorHandlingScope.h in Headers */,
     6766                                9E879227193FB6800076CA78 /* ErrorInstance.h in Headers */,
     6767                                9E879228193FB6800076CA78 /* ErrorPrototype.h in Headers */,
     6768                                9E879229193FB6800076CA78 /* ExceptionHelpers.h in Headers */,
     6769                                9E87922A193FB6800076CA78 /* Executable.h in Headers */,
     6770                                9E87922B193FB6800076CA78 /* Float32Array.h in Headers */,
     6771                                9E87922C193FB6800076CA78 /* Float64Array.h in Headers */,
     6772                                9E87922D193FB6800076CA78 /* ConsoleClient.h in Headers */,
     6773                                9E87922E193FB6800076CA78 /* FunctionConstructor.h in Headers */,
     6774                                9E87922F193FB6800076CA78 /* FunctionExecutableDump.h in Headers */,
     6775                                9E879230193FB6800076CA78 /* FunctionPrototype.h in Headers */,
     6776                                9E879231193FB6800076CA78 /* GenericTypedArrayView.h in Headers */,
     6777                                9E879232193FB6800076CA78 /* GenericTypedArrayViewInlines.h in Headers */,
     6778                                9E879233193FB6800076CA78 /* Identifier.h in Headers */,
     6779                                9E879234193FB6800076CA78 /* IndexingHeader.h in Headers */,
     6780                                9E879235193FB6800076CA78 /* IndexingHeaderInlines.h in Headers */,
     6781                                9E879236193FB6800076CA78 /* IndexingType.h in Headers */,
     6782                                9E879237193FB6800076CA78 /* InitializeThreading.h in Headers */,
     6783                                9E879238193FB6800076CA78 /* Int16Array.h in Headers */,
     6784                                9E879239193FB6800076CA78 /* Int32Array.h in Headers */,
     6785                                9E87923A193FB6800076CA78 /* Int8Array.h in Headers */,
     6786                                9E87923B193FB6800076CA78 /* IntendedStructureChain.h in Headers */,
     6787                                9E87923C193FB6800076CA78 /* InternalFunction.h in Headers */,
     6788                                9E87923D193FB6800076CA78 /* Intrinsic.h in Headers */,
     6789                                9E87923E193FB6800076CA78 /* JSAPIValueWrapper.h in Headers */,
     6790                                9E87923F193FB6800076CA78 /* JSArray.h in Headers */,
     6791                                9E879240193FB6800076CA78 /* JSArrayBuffer.h in Headers */,
     6792                                9E879241193FB6800076CA78 /* JSArrayBufferConstructor.h in Headers */,
     6793                                9E879242193FB6800076CA78 /* JSArrayBufferPrototype.h in Headers */,
     6794                                9E879243193FB6800076CA78 /* JSArrayBufferView.h in Headers */,
     6795                                9E879244193FB6800076CA78 /* JSArrayBufferViewInlines.h in Headers */,
     6796                                9E879245193FB6800076CA78 /* JSCell.h in Headers */,
     6797                                9E879246193FB6800076CA78 /* JSCellInlines.h in Headers */,
     6798                                9E879247193FB6800076CA78 /* JSCInlines.h in Headers */,
     6799                                9E879248193FB6800076CA78 /* JSCJSValue.h in Headers */,
     6800                                9E879249193FB6800076CA78 /* JSCJSValueInlines.h in Headers */,
     6801                                9E87924A193FB6800076CA78 /* JSDataView.h in Headers */,
     6802                                9E87924B193FB6800076CA78 /* JSDataViewPrototype.h in Headers */,
     6803                                9E87924C193FB6800076CA78 /* JSDateMath.h in Headers */,
     6804                                9E87924D193FB6800076CA78 /* JSDestructibleObject.h in Headers */,
     6805                                9E87924E193FB6800076CA78 /* JSExportMacros.h in Headers */,
     6806                                9E87924F193FB6800076CA78 /* JSFloat32Array.h in Headers */,
     6807                                9E879250193FB6800076CA78 /* JSFloat64Array.h in Headers */,
     6808                                9E879251193FB6800076CA78 /* JSFunction.h in Headers */,
     6809                                9E879252193FB6800076CA78 /* JSFunctionInlines.h in Headers */,
     6810                                9E879253193FB6800076CA78 /* JSGenericTypedArrayView.h in Headers */,
     6811                                9E879254193FB6800076CA78 /* JSGenericTypedArrayViewConstructor.h in Headers */,
     6812                                9E879255193FB6800076CA78 /* JSGenericTypedArrayViewConstructorInlines.h in Headers */,
     6813                                9E879256193FB6800076CA78 /* JSGenericTypedArrayViewInlines.h in Headers */,
     6814                                9E879257193FB6800076CA78 /* JSGenericTypedArrayViewPrototype.h in Headers */,
     6815                                9E879258193FB6800076CA78 /* JSGenericTypedArrayViewPrototypeInlines.h in Headers */,
     6816                                9E879259193FB6800076CA78 /* JSGlobalObject.h in Headers */,
     6817                                9E87925A193FB6800076CA78 /* JSInt16Array.h in Headers */,
     6818                                9E87925B193FB6800076CA78 /* JSInt32Array.h in Headers */,
     6819                                9E87925C193FB6800076CA78 /* JSInt8Array.h in Headers */,
     6820                                9E87925D193FB6800076CA78 /* JSLock.h in Headers */,
     6821                                9E87925E193FB6800076CA78 /* JSMap.h in Headers */,
     6822                                9E87925F193FB6800076CA78 /* JSNameScope.h in Headers */,
     6823                                9E879260193FB6800076CA78 /* JSObject.h in Headers */,
     6824                                9E879261193FB6800076CA78 /* JSONObject.h in Headers */,
     6825                                9E879262193FB6800076CA78 /* JSPromise.h in Headers */,
     6826                                9E879263193FB6800076CA78 /* JSPromiseDeferred.h in Headers */,
     6827                                9E879264193FB6800076CA78 /* JSPromiseFunctions.h in Headers */,
     6828                                9E879265193FB6800076CA78 /* JSProxy.h in Headers */,
     6829                                9E879266193FB6800076CA78 /* JSScope.h in Headers */,
     6830                                9E879267193FB6800076CA78 /* JSSegmentedVariableObject.h in Headers */,
     6831                                9E879268193FB6800076CA78 /* JSSet.h in Headers */,
     6832                                9E879269193FB6800076CA78 /* JSString.h in Headers */,
     6833                                9E87926A193FB6800076CA78 /* JSSymbolTableObject.h in Headers */,
     6834                                9E87926B193FB6800076CA78 /* JSType.h in Headers */,
     6835                                9E87926C193FB6800076CA78 /* JSTypedArrayConstructors.h in Headers */,
     6836                                9E87926D193FB6800076CA78 /* JSTypedArrayPrototypes.h in Headers */,
     6837                                9E87926E193FB6800076CA78 /* JSTypedArrays.h in Headers */,
     6838                                9E87926F193FB6800076CA78 /* JSTypeInfo.h in Headers */,
     6839                                9E879270193FB6800076CA78 /* JSUint16Array.h in Headers */,
     6840                                9E879271193FB6800076CA78 /* JSUint32Array.h in Headers */,
     6841                                9E879272193FB6800076CA78 /* JSUint8Array.h in Headers */,
     6842                                9E879273193FB6800076CA78 /* JSUint8ClampedArray.h in Headers */,
     6843                                9E879274193FB6800076CA78 /* JSVariableObject.h in Headers */,
     6844                                9E879275193FB6800076CA78 /* JSWithScope.h in Headers */,
     6845                                9E879276193FB6800076CA78 /* JSWrapperObject.h in Headers */,
     6846                                9E879277193FB6800076CA78 /* Lookup.h in Headers */,
     6847                                9E879278193FB6800076CA78 /* MapData.h in Headers */,
     6848                                9E879279193FB6800076CA78 /* MatchResult.h in Headers */,
     6849                                9E87927A193FB6800076CA78 /* MathObject.h in Headers */,
     6850                                9E87927B193FB6800076CA78 /* MemoryStatistics.h in Headers */,
     6851                                9E87927C193FB6800076CA78 /* Microtask.h in Headers */,
     6852                                9E87927D193FB6800076CA78 /* NumberObject.h in Headers */,
     6853                                9E87927E193FB6800076CA78 /* NumberPrototype.h in Headers */,
     6854                                9E87927F193FB6800076CA78 /* NumericStrings.h in Headers */,
     6855                                9E879280193FB6800076CA78 /* ObjectConstructor.h in Headers */,
     6856                                9E879281193FB6800076CA78 /* ObjectPrototype.h in Headers */,
     6857                                9E879282193FB6800076CA78 /* Operations.h in Headers */,
     6858                                9E879283193FB6800076CA78 /* Options.h in Headers */,
     6859                                9E879284193FB6800076CA78 /* PrivateName.h in Headers */,
     6860                                9E879285193FB6800076CA78 /* PropertyDescriptor.h in Headers */,
     6861                                9E879286193FB6800076CA78 /* PropertyMapHashTable.h in Headers */,
     6862                                9E879287193FB6800076CA78 /* PropertyName.h in Headers */,
     6863                                9E879288193FB6800076CA78 /* PropertyNameArray.h in Headers */,
     6864                                9E879289193FB6800076CA78 /* PropertyOffset.h in Headers */,
     6865                                9E87928A193FB6800076CA78 /* PropertySlot.h in Headers */,
     6866                                9E87928B193FB6800076CA78 /* PropertyStorage.h in Headers */,
     6867                                9E87928C193FB6800076CA78 /* Protect.h in Headers */,
     6868                                9E87928D193FB6800076CA78 /* PrototypeMap.h in Headers */,
     6869                                9E87928E193FB6800076CA78 /* PutDirectIndexMode.h in Headers */,
     6870                                9E87928F193FB6800076CA78 /* PutPropertySlot.h in Headers */,
     6871                                9E879290193FB6800076CA78 /* RegExp.h in Headers */,
     6872                                9E879291193FB6800076CA78 /* RegExpCache.h in Headers */,
     6873                                9E879292193FB6800076CA78 /* RegExpKey.h in Headers */,
     6874                                9E879293193FB6800076CA78 /* RegExpObject.h in Headers */,
     6875                                9E879294193FB6800076CA78 /* RegisterPreservationMode.h in Headers */,
     6876                                9E879295193FB6800076CA78 /* Reject.h in Headers */,
     6877                                9E879296193FB6800076CA78 /* SamplingCounter.h in Headers */,
     6878                                9E879297193FB6800076CA78 /* SimpleTypedArrayController.h in Headers */,
     6879                                9E879298193FB6800076CA78 /* SmallStrings.h in Headers */,
     6880                                9E879299193FB6800076CA78 /* SparseArrayValueMap.h in Headers */,
     6881                                9E87929A193FB6800076CA78 /* StackAlignment.h in Headers */,
     6882                                9E87929B193FB6800076CA78 /* StringObject.h in Headers */,
     6883                                9E87929C193FB6800076CA78 /* StringPrototype.h in Headers */,
     6884                                9E87929D193FB6800076CA78 /* Structure.h in Headers */,
     6885                                9E87929E193FB6800076CA78 /* StructureChain.h in Headers */,
     6886                                9E87929F193FB6800076CA78 /* StructureInlines.h in Headers */,
     6887                                9E8792A0193FB6800076CA78 /* StructureRareData.h in Headers */,
     6888                                9E8792A1193FB6800076CA78 /* StructureRareDataInlines.h in Headers */,
     6889                                9E8792A2193FB6800076CA78 /* StructureTransitionTable.h in Headers */,
     6890                                9E8792A3193FB6800076CA78 /* SymbolTable.h in Headers */,
     6891                                9E8792A4193FB6800076CA78 /* TestRunnerUtils.h in Headers */,
     6892                                9E8792A5193FB6800076CA78 /* ToNativeFromValue.h in Headers */,
     6893                                9E8792A6193FB6800076CA78 /* TypedArrayAdaptors.h in Headers */,
     6894                                9E8792A7193FB6800076CA78 /* TypedArrayController.h in Headers */,
     6895                                9E8792A8193FB6800076CA78 /* TypedArrayInlines.h in Headers */,
     6896                                9E8792A9193FB6800076CA78 /* TypedArrays.h in Headers */,
     6897                                9E8792AA193FB6800076CA78 /* TypedArrayType.h in Headers */,
     6898                                9E8792AB193FB6800076CA78 /* Uint16Array.h in Headers */,
     6899                                9E8792AC193FB6800076CA78 /* Uint32Array.h in Headers */,
     6900                                9E8792AD193FB6800076CA78 /* Uint8Array.h in Headers */,
     6901                                9E8792AE193FB6800076CA78 /* Uint8ClampedArray.h in Headers */,
     6902                                9E8792AF193FB6800076CA78 /* VM.h in Headers */,
     6903                                9E8792B0193FB6800076CA78 /* VMEntryScope.h in Headers */,
     6904                                9E8792B1193FB6800076CA78 /* Watchdog.h in Headers */,
     6905                                9E8792B2193FB6800076CA78 /* WeakGCMap.h in Headers */,
     6906                                9E8792B3193FB6800076CA78 /* WeakRandom.h in Headers */,
     6907                                9E8792B4193FB6800076CA78 /* WriteBarrier.h in Headers */,
     6908                                9E8792B5193FB6800076CA78 /* WriteBarrierInlines.h in Headers */,
     6909                                9E8792B6193FB6800076CA78 /* ArityCheckMode.h in Headers */,
     6910                                9E8792B7193FB6800076CA78 /* ArgList.h in Headers */,
     6911                                9E8792B8193FB6800076CA78 /* JSCallbackFunction.h in Headers */,
     6912                                9E8792B9193FB6800076CA78 /* RegExpConstructor.h in Headers */,
     6913                                9E8792BA193FB6800076CA78 /* RegExpPrototype.h in Headers */,
     6914                                9E8792BB193FB6800076CA78 /* SetConstructor.h in Headers */,
     6915                                9E8792BC193FB6800076CA78 /* SetIteratorConstructor.h in Headers */,
     6916                                9E8792BD193FB6800076CA78 /* SetIteratorPrototype.h in Headers */,
     6917                                9E8792BE193FB6800076CA78 /* SetPrototype.h in Headers */,
     6918                                9E8792BF193FB6800076CA78 /* StrictEvalActivation.h in Headers */,
     6919                                9E8792C0193FB6800076CA78 /* StringConstructor.h in Headers */,
     6920                                9E8792C1193FB6800076CA78 /* Tracing.h in Headers */,
     6921                                9E8792C2193FB6800076CA78 /* Uint16WithFraction.h in Headers */,
     6922                                9E8792C3193FB6800076CA78 /* WeakMapConstructor.h in Headers */,
     6923                                9E8792C4193FB6800076CA78 /* WeakMapData.h in Headers */,
     6924                                9E8792C5193FB6800076CA78 /* WeakMapPrototype.h in Headers */,
     6925                        );
     6926                        runOnlyForDeploymentPostprocessing = 0;
     6927                };
    63386928/* End PBXHeadersBuildPhase section */
    63396929
     
    64627052                                3713F014142905240036387F /* Check For Inappropriate Objective-C Class Names */,
    64637053                                A55DEAA416703DF7003DB841 /* Check For Inappropriate Macros in External Headers */,
    6464                                 55850CA118F4842000F81829 /* Build Symbol Index Table */,
    64657054                        );
    64667055                        buildRules = (
    64677056                        );
    64687057                        dependencies = (
    6469                                 55F8FC2C18EB937B00783E6E /* PBXTargetDependency */,
     7058                                9E8792FE193FB6A60076CA78 /* PBXTargetDependency */,
    64707059                                0FCEFABD1805D66300472CE4 /* PBXTargetDependency */,
    64717060                                65788AAD18B40A7B00C189FF /* PBXTargetDependency */,
     
    64957084                        productReference = 932F5BE10822A1C700736975 /* jsc */;
    64967085                        productType = "com.apple.product-type.tool";
     7086                };
     7087                9E8791D8193FB6800076CA78 /* Compile Runtime to Binary */ = {
     7088                        isa = PBXNativeTarget;
     7089                        buildConfigurationList = 9E8792F5193FB6800076CA78 /* Build configuration list for PBXNativeTarget "Compile Runtime to Binary" */;
     7090                        buildPhases = (
     7091                                9E8791DF193FB6800076CA78 /* Headers */,
     7092                                9E8792C6193FB6800076CA78 /* Sources */,
     7093                                9E8792F4193FB6800076CA78 /* Build Symbol Index Table */,
     7094                        );
     7095                        buildRules = (
     7096                        );
     7097                        dependencies = (
     7098                                9E8792FC193FB69F0076CA78 /* PBXTargetDependency */,
     7099                                9E8791D9193FB6800076CA78 /* PBXTargetDependency */,
     7100                                9E8791DB193FB6800076CA78 /* PBXTargetDependency */,
     7101                                9E8791DD193FB6800076CA78 /* PBXTargetDependency */,
     7102                        );
     7103                        name = "Compile Runtime to Binary";
     7104                        productName = JavaScriptCore;
     7105                        productReference = 9E8792FA193FB6800076CA78 /* libCompile Runtime to Binary.a */;
     7106                        productType = "com.apple.product-type.library.static";
    64977107                };
    64987108/* End PBXNativeTarget section */
     
    65227132                                932F5BE30822A1C700736975 /* All */,
    65237133                                5540756218DA58AD00EFF7F2 /* Compile Runtime to LLVM IR */,
     7134                                9E8791D8193FB6800076CA78 /* Compile Runtime to Binary */,
    65247135                                932F5B3E0822A1C700736975 /* JavaScriptCore */,
    65257136                                0FCEFAB51805D61600472CE4 /* llvmForJSC */,
     
    66157226                        shellScript = "exec ${SRCROOT}/postprocess-headers.sh";
    66167227                };
    6617                 55850CA118F4842000F81829 /* Build Symbol Index Table */ = {
    6618                         isa = PBXShellScriptBuildPhase;
    6619                         buildActionMask = 2147483647;
    6620                         files = (
    6621                         );
    6622                         inputPaths = (
    6623                         );
    6624                         name = "Build Symbol Index Table";
    6625                         outputPaths = (
    6626                                 "$(BUILT_PRODUCTS_DIR)/$(JAVASCRIPTCORE_RESOURCES_DIR)/Runtime.symtbl",
    6627                         );
    6628                         runOnlyForDeploymentPostprocessing = 0;
    6629                         shellPath = /bin/sh;
    6630                         shellScript = "${SRCROOT}/build-symbol-table-index.sh";
    6631                 };
    66327228                559CD06A18F487A800F9ADC0 /* Copy LLVM IR */ = {
    66337229                        isa = PBXShellScriptBuildPhase;
     
    67667362                        shellPath = /bin/sh;
    67677363                        shellScript = "set -e\n\nmkdir -p \"${BUILT_PRODUCTS_DIR}/DerivedSources/JavaScriptCore\"\ncd \"${BUILT_PRODUCTS_DIR}/DerivedSources/JavaScriptCore\"\n\n/bin/ln -sfh \"${SRCROOT}\" JavaScriptCore\nexport JavaScriptCore=\"JavaScriptCore\"\nexport BUILT_PRODUCTS_DIR=\"../..\"\n\nmake --no-builtin-rules -f \"JavaScriptCore/DerivedSources.make\" -j `/usr/sbin/sysctl -n hw.ncpu`\n";
     7364                };
     7365                9E8792F4193FB6800076CA78 /* Build Symbol Index Table */ = {
     7366                        isa = PBXShellScriptBuildPhase;
     7367                        buildActionMask = 2147483647;
     7368                        files = (
     7369                        );
     7370                        inputPaths = (
     7371                        );
     7372                        name = "Build Symbol Index Table";
     7373                        outputPaths = (
     7374                                "$(BUILT_PRODUCTS_DIR)/$(JAVASCRIPTCORE_RESOURCES_DIR)/Runtime.symtbl",
     7375                                "$(SHARED_DERIVED_FILE_DIR)/JavaScriptCore/InlineRuntimeSymbolTable.h",
     7376                        );
     7377                        runOnlyForDeploymentPostprocessing = 0;
     7378                        shellPath = /bin/sh;
     7379                        shellScript = "${SRCROOT}/build-symbol-table-index.sh";
    67687380                };
    67697381                A55DEAA416703DF7003DB841 /* Check For Inappropriate Macros in External Headers */ = {
     
    68317443                        buildActionMask = 2147483647;
    68327444                        files = (
     7445                                552EA70C1908704800A66F2F /* JSDataViewPrototype.cpp in Sources */,
     7446                                55A04E211908653D0024E40C /* StringPrototype.cpp in Sources */,
     7447                                556A35EE190844C000B56747 /* WeakMapPrototype.cpp in Sources */,
     7448                                556A35ED190844B500B56747 /* WeakMapConstructor.cpp in Sources */,
     7449                                556A35EC190844AA00B56747 /* StringConstructor.cpp in Sources */,
     7450                                556A35EA190844A000B56747 /* SetIteratorPrototype.cpp in Sources */,
     7451                                556A35EB190844A000B56747 /* SetPrototype.cpp in Sources */,
     7452                                556A35E81908448000B56747 /* RegExpConstructor.cpp in Sources */,
     7453                                556A35E91908448000B56747 /* RegExpPrototype.cpp in Sources */,
     7454                                556A35E61908444900B56747 /* ObjectConstructor.cpp in Sources */,
     7455                                556A35E71908444900B56747 /* ObjectPrototype.cpp in Sources */,
     7456                                556A35E41908443700B56747 /* NameConstructor.cpp in Sources */,
     7457                                556A35E51908443700B56747 /* NamePrototype.cpp in Sources */,
     7458                                556A35E31908442A00B56747 /* MathObject.cpp in Sources */,
     7459                                556A35E01908441D00B56747 /* MapConstructor.cpp in Sources */,
     7460                                556A35E11908441D00B56747 /* MapIteratorPrototype.cpp in Sources */,
     7461                                556A35E21908441D00B56747 /* MapPrototype.cpp in Sources */,
     7462                                556A35DF190843F300B56747 /* ConsolePrototype.cpp in Sources */,
     7463                                556A35DC190843E700B56747 /* JSPromiseConstructor.cpp in Sources */,
     7464                                556A35DD190843E700B56747 /* JSPromiseFunctions.cpp in Sources */,
     7465                                556A35DE190843E700B56747 /* JSPromisePrototype.cpp in Sources */,
     7466                                556A35DB190843CF00B56747 /* JSONObject.cpp in Sources */,
     7467                                556A35DA190843C200B56747 /* JSGlobalObjectFunctions.cpp in Sources */,
     7468                                556A35D9190843B100B56747 /* JSFunction.cpp in Sources */,
     7469                                556A35D81908439D00B56747 /* JSBoundFunction.cpp in Sources */,
     7470                                556A35D71908438A00B56747 /* JSArrayIterator.cpp in Sources */,
     7471                                556A35D61908437500B56747 /* JSArrayBufferPrototype.cpp in Sources */,
     7472                                556A35D51908436800B56747 /* JSArrayBufferConstructor.cpp in Sources */,
     7473                                556A35D41908434D00B56747 /* FunctionPrototype.cpp in Sources */,
     7474                                556A35D31908434300B56747 /* FunctionConstructor.cpp in Sources */,
     7475                                556A35D21908433300B56747 /* ErrorPrototype.cpp in Sources */,
     7476                                556A35D11908432900B56747 /* ErrorConstructor.cpp in Sources */,
     7477                                556A35D01908432000B56747 /* DatePrototype.cpp in Sources */,
     7478                                556A35CF1908431600B56747 /* DateConstructor.cpp in Sources */,
     7479                                556A35CE1908430B00B56747 /* BooleanPrototype.cpp in Sources */,
     7480                                556A35CD190842FD00B56747 /* BooleanConstructor.cpp in Sources */,
     7481                                556A35CC190842F300B56747 /* ArrayIteratorPrototype.cpp in Sources */,
     7482                                556A35CB190842E800B56747 /* ArgumentsIteratorPrototype.cpp in Sources */,
     7483                                556A35CA190842DD00B56747 /* Arguments.cpp in Sources */,
     7484                                556A35C9190842D500B56747 /* NativeErrorConstructor.cpp in Sources */,
     7485                                556A35C8190842BC00B56747 /* SetConstructor.cpp in Sources */,
    68337486                                554078AB18DA58AD00EFF7F2 /* ArrayConstructor.cpp in Sources */,
    68347487                                554078AF18DA58AD00EFF7F2 /* ArrayPrototype.cpp in Sources */,
     
    68507503                        buildActionMask = 2147483647;
    68517504                        files = (
     7505                                9EA5C7A2190F088700508EBE /* InitializeLLVMMac.cpp in Sources */,
     7506                                9EA5C7A1190F084200508EBE /* BundlePath.mm in Sources */,
     7507                                9E729408190F021E001A91B5 /* InitializeLLVMPOSIX.cpp in Sources */,
     7508                                9E729407190F01A5001A91B5 /* InitializeThreading.cpp in Sources */,
    68527509                                0FFA549716B8835000B3A982 /* A64DOpcode.cpp in Sources */,
    68537510                                0F55F0F414D1063900AC7649 /* AbstractPC.cpp in Sources */,
     
    71037760                                0F13E04E16164A1F00DC8DE7 /* IndexingType.cpp in Sources */,
    71047761                                0FCEFACA1805E75500472CE4 /* InitializeLLVM.cpp in Sources */,
    7105                                 0FCEFAB11805CA6D00472CE4 /* InitializeLLVMMac.mm in Sources */,
    7106                                 0FCEFACB1805E75500472CE4 /* InitializeLLVMPOSIX.cpp in Sources */,
    7107                                 E178636D0D9BEEC300D74E75 /* InitializeThreading.cpp in Sources */,
    71087762                                A513E5B7185B8BD3007E95AD /* InjectedScript.cpp in Sources */,
    71097763                                A514B2C2185A684400F3C7CB /* InjectedScriptBase.cpp in Sources */,
     
    74168070                        runOnlyForDeploymentPostprocessing = 0;
    74178071                };
     8072                9E8792C6193FB6800076CA78 /* Sources */ = {
     8073                        isa = PBXSourcesBuildPhase;
     8074                        buildActionMask = 2147483647;
     8075                        files = (
     8076                                9E8792C7193FB6800076CA78 /* JSDataViewPrototype.cpp in Sources */,
     8077                                9E8792C8193FB6800076CA78 /* StringPrototype.cpp in Sources */,
     8078                                9E8792C9193FB6800076CA78 /* WeakMapPrototype.cpp in Sources */,
     8079                                9E8792CA193FB6800076CA78 /* WeakMapConstructor.cpp in Sources */,
     8080                                9E8792CB193FB6800076CA78 /* StringConstructor.cpp in Sources */,
     8081                                9E8792CC193FB6800076CA78 /* SetIteratorPrototype.cpp in Sources */,
     8082                                9E8792CD193FB6800076CA78 /* SetPrototype.cpp in Sources */,
     8083                                9E8792CE193FB6800076CA78 /* RegExpConstructor.cpp in Sources */,
     8084                                9E8792CF193FB6800076CA78 /* RegExpPrototype.cpp in Sources */,
     8085                                9E8792D0193FB6800076CA78 /* ObjectConstructor.cpp in Sources */,
     8086                                9E8792D1193FB6800076CA78 /* ObjectPrototype.cpp in Sources */,
     8087                                9E8792D2193FB6800076CA78 /* NameConstructor.cpp in Sources */,
     8088                                9E8792D3193FB6800076CA78 /* NamePrototype.cpp in Sources */,
     8089                                9E8792D4193FB6800076CA78 /* MathObject.cpp in Sources */,
     8090                                9E8792D5193FB6800076CA78 /* MapConstructor.cpp in Sources */,
     8091                                9E8792D6193FB6800076CA78 /* MapIteratorPrototype.cpp in Sources */,
     8092                                9E8792D7193FB6800076CA78 /* MapPrototype.cpp in Sources */,
     8093                                9E8792D8193FB6800076CA78 /* ConsolePrototype.cpp in Sources */,
     8094                                9E8792D9193FB6800076CA78 /* JSPromiseConstructor.cpp in Sources */,
     8095                                9E8792DA193FB6800076CA78 /* JSPromiseFunctions.cpp in Sources */,
     8096                                9E8792DB193FB6800076CA78 /* JSPromisePrototype.cpp in Sources */,
     8097                                9E8792DC193FB6800076CA78 /* JSONObject.cpp in Sources */,
     8098                                9E8792DD193FB6800076CA78 /* JSGlobalObjectFunctions.cpp in Sources */,
     8099                                9E8792DE193FB6800076CA78 /* JSFunction.cpp in Sources */,
     8100                                9E8792DF193FB6800076CA78 /* JSBoundFunction.cpp in Sources */,
     8101                                9E8792E0193FB6800076CA78 /* JSArrayIterator.cpp in Sources */,
     8102                                9E8792E1193FB6800076CA78 /* JSArrayBufferPrototype.cpp in Sources */,
     8103                                9E8792E2193FB6800076CA78 /* JSArrayBufferConstructor.cpp in Sources */,
     8104                                9E8792E3193FB6800076CA78 /* FunctionPrototype.cpp in Sources */,
     8105                                9E8792E4193FB6800076CA78 /* FunctionConstructor.cpp in Sources */,
     8106                                9E8792E5193FB6800076CA78 /* ErrorPrototype.cpp in Sources */,
     8107                                9E8792E6193FB6800076CA78 /* ErrorConstructor.cpp in Sources */,
     8108                                9E8792E7193FB6800076CA78 /* DatePrototype.cpp in Sources */,
     8109                                9E8792E8193FB6800076CA78 /* DateConstructor.cpp in Sources */,
     8110                                9E8792E9193FB6800076CA78 /* BooleanPrototype.cpp in Sources */,
     8111                                9E8792EA193FB6800076CA78 /* BooleanConstructor.cpp in Sources */,
     8112                                9E8792EB193FB6800076CA78 /* ArrayIteratorPrototype.cpp in Sources */,
     8113                                9E8792EC193FB6800076CA78 /* ArgumentsIteratorPrototype.cpp in Sources */,
     8114                                9E8792ED193FB6800076CA78 /* Arguments.cpp in Sources */,
     8115                                9E8792EE193FB6800076CA78 /* NativeErrorConstructor.cpp in Sources */,
     8116                                9E8792EF193FB6800076CA78 /* SetConstructor.cpp in Sources */,
     8117                                9E8792F0193FB6800076CA78 /* ArrayConstructor.cpp in Sources */,
     8118                                9E8792F1193FB6800076CA78 /* ArrayPrototype.cpp in Sources */,
     8119                                9E8792F2193FB6800076CA78 /* NumberConstructor.cpp in Sources */,
     8120                                9E8792F3193FB6800076CA78 /* NumberPrototype.cpp in Sources */,
     8121                        );
     8122                        runOnlyForDeploymentPostprocessing = 0;
     8123                };
    74188124/* End PBXSourcesBuildPhase section */
    74198125
     
    74448150                        targetProxy = 5540756818DA58AD00EFF7F2 /* PBXContainerItemProxy */;
    74458151                };
    7446                 55F8FC2C18EB937B00783E6E /* PBXTargetDependency */ = {
    7447                         isa = PBXTargetDependency;
    7448                         target = 5540756218DA58AD00EFF7F2 /* Compile Runtime to LLVM IR */;
    7449                         targetProxy = 55F8FC2B18EB937B00783E6E /* PBXContainerItemProxy */;
    7450                 };
    74518152                5D69E912152BE5470028D720 /* PBXTargetDependency */ = {
    74528153                        isa = PBXTargetDependency;
     
    75088209                        target = 932F5B3E0822A1C700736975 /* JavaScriptCore */;
    75098210                        targetProxy = 932F5BE60822A1C700736975 /* PBXContainerItemProxy */;
     8211                };
     8212                9E8791D9193FB6800076CA78 /* PBXTargetDependency */ = {
     8213                        isa = PBXTargetDependency;
     8214                        target = 0FCEFAB51805D61600472CE4 /* llvmForJSC */;
     8215                        targetProxy = 9E8791DA193FB6800076CA78 /* PBXContainerItemProxy */;
     8216                };
     8217                9E8791DB193FB6800076CA78 /* PBXTargetDependency */ = {
     8218                        isa = PBXTargetDependency;
     8219                        target = 65788A9D18B409EB00C189FF /* Offline Assembler */;
     8220                        targetProxy = 9E8791DC193FB6800076CA78 /* PBXContainerItemProxy */;
     8221                };
     8222                9E8791DD193FB6800076CA78 /* PBXTargetDependency */ = {
     8223                        isa = PBXTargetDependency;
     8224                        target = 65FB3F6609D11E9100F49DEB /* Derived Sources */;
     8225                        targetProxy = 9E8791DE193FB6800076CA78 /* PBXContainerItemProxy */;
     8226                };
     8227                9E8792FC193FB69F0076CA78 /* PBXTargetDependency */ = {
     8228                        isa = PBXTargetDependency;
     8229                        target = 5540756218DA58AD00EFF7F2 /* Compile Runtime to LLVM IR */;
     8230                        targetProxy = 9E8792FB193FB69F0076CA78 /* PBXContainerItemProxy */;
     8231                };
     8232                9E8792FE193FB6A60076CA78 /* PBXTargetDependency */ = {
     8233                        isa = PBXTargetDependency;
     8234                        target = 9E8791D8193FB6800076CA78 /* Compile Runtime to Binary */;
     8235                        targetProxy = 9E8792FD193FB6A60076CA78 /* PBXContainerItemProxy */;
    75108236                };
    75118237/* End PBXTargetDependency section */
     
    78748600                        name = Production;
    78758601                };
     8602                9E8792F6193FB6800076CA78 /* Debug */ = {
     8603                        isa = XCBuildConfiguration;
     8604                        baseConfigurationReference = 5540758418F4A37500602A5D /* CompileRuntimeToLLVMIR.xcconfig */;
     8605                        buildSettings = {
     8606                                OTHER_CFLAGS = "";
     8607                                OTHER_CPLUSPLUSFLAGS = "";
     8608                                PRODUCT_NAME = "Compile Runtime to Binary";
     8609                        };
     8610                        name = Debug;
     8611                };
     8612                9E8792F7193FB6800076CA78 /* Release */ = {
     8613                        isa = XCBuildConfiguration;
     8614                        baseConfigurationReference = 5540758418F4A37500602A5D /* CompileRuntimeToLLVMIR.xcconfig */;
     8615                        buildSettings = {
     8616                                OTHER_CFLAGS = "";
     8617                                OTHER_CPLUSPLUSFLAGS = "";
     8618                                PRODUCT_NAME = "Compile Runtime to Binary";
     8619                        };
     8620                        name = Release;
     8621                };
     8622                9E8792F8193FB6800076CA78 /* Profiling */ = {
     8623                        isa = XCBuildConfiguration;
     8624                        baseConfigurationReference = 5540758418F4A37500602A5D /* CompileRuntimeToLLVMIR.xcconfig */;
     8625                        buildSettings = {
     8626                                OTHER_CFLAGS = "";
     8627                                OTHER_CPLUSPLUSFLAGS = "";
     8628                                PRODUCT_NAME = "Compile Runtime to Binary";
     8629                        };
     8630                        name = Profiling;
     8631                };
     8632                9E8792F9193FB6800076CA78 /* Production */ = {
     8633                        isa = XCBuildConfiguration;
     8634                        baseConfigurationReference = 5540758418F4A37500602A5D /* CompileRuntimeToLLVMIR.xcconfig */;
     8635                        buildSettings = {
     8636                                OTHER_CFLAGS = "";
     8637                                OTHER_CPLUSPLUSFLAGS = "";
     8638                                PRODUCT_NAME = "Compile Runtime to Binary";
     8639                        };
     8640                        name = Production;
     8641                };
    78768642                A761483D0E6402F700E357FA /* Profiling */ = {
    78778643                        isa = XCBuildConfiguration;
     
    80838849                        defaultConfigurationName = Production;
    80848850                };
     8851                9E8792F5193FB6800076CA78 /* Build configuration list for PBXNativeTarget "Compile Runtime to Binary" */ = {
     8852                        isa = XCConfigurationList;
     8853                        buildConfigurations = (
     8854                                9E8792F6193FB6800076CA78 /* Debug */,
     8855                                9E8792F7193FB6800076CA78 /* Release */,
     8856                                9E8792F8193FB6800076CA78 /* Profiling */,
     8857                                9E8792F9193FB6800076CA78 /* Production */,
     8858                        );
     8859                        defaultConfigurationIsVisible = 0;
     8860                        defaultConfigurationName = Production;
     8861                };
    80858862/* End XCConfigurationList section */
    80868863        };
  • branches/ftlopt/Source/JavaScriptCore/build-symbol-table-index.py

    r169584 r169628  
    55import subprocess
    66import sys
     7from sets import Set
    78from operator import itemgetter
    89
     
    2324framework_directory = os.path.join(os.getenv("BUILT_PRODUCTS_DIR"), os.getenv("JAVASCRIPTCORE_RESOURCES_DIR"), "Runtime", current_arch)
    2425
     26
    2527symbol_table_location = os.path.join(framework_directory, "Runtime.symtbl")
    2628
     
    3436    symbol_table_modification_time = os.path.getmtime(symbol_table_location)
    3537
    36 file_suffix = "bc.gz"
     38file_suffix = "bc"
    3739file_suffix_length = len(file_suffix)
     40
     41tested_symbols_location = "./tested-symbols.symlst"
     42include_symbol_table_location = os.path.join(os.getenv("SHARED_DERIVED_FILE_DIR"), "JavaScriptCore/InlineRuntimeSymbolTable.h")
     43
     44tested_symbols = Set([])
     45
     46if os.path.isfile(tested_symbols_location):
     47    with open(tested_symbols_location, 'r') as file:
     48        print("Loading tested symbols")
     49        for line in file:
     50            tested_symbols.add(line[:-1])
    3851
    3952for bitcode_file in glob.iglob(os.path.join(framework_directory, "*." + file_suffix)):
     
    4962
    5063    for symbol in lines:
    51         if symbol[:2] == "__" and symbol[-3:] != ".eh":
    52             symbol_table[symbol] = bitcode_basename[1:]
     64        if symbol[:2] == "__" and symbol[-3:] != ".eh" and symbol in tested_symbols:
     65            symbol_table[symbol[1:]] = bitcode_basename
    5366
    5467if not symbol_table_is_out_of_date:
     
    6881print("Writing symbol table")
    6982
    70 with open(symbol_table_location, "w") as file:
    71     for symbol, location in symbol_list:
    72         file.write("{} {}\n".format(symbol, location))
    73 
     83with open(symbol_table_location, "w") as symbol_file:
     84    with open(include_symbol_table_location, "w") as include_file:
     85        include_file.write("#define FOR_EACH_LIBRARY_SYMBOL(macro)")
     86        for symbol, location in symbol_list:
     87            symbol_file.write("{} {}\n".format(symbol, location))
     88            include_file.write(" \\\nmacro(\"{}\", \"{}\")".format(symbol, location))
     89        include_file.write("\n")
    7490print("Done")
  • branches/ftlopt/Source/JavaScriptCore/build-symbol-table-index.sh

    r169584 r169628  
    99    then
    1010        mkdir -p "$RUNTIME_INSTALL_DIR/$arch"
    11         cp "$RUNTIME_DERIVED_SOURCES_DIR/$arch"/*.bc.gz "$RUNTIME_INSTALL_DIR/$arch"/.
     11        cp "$RUNTIME_DERIVED_SOURCES_DIR/$arch"/*.bc "$RUNTIME_INSTALL_DIR/$arch"/.
    1212        ${SRCROOT}/build-symbol-table-index.py $arch
    1313    fi
  • branches/ftlopt/Source/JavaScriptCore/copy-llvm-ir-to-derived-sources.sh

    r169584 r169628  
    1212        do
    1313            file_name=${file##*/}
    14             gzip -9 -c "$file" > "$RUNTIME_DERIVED_SOURCES_DIR/$arch/${file_name%.o}.bc.gz"
     14            cp "$file" "$RUNTIME_DERIVED_SOURCES_DIR/$arch/${file_name%.o}.bc"
    1515        done
    1616    fi
  • branches/ftlopt/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp

    r169588 r169628  
    12541254       
    12551255    Intrinsic intrinsic = callLinkStatus.intrinsicFor(specializationKind);
     1256
     1257    JSFunction* knownFunction = nullptr;
    12561258    if (intrinsic != NoIntrinsic) {
    12571259        emitFunctionChecks(callLinkStatus, callTarget, registerOffset, specializationKind);
     
    12701272            m_graph.compilation()->noticeInlinedCall();
    12711273        return;
    1272     }
    1273    
    1274     addCall(result, op, callTarget, argumentCountIncludingThis, registerOffset);
     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);
    12751281}
    12761282
  • branches/ftlopt/Source/JavaScriptCore/dfg/DFGNode.h

    r169588 r169628  
    10061006    }
    10071007   
     1008    bool canBeKnownFunction()
     1009    {
     1010        switch (op()) {
     1011        case Construct:
     1012        case Call:
     1013            return true;
     1014        default:
     1015            return false;
     1016        }
     1017    }
     1018
     1019    bool hasKnownFunction()
     1020    {
     1021        switch (op()) {
     1022        case Construct:
     1023        case Call:
     1024            return (bool)m_opInfo;
     1025        default:
     1026            return false;
     1027        }
     1028    }
     1029   
     1030    JSFunction* knownFunction()
     1031    {
     1032        ASSERT(canBeKnownFunction());
     1033        return bitwise_cast<JSFunction*>(m_opInfo);
     1034    }
     1035
     1036    void giveKnownFunction(JSFunction* callData)
     1037    {
     1038        ASSERT(canBeKnownFunction());
     1039        m_opInfo = bitwise_cast<uintptr_t>(callData);
     1040    }
     1041
    10081042    bool hasFunction()
    10091043    {
  • branches/ftlopt/Source/JavaScriptCore/ftl/FTLAbbreviatedTypes.h

    r169584 r169628  
    4444typedef LLVMTypeRef LType;
    4545typedef LLVMValueRef LValue;
     46typedef LLVMMemoryBufferRef LMemoryBuffer;
    4647
    4748} } // namespace JSC::FTL
  • branches/ftlopt/Source/JavaScriptCore/ftl/FTLAbbreviations.h

    r164424 r169628  
    114114static inline LType typeOf(LValue value) { return llvm->TypeOf(value); }
    115115
     116static inline LType getElementType(LType value) { return llvm->GetElementType(value); }
     117
    116118static inline unsigned mdKindID(LContext context, const char* string) { return llvm->GetMDKindIDInContext(context, string, std::strlen(string)); }
    117119static inline LValue mdString(LContext context, const char* string, unsigned length) { return llvm->MDStringInContext(context, string, length); }
     
    135137static inline void setMetadata(LValue instruction, unsigned kind, LValue metadata) { llvm->SetMetadata(instruction, kind, metadata); }
    136138
     139static inline LValue getFirstInstruction(LBasicBlock block) { return llvm->GetFirstInstruction(block); }
     140static inline LValue getNextInstruction(LValue instruction) { return llvm->GetNextInstruction(instruction); }
     141
     142
    137143static inline LValue addFunction(LModule module, const char* name, LType type) { return llvm->AddFunction(module, name, type); }
    138 static inline void setLinkage(LValue global, LLinkage linkage) { llvm->SetLinkage(global, linkage); }
     144static inline LValue getNamedFunction(LModule module, const char* name) { return llvm->GetNamedFunction(module, name); }
     145static inline LValue getFirstFunction(LModule module) { return llvm->GetFirstFunction(module); }
     146static inline LValue getNextFunction(LValue function) { return llvm->GetNextFunction(function); }
     147
    139148static inline void setFunctionCallingConv(LValue function, LCallConv convention) { llvm->SetFunctionCallConv(function, convention); }
    140149static inline void addTargetDependentFunctionAttr(LValue function, const char* key, const char* value) { llvm->AddTargetDependentFunctionAttr(function, key, value); }
     150static inline void removeFunctionAttr(LValue function, LLVMAttribute pa) { llvm->RemoveFunctionAttr(function, pa); }
     151
     152
     153
     154static inline void setLinkage(LValue global, LLVMLinkage linkage) { llvm->SetLinkage(global, linkage); }
     155static inline void setVisibility(LValue global, LLVMVisibility viz) { llvm->SetVisibility(global, viz); }
     156static inline LLVMBool isDeclaration(LValue global) { return llvm->IsDeclaration(global); }
     157
     158static inline LLVMBool linkModules(LModule dest, LModule str, LLVMLinkerMode mode, char** outMessage) { return llvm->LinkModules(dest, str, mode, outMessage); }
     159
     160static inline const char * getValueName(LValue global) { return llvm->GetValueName(global); }
     161
     162static inline LValue getNamedGlobal(LModule module, const char* name) { return llvm->GetNamedGlobal(module, name); }
     163static inline LValue getFirstGlobal(LModule module) { return llvm->GetFirstGlobal(module); }
     164static inline LValue getNextGlobal(LValue global) { return llvm->GetNextGlobal(global); }
     165
     166
     167
     168
    141169
    142170static inline LValue addExternFunction(LModule module, const char* name, LType type)
     
    147175}
    148176
     177static inline LLVMBool createMemoryBufferWithContentsOfFile(const char* path, LLVMMemoryBufferRef* outMemBuf, char** outMessage)
     178{
     179    return llvm->CreateMemoryBufferWithContentsOfFile(path, outMemBuf, outMessage);
     180}
     181
     182
     183static inline LLVMBool parseBitcodeInContext(LLVMContextRef contextRef, LLVMMemoryBufferRef memBuf, LModule *outModule, char **outMessage)
     184{
     185    return llvm->ParseBitcodeInContext(contextRef, memBuf, outModule, outMessage);
     186}
     187
     188
     189static inline void disposeMemoryBuffer(LLVMMemoryBufferRef memBuf){ llvm->DisposeMemoryBuffer(memBuf); }
     190
     191
     192static inline LModule moduleCreateWithNameInContext(const char* moduleID, LContext context){ return llvm->ModuleCreateWithNameInContext(moduleID, context); }
     193static inline void disposeModule(LModule m){ llvm->DisposeModule(m); }
     194
    149195static inline LValue getParam(LValue function, unsigned index) { return llvm->GetParam(function, index); }
     196
     197static inline void getParamTypes(LType function, LType* dest) { return llvm->GetParamTypes(function, dest); }
    150198static inline LValue getUndef(LType type) { return llvm->GetUndef(type); }
    151199
     
    156204static inline LValue constNull(LType type) { return llvm->ConstNull(type); }
    157205static inline LValue constBitCast(LValue value, LType type) { return llvm->ConstBitCast(value, type); }
     206
     207static inline LBasicBlock getFirstBasicBlock(LValue function) { return llvm->GetFirstBasicBlock(function); }
     208static inline LBasicBlock getNextBasicBlock(LBasicBlock block) { return llvm->GetNextBasicBlock(block); }
    158209
    159210static inline LBasicBlock appendBasicBlock(LContext context, LValue function, const char* name = "") { return llvm->AppendBasicBlockInContext(context, function, name); }
  • branches/ftlopt/Source/JavaScriptCore/ftl/FTLCompile.cpp

    r169584 r169628  
    524524            modulePasses = llvm->CreatePassManager();
    525525            llvm->AddTargetData(llvm->GetExecutionEngineTargetData(engine), modulePasses);
     526
     527            LLVMTargetMachineRef targetMachine = llvm->GetExecutionEngineTargetMachine(engine);
     528           
     529            llvm->AddAnalysisPasses(targetMachine, modulePasses);
    526530            llvm->AddPromoteMemoryToRegisterPass(modulePasses);
     531
     532            llvm->AddGlobalOptimizerPass(modulePasses);
     533
     534            llvm->AddFunctionInliningPass(modulePasses);
     535            llvm->AddPruneEHPass(modulePasses);
     536            llvm->AddGlobalDCEPass(modulePasses);
     537           
    527538            llvm->AddConstantPropagationPass(modulePasses);
     539            llvm->AddAggressiveDCEPass(modulePasses);
    528540            llvm->AddInstructionCombiningPass(modulePasses);
    529541            llvm->AddBasicAliasAnalysisPass(modulePasses);
     
    532544            llvm->AddCFGSimplificationPass(modulePasses);
    533545            llvm->AddDeadStoreEliminationPass(modulePasses);
     546
    534547            llvm->RunPassManager(modulePasses, state.module);
    535548        } else {
    536549            LLVMPassManagerBuilderRef passBuilder = llvm->PassManagerBuilderCreate();
    537550            llvm->PassManagerBuilderSetOptLevel(passBuilder, Options::llvmOptimizationLevel());
     551            llvm->PassManagerBuilderUseInlinerWithThreshold(passBuilder, 275);
    538552            llvm->PassManagerBuilderSetSizeLevel(passBuilder, Options::llvmSizeLevel());
    539553       
  • branches/ftlopt/Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp

    r169588 r169628  
    2929#if ENABLE(FTL_JIT)
    3030
     31#include "BundlePath.h"
    3132#include "CodeBlockWithJITType.h"
    3233#include "DFGAbstractInterpreterInlines.h"
     
    4142#include "FTLThunks.h"
    4243#include "FTLWeightedTarget.h"
     44#include "JSCInlines.h"
    4345#include "LinkBuffer.h"
    4446#include "OperandsInlines.h"
    45 #include "JSCInlines.h"
    4647#include "VirtualRegister.h"
    4748#include <atomic>
     49#include <dlfcn.h>
     50#include <llvm/InitializeLLVM.h>
    4851#include <wtf/ProcessID.h>
    4952
     
    9497        , m_interpreter(state.graph, m_state)
    9598        , m_stackmapIDs(0)
     99        , m_tbaaKind(mdKindID(state.context, "tbaa"))
     100        , m_tbaaStructKind(mdKindID(state.context, "tbaa.struct"))
    96101    {
    97102    }
     
    110115       
    111116        m_ftlState.module =
    112             llvm->ModuleCreateWithNameInContext(name.data(), m_ftlState.context);
     117            moduleCreateWithNameInContext(name.data(), m_ftlState.context);
    113118       
    114119        m_ftlState.function = addFunction(
     
    139144        m_out.appendTo(m_prologue, stackOverflow);
    140145        createPhiVariables();
     146
     147        Vector<BasicBlock*> depthFirst;
     148        m_graph.getBlocksInDepthFirstOrder(depthFirst);
     149
     150        int maxNumberOfArguments = -1;
     151        for (unsigned blockIndex = depthFirst.size(); blockIndex--; ) {
     152            BasicBlock* block = depthFirst[blockIndex];
     153            for (unsigned nodeIndex = block->size(); nodeIndex--; ) {
     154                Node* m_node = block->at(nodeIndex);
     155                if (m_node->hasKnownFunction()) {
     156                    int numArgs = m_node->numChildren();
     157                    NativeFunction func = m_node->knownFunction()->nativeFunction();
     158                    Dl_info info;
     159                    if (dladdr((void*)func, &info)) {
     160                        LValue callee = getFunctionBySymbol(info.dli_sname);
     161                        if (callee && numArgs > maxNumberOfArguments)
     162                            maxNumberOfArguments = numArgs;
     163                    }
     164                }
     165            }
     166        }
     167
    141168        LValue capturedAlloca = m_out.alloca(arrayType(m_out.int64, m_graph.m_nextMachineLocal));
     169
     170        if (maxNumberOfArguments >= 0) {
     171            m_execState = m_out.alloca(arrayType(m_out.int64, JSStack::CallFrameHeaderSize + maxNumberOfArguments));
     172            m_execStorage = m_out.ptrToInt(m_execState, m_out.intPtr);       
     173        }
     174
    142175        m_captured = m_out.add(
    143176            m_out.ptrToInt(capturedAlloca, m_out.intPtr),
     
    176209            m_out.constInt32(MacroAssembler::maxJumpReplacementSize()));
    177210        m_out.unreachable();
    178        
    179         Vector<BasicBlock*> depthFirst;
    180         m_graph.getBlocksInDepthFirstOrder(depthFirst);
     211
     212
    181213        for (unsigned i = 0; i < depthFirst.size(); ++i)
    182214            compileBlock(depthFirst[i]);
     
    35533585        setBoolean(m_out.bitNot(boolify(m_node->child1())));
    35543586    }
    3555    
     3587
    35563588    void compileCallOrConstruct()
    35573589    {
     
    35593591        int numPassedArgs = m_node->numChildren() - 1;
    35603592        int numArgs = numPassedArgs + dummyThisArgument;
    3561        
    3562         LValue callee = lowJSValue(m_graph.varArgChild(m_node, 0));
    3563        
     3593
     3594        if (m_node->hasKnownFunction()
     3595            && possiblyCompileInlineableNativeCall(dummyThisArgument, numPassedArgs, numArgs))
     3596            return;
     3597
     3598        LValue jsCallee = lowJSValue(m_graph.varArgChild(m_node, 0));
     3599
    35643600        unsigned stackmapID = m_stackmapIDs++;
    35653601       
     
    35693605        arguments.append(constNull(m_out.ref8));
    35703606        arguments.append(m_out.constInt32(1 + JSStack::CallFrameHeaderSize - JSStack::CallerFrameAndPCSize + numArgs));
    3571         arguments.append(callee); // callee -> %rax
     3607        arguments.append(jsCallee); // callee -> %rax
    35723608        arguments.append(getUndef(m_out.int64)); // code block
    35733609        arguments.append(getUndef(m_out.int64)); // scope chain
    3574         arguments.append(callee); // callee -> stack
     3610        arguments.append(jsCallee); // callee -> stack
    35753611        arguments.append(m_out.constInt64(numArgs)); // argument count and zeros for the tag
    35763612        if (dummyThisArgument)
     
    35883624        setJSValue(call);
    35893625    }
    3590    
     3626
    35913627    void compileJump()
    35923628    {
     
    39403976    }
    39413977   
     3978    bool possiblyCompileInlineableNativeCall(int dummyThisArgument, int numPassedArgs, int numArgs)
     3979    {
     3980        JSFunction* knownFunction = m_node->knownFunction();
     3981        NativeFunction function = knownFunction->nativeFunction();
     3982        Dl_info info;
     3983        if (dladdr((void*)function, &info)) {
     3984            LValue callee = getFunctionBySymbol(info.dli_sname);
     3985            LType typeCallee;
     3986            if (callee && (typeCallee = typeOf(callee)) && (typeCallee = getElementType(typeCallee))) {
     3987
     3988                JSScope* scope = knownFunction->scopeUnchecked();
     3989                m_out.storePtr(m_callFrame, m_execStorage, m_heaps.CallFrame_callerFrame);
     3990                m_out.storePtr(constNull(m_out.intPtr), addressFor(m_execStorage, JSStack::CodeBlock));
     3991                m_out.storePtr(weakPointer(scope), addressFor(m_execStorage, JSStack::ScopeChain));
     3992                m_out.storePtr(weakPointer(knownFunction), addressFor(m_execStorage, JSStack::Callee));
     3993
     3994                m_out.store64(m_out.constInt64(numArgs), addressFor(m_execStorage, JSStack::ArgumentCount));
     3995
     3996                if (dummyThisArgument)
     3997                    m_out.storePtr(getUndef(m_out.int64), addressFor(m_execStorage, JSStack::ThisArgument));
     3998               
     3999                for (int i = 0; i < numPassedArgs; ++i) {
     4000                    m_out.storePtr(lowJSValue(m_graph.varArgChild(m_node, 1 + i)),
     4001                        addressFor(m_execStorage, dummyThisArgument ? JSStack::FirstArgument : JSStack::ThisArgument, i * sizeof(Register)));
     4002                }
     4003
     4004                LType typeCalleeArg;
     4005                getParamTypes(typeCallee, &typeCalleeArg);
     4006                LValue calleeCallFrame = m_out.address(m_execState, m_heaps.CallFrame_callerFrame).value();
     4007                m_out.storePtr(m_out.ptrToInt(calleeCallFrame, m_out.intPtr), m_out.absolute(&vm().topCallFrame));
     4008               
     4009                LValue call = vmCall(callee,
     4010                    m_out.bitCast(calleeCallFrame, typeCalleeArg));
     4011
     4012                if (Options::verboseCompilation())
     4013                    dataLog("Inlining: ", info.dli_sname, "\n");
     4014
     4015                setJSValue(call);
     4016                return true;
     4017            }
     4018        }
     4019        return false;
     4020    }
     4021
     4022    LValue getFunctionBySymbol(const CString symbol)
     4023    {
     4024        if (!m_ftlState.symbolTable.contains(symbol))
     4025            return nullptr;
     4026        if (!getModuleByPathForSymbol(m_ftlState.symbolTable.get(symbol), symbol))
     4027            return nullptr;
     4028        return getNamedFunction(m_ftlState.module, symbol.data());
     4029    }
     4030
     4031    bool getModuleByPathForSymbol(const CString path, const CString symbol)
     4032    {
     4033        if (m_ftlState.nativeLoadedLibraries.contains(path)) {
     4034            LValue function = getNamedFunction(m_ftlState.module, symbol.data());
     4035            if (!isInlinableSize(function)) {
     4036                // We had no choice but to compile this function, but don't try to inline it ever again.
     4037                m_ftlState.symbolTable.remove(symbol);
     4038                return false;
     4039            }
     4040            return true;
     4041        }
     4042
     4043        LMemoryBuffer memBuf;
     4044       
     4045        ASSERT(isX86() || isARM64());
     4046
     4047        const CString actualPath = toCString(bundlePath().data(),
     4048            isX86() ? "/Resources/Runtime/x86_64/" : "/Resources/Runtime/arm64/",
     4049            path.data());
     4050
     4051        if (createMemoryBufferWithContentsOfFile(actualPath.data(), &memBuf, nullptr)) {
     4052            if (Options::verboseCompilation())
     4053                dataLog("Failed to load module at ", actualPath.data(), "\n for symbol ", symbol.data());
     4054            return false;
     4055        }
     4056
     4057        LModule module;
     4058
     4059        if (parseBitcodeInContext(m_ftlState.context, memBuf, &module, nullptr)) {
     4060            disposeMemoryBuffer(memBuf);
     4061            return false;
     4062        }
     4063
     4064        disposeMemoryBuffer(memBuf);
     4065       
     4066        if (LValue function = getNamedFunction(m_ftlState.module, symbol.data())) {
     4067            if (!isInlinableSize(function)) {
     4068                m_ftlState.symbolTable.remove(symbol);
     4069                disposeModule(module);
     4070                return false;
     4071            }
     4072        }
     4073
     4074        Vector<CString> namedFunctions;
     4075        for (LValue function = getFirstFunction(module); function; function = getNextFunction(function)) {
     4076            CString functionName(getValueName(function));
     4077            namedFunctions.append(functionName);
     4078           
     4079            for (LBasicBlock basicBlock = getFirstBasicBlock(function); basicBlock; basicBlock = getNextBasicBlock(basicBlock)) {
     4080                for (LValue instruction = getFirstInstruction(basicBlock); instruction; instruction = getNextInstruction(instruction)) {
     4081                    setMetadata(instruction, m_tbaaKind, nullptr);
     4082                    setMetadata(instruction, m_tbaaStructKind, nullptr);
     4083                }
     4084            }
     4085        }
     4086
     4087        Vector<CString> namedGlobals;
     4088        for (LValue global = getFirstGlobal(module); global; global = getNextGlobal(global)) {
     4089            CString globalName(getValueName(global));
     4090            namedGlobals.append(globalName);
     4091        }
     4092
     4093        if (linkModules(m_ftlState.module, module, LLVMLinkerDestroySource, nullptr))
     4094            return false;
     4095       
     4096        for (CString* symbol = namedFunctions.begin(); symbol != namedFunctions.end(); ++symbol) {
     4097            LValue function = getNamedFunction(m_ftlState.module, symbol->data());
     4098            setVisibility(function, LLVMHiddenVisibility);
     4099            if (!isDeclaration(function)) {
     4100                setLinkage(function, LLVMPrivateLinkage);
     4101
     4102                if (ASSERT_DISABLED)
     4103                    removeFunctionAttr(function, LLVMStackProtectAttribute);
     4104            }
     4105        }
     4106
     4107        for (CString* symbol = namedGlobals.begin(); symbol != namedGlobals.end(); ++symbol) {
     4108            LValue global = getNamedGlobal(m_ftlState.module, symbol->data());
     4109            setVisibility(global, LLVMHiddenVisibility);
     4110            if (!isDeclaration(global))
     4111                setLinkage(global, LLVMPrivateLinkage);
     4112        }
     4113
     4114        m_ftlState.nativeLoadedLibraries.add(path);
     4115        return true;
     4116    }
     4117
     4118    bool isInlinableSize(LValue function)
     4119    {
     4120        size_t instructionCount = 0;
     4121        size_t maxSize = Options::maximumLLVMInstructionCountForNativeInlining();
     4122        for (LBasicBlock basicBlock = getFirstBasicBlock(function); basicBlock; basicBlock = getNextBasicBlock(basicBlock)) {
     4123            for (LValue instruction = getFirstInstruction(basicBlock); instruction; instruction = getNextInstruction(instruction)) {
     4124                if (++instructionCount >= maxSize)
     4125                    return false;
     4126            }
     4127        }
     4128        return true;
     4129    }
     4130
    39424131    LValue didOverflowStack()
    39434132    {
     
    61236312    HashMap<BasicBlock*, LBasicBlock> m_blocks;
    61246313   
     6314    LValue m_execState;
     6315    LValue m_execStorage;
    61256316    LValue m_callFrame;
    61266317    LValue m_captured;
     
    61546345   
    61556346    uint32_t m_stackmapIDs;
     6347    unsigned m_tbaaKind;
     6348    unsigned m_tbaaStructKind;
    61566349};
    61576350
  • branches/ftlopt/Source/JavaScriptCore/ftl/FTLState.cpp

    r169584 r169628  
    3333#include "FTLJITCode.h"
    3434#include "FTLJITFinalizer.h"
     35#include "InlineRuntimeSymbolTable.h"
     36#include <llvm/InitializeLLVM.h>
     37#include <stdio.h>
    3538
    3639namespace JSC { namespace FTL {
     
    4750    , compactUnwindSize(0)
    4851{
     52
     53#define SYMBOL_TABLE_ADD(symbol, file) \
     54    symbolTable.fastAdd(symbol, file);
     55    FOR_EACH_LIBRARY_SYMBOL(SYMBOL_TABLE_ADD)
     56#undef SYMBOL_TABLE_ADD
     57   
    4958    switch (graph.m_plan.mode) {
    5059    case FTLMode: {
  • branches/ftlopt/Source/JavaScriptCore/ftl/FTLState.h

    r169584 r169628  
    8282   
    8383    void dumpState(const char* when);
     84
     85    HashSet<CString> nativeLoadedLibraries;
     86    HashMap<CString, CString> symbolTable;
    8487};
    8588
  • branches/ftlopt/Source/JavaScriptCore/heap/HandleStack.h

    r169584 r169628  
    5454
    5555private:
    56     void grow();
     56    JS_EXPORT_PRIVATE void grow();
    5757    void zapTo(Frame&);
    5858    HandleSlot findFirstAfter(HandleSlot);
  • branches/ftlopt/Source/JavaScriptCore/llvm/InitializeLLVM.h

    r169584 r169628  
    2929#if HAVE(LLVM)
    3030
     31#include <string>
     32#include <wtf/text/CString.h>
     33
    3134namespace JSC {
    3235
    3336void initializeLLVMImpl();
     37
     38extern const CString* llvmBitcodeLibraryForInliningPath;
    3439
    3540// You msut call this before using JSC::llvm. It's safe to call this multiple times.
  • branches/ftlopt/Source/JavaScriptCore/llvm/LLVMAPIFunctions.h

    r169584 r169628  
    3030
    3131#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)) \
    3239    macro(void, InitializeCore, (LLVMPassRegistryRef R)) \
    3340    macro(void, Shutdown, ()) \
     
    5259    macro(LLVMContextRef, GetModuleContext, (LLVMModuleRef M)) \
    5360    macro(LLVMTypeRef, GetTypeByName, (LLVMModuleRef M, const char *Name)) \
     61    macro(void, DumpType, (LLVMTypeRef Val)) \
    5462    macro(unsigned, GetNamedMetadataNumOperands, (LLVMModuleRef M, const char* name)) \
    5563    macro(void, GetNamedMetadataOperands, (LLVMModuleRef M, const char* name, LLVMValueRef *Dest)) \
     
    576584    macro(void *, RecompileAndRelinkFunction, (LLVMExecutionEngineRef EE, LLVMValueRef Fn)) \
    577585    macro(LLVMTargetDataRef, GetExecutionEngineTargetData, (LLVMExecutionEngineRef EE)) \
     586    macro(LLVMTargetMachineRef, GetExecutionEngineTargetMachine, (LLVMExecutionEngineRef EE)) \
    578587    macro(void, AddGlobalMapping, (LLVMExecutionEngineRef EE, LLVMValueRef Global, void* Addr)) \
    579588    macro(void *, GetPointerToGlobal, (LLVMExecutionEngineRef EE, LLVMValueRef Global)) \
     
    602611    macro(void, PassManagerBuilderPopulateModulePassManager, (LLVMPassManagerBuilderRef PMB, LLVMPassManagerRef PM)) \
    603612    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)) \
    604615    macro(void, AddAggressiveDCEPass, (LLVMPassManagerRef PM)) \
    605616    macro(void, AddCFGSimplificationPass, (LLVMPassManagerRef PM)) \
    606617    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)) \
    607625    macro(void, AddGVNPass, (LLVMPassManagerRef PM)) \
    608626    macro(void, AddIndVarSimplifyPass, (LLVMPassManagerRef PM)) \
  • branches/ftlopt/Source/JavaScriptCore/llvm/LLVMHeaders.h

    r169584 r169628  
    4444
    4545#include <llvm-c/Analysis.h>
     46#include <llvm-c/BitReader.h>
    4647#include <llvm-c/Core.h>
    4748#include <llvm-c/Disassembler.h>
    4849#include <llvm-c/ExecutionEngine.h>
     50#include <llvm-c/Initialization.h>
     51#include <llvm-c/Linker.h>
    4952#include <llvm-c/Target.h>
     53#include <llvm-c/TargetMachine.h>
     54#include <llvm-c/Transforms/IPO.h>
    5055#include <llvm-c/Transforms/PassManagerBuilder.h>
    5156#include <llvm-c/Transforms/Scalar.h>
  • branches/ftlopt/Source/JavaScriptCore/runtime/DateConversion.h

    r169584 r169628  
    4040};
    4141
    42 WTF::String formatDateTime(const GregorianDateTime&, DateTimeFormat, bool asUTCVariant);
     42JS_EXPORT_PRIVATE WTF::String formatDateTime(const GregorianDateTime&, DateTimeFormat, bool asUTCVariant);
    4343
    4444} // namespace JSC
  • branches/ftlopt/Source/JavaScriptCore/runtime/DateInstance.h

    r169584 r169628  
    3232        JS_EXPORT_PRIVATE void finishCreation(VM&, double);
    3333
    34         static void destroy(JSCell*);
     34        JS_EXPORT_PRIVATE static void destroy(JSCell*);
    3535 
    3636    public:
     
    7575
    7676    private:
    77         const GregorianDateTime* calculateGregorianDateTime(ExecState*) const;
    78         const GregorianDateTime* calculateGregorianDateTimeUTC(ExecState*) const;
     77        JS_EXPORT_PRIVATE const GregorianDateTime* calculateGregorianDateTime(ExecState*) const;
     78        JS_EXPORT_PRIVATE const GregorianDateTime* calculateGregorianDateTimeUTC(ExecState*) const;
    7979
    8080        mutable RefPtr<DateInstanceData> m_data;
  • branches/ftlopt/Source/JavaScriptCore/runtime/ExceptionHelpers.h

    r169584 r169628  
    5151JSString* errorDescriptionForValue(ExecState*, JSValue);
    5252
    53 JSObject* throwOutOfMemoryError(ExecState*);
    54 JSObject* throwStackOverflowError(ExecState*);
    55 JSObject* throwTerminatedExecutionException(ExecState*);
     53JS_EXPORT_PRIVATE JSObject* throwOutOfMemoryError(ExecState*);
     54JS_EXPORT_PRIVATE JSObject* throwStackOverflowError(ExecState*);
     55JS_EXPORT_PRIVATE JSObject* throwTerminatedExecutionException(ExecState*);
    5656
    5757
  • branches/ftlopt/Source/JavaScriptCore/runtime/JSArray.h

    r169584 r169628  
    6262    JS_EXPORT_PRIVATE static bool defineOwnProperty(JSObject*, ExecState*, PropertyName, const PropertyDescriptor&, bool throwException);
    6363
    64     static bool getOwnPropertySlot(JSObject*, ExecState*, PropertyName, PropertySlot&);
     64    JS_EXPORT_PRIVATE static bool getOwnPropertySlot(JSObject*, ExecState*, PropertyName, PropertySlot&);
    6565
    6666    DECLARE_EXPORT_INFO;
     
    6868    unsigned length() const { return getArrayLength(); }
    6969    // OK to use on new arrays, but not if it might be a RegExpMatchArray.
    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*);
     70    JS_EXPORT_PRIVATE bool setLength(ExecState*, unsigned, bool throwException = false);
     71
     72    JS_EXPORT_PRIVATE void sort(ExecState*);
     73    JS_EXPORT_PRIVATE void sort(ExecState*, JSValue compareFunction, CallType, const CallData&);
     74    JS_EXPORT_PRIVATE void sortNumeric(ExecState*, JSValue compareFunction, CallType, const CallData&);
     75
     76    JS_EXPORT_PRIVATE void push(ExecState*, JSValue);
     77    JS_EXPORT_PRIVATE JSValue pop(ExecState*);
    7878
    7979    enum ShiftCountMode {
     
    132132    }
    133133
    134     void fillArgList(ExecState*, MarkedArgumentBuffer&);
    135     void copyToArguments(ExecState*, CallFrame*, uint32_t length, int32_t firstVarArgOffset);
     134    JS_EXPORT_PRIVATE void fillArgList(ExecState*, MarkedArgumentBuffer&);
     135    JS_EXPORT_PRIVATE void copyToArguments(ExecState*, CallFrame*, uint32_t length, int32_t firstVarArgOffset);
    136136
    137137    static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype, IndexingType indexingType)
     
    158158       
    159159    bool shiftCountWithAnyIndexingType(ExecState*, unsigned startIndex, unsigned count);
    160     bool shiftCountWithArrayStorage(unsigned startIndex, unsigned count, ArrayStorage*);
     160    JS_EXPORT_PRIVATE bool shiftCountWithArrayStorage(unsigned startIndex, unsigned count, ArrayStorage*);
    161161
    162162    bool unshiftCountWithAnyIndexingType(ExecState*, unsigned startIndex, unsigned count);
  • branches/ftlopt/Source/JavaScriptCore/runtime/JSCJSValue.h

    r169584 r169628  
    241241
    242242    // Integer conversions.
    243     JS_EXPORT_PRIVATE double toInteger(ExecState*) const;
    244     double toIntegerPreserveNaN(ExecState*) const;
     243    double toInteger(ExecState*) const;
     244    JS_EXPORT_PRIVATE double toIntegerPreserveNaN(ExecState*) const;
    245245    int32_t toInt32(ExecState*) const;
    246246    uint32_t toUInt32(ExecState*) const;
     
    248248    // Floating point conversions (this is a convenience method for webcore;
    249249    // signle precision float is not a representation used in JS or JSC).
    250     float toFloat(ExecState* exec) const { return static_cast<float>(toNumber(exec)); }
     250    JS_EXPORT_PRIVATE float toFloat(ExecState* exec) const { return static_cast<float>(toNumber(exec)); }
    251251
    252252    // Object operations, with the toObject operation included.
     
    256256    JSValue get(ExecState*, unsigned propertyName, PropertySlot&) const;
    257257    void put(ExecState*, PropertyName, JSValue, PutPropertySlot&);
    258     void putToPrimitive(ExecState*, PropertyName, JSValue, PutPropertySlot&);
    259     void putToPrimitiveByIndex(ExecState*, unsigned propertyName, JSValue, bool shouldThrow);
     258    JS_EXPORT_PRIVATE void putToPrimitive(ExecState*, PropertyName, JSValue, PutPropertySlot&);
     259    JS_EXPORT_PRIVATE void putToPrimitiveByIndex(ExecState*, unsigned propertyName, JSValue, bool shouldThrow);
    260260    void putByIndex(ExecState*, unsigned propertyName, JSValue, bool shouldThrow);
    261261
  • branches/ftlopt/Source/JavaScriptCore/runtime/JSDateMath.h

    r169584 r169628  
    5151class VM;
    5252
    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&);
     53JS_EXPORT_PRIVATE void msToGregorianDateTime(VM&, double, bool outputIsUTC, GregorianDateTime&);
     54JS_EXPORT_PRIVATE double gregorianDateTimeToMS(VM&, const GregorianDateTime&, double, bool inputIsUTC);
     55JS_EXPORT_PRIVATE double getUTCOffset(VM&);
     56JS_EXPORT_PRIVATE double parseDate(VM&, const WTF::String&);
    5757
    5858} // namespace JSC
  • branches/ftlopt/Source/JavaScriptCore/runtime/JSObject.h

    r169584 r169628  
    111111
    112112    JSValue prototype() const;
    113     void setPrototype(VM&, JSValue prototype);
    114     bool setPrototypeWithCycleCheck(ExecState*, JSValue prototype);
     113    JS_EXPORT_PRIVATE void setPrototype(VM&, JSValue prototype);
     114    JS_EXPORT_PRIVATE bool setPrototypeWithCycleCheck(ExecState*, JSValue prototype);
    115115       
    116116    bool mayInterceptIndexedAccesses()
     
    132132    // currently returns incorrect results for the DOM window (with non-own properties)
    133133    // being returned. Once this is fixed we should migrate code & remove this method.
    134     bool getOwnPropertyDescriptor(ExecState*, PropertyName, PropertyDescriptor&);
    135 
    136     bool allowsAccessFrom(ExecState*);
     134    JS_EXPORT_PRIVATE bool getOwnPropertyDescriptor(ExecState*, PropertyName, PropertyDescriptor&);
     135
     136    JS_EXPORT_PRIVATE bool allowsAccessFrom(ExecState*);
    137137
    138138    unsigned getArrayLength() const
     
    590590    JSFunction* putDirectBuiltinFunction(VM&, JSGlobalObject*, const PropertyName&, FunctionExecutable*, unsigned attributes);
    591591    JSFunction* putDirectBuiltinFunctionWithoutTransition(VM&, JSGlobalObject*, const PropertyName&, FunctionExecutable*, unsigned attributes);
    592     void putDirectNativeFunctionWithoutTransition(VM&, JSGlobalObject*, const PropertyName&, unsigned functionLength, NativeFunction, Intrinsic, unsigned attributes);
     592    JS_EXPORT_PRIVATE void putDirectNativeFunctionWithoutTransition(VM&, JSGlobalObject*, const PropertyName&, unsigned functionLength, NativeFunction, Intrinsic, unsigned attributes);
    593593
    594594    JS_EXPORT_PRIVATE static bool defineOwnProperty(JSObject*, ExecState*, PropertyName, const PropertyDescriptor&, bool shouldThrow);
     
    601601    bool isErrorInstance() const;
    602602
    603     void seal(VM&);
    604     void freeze(VM&);
     603    JS_EXPORT_PRIVATE void seal(VM&);
     604    JS_EXPORT_PRIVATE void freeze(VM&);
    605605    JS_EXPORT_PRIVATE void preventExtensions(VM&);
    606606    bool isSealed(VM& vm) { return structure(vm)->isSealed(vm); }
     
    979979    ContiguousJSValues ensureContiguousSlow(VM&);
    980980    ContiguousJSValues rageEnsureContiguousSlow(VM&);
    981     ArrayStorage* ensureArrayStorageSlow(VM&);
     981    JS_EXPORT_PRIVATE ArrayStorage* ensureArrayStorageSlow(VM&);
    982982   
    983983    enum DoubleToContiguousMode { EncodeValueAsDouble, RageConvertDoubleToValue };
  • branches/ftlopt/Source/JavaScriptCore/runtime/JSWrapperObject.h

    r169584 r169628  
    6161        static const unsigned StructureFlags = OverridesVisitChildren | Base::StructureFlags;
    6262
    63         static void visitChildren(JSCell*, SlotVisitor&);
     63        JS_EXPORT_PRIVATE static void visitChildren(JSCell*, SlotVisitor&);
    6464
    6565    private:
  • branches/ftlopt/Source/JavaScriptCore/runtime/Options.h

    r169584 r169628  
    197197    v(unsigned, maximumInliningRecursionForMustInline, 3) \
    198198    \
     199    v(unsigned, maximumLLVMInstructionCountForNativeInlining, 80) \
     200    \
    199201    /* Maximum size of a caller for enabling inlining. This is purely to protect us */\
    200202    /* from super long compiles that take a lot of memory. */\
  • branches/ftlopt/Source/JavaScriptCore/runtime/RegExp.h

    r169584 r169628  
    6262
    6363        JS_EXPORT_PRIVATE int match(VM&, const String&, unsigned startOffset, Vector<int, 32>& ovector);
    64         MatchResult match(VM&, const String&, unsigned startOffset);
     64        JS_EXPORT_PRIVATE MatchResult match(VM&, const String&, unsigned startOffset);
    6565        unsigned numSubpatterns() const { return m_numSubpatterns; }
    6666
  • branches/ftlopt/Source/JavaScriptCore/runtime/StringObject.h

    r169584 r169628  
    4646        static StringObject* create(VM&, JSGlobalObject*, JSString*);
    4747
    48         static bool getOwnPropertySlot(JSObject*, ExecState*, PropertyName, PropertySlot&);
    49         static bool getOwnPropertySlotByIndex(JSObject*, ExecState*, unsigned propertyName, PropertySlot&);
     48        JS_EXPORT_PRIVATE static bool getOwnPropertySlot(JSObject*, ExecState*, PropertyName, PropertySlot&);
     49        JS_EXPORT_PRIVATE static bool getOwnPropertySlotByIndex(JSObject*, ExecState*, unsigned propertyName, PropertySlot&);
    5050
    51         static void put(JSCell*, ExecState*, PropertyName, JSValue, PutPropertySlot&);
    52         static void putByIndex(JSCell*, ExecState*, unsigned propertyName, JSValue, bool shouldThrow);
     51        JS_EXPORT_PRIVATE static void put(JSCell*, ExecState*, PropertyName, JSValue, PutPropertySlot&);
     52        JS_EXPORT_PRIVATE static void putByIndex(JSCell*, ExecState*, unsigned propertyName, JSValue, bool shouldThrow);
    5353
    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);
     54        JS_EXPORT_PRIVATE static bool deleteProperty(JSCell*, ExecState*, PropertyName);
     55        JS_EXPORT_PRIVATE static bool deletePropertyByIndex(JSCell*, ExecState*, unsigned propertyName);
     56        JS_EXPORT_PRIVATE static void getOwnPropertyNames(JSObject*, ExecState*, PropertyNameArray&, EnumerationMode);
     57        JS_EXPORT_PRIVATE static bool defineOwnProperty(JSObject*, ExecState*, PropertyName, const PropertyDescriptor&, bool shouldThrow);
    5858
    5959        DECLARE_EXPORT_INFO;
  • branches/ftlopt/Source/JavaScriptCore/runtime/Structure.h

    r169588 r169628  
    121121    static Structure* toCacheableDictionaryTransition(VM&, Structure*);
    122122    static Structure* toUncacheableDictionaryTransition(VM&, Structure*);
    123     static Structure* sealTransition(VM&, Structure*);
    124     static Structure* freezeTransition(VM&, Structure*);
     123    JS_EXPORT_PRIVATE static Structure* sealTransition(VM&, Structure*);
     124    JS_EXPORT_PRIVATE static Structure* freezeTransition(VM&, Structure*);
    125125    static Structure* preventExtensionsTransition(VM&, Structure*);
    126     static Structure* nonPropertyTransition(VM&, Structure*, NonPropertyTransition);
    127 
    128     bool isSealed(VM&);
    129     bool isFrozen(VM&);
     126    JS_EXPORT_PRIVATE static Structure* nonPropertyTransition(VM&, Structure*, NonPropertyTransition);
     127
     128    JS_EXPORT_PRIVATE bool isSealed(VM&);
     129    JS_EXPORT_PRIVATE bool isFrozen(VM&);
    130130    bool isExtensible() const { return !m_preventExtensions; }
    131131    bool didTransition() const { return m_didTransition; }
     
    489489    bool checkOffsetConsistency() const;
    490490
    491     void allocateRareData(VM&);
     491    JS_EXPORT_PRIVATE void allocateRareData(VM&);
    492492    void cloneRareDataFrom(VM&, const Structure*);
    493493
Note: See TracChangeset for help on using the changeset viewer.