| Differences between
and this patch
- Source/JavaScriptCore/ChangeLog +147 lines
Lines 1-3 Source/JavaScriptCore/ChangeLog_sec1
1
2013-10-09  Filip Pizlo  <fpizlo@apple.com>
2
3
        FTL: Soft-link LLVM as a workaround for LLVM's static initializers and exit-time destructors
4
        https://bugs.webkit.org/show_bug.cgi?id=122566
5
6
        Reviewed by Mark Rowe.
7
        
8
        The JSC project now builds a libllvmForJSC.dylib. If FTL is enabled, this
9
        gets copied into JavaScriptCore.framework/Versions/A/Libraries. JSC will
10
        load the dylib by finding it using NSBundle APIs and then doing dlopen().
11
        That will only happen lazily, when something happens that requires LLVM.
12
        
13
        This mostly takes care of LLVM static initialization overhead by deferring
14
        it until it's really needed.
15
        
16
        This takes care of LLVM's exit-time destructors because inside
17
        libllvmForJSC.dylib, we override __cxa_atexit.
18
        
19
        * Configurations/JavaScriptCore.xcconfig:
20
        * Configurations/LLVMForJSC.xcconfig: Added.
21
        * JavaScriptCore.xcodeproj/project.pbxproj:
22
        * dfg/DFGPlan.cpp:
23
        (JSC::DFG::Plan::compileInThreadImpl):
24
        * disassembler/LLVMDisassembler.cpp:
25
        (JSC::tryToDisassembleWithLLVM):
26
        * ftl/FTLAbbreviatedTypes.h:
27
        * ftl/FTLAbbreviations.h:
28
        (JSC::FTL::voidType):
29
        (JSC::FTL::int1Type):
30
        (JSC::FTL::int8Type):
31
        (JSC::FTL::int16Type):
32
        (JSC::FTL::int32Type):
33
        (JSC::FTL::int64Type):
34
        (JSC::FTL::intPtrType):
35
        (JSC::FTL::floatType):
36
        (JSC::FTL::doubleType):
37
        (JSC::FTL::pointerType):
38
        (JSC::FTL::structType):
39
        (JSC::FTL::functionType):
40
        (JSC::FTL::typeOf):
41
        (JSC::FTL::mdKindID):
42
        (JSC::FTL::mdString):
43
        (JSC::FTL::mdNode):
44
        (JSC::FTL::setMetadata):
45
        (JSC::FTL::addFunction):
46
        (JSC::FTL::setLinkage):
47
        (JSC::FTL::setFunctionCallingConv):
48
        (JSC::FTL::getParam):
49
        (JSC::FTL::constInt):
50
        (JSC::FTL::constReal):
51
        (JSC::FTL::constIntToPtr):
52
        (JSC::FTL::constBitCast):
53
        (JSC::FTL::appendBasicBlock):
54
        (JSC::FTL::insertBasicBlock):
55
        (JSC::FTL::buildPhi):
56
        (JSC::FTL::addIncoming):
57
        (JSC::FTL::buildAlloca):
58
        (JSC::FTL::buildAdd):
59
        (JSC::FTL::buildSub):
60
        (JSC::FTL::buildMul):
61
        (JSC::FTL::buildDiv):
62
        (JSC::FTL::buildRem):
63
        (JSC::FTL::buildNeg):
64
        (JSC::FTL::buildFAdd):
65
        (JSC::FTL::buildFSub):
66
        (JSC::FTL::buildFMul):
67
        (JSC::FTL::buildFDiv):
68
        (JSC::FTL::buildFRem):
69
        (JSC::FTL::buildFNeg):
70
        (JSC::FTL::buildAnd):
71
        (JSC::FTL::buildOr):
72
        (JSC::FTL::buildXor):
73
        (JSC::FTL::buildShl):
74
        (JSC::FTL::buildAShr):
75
        (JSC::FTL::buildLShr):
76
        (JSC::FTL::buildNot):
77
        (JSC::FTL::buildLoad):
78
        (JSC::FTL::buildStore):
79
        (JSC::FTL::buildSExt):
80
        (JSC::FTL::buildZExt):
81
        (JSC::FTL::buildFPToSI):
82
        (JSC::FTL::buildFPToUI):
83
        (JSC::FTL::buildSIToFP):
84
        (JSC::FTL::buildUIToFP):
85
        (JSC::FTL::buildIntCast):
86
        (JSC::FTL::buildFPCast):
87
        (JSC::FTL::buildIntToPtr):
88
        (JSC::FTL::buildPtrToInt):
89
        (JSC::FTL::buildBitCast):
90
        (JSC::FTL::buildICmp):
91
        (JSC::FTL::buildFCmp):
92
        (JSC::FTL::buildCall):
93
        (JSC::FTL::setTailCall):
94
        (JSC::FTL::buildExtractValue):
95
        (JSC::FTL::buildSelect):
96
        (JSC::FTL::buildBr):
97
        (JSC::FTL::buildCondBr):
98
        (JSC::FTL::buildSwitch):
99
        (JSC::FTL::addCase):
100
        (JSC::FTL::buildRet):
101
        (JSC::FTL::buildUnreachable):
102
        (JSC::FTL::dumpModule):
103
        (JSC::FTL::verifyModule):
104
        * ftl/FTLCompile.cpp:
105
        (JSC::FTL::compile):
106
        * ftl/FTLFail.cpp:
107
        (JSC::FTL::fail):
108
        * ftl/FTLJITCode.h:
109
        * ftl/FTLJITFinalizer.h:
110
        * ftl/FTLLink.cpp:
111
        * ftl/FTLLowerDFGToLLVM.cpp:
112
        (JSC::FTL::LowerDFGToLLVM::lower):
113
        * ftl/FTLOutput.cpp:
114
        (JSC::FTL::Output::Output):
115
        (JSC::FTL::Output::~Output):
116
        * ftl/FTLOutput.h:
117
        (JSC::FTL::Output::appendTo):
118
        * ftl/FTLState.cpp:
119
        (JSC::FTL::State::State):
120
        (JSC::FTL::State::~State):
121
        * ftl/WebKitLLVMLibraryAnchor.cpp: Removed.
122
        * jsc.cpp:
123
        (jscmain):
124
        * llvm: Added.
125
        * llvm/InitializeLLVM.cpp: Added.
126
        (JSC::initializeLLVM):
127
        * llvm/InitializeLLVM.h: Added.
128
        * llvm/InitializeLLVMMac.mm: Added.
129
        (JSC::initializeLLVMImpl):
130
        * llvm/InitializeLLVMPOSIX.cpp: Added.
131
        (JSC::initializeLLVMPOSIX):
132
        * llvm/InitializeLLVMPOSIX.h: Added.
133
        * llvm/LLVMAPI.cpp: Added.
134
        * llvm/LLVMAPI.h: Added.
135
        * llvm/LLVMAPIFunctions.h: Added.
136
        * llvm/LLVMHeaders.h: Added.
137
        * llvm/library: Added.
138
        * llvm/library/LLVMAnchor.cpp: Added.
139
        * llvm/library/LLVMExports.cpp: Added.
140
        (initializeAndGetJSCLLVMAPI):
141
        * llvm/library/LLVMOverrides.cpp: Added.
142
        (__cxa_atexit):
143
        * llvm/library/config_llvm.h: Added.
144
        * runtime/InitializeThreading.cpp:
145
        (JSC::initializeThreadingOnce):
146
        * runtime/Options.h:
147
1
2013-10-10  Mark Hahnenberg  <mhahnenberg@apple.com>
148
2013-10-10  Mark Hahnenberg  <mhahnenberg@apple.com>
2
149
3
        Objective-C API: blocks aren't callable via 'new'
150
        Objective-C API: blocks aren't callable via 'new'
- Source/JavaScriptCore/jsc.cpp -10 / +2 lines
Lines 846-855 int jscmain(int argc, char** argv) Source/JavaScriptCore/jsc.cpp_sec1
846
    // Note that the options parsing can affect VM creation, and thus
846
    // Note that the options parsing can affect VM creation, and thus
847
    // comes first.
847
    // comes first.
848
    CommandLine options(argc, argv);
848
    CommandLine options(argc, argv);
849
    RefPtr<VM> vm = VM::create(LargeHeap);
849
    VM* vm = VM::create(LargeHeap).leakRef();
850
    int result;
850
    int result;
851
    {
851
    {
852
        APIEntryShim shim(vm.get());
852
        APIEntryShim shim(vm);
853
853
854
        if (options.m_profile && !vm->m_perBytecodeProfiler)
854
        if (options.m_profile && !vm->m_perBytecodeProfiler)
855
            vm->m_perBytecodeProfiler = adoptPtr(new Profiler::Database(*vm));
855
            vm->m_perBytecodeProfiler = adoptPtr(new Profiler::Database(*vm));
Lines 870-883 int jscmain(int argc, char** argv) Source/JavaScriptCore/jsc.cpp_sec2
870
        }
870
        }
871
    }
871
    }
872
    
872
    
873
    if (Options::neverDeleteVMInCommandLine()) {
874
        JSC::VM* temp = vm.release().leakRef();
875
        UNUSED_PARAM(temp);
876
    } else {
877
        JSLockHolder lock(*vm);
878
        vm.clear();
879
    }
880
    
881
    return result;
873
    return result;
882
}
874
}
883
875
- Source/JavaScriptCore/Configurations/JavaScriptCore.xcconfig -5 / +1 lines
Lines 35-49 JSVALUE_MODEL_x86_64 = 64; Source/JavaScriptCore/Configurations/JavaScriptCore.xcconfig_sec1
35
// Prevent C++ standard library operator new, delete and their related exception types from being exported as weak symbols.
35
// Prevent C++ standard library operator new, delete and their related exception types from being exported as weak symbols.
36
OTHER_LDFLAGS_HIDE_SYMBOLS = -Wl,-unexported_symbol -Wl,__ZTISt9bad_alloc -Wl,-unexported_symbol -Wl,__ZTISt9exception -Wl,-unexported_symbol -Wl,__ZTSSt9bad_alloc -Wl,-unexported_symbol -Wl,__ZTSSt9exception -Wl,-unexported_symbol -Wl,__ZdlPvS_ -Wl,-unexported_symbol -Wl,__ZnwmPv -Wl,-all_load;
36
OTHER_LDFLAGS_HIDE_SYMBOLS = -Wl,-unexported_symbol -Wl,__ZTISt9bad_alloc -Wl,-unexported_symbol -Wl,__ZTISt9exception -Wl,-unexported_symbol -Wl,__ZTSSt9bad_alloc -Wl,-unexported_symbol -Wl,__ZTSSt9exception -Wl,-unexported_symbol -Wl,__ZdlPvS_ -Wl,-unexported_symbol -Wl,__ZnwmPv -Wl,-all_load;
37
37
38
OTHER_LDFLAGS_LLVM = $(OTHER_LDFLAGS_LLVM_$(ENABLE_FTL_JIT));
39
OTHER_LDFLAGS_LLVM_ = ;
40
OTHER_LDFLAGS_LLVM_ENABLE_FTL_JIT = -lpthread -lm -lLLVMTableGen -lLLVMDebugInfo -lLLVMOption -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMX86Desc -lLLVMX86Info -lLLVMX86AsmPrinter -lLLVMX86Utils -lLLVMIRReader -lLLVMAsmParser -lLLVMMCDisassembler -lLLVMMCParser -lLLVMInstrumentation -lLLVMBitReader -lLLVMInterpreter -lLLVMipo -lLLVMVectorize -lLLVMLinker -lLLVMBitWriter -lLLVMMCJIT -lLLVMJIT -lLLVMCodeGen -lLLVMObjCARCOpts -lLLVMScalarOpts -lLLVMInstCombine -lLLVMTransformUtils -lLLVMipa -lLLVMAnalysis -lLLVMRuntimeDyld -lLLVMExecutionEngine -lLLVMTarget -lLLVMMC -lLLVMObject -lLLVMCore -lLLVMSupport;
41
42
OTHER_LDFLAGS_BASE = -lobjc -Wl,-Y,3 $(OTHER_LDFLAGS_HIDE_SYMBOLS);
38
OTHER_LDFLAGS_BASE = -lobjc -Wl,-Y,3 $(OTHER_LDFLAGS_HIDE_SYMBOLS);
43
OTHER_LDFLAGS = $(inherited) $(OTHER_LDFLAGS_$(PLATFORM_NAME));
39
OTHER_LDFLAGS = $(inherited) $(OTHER_LDFLAGS_$(PLATFORM_NAME));
44
OTHER_LDFLAGS_iphoneos = $(OTHER_LDFLAGS_BASE);
40
OTHER_LDFLAGS_iphoneos = $(OTHER_LDFLAGS_BASE);
45
OTHER_LDFLAGS_iphonesimulator = $(OTHER_LDFLAGS_iphoneos);
41
OTHER_LDFLAGS_iphonesimulator = $(OTHER_LDFLAGS_iphoneos);
46
OTHER_LDFLAGS_macosx = $(OTHER_LDFLAGS_BASE) $(OTHER_LDFLAGS_LLVM) -sub_library libobjc -framework CoreServices;
42
OTHER_LDFLAGS_macosx = $(OTHER_LDFLAGS_BASE) -sub_library libobjc -framework CoreServices;
47
GCC_PREFIX_HEADER = JavaScriptCorePrefix.h;
43
GCC_PREFIX_HEADER = JavaScriptCorePrefix.h;
48
GCC_SYMBOLS_PRIVATE_EXTERN = YES;
44
GCC_SYMBOLS_PRIVATE_EXTERN = YES;
49
HEADER_SEARCH_PATHS = "${BUILT_PRODUCTS_DIR}/DerivedSources/JavaScriptCore" $(HEADER_SEARCH_PATHS);
45
HEADER_SEARCH_PATHS = "${BUILT_PRODUCTS_DIR}/DerivedSources/JavaScriptCore" $(HEADER_SEARCH_PATHS);
- Source/JavaScriptCore/Configurations/LLVMForJSC.xcconfig +44 lines
Line 0 Source/JavaScriptCore/Configurations/LLVMForJSC.xcconfig_sec1
1
// Copyright (C) 2013 Apple Inc. All rights reserved.
2
//
3
// Redistribution and use in source and binary forms, with or without
4
// modification, are permitted provided that the following conditions
5
// are met:
6
// 1. Redistributions of source code must retain the above copyright
7
//    notice, this list of conditions and the following disclaimer.
8
// 2. Redistributions in binary form must reproduce the above copyright
9
//    notice, this list of conditions and the following disclaimer in the
10
//    documentation and/or other materials provided with the distribution.
11
//
12
// THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
13
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
14
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
15
// PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
16
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
17
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
18
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
19
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
20
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
21
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
22
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
23
24
#include "FeatureDefines.xcconfig"
25
#include "Version.xcconfig"
26
27
// Prevent C++ standard library operator new, delete and their related exception types from being exported as weak symbols.
28
OTHER_LDFLAGS_HIDE_SYMBOLS = -Wl,-unexported_symbol -Wl,__ZTISt9bad_alloc -Wl,-unexported_symbol -Wl,__ZTISt9exception -Wl,-unexported_symbol -Wl,__ZTSSt9bad_alloc -Wl,-unexported_symbol -Wl,__ZTSSt9exception -Wl,-unexported_symbol -Wl,__ZdlPvS_ -Wl,-unexported_symbol -Wl,__ZnwmPv -Wl,-all_load;
29
30
OTHER_LDFLAGS_LLVM = $(OTHER_LDFLAGS_LLVM_$(ENABLE_FTL_JIT));
31
OTHER_LDFLAGS_LLVM_ = ;
32
OTHER_LDFLAGS_LLVM_ENABLE_FTL_JIT = -lpthread -lm -lLLVMTableGen -lLLVMDebugInfo -lLLVMOption -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMX86Desc -lLLVMX86Info -lLLVMX86AsmPrinter -lLLVMX86Utils -lLLVMIRReader -lLLVMAsmParser -lLLVMMCDisassembler -lLLVMMCParser -lLLVMInstrumentation -lLLVMBitReader -lLLVMInterpreter -lLLVMipo -lLLVMVectorize -lLLVMLinker -lLLVMBitWriter -lLLVMMCJIT -lLLVMJIT -lLLVMCodeGen -lLLVMObjCARCOpts -lLLVMScalarOpts -lLLVMInstCombine -lLLVMTransformUtils -lLLVMipa -lLLVMAnalysis -lLLVMRuntimeDyld -lLLVMExecutionEngine -lLLVMTarget -lLLVMMC -lLLVMObject -lLLVMCore -lLLVMSupport;
33
34
OTHER_LDFLAGS_BASE = -lobjc -Wl,-Y,3 $(OTHER_LDFLAGS_HIDE_SYMBOLS);
35
OTHER_LDFLAGS = $(inherited) $(OTHER_LDFLAGS_$(PLATFORM_NAME));
36
OTHER_LDFLAGS_iphoneos = $(OTHER_LDFLAGS_BASE);
37
OTHER_LDFLAGS_iphonesimulator = $(OTHER_LDFLAGS_iphoneos);
38
OTHER_LDFLAGS_macosx = $(OTHER_LDFLAGS_BASE) $(OTHER_LDFLAGS_LLVM)
39
GCC_SYMBOLS_PRIVATE_EXTERN = YES;
40
HEADER_SEARCH_PATHS = "$(BUILT_PRODUCTS_DIR)/DerivedSources/JavaScriptCore" $(HEADER_SEARCH_PATHS);
41
42
PRODUCT_NAME = llvmForJSC;
43
EXECUTABLE_PREFIX = lib;
44
- Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj -5 / +187 lines
Lines 257-263 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec1
257
		0F63948515E4811B006A597C /* DFGArrayMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F63948215E48114006A597C /* DFGArrayMode.h */; settings = {ATTRIBUTES = (Private, ); }; };
257
		0F63948515E4811B006A597C /* DFGArrayMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F63948215E48114006A597C /* DFGArrayMode.h */; settings = {ATTRIBUTES = (Private, ); }; };
258
		0F66E16B14DF3F1600B7B2E4 /* DFGAdjacencyList.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F66E16814DF3F1300B7B2E4 /* DFGAdjacencyList.h */; settings = {ATTRIBUTES = (Private, ); }; };
258
		0F66E16B14DF3F1600B7B2E4 /* DFGAdjacencyList.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F66E16814DF3F1300B7B2E4 /* DFGAdjacencyList.h */; settings = {ATTRIBUTES = (Private, ); }; };
259
		0F66E16C14DF3F1600B7B2E4 /* DFGEdge.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F66E16914DF3F1300B7B2E4 /* DFGEdge.h */; settings = {ATTRIBUTES = (Private, ); }; };
259
		0F66E16C14DF3F1600B7B2E4 /* DFGEdge.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F66E16914DF3F1300B7B2E4 /* DFGEdge.h */; settings = {ATTRIBUTES = (Private, ); }; };
260
		0F6E5C191724AF3D005C574F /* WebKitLLVMLibraryAnchor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F6E5C181724AF3D005C574F /* WebKitLLVMLibraryAnchor.cpp */; };
261
		0F7025A91714B0FA00382C0E /* DFGOSRExitCompilerCommon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F7025A71714B0F800382C0E /* DFGOSRExitCompilerCommon.cpp */; };
260
		0F7025A91714B0FA00382C0E /* DFGOSRExitCompilerCommon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F7025A71714B0F800382C0E /* DFGOSRExitCompilerCommon.cpp */; };
262
		0F7025AA1714B0FC00382C0E /* DFGOSRExitCompilerCommon.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F7025A81714B0F800382C0E /* DFGOSRExitCompilerCommon.h */; settings = {ATTRIBUTES = (Private, ); }; };
261
		0F7025AA1714B0FC00382C0E /* DFGOSRExitCompilerCommon.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F7025A81714B0F800382C0E /* DFGOSRExitCompilerCommon.h */; settings = {ATTRIBUTES = (Private, ); }; };
263
		0F714CA416EA92F000F3EBEB /* DFGBackwardsPropagationPhase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F714CA116EA92ED00F3EBEB /* DFGBackwardsPropagationPhase.cpp */; };
262
		0F714CA416EA92F000F3EBEB /* DFGBackwardsPropagationPhase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F714CA116EA92ED00F3EBEB /* DFGBackwardsPropagationPhase.cpp */; };
Lines 374-379 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec2
374
		0FC815151405119B00CFA603 /* VTableSpectrum.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FC815141405118D00CFA603 /* VTableSpectrum.h */; settings = {ATTRIBUTES = (Private, ); }; };
373
		0FC815151405119B00CFA603 /* VTableSpectrum.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FC815141405118D00CFA603 /* VTableSpectrum.h */; settings = {ATTRIBUTES = (Private, ); }; };
375
		0FC81516140511B500CFA603 /* VTableSpectrum.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FC815121405118600CFA603 /* VTableSpectrum.cpp */; };
374
		0FC81516140511B500CFA603 /* VTableSpectrum.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FC815121405118600CFA603 /* VTableSpectrum.cpp */; };
376
		0FCCAE4516D0CF7400D0C65B /* ParserError.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCCAE4316D0CF6E00D0C65B /* ParserError.h */; settings = {ATTRIBUTES = (Private, ); }; };
375
		0FCCAE4516D0CF7400D0C65B /* ParserError.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCCAE4316D0CF6E00D0C65B /* ParserError.h */; settings = {ATTRIBUTES = (Private, ); }; };
376
		0FCEFAB01805CA6D00472CE4 /* InitializeLLVM.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCEFAAE1805CA6D00472CE4 /* InitializeLLVM.h */; settings = {ATTRIBUTES = (Private, ); }; };
377
		0FCEFAB11805CA6D00472CE4 /* InitializeLLVMMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0FCEFAAF1805CA6D00472CE4 /* InitializeLLVMMac.mm */; };
378
		0FCEFAC11805D94E00472CE4 /* LLVMOverrides.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FCEFAC01805D94100472CE4 /* LLVMOverrides.cpp */; };
379
		0FCEFAC31805E74000472CE4 /* LLVMExports.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FCEFAC21805E74000472CE4 /* LLVMExports.cpp */; };
380
		0FCEFACA1805E75500472CE4 /* InitializeLLVM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FCEFAC41805E75500472CE4 /* InitializeLLVM.cpp */; };
381
		0FCEFACB1805E75500472CE4 /* InitializeLLVMPOSIX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FCEFAC51805E75500472CE4 /* InitializeLLVMPOSIX.cpp */; };
382
		0FCEFACC1805E75500472CE4 /* InitializeLLVMPOSIX.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCEFAC61805E75500472CE4 /* InitializeLLVMPOSIX.h */; settings = {ATTRIBUTES = (Private, ); }; };
383
		0FCEFACD1805E75500472CE4 /* LLVMAPI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FCEFAC71805E75500472CE4 /* LLVMAPI.cpp */; };
384
		0FCEFACE1805E75500472CE4 /* LLVMAPI.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCEFAC81805E75500472CE4 /* LLVMAPI.h */; settings = {ATTRIBUTES = (Private, ); }; };
385
		0FCEFACF1805E75500472CE4 /* LLVMAPIFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCEFAC91805E75500472CE4 /* LLVMAPIFunctions.h */; settings = {ATTRIBUTES = (Private, ); }; };
386
		0FCEFAD11805E77900472CE4 /* LLVMAPIFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCEFAC91805E75500472CE4 /* LLVMAPIFunctions.h */; };
387
		0FCEFAD31805EDCC00472CE4 /* LLVMHeaders.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCEFAD21805EDCC00472CE4 /* LLVMHeaders.h */; settings = {ATTRIBUTES = (Private, ); }; };
388
		0FCEFAD41805EDCC00472CE4 /* LLVMHeaders.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCEFAD21805EDCC00472CE4 /* LLVMHeaders.h */; };
389
		0FCEFAD71806174600472CE4 /* LLVMAnchor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FCEFAD61806174600472CE4 /* LLVMAnchor.cpp */; };
390
		0FCEFADA180620DA00472CE4 /* LLVMAPI.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCEFAC81805E75500472CE4 /* LLVMAPI.h */; };
391
		0FCEFADC18064A1400472CE4 /* config_llvm.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCEFADB18064A1400472CE4 /* config_llvm.h */; };
377
		0FCEFAAB1804C13E00472CE4 /* FTLSaveRestore.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FCEFAA91804C13E00472CE4 /* FTLSaveRestore.cpp */; };
392
		0FCEFAAB1804C13E00472CE4 /* FTLSaveRestore.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FCEFAA91804C13E00472CE4 /* FTLSaveRestore.cpp */; };
378
		0FCEFAAC1804C13E00472CE4 /* FTLSaveRestore.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCEFAAA1804C13E00472CE4 /* FTLSaveRestore.h */; settings = {ATTRIBUTES = (Private, ); }; };
393
		0FCEFAAC1804C13E00472CE4 /* FTLSaveRestore.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCEFAAA1804C13E00472CE4 /* FTLSaveRestore.h */; settings = {ATTRIBUTES = (Private, ); }; };
379
		0FD2C92416D01EE900C7803F /* StructureInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FD2C92316D01EE900C7803F /* StructureInlines.h */; settings = {ATTRIBUTES = (Private, ); }; };
394
		0FD2C92416D01EE900C7803F /* StructureInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FD2C92316D01EE900C7803F /* StructureInlines.h */; settings = {ATTRIBUTES = (Private, ); }; };
Lines 1185-1190 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec3
1185
/* End PBXBuildFile section */
1200
/* End PBXBuildFile section */
1186
1201
1187
/* Begin PBXContainerItemProxy section */
1202
/* Begin PBXContainerItemProxy section */
1203
		0FCEFABC1805D66300472CE4 /* PBXContainerItemProxy */ = {
1204
			isa = PBXContainerItemProxy;
1205
			containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
1206
			proxyType = 1;
1207
			remoteGlobalIDString = 0FCEFAB51805D61600472CE4;
1208
			remoteInfo = llvmForJSC;
1209
		};
