| Differences between
and this patch
- Source/JavaScriptCore/ChangeLog +148 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 NOBODY (OOPS!).
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
        * config.h:
23
        * dfg/DFGPlan.cpp:
24
        (JSC::DFG::Plan::compileInThreadImpl):
25
        * disassembler/LLVMDisassembler.cpp:
26
        (JSC::tryToDisassembleWithLLVM):
27
        * ftl/FTLAbbreviatedTypes.h:
28
        * ftl/FTLAbbreviations.h:
29
        (JSC::FTL::voidType):
30
        (JSC::FTL::int1Type):
31
        (JSC::FTL::int8Type):
32
        (JSC::FTL::int16Type):
33
        (JSC::FTL::int32Type):
34
        (JSC::FTL::int64Type):
35
        (JSC::FTL::intPtrType):
36
        (JSC::FTL::floatType):
37
        (JSC::FTL::doubleType):
38
        (JSC::FTL::pointerType):
39
        (JSC::FTL::structType):
40
        (JSC::FTL::functionType):
41
        (JSC::FTL::typeOf):
42
        (JSC::FTL::mdKindID):
43
        (JSC::FTL::mdString):
44
        (JSC::FTL::mdNode):
45
        (JSC::FTL::setMetadata):
46
        (JSC::FTL::addFunction):
47
        (JSC::FTL::setLinkage):
48
        (JSC::FTL::setFunctionCallingConv):
49
        (JSC::FTL::getParam):
50
        (JSC::FTL::constInt):
51
        (JSC::FTL::constReal):
52
        (JSC::FTL::constIntToPtr):
53
        (JSC::FTL::constBitCast):
54
        (JSC::FTL::appendBasicBlock):
55
        (JSC::FTL::insertBasicBlock):
56
        (JSC::FTL::buildPhi):
57
        (JSC::FTL::addIncoming):
58
        (JSC::FTL::buildAlloca):
59
        (JSC::FTL::buildAdd):
60
        (JSC::FTL::buildSub):
61
        (JSC::FTL::buildMul):
62
        (JSC::FTL::buildDiv):
63
        (JSC::FTL::buildRem):
64
        (JSC::FTL::buildNeg):
65
        (JSC::FTL::buildFAdd):
66
        (JSC::FTL::buildFSub):
67
        (JSC::FTL::buildFMul):
68
        (JSC::FTL::buildFDiv):
69
        (JSC::FTL::buildFRem):
70
        (JSC::FTL::buildFNeg):
71
        (JSC::FTL::buildAnd):
72
        (JSC::FTL::buildOr):
73
        (JSC::FTL::buildXor):
74
        (JSC::FTL::buildShl):
75
        (JSC::FTL::buildAShr):
76
        (JSC::FTL::buildLShr):
77
        (JSC::FTL::buildNot):
78
        (JSC::FTL::buildLoad):
79
        (JSC::FTL::buildStore):
80
        (JSC::FTL::buildSExt):
81
        (JSC::FTL::buildZExt):
82
        (JSC::FTL::buildFPToSI):
83
        (JSC::FTL::buildFPToUI):
84
        (JSC::FTL::buildSIToFP):
85
        (JSC::FTL::buildUIToFP):
86
        (JSC::FTL::buildIntCast):
87
        (JSC::FTL::buildFPCast):
88
        (JSC::FTL::buildIntToPtr):
89
        (JSC::FTL::buildPtrToInt):
90
        (JSC::FTL::buildBitCast):
91
        (JSC::FTL::buildICmp):
92
        (JSC::FTL::buildFCmp):
93
        (JSC::FTL::buildCall):
94
        (JSC::FTL::setTailCall):
95
        (JSC::FTL::buildExtractValue):
96
        (JSC::FTL::buildSelect):
97
        (JSC::FTL::buildBr):
98
        (JSC::FTL::buildCondBr):
99
        (JSC::FTL::buildSwitch):
100
        (JSC::FTL::addCase):
101
        (JSC::FTL::buildRet):
102
        (JSC::FTL::buildUnreachable):
103
        (JSC::FTL::dumpModule):
104
        (JSC::FTL::verifyModule):
105
        * ftl/FTLCompile.cpp:
106
        (JSC::FTL::compile):
107
        * ftl/FTLFail.cpp:
108
        (JSC::FTL::fail):
109
        * ftl/FTLJITCode.h:
110
        * ftl/FTLJITFinalizer.h:
111
        * ftl/FTLLink.cpp:
112
        * ftl/FTLLowerDFGToLLVM.cpp:
113
        (JSC::FTL::LowerDFGToLLVM::lower):
114
        * ftl/FTLOutput.cpp:
115
        (JSC::FTL::Output::Output):
116
        (JSC::FTL::Output::~Output):
117
        * ftl/FTLOutput.h:
118
        (JSC::FTL::Output::appendTo):
119
        * ftl/FTLState.cpp:
120
        (JSC::FTL::State::State):
121
        (JSC::FTL::State::~State):
122
        * ftl/WebKitLLVMLibraryAnchor.cpp: Removed.
123
        * jsc.cpp:
124
        (jscmain):
125
        * llvm: Added.
126
        * llvm/InitializeLLVM.cpp: Added.
127
        (JSC::initializeLLVM):
128
        * llvm/InitializeLLVM.h: Added.
129
        * llvm/InitializeLLVMMac.mm: Added.
130
        (JSC::initializeLLVMImpl):
131
        * llvm/InitializeLLVMPOSIX.cpp: Added.
132
        (JSC::initializeLLVMPOSIX):
133
        * llvm/InitializeLLVMPOSIX.h: Added.
134
        * llvm/LLVMAPI.cpp: Added.
135
        * llvm/LLVMAPI.h: Added.
136
        * llvm/LLVMAPIFunctions.h: Added.
137
        * llvm/LLVMHeaders.h: Added.
138
        * llvm/library: Added.
139
        * llvm/library/LLVMAnchor.cpp: Added.
140
        * llvm/library/LLVMExports.cpp: Added.
141
        (initializeAndGetJSCLLVMAPI):
142
        * llvm/library/LLVMOverrides.cpp: Added.
143
        (__cxa_atexit):
144
        * llvm/library/config_llvm.h: Added.
145
        * runtime/InitializeThreading.cpp:
146
        (JSC::initializeThreadingOnce):
147
        * runtime/Options.h:
148
1
2013-10-09  Filip Pizlo  <fpizlo@apple.com>
149
2013-10-09  Filip Pizlo  <fpizlo@apple.com>
2
150
3
        Minor clean-ups in the JSC Xcode project.
151
        Minor clean-ups in the JSC Xcode project.
- Source/JavaScriptCore/config.h -1 / +1 lines
Lines 54-60 Source/JavaScriptCore/config.h_sec1
54
54
55
#define WTF_CHANGES 1
55
#define WTF_CHANGES 1
56
56
57
#ifdef __cplusplus
57
#if defined(__cplusplus) && !defined(WTF_SUPPRESS_FAST_MALLOC)
58
#undef new
58
#undef new
59
#undef delete
59
#undef delete
60
#include <wtf/FastMalloc.h>
60
#include <wtf/FastMalloc.h>
- 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 372-377 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec2
372
		0FC815151405119B00CFA603 /* VTableSpectrum.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FC815141405118D00CFA603 /* VTableSpectrum.h */; settings = {ATTRIBUTES = (Private, ); }; };
371
		0FC815151405119B00CFA603 /* VTableSpectrum.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FC815141405118D00CFA603 /* VTableSpectrum.h */; settings = {ATTRIBUTES = (Private, ); }; };
373
		0FC81516140511B500CFA603 /* VTableSpectrum.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FC815121405118600CFA603 /* VTableSpectrum.cpp */; };
372
		0FC81516140511B500CFA603 /* VTableSpectrum.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FC815121405118600CFA603 /* VTableSpectrum.cpp */; };
374
		0FCCAE4516D0CF7400D0C65B /* ParserError.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCCAE4316D0CF6E00D0C65B /* ParserError.h */; settings = {ATTRIBUTES = (Private, ); }; };
373
		0FCCAE4516D0CF7400D0C65B /* ParserError.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCCAE4316D0CF6E00D0C65B /* ParserError.h */; settings = {ATTRIBUTES = (Private, ); }; };
