source: webkit/trunk/Source/JavaScriptCore/Target.pri@ 129713

Last change on this file since 129713 was 129713, checked in by [email protected], 13 years ago

jneq_ptr shouldn't have a pointer
https://bugs.webkit.org/show_bug.cgi?id=97739

Reviewed by Oliver Hunt.

Slamming pointers directly into bytecode is sometimes cool, but in this case it's
unwieldy and confusing. Switched the instruction to use an enum instead. This has
zero effect on code gen behavior in the JITs. In the LLInt, there is now more
indirection, but that doesn't affect benchmarks.

  • CMakeLists.txt:
  • GNUmakefile.list.am:
  • JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Target.pri:
  • bytecode/Instruction.h:

(JSC::Instruction::Instruction):
(Instruction):

  • bytecode/SpecialPointer.cpp: Added.

(JSC):
(JSC::actualPointerFor):

  • bytecode/SpecialPointer.h: Added.

(JSC):
(JSC::pointerIsFunction):
(JSC::pointerIsCell):

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::emitJumpIfNotFunctionCall):
(JSC::BytecodeGenerator::emitJumpIfNotFunctionApply):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::parseBlock):

  • jit/JITOpcodes.cpp:

(JSC::JIT::emit_op_jneq_ptr):

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::emit_op_jneq_ptr):

  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::reset):
(JSC):

  • runtime/JSGlobalObject.h:

(JSGlobalObject):
(JSC::JSGlobalObject::actualPointerFor):