1188
		0FF922D214F46B2F0041A24E /* PBXContainerItemProxy */ = {
1210
		0FF922D214F46B2F0041A24E /* PBXContainerItemProxy */ = {
1189
			isa = PBXContainerItemProxy;
1211
			isa = PBXContainerItemProxy;
1190
			containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
1212
			containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
Lines 1475-1481 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec4
1475
		0F63948215E48114006A597C /* DFGArrayMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGArrayMode.h; path = dfg/DFGArrayMode.h; sourceTree = "<group>"; };
1497
		0F63948215E48114006A597C /* DFGArrayMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGArrayMode.h; path = dfg/DFGArrayMode.h; sourceTree = "<group>"; };
1476
		0F66E16814DF3F1300B7B2E4 /* DFGAdjacencyList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGAdjacencyList.h; path = dfg/DFGAdjacencyList.h; sourceTree = "<group>"; };
1498
		0F66E16814DF3F1300B7B2E4 /* DFGAdjacencyList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGAdjacencyList.h; path = dfg/DFGAdjacencyList.h; sourceTree = "<group>"; };
1477
		0F66E16914DF3F1300B7B2E4 /* DFGEdge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGEdge.h; path = dfg/DFGEdge.h; sourceTree = "<group>"; };
1499
		0F66E16914DF3F1300B7B2E4 /* DFGEdge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGEdge.h; path = dfg/DFGEdge.h; sourceTree = "<group>"; };
1478
		0F6E5C181724AF3D005C574F /* WebKitLLVMLibraryAnchor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebKitLLVMLibraryAnchor.cpp; path = ftl/WebKitLLVMLibraryAnchor.cpp; sourceTree = "<group>"; };
1479
		0F7025A71714B0F800382C0E /* DFGOSRExitCompilerCommon.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGOSRExitCompilerCommon.cpp; path = dfg/DFGOSRExitCompilerCommon.cpp; sourceTree = "<group>"; };
1500
		0F7025A71714B0F800382C0E /* DFGOSRExitCompilerCommon.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGOSRExitCompilerCommon.cpp; path = dfg/DFGOSRExitCompilerCommon.cpp; sourceTree = "<group>"; };
1480
		0F7025A81714B0F800382C0E /* DFGOSRExitCompilerCommon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGOSRExitCompilerCommon.h; path = dfg/DFGOSRExitCompilerCommon.h; sourceTree = "<group>"; };
1501
		0F7025A81714B0F800382C0E /* DFGOSRExitCompilerCommon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGOSRExitCompilerCommon.h; path = dfg/DFGOSRExitCompilerCommon.h; sourceTree = "<group>"; };
1481
		0F714CA116EA92ED00F3EBEB /* DFGBackwardsPropagationPhase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGBackwardsPropagationPhase.cpp; path = dfg/DFGBackwardsPropagationPhase.cpp; sourceTree = "<group>"; };
1502
		0F714CA116EA92ED00F3EBEB /* DFGBackwardsPropagationPhase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGBackwardsPropagationPhase.cpp; path = dfg/DFGBackwardsPropagationPhase.cpp; sourceTree = "<group>"; };
Lines 1604-1609 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec5
1604
		0FC815141405118D00CFA603 /* VTableSpectrum.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VTableSpectrum.h; sourceTree = "<group>"; };
1625
		0FC815141405118D00CFA603 /* VTableSpectrum.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VTableSpectrum.h; sourceTree = "<group>"; };
1605
		0FCB408515C0A3C30048932B /* SlotVisitorInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SlotVisitorInlines.h; sourceTree = "<group>"; };
1626
		0FCB408515C0A3C30048932B /* SlotVisitorInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SlotVisitorInlines.h; sourceTree = "<group>"; };
1606
		0FCCAE4316D0CF6E00D0C65B /* ParserError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ParserError.h; sourceTree = "<group>"; };
1627
		0FCCAE4316D0CF6E00D0C65B /* ParserError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ParserError.h; sourceTree = "<group>"; };
1628
		0FCEFAAE1805CA6D00472CE4 /* InitializeLLVM.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = InitializeLLVM.h; path = llvm/InitializeLLVM.h; sourceTree = "<group>"; };
1629
		0FCEFAAF1805CA6D00472CE4 /* InitializeLLVMMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = InitializeLLVMMac.mm; path = llvm/InitializeLLVMMac.mm; sourceTree = "<group>"; };
1630
		0FCEFAB61805D61600472CE4 /* libllvmForJSC.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = libllvmForJSC.dylib; sourceTree = BUILT_PRODUCTS_DIR; };
1631
		0FCEFABE1805D86900472CE4 /* LLVMForJSC.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = LLVMForJSC.xcconfig; sourceTree = "<group>"; };
1632
		0FCEFAC01805D94100472CE4 /* LLVMOverrides.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = LLVMOverrides.cpp; sourceTree = "<group>"; };
1633
		0FCEFAC21805E74000472CE4 /* LLVMExports.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LLVMExports.cpp; sourceTree = "<group>"; };
1634
		0FCEFAC41805E75500472CE4 /* InitializeLLVM.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = InitializeLLVM.cpp; path = llvm/InitializeLLVM.cpp; sourceTree = "<group>"; };
1635
		0FCEFAC51805E75500472CE4 /* InitializeLLVMPOSIX.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = InitializeLLVMPOSIX.cpp; path = llvm/InitializeLLVMPOSIX.cpp; sourceTree = "<group>"; };
1636
		0FCEFAC61805E75500472CE4 /* InitializeLLVMPOSIX.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = InitializeLLVMPOSIX.h; path = llvm/InitializeLLVMPOSIX.h; sourceTree = "<group>"; };
1637
		0FCEFAC71805E75500472CE4 /* LLVMAPI.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LLVMAPI.cpp; path = llvm/LLVMAPI.cpp; sourceTree = "<group>"; };
1638
		0FCEFAC81805E75500472CE4 /* LLVMAPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LLVMAPI.h; path = llvm/LLVMAPI.h; sourceTree = "<group>"; };
1639
		0FCEFAC91805E75500472CE4 /* LLVMAPIFunctions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LLVMAPIFunctions.h; path = llvm/LLVMAPIFunctions.h; sourceTree = "<group>"; };
1640
		0FCEFAD21805EDCC00472CE4 /* LLVMHeaders.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LLVMHeaders.h; path = llvm/LLVMHeaders.h; sourceTree = "<group>"; };
1641
		0FCEFAD61806174600472CE4 /* LLVMAnchor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LLVMAnchor.cpp; sourceTree = "<group>"; };
1642
		0FCEFADB18064A1400472CE4 /* config_llvm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = config_llvm.h; sourceTree = "<group>"; };
1607
		0FCEFAA91804C13E00472CE4 /* FTLSaveRestore.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FTLSaveRestore.cpp; path = ftl/FTLSaveRestore.cpp; sourceTree = "<group>"; };
1643
		0FCEFAA91804C13E00472CE4 /* FTLSaveRestore.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FTLSaveRestore.cpp; path = ftl/FTLSaveRestore.cpp; sourceTree = "<group>"; };
1608
		0FCEFAAA1804C13E00472CE4 /* FTLSaveRestore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FTLSaveRestore.h; path = ftl/FTLSaveRestore.h; sourceTree = "<group>"; };
1644
		0FCEFAAA1804C13E00472CE4 /* FTLSaveRestore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FTLSaveRestore.h; path = ftl/FTLSaveRestore.h; sourceTree = "<group>"; };
1609
		0FD2C92316D01EE900C7803F /* StructureInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StructureInlines.h; sourceTree = "<group>"; };
1645
		0FD2C92316D01EE900C7803F /* StructureInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StructureInlines.h; sourceTree = "<group>"; };
Lines 2439-2444 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec6
2439
/* End PBXFileReference section */
2475
/* End PBXFileReference section */
2440
2476
2441
/* Begin PBXFrameworksBuildPhase section */
2477
/* Begin PBXFrameworksBuildPhase section */
2478
		0FCEFAB31805D61600472CE4 /* Frameworks */ = {
2479
			isa = PBXFrameworksBuildPhase;
2480
			buildActionMask = 2147483647;
2481
			files = (
2482
			);
2483
			runOnlyForDeploymentPostprocessing = 0;
2484
		};
2442
		0FF922C614F46B130041A24E /* Frameworks */ = {
2485
		0FF922C614F46B130041A24E /* Frameworks */ = {
2443
			isa = PBXFrameworksBuildPhase;
2486
			isa = PBXFrameworksBuildPhase;
2444
			buildActionMask = 2147483647;
2487
			buildActionMask = 2147483647;
Lines 2507-2512 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec7
2507
				141211200A48793C00480255 /* minidom */,
2550
				141211200A48793C00480255 /* minidom */,
2508
				14BD59BF0A3E8F9000BAF59C /* testapi */,
2551
				14BD59BF0A3E8F9000BAF59C /* testapi */,
2509
				6511230514046A4C002B101D /* testRegExp */,
2552
				6511230514046A4C002B101D /* testRegExp */,
2553
				0FCEFAB61805D61600472CE4 /* libllvmForJSC.dylib */,
2510
			);
2554
			);
2511
			name = Products;
2555
			name = Products;
2512
			sourceTree = "<group>";
2556
			sourceTree = "<group>";
Lines 2539-2544 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec8
2539
				1429D77A0ED20D7300B89619 /* interpreter */,
2583
				1429D77A0ED20D7300B89619 /* interpreter */,
2540
				1429D92C0ED22D7000B89619 /* jit */,
2584
				1429D92C0ED22D7000B89619 /* jit */,
2541
				0F46809C14BA7F4D00BFE272 /* llint */,
2585
				0F46809C14BA7F4D00BFE272 /* llint */,
2586
				0FCEFAAD1805CA4400472CE4 /* llvm */,
2542
				7E39D8370EC3A388003AF11A /* parser */,
2587
				7E39D8370EC3A388003AF11A /* parser */,
2543
				034768DFFF38A50411DB9C8B /* Products */,
2588
				034768DFFF38A50411DB9C8B /* Products */,
2544
				95AB831A0DA42C6900BC83F3 /* profiler */,
2589
				95AB831A0DA42C6900BC83F3 /* profiler */,
Lines 2596-2601 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec9
2596
			name = llint;
2641
			name = llint;
2597
			sourceTree = "<group>";
2642
			sourceTree = "<group>";
2598
		};
2643
		};
2644
		0FCEFAAD1805CA4400472CE4 /* llvm */ = {
2645
			isa = PBXGroup;
2646
			children = (
2647
				0FCEFABF1805D94100472CE4 /* library */,
2648
				0FCEFAC41805E75500472CE4 /* InitializeLLVM.cpp */,
2649
				0FCEFAAE1805CA6D00472CE4 /* InitializeLLVM.h */,
2650
				0FCEFAAF1805CA6D00472CE4 /* InitializeLLVMMac.mm */,
2651
				0FCEFAC51805E75500472CE4 /* InitializeLLVMPOSIX.cpp */,
2652
				0FCEFAC61805E75500472CE4 /* InitializeLLVMPOSIX.h */,
2653
				0FCEFAC71805E75500472CE4 /* LLVMAPI.cpp */,
2654
				0FCEFAC81805E75500472CE4 /* LLVMAPI.h */,
2655
				0FCEFAC91805E75500472CE4 /* LLVMAPIFunctions.h */,
2656
				0FCEFAD21805EDCC00472CE4 /* LLVMHeaders.h */,
2657
			);
2658
			name = llvm;
2659
			sourceTree = "<group>";
2660
		};
2661
		0FCEFABF1805D94100472CE4 /* library */ = {
2662
			isa = PBXGroup;
2663
			children = (
2664
				0FCEFADB18064A1400472CE4 /* config_llvm.h */,
2665
				0FCEFAD61806174600472CE4 /* LLVMAnchor.cpp */,
2666
				0FCEFAC21805E74000472CE4 /* LLVMExports.cpp */,
2667
				0FCEFAC01805D94100472CE4 /* LLVMOverrides.cpp */,
2668
			);
2669
			name = library;
2670
			path = llvm/library;
2671
			sourceTree = "<group>";
2672
		};