374
		0FCEFAB01805CA6D00472CE4 /* InitializeLLVM.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCEFAAE1805CA6D00472CE4 /* InitializeLLVM.h */; settings = {ATTRIBUTES = (Private, ); }; };
375
		0FCEFAB11805CA6D00472CE4 /* InitializeLLVMMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0FCEFAAF1805CA6D00472CE4 /* InitializeLLVMMac.mm */; };
376
		0FCEFAC11805D94E00472CE4 /* LLVMOverrides.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FCEFAC01805D94100472CE4 /* LLVMOverrides.cpp */; };
377
		0FCEFAC31805E74000472CE4 /* LLVMExports.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FCEFAC21805E74000472CE4 /* LLVMExports.cpp */; };
378
		0FCEFACA1805E75500472CE4 /* InitializeLLVM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FCEFAC41805E75500472CE4 /* InitializeLLVM.cpp */; };
379
		0FCEFACB1805E75500472CE4 /* InitializeLLVMPOSIX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FCEFAC51805E75500472CE4 /* InitializeLLVMPOSIX.cpp */; };
380
		0FCEFACC1805E75500472CE4 /* InitializeLLVMPOSIX.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCEFAC61805E75500472CE4 /* InitializeLLVMPOSIX.h */; settings = {ATTRIBUTES = (Private, ); }; };
381
		0FCEFACD1805E75500472CE4 /* LLVMAPI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FCEFAC71805E75500472CE4 /* LLVMAPI.cpp */; };
382
		0FCEFACE1805E75500472CE4 /* LLVMAPI.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCEFAC81805E75500472CE4 /* LLVMAPI.h */; settings = {ATTRIBUTES = (Private, ); }; };
383
		0FCEFACF1805E75500472CE4 /* LLVMAPIFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCEFAC91805E75500472CE4 /* LLVMAPIFunctions.h */; settings = {ATTRIBUTES = (Private, ); }; };
384
		0FCEFAD11805E77900472CE4 /* LLVMAPIFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCEFAC91805E75500472CE4 /* LLVMAPIFunctions.h */; };
385
		0FCEFAD31805EDCC00472CE4 /* LLVMHeaders.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCEFAD21805EDCC00472CE4 /* LLVMHeaders.h */; settings = {ATTRIBUTES = (Private, ); }; };
386
		0FCEFAD41805EDCC00472CE4 /* LLVMHeaders.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCEFAD21805EDCC00472CE4 /* LLVMHeaders.h */; };
387
		0FCEFAD71806174600472CE4 /* LLVMAnchor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FCEFAD61806174600472CE4 /* LLVMAnchor.cpp */; };
388
		0FCEFADA180620DA00472CE4 /* LLVMAPI.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCEFAC81805E75500472CE4 /* LLVMAPI.h */; };
389
		0FCEFADC18064A1400472CE4 /* config_llvm.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCEFADB18064A1400472CE4 /* config_llvm.h */; };
375
		0FD2C92416D01EE900C7803F /* StructureInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FD2C92316D01EE900C7803F /* StructureInlines.h */; settings = {ATTRIBUTES = (Private, ); }; };
390
		0FD2C92416D01EE900C7803F /* StructureInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FD2C92316D01EE900C7803F /* StructureInlines.h */; settings = {ATTRIBUTES = (Private, ); }; };
376
		0FD3C82614115D4000FD81CB /* DFGDriver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FD3C82014115CF800FD81CB /* DFGDriver.cpp */; };
391
		0FD3C82614115D4000FD81CB /* DFGDriver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FD3C82014115CF800FD81CB /* DFGDriver.cpp */; };
377
		0FD3C82814115D4F00FD81CB /* DFGDriver.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FD3C82214115D0E00FD81CB /* DFGDriver.h */; };
392
		0FD3C82814115D4F00FD81CB /* DFGDriver.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FD3C82214115D0E00FD81CB /* DFGDriver.h */; };
Lines 1181-1186 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec3
1181
/* End PBXBuildFile section */
1196
/* End PBXBuildFile section */
1182
1197
1183
/* Begin PBXContainerItemProxy section */
1198
/* Begin PBXContainerItemProxy section */
1199
		0FCEFABC1805D66300472CE4 /* PBXContainerItemProxy */ = {
1200
			isa = PBXContainerItemProxy;
1201
			containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
1202
			proxyType = 1;
1203
			remoteGlobalIDString = 0FCEFAB51805D61600472CE4;
1204
			remoteInfo = llvmForJSC;
1205
		};
