source: webkit/trunk/JavaScriptCore/JavaScriptCore.pro@ 59187

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

JavaScriptCore: Patch by Gavin Barraclough.

Reviewed by Steve Falkenburg and Jon Honeycutt.

REGRESSION (r57900-57919): 3% PLT Regression from moving strings into WTF.
https://bugs.webkit.org/show_bug.cgi?id=38930
<rdar://problem/7937188>

When the String classes were moved from WebCore to WTF, it meant that on Windows, all operations
on Strings in WebCore had to cross a DLL boundary (from WebKit.dll to JavaScript.dll).

We fix this by refactoring some of the WTF string code, so the code in AtomicString, StringImpl, and
WTFString can be built by both WebCore and WTF, and we don't need to talk across a DLL to do operations
on Strings.

handled in WebCore.

  • JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Remove the post-build step that was added

here (the post build step is in JavaScriptCoreCommon.vsprops).

  • JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: Copy the three cpp files that need to be compiled

by WebCore into the WebKitOutputDir directory.

  • JavaScriptCore.vcproj/WTF/WTF.vcproj: Add the StringStatics file.
  • JavaScriptCore.vcproj/jsc/jsc.vcproj: Add the three WTF string cpp files to this project.
  • JavaScriptCore.vcproj/jsc/jscCommon.vsprops: Remove the need to link against WTF.lib (since jsc links against JavaScriptCore).
  • JavaScriptCore.xcodeproj/project.pbxproj: Add the StringStatics file.
  • wtf/text/AtomicString.cpp: Moved code to StringStatics.
  • wtf/text/StringImpl.cpp: Ditto.
  • wtf/text/StringStatics.cpp: Added. Move functions in WTF Strings that define static variables to here, so

the rest of the files can be compiled in WebCore.

(WebCore::StringImpl::empty): Moved from StringImpl.cpp to here.
(WebCore::AtomicString::init): Moved from AtomicString.cpp to here.

WebCore: Patch by Gavin Barraclough.

Reviewed by Steve Falkenburg and Jon Honeycutt.

REGRESSION (r57900-57919): 3% PLT Regression from moving strings into WTF.
https://bugs.webkit.org/show_bug.cgi?id=38930
<rdar://problem/7937188>

Add the WTF strings into the WebCore vcproj, from their copied location in $(WebKitOutputDir).

No new tests because no change in behavior.

  • WebCore.vcproj/WebCore.vcproj:
File size: 7.3 KB
Line 
1# JavaScriptCore - qmake build info
2CONFIG += building-libs
3include($$PWD/../WebKit.pri)
4include(JavaScriptCore.pri)
5
6TEMPLATE = lib
7CONFIG += staticlib
8# Don't use JavaScriptCore as the target name. qmake would create a JavaScriptCore.vcproj for msvc
9# which already exists as a directory
10TARGET = $$JAVASCRIPTCORE_TARGET
11DESTDIR = $$JAVASCRIPTCORE_DESTDIR
12QT += core
13QT -= gui
14
15CONFIG += depend_includepath
16
17contains(QT_CONFIG, embedded):CONFIG += embedded
18
19CONFIG(QTDIR_build) {
20 # Make sure we compile both debug and release on mac when inside Qt.
21 # This line was extracted from qbase.pri instead of including the whole file
22 win32|mac:!macx-xcode:CONFIG += debug_and_release
23} else {
24 CONFIG(debug, debug|release) {
25 OBJECTS_DIR = obj/debug
26 } else { # Release
27 OBJECTS_DIR = obj/release
28 }
29 # Make sure that build_all follows the build_all config in WebCore
30 mac:contains(QT_CONFIG, qt_framework):!CONFIG(webkit_no_framework):!build_pass:CONFIG += build_all
31}
32
33# WebCore adds these config only when in a standalone build.
34# qbase.pri takes care of that when in a QTDIR_build
35# Here we add the config for both cases since we don't include qbase.pri
36contains(QT_CONFIG, reduce_exports):CONFIG += hide_symbols
37unix:contains(QT_CONFIG, reduce_relocations):CONFIG += bsymbolic_functions
38
39CONFIG(QTDIR_build) {
40 # Remove the following 2 lines if you want debug information in JavaScriptCore
41 CONFIG -= separate_debug_info
42 CONFIG += no_debug_info
43}
44
45# Pick up 3rdparty libraries from INCLUDE/LIB just like with MSVC
46win32-g++ {
47 TMPPATH = $$quote($$(INCLUDE))
48 QMAKE_INCDIR_POST += $$split(TMPPATH,";")
49 TMPPATH = $$quote($$(LIB))
50 QMAKE_LIBDIR_POST += $$split(TMPPATH,";")
51}
52
53*-g++*:QMAKE_CXXFLAGS_RELEASE -= -O2
54*-g++*:QMAKE_CXXFLAGS_RELEASE += -O3
55
56# Rules when JIT enabled (not disabled)
57!contains(DEFINES, ENABLE_JIT=0) {
58 linux*-g++*:greaterThan(QT_GCC_MAJOR_VERSION,3):greaterThan(QT_GCC_MINOR_VERSION,0) {
59 QMAKE_CXXFLAGS += -fno-stack-protector
60 QMAKE_CFLAGS += -fno-stack-protector
61 }
62}
63
64wince* {
65 SOURCES += $$QT_SOURCE_TREE/src/3rdparty/ce-compat/ce_time.c
66}
67
68include(pcre/pcre.pri)
69
70SOURCES += \
71 API/JSBase.cpp \
72 API/JSCallbackConstructor.cpp \
73 API/JSCallbackFunction.cpp \
74 API/JSCallbackObject.cpp \
75 API/JSClassRef.cpp \
76 API/JSContextRef.cpp \
77 API/JSObjectRef.cpp \
78 API/JSStringRef.cpp \
79 API/JSValueRef.cpp \
80 API/OpaqueJSString.cpp \
81 assembler/ARMAssembler.cpp \
82 assembler/MacroAssemblerARM.cpp \
83 bytecode/CodeBlock.cpp \
84 bytecode/JumpTable.cpp \
85 bytecode/Opcode.cpp \
86 bytecode/SamplingTool.cpp \
87 bytecode/StructureStubInfo.cpp \
88 bytecompiler/BytecodeGenerator.cpp \
89 bytecompiler/NodesCodegen.cpp \
90 debugger/DebuggerActivation.cpp \
91 debugger/DebuggerCallFrame.cpp \
92 debugger/Debugger.cpp \
93 interpreter/CallFrame.cpp \
94 interpreter/Interpreter.cpp \
95 interpreter/RegisterFile.cpp \
96 jit/ExecutableAllocatorFixedVMPool.cpp \
97 jit/ExecutableAllocatorPosix.cpp \
98 jit/ExecutableAllocatorSymbian.cpp \
99 jit/ExecutableAllocatorWin.cpp \
100 jit/ExecutableAllocator.cpp \
101 jit/JITArithmetic.cpp \
102 jit/JITArithmetic32_64.cpp \
103 jit/JITCall.cpp \
104 jit/JIT.cpp \
105 jit/JITOpcodes.cpp \
106 jit/JITOpcodes32_64.cpp \
107 jit/JITPropertyAccess.cpp \
108 jit/JITPropertyAccess32_64.cpp \
109 jit/JITStubs.cpp \
110 jit/ThunkGenerators.cpp \
111 parser/Lexer.cpp \
112 parser/Nodes.cpp \
113 parser/ParserArena.cpp \
114 parser/Parser.cpp \
115 profiler/Profile.cpp \
116 profiler/ProfileGenerator.cpp \
117 profiler/ProfileNode.cpp \
118 profiler/Profiler.cpp \
119 runtime/ArgList.cpp \
120 runtime/Arguments.cpp \
121 runtime/ArrayConstructor.cpp \
122 runtime/ArrayPrototype.cpp \
123 runtime/BooleanConstructor.cpp \
124 runtime/BooleanObject.cpp \
125 runtime/BooleanPrototype.cpp \
126 runtime/CallData.cpp \
127 runtime/Collector.cpp \
128 runtime/CommonIdentifiers.cpp \
129 runtime/Completion.cpp \
130 runtime/ConstructData.cpp \
131 runtime/DateConstructor.cpp \
132 runtime/DateConversion.cpp \
133 runtime/DateInstance.cpp \
134 runtime/DatePrototype.cpp \
135 runtime/ErrorConstructor.cpp \
136 runtime/Error.cpp \
137 runtime/ErrorInstance.cpp \
138 runtime/ErrorPrototype.cpp \
139 runtime/ExceptionHelpers.cpp \
140 runtime/Executable.cpp \
141 runtime/FunctionConstructor.cpp \
142 runtime/FunctionPrototype.cpp \
143 runtime/GetterSetter.cpp \
144 runtime/GlobalEvalFunction.cpp \
145 runtime/Identifier.cpp \
146 runtime/InitializeThreading.cpp \
147 runtime/InternalFunction.cpp \
148 runtime/JSActivation.cpp \
149 runtime/JSAPIValueWrapper.cpp \
150 runtime/JSArray.cpp \
151 runtime/JSByteArray.cpp \
152 runtime/JSCell.cpp \
153 runtime/JSFunction.cpp \
154 runtime/JSGlobalData.cpp \
155 runtime/JSGlobalObject.cpp \
156 runtime/JSGlobalObjectFunctions.cpp \
157 runtime/JSImmediate.cpp \
158 runtime/JSLock.cpp \
159 runtime/JSNotAnObject.cpp \
160 runtime/JSNumberCell.cpp \
161 runtime/JSObject.cpp \
162 runtime/JSONObject.cpp \
163 runtime/JSPropertyNameIterator.cpp \
164 runtime/JSStaticScopeObject.cpp \
165 runtime/JSString.cpp \
166 runtime/JSValue.cpp \
167 runtime/JSVariableObject.cpp \
168 runtime/JSWrapperObject.cpp \
169 runtime/LiteralParser.cpp \
170 runtime/Lookup.cpp \
171 runtime/MarkStackPosix.cpp \
172 runtime/MarkStackSymbian.cpp \
173 runtime/MarkStackWin.cpp \
174 runtime/MarkStack.cpp \
175 runtime/MathObject.cpp \
176 runtime/NativeErrorConstructor.cpp \
177 runtime/NativeErrorPrototype.cpp \
178 runtime/NumberConstructor.cpp \
179 runtime/NumberObject.cpp \
180 runtime/NumberPrototype.cpp \
181 runtime/ObjectConstructor.cpp \
182 runtime/ObjectPrototype.cpp \
183 runtime/Operations.cpp \
184 runtime/PropertyDescriptor.cpp \
185 runtime/PropertyNameArray.cpp \
186 runtime/PropertySlot.cpp \
187 runtime/PrototypeFunction.cpp \
188 runtime/RegExpConstructor.cpp \
189 runtime/RegExp.cpp \
190 runtime/RegExpObject.cpp \
191 runtime/RegExpPrototype.cpp \
192 runtime/RopeImpl.cpp \
193 runtime/ScopeChain.cpp \
194 runtime/SmallStrings.cpp \
195 runtime/StringConstructor.cpp \
196 runtime/StringObject.cpp \
197 runtime/StringPrototype.cpp \
198 runtime/StructureChain.cpp \
199 runtime/Structure.cpp \
200 runtime/TimeoutChecker.cpp \
201 runtime/UString.cpp \
202 wtf/Assertions.cpp \
203 wtf/ByteArray.cpp \
204 wtf/CurrentTime.cpp \
205 wtf/DateMath.cpp \
206 wtf/dtoa.cpp \
207 wtf/FastMalloc.cpp \
208 wtf/HashTable.cpp \
209 wtf/MD5.cpp \
210 wtf/MainThread.cpp \
211 wtf/qt/MainThreadQt.cpp \
212 wtf/qt/StringQt.cpp \
213 wtf/qt/ThreadingQt.cpp \
214 wtf/RandomNumber.cpp \
215 wtf/RefCountedLeakCounter.cpp \
216 wtf/symbian/BlockAllocatorSymbian.cpp \
217 wtf/ThreadingNone.cpp \
218 wtf/Threading.cpp \
219 wtf/TypeTraits.cpp \
220 wtf/WTFThreadData.cpp \
221 wtf/text/AtomicString.cpp \
222 wtf/text/CString.cpp \
223 wtf/text/StringImpl.cpp \
224 wtf/text/StringStatics.cpp \
225 wtf/text/WTFString.cpp \
226 wtf/unicode/CollatorDefault.cpp \
227 wtf/unicode/icu/CollatorICU.cpp \
228 wtf/unicode/UTF8.cpp \
229 yarr/RegexCompiler.cpp \
230 yarr/RegexInterpreter.cpp \
231 yarr/RegexJIT.cpp
232
233# Generated files, simply list them for JavaScriptCore
234SOURCES += \
235 $${JSC_GENERATED_SOURCES_DIR}/Grammar.cpp
236
237!contains(DEFINES, USE_SYSTEM_MALLOC) {
238 SOURCES += wtf/TCSystemAlloc.cpp
239}
240
241# Disable C++0x mode in JSC for those who enabled it in their Qt's mkspec
242*-g++*:QMAKE_CXXFLAGS -= -std=c++0x -std=gnu++0x
Note: See TracBrowser for help on using the repository browser.