2599
		0FEA09FC1705137F00BB722C /* ftl */ = {
2673
		0FEA09FC1705137F00BB722C /* ftl */ = {
2600
			isa = PBXGroup;
2674
			isa = PBXGroup;
2601
			children = (
2675
			children = (
Lines 2663-2669 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec10
2663
				0FDB2CC8173DA51E007B3C1B /* FTLValueFromBlock.h */,
2737
				0FDB2CC8173DA51E007B3C1B /* FTLValueFromBlock.h */,
2664
				0F235BCF17178E1C00690C7F /* FTLValueSource.cpp */,
2738
				0F235BCF17178E1C00690C7F /* FTLValueSource.cpp */,
2665
				0F235BD017178E1C00690C7F /* FTLValueSource.h */,
2739
				0F235BD017178E1C00690C7F /* FTLValueSource.h */,
2666
				0F6E5C181724AF3D005C574F /* WebKitLLVMLibraryAnchor.cpp */,
2667
			);
2740
			);
2668
			name = ftl;
2741
			name = ftl;
2669
			sourceTree = "<group>";
2742
			sourceTree = "<group>";
Lines 3020-3025 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec11
3020
		1C90513E0BA9E8830081E9D0 /* Configurations */ = {
3093
		1C90513E0BA9E8830081E9D0 /* Configurations */ = {
3021
			isa = PBXGroup;
3094
			isa = PBXGroup;
3022
			children = (
3095
			children = (
3096
				0FCEFABE1805D86900472CE4 /* LLVMForJSC.xcconfig */,
3023
				1C9051450BA9E8A70081E9D0 /* Base.xcconfig */,
3097
				1C9051450BA9E8A70081E9D0 /* Base.xcconfig */,
3024
				1C9051440BA9E8A70081E9D0 /* DebugRelease.xcconfig */,
3098
				1C9051440BA9E8A70081E9D0 /* DebugRelease.xcconfig */,
3025
				449097EE0F8F81B50076A327 /* FeatureDefines.xcconfig */,
3099
				449097EE0F8F81B50076A327 /* FeatureDefines.xcconfig */,
Lines 3894-3899 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec12
3894
/* End PBXGroup section */
3968
/* End PBXGroup section */
3895
3969
3896
/* Begin PBXHeadersBuildPhase section */
3970
/* Begin PBXHeadersBuildPhase section */
3971
		0FCEFAB41805D61600472CE4 /* Headers */ = {
3972
			isa = PBXHeadersBuildPhase;
3973
			buildActionMask = 2147483647;
3974
			files = (
3975
				0FCEFAD41805EDCC00472CE4 /* LLVMHeaders.h in Headers */,
3976
				0FCEFADA180620DA00472CE4 /* LLVMAPI.h in Headers */,
3977
				0FCEFAD11805E77900472CE4 /* LLVMAPIFunctions.h in Headers */,
3978
				0FCEFADC18064A1400472CE4 /* config_llvm.h in Headers */,
3979
			);
3980
			runOnlyForDeploymentPostprocessing = 0;
3981
		};
3897
		144005C70A5338C60005F061 /* Headers */ = {
3982
		144005C70A5338C60005F061 /* Headers */ = {
3898
			isa = PBXHeadersBuildPhase;
3983
			isa = PBXHeadersBuildPhase;
3899
			buildActionMask = 2147483647;
3984
			buildActionMask = 2147483647;
Lines 3952-3957 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec13
3952
				0F0B83B114BCF71800885B4F /* CallLinkInfo.h in Headers */,
4037
				0F0B83B114BCF71800885B4F /* CallLinkInfo.h in Headers */,
3953
				0F93329E14CA7DC50085F3C6 /* CallLinkStatus.h in Headers */,
4038
				0F93329E14CA7DC50085F3C6 /* CallLinkStatus.h in Headers */,
3954
				0F0B83B914BCF95F00885B4F /* CallReturnOffsetToBytecodeOffset.h in Headers */,
4039
				0F0B83B914BCF95F00885B4F /* CallReturnOffsetToBytecodeOffset.h in Headers */,
4040
				0FCEFAD31805EDCC00472CE4 /* LLVMHeaders.h in Headers */,
3955
				BC6AAAE50E1F426500AD87D8 /* ClassInfo.h in Headers */,
4041
				BC6AAAE50E1F426500AD87D8 /* ClassInfo.h in Headers */,
3956
				0F73D7AF165A143000ACAB71 /* ClosureCallStubRoutine.h in Headers */,
4042
				0F73D7AF165A143000ACAB71 /* ClosureCallStubRoutine.h in Headers */,
3957
				969A07970ED1D3AE00F1F681 /* CodeBlock.h in Headers */,
4043
				969A07970ED1D3AE00F1F681 /* CodeBlock.h in Headers */,
Lines 3982-3987 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec14
3982
				C2239D1816262BDD005AC5FD /* CopyVisitor.h in Headers */,
4068
				C2239D1816262BDD005AC5FD /* CopyVisitor.h in Headers */,
3983
				C2239D1916262BDD005AC5FD /* CopyVisitorInlines.h in Headers */,
4069
				C2239D1916262BDD005AC5FD /* CopyVisitorInlines.h in Headers */,
3984
				C218D1401655CFD50062BB81 /* CopyWorkList.h in Headers */,
4070
				C218D1401655CFD50062BB81 /* CopyWorkList.h in Headers */,
4071
				0FCEFACF1805E75500472CE4 /* LLVMAPIFunctions.h in Headers */,
3985
				5DE6E5B30E1728EC00180407 /* create_hash_table in Headers */,
4072
				5DE6E5B30E1728EC00180407 /* create_hash_table in Headers */,
3986
				0F426A4B1460CD6E00131F8F /* DataFormat.h in Headers */,
4073
				0F426A4B1460CD6E00131F8F /* DataFormat.h in Headers */,
3987
				0F2B66DF17B6B5AB00A7AE3F /* DataView.h in Headers */,
4074
				0F2B66DF17B6B5AB00A7AE3F /* DataView.h in Headers */,
Lines 4099-4104 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec15
4099
				86EC9DD31328DF82002B2AD7 /* DFGSpeculativeJIT.h in Headers */,
4186
				86EC9DD31328DF82002B2AD7 /* DFGSpeculativeJIT.h in Headers */,
4100
				A7D89D0017A0B8CC00773AD8 /* DFGSSAConversionPhase.h in Headers */,
4187
				A7D89D0017A0B8CC00773AD8 /* DFGSSAConversionPhase.h in Headers */,
4101
				0F63947815DCE34B006A597C /* DFGStructureAbstractValue.h in Headers */,
4188
				0F63947815DCE34B006A597C /* DFGStructureAbstractValue.h in Headers */,
4189
				0FCEFACC1805E75500472CE4 /* InitializeLLVMPOSIX.h in Headers */,
4102
				0FC097A2146B28CC00CF2442 /* DFGThunks.h in Headers */,
4190
				0FC097A2146B28CC00CF2442 /* DFGThunks.h in Headers */,
4103
				0F63943F15C75F19006A597C /* DFGTypeCheckHoistingPhase.h in Headers */,
4191
				0F63943F15C75F19006A597C /* DFGTypeCheckHoistingPhase.h in Headers */,
4104
				0FBE0F7716C1DB120082C5E8 /* DFGUnificationPhase.h in Headers */,
4192
				0FBE0F7716C1DB120082C5E8 /* DFGUnificationPhase.h in Headers */,
Lines 4205-4210 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec16
4205
				A78853FA17972629001440E4 /* IntendedStructureChain.h in Headers */,
4293
				A78853FA17972629001440E4 /* IntendedStructureChain.h in Headers */,
4206
				BC11667B0E199C05008066DD /* InternalFunction.h in Headers */,
4294
				BC11667B0E199C05008066DD /* InternalFunction.h in Headers */,
4207
				1429D77C0ED20D7300B89619 /* Interpreter.h in Headers */,
4295
				1429D77C0ED20D7300B89619 /* Interpreter.h in Headers */,
4296
				0FCEFAB01805CA6D00472CE4 /* InitializeLLVM.h in Headers */,
4208
				860BD801148EA6F200112B2F /* Intrinsic.h in Headers */,
4297
				860BD801148EA6F200112B2F /* Intrinsic.h in Headers */,
4209
				BC18C4130E16F5CD00B34460 /* JavaScript.h in Headers */,
4298
				BC18C4130E16F5CD00B34460 /* JavaScript.h in Headers */,
4210
				BC18C4140E16F5CD00B34460 /* JavaScriptCore.h in Headers */,
4299
				BC18C4140E16F5CD00B34460 /* JavaScriptCore.h in Headers */,
Lines 4258-4263 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec17
4258
				A72028B81797601E0098028C /* JSCTestRunnerUtils.h in Headers */,
4347
				A72028B81797601E0098028C /* JSCTestRunnerUtils.h in Headers */,
4259
				0F2B66EC17B6B5AB00A7AE3F /* JSDataView.h in Headers */,
4348
				0F2B66EC17B6B5AB00A7AE3F /* JSDataView.h in Headers */,
4260
				0F2B66EE17B6B5AB00A7AE3F /* JSDataViewPrototype.h in Headers */,
4349
				0F2B66EE17B6B5AB00A7AE3F /* JSDataViewPrototype.h in Headers */,
4350
				0FCEFACE1805E75500472CE4 /* LLVMAPI.h in Headers */,
4261
				978801411471AD920041B016 /* JSDateMath.h in Headers */,
4351
				978801411471AD920041B016 /* JSDateMath.h in Headers */,
4262
				C2A7F688160432D400F76B98 /* JSDestructibleObject.h in Headers */,
4352
				C2A7F688160432D400F76B98 /* JSDestructibleObject.h in Headers */,
4263
				86E3C614167BABD7006D760A /* JSExport.h in Headers */,
4353
				86E3C614167BABD7006D760A /* JSExport.h in Headers */,
Lines 4577-4582 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec18
4577
/* End PBXHeadersBuildPhase section */
4667
/* End PBXHeadersBuildPhase section */
4578
4668
4579
/* Begin PBXNativeTarget section */
4669
/* Begin PBXNativeTarget section */
4670
		0FCEFAB51805D61600472CE4 /* llvmForJSC */ = {
4671
			isa = PBXNativeTarget;
4672
			buildConfigurationList = 0FCEFAB71805D61600472CE4 /* Build configuration list for PBXNativeTarget "llvmForJSC" */;
4673
			buildPhases = (
4674
				0FCEFAB21805D61600472CE4 /* Sources */,
4675
				0FCEFAB31805D61600472CE4 /* Frameworks */,
4676
				0FCEFAB41805D61600472CE4 /* Headers */,
4677
			);
4678
			buildRules = (
4679
			);
4680
			dependencies = (
4681
			);
4682
			name = llvmForJSC;
4683
			productName = llvmForJSC;
4684
			productReference = 0FCEFAB61805D61600472CE4 /* libllvmForJSC.dylib */;
4685
			productType = "com.apple.product-type.library.dynamic";
4686
		};
4580
		0FF922C314F46B130041A24E /* JSCLLIntOffsetsExtractor */ = {
4687
		0FF922C314F46B130041A24E /* JSCLLIntOffsetsExtractor */ = {
4581
			isa = PBXNativeTarget;
4688
			isa = PBXNativeTarget;
4582
			buildConfigurationList = 0FF922CA14F46B130041A24E /* Build configuration list for PBXNativeTarget "JSCLLIntOffsetsExtractor" */;
4689
			buildConfigurationList = 0FF922CA14F46B130041A24E /* Build configuration list for PBXNativeTarget "JSCLLIntOffsetsExtractor" */;
Lines 4657-4662 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec19
4657
				3732811A17FCD235004AD519 /* Postprocess Headers */,
4764
				3732811A17FCD235004AD519 /* Postprocess Headers */,
4658
				932F5B910822A1C700736975 /* Sources */,
4765
				932F5B910822A1C700736975 /* Sources */,
4659
				932F5BD20822A1C700736975 /* Frameworks */,
4766
				932F5BD20822A1C700736975 /* Frameworks */,
4767
				0FCEFAD91806191800472CE4 /* Copy LLVM Library Into Framework */,
4660
				5D29D8BE0E9860B400C3D2D0 /* Check For Weak VTables and Externals */,
4768
				5D29D8BE0E9860B400C3D2D0 /* Check For Weak VTables and Externals */,
4661
				3713F014142905240036387F /* Check For Inappropriate Objective-C Class Names */,
4769
				3713F014142905240036387F /* Check For Inappropriate Objective-C Class Names */,
4662
				A55DEAA416703DF7003DB841 /* Check For Inappropriate Macros in External Headers */,
4770
				A55DEAA416703DF7003DB841 /* Check For Inappropriate Macros in External Headers */,
Lines 4664-4669 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec20
4664
			buildRules = (
4772
			buildRules = (
4665
			);
4773
			);
4666
			dependencies = (
4774
			dependencies = (
4775
				0FCEFABD1805D66300472CE4 /* PBXTargetDependency */,
4667
				65FB3F7E09D11EF300F49DEB /* PBXTargetDependency */,
4776
				65FB3F7E09D11EF300F49DEB /* PBXTargetDependency */,
4668
			);
4777
			);
4669
			name = JavaScriptCore;
4778
			name = JavaScriptCore;
Lines 4724-4729 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec21
4724
				0F4680A914BA7FD900BFE272 /* LLInt Offsets */,
4833
				0F4680A914BA7FD900BFE272 /* LLInt Offsets */,
4725
				0FF922C314F46B130041A24E /* JSCLLIntOffsetsExtractor */,
4834
				0FF922C314F46B130041A24E /* JSCLLIntOffsetsExtractor */,
4726
				5D6B2A47152B9E17005231DE /* Test Tools */,
4835
				5D6B2A47152B9E17005231DE /* Test Tools */,
4836
				0FCEFAB51805D61600472CE4 /* llvmForJSC */,
4727
			);
4837
			);
4728
		};
4838
		};
4729
/* End PBXProject section */
4839
/* End PBXProject section */
Lines 4745-4750 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec22
4745
			shellPath = /bin/sh;
4855
			shellPath = /bin/sh;
4746
			shellScript = "mkdir -p \"${BUILT_PRODUCTS_DIR}/LLIntOffsets/\"\n\n/usr/bin/env ruby \"${SRCROOT}/offlineasm/generate_offset_extractor.rb\" \"${SRCROOT}/llint/LowLevelInterpreter.asm\" \"${BUILT_PRODUCTS_DIR}/LLIntOffsets/LLIntDesiredOffsets.h\"\n";
4856
			shellScript = "mkdir -p \"${BUILT_PRODUCTS_DIR}/LLIntOffsets/\"\n\n/usr/bin/env ruby \"${SRCROOT}/offlineasm/generate_offset_extractor.rb\" \"${SRCROOT}/llint/LowLevelInterpreter.asm\" \"${BUILT_PRODUCTS_DIR}/LLIntOffsets/LLIntDesiredOffsets.h\"\n";
4747
		};
4857
		};
4858
		0FCEFAD91806191800472CE4 /* Copy LLVM Library Into Framework */ = {
4859
			isa = PBXShellScriptBuildPhase;
4860
			buildActionMask = 2147483647;
4861
			files = (
4862
			);
4863
			inputPaths = (
4864
				"$(BUILT_PRODUCTS_DIR)/libllvmForJSC.dylib",
4865
			);
4866
			name = "Copy LLVM Library Into Framework";
4867
			outputPaths = (
4868
			);
4869
			runOnlyForDeploymentPostprocessing = 0;
4870
			shellPath = /bin/sh;
4871
			shellScript = "if [[ $ENABLE_FTL_JIT != \"ENABLE_FTL_JIT\" ]]\nthen\n    exit 0\nfi\n\n# Copy the llvmForJSC library into the framework.\nditto \"${BUILT_PRODUCTS_DIR}/libllvmForJSC.dylib\" \"${BUILT_PRODUCTS_DIR}/${CONTENTS_FOLDER_PATH}/Libraries/libllvmForJSC.dylib\"\nif [ ! -e \"${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/Libraries\" ]\nthen\n    ln -fs \"Versions/Current/Libraries\" \"${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/Libraries\"\nfi";
4872
		};
4748
		3713F014142905240036387F /* Check For Inappropriate Objective-C Class Names */ = {
4873
		3713F014142905240036387F /* Check For Inappropriate Objective-C Class Names */ = {
4749
			isa = PBXShellScriptBuildPhase;
4874
			isa = PBXShellScriptBuildPhase;
4750
			buildActionMask = 2147483647;
4875
			buildActionMask = 2147483647;
Lines 4792-4798 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec23
4792
			);
4917
			);
4793
			runOnlyForDeploymentPostprocessing = 0;
4918
			runOnlyForDeploymentPostprocessing = 0;
4794
			shellPath = /bin/sh;
4919
			shellPath = /bin/sh;
4795
			shellScript = "# FIXME: <rdar://problem/13539888> LLVM libraries shouldn't have weak vtables\nexit 0\n\nif [ -f ../../Tools/Scripts/check-for-weak-vtables-and-externals ]; then\n    ../../Tools/Scripts/check-for-weak-vtables-and-externals || exit $?\nfi";
4920
			shellScript = "if [ -f ../../Tools/Scripts/check-for-weak-vtables-and-externals ]; then\n    ../../Tools/Scripts/check-for-weak-vtables-and-externals || exit $?\nfi";
4796
		};
4921
		};
4797
		5D2F7CF90C6875BB00B5B72B /* Update Info.plist with version information */ = {
4922
		5D2F7CF90C6875BB00B5B72B /* Update Info.plist with version information */ = {
4798
			isa = PBXShellScriptBuildPhase;
4923
			isa = PBXShellScriptBuildPhase;
Lines 4890-4895 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec24
4890
/* End PBXShellScriptBuildPhase section */
5015
/* End PBXShellScriptBuildPhase section */
4891
5016
4892
/* Begin PBXSourcesBuildPhase section */
5017
/* Begin PBXSourcesBuildPhase section */
5018
		0FCEFAB21805D61600472CE4 /* Sources */ = {
5019
			isa = PBXSourcesBuildPhase;
5020
			buildActionMask = 2147483647;
5021
			files = (
5022
				0FCEFAC31805E74000472CE4 /* LLVMExports.cpp in Sources */,
5023
				0FCEFAD71806174600472CE4 /* LLVMAnchor.cpp in Sources */,
5024
				0FCEFAC11805D94E00472CE4 /* LLVMOverrides.cpp in Sources */,
5025
			);
5026
			runOnlyForDeploymentPostprocessing = 0;
5027
		};
4893
		0FF922C414F46B130041A24E /* Sources */ = {
5028
		0FF922C414F46B130041A24E /* Sources */ = {
4894
			isa = PBXSourcesBuildPhase;
5029
			isa = PBXSourcesBuildPhase;
4895
			buildActionMask = 2147483647;
5030
			buildActionMask = 2147483647;
Lines 4950-4955 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec25
4950
				14280865107EC11A0013E7B2 /* BooleanPrototype.cpp in Sources */,
5085
				14280865107EC11A0013E7B2 /* BooleanPrototype.cpp in Sources */,
4951
				148F21AA107EC53A0042EC2C /* BytecodeGenerator.cpp in Sources */,
5086
				148F21AA107EC53A0042EC2C /* BytecodeGenerator.cpp in Sources */,
4952
				1428082D107EC0570013E7B2 /* CallData.cpp in Sources */,
5087
				1428082D107EC0570013E7B2 /* CallData.cpp in Sources */,
5088
				0FCEFAB11805CA6D00472CE4 /* InitializeLLVMMac.mm in Sources */,
4953
				1429D8DD0ED2205B00B89619 /* CallFrame.cpp in Sources */,
5089
				1429D8DD0ED2205B00B89619 /* CallFrame.cpp in Sources */,
4954
				0F0B83B014BCF71600885B4F /* CallLinkInfo.cpp in Sources */,
5090
				0F0B83B014BCF71600885B4F /* CallLinkInfo.cpp in Sources */,
4955
				0F93329D14CA7DC30085F3C6 /* CallLinkStatus.cpp in Sources */,
5091
				0F93329D14CA7DC30085F3C6 /* CallLinkStatus.cpp in Sources */,
Lines 5089-5094 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec26
5089
				0F235BD117178E1C00690C7F /* FTLCArgumentGetter.cpp in Sources */,
5225
				0F235BD117178E1C00690C7F /* FTLCArgumentGetter.cpp in Sources */,
5090
				0FEA0A271709623B00BB722C /* FTLCommonValues.cpp in Sources */,
5226
				0FEA0A271709623B00BB722C /* FTLCommonValues.cpp in Sources */,
5091
				0FEA0A0B170513DB00BB722C /* FTLCompile.cpp in Sources */,
5227
				0FEA0A0B170513DB00BB722C /* FTLCompile.cpp in Sources */,
5228
				0FCEFACD1805E75500472CE4 /* LLVMAPI.cpp in Sources */,
5092
				0F235BD317178E1C00690C7F /* FTLExitArgument.cpp in Sources */,
5229
				0F235BD317178E1C00690C7F /* FTLExitArgument.cpp in Sources */,
5093
				0F235BD517178E1C00690C7F /* FTLExitArgumentForOperand.cpp in Sources */,
5230
				0F235BD517178E1C00690C7F /* FTLExitArgumentForOperand.cpp in Sources */,
5094
				0F235BD817178E1C00690C7F /* FTLExitThunkGenerator.cpp in Sources */,
5231
				0F235BD817178E1C00690C7F /* FTLExitThunkGenerator.cpp in Sources */,
Lines 5106-5111 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec27
5106
				0F235BE117178E1C00690C7F /* FTLThunks.cpp in Sources */,
5243
				0F235BE117178E1C00690C7F /* FTLThunks.cpp in Sources */,
5107
				0F235BE317178E1C00690C7F /* FTLValueFormat.cpp in Sources */,
5244
				0F235BE317178E1C00690C7F /* FTLValueFormat.cpp in Sources */,
5108
				0F235BE517178E1C00690C7F /* FTLValueSource.cpp in Sources */,
5245
				0F235BE517178E1C00690C7F /* FTLValueSource.cpp in Sources */,
5246
				0FCEFACA1805E75500472CE4 /* InitializeLLVM.cpp in Sources */,
5109
				147F39CB107EC37600427A48 /* FunctionConstructor.cpp in Sources */,
5247
				147F39CB107EC37600427A48 /* FunctionConstructor.cpp in Sources */,
5110
				0FF0F19F16B72A17005DF95B /* FunctionExecutableDump.cpp in Sources */,
5248
				0FF0F19F16B72A17005DF95B /* FunctionExecutableDump.cpp in Sources */,
5111
				147F39CC107EC37600427A48 /* FunctionPrototype.cpp in Sources */,
5249
				147F39CC107EC37600427A48 /* FunctionPrototype.cpp in Sources */,
Lines 5274-5279 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec28
5274
				95AB83560DA43C3000BC83F3 /* ProfileNode.cpp in Sources */,
5412
				95AB83560DA43C3000BC83F3 /* ProfileNode.cpp in Sources */,
5275
				0FF729AD166AD35C000F5BA3 /* ProfilerBytecode.cpp in Sources */,
5413
				0FF729AD166AD35C000F5BA3 /* ProfilerBytecode.cpp in Sources */,
5276
				0FF729AE166AD35C000F5BA3 /* ProfilerBytecodes.cpp in Sources */,
5414
				0FF729AE166AD35C000F5BA3 /* ProfilerBytecodes.cpp in Sources */,
5415
				0FCEFACB1805E75500472CE4 /* InitializeLLVMPOSIX.cpp in Sources */,
5277
				0F13912916771C33009CCB07 /* ProfilerBytecodeSequence.cpp in Sources */,
5416
				0F13912916771C33009CCB07 /* ProfilerBytecodeSequence.cpp in Sources */,
5278
				0FF729AF166AD35C000F5BA3 /* ProfilerCompilation.cpp in Sources */,
5417
				0FF729AF166AD35C000F5BA3 /* ProfilerCompilation.cpp in Sources */,
5279
				0FF729B0166AD35C000F5BA3 /* ProfilerCompilationKind.cpp in Sources */,
5418
				0FF729B0166AD35C000F5BA3 /* ProfilerCompilationKind.cpp in Sources */,
Lines 5353-5359 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec29
5353
				14E84F9E14EE1ACC00D6D5D4 /* WeakBlock.cpp in Sources */,
5492
				14E84F9E14EE1ACC00D6D5D4 /* WeakBlock.cpp in Sources */,
5354
				14F7256514EE265E00B1652B /* WeakHandleOwner.cpp in Sources */,
5493
				14F7256514EE265E00B1652B /* WeakHandleOwner.cpp in Sources */,
5355
				14E84FA014EE1ACC00D6D5D4 /* WeakSet.cpp in Sources */,
5494
				14E84FA014EE1ACC00D6D5D4 /* WeakSet.cpp in Sources */,
5356
				0F6E5C191724AF3D005C574F /* WebKitLLVMLibraryAnchor.cpp in Sources */,
5357
				0FC8150B14043C0E00CFA603 /* WriteBarrierSupport.cpp in Sources */,
5495
				0FC8150B14043C0E00CFA603 /* WriteBarrierSupport.cpp in Sources */,
5358
				0F24E55817F74EDB00ABB217 /* ValueRecovery.cpp in Sources */,
5496
				0F24E55817F74EDB00ABB217 /* ValueRecovery.cpp in Sources */,
5359
				A7E5AB3A1799E4B200D2833D /* X86Disassembler.cpp in Sources */,
5497
				A7E5AB3A1799E4B200D2833D /* X86Disassembler.cpp in Sources */,
Lines 5377-5382 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec30
5377
/* End PBXSourcesBuildPhase section */
5515
/* End PBXSourcesBuildPhase section */
5378
5516
5379
/* Begin PBXTargetDependency section */
5517
/* Begin PBXTargetDependency section */
5518
		0FCEFABD1805D66300472CE4 /* PBXTargetDependency */ = {
5519
			isa = PBXTargetDependency;
5520
			target = 0FCEFAB51805D61600472CE4 /* llvmForJSC */;
5521
			targetProxy = 0FCEFABC1805D66300472CE4 /* PBXContainerItemProxy */;
5522
		};
5380
		0FF922D314F46B2F0041A24E /* PBXTargetDependency */ = {
5523
		0FF922D314F46B2F0041A24E /* PBXTargetDependency */ = {
5381
			isa = PBXTargetDependency;
5524
			isa = PBXTargetDependency;
5382
			target = 0F4680A914BA7FD900BFE272 /* LLInt Offsets */;
5525
			target = 0F4680A914BA7FD900BFE272 /* LLInt Offsets */;
Lines 5453-5458 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec31
5453
			};
5596
			};
5454
			name = Production;
5597
			name = Production;
5455
		};
5598
		};
5599
		0FCEFAB81805D61600472CE4 /* Debug */ = {
5600
			isa = XCBuildConfiguration;
5601
			baseConfigurationReference = 0FCEFABE1805D86900472CE4 /* LLVMForJSC.xcconfig */;
5602
			buildSettings = {
5603
			};
5604
			name = Debug;
5605
		};
5606
		0FCEFAB91805D61600472CE4 /* Release */ = {
5607
			isa = XCBuildConfiguration;
5608
			baseConfigurationReference = 0FCEFABE1805D86900472CE4 /* LLVMForJSC.xcconfig */;
5609
			buildSettings = {
5610
			};
5611
			name = Release;
5612
		};
5613
		0FCEFABA1805D61600472CE4 /* Profiling */ = {
5614
			isa = XCBuildConfiguration;
5615
			baseConfigurationReference = 0FCEFABE1805D86900472CE4 /* LLVMForJSC.xcconfig */;
5616
			buildSettings = {
5617
			};
5618
			name = Profiling;
5619
		};
5620
		0FCEFABB1805D61600472CE4 /* Production */ = {
5621
			isa = XCBuildConfiguration;
5622
			baseConfigurationReference = 0FCEFABE1805D86900472CE4 /* LLVMForJSC.xcconfig */;
5623
			buildSettings = {
5624
			};
5625
			name = Production;
5626
		};
5456
		0FF922CB14F46B130041A24E /* Debug */ = {
5627
		0FF922CB14F46B130041A24E /* Debug */ = {
5457
			isa = XCBuildConfiguration;
5628
			isa = XCBuildConfiguration;
5458
			baseConfigurationReference = BC021BF2136900C300FC5467 /* ToolExecutable.xcconfig */;
5629
			baseConfigurationReference = BC021BF2136900C300FC5467 /* ToolExecutable.xcconfig */;
Lines 5757-5762 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec32
5757
			defaultConfigurationIsVisible = 0;
5928
			defaultConfigurationIsVisible = 0;
5758
			defaultConfigurationName = Production;
5929
			defaultConfigurationName = Production;
5759
		};
5930
		};
5931
		0FCEFAB71805D61600472CE4 /* Build configuration list for PBXNativeTarget "llvmForJSC" */ = {
5932
			isa = XCConfigurationList;
5933
			buildConfigurations = (
5934
				0FCEFAB81805D61600472CE4 /* Debug */,
5935
				0FCEFAB91805D61600472CE4 /* Release */,
5936
				0FCEFABA1805D61600472CE4 /* Profiling */,
5937
				0FCEFABB1805D61600472CE4 /* Production */,
5938
			);
5939
			defaultConfigurationIsVisible = 0;
5940
			defaultConfigurationName = Production;
5941
		};
5760
		0FF922CA14F46B130041A24E /* Build configuration list for PBXNativeTarget "JSCLLIntOffsetsExtractor" */ = {
5942
		0FF922CA14F46B130041A24E /* Build configuration list for PBXNativeTarget "JSCLLIntOffsetsExtractor" */ = {
5761
			isa = XCConfigurationList;
5943
			isa = XCConfigurationList;
5762
			buildConfigurations = (
5944
			buildConfigurations = (
- Source/JavaScriptCore/dfg/DFGPlan.cpp -2 / +2 lines
Lines 67-72 Source/JavaScriptCore/dfg/DFGPlan.cpp_sec1
67
#include "FTLLink.h"
67
#include "FTLLink.h"
68
#include "FTLLowerDFGToLLVM.h"
68
#include "FTLLowerDFGToLLVM.h"
69
#include "FTLState.h"
69
#include "FTLState.h"
70
#include "InitializeLLVM.h"
70
#endif
71
#endif
71
72
72
namespace JSC { namespace DFG {
73
namespace JSC { namespace DFG {
Lines 255-262 Plan::CompilationPath Plan::compileInThr Source/JavaScriptCore/dfg/DFGPlan.cpp_sec2
255
        
256
        
256
        dumpAndVerifyGraph(dfg, "Graph just before FTL lowering:");
257
        dumpAndVerifyGraph(dfg, "Graph just before FTL lowering:");
257
        
258
        
258
        // FIXME: Support OSR entry.
259
        initializeLLVM();
259
        // https://bugs.webkit.org/show_bug.cgi?id=113625
260
        
260
        
261
        FTL::State state(dfg);
261
        FTL::State state(dfg);
262
        FTL::lowerDFGToLLVM(state);
262
        FTL::lowerDFGToLLVM(state);
- Source/JavaScriptCore/disassembler/LLVMDisassembler.cpp -4 / +7 lines
Lines 28-35 Source/JavaScriptCore/disassembler/LLVMDisassembler.cpp_sec1
28
28
29
#if USE(LLVM_DISASSEMBLER)
29
#if USE(LLVM_DISASSEMBLER)
30
30
31
#include "InitializeLLVM.h"
32
#include "LLVMAPI.h"
31
#include "MacroAssemblerCodeRef.h"
33
#include "MacroAssemblerCodeRef.h"
32
#include <wtf/LLVMHeaders.h>
33
34
34
namespace JSC {
35
namespace JSC {
35
36
Lines 79-84 bool tryToDisassembleWithLLVM( Source/JavaScriptCore/disassembler/LLVMDisassembler.cpp_sec2
79
    const MacroAssemblerCodePtr& codePtr, size_t size, const char* prefix, PrintStream& out,
80
    const MacroAssemblerCodePtr& codePtr, size_t size, const char* prefix, PrintStream& out,
80
    InstructionSubsetHint)
81
    InstructionSubsetHint)
81
{
82
{
83
    initializeLLVM();
84
    
82
    const char* triple;
85
    const char* triple;
83
#if CPU(X86_64)
86
#if CPU(X86_64)
84
    triple = "x86_64-apple-darwin";
87
    triple = "x86_64-apple-darwin";
Lines 91-97 bool tryToDisassembleWithLLVM( Source/JavaScriptCore/disassembler/LLVMDisassembler.cpp_sec3
91
    char symbolString[symbolStringSize];
94
    char symbolString[symbolStringSize];
92
    
95
    
93
    LLVMDisasmContextRef disassemblyContext =
96
    LLVMDisasmContextRef disassemblyContext =
94
        LLVMCreateDisasm(triple, symbolString, 0, 0, symbolLookupCallback);
97
        llvm->CreateDisasm(triple, symbolString, 0, 0, symbolLookupCallback);
95
    RELEASE_ASSERT(disassemblyContext);
98
    RELEASE_ASSERT(disassemblyContext);
96
    
99
    
97
    char pcString[20];
100
    char pcString[20];
Lines 105-111 bool tryToDisassembleWithLLVM( Source/JavaScriptCore/disassembler/LLVMDisassembler.cpp_sec4
105
            pcString, sizeof(pcString), "0x%lx",
108
            pcString, sizeof(pcString), "0x%lx",
106
            static_cast<unsigned long>(bitwise_cast<uintptr_t>(pc)));
109
            static_cast<unsigned long>(bitwise_cast<uintptr_t>(pc)));
107
110
108
        size_t instructionSize = LLVMDisasmInstruction(
111
        size_t instructionSize = llvm->DisasmInstruction(
109
            disassemblyContext, pc, end - pc, bitwise_cast<uintptr_t>(pc),
112
            disassemblyContext, pc, end - pc, bitwise_cast<uintptr_t>(pc),
110
            instructionString, sizeof(instructionString));
113
            instructionString, sizeof(instructionString));
111
        
114
        
Lines 117-123 bool tryToDisassembleWithLLVM( Source/JavaScriptCore/disassembler/LLVMDisassembler.cpp_sec5
117
        out.printf("%s%16s: %s\n", prefix, pcString, instructionString);
120
        out.printf("%s%16s: %s\n", prefix, pcString, instructionString);
118
    }
121
    }
119
    
122
    
120
    LLVMDisasmDispose(disassemblyContext);
123
    llvm->DisasmDispose(disassemblyContext);
121
    
124
    
122
    return true;
125
    return true;
123
}
126
}
- Source/JavaScriptCore/ftl/FTLAbbreviatedTypes.h -1 / +1 lines
Lines 30-36 Source/JavaScriptCore/ftl/FTLAbbreviatedTypes.h_sec1
30
30
31
#if ENABLE(FTL_JIT)
31
#if ENABLE(FTL_JIT)
32
32
33
#include <wtf/LLVMHeaders.h>
33
#include "LLVMAPI.h"
34
34
35
namespace JSC { namespace FTL {
35
namespace JSC { namespace FTL {
36
36
- Source/JavaScriptCore/ftl/FTLAbbreviations.h -77 / +78 lines
Lines 33-38 Source/JavaScriptCore/ftl/FTLAbbreviations.h_sec1
33
#include "FTLAbbreviatedTypes.h"
33
#include "FTLAbbreviatedTypes.h"
34
#include "FTLSwitchCase.h"
34
#include "FTLSwitchCase.h"
35
#include "FTLValueFromBlock.h"
35
#include "FTLValueFromBlock.h"
36
#include "LLVMAPI.h"
36
#include <cstring>
37
#include <cstring>
37
38
38
namespace JSC { namespace FTL {
39
namespace JSC { namespace FTL {
Lines 46-67 namespace JSC { namespace FTL { Source/JavaScriptCore/ftl/FTLAbbreviations.h_sec2
46
#error "The FTL backend assumes that pointers are 64-bit."
47
#error "The FTL backend assumes that pointers are 64-bit."
47
#endif
48
#endif
48
49
49
static inline LType voidType(LContext context) { return LLVMVoidTypeInContext(context); }
50
static inline LType voidType(LContext context) { return llvm->VoidTypeInContext(context); }
50
static inline LType int1Type(LContext context) { return LLVMInt1TypeInContext(context); }
51
static inline LType int1Type(LContext context) { return llvm->Int1TypeInContext(context); }
51
static inline LType int8Type(LContext context) { return LLVMInt8TypeInContext(context); }
52
static inline LType int8Type(LContext context) { return llvm->Int8TypeInContext(context); }
52
static inline LType int16Type(LContext context) { return LLVMInt16TypeInContext(context); }
53
static inline LType int16Type(LContext context) { return llvm->Int16TypeInContext(context); }
53
static inline LType int32Type(LContext context) { return LLVMInt32TypeInContext(context); }
54
static inline LType int32Type(LContext context) { return llvm->Int32TypeInContext(context); }
54
static inline LType int64Type(LContext context) { return LLVMInt64TypeInContext(context); }
55
static inline LType int64Type(LContext context) { return llvm->Int64TypeInContext(context); }
55
static inline LType intPtrType(LContext context) { return LLVMInt64TypeInContext(context); }
56
static inline LType intPtrType(LContext context) { return llvm->Int64TypeInContext(context); }
56
static inline LType floatType(LContext context) { return LLVMFloatTypeInContext(context); }
57
static inline LType floatType(LContext context) { return llvm->FloatTypeInContext(context); }
57
static inline LType doubleType(LContext context) { return LLVMDoubleTypeInContext(context); }
58
static inline LType doubleType(LContext context) { return llvm->DoubleTypeInContext(context); }
58
59
59
static inline LType pointerType(LType type) { return LLVMPointerType(type, 0); }
60
static inline LType pointerType(LType type) { return llvm->PointerType(type, 0); }
60
61
61
enum PackingMode { NotPacked, Packed };
62
enum PackingMode { NotPacked, Packed };
62
static inline LType structType(LContext context, LType* elementTypes, unsigned elementCount, PackingMode packing = NotPacked)
63
static inline LType structType(LContext context, LType* elementTypes, unsigned elementCount, PackingMode packing = NotPacked)
63
{
64
{
64
    return LLVMStructTypeInContext(context, elementTypes, elementCount, packing == Packed);
65
    return llvm->StructTypeInContext(context, elementTypes, elementCount, packing == Packed);
65
}
66
}
66
static inline LType structType(LContext context, PackingMode packing = NotPacked)
67
static inline LType structType(LContext context, PackingMode packing = NotPacked)
67
{
68
{
Lines 80-86 static inline LType structType(LContext Source/JavaScriptCore/ftl/FTLAbbreviations.h_sec3
80
enum Variadicity { NotVariadic, Variadic };
81
enum Variadicity { NotVariadic, Variadic };
81
static inline LType functionType(LType returnType, const LType* paramTypes, unsigned paramCount, Variadicity variadicity)
82
static inline LType functionType(LType returnType, const LType* paramTypes, unsigned paramCount, Variadicity variadicity)
82
{
83
{
83
    return LLVMFunctionType(returnType, const_cast<LType*>(paramTypes), paramCount, variadicity == Variadic);
84
    return llvm->FunctionType(returnType, const_cast<LType*>(paramTypes), paramCount, variadicity == Variadic);
84
}
85
}
85
template<typename VectorType>
86
template<typename VectorType>
86
inline LType functionType(LType returnType, const VectorType& vector, Variadicity variadicity = NotVariadic)
87
inline LType functionType(LType returnType, const VectorType& vector, Variadicity variadicity = NotVariadic)
Lines 111-122 static inline LType functionType(LType r Source/JavaScriptCore/ftl/FTLAbbreviations.h_sec4
111
    return functionType(returnType, paramTypes, 4, variadicity);
112
    return functionType(returnType, paramTypes, 4, variadicity);
112
}
113
}
113
114
114
static inline LType typeOf(LValue value) { return LLVMTypeOf(value); }
115
static inline LType typeOf(LValue value) { return llvm->TypeOf(value); }
115
116
116
static inline unsigned mdKindID(LContext context, const char* string) { return LLVMGetMDKindIDInContext(context, string, std::strlen(string)); }
117
static inline unsigned mdKindID(LContext context, const char* string) { return llvm->GetMDKindIDInContext(context, string, std::strlen(string)); }
117
static inline LValue mdString(LContext context, const char* string, unsigned length) { return LLVMMDStringInContext(context, string, length); }
118
static inline LValue mdString(LContext context, const char* string, unsigned length) { return llvm->MDStringInContext(context, string, length); }
118
static inline LValue mdString(LContext context, const char* string) { return mdString(context, string, std::strlen(string)); }
119
static inline LValue mdString(LContext context, const char* string) { return mdString(context, string, std::strlen(string)); }
119
static inline LValue mdNode(LContext context, LValue* args, unsigned numArgs) { return LLVMMDNodeInContext(context, args, numArgs); }
120
static inline LValue mdNode(LContext context, LValue* args, unsigned numArgs) { return llvm->MDNodeInContext(context, args, numArgs); }
120
static inline LValue mdNode(LContext context) { return mdNode(context, 0, 0); }
121
static inline LValue mdNode(LContext context) { return mdNode(context, 0, 0); }
121
static inline LValue mdNode(LContext context, LValue arg1) { return mdNode(context, &arg1, 1); }
122
static inline LValue mdNode(LContext context, LValue arg1) { return mdNode(context, &arg1, 1); }
122
static inline LValue mdNode(LContext context, LValue arg1, LValue arg2)
123
static inline LValue mdNode(LContext context, LValue arg1, LValue arg2)
Lines 125-135 static inline LValue mdNode(LContext con Source/JavaScriptCore/ftl/FTLAbbreviations.h_sec5
125
    return mdNode(context, args, 2);
126
    return mdNode(context, args, 2);
126
}
127
}
127
128
128
static inline void setMetadata(LValue instruction, unsigned kind, LValue metadata) { LLVMSetMetadata(instruction, kind, metadata); }
129
static inline void setMetadata(LValue instruction, unsigned kind, LValue metadata) { llvm->SetMetadata(instruction, kind, metadata); }
129
130
130
static inline LValue addFunction(LModule module, const char* name, LType type) { return LLVMAddFunction(module, name, type); }
131
static inline LValue addFunction(LModule module, const char* name, LType type) { return llvm->AddFunction(module, name, type); }
131
static inline void setLinkage(LValue global, LLinkage linkage) { LLVMSetLinkage(global, linkage); }
132
static inline void setLinkage(LValue global, LLinkage linkage) { llvm->SetLinkage(global, linkage); }
132
static inline void setFunctionCallingConv(LValue function, LCallConv convention) { LLVMSetFunctionCallConv(function, convention); }
133
static inline void setFunctionCallingConv(LValue function, LCallConv convention) { llvm->SetFunctionCallConv(function, convention); }
133
134
134
static inline LValue addExternFunction(LModule module, const char* name, LType type)
135
static inline LValue addExternFunction(LModule module, const char* name, LType type)
135
{
136
{
Lines 138-158 static inline LValue addExternFunction(L Source/JavaScriptCore/ftl/FTLAbbreviations.h_sec6
138
    return result;
139
    return result;
139
}
140
}
140
141
141
static inline LValue getParam(LValue function, unsigned index) { return LLVMGetParam(function, index); }
142
static inline LValue getParam(LValue function, unsigned index) { return llvm->GetParam(function, index); }
142
143
143
enum BitExtension { ZeroExtend, SignExtend };
144
enum BitExtension { ZeroExtend, SignExtend };
144
static inline LValue constInt(LType type, unsigned long long value, BitExtension extension = ZeroExtend) { return LLVMConstInt(type, value, extension == SignExtend); }
145
static inline LValue constInt(LType type, unsigned long long value, BitExtension extension = ZeroExtend) { return llvm->ConstInt(type, value, extension == SignExtend); }
145
static inline LValue constReal(LType type, double value) { return LLVMConstReal(type, value); }
146
static inline LValue constReal(LType type, double value) { return llvm->ConstReal(type, value); }
146
static inline LValue constIntToPtr(LValue value, LType type) { return LLVMConstIntToPtr(value, type); }
147
static inline LValue constIntToPtr(LValue value, LType type) { return llvm->ConstIntToPtr(value, type); }
147
static inline LValue constBitCast(LValue value, LType type) { return LLVMConstBitCast(value, type); }
148
static inline LValue constBitCast(LValue value, LType type) { return llvm->ConstBitCast(value, type); }
148
149
149
static inline LBasicBlock appendBasicBlock(LContext context, LValue function, const char* name = "") { return LLVMAppendBasicBlockInContext(context, function, name); }
150
static inline LBasicBlock appendBasicBlock(LContext context, LValue function, const char* name = "") { return llvm->AppendBasicBlockInContext(context, function, name); }
150
static inline LBasicBlock insertBasicBlock(LContext context, LBasicBlock beforeBasicBlock, const char* name = "") { return LLVMInsertBasicBlockInContext(context, beforeBasicBlock, name); }
151
static inline LBasicBlock insertBasicBlock(LContext context, LBasicBlock beforeBasicBlock, const char* name = "") { return llvm->InsertBasicBlockInContext(context, beforeBasicBlock, name); }
151
152
152
static inline LValue buildPhi(LBuilder builder, LType type) { return LLVMBuildPhi(builder, type, ""); }
153
static inline LValue buildPhi(LBuilder builder, LType type) { return llvm->BuildPhi(builder, type, ""); }
153
static inline void addIncoming(LValue phi, const LValue* values, const LBasicBlock* blocks, unsigned numPredecessors)
154
static inline void addIncoming(LValue phi, const LValue* values, const LBasicBlock* blocks, unsigned numPredecessors)
154
{
155
{
155
    LLVMAddIncoming(phi, const_cast<LValue*>(values), const_cast<LBasicBlock*>(blocks), numPredecessors);
156
    llvm->AddIncoming(phi, const_cast<LValue*>(values), const_cast<LBasicBlock*>(blocks), numPredecessors);
156
}
157
}
157
static inline void addIncoming(LValue phi, ValueFromBlock value1)
158
static inline void addIncoming(LValue phi, ValueFromBlock value1)
158
{
159
{
Lines 180-223 static inline LValue buildPhi( Source/JavaScriptCore/ftl/FTLAbbreviations.h_sec7
180
    return result;
181
    return result;
181
}
182
}
182
183
183
static inline LValue buildAlloca(LBuilder builder, LType type) { return LLVMBuildAlloca(builder, type, ""); }
184
static inline LValue buildAlloca(LBuilder builder, LType type) { return llvm->BuildAlloca(builder, type, ""); }
184
static inline LValue buildAdd(LBuilder builder, LValue left, LValue right) { return LLVMBuildAdd(builder, left, right, ""); }
185
static inline LValue buildAdd(LBuilder builder, LValue left, LValue right) { return llvm->BuildAdd(builder, left, right, ""); }
185
static inline LValue buildSub(LBuilder builder, LValue left, LValue right) { return LLVMBuildSub(builder, left, right, ""); }
186
static inline LValue buildSub(LBuilder builder, LValue left, LValue right) { return llvm->BuildSub(builder, left, right, ""); }
186
static inline LValue buildMul(LBuilder builder, LValue left, LValue right) { return LLVMBuildMul(builder, left, right, ""); }
187
static inline LValue buildMul(LBuilder builder, LValue left, LValue right) { return llvm->BuildMul(builder, left, right, ""); }
187
static inline LValue buildDiv(LBuilder builder, LValue left, LValue right) { return LLVMBuildSDiv(builder, left, right, ""); }
188
static inline LValue buildDiv(LBuilder builder, LValue left, LValue right) { return llvm->BuildSDiv(builder, left, right, ""); }
188
static inline LValue buildRem(LBuilder builder, LValue left, LValue right) { return LLVMBuildSRem(builder, left, right, ""); }
189
static inline LValue buildRem(LBuilder builder, LValue left, LValue right) { return llvm->BuildSRem(builder, left, right, ""); }
189
static inline LValue buildNeg(LBuilder builder, LValue value) { return LLVMBuildNeg(builder, value, ""); }
190
static inline LValue buildNeg(LBuilder builder, LValue value) { return llvm->BuildNeg(builder, value, ""); }
190
static inline LValue buildFAdd(LBuilder builder, LValue left, LValue right) { return LLVMBuildFAdd(builder, left, right, ""); }
191
static inline LValue buildFAdd(LBuilder builder, LValue left, LValue right) { return llvm->BuildFAdd(builder, left, right, ""); }
191
static inline LValue buildFSub(LBuilder builder, LValue left, LValue right) { return LLVMBuildFSub(builder, left, right, ""); }
192
static inline LValue buildFSub(LBuilder builder, LValue left, LValue right) { return llvm->BuildFSub(builder, left, right, ""); }
192
static inline LValue buildFMul(LBuilder builder, LValue left, LValue right) { return LLVMBuildFMul(builder, left, right, ""); }
193
static inline LValue buildFMul(LBuilder builder, LValue left, LValue right) { return llvm->BuildFMul(builder, left, right, ""); }
193
static inline LValue buildFDiv(LBuilder builder, LValue left, LValue right) { return LLVMBuildFDiv(builder, left, right, ""); }
194
static inline LValue buildFDiv(LBuilder builder, LValue left, LValue right) { return llvm->BuildFDiv(builder, left, right, ""); }
194
static inline LValue buildFRem(LBuilder builder, LValue left, LValue right) { return LLVMBuildFRem(builder, left, right, ""); }
195
static inline LValue buildFRem(LBuilder builder, LValue left, LValue right) { return llvm->BuildFRem(builder, left, right, ""); }
195
static inline LValue buildFNeg(LBuilder builder, LValue value) { return LLVMBuildFNeg(builder, value, ""); }
196
static inline LValue buildFNeg(LBuilder builder, LValue value) { return llvm->BuildFNeg(builder, value, ""); }
196
static inline LValue buildAnd(LBuilder builder, LValue left, LValue right) { return LLVMBuildAnd(builder, left, right, ""); }
197
static inline LValue buildAnd(LBuilder builder, LValue left, LValue right) { return llvm->BuildAnd(builder, left, right, ""); }
197
static inline LValue buildOr(LBuilder builder, LValue left, LValue right) { return LLVMBuildOr(builder, left, right, ""); }
198
static inline LValue buildOr(LBuilder builder, LValue left, LValue right) { return llvm->BuildOr(builder, left, right, ""); }
198
static inline LValue buildXor(LBuilder builder, LValue left, LValue right) { return LLVMBuildXor(builder, left, right, ""); }
199
static inline LValue buildXor(LBuilder builder, LValue left, LValue right) { return llvm->BuildXor(builder, left, right, ""); }
199
static inline LValue buildShl(LBuilder builder, LValue left, LValue right) { return LLVMBuildShl(builder, left, right, ""); }
200
static inline LValue buildShl(LBuilder builder, LValue left, LValue right) { return llvm->BuildShl(builder, left, right, ""); }
200
static inline LValue buildAShr(LBuilder builder, LValue left, LValue right) { return LLVMBuildAShr(builder, left, right, ""); }
201
static inline LValue buildAShr(LBuilder builder, LValue left, LValue right) { return llvm->BuildAShr(builder, left, right, ""); }
201
static inline LValue buildLShr(LBuilder builder, LValue left, LValue right) { return LLVMBuildLShr(builder, left, right, ""); }
202
static inline LValue buildLShr(LBuilder builder, LValue left, LValue right) { return llvm->BuildLShr(builder, left, right, ""); }
202
static inline LValue buildNot(LBuilder builder, LValue value) { return LLVMBuildNot(builder, value, ""); }
203
static inline LValue buildNot(LBuilder builder, LValue value) { return llvm->BuildNot(builder, value, ""); }
203
static inline LValue buildLoad(LBuilder builder, LValue pointer) { return LLVMBuildLoad(builder, pointer, ""); }
204
static inline LValue buildLoad(LBuilder builder, LValue pointer) { return llvm->BuildLoad(builder, pointer, ""); }
204
static inline LValue buildStore(LBuilder builder, LValue value, LValue pointer) { return LLVMBuildStore(builder, value, pointer); }
205
static inline LValue buildStore(LBuilder builder, LValue value, LValue pointer) { return llvm->BuildStore(builder, value, pointer); }
205
static inline LValue buildSExt(LBuilder builder, LValue value, LType type) { return LLVMBuildSExt(builder, value, type, ""); }
206
static inline LValue buildSExt(LBuilder builder, LValue value, LType type) { return llvm->BuildSExt(builder, value, type, ""); }
206
static inline LValue buildZExt(LBuilder builder, LValue value, LType type) { return LLVMBuildZExt(builder, value, type, ""); }
207
static inline LValue buildZExt(LBuilder builder, LValue value, LType type) { return llvm->BuildZExt(builder, value, type, ""); }
207
static inline LValue buildFPToSI(LBuilder builder, LValue value, LType type) { return LLVMBuildFPToSI(builder, value, type, ""); }
208
static inline LValue buildFPToSI(LBuilder builder, LValue value, LType type) { return llvm->BuildFPToSI(builder, value, type, ""); }
208
static inline LValue buildFPToUI(LBuilder builder, LValue value, LType type) { return LLVMBuildFPToUI(builder, value, type, ""); }
209
static inline LValue buildFPToUI(LBuilder builder, LValue value, LType type) { return llvm->BuildFPToUI(builder, value, type, ""); }
209
static inline LValue buildSIToFP(LBuilder builder, LValue value, LType type) { return LLVMBuildSIToFP(builder, value, type, ""); }
210
static inline LValue buildSIToFP(LBuilder builder, LValue value, LType type) { return llvm->BuildSIToFP(builder, value, type, ""); }
210
static inline LValue buildUIToFP(LBuilder builder, LValue value, LType type) { return LLVMBuildUIToFP(builder, value, type, ""); }
211
static inline LValue buildUIToFP(LBuilder builder, LValue value, LType type) { return llvm->BuildUIToFP(builder, value, type, ""); }
211
static inline LValue buildIntCast(LBuilder builder, LValue value, LType type) { return LLVMBuildIntCast(builder, value, type, ""); }
212
static inline LValue buildIntCast(LBuilder builder, LValue value, LType type) { return llvm->BuildIntCast(builder, value, type, ""); }
212
static inline LValue buildFPCast(LBuilder builder, LValue value, LType type) { return LLVMBuildFPCast(builder, value, type, ""); }
213
static inline LValue buildFPCast(LBuilder builder, LValue value, LType type) { return llvm->BuildFPCast(builder, value, type, ""); }
213
static inline LValue buildIntToPtr(LBuilder builder, LValue value, LType type) { return LLVMBuildIntToPtr(builder, value, type, ""); }
214
static inline LValue buildIntToPtr(LBuilder builder, LValue value, LType type) { return llvm->BuildIntToPtr(builder, value, type, ""); }
214
static inline LValue buildPtrToInt(LBuilder builder, LValue value, LType type) { return LLVMBuildPtrToInt(builder, value, type, ""); }
215
static inline LValue buildPtrToInt(LBuilder builder, LValue value, LType type) { return llvm->BuildPtrToInt(builder, value, type, ""); }
215
static inline LValue buildBitCast(LBuilder builder, LValue value, LType type) { return LLVMBuildBitCast(builder, value, type, ""); }
216
static inline LValue buildBitCast(LBuilder builder, LValue value, LType type) { return llvm->BuildBitCast(builder, value, type, ""); }
216
static inline LValue buildICmp(LBuilder builder, LIntPredicate cond, LValue left, LValue right) { return LLVMBuildICmp(builder, cond, left, right, ""); }
217
static inline LValue buildICmp(LBuilder builder, LIntPredicate cond, LValue left, LValue right) { return llvm->BuildICmp(builder, cond, left, right, ""); }
217
static inline LValue buildFCmp(LBuilder builder, LRealPredicate cond, LValue left, LValue right) { return LLVMBuildFCmp(builder, cond, left, right, ""); }
218
static inline LValue buildFCmp(LBuilder builder, LRealPredicate cond, LValue left, LValue right) { return llvm->BuildFCmp(builder, cond, left, right, ""); }
218
static inline LValue buildCall(LBuilder builder, LValue function, const LValue* args, unsigned numArgs)
219
static inline LValue buildCall(LBuilder builder, LValue function, const LValue* args, unsigned numArgs)
219
{
220
{
220
    return LLVMBuildCall(builder, function, const_cast<LValue*>(args), numArgs, "");
221
    return llvm->BuildCall(builder, function, const_cast<LValue*>(args), numArgs, "");
221
}
222
}
222
template<typename VectorType>
223
template<typename VectorType>
223
inline LValue buildCall(LBuilder builder, LValue function, const VectorType& vector)
224
inline LValue buildCall(LBuilder builder, LValue function, const VectorType& vector)
Lines 248-260 static inline LValue buildCall(LBuilder Source/JavaScriptCore/ftl/FTLAbbreviations.h_sec8
248
    return buildCall(builder, function, args, 4);
249
    return buildCall(builder, function, args, 4);
249
}
250
}
250
enum TailCallMode { IsNotTailCall, IsTailCall };
251
enum TailCallMode { IsNotTailCall, IsTailCall };
251
static inline void setTailCall(LValue call, TailCallMode mode) { LLVMSetTailCall(call, mode == IsTailCall); }
252
static inline void setTailCall(LValue call, TailCallMode mode) { llvm->SetTailCall(call, mode == IsTailCall); }
252
static inline LValue buildExtractValue(LBuilder builder, LValue aggVal, unsigned index) { return LLVMBuildExtractValue(builder, aggVal, index, ""); }
253
static inline LValue buildExtractValue(LBuilder builder, LValue aggVal, unsigned index) { return llvm->BuildExtractValue(builder, aggVal, index, ""); }
253
static inline LValue buildSelect(LBuilder builder, LValue condition, LValue taken, LValue notTaken) { return LLVMBuildSelect(builder, condition, taken, notTaken, ""); }
254
static inline LValue buildSelect(LBuilder builder, LValue condition, LValue taken, LValue notTaken) { return llvm->BuildSelect(builder, condition, taken, notTaken, ""); }
254
static inline LValue buildBr(LBuilder builder, LBasicBlock destination) { return LLVMBuildBr(builder, destination); }
255
static inline LValue buildBr(LBuilder builder, LBasicBlock destination) { return llvm->BuildBr(builder, destination); }
255
static inline LValue buildCondBr(LBuilder builder, LValue condition, LBasicBlock taken, LBasicBlock notTaken) { return LLVMBuildCondBr(builder, condition, taken, notTaken); }
256
static inline LValue buildCondBr(LBuilder builder, LValue condition, LBasicBlock taken, LBasicBlock notTaken) { return llvm->BuildCondBr(builder, condition, taken, notTaken); }
256
static inline LValue buildSwitch(LBuilder builder, LValue value, LBasicBlock fallThrough, unsigned numCases) { return LLVMBuildSwitch(builder, value, fallThrough, numCases); }
257
static inline LValue buildSwitch(LBuilder builder, LValue value, LBasicBlock fallThrough, unsigned numCases) { return llvm->BuildSwitch(builder, value, fallThrough, numCases); }
257
static inline void addCase(LValue switchInst, LValue value, LBasicBlock target) { LLVMAddCase(switchInst, value, target); }
258
static inline void addCase(LValue switchInst, LValue value, LBasicBlock target) { llvm->AddCase(switchInst, value, target); }
258
template<typename VectorType>
259
template<typename VectorType>
259
static inline LValue buildSwitch(LBuilder builder, LValue value, const VectorType& cases, LBasicBlock fallThrough)
260
static inline LValue buildSwitch(LBuilder builder, LValue value, const VectorType& cases, LBasicBlock fallThrough)
260
{
261
{
Lines 263-277 static inline LValue buildSwitch(LBuilde Source/JavaScriptCore/ftl/FTLAbbreviations.h_sec9
263
        addCase(result, cases[i].value(), cases[i].target());
264
        addCase(result, cases[i].value(), cases[i].target());
264
    return result;
265
    return result;
265
}
266
}
266
static inline LValue buildRet(LBuilder builder, LValue value) { return LLVMBuildRet(builder, value); }
267
static inline LValue buildRet(LBuilder builder, LValue value) { return llvm->BuildRet(builder, value); }
267
static inline LValue buildUnreachable(LBuilder builder) { return LLVMBuildUnreachable(builder); }
268
static inline LValue buildUnreachable(LBuilder builder) { return llvm->BuildUnreachable(builder); }
268
269
269
static inline void dumpModule(LModule module) { LLVMDumpModule(module); }
270
static inline void dumpModule(LModule module) { llvm->DumpModule(module); }
270
static inline void verifyModule(LModule module)
271
static inline void verifyModule(LModule module)
271
{
272
{
272
    char* error = 0;
273
    char* error = 0;
273
    LLVMVerifyModule(module, LLVMAbortProcessAction, &error);
274
    llvm->VerifyModule(module, LLVMAbortProcessAction, &error);
274
    LLVMDisposeMessage(error);
275
    llvm->DisposeMessage(error);
275
}
276
}
276
277
277
} } // namespace JSC::FTL
278
} } // namespace JSC::FTL
- Source/JavaScriptCore/ftl/FTLCompile.cpp -22 / +22 lines
Lines 37-45 Source/JavaScriptCore/ftl/FTLCompile.cpp_sec1
37
#include "FTLJITCode.h"
37
#include "FTLJITCode.h"
38
#include "FTLThunks.h"
38
#include "FTLThunks.h"
39
#include "JITStubs.h"
39
#include "JITStubs.h"
40
#include "LLVMAPI.h"
40
#include "LinkBuffer.h"
41
#include "LinkBuffer.h"
41
#include "RepatchBuffer.h"
42
#include "RepatchBuffer.h"
42
#include <wtf/LLVMHeaders.h>
43
43
44
namespace JSC { namespace FTL {
44
namespace JSC { namespace FTL {
45
45
Lines 155-206 void compile(State& state) Source/JavaScriptCore/ftl/FTLCompile.cpp_sec2
155
    char* error = 0;
155
    char* error = 0;
156
    
156
    
157
    LLVMMCJITCompilerOptions options;
157
    LLVMMCJITCompilerOptions options;
158
    LLVMInitializeMCJITCompilerOptions(&options, sizeof(options));
158
    llvm->InitializeMCJITCompilerOptions(&options, sizeof(options));
159
    options.OptLevel = Options::llvmBackendOptimizationLevel();
159
    options.OptLevel = Options::llvmBackendOptimizationLevel();
160
    options.NoFramePointerElim = true;
160
    options.NoFramePointerElim = true;
161
    if (Options::useLLVMSmallCodeModel())
161
    if (Options::useLLVMSmallCodeModel())
162
        options.CodeModel = LLVMCodeModelSmall;
162
        options.CodeModel = LLVMCodeModelSmall;
163
    options.EnableFastISel = Options::enableLLVMFastISel();
163
    options.EnableFastISel = Options::enableLLVMFastISel();
164
    options.MCJMM = LLVMCreateSimpleMCJITMemoryManager(
164
    options.MCJMM = llvm->CreateSimpleMCJITMemoryManager(
165
        &state, mmAllocateCodeSection, mmAllocateDataSection, mmApplyPermissions, mmDestroy);
165
        &state, mmAllocateCodeSection, mmAllocateDataSection, mmApplyPermissions, mmDestroy);
166
    
166
    
167
    LLVMExecutionEngineRef engine;
167
    LLVMExecutionEngineRef engine;
168
    
168
    
169
    if (LLVMCreateMCJITCompilerForModule(&engine, state.module, &options, sizeof(options), &error)) {
169
    if (llvm->CreateMCJITCompilerForModule(&engine, state.module, &options, sizeof(options), &error)) {
170
        dataLog("FATAL: Could not create LLVM execution engine: ", error, "\n");
170
        dataLog("FATAL: Could not create LLVM execution engine: ", error, "\n");
171
        CRASH();
171
        CRASH();
172
    }
172
    }
173
173
174
    LLVMPassManagerBuilderRef passBuilder = LLVMPassManagerBuilderCreate();
174
    LLVMPassManagerBuilderRef passBuilder = llvm->PassManagerBuilderCreate();
175
    LLVMPassManagerBuilderSetOptLevel(passBuilder, Options::llvmOptimizationLevel());
175
    llvm->PassManagerBuilderSetOptLevel(passBuilder, Options::llvmOptimizationLevel());
176
    LLVMPassManagerBuilderSetSizeLevel(passBuilder, Options::llvmSizeLevel());
176
    llvm->PassManagerBuilderSetSizeLevel(passBuilder, Options::llvmSizeLevel());
177
    
177
    
178
    LLVMPassManagerRef functionPasses = LLVMCreateFunctionPassManagerForModule(state.module);
178
    LLVMPassManagerRef functionPasses = llvm->CreateFunctionPassManagerForModule(state.module);
179
    LLVMPassManagerRef modulePasses = LLVMCreatePassManager();
179
    LLVMPassManagerRef modulePasses = llvm->CreatePassManager();
180
    
180
    
181
    LLVMAddTargetData(LLVMGetExecutionEngineTargetData(engine), modulePasses);
181
    llvm->AddTargetData(llvm->GetExecutionEngineTargetData(engine), modulePasses);
182
    
182
    
183
    LLVMPassManagerBuilderPopulateFunctionPassManager(passBuilder, functionPasses);
183
    llvm->PassManagerBuilderPopulateFunctionPassManager(passBuilder, functionPasses);
184
    LLVMPassManagerBuilderPopulateModulePassManager(passBuilder, modulePasses);
184
    llvm->PassManagerBuilderPopulateModulePassManager(passBuilder, modulePasses);
185
    
185
    
186
    LLVMPassManagerBuilderDispose(passBuilder);
186
    llvm->PassManagerBuilderDispose(passBuilder);
187
187
188
    LLVMInitializeFunctionPassManager(functionPasses);
188
    llvm->InitializeFunctionPassManager(functionPasses);
189
    for (LValue function = LLVMGetFirstFunction(state.module); function; function = LLVMGetNextFunction(function))
189
    for (LValue function = llvm->GetFirstFunction(state.module); function; function = llvm->GetNextFunction(function))
190
        LLVMRunFunctionPassManager(functionPasses, function);
190
        llvm->RunFunctionPassManager(functionPasses, function);
191
    LLVMFinalizeFunctionPassManager(functionPasses);
191
    llvm->FinalizeFunctionPassManager(functionPasses);
192
    
192
    
193
    LLVMRunPassManager(modulePasses, state.module);
193
    llvm->RunPassManager(modulePasses, state.module);
194
194
195
    if (DFG::shouldShowDisassembly() || DFG::verboseCompilationEnabled())
195
    if (DFG::shouldShowDisassembly() || DFG::verboseCompilationEnabled())
196
        state.dumpState("after optimization");
196
        state.dumpState("after optimization");
197
    
197
    
198
    // FIXME: Need to add support for the case where JIT memory allocation failed.
198
    // FIXME: Need to add support for the case where JIT memory allocation failed.
199
    // https://bugs.webkit.org/show_bug.cgi?id=113620
199
    // https://bugs.webkit.org/show_bug.cgi?id=113620
200
    state.generatedFunction = reinterpret_cast<GeneratedFunction>(LLVMGetPointerToGlobal(engine, state.function));
200
    state.generatedFunction = reinterpret_cast<GeneratedFunction>(llvm->GetPointerToGlobal(engine, state.function));
201
    LLVMDisposePassManager(functionPasses);
201
    llvm->DisposePassManager(functionPasses);
202
    LLVMDisposePassManager(modulePasses);
202
    llvm->DisposePassManager(modulePasses);
203
    LLVMDisposeExecutionEngine(engine);
203
    llvm->DisposeExecutionEngine(engine);
204
204
205
    if (shouldShowDisassembly()) {
205
    if (shouldShowDisassembly()) {
206
        for (unsigned i = 0; i < state.jitCode->handles().size(); ++i) {
206
        for (unsigned i = 0; i < state.jitCode->handles().size(); ++i) {
- Source/JavaScriptCore/ftl/FTLFail.cpp -2 / +2 lines
Lines 30-36 Source/JavaScriptCore/ftl/FTLFail.cpp_sec1
30
30
31
#include "DFGFailedFinalizer.h"
31
#include "DFGFailedFinalizer.h"
32
#include "FTLJITCode.h"
32
#include "FTLJITCode.h"
33
#include <wtf/LLVMHeaders.h>
33
#include "LLVMAPI.h"
34
34
35
namespace JSC { namespace FTL {
35
namespace JSC { namespace FTL {
36
36
Lines 41-47 void fail(State& state) Source/JavaScriptCore/ftl/FTLFail.cpp_sec2
41
    state.graph.m_plan.finalizer = adoptPtr(new FailedFinalizer(state.graph.m_plan));
41
    state.graph.m_plan.finalizer = adoptPtr(new FailedFinalizer(state.graph.m_plan));
42
    
42
    
43
    if (state.module)
43
    if (state.module)
44
        LLVMDisposeModule(state.module);
44
        llvm->DisposeModule(state.module);
45
}
45
}
46
46
47
} } // namespace JSC::FTL
47
} } // namespace JSC::FTL
- Source/JavaScriptCore/ftl/FTLJITCode.h -1 / +1 lines
Lines 34-40 Source/JavaScriptCore/ftl/FTLJITCode.h_sec1
34
#include "FTLOSRExit.h"
34
#include "FTLOSRExit.h"
35
#include "FTLStackMaps.h"
35
#include "FTLStackMaps.h"
36
#include "JITCode.h"
36
#include "JITCode.h"
37
#include <wtf/LLVMHeaders.h>
37
#include "LLVMAPI.h"
38
#include <wtf/RefCountedArray.h>
38
#include <wtf/RefCountedArray.h>
39
39
40
namespace JSC { namespace FTL {
40
namespace JSC { namespace FTL {
- Source/JavaScriptCore/ftl/FTLJITFinalizer.h -1 / +1 lines
Lines 33-41 Source/JavaScriptCore/ftl/FTLJITFinalizer.h_sec1
33
#include "DFGFinalizer.h"
33
#include "DFGFinalizer.h"
34
#include "FTLGeneratedFunction.h"
34
#include "FTLGeneratedFunction.h"
35
#include "FTLJITCode.h"
35
#include "FTLJITCode.h"
36
#include "LLVMAPI.h"
36
#include "LinkBuffer.h"
37
#include "LinkBuffer.h"
37
#include "MacroAssembler.h"
38
#include "MacroAssembler.h"
38
#include <wtf/LLVMHeaders.h>
39
39
40
namespace JSC { namespace FTL {
40
namespace JSC { namespace FTL {
41
41
- Source/JavaScriptCore/ftl/FTLLink.cpp -1 / +1 lines
Lines 35-43 Source/JavaScriptCore/ftl/FTLLink.cpp_sec1
35
#include "FTLJITCode.h"
35
#include "FTLJITCode.h"
36
#include "JITOperations.h"
36
#include "JITOperations.h"
37
#include "JITStubs.h"
37
#include "JITStubs.h"
38
#include "LLVMAPI.h"
38
#include "LinkBuffer.h"
39
#include "LinkBuffer.h"
39
#include "VirtualRegister.h"
40
#include "VirtualRegister.h"
40
#include <wtf/LLVMHeaders.h>
41
41
42
namespace JSC { namespace FTL {
42
namespace JSC { namespace FTL {
43
43
- Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp -1 / +1 lines
Lines 97-103 public: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp_sec1
97
        m_graph.m_dominators.computeIfNecessary(m_graph);
97
        m_graph.m_dominators.computeIfNecessary(m_graph);
98
        
98
        
99
        m_ftlState.module =
99
        m_ftlState.module =
100
            LLVMModuleCreateWithNameInContext(name.data(), m_ftlState.context);
100
            llvm->ModuleCreateWithNameInContext(name.data(), m_ftlState.context);
101
        
101
        
102
        m_ftlState.function = addFunction(
102
        m_ftlState.function = addFunction(
103
            m_ftlState.module, name.data(), functionType(m_out.int64, m_out.intPtr));
103
            m_ftlState.module, name.data(), functionType(m_out.int64, m_out.intPtr));
- Source/JavaScriptCore/ftl/FTLOutput.cpp -2 / +2 lines
Lines 34-40 Output::Output(LContext context) Source/JavaScriptCore/ftl/FTLOutput.cpp_sec1
34
    : IntrinsicRepository(context)
34
    : IntrinsicRepository(context)
35
    , m_function(0)
35
    , m_function(0)
36
    , m_heaps(0)
36
    , m_heaps(0)
37
    , m_builder(LLVMCreateBuilderInContext(m_context))
37
    , m_builder(llvm->CreateBuilderInContext(m_context))
38
    , m_block(0)
38
    , m_block(0)
39
    , m_nextBlock(0)
39
    , m_nextBlock(0)
40
{
40
{
Lines 42-48 Output::Output(LContext context) Source/JavaScriptCore/ftl/FTLOutput.cpp_sec2
42
42
43
Output::~Output()
43
Output::~Output()
44
{
44
{
45
    LLVMDisposeBuilder(m_builder);
45
    llvm->DisposeBuilder(m_builder);
46
}
46
}
47
47
48
} } // namespace JSC::FTL
48
} } // namespace JSC::FTL
- Source/JavaScriptCore/ftl/FTLOutput.h -1 / +1 lines
Lines 94-100 public: Source/JavaScriptCore/ftl/FTLOutput.h_sec1
94
    {
94
    {
95
        m_block = block;
95
        m_block = block;
96
        
96
        
97
        LLVMPositionBuilderAtEnd(m_builder, block);
97
        llvm->PositionBuilderAtEnd(m_builder, block);
98
    }
98
    }
99
    LBasicBlock newBlock(const char* name = "")
99
    LBasicBlock newBlock(const char* name = "")
100
    {
100
    {
- Source/JavaScriptCore/ftl/FTLState.cpp -2 / +2 lines
Lines 39-45 using namespace DFG; Source/JavaScriptCore/ftl/FTLState.cpp_sec1
39
39
40
State::State(Graph& graph)
40
State::State(Graph& graph)
41
    : graph(graph)
41
    : graph(graph)
42
    , context(LLVMContextCreate())
42
    , context(llvm->ContextCreate())
43
    , module(0)
43
    , module(0)
44
    , function(0)
44
    , function(0)
45
    , generatedFunction(0)
45
    , generatedFunction(0)
Lines 67-73 State::State(Graph& graph) Source/JavaScriptCore/ftl/FTLState.cpp_sec2
67
67
68
State::~State()
68
State::~State()
69
{
69
{
70
    LLVMContextDispose(context);
70
    llvm->ContextDispose(context);
71
}
71
}
72
72
73
void State::dumpState(const char* when)
73
void State::dumpState(const char* when)
- Source/JavaScriptCore/ftl/WebKitLLVMLibraryAnchor.cpp -34 lines
Lines 1-34 Source/JavaScriptCore/ftl/WebKitLLVMLibraryAnchor.cpp_sec1
1
/*
2
 * Copyright (C) 2013 Apple Inc. All rights reserved.
3
 *
4
 * Redistribution and use in source and binary forms, with or without
5
 * modification, are permitted provided that the following conditions
6
 * are met:
7
 * 1. Redistributions of source code must retain the above copyright
8
 *    notice, this list of conditions and the following disclaimer.
9
 * 2. Redistributions in binary form must reproduce the above copyright
10
 *    notice, this list of conditions and the following disclaimer in the
11
 *    documentation and/or other materials provided with the distribution.
12
 *
13
 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
14
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
17
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21
 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
24
 */
25
26
#include "config.h"
27
28
#if ENABLE(FTL_JIT)
29
// This is a hack for ensuring that the build system relinks JavaScriptCore if any
30
// of the LLVM libraries are known to have changed.
31
#include "WebKitLLVMLibraryToken.h"
32
33
#endif
34
- Source/JavaScriptCore/llvm/InitializeLLVM.cpp +45 lines
Line 0 Source/JavaScriptCore/llvm/InitializeLLVM.cpp_sec1
1
/*
2
 * Copyright (C) 2013 Apple Inc. All rights reserved.
3
 *
4
 * Redistribution and use in source and binary forms, with or without
5
 * modification, are permitted provided that the following conditions
6
 * are met:
7
 * 1. Redistributions of source code must retain the above copyright
8
 *    notice, this list of conditions and the following disclaimer.
9
 * 2. Redistributions in binary form must reproduce the above copyright
10
 *    notice, this list of conditions and the following disclaimer in the
11
 *    documentation and/or other materials provided with the distribution.
12
 *
13
 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
14
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
17
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21
 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
24
 */
25
26
#include "config.h"
27
#include "InitializeLLVM.h"
28
29
#if HAVE(LLVM)
30
31
#include <pthread.h>
32
33
namespace JSC {
34
35
static pthread_once_t initializeLLVMOnceKey = PTHREAD_ONCE_INIT;
36
37
void initializeLLVM()
38
{
39
    pthread_once(&initializeLLVMOnceKey, initializeLLVMImpl);
40
}
41
42
} // namespace JSC
43
44
#endif // HAVE(LLVM)
45
- Source/JavaScriptCore/llvm/InitializeLLVM.h +44 lines
Line 0 Source/JavaScriptCore/llvm/InitializeLLVM.h_sec1
1
/*
2
 * Copyright (C) 2013 Apple Inc. All rights reserved.
3
 *
4
 * Redistribution and use in source and binary forms, with or without
5
 * modification, are permitted provided that the following conditions
6
 * are met:
7
 * 1. Redistributions of source code must retain the above copyright
8
 *    notice, this list of conditions and the following disclaimer.
9
 * 2. Redistributions in binary form must reproduce the above copyright
10
 *    notice, this list of conditions and the following disclaimer in the
11
 *    documentation and/or other materials provided with the distribution.
12
 *
13
 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
14
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
17
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21
 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
24
 */
25
26
#ifndef InitializeLLVM_h
27
#define InitializeLLVM_h
28
29
#include <wtf/Platform.h>
30
31
#if HAVE(LLVM)
32
33
namespace JSC {
34
35
void initializeLLVMImpl();
36
37
void initializeLLVM(); // It's safe to call this multiple times.
38
39
} // namespace JSC
40
41
#endif // HAVE(LLVM)
42
43
#endif // InitializeLLVM_h
44
- Source/JavaScriptCore/llvm/InitializeLLVMMac.mm +57 lines
Line 0 Source/JavaScriptCore/llvm/InitializeLLVMMac.mm_sec1
1
/*
2
 * Copyright (C) 2013 Apple Inc. All rights reserved.
3
 *
4
 * Redistribution and use in source and binary forms, with or without
5
 * modification, are permitted provided that the following conditions
6
 * are met:
7
 * 1. Redistributions of source code must retain the above copyright
8
 *    notice, this list of conditions and the following disclaimer.
9
 * 2. Redistributions in binary form must reproduce the above copyright
10
 *    notice, this list of conditions and the following disclaimer in the
11
 *    documentation and/or other materials provided with the distribution.
12
 *
13
 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
14
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
17
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21
 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
24
 */
25
26
#import "config.h"
27
#import "InitializeLLVM.h"
28
29
#if HAVE(LLVM)
30
31
#import "InitializeLLVMPOSIX.h"
32
#import <Foundation/Foundation.h>
33
34
// Use the "JS" prefix to make check-for-inappropriate-objc-class-names happy. I
35
// think this is better than hacking that script.
36
37
@interface JSJavaScriptCoreBundleFinder : NSObject
38
@end
39
40
@implementation JSJavaScriptCoreBundleFinder
41
@end
42
43
namespace JSC {
44
45
void initializeLLVMImpl()
46
{
47
    @autoreleasepool {
48
        NSBundle *myBundle = [NSBundle bundleForClass:[JSJavaScriptCoreBundleFinder class]];
49
        NSString *path = [[myBundle bundlePath] stringByAppendingPathComponent:@"Libraries/libllvmForJSC.dylib"];
50
        
51
        initializeLLVMPOSIX([path UTF8String]);
52
    }
53
}
54
55
} // namespace JSC
56
57
#endif // HAVE(LLVM)
- Source/JavaScriptCore/llvm/InitializeLLVMPOSIX.cpp +53 lines
Line 0 Source/JavaScriptCore/llvm/InitializeLLVMPOSIX.cpp_sec1
1
/*
2
 * Copyright (C) 2013 Apple Inc. All rights reserved.
3
 *
4
 * Redistribution and use in source and binary forms, with or without
5
 * modification, are permitted provided that the following conditions
6
 * are met:
7
 * 1. Redistributions of source code must retain the above copyright
8
 *    notice, this list of conditions and the following disclaimer.
9
 * 2. Redistributions in binary form must reproduce the above copyright
10
 *    notice, this list of conditions and the following disclaimer in the
11
 *    documentation and/or other materials provided with the distribution.
12
 *
13
 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
14
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
17
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21
 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
24
 */
25
26
#include "config.h"
27
#include "InitializeLLVMPOSIX.h"
28
29
#if HAVE(LLVM)
30
31
#include "LLVMAPI.h"
32
#include <dlfcn.h>
33
34
namespace JSC {
35
36
typedef LLVMAPI* (*InitializerFunction)();
37
38
void initializeLLVMPOSIX(const char* libraryName)
39
{
40
    void* library = dlopen(libraryName, RTLD_NOW);
41
    ASSERT_WITH_MESSAGE(library, "%s", dlerror());
42
    
43
    InitializerFunction initializer = bitwise_cast<InitializerFunction>(
44
        dlsym(library, "initializeAndGetJSCLLVMAPI"));
45
    ASSERT_WITH_MESSAGE(initializer, "%s", dlerror());
46
    
47
    llvm = initializer();
48
}
49
50
} // namespace JSC
51
52
#endif // HAVE(LLVM)
53
- Source/JavaScriptCore/llvm/InitializeLLVMPOSIX.h +42 lines
Line 0 Source/JavaScriptCore/llvm/InitializeLLVMPOSIX.h_sec1
1
/*
2
 * Copyright (C) 2013 Apple Inc. All rights reserved.
3
 *
4
 * Redistribution and use in source and binary forms, with or without
5
 * modification, are permitted provided that the following conditions
6
 * are met:
7
 * 1. Redistributions of source code must retain the above copyright
8
 *    notice, this list of conditions and the following disclaimer.
9
 * 2. Redistributions in binary form must reproduce the above copyright
10
 *    notice, this list of conditions and the following disclaimer in the
11
 *    documentation and/or other materials provided with the distribution.
12
 *
13
 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
14
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
17
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21
 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
24
 */
25
26
#ifndef InitializeLLVMPOSIX_h
27
#define InitializeLLVMPOSIX_h
28
29
#include <wtf/Platform.h>
30
31
#if HAVE(LLVM)
32
33
namespace JSC {
34
35
void initializeLLVMPOSIX(const char* libraryName);
36
37
} // namespace JSC
38
39
#endif // HAVE(LLVM)
40
41
#endif // InitializeLLVMPOSIX_h
42
- Source/JavaScriptCore/llvm/LLVMAPI.cpp +37 lines
Line 0 Source/JavaScriptCore/llvm/LLVMAPI.cpp_sec1
1
/*
2
 * Copyright (C) 2013 Apple Inc. All rights reserved.
3
 *
4
 * Redistribution and use in source and binary forms, with or without
5
 * modification, are permitted provided that the following conditions
6
 * are met:
7
 * 1. Redistributions of source code must retain the above copyright
8
 *    notice, this list of conditions and the following disclaimer.
9
 * 2. Redistributions in binary form must reproduce the above copyright
10
 *    notice, this list of conditions and the following disclaimer in the
11
 *    documentation and/or other materials provided with the distribution.
12
 *
13
 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
14
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
17
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21
 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
24
 */
25
26
#include "config.h"
27
#include "LLVMAPI.h"
28
29
#if HAVE(LLVM)
30
31
namespace JSC {
32
33
LLVMAPI* llvm;
34
35
}
36
37
#endif // HAVE(LLVM)
- Source/JavaScriptCore/llvm/LLVMAPI.h +52 lines
Line 0 Source/JavaScriptCore/llvm/LLVMAPI.h_sec1
1
/*
2
 * Copyright (C) 2013 Apple Inc. All rights reserved.
3
 *
4
 * Redistribution and use in source and binary forms, with or without
5
 * modification, are permitted provided that the following conditions
6
 * are met:
7
 * 1. Redistributions of source code must retain the above copyright
8
 *    notice, this list of conditions and the following disclaimer.
9
 * 2. Redistributions in binary form must reproduce the above copyright
10
 *    notice, this list of conditions and the following disclaimer in the
11
 *    documentation and/or other materials provided with the distribution.
12
 *
13
 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
14
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
17
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21
 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
24
 */
25
26
#ifndef LLVMAPI_h
27
#define LLVMAPI_h
28
29
#include <wtf/Platform.h>
30
31
#if HAVE(LLVM)
32
33
#include "LLVMAPIFunctions.h"
34
#include "LLVMHeaders.h"
35
36
namespace JSC {
37
38
struct LLVMAPI {
39
#define LLVM_API_FUNCTION_DECLARATION(returnType, name, signature) \
40
    returnType (*name) signature;
41
    FOR_EACH_LLVM_API_FUNCTION(LLVM_API_FUNCTION_DECLARATION)
42
#undef LLVM_API_FUNCTION_DECLARATION
43
};
44
45
extern LLVMAPI* llvm;
46
47
} // namespace JSC
48
49
#endif // HAVE(LLVM)
50
51
#endif // LLVMAPI_h
52
- Source/JavaScriptCore/llvm/LLVMAPIFunctions.h +636 lines
Line 0 Source/JavaScriptCore/llvm/LLVMAPIFunctions.h_sec1
1
/*
2
 * Copyright (C) 2013 Apple Inc. All rights reserved.
3
 *
4
 * Redistribution and use in source and binary forms, with or without
5
 * modification, are permitted provided that the following conditions
6
 * are met:
7
 * 1. Redistributions of source code must retain the above copyright
8
 *    notice, this list of conditions and the following disclaimer.
9
 * 2. Redistributions in binary form must reproduce the above copyright
10
 *    notice, this list of conditions and the following disclaimer in the
11
 *    documentation and/or other materials provided with the distribution.
12
 *
13
 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
14
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
17
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21
 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
24
 */
25
26
#ifndef LLVMAPIFunctions_h
27
#define LLVMAPIFunctions_h
28
29
#include "LLVMHeaders.h"
30
31
#define FOR_EACH_LLVM_API_FUNCTION(macro) \
32
    macro(void, InitializeCore, (LLVMPassRegistryRef R)) \
33
    macro(void, Shutdown, ()) \
34
    macro(char *, CreateMessage, (const char *Message)) \
35
    macro(void, DisposeMessage, (char *Message)) \
36
    macro(LLVMContextRef, ContextCreate, (void)) \
37
    macro(LLVMContextRef, GetGlobalContext, (void)) \
38
    macro(void, ContextDispose, (LLVMContextRef C)) \
39
    macro(unsigned, GetMDKindIDInContext, (LLVMContextRef C, const char* Name, unsigned SLen)) \
40
    macro(unsigned, GetMDKindID, (const char* Name, unsigned SLen)) \
41
    macro(LLVMModuleRef, ModuleCreateWithName, (const char *ModuleID)) \
42
    macro(LLVMModuleRef, ModuleCreateWithNameInContext, (const char *ModuleID, LLVMContextRef C)) \
43
    macro(void, DisposeModule, (LLVMModuleRef M)) \
44
    macro(const char *, GetDataLayout, (LLVMModuleRef M)) \
45
    macro(void, SetDataLayout, (LLVMModuleRef M, const char *Triple)) \
46
    macro(const char *, GetTarget, (LLVMModuleRef M)) \
47
    macro(void, SetTarget, (LLVMModuleRef M, const char *Triple)) \
48
    macro(void, DumpModule, (LLVMModuleRef M)) \
49
    macro(LLVMBool, PrintModuleToFile, (LLVMModuleRef M, const char *Filename, char **ErrorMessage)) \
50
    macro(void, SetModuleInlineAsm, (LLVMModuleRef M, const char *Asm)) \
51
    macro(LLVMContextRef, GetModuleContext, (LLVMModuleRef M)) \
52
    macro(LLVMTypeRef, GetTypeByName, (LLVMModuleRef M, const char *Name)) \
53
    macro(unsigned, GetNamedMetadataNumOperands, (LLVMModuleRef M, const char* name)) \
54
    macro(void, GetNamedMetadataOperands, (LLVMModuleRef M, const char* name, LLVMValueRef *Dest)) \
55
    macro(void, AddNamedMetadataOperand, (LLVMModuleRef M, const char* name, LLVMValueRef Val)) \
56
    macro(LLVMValueRef, AddFunction, (LLVMModuleRef M, const char *Name, LLVMTypeRef FunctionTy)) \
57
    macro(LLVMValueRef, GetNamedFunction, (LLVMModuleRef M, const char *Name)) \
58
    macro(LLVMValueRef, GetFirstFunction, (LLVMModuleRef M)) \
59
    macro(LLVMValueRef, GetLastFunction, (LLVMModuleRef M)) \
60
    macro(LLVMValueRef, GetNextFunction, (LLVMValueRef Fn)) \
61
    macro(LLVMValueRef, GetPreviousFunction, (LLVMValueRef Fn)) \
62
    macro(LLVMTypeKind, GetTypeKind, (LLVMTypeRef Ty)) \
63
    macro(LLVMBool, TypeIsSized, (LLVMTypeRef Ty)) \
64
    macro(LLVMContextRef, GetTypeContext, (LLVMTypeRef Ty)) \
65
    macro(LLVMTypeRef, Int1TypeInContext, (LLVMContextRef C)) \
66
    macro(LLVMTypeRef, Int8TypeInContext, (LLVMContextRef C)) \
67
    macro(LLVMTypeRef, Int16TypeInContext, (LLVMContextRef C)) \
68
    macro(LLVMTypeRef, Int32TypeInContext, (LLVMContextRef C)) \
69
    macro(LLVMTypeRef, Int64TypeInContext, (LLVMContextRef C)) \
70
    macro(LLVMTypeRef, IntTypeInContext, (LLVMContextRef C, unsigned NumBits)) \
71
    macro(LLVMTypeRef, Int1Type, (void)) \
72
    macro(LLVMTypeRef, Int8Type, (void)) \
73
    macro(LLVMTypeRef, Int16Type, (void)) \
74
    macro(LLVMTypeRef, Int32Type, (void)) \
75
    macro(LLVMTypeRef, Int64Type, (void)) \
76
    macro(LLVMTypeRef, IntType, (unsigned NumBits)) \
77
    macro(unsigned, GetIntTypeWidth, (LLVMTypeRef IntegerTy)) \
78
    macro(LLVMTypeRef, HalfTypeInContext, (LLVMContextRef C)) \
79
    macro(LLVMTypeRef, FloatTypeInContext, (LLVMContextRef C)) \
80
    macro(LLVMTypeRef, DoubleTypeInContext, (LLVMContextRef C)) \
81
    macro(LLVMTypeRef, X86FP80TypeInContext, (LLVMContextRef C)) \
82
    macro(LLVMTypeRef, FP128TypeInContext, (LLVMContextRef C)) \
83
    macro(LLVMTypeRef, PPCFP128TypeInContext, (LLVMContextRef C)) \
84
    macro(LLVMTypeRef, HalfType, (void)) \
85
    macro(LLVMTypeRef, FloatType, (void)) \
86
    macro(LLVMTypeRef, DoubleType, (void)) \
87
    macro(LLVMTypeRef, X86FP80Type, (void)) \
88
    macro(LLVMTypeRef, FP128Type, (void)) \
89
    macro(LLVMTypeRef, PPCFP128Type, (void)) \
90
    macro(LLVMTypeRef, FunctionType, (LLVMTypeRef ReturnType, LLVMTypeRef *ParamTypes, unsigned ParamCount, LLVMBool IsVarArg)) \
91
    macro(LLVMBool, IsFunctionVarArg, (LLVMTypeRef FunctionTy)) \
92
    macro(LLVMTypeRef, GetReturnType, (LLVMTypeRef FunctionTy)) \
93
    macro(unsigned, CountParamTypes, (LLVMTypeRef FunctionTy)) \
94
    macro(void, GetParamTypes, (LLVMTypeRef FunctionTy, LLVMTypeRef *Dest)) \
95
    macro(LLVMTypeRef, StructTypeInContext, (LLVMContextRef C, LLVMTypeRef *ElementTypes, unsigned ElementCount, LLVMBool Packed)) \
96
    macro(LLVMTypeRef, StructType, (LLVMTypeRef *ElementTypes, unsigned ElementCount, LLVMBool Packed)) \
97
    macro(LLVMTypeRef, StructCreateNamed, (LLVMContextRef C, const char *Name)) \
98
    macro(const char *, GetStructName, (LLVMTypeRef Ty)) \
99
    macro(void, StructSetBody, (LLVMTypeRef StructTy, LLVMTypeRef *ElementTypes, unsigned ElementCount, LLVMBool Packed)) \
100
    macro(unsigned, CountStructElementTypes, (LLVMTypeRef StructTy)) \
101
    macro(void, GetStructElementTypes, (LLVMTypeRef StructTy, LLVMTypeRef *Dest)) \
102
    macro(LLVMBool, IsPackedStruct, (LLVMTypeRef StructTy)) \
103
    macro(LLVMBool, IsOpaqueStruct, (LLVMTypeRef StructTy)) \
104
    macro(LLVMTypeRef, GetElementType, (LLVMTypeRef Ty)) \
105
    macro(LLVMTypeRef, ArrayType, (LLVMTypeRef ElementType, unsigned ElementCount)) \
106
    macro(unsigned, GetArrayLength, (LLVMTypeRef ArrayTy)) \
107
    macro(LLVMTypeRef, PointerType, (LLVMTypeRef ElementType, unsigned AddressSpace)) \
108
    macro(unsigned, GetPointerAddressSpace, (LLVMTypeRef PointerTy)) \
109
    macro(LLVMTypeRef, VectorType, (LLVMTypeRef ElementType, unsigned ElementCount)) \
110
    macro(unsigned, GetVectorSize, (LLVMTypeRef VectorTy)) \
111
    macro(LLVMTypeRef, VoidTypeInContext, (LLVMContextRef C)) \
112
    macro(LLVMTypeRef, LabelTypeInContext, (LLVMContextRef C)) \
113
    macro(LLVMTypeRef, X86MMXTypeInContext, (LLVMContextRef C)) \
114
    macro(LLVMTypeRef, VoidType, (void)) \
115
    macro(LLVMTypeRef, LabelType, (void)) \
116
    macro(LLVMTypeRef, X86MMXType, (void)) \
117
    macro(LLVMTypeRef, TypeOf, (LLVMValueRef Val)) \
118
    macro(const char *, GetValueName, (LLVMValueRef Val)) \
119
    macro(void, SetValueName, (LLVMValueRef Val, const char *Name)) \
120
    macro(void, DumpValue, (LLVMValueRef Val)) \
121
    macro(void, ReplaceAllUsesWith, (LLVMValueRef OldVal, LLVMValueRef NewVal)) \
122
    macro(LLVMBool, IsConstant, (LLVMValueRef Val)) \
123
    macro(LLVMBool, IsUndef, (LLVMValueRef Val)) \
124
    macro(LLVMValueRef, IsAArgument, (LLVMValueRef Val)) \
125
    macro(LLVMValueRef, IsABasicBlock, (LLVMValueRef Val)) \
126
    macro(LLVMValueRef, IsAInlineAsm, (LLVMValueRef Val)) \
127
    macro(LLVMValueRef, IsAMDNode, (LLVMValueRef Val)) \
128
    macro(LLVMValueRef, IsAMDString, (LLVMValueRef Val)) \
129
    macro(LLVMValueRef, IsAUser, (LLVMValueRef Val)) \
130
    macro(LLVMValueRef, IsAConstant, (LLVMValueRef Val)) \
131
    macro(LLVMValueRef, IsABlockAddress, (LLVMValueRef Val)) \
132
    macro(LLVMValueRef, IsAConstantAggregateZero, (LLVMValueRef Val)) \
133
    macro(LLVMValueRef, IsAConstantArray, (LLVMValueRef Val)) \
134
    macro(LLVMValueRef, IsAConstantExpr, (LLVMValueRef Val)) \
135
    macro(LLVMValueRef, IsAConstantFP, (LLVMValueRef Val)) \
136
    macro(LLVMValueRef, IsAConstantInt, (LLVMValueRef Val)) \
137
    macro(LLVMValueRef, IsAConstantPointerNull, (LLVMValueRef Val)) \
138
    macro(LLVMValueRef, IsAConstantStruct, (LLVMValueRef Val)) \
139
    macro(LLVMValueRef, IsAConstantVector, (LLVMValueRef Val)) \
140
    macro(LLVMValueRef, IsAGlobalValue, (LLVMValueRef Val)) \
141
    macro(LLVMValueRef, IsAFunction, (LLVMValueRef Val)) \
142
    macro(LLVMValueRef, IsAGlobalAlias, (LLVMValueRef Val)) \
143
    macro(LLVMValueRef, IsAGlobalVariable, (LLVMValueRef Val)) \
144
    macro(LLVMValueRef, IsAUndefValue, (LLVMValueRef Val)) \
145
    macro(LLVMValueRef, IsAInstruction, (LLVMValueRef Val)) \
146
    macro(LLVMValueRef, IsABinaryOperator, (LLVMValueRef Val)) \
147
    macro(LLVMValueRef, IsACallInst, (LLVMValueRef Val)) \
148
    macro(LLVMValueRef, IsAIntrinsicInst, (LLVMValueRef Val)) \
149
    macro(LLVMValueRef, IsADbgInfoIntrinsic, (LLVMValueRef Val)) \
150
    macro(LLVMValueRef, IsADbgDeclareInst, (LLVMValueRef Val)) \
151
    macro(LLVMValueRef, IsAMemIntrinsic, (LLVMValueRef Val)) \
152
    macro(LLVMValueRef, IsAMemCpyInst, (LLVMValueRef Val)) \
153
    macro(LLVMValueRef, IsAMemMoveInst, (LLVMValueRef Val)) \
154
    macro(LLVMValueRef, IsAMemSetInst, (LLVMValueRef Val)) \
155
    macro(LLVMValueRef, IsACmpInst, (LLVMValueRef Val)) \
156
    macro(LLVMValueRef, IsAFCmpInst, (LLVMValueRef Val)) \
157
    macro(LLVMValueRef, IsAICmpInst, (LLVMValueRef Val)) \
158
    macro(LLVMValueRef, IsAExtractElementInst, (LLVMValueRef Val)) \
159
    macro(LLVMValueRef, IsAGetElementPtrInst, (LLVMValueRef Val)) \
160
    macro(LLVMValueRef, IsAInsertElementInst, (LLVMValueRef Val)) \
161
    macro(LLVMValueRef, IsAInsertValueInst, (LLVMValueRef Val)) \
162
    macro(LLVMValueRef, IsALandingPadInst, (LLVMValueRef Val)) \
163
    macro(LLVMValueRef, IsAPHINode, (LLVMValueRef Val)) \
164
    macro(LLVMValueRef, IsASelectInst, (LLVMValueRef Val)) \
165
    macro(LLVMValueRef, IsAShuffleVectorInst, (LLVMValueRef Val)) \
166
    macro(LLVMValueRef, IsAStoreInst, (LLVMValueRef Val)) \
167
    macro(LLVMValueRef, IsATerminatorInst, (LLVMValueRef Val)) \
168
    macro(LLVMValueRef, IsABranchInst, (LLVMValueRef Val)) \
169
    macro(LLVMValueRef, IsAIndirectBrInst, (LLVMValueRef Val)) \
170
    macro(LLVMValueRef, IsAInvokeInst, (LLVMValueRef Val)) \
171
    macro(LLVMValueRef, IsAReturnInst, (LLVMValueRef Val)) \
172
    macro(LLVMValueRef, IsASwitchInst, (LLVMValueRef Val)) \
173
    macro(LLVMValueRef, IsAUnreachableInst, (LLVMValueRef Val)) \
174
    macro(LLVMValueRef, IsAResumeInst, (LLVMValueRef Val)) \
175
    macro(LLVMValueRef, IsAUnaryInstruction, (LLVMValueRef Val)) \
176
    macro(LLVMValueRef, IsAAllocaInst, (LLVMValueRef Val)) \
177
    macro(LLVMValueRef, IsACastInst, (LLVMValueRef Val)) \
178
    macro(LLVMValueRef, IsABitCastInst, (LLVMValueRef Val)) \
179
    macro(LLVMValueRef, IsAFPExtInst, (LLVMValueRef Val)) \
180
    macro(LLVMValueRef, IsAFPToSIInst, (LLVMValueRef Val)) \
181
    macro(LLVMValueRef, IsAFPToUIInst, (LLVMValueRef Val)) \
182
    macro(LLVMValueRef, IsAFPTruncInst, (LLVMValueRef Val)) \
183
    macro(LLVMValueRef, IsAIntToPtrInst, (LLVMValueRef Val)) \
184
    macro(LLVMValueRef, IsAPtrToIntInst, (LLVMValueRef Val)) \
185
    macro(LLVMValueRef, IsASExtInst, (LLVMValueRef Val)) \
186
    macro(LLVMValueRef, IsASIToFPInst, (LLVMValueRef Val)) \
187
    macro(LLVMValueRef, IsATruncInst, (LLVMValueRef Val)) \
188
    macro(LLVMValueRef, IsAUIToFPInst, (LLVMValueRef Val)) \
189
    macro(LLVMValueRef, IsAZExtInst, (LLVMValueRef Val)) \
190
    macro(LLVMValueRef, IsAExtractValueInst, (LLVMValueRef Val)) \
191
    macro(LLVMValueRef, IsALoadInst, (LLVMValueRef Val)) \
192
    macro(LLVMValueRef, IsAVAArgInst, (LLVMValueRef Val)) \
193
    macro(LLVMUseRef, GetFirstUse, (LLVMValueRef Val)) \
194
    macro(LLVMUseRef, GetNextUse, (LLVMUseRef U)) \
195
    macro(LLVMValueRef, GetUser, (LLVMUseRef U)) \
196
    macro(LLVMValueRef, GetUsedValue, (LLVMUseRef U)) \
197
    macro(LLVMValueRef, GetOperand, (LLVMValueRef Val, unsigned Index)) \
198
    macro(void, SetOperand, (LLVMValueRef User, unsigned Index, LLVMValueRef Val)) \
199
    macro(int, GetNumOperands, (LLVMValueRef Val)) \
200
    macro(LLVMValueRef, ConstNull, (LLVMTypeRef Ty)) \
201
    macro(LLVMValueRef, ConstAllOnes, (LLVMTypeRef Ty)) \
202
    macro(LLVMValueRef, GetUndef, (LLVMTypeRef Ty)) \
203
    macro(LLVMBool, IsNull, (LLVMValueRef Val)) \
204
    macro(LLVMValueRef, ConstPointerNull, (LLVMTypeRef Ty)) \
205
    macro(LLVMValueRef, ConstInt, (LLVMTypeRef IntTy, unsigned long long N, LLVMBool SignExtend)) \
206
    macro(LLVMValueRef, ConstIntOfArbitraryPrecision, (LLVMTypeRef IntTy, unsigned NumWords, const uint64_t Words[])) \
207
    macro(LLVMValueRef, ConstIntOfString, (LLVMTypeRef IntTy, const char *Text, uint8_t Radix)) \
208
    macro(LLVMValueRef, ConstIntOfStringAndSize, (LLVMTypeRef IntTy, const char *Text, unsigned SLen, uint8_t Radix)) \
209
    macro(LLVMValueRef, ConstReal, (LLVMTypeRef RealTy, double N)) \
210
    macro(LLVMValueRef, ConstRealOfString, (LLVMTypeRef RealTy, const char *Text)) \
211
    macro(LLVMValueRef, ConstRealOfStringAndSize, (LLVMTypeRef RealTy, const char *Text, unsigned SLen)) \
212
    macro(unsigned long long, ConstIntGetZExtValue, (LLVMValueRef ConstantVal)) \
213
    macro(long long, ConstIntGetSExtValue, (LLVMValueRef ConstantVal)) \
214
    macro(LLVMValueRef, ConstStringInContext, (LLVMContextRef C, const char *Str, unsigned Length, LLVMBool DontNullTerminate)) \
215
    macro(LLVMValueRef, ConstString, (const char *Str, unsigned Length, LLVMBool DontNullTerminate)) \
216
    macro(LLVMValueRef, ConstStructInContext, (LLVMContextRef C, LLVMValueRef *ConstantVals, unsigned Count, LLVMBool Packed)) \
217
    macro(LLVMValueRef, ConstStruct, (LLVMValueRef *ConstantVals, unsigned Count, LLVMBool Packed)) \
218
    macro(LLVMValueRef, ConstArray, (LLVMTypeRef ElementTy, LLVMValueRef *ConstantVals, unsigned Length)) \
219
    macro(LLVMValueRef, ConstNamedStruct, (LLVMTypeRef StructTy, LLVMValueRef *ConstantVals, unsigned Count)) \
220
    macro(LLVMValueRef, ConstVector, (LLVMValueRef *ScalarConstantVals, unsigned Size)) \
221
    macro(LLVMOpcode, GetConstOpcode, (LLVMValueRef ConstantVal)) \
222
    macro(LLVMValueRef, AlignOf, (LLVMTypeRef Ty)) \
223
    macro(LLVMValueRef, SizeOf, (LLVMTypeRef Ty)) \
224
    macro(LLVMValueRef, ConstNeg, (LLVMValueRef ConstantVal)) \
225
    macro(LLVMValueRef, ConstNSWNeg, (LLVMValueRef ConstantVal)) \
226
    macro(LLVMValueRef, ConstNUWNeg, (LLVMValueRef ConstantVal)) \
227
    macro(LLVMValueRef, ConstFNeg, (LLVMValueRef ConstantVal)) \
228
    macro(LLVMValueRef, ConstNot, (LLVMValueRef ConstantVal)) \
229
    macro(LLVMValueRef, ConstAdd, (LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
230
    macro(LLVMValueRef, ConstNSWAdd, (LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
231
    macro(LLVMValueRef, ConstNUWAdd, (LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
232
    macro(LLVMValueRef, ConstFAdd, (LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
233
    macro(LLVMValueRef, ConstSub, (LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
234
    macro(LLVMValueRef, ConstNSWSub, (LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
235
    macro(LLVMValueRef, ConstNUWSub, (LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
236
    macro(LLVMValueRef, ConstFSub, (LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
237
    macro(LLVMValueRef, ConstMul, (LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
238
    macro(LLVMValueRef, ConstNSWMul, (LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
239
    macro(LLVMValueRef, ConstNUWMul, (LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
240
    macro(LLVMValueRef, ConstFMul, (LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
241
    macro(LLVMValueRef, ConstUDiv, (LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
242
    macro(LLVMValueRef, ConstSDiv, (LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
243
    macro(LLVMValueRef, ConstExactSDiv, (LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
244
    macro(LLVMValueRef, ConstFDiv, (LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
245
    macro(LLVMValueRef, ConstURem, (LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
246
    macro(LLVMValueRef, ConstSRem, (LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
247
    macro(LLVMValueRef, ConstFRem, (LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
248
    macro(LLVMValueRef, ConstAnd, (LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
249
    macro(LLVMValueRef, ConstOr, (LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
250
    macro(LLVMValueRef, ConstXor, (LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
251
    macro(LLVMValueRef, ConstICmp, (LLVMIntPredicate Predicate, LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
252
    macro(LLVMValueRef, ConstFCmp, (LLVMRealPredicate Predicate, LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
253
    macro(LLVMValueRef, ConstShl, (LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
254
    macro(LLVMValueRef, ConstLShr, (LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
255
    macro(LLVMValueRef, ConstAShr, (LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
256
    macro(LLVMValueRef, ConstGEP, (LLVMValueRef ConstantVal, LLVMValueRef *ConstantIndices, unsigned NumIndices)) \
257
    macro(LLVMValueRef, ConstInBoundsGEP, (LLVMValueRef ConstantVal, LLVMValueRef *ConstantIndices, unsigned NumIndices)) \
258
    macro(LLVMValueRef, ConstTrunc, (LLVMValueRef ConstantVal, LLVMTypeRef ToType)) \
259
    macro(LLVMValueRef, ConstSExt, (LLVMValueRef ConstantVal, LLVMTypeRef ToType)) \
260
    macro(LLVMValueRef, ConstZExt, (LLVMValueRef ConstantVal, LLVMTypeRef ToType)) \
261
    macro(LLVMValueRef, ConstFPTrunc, (LLVMValueRef ConstantVal, LLVMTypeRef ToType)) \
262
    macro(LLVMValueRef, ConstFPExt, (LLVMValueRef ConstantVal, LLVMTypeRef ToType)) \
263
    macro(LLVMValueRef, ConstUIToFP, (LLVMValueRef ConstantVal, LLVMTypeRef ToType)) \
264
    macro(LLVMValueRef, ConstSIToFP, (LLVMValueRef ConstantVal, LLVMTypeRef ToType)) \
265
    macro(LLVMValueRef, ConstFPToUI, (LLVMValueRef ConstantVal, LLVMTypeRef ToType)) \
266
    macro(LLVMValueRef, ConstFPToSI, (LLVMValueRef ConstantVal, LLVMTypeRef ToType)) \
267
    macro(LLVMValueRef, ConstPtrToInt, (LLVMValueRef ConstantVal, LLVMTypeRef ToType)) \
268
    macro(LLVMValueRef, ConstIntToPtr, (LLVMValueRef ConstantVal, LLVMTypeRef ToType)) \
269
    macro(LLVMValueRef, ConstBitCast, (LLVMValueRef ConstantVal, LLVMTypeRef ToType)) \
270
    macro(LLVMValueRef, ConstZExtOrBitCast, (LLVMValueRef ConstantVal, LLVMTypeRef ToType)) \
271
    macro(LLVMValueRef, ConstSExtOrBitCast, (LLVMValueRef ConstantVal, LLVMTypeRef ToType)) \
272
    macro(LLVMValueRef, ConstTruncOrBitCast, (LLVMValueRef ConstantVal, LLVMTypeRef ToType)) \
273
    macro(LLVMValueRef, ConstPointerCast, (LLVMValueRef ConstantVal, LLVMTypeRef ToType)) \
274
    macro(LLVMValueRef, ConstIntCast, (LLVMValueRef ConstantVal, LLVMTypeRef ToType, LLVMBool isSigned)) \
275
    macro(LLVMValueRef, ConstFPCast, (LLVMValueRef ConstantVal, LLVMTypeRef ToType)) \
276
    macro(LLVMValueRef, ConstSelect, (LLVMValueRef ConstantCondition, LLVMValueRef ConstantIfTrue, LLVMValueRef ConstantIfFalse)) \
277
    macro(LLVMValueRef, ConstExtractElement, (LLVMValueRef VectorConstant, LLVMValueRef IndexConstant)) \
278
    macro(LLVMValueRef, ConstInsertElement, (LLVMValueRef VectorConstant, LLVMValueRef ElementValueConstant, LLVMValueRef IndexConstant)) \
279
    macro(LLVMValueRef, ConstShuffleVector, (LLVMValueRef VectorAConstant, LLVMValueRef VectorBConstant, LLVMValueRef MaskConstant)) \
280
    macro(LLVMValueRef, ConstExtractValue, (LLVMValueRef AggConstant, unsigned *IdxList, unsigned NumIdx)) \
281
    macro(LLVMValueRef, ConstInsertValue, (LLVMValueRef AggConstant, LLVMValueRef ElementValueConstant, unsigned *IdxList, unsigned NumIdx)) \
282
    macro(LLVMValueRef, ConstInlineAsm, (LLVMTypeRef Ty, const char *AsmString, const char *Constraints, LLVMBool HasSideEffects, LLVMBool IsAlignStack)) \
283
    macro(LLVMValueRef, BlockAddress, (LLVMValueRef F, LLVMBasicBlockRef BB)) \
284
    macro(LLVMModuleRef, GetGlobalParent, (LLVMValueRef Global)) \
285
    macro(LLVMBool, IsDeclaration, (LLVMValueRef Global)) \
286
    macro(LLVMLinkage, GetLinkage, (LLVMValueRef Global)) \
287
    macro(void, SetLinkage, (LLVMValueRef Global, LLVMLinkage Linkage)) \
288
    macro(const char *, GetSection, (LLVMValueRef Global)) \
289
    macro(void, SetSection, (LLVMValueRef Global, const char *Section)) \
290
    macro(LLVMVisibility, GetVisibility, (LLVMValueRef Global)) \
291
    macro(void, SetVisibility, (LLVMValueRef Global, LLVMVisibility Viz)) \
292
    macro(unsigned, GetAlignment, (LLVMValueRef Global)) \
293
    macro(void, SetAlignment, (LLVMValueRef Global, unsigned Bytes)) \
294
    macro(LLVMValueRef, AddGlobal, (LLVMModuleRef M, LLVMTypeRef Ty, const char *Name)) \
295
    macro(LLVMValueRef, AddGlobalInAddressSpace, (LLVMModuleRef M, LLVMTypeRef Ty, const char *Name, unsigned AddressSpace)) \
296
    macro(LLVMValueRef, GetNamedGlobal, (LLVMModuleRef M, const char *Name)) \
297
    macro(LLVMValueRef, GetFirstGlobal, (LLVMModuleRef M)) \
298
    macro(LLVMValueRef, GetLastGlobal, (LLVMModuleRef M)) \
299
    macro(LLVMValueRef, GetNextGlobal, (LLVMValueRef GlobalVar)) \
300
    macro(LLVMValueRef, GetPreviousGlobal, (LLVMValueRef GlobalVar)) \
301
    macro(void, DeleteGlobal, (LLVMValueRef GlobalVar)) \
302
    macro(LLVMValueRef, GetInitializer, (LLVMValueRef GlobalVar)) \
303
    macro(void, SetInitializer, (LLVMValueRef GlobalVar, LLVMValueRef ConstantVal)) \
304
    macro(LLVMBool, IsThreadLocal, (LLVMValueRef GlobalVar)) \
305
    macro(void, SetThreadLocal, (LLVMValueRef GlobalVar, LLVMBool IsThreadLocal)) \
306
    macro(LLVMBool, IsGlobalConstant, (LLVMValueRef GlobalVar)) \
307
    macro(void, SetGlobalConstant, (LLVMValueRef GlobalVar, LLVMBool IsConstant)) \
308
    macro(LLVMThreadLocalMode, GetThreadLocalMode, (LLVMValueRef GlobalVar)) \
309
    macro(void, SetThreadLocalMode, (LLVMValueRef GlobalVar, LLVMThreadLocalMode Mode)) \
310
    macro(LLVMBool, IsExternallyInitialized, (LLVMValueRef GlobalVar)) \
311
    macro(void, SetExternallyInitialized, (LLVMValueRef GlobalVar, LLVMBool IsExtInit)) \
312
    macro(LLVMValueRef, AddAlias, (LLVMModuleRef M, LLVMTypeRef Ty, LLVMValueRef Aliasee, const char *Name)) \
313
    macro(void, DeleteFunction, (LLVMValueRef Fn)) \
314
    macro(unsigned, GetIntrinsicID, (LLVMValueRef Fn)) \
315
    macro(unsigned, GetFunctionCallConv, (LLVMValueRef Fn)) \
316
    macro(void, SetFunctionCallConv, (LLVMValueRef Fn, unsigned CC)) \
317
    macro(const char *, GetGC, (LLVMValueRef Fn)) \
318
    macro(void, SetGC, (LLVMValueRef Fn, const char *Name)) \
319
    macro(void, AddFunctionAttr, (LLVMValueRef Fn, LLVMAttribute PA)) \
320
    macro(void, AddTargetDependentFunctionAttr, (LLVMValueRef Fn, const char *A, const char *V)) \
321
    macro(LLVMAttribute, GetFunctionAttr, (LLVMValueRef Fn)) \
322
    macro(void, RemoveFunctionAttr, (LLVMValueRef Fn, LLVMAttribute PA)) \
323
    macro(unsigned, CountParams, (LLVMValueRef Fn)) \
324
    macro(void, GetParams, (LLVMValueRef Fn, LLVMValueRef *Params)) \
325
    macro(LLVMValueRef, GetParam, (LLVMValueRef Fn, unsigned Index)) \
326
    macro(LLVMValueRef, GetParamParent, (LLVMValueRef Inst)) \
327
    macro(LLVMValueRef, GetFirstParam, (LLVMValueRef Fn)) \
328
    macro(LLVMValueRef, GetLastParam, (LLVMValueRef Fn)) \
329
    macro(LLVMValueRef, GetNextParam, (LLVMValueRef Arg)) \
330
    macro(LLVMValueRef, GetPreviousParam, (LLVMValueRef Arg)) \
331
    macro(void, AddAttribute, (LLVMValueRef Arg, LLVMAttribute PA)) \
332
    macro(void, RemoveAttribute, (LLVMValueRef Arg, LLVMAttribute PA)) \
333
    macro(LLVMAttribute, GetAttribute, (LLVMValueRef Arg)) \
334
    macro(void, SetParamAlignment, (LLVMValueRef Arg, unsigned align)) \
335
    macro(LLVMValueRef, MDStringInContext, (LLVMContextRef C, const char *Str, unsigned SLen)) \
336
    macro(LLVMValueRef, MDString, (const char *Str, unsigned SLen)) \
337
    macro(LLVMValueRef, MDNodeInContext, (LLVMContextRef C, LLVMValueRef *Vals, unsigned Count)) \
338
    macro(LLVMValueRef, MDNode, (LLVMValueRef *Vals, unsigned Count)) \
339
    macro(const char *, GetMDString, (LLVMValueRef V, unsigned* Len)) \
340
    macro(unsigned, GetMDNodeNumOperands, (LLVMValueRef V)) \
341
    macro(void, GetMDNodeOperands, (LLVMValueRef V, LLVMValueRef *Dest)) \
342
    macro(LLVMValueRef, BasicBlockAsValue, (LLVMBasicBlockRef BB)) \
343
    macro(LLVMBool, ValueIsBasicBlock, (LLVMValueRef Val)) \
344
    macro(LLVMBasicBlockRef, ValueAsBasicBlock, (LLVMValueRef Val)) \
345
    macro(LLVMValueRef, GetBasicBlockParent, (LLVMBasicBlockRef BB)) \
346
    macro(LLVMValueRef, GetBasicBlockTerminator, (LLVMBasicBlockRef BB)) \
347
    macro(unsigned, CountBasicBlocks, (LLVMValueRef Fn)) \
348
    macro(void, GetBasicBlocks, (LLVMValueRef Fn, LLVMBasicBlockRef *BasicBlocks)) \
349
    macro(LLVMBasicBlockRef, GetFirstBasicBlock, (LLVMValueRef Fn)) \
350
    macro(LLVMBasicBlockRef, GetLastBasicBlock, (LLVMValueRef Fn)) \
351
    macro(LLVMBasicBlockRef, GetNextBasicBlock, (LLVMBasicBlockRef BB)) \
352
    macro(LLVMBasicBlockRef, GetPreviousBasicBlock, (LLVMBasicBlockRef BB)) \
353
    macro(LLVMBasicBlockRef, GetEntryBasicBlock, (LLVMValueRef Fn)) \
354
    macro(LLVMBasicBlockRef, AppendBasicBlockInContext, (LLVMContextRef C, LLVMValueRef Fn, const char *Name)) \
355
    macro(LLVMBasicBlockRef, AppendBasicBlock, (LLVMValueRef Fn, const char *Name)) \
356
    macro(LLVMBasicBlockRef, InsertBasicBlockInContext, (LLVMContextRef C, LLVMBasicBlockRef BB, const char *Name)) \
357
    macro(LLVMBasicBlockRef, InsertBasicBlock, (LLVMBasicBlockRef InsertBeforeBB, const char *Name)) \
358
    macro(void, DeleteBasicBlock, (LLVMBasicBlockRef BB)) \
359
    macro(void, RemoveBasicBlockFromParent, (LLVMBasicBlockRef BB)) \
360
    macro(void, MoveBasicBlockBefore, (LLVMBasicBlockRef BB, LLVMBasicBlockRef MovePos)) \
361
    macro(void, MoveBasicBlockAfter, (LLVMBasicBlockRef BB, LLVMBasicBlockRef MovePos)) \
362
    macro(LLVMValueRef, GetFirstInstruction, (LLVMBasicBlockRef BB)) \
363
    macro(LLVMValueRef, GetLastInstruction, (LLVMBasicBlockRef BB)) \
364
    macro(int, HasMetadata, (LLVMValueRef Val)) \
365
    macro(LLVMValueRef, GetMetadata, (LLVMValueRef Val, unsigned KindID)) \
366
    macro(void, SetMetadata, (LLVMValueRef Val, unsigned KindID, LLVMValueRef Node)) \
367
    macro(LLVMBasicBlockRef, GetInstructionParent, (LLVMValueRef Inst)) \
368
    macro(LLVMValueRef, GetNextInstruction, (LLVMValueRef Inst)) \
369
    macro(LLVMValueRef, GetPreviousInstruction, (LLVMValueRef Inst)) \
370
    macro(void, InstructionEraseFromParent, (LLVMValueRef Inst)) \
371
    macro(LLVMOpcode, GetInstructionOpcode, (LLVMValueRef Inst)) \
372
    macro(LLVMIntPredicate, GetICmpPredicate, (LLVMValueRef Inst)) \
373
    macro(void, SetInstructionCallConv, (LLVMValueRef Instr, unsigned CC)) \
374
    macro(unsigned, GetInstructionCallConv, (LLVMValueRef Instr)) \
375
    macro(void, AddInstrAttribute, (LLVMValueRef Instr, unsigned index, LLVMAttribute)) \
376
    macro(void, RemoveInstrAttribute, (LLVMValueRef Instr, unsigned index, LLVMAttribute)) \
377
    macro(void, SetInstrParamAlignment, (LLVMValueRef Instr, unsigned index, unsigned align)) \
378
    macro(LLVMBool, IsTailCall, (LLVMValueRef CallInst)) \
379
    macro(void, SetTailCall, (LLVMValueRef CallInst, LLVMBool IsTailCall)) \
380
    macro(LLVMBasicBlockRef, GetSwitchDefaultDest, (LLVMValueRef SwitchInstr)) \
381
    macro(void, AddIncoming, (LLVMValueRef PhiNode, LLVMValueRef *IncomingValues, LLVMBasicBlockRef *IncomingBlocks, unsigned Count)) \
382
    macro(unsigned, CountIncoming, (LLVMValueRef PhiNode)) \
383
    macro(LLVMValueRef, GetIncomingValue, (LLVMValueRef PhiNode, unsigned Index)) \
384
    macro(LLVMBasicBlockRef, GetIncomingBlock, (LLVMValueRef PhiNode, unsigned Index)) \
385
    macro(LLVMBuilderRef, CreateBuilderInContext, (LLVMContextRef C)) \
386
    macro(LLVMBuilderRef, CreateBuilder, (void)) \
387
    macro(void, PositionBuilder, (LLVMBuilderRef Builder, LLVMBasicBlockRef Block, LLVMValueRef Instr)) \
388
    macro(void, PositionBuilderBefore, (LLVMBuilderRef Builder, LLVMValueRef Instr)) \
389
    macro(void, PositionBuilderAtEnd, (LLVMBuilderRef Builder, LLVMBasicBlockRef Block)) \
390
    macro(LLVMBasicBlockRef, GetInsertBlock, (LLVMBuilderRef Builder)) \
391
    macro(void, ClearInsertionPosition, (LLVMBuilderRef Builder)) \
392
    macro(void, InsertIntoBuilder, (LLVMBuilderRef Builder, LLVMValueRef Instr)) \
393
    macro(void, InsertIntoBuilderWithName, (LLVMBuilderRef Builder, LLVMValueRef Instr, const char *Name)) \
394
    macro(void, DisposeBuilder, (LLVMBuilderRef Builder)) \
395
    macro(void, SetCurrentDebugLocation, (LLVMBuilderRef Builder, LLVMValueRef L)) \
396
    macro(LLVMValueRef, GetCurrentDebugLocation, (LLVMBuilderRef Builder)) \
397
    macro(void, SetInstDebugLocation, (LLVMBuilderRef Builder, LLVMValueRef Inst)) \
398
    macro(LLVMValueRef, BuildRetVoid, (LLVMBuilderRef)) \
399
    macro(LLVMValueRef, BuildRet, (LLVMBuilderRef, LLVMValueRef V)) \
400
    macro(LLVMValueRef, BuildAggregateRet, (LLVMBuilderRef, LLVMValueRef *RetVals, unsigned N)) \
401
    macro(LLVMValueRef, BuildBr, (LLVMBuilderRef, LLVMBasicBlockRef Dest)) \
402
    macro(LLVMValueRef, BuildCondBr, (LLVMBuilderRef, LLVMValueRef If, LLVMBasicBlockRef Then, LLVMBasicBlockRef Else)) \
403
    macro(LLVMValueRef, BuildSwitch, (LLVMBuilderRef, LLVMValueRef V, LLVMBasicBlockRef Else, unsigned NumCases)) \
404
    macro(LLVMValueRef, BuildIndirectBr, (LLVMBuilderRef B, LLVMValueRef Addr, unsigned NumDests)) \
405
    macro(LLVMValueRef, BuildInvoke, (LLVMBuilderRef, LLVMValueRef Fn, LLVMValueRef *Args, unsigned NumArgs, LLVMBasicBlockRef Then, LLVMBasicBlockRef Catch, const char *Name)) \
406
    macro(LLVMValueRef, BuildLandingPad, (LLVMBuilderRef B, LLVMTypeRef Ty, LLVMValueRef PersFn, unsigned NumClauses, const char *Name)) \
407
    macro(LLVMValueRef, BuildResume, (LLVMBuilderRef B, LLVMValueRef Exn)) \
408
    macro(LLVMValueRef, BuildUnreachable, (LLVMBuilderRef)) \
409
    macro(void, AddCase, (LLVMValueRef Switch, LLVMValueRef OnVal, LLVMBasicBlockRef Dest)) \
410
    macro(void, AddDestination, (LLVMValueRef IndirectBr, LLVMBasicBlockRef Dest)) \
411
    macro(void, AddClause, (LLVMValueRef LandingPad, LLVMValueRef ClauseVal)) \
412
    macro(void, SetCleanup, (LLVMValueRef LandingPad, LLVMBool Val)) \
413
    macro(LLVMValueRef, BuildAdd, (LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
414
    macro(LLVMValueRef, BuildNSWAdd, (LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
415
    macro(LLVMValueRef, BuildNUWAdd, (LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
416
    macro(LLVMValueRef, BuildFAdd, (LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
417
    macro(LLVMValueRef, BuildSub, (LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
418
    macro(LLVMValueRef, BuildNSWSub, (LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
419
    macro(LLVMValueRef, BuildNUWSub, (LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
420
    macro(LLVMValueRef, BuildFSub, (LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
421
    macro(LLVMValueRef, BuildMul, (LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
422
    macro(LLVMValueRef, BuildNSWMul, (LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
423
    macro(LLVMValueRef, BuildNUWMul, (LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
424
    macro(LLVMValueRef, BuildFMul, (LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
425
    macro(LLVMValueRef, BuildUDiv, (LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
426
    macro(LLVMValueRef, BuildSDiv, (LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
427
    macro(LLVMValueRef, BuildExactSDiv, (LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
428
    macro(LLVMValueRef, BuildFDiv, (LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
429
    macro(LLVMValueRef, BuildURem, (LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
430
    macro(LLVMValueRef, BuildSRem, (LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
431
    macro(LLVMValueRef, BuildFRem, (LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
432
    macro(LLVMValueRef, BuildShl, (LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
433
    macro(LLVMValueRef, BuildLShr, (LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
434
    macro(LLVMValueRef, BuildAShr, (LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
435
    macro(LLVMValueRef, BuildAnd, (LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
436
    macro(LLVMValueRef, BuildOr, (LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
437
    macro(LLVMValueRef, BuildXor, (LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
438
    macro(LLVMValueRef, BuildBinOp, (LLVMBuilderRef B, LLVMOpcode Op, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
439
    macro(LLVMValueRef, BuildNeg, (LLVMBuilderRef, LLVMValueRef V, const char *Name)) \
440
    macro(LLVMValueRef, BuildNSWNeg, (LLVMBuilderRef B, LLVMValueRef V, const char *Name)) \
441
    macro(LLVMValueRef, BuildNUWNeg, (LLVMBuilderRef B, LLVMValueRef V, const char *Name)) \
442
    macro(LLVMValueRef, BuildFNeg, (LLVMBuilderRef, LLVMValueRef V, const char *Name)) \
443
    macro(LLVMValueRef, BuildNot, (LLVMBuilderRef, LLVMValueRef V, const char *Name)) \
444
    macro(LLVMValueRef, BuildMalloc, (LLVMBuilderRef, LLVMTypeRef Ty, const char *Name)) \
445
    macro(LLVMValueRef, BuildArrayMalloc, (LLVMBuilderRef, LLVMTypeRef Ty, LLVMValueRef Val, const char *Name)) \
446
    macro(LLVMValueRef, BuildAlloca, (LLVMBuilderRef, LLVMTypeRef Ty, const char *Name)) \
447
    macro(LLVMValueRef, BuildArrayAlloca, (LLVMBuilderRef, LLVMTypeRef Ty, LLVMValueRef Val, const char *Name)) \
448
    macro(LLVMValueRef, BuildFree, (LLVMBuilderRef, LLVMValueRef PointerVal)) \
449
    macro(LLVMValueRef, BuildLoad, (LLVMBuilderRef, LLVMValueRef PointerVal, const char *Name)) \
450
    macro(LLVMValueRef, BuildStore, (LLVMBuilderRef, LLVMValueRef Val, LLVMValueRef Ptr)) \
451
    macro(LLVMValueRef, BuildGEP, (LLVMBuilderRef B, LLVMValueRef Pointer, LLVMValueRef *Indices, unsigned NumIndices, const char *Name)) \
452
    macro(LLVMValueRef, BuildInBoundsGEP, (LLVMBuilderRef B, LLVMValueRef Pointer, LLVMValueRef *Indices, unsigned NumIndices, const char *Name)) \
453
    macro(LLVMValueRef, BuildStructGEP, (LLVMBuilderRef B, LLVMValueRef Pointer, unsigned Idx, const char *Name)) \
454
    macro(LLVMValueRef, BuildGlobalString, (LLVMBuilderRef B, const char *Str, const char *Name)) \
455
    macro(LLVMValueRef, BuildGlobalStringPtr, (LLVMBuilderRef B, const char *Str, const char *Name)) \
456
    macro(LLVMBool, GetVolatile, (LLVMValueRef MemoryAccessInst)) \
457
    macro(void, SetVolatile, (LLVMValueRef MemoryAccessInst, LLVMBool IsVolatile)) \
458
    macro(LLVMValueRef, BuildTrunc, (LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const char *Name)) \
459
    macro(LLVMValueRef, BuildZExt, (LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const char *Name)) \
460
    macro(LLVMValueRef, BuildSExt, (LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const char *Name)) \
461
    macro(LLVMValueRef, BuildFPToUI, (LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const char *Name)) \
462
    macro(LLVMValueRef, BuildFPToSI, (LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const char *Name)) \
463
    macro(LLVMValueRef, BuildUIToFP, (LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const char *Name)) \
464
    macro(LLVMValueRef, BuildSIToFP, (LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const char *Name)) \
465
    macro(LLVMValueRef, BuildFPTrunc, (LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const char *Name)) \
466
    macro(LLVMValueRef, BuildFPExt, (LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const char *Name)) \
467
    macro(LLVMValueRef, BuildPtrToInt, (LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const char *Name)) \
468
    macro(LLVMValueRef, BuildIntToPtr, (LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const char *Name)) \
469
    macro(LLVMValueRef, BuildBitCast, (LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const char *Name)) \
470
    macro(LLVMValueRef, BuildZExtOrBitCast, (LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const char *Name)) \
471
    macro(LLVMValueRef, BuildSExtOrBitCast, (LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const char *Name)) \
472
    macro(LLVMValueRef, BuildTruncOrBitCast, (LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const char *Name)) \
473
    macro(LLVMValueRef, BuildCast, (LLVMBuilderRef B, LLVMOpcode Op, LLVMValueRef Val, LLVMTypeRef DestTy, const char *Name)) \
474
    macro(LLVMValueRef, BuildPointerCast, (LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const char *Name)) \
475
    macro(LLVMValueRef, BuildIntCast, (LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const char *Name)) \
476
    macro(LLVMValueRef, BuildFPCast, (LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const char *Name)) \
477
    macro(LLVMValueRef, BuildICmp, (LLVMBuilderRef, LLVMIntPredicate Op, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
478
    macro(LLVMValueRef, BuildFCmp, (LLVMBuilderRef, LLVMRealPredicate Op, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
479
    macro(LLVMValueRef, BuildPhi, (LLVMBuilderRef, LLVMTypeRef Ty, const char *Name)) \
480
    macro(LLVMValueRef, BuildCall, (LLVMBuilderRef, LLVMValueRef Fn, LLVMValueRef *Args, unsigned NumArgs, const char *Name)) \
481
    macro(LLVMValueRef, BuildSelect, (LLVMBuilderRef, LLVMValueRef If, LLVMValueRef Then, LLVMValueRef Else, const char *Name)) \
482
    macro(LLVMValueRef, BuildVAArg, (LLVMBuilderRef, LLVMValueRef List, LLVMTypeRef Ty, const char *Name)) \
483
    macro(LLVMValueRef, BuildExtractElement, (LLVMBuilderRef, LLVMValueRef VecVal, LLVMValueRef Index, const char *Name)) \
484
    macro(LLVMValueRef, BuildInsertElement, (LLVMBuilderRef, LLVMValueRef VecVal, LLVMValueRef EltVal, LLVMValueRef Index, const char *Name)) \
485
    macro(LLVMValueRef, BuildShuffleVector, (LLVMBuilderRef, LLVMValueRef V1, LLVMValueRef V2, LLVMValueRef Mask, const char *Name)) \
486
    macro(LLVMValueRef, BuildExtractValue, (LLVMBuilderRef, LLVMValueRef AggVal, unsigned Index, const char *Name)) \
487
    macro(LLVMValueRef, BuildInsertValue, (LLVMBuilderRef, LLVMValueRef AggVal, LLVMValueRef EltVal, unsigned Index, const char *Name)) \
488
    macro(LLVMValueRef, BuildIsNull, (LLVMBuilderRef, LLVMValueRef Val, const char *Name)) \
489
    macro(LLVMValueRef, BuildIsNotNull, (LLVMBuilderRef, LLVMValueRef Val, const char *Name)) \
490
    macro(LLVMValueRef, BuildPtrDiff, (LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
491
    macro(LLVMValueRef, BuildAtomicRMW, (LLVMBuilderRef B, LLVMAtomicRMWBinOp op, LLVMValueRef PTR, LLVMValueRef Val, LLVMAtomicOrdering ordering, LLVMBool singleThread)) \
492
    macro(LLVMModuleProviderRef, CreateModuleProviderForExistingModule, (LLVMModuleRef M)) \
493
    macro(void, DisposeModuleProvider, (LLVMModuleProviderRef M)) \
494
    macro(LLVMBool, CreateMemoryBufferWithContentsOfFile, (const char *Path, LLVMMemoryBufferRef *OutMemBuf, char **OutMessage)) \
495
    macro(LLVMBool, CreateMemoryBufferWithSTDIN, (LLVMMemoryBufferRef *OutMemBuf, char **OutMessage)) \
496
    macro(LLVMMemoryBufferRef, CreateMemoryBufferWithMemoryRange, (const char *InputData, size_t InputDataLength, const char *BufferName, LLVMBool RequiresNullTerminator)) \
497
    macro(LLVMMemoryBufferRef, CreateMemoryBufferWithMemoryRangeCopy, (const char *InputData, size_t InputDataLength, const char *BufferName)) \
498
    macro(const char *, GetBufferStart, (LLVMMemoryBufferRef MemBuf)) \
499
    macro(size_t, GetBufferSize, (LLVMMemoryBufferRef MemBuf)) \
500
    macro(void, DisposeMemoryBuffer, (LLVMMemoryBufferRef MemBuf)) \
501
    macro(LLVMPassRegistryRef, GetGlobalPassRegistry, (void)) \
502
    macro(LLVMPassManagerRef, CreatePassManager, (void)) \
503
    macro(LLVMPassManagerRef, CreateFunctionPassManagerForModule, (LLVMModuleRef M)) \
504
    macro(LLVMPassManagerRef, CreateFunctionPassManager, (LLVMModuleProviderRef MP)) \
505
    macro(LLVMBool, RunPassManager, (LLVMPassManagerRef PM, LLVMModuleRef M)) \
506
    macro(LLVMBool, InitializeFunctionPassManager, (LLVMPassManagerRef FPM)) \
507
    macro(LLVMBool, RunFunctionPassManager, (LLVMPassManagerRef FPM, LLVMValueRef F)) \
508
    macro(LLVMBool, FinalizeFunctionPassManager, (LLVMPassManagerRef FPM)) \
509
    macro(void, DisposePassManager, (LLVMPassManagerRef PM)) \
510
    macro(LLVMBool, StartMultithreaded, ()) \
511
    macro(void, StopMultithreaded, ()) \
512
    macro(LLVMBool, IsMultithreaded, ()) \
513
    macro(LLVMTargetDataRef, CreateTargetData, (const char *StringRep)) \
514
    macro(void, AddTargetData, (LLVMTargetDataRef, LLVMPassManagerRef)) \
515
    macro(void, AddTargetLibraryInfo, (LLVMTargetLibraryInfoRef, LLVMPassManagerRef)) \
516
    macro(char *, CopyStringRepOfTargetData, (LLVMTargetDataRef)) \
517
    macro(enum LLVMByteOrdering, ByteOrder, (LLVMTargetDataRef)) \
518
    macro(unsigned, PointerSize, (LLVMTargetDataRef)) \
519
    macro(LLVMTypeRef, IntPtrType, (LLVMTargetDataRef)) \
520
    macro(unsigned long long, SizeOfTypeInBits, (LLVMTargetDataRef, LLVMTypeRef)) \
521
    macro(unsigned long long, StoreSizeOfType, (LLVMTargetDataRef, LLVMTypeRef)) \
522
    macro(unsigned long long, ABISizeOfType, (LLVMTargetDataRef, LLVMTypeRef)) \
523
    macro(unsigned, ABIAlignmentOfType, (LLVMTargetDataRef, LLVMTypeRef)) \
524
    macro(unsigned, CallFrameAlignmentOfType, (LLVMTargetDataRef, LLVMTypeRef)) \
525
    macro(unsigned, PreferredAlignmentOfType, (LLVMTargetDataRef, LLVMTypeRef)) \
526
    macro(unsigned, PreferredAlignmentOfGlobal, (LLVMTargetDataRef, LLVMValueRef GlobalVar)) \
527
    macro(unsigned, ElementAtOffset, (LLVMTargetDataRef, LLVMTypeRef StructTy, unsigned long long Offset)) \
528
    macro(unsigned long long, OffsetOfElement, (LLVMTargetDataRef, LLVMTypeRef StructTy, unsigned Element)) \
529
    macro(void, DisposeTargetData, (LLVMTargetDataRef)) \
530
    macro(LLVMTargetRef, GetFirstTarget, ()) \
531
    macro(LLVMTargetRef, GetNextTarget, (LLVMTargetRef T)) \
532
    macro(const char *, GetTargetName, (LLVMTargetRef T)) \
533
    macro(const char *, GetTargetDescription, (LLVMTargetRef T)) \
534
    macro(LLVMBool, TargetHasJIT, (LLVMTargetRef T)) \
535
    macro(LLVMBool, TargetHasTargetMachine, (LLVMTargetRef T)) \
536
    macro(LLVMBool, TargetHasAsmBackend, (LLVMTargetRef T)) \
537
    macro(LLVMTargetMachineRef, CreateTargetMachine, (LLVMTargetRef T, char *Triple, char *CPU, char *Features, LLVMCodeGenOptLevel Level, LLVMRelocMode Reloc, LLVMCodeModel CodeModel)) \
538
    macro(void, DisposeTargetMachine, (LLVMTargetMachineRef T)) \
539
    macro(LLVMTargetRef, GetTargetMachineTarget, (LLVMTargetMachineRef T)) \
540
    macro(char *, GetTargetMachineTriple, (LLVMTargetMachineRef T)) \
541
    macro(char *, GetTargetMachineCPU, (LLVMTargetMachineRef T)) \
542
    macro(char *, GetTargetMachineFeatureString, (LLVMTargetMachineRef T)) \
543
    macro(LLVMTargetDataRef, GetTargetMachineData, (LLVMTargetMachineRef T)) \
544
    macro(LLVMBool, TargetMachineEmitToFile, (LLVMTargetMachineRef T, LLVMModuleRef M, char *Filename, LLVMCodeGenFileType codegen, char **ErrorMessage)) \
545
    macro(void, LinkInJIT, (void)) \
546
    macro(void, LinkInMCJIT, (void)) \
547
    macro(void, LinkInInterpreter, (void)) \
548
    macro(LLVMGenericValueRef, CreateGenericValueOfInt, (LLVMTypeRef Ty, unsigned long long N, LLVMBool IsSigned)) \
549
    macro(LLVMGenericValueRef, CreateGenericValueOfPointer, (void *P)) \
550
    macro(LLVMGenericValueRef, CreateGenericValueOfFloat, (LLVMTypeRef Ty, double N)) \
551
    macro(unsigned, GenericValueIntWidth, (LLVMGenericValueRef GenValRef)) \
552
    macro(unsigned long long, GenericValueToInt, (LLVMGenericValueRef GenVal, LLVMBool IsSigned)) \
553
    macro(void *, GenericValueToPointer, (LLVMGenericValueRef GenVal)) \
554
    macro(double, GenericValueToFloat, (LLVMTypeRef TyRef, LLVMGenericValueRef GenVal)) \
555
    macro(void, DisposeGenericValue, (LLVMGenericValueRef GenVal)) \
556
    macro(LLVMBool, CreateExecutionEngineForModule, (LLVMExecutionEngineRef *OutEE, LLVMModuleRef M, char **OutError)) \
557
    macro(LLVMBool, CreateInterpreterForModule, (LLVMExecutionEngineRef *OutInterp, LLVMModuleRef M, char **OutError)) \
558
    macro(LLVMBool, CreateJITCompilerForModule, (LLVMExecutionEngineRef *OutJIT, LLVMModuleRef M, unsigned OptLevel, char **OutError)) \
559
    macro(void, InitializeMCJITCompilerOptions, (struct LLVMMCJITCompilerOptions *Options, size_t SizeOfOptions)) \
560
    macro(LLVMBool, CreateMCJITCompilerForModule, (LLVMExecutionEngineRef *OutJIT, LLVMModuleRef M, struct LLVMMCJITCompilerOptions *Options, size_t SizeOfOptions, char **OutError)) \
561
    macro(LLVMBool, CreateExecutionEngine, (LLVMExecutionEngineRef *OutEE, LLVMModuleProviderRef MP, char **OutError)) \
562
    macro(LLVMBool, CreateInterpreter, (LLVMExecutionEngineRef *OutInterp, LLVMModuleProviderRef MP, char **OutError)) \
563
    macro(LLVMBool, CreateJITCompiler, (LLVMExecutionEngineRef *OutJIT, LLVMModuleProviderRef MP, unsigned OptLevel, char **OutError)) \
564
    macro(void, DisposeExecutionEngine, (LLVMExecutionEngineRef EE)) \
565
    macro(void, RunStaticConstructors, (LLVMExecutionEngineRef EE)) \
566
    macro(void, RunStaticDestructors, (LLVMExecutionEngineRef EE)) \
567
    macro(int, RunFunctionAsMain, (LLVMExecutionEngineRef EE, LLVMValueRef F, unsigned ArgC, const char * const *ArgV, const char * const *EnvP)) \
568
    macro(LLVMGenericValueRef, RunFunction, (LLVMExecutionEngineRef EE, LLVMValueRef F, unsigned NumArgs, LLVMGenericValueRef *Args)) \
569
    macro(void, FreeMachineCodeForFunction, (LLVMExecutionEngineRef EE, LLVMValueRef F)) \
570
    macro(void, AddModule, (LLVMExecutionEngineRef EE, LLVMModuleRef M)) \
571
    macro(void, AddModuleProvider, (LLVMExecutionEngineRef EE, LLVMModuleProviderRef MP)) \
572
    macro(LLVMBool, RemoveModule, (LLVMExecutionEngineRef EE, LLVMModuleRef M, LLVMModuleRef *OutMod, char **OutError)) \
573
    macro(LLVMBool, RemoveModuleProvider, (LLVMExecutionEngineRef EE, LLVMModuleProviderRef MP, LLVMModuleRef *OutMod, char **OutError)) \
574
    macro(LLVMBool, FindFunction, (LLVMExecutionEngineRef EE, const char *Name, LLVMValueRef *OutFn)) \
575
    macro(void *, RecompileAndRelinkFunction, (LLVMExecutionEngineRef EE, LLVMValueRef Fn)) \
576
    macro(LLVMTargetDataRef, GetExecutionEngineTargetData, (LLVMExecutionEngineRef EE)) \
577
    macro(void, AddGlobalMapping, (LLVMExecutionEngineRef EE, LLVMValueRef Global, void* Addr)) \
578
    macro(void *, GetPointerToGlobal, (LLVMExecutionEngineRef EE, LLVMValueRef Global)) \
579
    macro(LLVMMCJITMemoryManagerRef, CreateSimpleMCJITMemoryManager, (void *Opaque, LLVMMemoryManagerAllocateCodeSectionCallback AllocateCodeSection, LLVMMemoryManagerAllocateDataSectionCallback AllocateDataSection, LLVMMemoryManagerFinalizeMemoryCallback FinalizeMemory, LLVMMemoryManagerDestroyCallback Destory)) \
580
    macro(void, DisposeMCJITMemoryManager, (LLVMMCJITMemoryManagerRef MM)) \
581
    macro(LLVMBool, VerifyModule, (LLVMModuleRef M, LLVMVerifierFailureAction Action, char **OutMessage)) \
582
    macro(LLVMBool, VerifyFunction, (LLVMValueRef Fn, LLVMVerifierFailureAction Action)) \
583
    macro(void, ViewFunctionCFG, (LLVMValueRef Fn)) \
584
    macro(void, ViewFunctionCFGOnly, (LLVMValueRef Fn)) \
585
    macro(LLVMDisasmContextRef, CreateDisasm, (const char *TripleName, void *DisInfo, int TagType, LLVMOpInfoCallback GetOpInfo, LLVMSymbolLookupCallback SymbolLookUp)) \
586
    macro(LLVMDisasmContextRef, CreateDisasmCPU, (const char *Triple, const char *CPU, void *DisInfo, int TagType, LLVMOpInfoCallback GetOpInfo, LLVMSymbolLookupCallback SymbolLookUp)) \
587
    macro(int, SetDisasmOptions, (LLVMDisasmContextRef DC, uint64_t Options)) \
588
    macro(void, DisasmDispose, (LLVMDisasmContextRef DC)) \
589
    macro(size_t, DisasmInstruction, (LLVMDisasmContextRef DC, uint8_t *Bytes, uint64_t BytesSize, uint64_t PC, char *OutString, size_t OutStringSize)) \
590
    macro(unsigned, PointerSizeForAS, (LLVMTargetDataRef, unsigned AS)) \
591
    macro(LLVMTypeRef, IntPtrTypeForAS, (LLVMTargetDataRef, unsigned AS)) \
592
    macro(LLVMPassManagerBuilderRef, PassManagerBuilderCreate, (void)) \
593
    macro(void, PassManagerBuilderDispose, (LLVMPassManagerBuilderRef PMB)) \
594
    macro(void, PassManagerBuilderSetOptLevel, (LLVMPassManagerBuilderRef PMB, unsigned OptLevel)) \
595
    macro(void, PassManagerBuilderSetSizeLevel, (LLVMPassManagerBuilderRef PMB, unsigned SizeLevel)) \
596
    macro(void, PassManagerBuilderSetDisableUnitAtATime, (LLVMPassManagerBuilderRef PMB, LLVMBool Value)) \
597
    macro(void, PassManagerBuilderSetDisableUnrollLoops, (LLVMPassManagerBuilderRef PMB, LLVMBool Value)) \
598
    macro(void, PassManagerBuilderSetDisableSimplifyLibCalls, (LLVMPassManagerBuilderRef PMB, LLVMBool Value)) \
599
    macro(void, PassManagerBuilderUseInlinerWithThreshold, (LLVMPassManagerBuilderRef PMB, unsigned Threshold)) \
600
    macro(void, PassManagerBuilderPopulateFunctionPassManager, (LLVMPassManagerBuilderRef PMB, LLVMPassManagerRef PM)) \
601
    macro(void, PassManagerBuilderPopulateModulePassManager, (LLVMPassManagerBuilderRef PMB, LLVMPassManagerRef PM)) \
602
    macro(void, PassManagerBuilderPopulateLTOPassManager, (LLVMPassManagerBuilderRef PMB, LLVMPassManagerRef PM, LLVMBool Internalize, LLVMBool RunInliner)) \
603
    macro(void, AddAggressiveDCEPass, (LLVMPassManagerRef PM)) \
604
    macro(void, AddCFGSimplificationPass, (LLVMPassManagerRef PM)) \
605
    macro(void, AddDeadStoreEliminationPass, (LLVMPassManagerRef PM)) \
606
    macro(void, AddGVNPass, (LLVMPassManagerRef PM)) \
607
    macro(void, AddIndVarSimplifyPass, (LLVMPassManagerRef PM)) \
608
    macro(void, AddInstructionCombiningPass, (LLVMPassManagerRef PM)) \
609
    macro(void, AddJumpThreadingPass, (LLVMPassManagerRef PM)) \
610
    macro(void, AddLICMPass, (LLVMPassManagerRef PM)) \
611
    macro(void, AddLoopDeletionPass, (LLVMPassManagerRef PM)) \
612
    macro(void, AddLoopIdiomPass, (LLVMPassManagerRef PM)) \
613
    macro(void, AddLoopRotatePass, (LLVMPassManagerRef PM)) \
614
    macro(void, AddLoopUnrollPass, (LLVMPassManagerRef PM)) \
615
    macro(void, AddLoopUnswitchPass, (LLVMPassManagerRef PM)) \
616
    macro(void, AddMemCpyOptPass, (LLVMPassManagerRef PM)) \
617
    macro(void, AddPartiallyInlineLibCallsPass, (LLVMPassManagerRef PM)) \
618
    macro(void, AddPromoteMemoryToRegisterPass, (LLVMPassManagerRef PM)) \
619
    macro(void, AddReassociatePass, (LLVMPassManagerRef PM)) \
620
    macro(void, AddSCCPPass, (LLVMPassManagerRef PM)) \
621
    macro(void, AddScalarReplAggregatesPass, (LLVMPassManagerRef PM)) \
622
    macro(void, AddScalarReplAggregatesPassSSA, (LLVMPassManagerRef PM)) \
623
    macro(void, AddScalarReplAggregatesPassWithThreshold, (LLVMPassManagerRef PM, int Threshold)) \
624
    macro(void, AddSimplifyLibCallsPass, (LLVMPassManagerRef PM)) \
625
    macro(void, AddTailCallEliminationPass, (LLVMPassManagerRef PM)) \
626
    macro(void, AddConstantPropagationPass, (LLVMPassManagerRef PM)) \
627
    macro(void, AddDemoteMemoryToRegisterPass, (LLVMPassManagerRef PM)) \
628
    macro(void, AddVerifierPass, (LLVMPassManagerRef PM)) \
629
    macro(void, AddCorrelatedValuePropagationPass, (LLVMPassManagerRef PM)) \
630
    macro(void, AddEarlyCSEPass, (LLVMPassManagerRef PM)) \
631
    macro(void, AddLowerExpectIntrinsicPass, (LLVMPassManagerRef PM)) \
632
    macro(void, AddTypeBasedAliasAnalysisPass, (LLVMPassManagerRef PM)) \
633
    macro(void, AddBasicAliasAnalysisPass, (LLVMPassManagerRef PM))
634
635
#endif // LLVMAPIFunctions_h
636
- Source/JavaScriptCore/llvm/LLVMHeaders.h +64 lines
Line 0 Source/JavaScriptCore/llvm/LLVMHeaders.h_sec1
1
/*
2
 * Copyright (C) 2013 Apple Inc. All rights reserved.
3
 *
4
 * Redistribution and use in source and binary forms, with or without
5
 * modification, are permitted provided that the following conditions
6
 * are met:
7
 * 1. Redistributions of source code must retain the above copyright
8
 *    notice, this list of conditions and the following disclaimer.
9
 * 2. Redistributions in binary form must reproduce the above copyright
10
 *    notice, this list of conditions and the following disclaimer in the
11
 *    documentation and/or other materials provided with the distribution.
12
 *
13
 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
14
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
17
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21
 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
24
 */
25
26
#ifndef LLVMHeaders_h
27
#define LLVMHeaders_h
28
29
#if HAVE(LLVM)
30
31
// It is necessary to include LLVM headers via this file, because:
32
// - LLVM requires defining things that we don't normally define, and
33
// - LLVM includes its C++ headers from its C headers, and its C++
34
//   headers don't compile cleanly with our warnings.
35
36
#define __STDC_LIMIT_MACROS
37
#define __STDC_CONSTANT_MACROS
38
39
#if COMPILER(CLANG)
40
#pragma clang diagnostic push
41
#pragma clang diagnostic ignored "-Wmissing-noreturn"
42
#pragma clang diagnostic ignored "-Wunused-parameter"
43
#endif // COMPILER(CLANG)
44
45
#include <llvm-c/Analysis.h>
46
#include <llvm-c/Core.h>
47
#include <llvm-c/Disassembler.h>
48
#include <llvm-c/ExecutionEngine.h>
49
#include <llvm-c/Target.h>
50
#include <llvm-c/Transforms/PassManagerBuilder.h>
51
#include <llvm-c/Transforms/Scalar.h>
52
53
#if COMPILER(CLANG)
54
#pragma clang diagnostic pop
55
#endif // COMPILER(CLANG)
56
57
#undef __STDC_LIMIT_MACROS
58
#undef __STDC_CONSTANT_MACROS
59
60
#endif // HAVE(LLVM)
61
62
#endif // LLVMHeaders_h
63
64
- Source/JavaScriptCore/llvm/library/LLVMAnchor.cpp +35 lines
Line 0 Source/JavaScriptCore/llvm/library/LLVMAnchor.cpp_sec1
1
/*
2
 * Copyright (C) 2013 Apple Inc. All rights reserved.
3
 *
4
 * Redistribution and use in source and binary forms, with or without
5
 * modification, are permitted provided that the following conditions
6
 * are met:
7
 * 1. Redistributions of source code must retain the above copyright
8
 *    notice, this list of conditions and the following disclaimer.
9
 * 2. Redistributions in binary form must reproduce the above copyright
10
 *    notice, this list of conditions and the following disclaimer in the
11
 *    documentation and/or other materials provided with the distribution.
12
 *
13
 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
14
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
17
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21
 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
24
 */
25
26
#include "config_llvm.h"
27
28
#if HAVE(LLVM)
29
30
// This is a hack for ensuring that the build system relinks JavaScriptCore if any
31
// of the LLVM libraries are known to have changed.
32
#include "WebKitLLVMLibraryToken.h"
33
34
#endif // HAVE(LLVM)
35
- Source/JavaScriptCore/llvm/library/LLVMExports.cpp +51 lines
Line 0 Source/JavaScriptCore/llvm/library/LLVMExports.cpp_sec1
1
/*
2
 * Copyright (C) 2013 Apple Inc. All rights reserved.
3
 *
4
 * Redistribution and use in source and binary forms, with or without
5
 * modification, are permitted provided that the following conditions
6
 * are met:
7
 * 1. Redistributions of source code must retain the above copyright
8
 *    notice, this list of conditions and the following disclaimer.
9
 * 2. Redistributions in binary form must reproduce the above copyright
10
 *    notice, this list of conditions and the following disclaimer in the
11
 *    documentation and/or other materials provided with the distribution.
12
 *
13
 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
14
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
17
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21
 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
24
 */
25
26
#include "config_llvm.h"
27
28
#if HAVE(LLVM)
29
30
#include "LLVMAPI.h"
31
32
extern "C" WTF_EXPORT_PRIVATE JSC::LLVMAPI* initializeAndGetJSCLLVMAPI();
33
34
extern "C" JSC::LLVMAPI* initializeAndGetJSCLLVMAPI()
35
{
36
    LLVMLinkInMCJIT();
37
    LLVMInitializeNativeTarget();
38
    LLVMInitializeX86AsmPrinter();
39
    LLVMInitializeX86Disassembler();
40
    
41
    JSC::LLVMAPI* result = new JSC::LLVMAPI;
42
    
43
#define LLVM_API_FUNCTION_ASSIGNMENT(returnType, name, signature) \
44
    result->name = LLVM##name;
45
    FOR_EACH_LLVM_API_FUNCTION(LLVM_API_FUNCTION_ASSIGNMENT);
46
#undef LLVM_API_FUNCTION_ASSIGNMENT
47
    
48
    return result;
49
}
50
51
#endif // HAVE(LLVM)
- Source/JavaScriptCore/llvm/library/LLVMOverrides.cpp +33 lines
Line 0 Source/JavaScriptCore/llvm/library/LLVMOverrides.cpp_sec1
1
/*
2
 * Copyright (C) 2013 Apple Inc. All rights reserved.
3
 *
4
 * Redistribution and use in source and binary forms, with or without
5
 * modification, are permitted provided that the following conditions
6
 * are met:
7
 * 1. Redistributions of source code must retain the above copyright
8
 *    notice, this list of conditions and the following disclaimer.
9
 * 2. Redistributions in binary form must reproduce the above copyright
10
 *    notice, this list of conditions and the following disclaimer in the
11
 *    documentation and/or other materials provided with the distribution.
12
 *
13
 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
14
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
17
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21
 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
24
 */
25
26
#include "config_llvm.h"
27
28
#if HAVE(LLVM)
29
30
extern "C" int __cxa_atexit();
31
extern "C" int __cxa_atexit() { return 0; }
32
33
#endif // HAVE(LLVM)
- Source/JavaScriptCore/llvm/library/config_llvm.h +28 lines
Line 0 Source/JavaScriptCore/llvm/library/config_llvm.h_sec1
1
/*
2
 * Copyright (C) 2013 Apple Inc. All rights reserved.
3
 *
4
 * Redistribution and use in source and binary forms, with or without
5
 * modification, are permitted provided that the following conditions
6
 * are met:
7
 * 1. Redistributions of source code must retain the above copyright
8
 *    notice, this list of conditions and the following disclaimer.
9
 * 2. Redistributions in binary form must reproduce the above copyright
10
 *    notice, this list of conditions and the following disclaimer in the
11
 *    documentation and/or other materials provided with the distribution.
12
 *
13
 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
14
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
17
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21
 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
24
 */
25
26
#include <wtf/Platform.h>
27
#include <wtf/ExportMacros.h>
28
- Source/JavaScriptCore/runtime/InitializeThreading.cpp -19 lines
Lines 40-46 Source/JavaScriptCore/runtime/InitializeThreading.cpp_sec1
40
#include "LLIntData.h"
40
#include "LLIntData.h"
41
#include "WriteBarrier.h"
41
#include "WriteBarrier.h"
42
#include <wtf/dtoa.h>
42
#include <wtf/dtoa.h>
43
#include <wtf/LLVMHeaders.h>
44
#include <wtf/Threading.h>
43
#include <wtf/Threading.h>
45
#include <wtf/dtoa/cached-powers.h>
44
#include <wtf/dtoa/cached-powers.h>
46
45
Lines 70-93 static void initializeThreadingOnce() Source/JavaScriptCore/runtime/InitializeThreading.cpp_sec2
70
#if ENABLE(LLINT)
69
#if ENABLE(LLINT)
71
    LLInt::initialize();
70
    LLInt::initialize();
72
#endif
71
#endif
73
#if HAVE(LLVM)
74
    bool ftl = false;
75
    bool disassembler = false;
76
#if ENABLE(FTL_JIT)
77
    ftl = true;
78
#endif
79
#if USE(LLVM_DISASSEMBLER)
80
    disassembler = true;
81
#endif
82
    if (ftl)
83
        LLVMLinkInMCJIT();
84
    if (ftl || disassembler)
85
        LLVMInitializeNativeTarget();
86
    if (ftl)
87
        LLVMInitializeX86AsmPrinter();
88
    if (disassembler)
89
        LLVMInitializeX86Disassembler();
90
#endif // HAVE(LLVM)
91
}
72
}
92
73
93
void initializeThreading()
74
void initializeThreading()
- Source/JavaScriptCore/runtime/Options.h -3 / +1 lines
Lines 207-215 typedef OptionRange optionRange; Source/JavaScriptCore/runtime/Options.h_sec1
207
    v(bool, logGC, false) \
207
    v(bool, logGC, false) \
208
    v(unsigned, gcMaxHeapSize, 0) \
208
    v(unsigned, gcMaxHeapSize, 0) \
209
    v(bool, recordGCPauseTimes, false) \
209
    v(bool, recordGCPauseTimes, false) \
210
    v(bool, logHeapStatisticsAtExit, false) \
210
    v(bool, logHeapStatisticsAtExit, false)
211
    \
212
    v(bool, neverDeleteVMInCommandLine, false)
213
211
214
class Options {
212
class Options {
215
public:
213
public:
- Source/WTF/ChangeLog +17 lines
Lines 1-3 Source/WTF/ChangeLog_sec1
1
2013-10-09  Filip Pizlo  <fpizlo@apple.com>
2
3
        FTL: Soft-link LLVM as a workaround for LLVM's static initializers and exit-time destructors
4
        https://bugs.webkit.org/show_bug.cgi?id=122566
5
6
        Reviewed by Mark Rowe.
7
        
8
        Remove all LLVM stuff from WTF since to get LLVM you need to soft-link and it's
9
        entirely the responsibility of JSC to do that.
10
        
11
        Also fixed an export goof that I found after fixing the weak thingy script in JSC.
12
13
        * WTF.xcodeproj/project.pbxproj:
14
        * wtf/LLVMHeaders.h: Removed.
15
        * wtf/text/CString.h:
16
        (WTF::CStringHash::hash):
17
1
2013-10-08  Filip Pizlo  <fpizlo@apple.com>
18
2013-10-08  Filip Pizlo  <fpizlo@apple.com>
2
19
3
        FTL should be able to do simple OSR exits using llvm.webkit.stackmap
20
        FTL should be able to do simple OSR exits using llvm.webkit.stackmap
- Source/WTF/WTF.xcodeproj/project.pbxproj -2 lines
Lines 330-336 Source/WTF/WTF.xcodeproj/project.pbxproj_sec1
330
		9BD8F40A176C2AD80002D865 /* AtomicStringTable.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AtomicStringTable.h; sourceTree = "<group>"; };
330
		9BD8F40A176C2AD80002D865 /* AtomicStringTable.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AtomicStringTable.h; sourceTree = "<group>"; };
331
		A70DA0821799F04D00529A9B /* Insertion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Insertion.h; sourceTree = "<group>"; };
331
		A70DA0821799F04D00529A9B /* Insertion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Insertion.h; sourceTree = "<group>"; };
332
		A70DA0831799F04D00529A9B /* ListDump.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ListDump.h; sourceTree = "<group>"; };
332
		A70DA0831799F04D00529A9B /* ListDump.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ListDump.h; sourceTree = "<group>"; };
333
		A736B3581799E11A00C6F05E /* LLVMHeaders.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LLVMHeaders.h; sourceTree = "<group>"; };
334
		A748744F17A0BDAE00FA04CB /* SixCharacterHash.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SixCharacterHash.cpp; sourceTree = "<group>"; };
333
		A748744F17A0BDAE00FA04CB /* SixCharacterHash.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SixCharacterHash.cpp; sourceTree = "<group>"; };
335
		A748745017A0BDAE00FA04CB /* SixCharacterHash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SixCharacterHash.h; sourceTree = "<group>"; };
334
		A748745017A0BDAE00FA04CB /* SixCharacterHash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SixCharacterHash.h; sourceTree = "<group>"; };
336
		A748745117A0BDAE00FA04CB /* StringHashDumpContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StringHashDumpContext.h; sourceTree = "<group>"; };
335
		A748745117A0BDAE00FA04CB /* StringHashDumpContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StringHashDumpContext.h; sourceTree = "<group>"; };
Lines 672-678 Source/WTF/WTF.xcodeproj/project.pbxproj_sec2
672
				A70DA0821799F04D00529A9B /* Insertion.h */,
671
				A70DA0821799F04D00529A9B /* Insertion.h */,
673
				A70DA0831799F04D00529A9B /* ListDump.h */,
672
				A70DA0831799F04D00529A9B /* ListDump.h */,
674
				A8A472C1151A825A004123FF /* ListHashSet.h */,
673
				A8A472C1151A825A004123FF /* ListHashSet.h */,
675
				A736B3581799E11A00C6F05E /* LLVMHeaders.h */,
676
				A8A472C3151A825A004123FF /* Locker.h */,
674
				A8A472C3151A825A004123FF /* Locker.h */,
677
				A8A472CA151A825B004123FF /* MD5.cpp */,
675
				A8A472CA151A825B004123FF /* MD5.cpp */,
678
				A8A472CB151A825B004123FF /* MD5.h */,
676
				A8A472CB151A825B004123FF /* MD5.h */,
- Source/WTF/wtf/LLVMHeaders.h -62 lines
Lines 1-62 Source/WTF/wtf/LLVMHeaders.h_sec1
1
/*
2
 * Copyright (C) 2013 Apple Inc. All rights reserved.
3
 *
4
 * Redistribution and use in source and binary forms, with or without
5
 * modification, are permitted provided that the following conditions
6
 * are met:
7
 * 1. Redistributions of source code must retain the above copyright
8
 *    notice, this list of conditions and the following disclaimer.
9
 * 2. Redistributions in binary form must reproduce the above copyright
10
 *    notice, this list of conditions and the following disclaimer in the
11
 *    documentation and/or other materials provided with the distribution.
12
 *
13
 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
14
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
17
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21
 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
24
 */
25
26
#ifndef LLVMHeaders_h
27
#define LLVMHeaders_h
28
29
#include <wtf/Platform.h>
30
31
#if HAVE(LLVM)
32
33
// It is necessary to include LLVM headers via this file, because:
34
// - LLVM requires defining things that we don't normally define, and
35
// - LLVM includes its C++ headers from its C headers, and its C++
36
//   headers don't compile cleanly with our warnings.
37
38
#undef __STDC_LIMIT_MACROS
39
#undef __STDC_CONSTANT_MACROS
40
#define __STDC_LIMIT_MACROS
41
#define __STDC_CONSTANT_MACROS
42
43
#if COMPILER(CLANG)
44
#pragma clang diagnostic push
45
#pragma clang diagnostic ignored "-Wmissing-noreturn"
46
#pragma clang diagnostic ignored "-Wunused-parameter"
47
#endif
48
49
#include <llvm-c/Analysis.h>
50
#include <llvm-c/Core.h>
51
#include <llvm-c/Disassembler.h>
52
#include <llvm-c/ExecutionEngine.h>
53
#include <llvm-c/Target.h>
54
#include <llvm-c/Transforms/PassManagerBuilder.h>
55
56
#if COMPILER(CLANG)
57
#pragma clang diagnostic pop
58
#endif
59
60
#endif // HAVE(LLVM)
61
62
#endif // LLVMHeaders_h
- Source/WTF/wtf/text/CString.h -1 / +1 lines
Lines 94-100 inline bool operator!=(const CString& a, Source/WTF/wtf/text/CString.h_sec1
94
bool operator<(const CString& a, const CString& b);
94
bool operator<(const CString& a, const CString& b);
95
95
96
struct CStringHash {
96
struct CStringHash {
97
    WTF_EXPORT_PRIVATE static unsigned hash(const CString& string) { return string.hash(); }
97
    static unsigned hash(const CString& string) { return string.hash(); }
98
    WTF_EXPORT_PRIVATE static bool equal(const CString& a, const CString& b);
98
    WTF_EXPORT_PRIVATE static bool equal(const CString& a, const CString& b);
99
    static const bool safeToCompareToEmptyOrDeleted = true;
99
    static const bool safeToCompareToEmptyOrDeleted = true;
100
};
100
};
- Tools/ChangeLog +9 lines
Lines 1-3 Tools/ChangeLog_sec1
1
2013-10-10  Filip Pizlo  <fpizlo@apple.com>
2
3
        FTL: Soft-link LLVM as a workaround for LLVM's static initializers and exit-time destructors
4
        https://bugs.webkit.org/show_bug.cgi?id=122566
5
6
        Reviewed by Mark Rowe.
7
8
        * Scripts/configure-llvm:
9
1
2013-10-10  Gustavo Noronha Silva  <gns@gnome.org>
10
2013-10-10  Gustavo Noronha Silva  <gns@gnome.org>
2
11
3
        Unreviewed gardening, the inspector protocol timeouts are also affecting TestInspectorServer.
12
        Unreviewed gardening, the inspector protocol timeouts are also affecting TestInspectorServer.
- Tools/Scripts/configure-llvm -4 / +1 lines
Lines 37-44 fi Tools/Scripts/configure-llvm_sec1
37
# only want to build a backend for our current target) and to add more flags to remove
37
# only want to build a backend for our current target) and to add more flags to remove
38
# dependencies and features.
38
# dependencies and features.
39
39
40
# FIXME: We need LLVM to have its own sensible story for hiding symbols. But while we
40
./configure --enable-optimized=yes --enable-backtraces=no --enable-targets=x86_64 --enable-libcpp=yes --enable-zlib=no --enable-terminfo=no
41
# don't have a sensible story, we use a hilarious one: CPPFLAGS=-fvisibility=hidden
42
43
./configure --enable-optimized=yes --enable-backtraces=no --enable-targets=x86_64 --enable-libcpp=yes --enable-zlib=no --enable-terminfo=no CPPFLAGS=-fvisibility=hidden
44
41

Return to Bug 122566