1184
		0FF922D214F46B2F0041A24E /* PBXContainerItemProxy */ = {
1206
		0FF922D214F46B2F0041A24E /* PBXContainerItemProxy */ = {
1185
			isa = PBXContainerItemProxy;
1207
			isa = PBXContainerItemProxy;
1186
			containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
1208
			containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
Lines 1471-1477 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec4
1471
		0F63948215E48114006A597C /* DFGArrayMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGArrayMode.h; path = dfg/DFGArrayMode.h; sourceTree = "<group>"; };
1493
		0F63948215E48114006A597C /* DFGArrayMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGArrayMode.h; path = dfg/DFGArrayMode.h; sourceTree = "<group>"; };
1472
		0F66E16814DF3F1300B7B2E4 /* DFGAdjacencyList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGAdjacencyList.h; path = dfg/DFGAdjacencyList.h; sourceTree = "<group>"; };
1494
		0F66E16814DF3F1300B7B2E4 /* DFGAdjacencyList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGAdjacencyList.h; path = dfg/DFGAdjacencyList.h; sourceTree = "<group>"; };
1473
		0F66E16914DF3F1300B7B2E4 /* DFGEdge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGEdge.h; path = dfg/DFGEdge.h; sourceTree = "<group>"; };
1495
		0F66E16914DF3F1300B7B2E4 /* DFGEdge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGEdge.h; path = dfg/DFGEdge.h; sourceTree = "<group>"; };
1474
		0F6E5C181724AF3D005C574F /* WebKitLLVMLibraryAnchor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebKitLLVMLibraryAnchor.cpp; path = ftl/WebKitLLVMLibraryAnchor.cpp; sourceTree = "<group>"; };
1475
		0F7025A71714B0F800382C0E /* DFGOSRExitCompilerCommon.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGOSRExitCompilerCommon.cpp; path = dfg/DFGOSRExitCompilerCommon.cpp; sourceTree = "<group>"; };
1496
		0F7025A71714B0F800382C0E /* DFGOSRExitCompilerCommon.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGOSRExitCompilerCommon.cpp; path = dfg/DFGOSRExitCompilerCommon.cpp; sourceTree = "<group>"; };
1476
		0F7025A81714B0F800382C0E /* DFGOSRExitCompilerCommon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGOSRExitCompilerCommon.h; path = dfg/DFGOSRExitCompilerCommon.h; sourceTree = "<group>"; };
1497
		0F7025A81714B0F800382C0E /* DFGOSRExitCompilerCommon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGOSRExitCompilerCommon.h; path = dfg/DFGOSRExitCompilerCommon.h; sourceTree = "<group>"; };
1477
		0F714CA116EA92ED00F3EBEB /* DFGBackwardsPropagationPhase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGBackwardsPropagationPhase.cpp; path = dfg/DFGBackwardsPropagationPhase.cpp; sourceTree = "<group>"; };
1498
		0F714CA116EA92ED00F3EBEB /* DFGBackwardsPropagationPhase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGBackwardsPropagationPhase.cpp; path = dfg/DFGBackwardsPropagationPhase.cpp; sourceTree = "<group>"; };
Lines 1598-1603 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec5
1598
		0FC815141405118D00CFA603 /* VTableSpectrum.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VTableSpectrum.h; sourceTree = "<group>"; };
1619
		0FC815141405118D00CFA603 /* VTableSpectrum.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VTableSpectrum.h; sourceTree = "<group>"; };
1599
		0FCB408515C0A3C30048932B /* SlotVisitorInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SlotVisitorInlines.h; sourceTree = "<group>"; };
1620
		0FCB408515C0A3C30048932B /* SlotVisitorInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SlotVisitorInlines.h; sourceTree = "<group>"; };
1600
		0FCCAE4316D0CF6E00D0C65B /* ParserError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ParserError.h; sourceTree = "<group>"; };
1621
		0FCCAE4316D0CF6E00D0C65B /* ParserError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ParserError.h; sourceTree = "<group>"; };
1622
		0FCEFAAE1805CA6D00472CE4 /* InitializeLLVM.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = InitializeLLVM.h; path = llvm/InitializeLLVM.h; sourceTree = "<group>"; };
1623
		0FCEFAAF1805CA6D00472CE4 /* InitializeLLVMMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = InitializeLLVMMac.mm; path = llvm/InitializeLLVMMac.mm; sourceTree = "<group>"; };
1624
		0FCEFAB61805D61600472CE4 /* libllvmForJSC.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = libllvmForJSC.dylib; sourceTree = BUILT_PRODUCTS_DIR; };
1625
		0FCEFABE1805D86900472CE4 /* LLVMForJSC.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = LLVMForJSC.xcconfig; sourceTree = "<group>"; };
1626
		0FCEFAC01805D94100472CE4 /* LLVMOverrides.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = LLVMOverrides.cpp; sourceTree = "<group>"; };
1627
		0FCEFAC21805E74000472CE4 /* LLVMExports.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LLVMExports.cpp; sourceTree = "<group>"; };
1628
		0FCEFAC41805E75500472CE4 /* InitializeLLVM.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = InitializeLLVM.cpp; path = llvm/InitializeLLVM.cpp; sourceTree = "<group>"; };
1629
		0FCEFAC51805E75500472CE4 /* InitializeLLVMPOSIX.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = InitializeLLVMPOSIX.cpp; path = llvm/InitializeLLVMPOSIX.cpp; sourceTree = "<group>"; };
1630
		0FCEFAC61805E75500472CE4 /* InitializeLLVMPOSIX.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = InitializeLLVMPOSIX.h; path = llvm/InitializeLLVMPOSIX.h; sourceTree = "<group>"; };
1631
		0FCEFAC71805E75500472CE4 /* LLVMAPI.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LLVMAPI.cpp; path = llvm/LLVMAPI.cpp; sourceTree = "<group>"; };
1632
		0FCEFAC81805E75500472CE4 /* LLVMAPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LLVMAPI.h; path = llvm/LLVMAPI.h; sourceTree = "<group>"; };
1633
		0FCEFAC91805E75500472CE4 /* LLVMAPIFunctions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LLVMAPIFunctions.h; path = llvm/LLVMAPIFunctions.h; sourceTree = "<group>"; };
1634
		0FCEFAD21805EDCC00472CE4 /* LLVMHeaders.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LLVMHeaders.h; path = llvm/LLVMHeaders.h; sourceTree = "<group>"; };
1635
		0FCEFAD61806174600472CE4 /* LLVMAnchor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LLVMAnchor.cpp; sourceTree = "<group>"; };
1636
		0FCEFADB18064A1400472CE4 /* config_llvm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = config_llvm.h; sourceTree = "<group>"; };
1601
		0FD2C92316D01EE900C7803F /* StructureInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StructureInlines.h; sourceTree = "<group>"; };
1637
		0FD2C92316D01EE900C7803F /* StructureInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StructureInlines.h; sourceTree = "<group>"; };
1602
		0FD3C82014115CF800FD81CB /* DFGDriver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGDriver.cpp; path = dfg/DFGDriver.cpp; sourceTree = "<group>"; };
1638
		0FD3C82014115CF800FD81CB /* DFGDriver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGDriver.cpp; path = dfg/DFGDriver.cpp; sourceTree = "<group>"; };
1603
		0FD3C82214115D0E00FD81CB /* DFGDriver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGDriver.h; path = dfg/DFGDriver.h; sourceTree = "<group>"; };
1639
		0FD3C82214115D0E00FD81CB /* DFGDriver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGDriver.h; path = dfg/DFGDriver.h; sourceTree = "<group>"; };
Lines 2431-2436 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec6
2431
/* End PBXFileReference section */
2467
/* End PBXFileReference section */
2432
2468
2433
/* Begin PBXFrameworksBuildPhase section */
2469
/* Begin PBXFrameworksBuildPhase section */
2470
		0FCEFAB31805D61600472CE4 /* Frameworks */ = {
2471
			isa = PBXFrameworksBuildPhase;
2472
			buildActionMask = 2147483647;
2473
			files = (
2474
			);
2475
			runOnlyForDeploymentPostprocessing = 0;
2476
		};
2434
		0FF922C614F46B130041A24E /* Frameworks */ = {
2477
		0FF922C614F46B130041A24E /* Frameworks */ = {
2435
			isa = PBXFrameworksBuildPhase;
2478
			isa = PBXFrameworksBuildPhase;
2436
			buildActionMask = 2147483647;
2479
			buildActionMask = 2147483647;
Lines 2499-2504 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec7
2499
				141211200A48793C00480255 /* minidom */,
2542
				141211200A48793C00480255 /* minidom */,
2500
				14BD59BF0A3E8F9000BAF59C /* testapi */,
2543
				14BD59BF0A3E8F9000BAF59C /* testapi */,
2501
				6511230514046A4C002B101D /* testRegExp */,
2544
				6511230514046A4C002B101D /* testRegExp */,
2545
				0FCEFAB61805D61600472CE4 /* libllvmForJSC.dylib */,
2502
			);
2546
			);
2503
			name = Products;
2547
			name = Products;
2504
			sourceTree = "<group>";
2548
			sourceTree = "<group>";
Lines 2531-2536 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec8
2531
				1429D77A0ED20D7300B89619 /* interpreter */,
2575
				1429D77A0ED20D7300B89619 /* interpreter */,
2532
				1429D92C0ED22D7000B89619 /* jit */,
2576
				1429D92C0ED22D7000B89619 /* jit */,
2533
				0F46809C14BA7F4D00BFE272 /* llint */,
2577
				0F46809C14BA7F4D00BFE272 /* llint */,
2578
				0FCEFAAD1805CA4400472CE4 /* llvm */,
2534
				7E39D8370EC3A388003AF11A /* parser */,
2579
				7E39D8370EC3A388003AF11A /* parser */,
2535
				034768DFFF38A50411DB9C8B /* Products */,
2580
				034768DFFF38A50411DB9C8B /* Products */,
2536
				95AB831A0DA42C6900BC83F3 /* profiler */,
2581
				95AB831A0DA42C6900BC83F3 /* profiler */,
Lines 2588-2593 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec9
2588
			name = llint;
2633
			name = llint;
2589
			sourceTree = "<group>";
2634
			sourceTree = "<group>";
2590
		};
2635
		};
2636
		0FCEFAAD1805CA4400472CE4 /* llvm */ = {
2637
			isa = PBXGroup;
2638
			children = (
2639
				0FCEFABF1805D94100472CE4 /* library */,
2640
				0FCEFAC41805E75500472CE4 /* InitializeLLVM.cpp */,
2641
				0FCEFAAE1805CA6D00472CE4 /* InitializeLLVM.h */,
2642
				0FCEFAAF1805CA6D00472CE4 /* InitializeLLVMMac.mm */,
2643
				0FCEFAC51805E75500472CE4 /* InitializeLLVMPOSIX.cpp */,
2644
				0FCEFAC61805E75500472CE4 /* InitializeLLVMPOSIX.h */,
2645
				0FCEFAC71805E75500472CE4 /* LLVMAPI.cpp */,
2646
				0FCEFAC81805E75500472CE4 /* LLVMAPI.h */,
2647
				0FCEFAC91805E75500472CE4 /* LLVMAPIFunctions.h */,
2648
				0FCEFAD21805EDCC00472CE4 /* LLVMHeaders.h */,
2649
			);
2650
			name = llvm;
2651
			sourceTree = "<group>";
2652
		};
2653
		0FCEFABF1805D94100472CE4 /* library */ = {
2654
			isa = PBXGroup;
2655
			children = (
2656
				0FCEFADB18064A1400472CE4 /* config_llvm.h */,
2657
				0FCEFAD61806174600472CE4 /* LLVMAnchor.cpp */,
2658
				0FCEFAC21805E74000472CE4 /* LLVMExports.cpp */,
2659
				0FCEFAC01805D94100472CE4 /* LLVMOverrides.cpp */,
2660
			);
2661
			name = library;
2662
			path = llvm/library;
2663
			sourceTree = "<group>";
2664
		};