File size: 8.3 KB
Line 
1# -------------------------------------------------------------------
2# Target file for the JavaScriptSource library
3#
4# See 'Tools/qmake/README' for an overview of the build system
5# -------------------------------------------------------------------
6
7TEMPLATE = lib
8TARGET = JavaScriptCore
9
10include(JavaScriptCore.pri)
11
12WEBKIT += wtf
13QT += core
14QT -= gui
15
16CONFIG += staticlib
17
18*-g++*:QMAKE_CXXFLAGS_RELEASE -= -O2
19*-g++*:QMAKE_CXXFLAGS_RELEASE += -O3
20
21# Rules when JIT enabled (not disabled)
22!contains(DEFINES, ENABLE_JIT=0) {
23 linux*-g++*:greaterThan(QT_GCC_MAJOR_VERSION,3):greaterThan(QT_GCC_MINOR_VERSION,0) {
24 QMAKE_CXXFLAGS += -fno-stack-protector
25 QMAKE_CFLAGS += -fno-stack-protector
26 }
27}
28
29include(yarr/yarr.pri)
30
31INSTALLDEPS += all
32
33SOURCES += \
34 API/JSBase.cpp \
35 API/JSCallbackConstructor.cpp \
36 API/JSCallbackFunction.cpp \
37 API/JSCallbackObject.cpp \
38 API/JSClassRef.cpp \
39 API/JSContextRef.cpp \
40 API/JSObjectRef.cpp \
41 API/JSStringRef.cpp \
42 API/JSValueRef.cpp \
43 API/JSWeakObjectMapRefPrivate.cpp \
44 API/OpaqueJSString.cpp \
45 assembler/ARMAssembler.cpp \
46 assembler/ARMv7Assembler.cpp \
47 assembler/LinkBuffer.cpp \
48 assembler/MacroAssemblerARM.cpp \
49 assembler/MacroAssemblerSH4.cpp \
50 bytecode/ArrayProfile.cpp \
51 bytecode/CallLinkInfo.cpp \
52 bytecode/CallLinkStatus.cpp \
53 bytecode/CodeBlock.cpp \
54 bytecode/DFGExitProfile.cpp \
55 bytecode/ExecutionCounter.cpp \
56 bytecode/GetByIdStatus.cpp \
57 bytecode/JumpTable.cpp \
58 bytecode/LazyOperandValueProfile.cpp \
59 bytecode/MethodCallLinkInfo.cpp \
60 bytecode/MethodCallLinkStatus.cpp \
61 bytecode/MethodOfGettingAValueProfile.cpp \
62 bytecode/Opcode.cpp \
63 bytecode/PolymorphicPutByIdList.cpp \
64 bytecode/PutByIdStatus.cpp \
65 bytecode/ResolveGlobalStatus.cpp \
66 bytecode/SamplingTool.cpp \
67 bytecode/SpecialPointer.cpp \
68 bytecode/SpeculatedType.cpp \
69 bytecode/StructureStubClearingWatchpoint.cpp \
70 bytecode/StructureStubInfo.cpp \
71 bytecode/Watchpoint.cpp \
72 bytecompiler/BytecodeGenerator.cpp \
73 bytecompiler/NodesCodegen.cpp \
74 heap/CopiedSpace.cpp \
75 heap/ConservativeRoots.cpp \
76 heap/DFGCodeBlocks.cpp \
77 heap/WeakSet.cpp \
78 heap/WeakHandleOwner.cpp \
79 heap/WeakBlock.cpp \
80 heap/HandleSet.cpp \
81 heap/HandleStack.cpp \
82 heap/BlockAllocator.cpp \
83 heap/GCThreadSharedData.cpp \
84 heap/Heap.cpp \
85 heap/HeapTimer.cpp \
86 heap/IncrementalSweeper.cpp \
87 heap/JITStubRoutineSet.cpp \
88 heap/MachineStackMarker.cpp \
89 heap/MarkStack.cpp \
90 heap/MarkedAllocator.cpp \
91 heap/MarkedBlock.cpp \
92 heap/MarkedSpace.cpp \
93 heap/SlotVisitor.cpp \
94 heap/VTableSpectrum.cpp \
95 heap/WriteBarrierSupport.cpp \
96 debugger/DebuggerActivation.cpp \
97 debugger/DebuggerCallFrame.cpp \
98 debugger/Debugger.cpp \
99 dfg/DFGAbstractState.cpp \
100 dfg/DFGArgumentsSimplificationPhase.cpp \
101 dfg/DFGArrayMode.cpp \
102 dfg/DFGAssemblyHelpers.cpp \
103 dfg/DFGByteCodeParser.cpp \
104 dfg/DFGCapabilities.cpp \
105 dfg/DFGCFAPhase.cpp \
106 dfg/DFGCFGSimplificationPhase.cpp \
107 dfg/DFGConstantFoldingPhase.cpp \
108 dfg/DFGCorrectableJumpPoint.cpp \
109 dfg/DFGCSEPhase.cpp \
110 dfg/DFGDisassembler.cpp \
111 dfg/DFGDominators.cpp \
112 dfg/DFGDriver.cpp \
113 dfg/DFGFixupPhase.cpp \
114 dfg/DFGGraph.cpp \
115 dfg/DFGJITCompiler.cpp \
116 dfg/DFGMinifiedNode.cpp \
117 dfg/DFGNodeFlags.cpp \
118 dfg/DFGOperations.cpp \
119 dfg/DFGOSREntry.cpp \
120 dfg/DFGOSRExit.cpp \
121 dfg/DFGOSRExitCompiler.cpp \
122 dfg/DFGOSRExitCompiler64.cpp \
123 dfg/DFGOSRExitCompiler32_64.cpp \
124 dfg/DFGPhase.cpp \
125 dfg/DFGPredictionPropagationPhase.cpp \
126 dfg/DFGRepatch.cpp \
127 dfg/DFGSpeculativeJIT.cpp \
128 dfg/DFGSpeculativeJIT32_64.cpp \
129 dfg/DFGSpeculativeJIT64.cpp \
130 dfg/DFGStructureCheckHoistingPhase.cpp \
131 dfg/DFGThunks.cpp \
132 dfg/DFGValueSource.cpp \
133 dfg/DFGVariableEvent.cpp \
134 dfg/DFGVariableEventStream.cpp \
135 dfg/DFGValidate.cpp \
136 dfg/DFGVirtualRegisterAllocationPhase.cpp \
137 interpreter/AbstractPC.cpp \
138 interpreter/CallFrame.cpp \
139 interpreter/Interpreter.cpp \
140 interpreter/RegisterFile.cpp \
141 jit/ExecutableAllocatorFixedVMPool.cpp \
142 jit/ExecutableAllocator.cpp \
143 jit/HostCallReturnValue.cpp \
144 jit/GCAwareJITStubRoutine.cpp \
145 jit/JITArithmetic.cpp \
146 jit/JITArithmetic32_64.cpp \
147 jit/JITCall.cpp \
148 jit/JITCall32_64.cpp \
149 jit/JIT.cpp \
150 jit/JITExceptions.cpp \
151 jit/JITOpcodes.cpp \
152 jit/JITOpcodes32_64.cpp \
153 jit/JITPropertyAccess.cpp \
154 jit/JITPropertyAccess32_64.cpp \
155 jit/JITStubRoutine.cpp \
156 jit/JITStubs.cpp \
157 jit/JumpReplacementWatchpoint.cpp \
158 jit/ThunkGenerators.cpp \
159 parser/Lexer.cpp \
160 parser/Nodes.cpp \
161 parser/ParserArena.cpp \
162 parser/Parser.cpp \
163 parser/SourceProviderCache.cpp \
164 profiler/Profile.cpp \
165 profiler/ProfileGenerator.cpp \
166 profiler/ProfileNode.cpp \
167 profiler/Profiler.cpp \
168 runtime/ArgList.cpp \
169 runtime/Arguments.cpp \
170 runtime/ArrayConstructor.cpp \
171 runtime/ArrayPrototype.cpp \
172 runtime/BooleanConstructor.cpp \
173 runtime/BooleanObject.cpp \
174 runtime/BooleanPrototype.cpp \
175 runtime/CallData.cpp \
176 runtime/CommonIdentifiers.cpp \
177 runtime/Completion.cpp \
178 runtime/ConstructData.cpp \
179 runtime/DateConstructor.cpp \
180 runtime/DateConversion.cpp \
181 runtime/DateInstance.cpp \
182 runtime/DatePrototype.cpp \
183 runtime/ErrorConstructor.cpp \
184 runtime/Error.cpp \
185 runtime/ErrorInstance.cpp \
186 runtime/ErrorPrototype.cpp \
187 runtime/ExceptionHelpers.cpp \
188 runtime/Executable.cpp \
189 runtime/FunctionConstructor.cpp \
190 runtime/FunctionPrototype.cpp \
191 runtime/GCActivityCallback.cpp \
192 runtime/GetterSetter.cpp \
193 runtime/Options.cpp \
194 runtime/Identifier.cpp \
195 runtime/InitializeThreading.cpp \
196 runtime/InternalFunction.cpp \
197 runtime/JSActivation.cpp \
198 runtime/JSAPIValueWrapper.cpp \
199 runtime/JSArray.cpp \
200 runtime/JSCell.cpp \
201 runtime/JSDateMath.cpp \
202 runtime/JSFunction.cpp \
203 runtime/JSBoundFunction.cpp \
204 runtime/JSGlobalData.cpp \
205 runtime/JSGlobalObject.cpp \
206 runtime/JSGlobalObjectFunctions.cpp \
207 runtime/JSProxy.cpp \
208 runtime/JSLock.cpp \
209 runtime/JSNotAnObject.cpp \
210 runtime/JSObject.cpp \
211 runtime/JSONObject.cpp \
212 runtime/JSPropertyNameIterator.cpp \
213 runtime/JSSegmentedVariableObject.cpp \
214 runtime/JSWithScope.cpp \
215 runtime/JSNameScope.cpp \
216 runtime/JSScope.cpp \
217 runtime/JSString.cpp \
218 runtime/JSStringJoiner.cpp \
219 runtime/JSSymbolTableObject.cpp \
220 runtime/JSValue.cpp \
221 runtime/JSVariableObject.cpp \
222 runtime/JSWrapperObject.cpp \
223 runtime/LiteralParser.cpp \
224 runtime/Lookup.cpp \
225 runtime/MathObject.cpp \
226 runtime/MemoryStatistics.cpp \
227 runtime/NameConstructor.cpp \
228 runtime/NameInstance.cpp \
229 runtime/NamePrototype.cpp \
230 runtime/NativeErrorConstructor.cpp \
231 runtime/NativeErrorPrototype.cpp \
232 runtime/NumberConstructor.cpp \
233 runtime/NumberObject.cpp \
234 runtime/NumberPrototype.cpp \
235 runtime/ObjectConstructor.cpp \
236 runtime/ObjectPrototype.cpp \
237 runtime/Operations.cpp \
238 runtime/PropertyDescriptor.cpp \
239 runtime/PropertyNameArray.cpp \
240 runtime/PropertySlot.cpp \
241 runtime/RegExpConstructor.cpp \
242 runtime/RegExpCachedResult.cpp \
243 runtime/RegExpMatchesArray.cpp \
244 runtime/RegExp.cpp \
245 runtime/RegExpObject.cpp \
246 runtime/RegExpPrototype.cpp \
247 runtime/RegExpCache.cpp \
248 runtime/SamplingCounter.cpp \
249 runtime/SmallStrings.cpp \
250 runtime/SparseArrayValueMap.cpp \
251 runtime/StrictEvalActivation.cpp \
252 runtime/StringConstructor.cpp \
253 runtime/StringObject.cpp \
254 runtime/StringPrototype.cpp \
255 runtime/StringRecursionChecker.cpp \
256 runtime/StructureChain.cpp \
257 runtime/Structure.cpp \
258 runtime/SymbolTable.cpp \
259 runtime/TimeoutChecker.cpp \
260 tools/CodeProfile.cpp \
261 tools/CodeProfiling.cpp \
262 yarr/YarrJIT.cpp \
263
264HEADERS += $$files(*.h, true)
265
266*sh4* {
267 QMAKE_CXXFLAGS += -mieee -w
268 QMAKE_CFLAGS += -mieee -w
269}
270
271lessThan(QT_GCC_MAJOR_VERSION, 5) {
272 # GCC 4.5 and before
273 lessThan(QT_GCC_MINOR_VERSION, 6) {
274 # Disable C++0x mode in JSC for those who enabled it in their Qt's mkspec.
275 *-g++*:QMAKE_CXXFLAGS -= -std=c++0x -std=gnu++0x
276 }
277}
Note: See TracBrowser for help on using the repository browser.