source: webkit/trunk/JavaScriptCore/JavaScriptCore.pri@ 53170

Last change on this file since 53170 was 52970, checked in by Laszlo Gombos, 15 years ago

2010-01-07 Laszlo Gombos <Laszlo Gombos>

Reviewed by Gavin Barraclough.

[Symbian] Port ARM traditional JIT Trampolines to RVCT
https://bugs.webkit.org/show_bug.cgi?id=30552

Take the GCC implementation and mechanically convert
it to RVCT syntax.

Use 'bx rX' instead of 'mov pc, rX' when it is available.

Developed in cooperation with Iain Campbell and Gabor Loki.

  • JavaScriptCore.pri: Extra step to generate RVCT stubs. The script generation intentionally executed all the time not just for RVCT targets.
  • create_rvct_stubs: Added. Perl script to expand precompiler macros for RVCT assembler - the template is defined in JITStubs.cpp.
  • jit/JITStubs.cpp: (JSC::ctiTrampoline): (JSC::ctiVMThrowTrampoline): (JSC::ctiOpThrowNotCaught):
File size: 8.3 KB
Line 
1# JavaScriptCore - Qt4 build info
2VPATH += $$PWD
3
4CONFIG(debug, debug|release) {
5 isEmpty(GENERATED_SOURCES_DIR):GENERATED_SOURCES_DIR = generated$${QMAKE_DIR_SEP}debug
6 OBJECTS_DIR = obj/debug
7} else { # Release
8 isEmpty(GENERATED_SOURCES_DIR):GENERATED_SOURCES_DIR = generated$${QMAKE_DIR_SEP}release
9 OBJECTS_DIR = obj/release
10}
11
12symbian: {
13 # Need to guarantee this comes before system includes of /epoc32/include
14 MMP_RULES += "USERINCLUDE ../JavaScriptCore/profiler"
15}
16
17INCLUDEPATH = \
18 $$PWD \
19 $$PWD/.. \
20 $$PWD/assembler \
21 $$PWD/bytecode \
22 $$PWD/bytecompiler \
23 $$PWD/debugger \
24 $$PWD/interpreter \
25 $$PWD/jit \
26 $$PWD/parser \
27 $$PWD/profiler \
28 $$PWD/runtime \
29 $$PWD/wrec \
30 $$PWD/wtf \
31 $$PWD/wtf/unicode \
32 $$PWD/yarr \
33 $$PWD/API \
34 $$PWD/ForwardingHeaders \
35 $$GENERATED_SOURCES_DIR \
36 $$INCLUDEPATH
37
38DEFINES += BUILDING_QT__ BUILDING_JavaScriptCore BUILDING_WTF
39
40GENERATED_SOURCES_DIR_SLASH = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}
41win32-* {
42 LIBS += -lwinmm
43}
44contains(JAVASCRIPTCORE_JIT,yes) {
45 DEFINES+=ENABLE_JIT=1
46 DEFINES+=ENABLE_YARR_JIT=1
47 DEFINES+=ENABLE_YARR=1
48}
49contains(JAVASCRIPTCORE_JIT,no) {
50 DEFINES+=ENABLE_JIT=0
51 DEFINES+=ENABLE_YARR_JIT=0
52 DEFINES+=ENABLE_YARR=0
53}
54
55# Rules when JIT enabled (not disabled)
56!contains(DEFINES, ENABLE_JIT=0) {
57 linux*-g++*:greaterThan(QT_GCC_MAJOR_VERSION,3):greaterThan(QT_GCC_MINOR_VERSION,0) {
58 QMAKE_CXXFLAGS += -fno-stack-protector
59 QMAKE_CFLAGS += -fno-stack-protector
60 }
61}
62
63wince* {
64 INCLUDEPATH += $$QT_SOURCE_TREE/src/3rdparty/ce-compat
65 SOURCES += $$QT_SOURCE_TREE/src/3rdparty/ce-compat/ce_time.c
66 DEFINES += WINCEBASIC
67}
68
69include(pcre/pcre.pri)
70
71LUT_FILES += \
72 runtime/ArrayPrototype.cpp \
73 runtime/DatePrototype.cpp \
74 runtime/JSONObject.cpp \
75 runtime/MathObject.cpp \
76 runtime/NumberConstructor.cpp \
77 runtime/RegExpConstructor.cpp \
78 runtime/RegExpObject.cpp \
79 runtime/StringPrototype.cpp
80
81KEYWORDLUT_FILES += \
82 parser/Keywords.table
83
84JSCBISON += \
85 parser/Grammar.y
86
87RVCT_STUB_FILES += \
88 jit/JITStubs.cpp
89
90SOURCES += \
91 API/JSBase.cpp \
92 API/JSCallbackConstructor.cpp \
93 API/JSCallbackFunction.cpp \
94 API/JSCallbackObject.cpp \
95 API/JSClassRef.cpp \
96 API/JSContextRef.cpp \
97 API/JSObjectRef.cpp \
98 API/JSStringRef.cpp \
99 API/JSValueRef.cpp \
100 API/OpaqueJSString.cpp \
101 assembler/ARMAssembler.cpp \
102 assembler/MacroAssemblerARM.cpp \
103 bytecode/CodeBlock.cpp \
104 bytecode/JumpTable.cpp \
105 bytecode/Opcode.cpp \
106 bytecode/SamplingTool.cpp \
107 bytecode/StructureStubInfo.cpp \
108 bytecompiler/BytecodeGenerator.cpp \
109 bytecompiler/NodesCodegen.cpp \
110 debugger/DebuggerActivation.cpp \
111 debugger/DebuggerCallFrame.cpp \
112 debugger/Debugger.cpp \
113 interpreter/CallFrame.cpp \
114 interpreter/Interpreter.cpp \
115 interpreter/RegisterFile.cpp \
116 jit/ExecutableAllocatorPosix.cpp \
117 jit/ExecutableAllocatorSymbian.cpp \
118 jit/ExecutableAllocatorWin.cpp \
119 jit/ExecutableAllocator.cpp \
120 jit/JITArithmetic.cpp \
121 jit/JITCall.cpp \
122 jit/JIT.cpp \
123 jit/JITOpcodes.cpp \
124 jit/JITPropertyAccess.cpp \
125 jit/JITStubs.cpp \
126 parser/Lexer.cpp \
127 parser/Nodes.cpp \
128 parser/ParserArena.cpp \
129 parser/Parser.cpp \
130 profiler/Profile.cpp \
131 profiler/ProfileGenerator.cpp \
132 profiler/ProfileNode.cpp \
133 profiler/Profiler.cpp \
134 runtime/ArgList.cpp \
135 runtime/Arguments.cpp \
136 runtime/ArrayConstructor.cpp \
137 runtime/ArrayPrototype.cpp \
138 runtime/BooleanConstructor.cpp \
139 runtime/BooleanObject.cpp \
140 runtime/BooleanPrototype.cpp \
141 runtime/CallData.cpp \
142 runtime/Collector.cpp \
143 runtime/CommonIdentifiers.cpp \
144 runtime/Completion.cpp \
145 runtime/ConstructData.cpp \
146 runtime/DateConstructor.cpp \
147 runtime/DateConversion.cpp \
148 runtime/DateInstance.cpp \
149 runtime/DatePrototype.cpp \
150 runtime/ErrorConstructor.cpp \
151 runtime/Error.cpp \
152 runtime/ErrorInstance.cpp \
153 runtime/ErrorPrototype.cpp \
154 runtime/ExceptionHelpers.cpp \
155 runtime/Executable.cpp \
156 runtime/FunctionConstructor.cpp \
157 runtime/FunctionPrototype.cpp \
158 runtime/GetterSetter.cpp \
159 runtime/GlobalEvalFunction.cpp \
160 runtime/Identifier.cpp \
161 runtime/InitializeThreading.cpp \
162 runtime/InternalFunction.cpp \
163 runtime/JSActivation.cpp \
164 runtime/JSAPIValueWrapper.cpp \
165 runtime/JSArray.cpp \
166 runtime/JSByteArray.cpp \
167 runtime/JSCell.cpp \
168 runtime/JSFunction.cpp \
169 runtime/JSGlobalData.cpp \
170 runtime/JSGlobalObject.cpp \
171 runtime/JSGlobalObjectFunctions.cpp \
172 runtime/JSImmediate.cpp \
173 runtime/JSLock.cpp \
174 runtime/JSNotAnObject.cpp \
175 runtime/JSNumberCell.cpp \
176 runtime/JSObject.cpp \
177 runtime/JSONObject.cpp \
178 runtime/JSPropertyNameIterator.cpp \
179 runtime/JSStaticScopeObject.cpp \
180 runtime/JSString.cpp \
181 runtime/JSValue.cpp \
182 runtime/JSVariableObject.cpp \
183 runtime/JSWrapperObject.cpp \
184 runtime/LiteralParser.cpp \
185 runtime/Lookup.cpp \
186 runtime/MarkStackPosix.cpp \
187 runtime/MarkStackSymbian.cpp \
188 runtime/MarkStackWin.cpp \
189 runtime/MarkStack.cpp \
190 runtime/MathObject.cpp \
191 runtime/NativeErrorConstructor.cpp \
192 runtime/NativeErrorPrototype.cpp \
193 runtime/NumberConstructor.cpp \
194 runtime/NumberObject.cpp \
195 runtime/NumberPrototype.cpp \
196 runtime/ObjectConstructor.cpp \
197 runtime/ObjectPrototype.cpp \
198 runtime/Operations.cpp \
199 runtime/PropertyDescriptor.cpp \
200 runtime/PropertyNameArray.cpp \
201 runtime/PropertySlot.cpp \
202 runtime/PrototypeFunction.cpp \
203 runtime/RegExpConstructor.cpp \
204 runtime/RegExp.cpp \
205 runtime/RegExpObject.cpp \
206 runtime/RegExpPrototype.cpp \
207 runtime/ScopeChain.cpp \
208 runtime/SmallStrings.cpp \
209 runtime/StringConstructor.cpp \
210 runtime/StringObject.cpp \
211 runtime/StringPrototype.cpp \
212 runtime/StructureChain.cpp \
213 runtime/Structure.cpp \
214 runtime/TimeoutChecker.cpp \
215 runtime/UString.cpp \
216 runtime/UStringImpl.cpp \
217 wtf/Assertions.cpp \
218 wtf/ByteArray.cpp \
219 wtf/CurrentTime.cpp \
220 wtf/DateMath.cpp \
221 wtf/dtoa.cpp \
222 wtf/FastMalloc.cpp \
223 wtf/HashTable.cpp \
224 wtf/MainThread.cpp \
225 wtf/qt/MainThreadQt.cpp \
226 wtf/qt/ThreadingQt.cpp \
227 wtf/RandomNumber.cpp \
228 wtf/RefCountedLeakCounter.cpp \
229 wtf/ThreadingNone.cpp \
230 wtf/Threading.cpp \
231 wtf/TypeTraits.cpp \
232 wtf/unicode/CollatorDefault.cpp \
233 wtf/unicode/icu/CollatorICU.cpp \
234 wtf/unicode/UTF8.cpp \
235 yarr/RegexCompiler.cpp \
236 yarr/RegexInterpreter.cpp \
237 yarr/RegexJIT.cpp
238
239!contains(DEFINES, USE_SYSTEM_MALLOC) {
240 SOURCES += wtf/TCSystemAlloc.cpp
241}
242
243# GENERATOR 1-A: LUT creator
244lut.output = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.lut.h
245lut.commands = perl $$PWD/create_hash_table ${QMAKE_FILE_NAME} -i > ${QMAKE_FILE_OUT}
246lut.depend = ${QMAKE_FILE_NAME}
247lut.input = LUT_FILES
248lut.CONFIG += no_link
249addExtraCompiler(lut)
250
251# GENERATOR 1-B: particular LUT creator (for 1 file only)
252keywordlut.output = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}Lexer.lut.h
253keywordlut.commands = perl $$PWD/create_hash_table ${QMAKE_FILE_NAME} -i > ${QMAKE_FILE_OUT}
254keywordlut.depend = ${QMAKE_FILE_NAME}
255keywordlut.input = KEYWORDLUT_FILES
256keywordlut.CONFIG += no_link
257addExtraCompiler(keywordlut)
258
259# GENERATOR 2: bison grammar
260jscbison.output = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.cpp
261jscbison.commands = bison -d -p jscyy ${QMAKE_FILE_NAME} -o $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.tab.c && $(MOVE) $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.tab.c ${QMAKE_FILE_OUT} && $(MOVE) $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.tab.h $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.h
262jscbison.depend = ${QMAKE_FILE_NAME}
263jscbison.input = JSCBISON
264jscbison.variable_out = GENERATED_SOURCES
265jscbison.dependency_type = TYPE_C
266jscbison.CONFIG = target_predeps
267addExtraCompilerWithHeader(jscbison)
268
269# GENERATOR 3: JIT Stub functions for RVCT
270rvctstubs.output = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}Generated${QMAKE_FILE_BASE}_RVCT.h
271rvctstubs.commands = perl $$PWD/create_rvct_stubs ${QMAKE_FILE_NAME} -i > ${QMAKE_FILE_OUT}
272rvctstubs.depend = ${QMAKE_FILE_NAME}
273rvctstubs.input = RVCT_STUB_FILES
274rvctstubs.CONFIG += no_link
275addExtraCompiler(rvctstubs)
Note: See TracBrowser for help on using the repository browser.