2591
		0FEA09FC1705137F00BB722C /* ftl */ = {
2665
		0FEA09FC1705137F00BB722C /* ftl */ = {
2592
			isa = PBXGroup;
2666
			isa = PBXGroup;
2593
			children = (
2667
			children = (
Lines 2651-2657 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec10
2651
				0FDB2CC8173DA51E007B3C1B /* FTLValueFromBlock.h */,
2725
				0FDB2CC8173DA51E007B3C1B /* FTLValueFromBlock.h */,
2652
				0F235BCF17178E1C00690C7F /* FTLValueSource.cpp */,
2726
				0F235BCF17178E1C00690C7F /* FTLValueSource.cpp */,
2653
				0F235BD017178E1C00690C7F /* FTLValueSource.h */,
2727
				0F235BD017178E1C00690C7F /* FTLValueSource.h */,
2654
				0F6E5C181724AF3D005C574F /* WebKitLLVMLibraryAnchor.cpp */,
2655
			);
2728
			);
2656
			name = ftl;
2729
			name = ftl;
2657
			sourceTree = "<group>";
2730
			sourceTree = "<group>";
Lines 3008-3013 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec11
3008
		1C90513E0BA9E8830081E9D0 /* Configurations */ = {
3081
		1C90513E0BA9E8830081E9D0 /* Configurations */ = {
3009
			isa = PBXGroup;
3082
			isa = PBXGroup;
3010
			children = (
3083
			children = (
3084
				0FCEFABE1805D86900472CE4 /* LLVMForJSC.xcconfig */,
3011
				1C9051450BA9E8A70081E9D0 /* Base.xcconfig */,
3085
				1C9051450BA9E8A70081E9D0 /* Base.xcconfig */,
3012
				1C9051440BA9E8A70081E9D0 /* DebugRelease.xcconfig */,
3086
				1C9051440BA9E8A70081E9D0 /* DebugRelease.xcconfig */,
3013
				449097EE0F8F81B50076A327 /* FeatureDefines.xcconfig */,
3087
				449097EE0F8F81B50076A327 /* FeatureDefines.xcconfig */,
Lines 3882-3887 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec12
3882
/* End PBXGroup section */
3956
/* End PBXGroup section */
3883
3957
3884
/* Begin PBXHeadersBuildPhase section */
3958
/* Begin PBXHeadersBuildPhase section */
3959
		0FCEFAB41805D61600472CE4 /* Headers */ = {
3960
			isa = PBXHeadersBuildPhase;
3961
			buildActionMask = 2147483647;
3962
			files = (
3963
				0FCEFAD41805EDCC00472CE4 /* LLVMHeaders.h in Headers */,
3964
				0FCEFADA180620DA00472CE4 /* LLVMAPI.h in Headers */,
3965
				0FCEFAD11805E77900472CE4 /* LLVMAPIFunctions.h in Headers */,
3966
				0FCEFADC18064A1400472CE4 /* config_llvm.h in Headers */,
3967
			);
3968
			runOnlyForDeploymentPostprocessing = 0;
3969
		};
3885
		144005C70A5338C60005F061 /* Headers */ = {
3970
		144005C70A5338C60005F061 /* Headers */ = {
3886
			isa = PBXHeadersBuildPhase;
3971
			isa = PBXHeadersBuildPhase;
3887
			buildActionMask = 2147483647;
3972
			buildActionMask = 2147483647;
Lines 3940-3945 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec13
3940
				0F0B83B114BCF71800885B4F /* CallLinkInfo.h in Headers */,
4025
				0F0B83B114BCF71800885B4F /* CallLinkInfo.h in Headers */,
3941
				0F93329E14CA7DC50085F3C6 /* CallLinkStatus.h in Headers */,
4026
				0F93329E14CA7DC50085F3C6 /* CallLinkStatus.h in Headers */,
3942
				0F0B83B914BCF95F00885B4F /* CallReturnOffsetToBytecodeOffset.h in Headers */,
4027
				0F0B83B914BCF95F00885B4F /* CallReturnOffsetToBytecodeOffset.h in Headers */,
4028
				0FCEFAD31805EDCC00472CE4 /* LLVMHeaders.h in Headers */,
3943
				BC6AAAE50E1F426500AD87D8 /* ClassInfo.h in Headers */,
4029
				BC6AAAE50E1F426500AD87D8 /* ClassInfo.h in Headers */,
3944
				0F73D7AF165A143000ACAB71 /* ClosureCallStubRoutine.h in Headers */,
4030
				0F73D7AF165A143000ACAB71 /* ClosureCallStubRoutine.h in Headers */,
3945
				969A07970ED1D3AE00F1F681 /* CodeBlock.h in Headers */,
4031
				969A07970ED1D3AE00F1F681 /* CodeBlock.h in Headers */,
Lines 3970-3975 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec14
3970
				C2239D1816262BDD005AC5FD /* CopyVisitor.h in Headers */,
4056
				C2239D1816262BDD005AC5FD /* CopyVisitor.h in Headers */,
3971
				C2239D1916262BDD005AC5FD /* CopyVisitorInlines.h in Headers */,
4057
				C2239D1916262BDD005AC5FD /* CopyVisitorInlines.h in Headers */,
3972
				C218D1401655CFD50062BB81 /* CopyWorkList.h in Headers */,
4058
				C218D1401655CFD50062BB81 /* CopyWorkList.h in Headers */,
4059
				0FCEFACF1805E75500472CE4 /* LLVMAPIFunctions.h in Headers */,
3973
				5DE6E5B30E1728EC00180407 /* create_hash_table in Headers */,
4060
				5DE6E5B30E1728EC00180407 /* create_hash_table in Headers */,
3974
				0F426A4B1460CD6E00131F8F /* DataFormat.h in Headers */,
4061
				0F426A4B1460CD6E00131F8F /* DataFormat.h in Headers */,
3975
				0F2B66DF17B6B5AB00A7AE3F /* DataView.h in Headers */,
4062
				0F2B66DF17B6B5AB00A7AE3F /* DataView.h in Headers */,
Lines 4087-4092 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec15
4087
				86EC9DD31328DF82002B2AD7 /* DFGSpeculativeJIT.h in Headers */,
4174
				86EC9DD31328DF82002B2AD7 /* DFGSpeculativeJIT.h in Headers */,
4088
				A7D89D0017A0B8CC00773AD8 /* DFGSSAConversionPhase.h in Headers */,
4175
				A7D89D0017A0B8CC00773AD8 /* DFGSSAConversionPhase.h in Headers */,
4089
				0F63947815DCE34B006A597C /* DFGStructureAbstractValue.h in Headers */,
4176
				0F63947815DCE34B006A597C /* DFGStructureAbstractValue.h in Headers */,
4177
				0FCEFACC1805E75500472CE4 /* InitializeLLVMPOSIX.h in Headers */,
4090
				0FC097A2146B28CC00CF2442 /* DFGThunks.h in Headers */,
4178
				0FC097A2146B28CC00CF2442 /* DFGThunks.h in Headers */,
4091
				0F63943F15C75F19006A597C /* DFGTypeCheckHoistingPhase.h in Headers */,
4179
				0F63943F15C75F19006A597C /* DFGTypeCheckHoistingPhase.h in Headers */,
4092
				0FBE0F7716C1DB120082C5E8 /* DFGUnificationPhase.h in Headers */,
4180
				0FBE0F7716C1DB120082C5E8 /* DFGUnificationPhase.h in Headers */,
Lines 4193-4198 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec16
4193
				A78853FA17972629001440E4 /* IntendedStructureChain.h in Headers */,
4281
				A78853FA17972629001440E4 /* IntendedStructureChain.h in Headers */,
4194
				BC11667B0E199C05008066DD /* InternalFunction.h in Headers */,
4282
				BC11667B0E199C05008066DD /* InternalFunction.h in Headers */,
4195
				1429D77C0ED20D7300B89619 /* Interpreter.h in Headers */,
4283
				1429D77C0ED20D7300B89619 /* Interpreter.h in Headers */,
4284
				0FCEFAB01805CA6D00472CE4 /* InitializeLLVM.h in Headers */,
4196
				860BD801148EA6F200112B2F /* Intrinsic.h in Headers */,
4285
				860BD801148EA6F200112B2F /* Intrinsic.h in Headers */,
4197
				BC18C4130E16F5CD00B34460 /* JavaScript.h in Headers */,
4286
				BC18C4130E16F5CD00B34460 /* JavaScript.h in Headers */,
4198
				BC18C4140E16F5CD00B34460 /* JavaScriptCore.h in Headers */,
4287
				BC18C4140E16F5CD00B34460 /* JavaScriptCore.h in Headers */,
Lines 4246-4251 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec17
4246
				A72028B81797601E0098028C /* JSCTestRunnerUtils.h in Headers */,
4335
				A72028B81797601E0098028C /* JSCTestRunnerUtils.h in Headers */,
4247
				0F2B66EC17B6B5AB00A7AE3F /* JSDataView.h in Headers */,
4336
				0F2B66EC17B6B5AB00A7AE3F /* JSDataView.h in Headers */,
4248
				0F2B66EE17B6B5AB00A7AE3F /* JSDataViewPrototype.h in Headers */,
4337
				0F2B66EE17B6B5AB00A7AE3F /* JSDataViewPrototype.h in Headers */,
4338
				0FCEFACE1805E75500472CE4 /* LLVMAPI.h in Headers */,
4249
				978801411471AD920041B016 /* JSDateMath.h in Headers */,
4339
				978801411471AD920041B016 /* JSDateMath.h in Headers */,
4250
				C2A7F688160432D400F76B98 /* JSDestructibleObject.h in Headers */,
4340
				C2A7F688160432D400F76B98 /* JSDestructibleObject.h in Headers */,
4251
				86E3C614167BABD7006D760A /* JSExport.h in Headers */,
4341
				86E3C614167BABD7006D760A /* JSExport.h in Headers */,
Lines 4563-4568 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec18
4563
/* End PBXHeadersBuildPhase section */
4653
/* End PBXHeadersBuildPhase section */
4564
4654
4565
/* Begin PBXNativeTarget section */
4655
/* Begin PBXNativeTarget section */
4656
		0FCEFAB51805D61600472CE4 /* llvmForJSC */ = {
4657
			isa = PBXNativeTarget;
4658
			buildConfigurationList = 0FCEFAB71805D61600472CE4 /* Build configuration list for PBXNativeTarget "llvmForJSC" */;
4659
			buildPhases = (
4660
				0FCEFAB21805D61600472CE4 /* Sources */,
4661
				0FCEFAB31805D61600472CE4 /* Frameworks */,
4662
				0FCEFAB41805D61600472CE4 /* Headers */,
4663
			);
4664
			buildRules = (
4665
			);
4666
			dependencies = (
4667
			);
4668
			name = llvmForJSC;
4669
			productName = llvmForJSC;
4670
			productReference = 0FCEFAB61805D61600472CE4 /* libllvmForJSC.dylib */;
4671
			productType = "com.apple.product-type.library.dynamic";
4672
		};
4566
		0FF922C314F46B130041A24E /* JSCLLIntOffsetsExtractor */ = {
4673
		0FF922C314F46B130041A24E /* JSCLLIntOffsetsExtractor */ = {
4567
			isa = PBXNativeTarget;
4674
			isa = PBXNativeTarget;
4568
			buildConfigurationList = 0FF922CA14F46B130041A24E /* Build configuration list for PBXNativeTarget "JSCLLIntOffsetsExtractor" */;
4675
			buildConfigurationList = 0FF922CA14F46B130041A24E /* Build configuration list for PBXNativeTarget "JSCLLIntOffsetsExtractor" */;
Lines 4643-4648 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec19
4643
				3732811A17FCD235004AD519 /* Postprocess Headers */,
4750
				3732811A17FCD235004AD519 /* Postprocess Headers */,
4644
				932F5B910822A1C700736975 /* Sources */,
4751
				932F5B910822A1C700736975 /* Sources */,
4645
				932F5BD20822A1C700736975 /* Frameworks */,
4752
				932F5BD20822A1C700736975 /* Frameworks */,
4753
				0FCEFAD91806191800472CE4 /* Copy LLVM Library Into Framework */,
4646
				5D29D8BE0E9860B400C3D2D0 /* Check For Weak VTables and Externals */,
4754
				5D29D8BE0E9860B400C3D2D0 /* Check For Weak VTables and Externals */,
4647
				3713F014142905240036387F /* Check For Inappropriate Objective-C Class Names */,
4755
				3713F014142905240036387F /* Check For Inappropriate Objective-C Class Names */,
4648
				A55DEAA416703DF7003DB841 /* Check For Inappropriate Macros in External Headers */,
4756
				A55DEAA416703DF7003DB841 /* Check For Inappropriate Macros in External Headers */,
Lines 4650-4655 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec20
4650
			buildRules = (
4758
			buildRules = (
4651
			);
4759
			);
4652
			dependencies = (
4760
			dependencies = (
4761
				0FCEFABD1805D66300472CE4 /* PBXTargetDependency */,
4653
				65FB3F7E09D11EF300F49DEB /* PBXTargetDependency */,
4762
				65FB3F7E09D11EF300F49DEB /* PBXTargetDependency */,
4654
			);
4763
			);
4655
			name = JavaScriptCore;
4764
			name = JavaScriptCore;
Lines 4710-4715 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec21
4710
				0F4680A914BA7FD900BFE272 /* LLInt Offsets */,
4819
				0F4680A914BA7FD900BFE272 /* LLInt Offsets */,
4711
				0FF922C314F46B130041A24E /* JSCLLIntOffsetsExtractor */,
4820
				0FF922C314F46B130041A24E /* JSCLLIntOffsetsExtractor */,
4712
				5D6B2A47152B9E17005231DE /* Test Tools */,
4821
				5D6B2A47152B9E17005231DE /* Test Tools */,
4822
				0FCEFAB51805D61600472CE4 /* llvmForJSC */,
4713
			);
4823
			);
4714
		};
4824
		};
4715
/* End PBXProject section */
4825
/* End PBXProject section */
Lines 4731-4736 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec22
4731
			shellPath = /bin/sh;
4841
			shellPath = /bin/sh;
4732
			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";
4842
			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";
4733
		};
4843
		};
4844
		0FCEFAD91806191800472CE4 /* Copy LLVM Library Into Framework */ = {
4845
			isa = PBXShellScriptBuildPhase;
4846
			buildActionMask = 2147483647;
4847
			files = (
4848
			);
4849
			inputPaths = (
4850
				"$(BUILT_PRODUCTS_DIR)/libllvmForJSC.dylib",
4851
			);
4852
			name = "Copy LLVM Library Into Framework";
4853
			outputPaths = (
4854
			);
4855
			runOnlyForDeploymentPostprocessing = 0;
4856
			shellPath = /bin/sh;
4857
			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\"\nln -fs \"Versions/Current/Libraries\" \"${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/Libraries\"";
4858
		};
4734
		3713F014142905240036387F /* Check For Inappropriate Objective-C Class Names */ = {
4859
		3713F014142905240036387F /* Check For Inappropriate Objective-C Class Names */ = {
4735
			isa = PBXShellScriptBuildPhase;
4860
			isa = PBXShellScriptBuildPhase;
4736
			buildActionMask = 2147483647;
4861
			buildActionMask = 2147483647;
Lines 4778-4784 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec23
4778
			);
4903
			);
4779
			runOnlyForDeploymentPostprocessing = 0;
4904
			runOnlyForDeploymentPostprocessing = 0;
4780
			shellPath = /bin/sh;
4905
			shellPath = /bin/sh;
4781
			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";
4906
			shellScript = "if [ -f ../../Tools/Scripts/check-for-weak-vtables-and-externals ]; then\n    ../../Tools/Scripts/check-for-weak-vtables-and-externals || exit $?\nfi";
4782
		};
4907
		};
4783
		5D2F7CF90C6875BB00B5B72B /* Update Info.plist with version information */ = {
4908
		5D2F7CF90C6875BB00B5B72B /* Update Info.plist with version information */ = {
4784
			isa = PBXShellScriptBuildPhase;
4909
			isa = PBXShellScriptBuildPhase;
Lines 4876-4881 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec24
4876
/* End PBXShellScriptBuildPhase section */
5001
/* End PBXShellScriptBuildPhase section */
4877
5002
4878
/* Begin PBXSourcesBuildPhase section */
5003
/* Begin PBXSourcesBuildPhase section */
5004
		0FCEFAB21805D61600472CE4 /* Sources */ = {
5005
			isa = PBXSourcesBuildPhase;
5006
			buildActionMask = 2147483647;
5007
			files = (
5008
				0FCEFAC31805E74000472CE4 /* LLVMExports.cpp in Sources */,
5009
				0FCEFAD71806174600472CE4 /* LLVMAnchor.cpp in Sources */,
5010
				0FCEFAC11805D94E00472CE4 /* LLVMOverrides.cpp in Sources */,
5011
			);
5012
			runOnlyForDeploymentPostprocessing = 0;
5013
		};
4879
		0FF922C414F46B130041A24E /* Sources */ = {
5014
		0FF922C414F46B130041A24E /* Sources */ = {
4880
			isa = PBXSourcesBuildPhase;
5015
			isa = PBXSourcesBuildPhase;
4881
			buildActionMask = 2147483647;
5016
			buildActionMask = 2147483647;
Lines 4936-4941 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec25
4936
				14280865107EC11A0013E7B2 /* BooleanPrototype.cpp in Sources */,
5071
				14280865107EC11A0013E7B2 /* BooleanPrototype.cpp in Sources */,
4937
				148F21AA107EC53A0042EC2C /* BytecodeGenerator.cpp in Sources */,
5072
				148F21AA107EC53A0042EC2C /* BytecodeGenerator.cpp in Sources */,
4938
				1428082D107EC0570013E7B2 /* CallData.cpp in Sources */,
5073
				1428082D107EC0570013E7B2 /* CallData.cpp in Sources */,
5074
				0FCEFAB11805CA6D00472CE4 /* InitializeLLVMMac.mm in Sources */,
4939
				1429D8DD0ED2205B00B89619 /* CallFrame.cpp in Sources */,
5075
				1429D8DD0ED2205B00B89619 /* CallFrame.cpp in Sources */,
4940
				0F0B83B014BCF71600885B4F /* CallLinkInfo.cpp in Sources */,
5076
				0F0B83B014BCF71600885B4F /* CallLinkInfo.cpp in Sources */,
4941
				0F93329D14CA7DC30085F3C6 /* CallLinkStatus.cpp in Sources */,
5077
				0F93329D14CA7DC30085F3C6 /* CallLinkStatus.cpp in Sources */,
Lines 5075-5080 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec26
5075
				0F235BD117178E1C00690C7F /* FTLCArgumentGetter.cpp in Sources */,
5211
				0F235BD117178E1C00690C7F /* FTLCArgumentGetter.cpp in Sources */,
5076
				0FEA0A271709623B00BB722C /* FTLCommonValues.cpp in Sources */,
5212
				0FEA0A271709623B00BB722C /* FTLCommonValues.cpp in Sources */,
5077
				0FEA0A0B170513DB00BB722C /* FTLCompile.cpp in Sources */,
5213
				0FEA0A0B170513DB00BB722C /* FTLCompile.cpp in Sources */,
5214
				0FCEFACD1805E75500472CE4 /* LLVMAPI.cpp in Sources */,
5078
				0F235BD317178E1C00690C7F /* FTLExitArgument.cpp in Sources */,
5215
				0F235BD317178E1C00690C7F /* FTLExitArgument.cpp in Sources */,
5079
				0F235BD517178E1C00690C7F /* FTLExitArgumentForOperand.cpp in Sources */,
5216
				0F235BD517178E1C00690C7F /* FTLExitArgumentForOperand.cpp in Sources */,
5080
				0F235BD817178E1C00690C7F /* FTLExitThunkGenerator.cpp in Sources */,
5217
				0F235BD817178E1C00690C7F /* FTLExitThunkGenerator.cpp in Sources */,
Lines 5092-5097 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec27
5092
				0F235BE117178E1C00690C7F /* FTLThunks.cpp in Sources */,
5229
				0F235BE117178E1C00690C7F /* FTLThunks.cpp in Sources */,
5093
				0F235BE317178E1C00690C7F /* FTLValueFormat.cpp in Sources */,
5230
				0F235BE317178E1C00690C7F /* FTLValueFormat.cpp in Sources */,
5094
				0F235BE517178E1C00690C7F /* FTLValueSource.cpp in Sources */,
5231
				0F235BE517178E1C00690C7F /* FTLValueSource.cpp in Sources */,
5232
				0FCEFACA1805E75500472CE4 /* InitializeLLVM.cpp in Sources */,
5095
				147F39CB107EC37600427A48 /* FunctionConstructor.cpp in Sources */,
5233
				147F39CB107EC37600427A48 /* FunctionConstructor.cpp in Sources */,
5096
				0FF0F19F16B72A17005DF95B /* FunctionExecutableDump.cpp in Sources */,
5234
				0FF0F19F16B72A17005DF95B /* FunctionExecutableDump.cpp in Sources */,
5097
				147F39CC107EC37600427A48 /* FunctionPrototype.cpp in Sources */,
5235
				147F39CC107EC37600427A48 /* FunctionPrototype.cpp in Sources */,
Lines 5259-5264 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec28
5259
				95AB83560DA43C3000BC83F3 /* ProfileNode.cpp in Sources */,
5397
				95AB83560DA43C3000BC83F3 /* ProfileNode.cpp in Sources */,
5260
				0FF729AD166AD35C000F5BA3 /* ProfilerBytecode.cpp in Sources */,
5398
				0FF729AD166AD35C000F5BA3 /* ProfilerBytecode.cpp in Sources */,
5261
				0FF729AE166AD35C000F5BA3 /* ProfilerBytecodes.cpp in Sources */,
5399
				0FF729AE166AD35C000F5BA3 /* ProfilerBytecodes.cpp in Sources */,
5400
				0FCEFACB1805E75500472CE4 /* InitializeLLVMPOSIX.cpp in Sources */,
5262
				0F13912916771C33009CCB07 /* ProfilerBytecodeSequence.cpp in Sources */,
5401
				0F13912916771C33009CCB07 /* ProfilerBytecodeSequence.cpp in Sources */,
5263
				0FF729AF166AD35C000F5BA3 /* ProfilerCompilation.cpp in Sources */,
5402
				0FF729AF166AD35C000F5BA3 /* ProfilerCompilation.cpp in Sources */,
5264
				0FF729B0166AD35C000F5BA3 /* ProfilerCompilationKind.cpp in Sources */,
5403
				0FF729B0166AD35C000F5BA3 /* ProfilerCompilationKind.cpp in Sources */,
Lines 5338-5344 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec29
5338
				14E84F9E14EE1ACC00D6D5D4 /* WeakBlock.cpp in Sources */,
5477
				14E84F9E14EE1ACC00D6D5D4 /* WeakBlock.cpp in Sources */,
5339
				14F7256514EE265E00B1652B /* WeakHandleOwner.cpp in Sources */,
5478
				14F7256514EE265E00B1652B /* WeakHandleOwner.cpp in Sources */,
5340
				14E84FA014EE1ACC00D6D5D4 /* WeakSet.cpp in Sources */,
5479
				14E84FA014EE1ACC00D6D5D4 /* WeakSet.cpp in Sources */,
5341
				0F6E5C191724AF3D005C574F /* WebKitLLVMLibraryAnchor.cpp in Sources */,
5342
				0FC8150B14043C0E00CFA603 /* WriteBarrierSupport.cpp in Sources */,
5480
				0FC8150B14043C0E00CFA603 /* WriteBarrierSupport.cpp in Sources */,
5343
				0F24E55817F74EDB00ABB217 /* ValueRecovery.cpp in Sources */,
5481
				0F24E55817F74EDB00ABB217 /* ValueRecovery.cpp in Sources */,
5344
				A7E5AB3A1799E4B200D2833D /* X86Disassembler.cpp in Sources */,
5482
				A7E5AB3A1799E4B200D2833D /* X86Disassembler.cpp in Sources */,
Lines 5361-5366 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec30
5361
/* End PBXSourcesBuildPhase section */
5499
/* End PBXSourcesBuildPhase section */
5362
5500
5363
/* Begin PBXTargetDependency section */
5501
/* Begin PBXTargetDependency section */
5502
		0FCEFABD1805D66300472CE4 /* PBXTargetDependency */ = {
5503
			isa = PBXTargetDependency;
5504
			target = 0FCEFAB51805D61600472CE4 /* llvmForJSC */;
5505
			targetProxy = 0FCEFABC1805D66300472CE4 /* PBXContainerItemProxy */;
5506
		};
5364
		0FF922D314F46B2F0041A24E /* PBXTargetDependency */ = {
5507
		0FF922D314F46B2F0041A24E /* PBXTargetDependency */ = {
5365
			isa = PBXTargetDependency;
5508
			isa = PBXTargetDependency;
5366
			target = 0F4680A914BA7FD900BFE272 /* LLInt Offsets */;
5509
			target = 0F4680A914BA7FD900BFE272 /* LLInt Offsets */;
Lines 5437-5442 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec31
5437
			};
5580
			};
5438
			name = Production;
5581
			name = Production;
5439
		};
5582
		};
5583
		0FCEFAB81805D61600472CE4 /* Debug */ = {
5584
			isa = XCBuildConfiguration;
5585
			baseConfigurationReference = 0FCEFABE1805D86900472CE4 /* LLVMForJSC.xcconfig */;
5586
			buildSettings = {
5587
			};
5588
			name = Debug;
5589
		};
5590
		0FCEFAB91805D61600472CE4 /* Release */ = {
5591
			isa = XCBuildConfiguration;
5592
			baseConfigurationReference = 0FCEFABE1805D86900472CE4 /* LLVMForJSC.xcconfig */;
5593
			buildSettings = {
5594
			};
5595
			name = Release;
5596
		};
5597
		0FCEFABA1805D61600472CE4 /* Profiling */ = {
5598
			isa = XCBuildConfiguration;
5599
			baseConfigurationReference = 0FCEFABE1805D86900472CE4 /* LLVMForJSC.xcconfig */;
5600
			buildSettings = {
5601
			};
5602
			name = Profiling;
5603
		};
5604
		0FCEFABB1805D61600472CE4 /* Production */ = {
5605
			isa = XCBuildConfiguration;
5606
			baseConfigurationReference = 0FCEFABE1805D86900472CE4 /* LLVMForJSC.xcconfig */;
5607
			buildSettings = {
5608
			};
5609
			name = Production;
5610
		};
5440
		0FF922CB14F46B130041A24E /* Debug */ = {
5611
		0FF922CB14F46B130041A24E /* Debug */ = {
5441
			isa = XCBuildConfiguration;
5612
			isa = XCBuildConfiguration;
5442
			baseConfigurationReference = BC021BF2136900C300FC5467 /* ToolExecutable.xcconfig */;
5613
			baseConfigurationReference = BC021BF2136900C300FC5467 /* ToolExecutable.xcconfig */;
Lines 5741-5746 Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj_sec32
5741
			defaultConfigurationIsVisible = 0;
5912
			defaultConfigurationIsVisible = 0;
5742
			defaultConfigurationName = Production;
5913
			defaultConfigurationName = Production;
5743
		};
5914
		};
5915
		0FCEFAB71805D61600472CE4 /* Build configuration list for PBXNativeTarget "llvmForJSC" */ = {
5916
			isa = XCConfigurationList;
5917
			buildConfigurations = (
5918
				0FCEFAB81805D61600472CE4 /* Debug */,
5919
				0FCEFAB91805D61600472CE4 /* Release */,
5920
				0FCEFABA1805D61600472CE4 /* Profiling */,
5921
				0FCEFABB1805D61600472CE4 /* Production */,
5922
			);
5923
			defaultConfigurationIsVisible = 0;
5924
			defaultConfigurationName = Production;
5925
		};
5744
		0FF922CA14F46B130041A24E /* Build configuration list for PBXNativeTarget "JSCLLIntOffsetsExtractor" */ = {
5926
		0FF922CA14F46B130041A24E /* Build configuration list for PBXNativeTarget "JSCLLIntOffsetsExtractor" */ = {
5745
			isa = XCConfigurationList;
5927
			isa = XCConfigurationList;
5746
			buildConfigurations = (
5928
			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 34-41 Source/JavaScriptCore/ftl/FTLCompile.cpp_sec1
34
#include "Disassembler.h"
34
#include "Disassembler.h"
35
#include "FTLJITCode.h"
35
#include "FTLJITCode.h"
36
#include "JITStubs.h"
36
#include "JITStubs.h"
37
#include "LLVMAPI.h"
37
#include "LinkBuffer.h"
38
#include "LinkBuffer.h"
38
#include <wtf/LLVMHeaders.h>
39
39
40
namespace JSC { namespace FTL {
40
namespace JSC { namespace FTL {
41
41
Lines 95-146 void compile(State& state) Source/JavaScriptCore/ftl/FTLCompile.cpp_sec2
95
    char* error = 0;
95
    char* error = 0;
96
    
96
    
97
    LLVMMCJITCompilerOptions options;
97
    LLVMMCJITCompilerOptions options;
98
    LLVMInitializeMCJITCompilerOptions(&options, sizeof(options));
98
    llvm->InitializeMCJITCompilerOptions(&options, sizeof(options));
99
    options.OptLevel = Options::llvmBackendOptimizationLevel();
99
    options.OptLevel = Options::llvmBackendOptimizationLevel();
100
    options.NoFramePointerElim = true;
100
    options.NoFramePointerElim = true;
101
    if (Options::useLLVMSmallCodeModel())
101
    if (Options::useLLVMSmallCodeModel())
102
        options.CodeModel = LLVMCodeModelSmall;
102
        options.CodeModel = LLVMCodeModelSmall;
103
    options.EnableFastISel = Options::enableLLVMFastISel();
103
    options.EnableFastISel = Options::enableLLVMFastISel();
104
    options.MCJMM = LLVMCreateSimpleMCJITMemoryManager(
104
    options.MCJMM = llvm->CreateSimpleMCJITMemoryManager(
105
        &state, mmAllocateCodeSection, mmAllocateDataSection, mmApplyPermissions, mmDestroy);
105
        &state, mmAllocateCodeSection, mmAllocateDataSection, mmApplyPermissions, mmDestroy);
106
    
106
    
107
    LLVMExecutionEngineRef engine;
107
    LLVMExecutionEngineRef engine;
108
    
108
    
109
    if (LLVMCreateMCJITCompilerForModule(&engine, state.module, &options, sizeof(options), &error)) {
109
    if (llvm->CreateMCJITCompilerForModule(&engine, state.module, &options, sizeof(options), &error)) {
110
        dataLog("FATAL: Could not create LLVM execution engine: ", error, "\n");
110
        dataLog("FATAL: Could not create LLVM execution engine: ", error, "\n");
111
        CRASH();
111
        CRASH();
112
    }
112
    }
113
113
114
    LLVMPassManagerBuilderRef passBuilder = LLVMPassManagerBuilderCreate();
114
    LLVMPassManagerBuilderRef passBuilder = llvm->PassManagerBuilderCreate();
115
    LLVMPassManagerBuilderSetOptLevel(passBuilder, Options::llvmOptimizationLevel());
115
    llvm->PassManagerBuilderSetOptLevel(passBuilder, Options::llvmOptimizationLevel());
116
    LLVMPassManagerBuilderSetSizeLevel(passBuilder, Options::llvmSizeLevel());
116
    llvm->PassManagerBuilderSetSizeLevel(passBuilder, Options::llvmSizeLevel());
117
    
117
    
118
    LLVMPassManagerRef functionPasses = LLVMCreateFunctionPassManagerForModule(state.module);
118
    LLVMPassManagerRef functionPasses = llvm->CreateFunctionPassManagerForModule(state.module);
119
    LLVMPassManagerRef modulePasses = LLVMCreatePassManager();
119
    LLVMPassManagerRef modulePasses = llvm->CreatePassManager();
120
    
120
    
121
    LLVMAddTargetData(LLVMGetExecutionEngineTargetData(engine), modulePasses);
121
    llvm->AddTargetData(llvm->GetExecutionEngineTargetData(engine), modulePasses);
122
    
122
    
123
    LLVMPassManagerBuilderPopulateFunctionPassManager(passBuilder, functionPasses);
123
    llvm->PassManagerBuilderPopulateFunctionPassManager(passBuilder, functionPasses);
124
    LLVMPassManagerBuilderPopulateModulePassManager(passBuilder, modulePasses);
124
    llvm->PassManagerBuilderPopulateModulePassManager(passBuilder, modulePasses);
125
    
125
    
126
    LLVMPassManagerBuilderDispose(passBuilder);
126
    llvm->PassManagerBuilderDispose(passBuilder);
127
127
128
    LLVMInitializeFunctionPassManager(functionPasses);
128
    llvm->InitializeFunctionPassManager(functionPasses);
129
    for (LValue function = LLVMGetFirstFunction(state.module); function; function = LLVMGetNextFunction(function))
129
    for (LValue function = llvm->GetFirstFunction(state.module); function; function = llvm->GetNextFunction(function))
130
        LLVMRunFunctionPassManager(functionPasses, function);
130
        llvm->RunFunctionPassManager(functionPasses, function);
131
    LLVMFinalizeFunctionPassManager(functionPasses);
131
    llvm->FinalizeFunctionPassManager(functionPasses);
132
    
132
    
133
    LLVMRunPassManager(modulePasses, state.module);
133
    llvm->RunPassManager(modulePasses, state.module);
134
134
135
    if (DFG::shouldShowDisassembly() || DFG::verboseCompilationEnabled())
135
    if (DFG::shouldShowDisassembly() || DFG::verboseCompilationEnabled())
136
        state.dumpState("after optimization");
136
        state.dumpState("after optimization");
137
    
137
    
138
    // FIXME: Need to add support for the case where JIT memory allocation failed.
138
    // FIXME: Need to add support for the case where JIT memory allocation failed.
139
    // https://bugs.webkit.org/show_bug.cgi?id=113620
139
    // https://bugs.webkit.org/show_bug.cgi?id=113620
140
    state.generatedFunction = reinterpret_cast<GeneratedFunction>(LLVMGetPointerToGlobal(engine, state.function));
140
    state.generatedFunction = reinterpret_cast<GeneratedFunction>(llvm->GetPointerToGlobal(engine, state.function));
141
    LLVMDisposePassManager(functionPasses);
141
    llvm->DisposePassManager(functionPasses);
142
    LLVMDisposePassManager(modulePasses);
142
    llvm->DisposePassManager(modulePasses);
143
    LLVMDisposeExecutionEngine(engine);
143
    llvm->DisposeExecutionEngine(engine);
144
144
145
    if (shouldShowDisassembly()) {
145
    if (shouldShowDisassembly()) {
146
        // FIXME: fourthTier: FTL memory allocator should be able to tell us which of
146
        // FIXME: fourthTier: FTL memory allocator should be able to tell us which of
- 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 40-46 void fail(State& state) Source/JavaScriptCore/ftl/FTLFail.cpp_sec2
40
{
40
{
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
    LLVMDisposeModule(state.module);
43
    llvm->DisposeModule(state.module);
44
}
44
}
45
45
46
} } // namespace JSC::FTL
46
} } // namespace JSC::FTL
- Source/JavaScriptCore/ftl/FTLJITCode.h -1 / +1 lines
Lines 33-39 Source/JavaScriptCore/ftl/FTLJITCode.h_sec1
33
#include "DFGCommonData.h"
33
#include "DFGCommonData.h"
34
#include "FTLOSRExit.h"
34
#include "FTLOSRExit.h"
35
#include "JITCode.h"
35
#include "JITCode.h"
36
#include <wtf/LLVMHeaders.h>
36
#include "LLVMAPI.h"
37
#include <wtf/RefCountedArray.h>
37
#include <wtf/RefCountedArray.h>
38
38
39
namespace JSC { namespace FTL {
39
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 91-97 public: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp_sec1
91
        m_graph.m_dominators.computeIfNecessary(m_graph);
91
        m_graph.m_dominators.computeIfNecessary(m_graph);
92
        
92
        
93
        m_ftlState.module =
93
        m_ftlState.module =
94
            LLVMModuleCreateWithNameInContext(name.data(), m_ftlState.context);
94
            llvm->ModuleCreateWithNameInContext(name.data(), m_ftlState.context);
95
        
95
        
96
        m_ftlState.function = addFunction(
96
        m_ftlState.function = addFunction(
97
            m_ftlState.module, name.data(), functionType(m_out.int64, m_out.intPtr));
97
            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 <wtf/Threading.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 +55 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
    NSBundle *myBundle = [NSBundle bundleForClass:[JSJavaScriptCoreBundleFinder class]];
48
    NSString *path = [[myBundle bundlePath] stringByAppendingPathComponent:@"Libraries/libllvmForJSC.dylib"];
49
    
50
    initializeLLVMPOSIX([path UTF8String]);
51
}
52
53
} // namespace JSC
54
55
#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 +34 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
namespace JSC {
30
31
LLVMAPI* llvm;
32
33
}
34
- Source/JavaScriptCore/llvm/LLVMAPI.h +46 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 "LLVMAPIFunctions.h"
30
#include "LLVMHeaders.h"
31
32
namespace JSC {
33
34
struct LLVMAPI {
35
#define LLVM_API_FUNCTION_DECLARATION(returnType, name, signature) \
36
    returnType (*name) signature;
37
    FOR_EACH_LLVM_API_FUNCTION(LLVM_API_FUNCTION_DECLARATION)
38
#undef LLVM_API_FUNCTION_DECLARATION
39
};
40
41
extern LLVMAPI* llvm;
42
43
} // namespace JSC
44
45
#endif // LLVMAPI_h
46
- 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 / +1 lines
Lines 34-46 Source/JavaScriptCore/runtime/InitializeThreading.cpp_sec1
34
#include "HeapStatistics.h"
34
#include "HeapStatistics.h"
35
#include "Options.h"
35
#include "Options.h"
36
#include "Identifier.h"
36
#include "Identifier.h"
37
#include "InitializeLLVM.h"
37
#include "JSDateMath.h"
38
#include "JSDateMath.h"
38
#include "JSGlobalObject.h"
39
#include "JSGlobalObject.h"
39
#include "JSLock.h"
40
#include "JSLock.h"
40
#include "LLIntData.h"
41
#include "LLIntData.h"
41
#include "WriteBarrier.h"
42
#include "WriteBarrier.h"
42
#include <wtf/dtoa.h>
43
#include <wtf/dtoa.h>
43
#include <wtf/LLVMHeaders.h>
44
#include <wtf/Threading.h>
44
#include <wtf/Threading.h>
45
#include <wtf/dtoa/cached-powers.h>
45
#include <wtf/dtoa/cached-powers.h>
46
46
Lines 70-93 static void initializeThreadingOnce() Source/JavaScriptCore/runtime/InitializeThreading.cpp_sec2
70
#if ENABLE(LLINT)
70
#if ENABLE(LLINT)
71
    LLInt::initialize();
71
    LLInt::initialize();
72
#endif
72
#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
}
73
}
92
74
93
void initializeThreading()
75
void initializeThreading()
- Source/JavaScriptCore/runtime/Options.h -3 / +1 lines
Lines 205-213 typedef OptionRange optionRange; Source/JavaScriptCore/runtime/Options.h_sec1
205
    v(bool, logGC, false) \
205
    v(bool, logGC, false) \
206
    v(unsigned, gcMaxHeapSize, 0) \
206
    v(unsigned, gcMaxHeapSize, 0) \
207
    v(bool, recordGCPauseTimes, false) \
207
    v(bool, recordGCPauseTimes, false) \
208
    v(bool, logHeapStatisticsAtExit, false) \
208
    v(bool, logHeapStatisticsAtExit, false)
209
    \
210
    v(bool, neverDeleteVMInCommandLine, false)
211
209
212
class Options {
210
class Options {
213
public:
211
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 NOBODY (OOPS!).
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-09  Michael Saboff  <msaboff@apple.com>
18
2013-10-09  Michael Saboff  <msaboff@apple.com>
2
19
3
        Change to std::unique_ptr breaks wtf/DataLog.cpp when DATA_LOG_TO_FILE set to 1
20
        Change to std::unique_ptr breaks wtf/DataLog.cpp when DATA_LOG_TO_FILE set to 1
- 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
};

Return to Bug 122566