Still fixing Windows build.
[WebKit-https.git] / JavaScriptCore / ChangeLog
1 2008-08-15  Alexey Proskuryakov  <ap@webkit.org>
2
3         Still fixing Windows build.
4
5         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: Added OpaqueJSString
6         to yet another place.
7
8 2008-08-15  Alexey Proskuryakov  <ap@webkit.org>
9
10         Trying to fix non-Apple builds.
11
12         * ForwardingHeaders/JavaScriptCore/OpaqueJSString.h: Added.
13
14 2008-08-15  Gavin Barraclough  <barraclough@apple.com>
15
16         Reviewed by Geoff Garen.
17
18         Allow JSImmediate to hold 31 bit signed integer immediate values.  The low two bits of a
19         JSValue* are a tag, with the tag value 00 indicating the JSValue* is a pointer to a
20         JSCell.  Non-zero tag values used to indicate that the JSValue* is not a real pointer,
21         but instead holds an immediate value encoded within the pointer.  This patch changes the
22         encoding so both the tag values 01 and 11 indicate the value is a signed integer, allowing
23         a 31 bit value to be stored.  All other immediates are tagged with the value 10, and
24         distinguished by a secondary tag.
25
26         Roughly +2% on SunSpider.
27
28         * kjs/JSImmediate.h: Encoding of JSImmediates has changed - see comment at head of file for
29                              descption of new layout.
30
31 2008-08-15  Alexey Proskuryakov  <ap@webkit.org>
32
33         More build fixes.
34
35         * API/OpaqueJSString.h: Add a namespace to friend declaration to appease MSVC.
36         * API/JSStringRefCF.h: (JSStringCreateWithCFString) Cast UniChar* to UChar* explicitly.
37         * JavaScriptCore.exp: Added OpaqueJSString::create(const KJS::UString&) to fix WebCore build.
38
39 2008-08-15  Alexey Proskuryakov  <ap@webkit.org>
40
41         Build fix.
42
43         * JavaScriptCore.xcodeproj/project.pbxproj: Marked OpaqueJSString as private
44
45         * kjs/identifier.cpp:
46         (KJS::Identifier::checkSameIdentifierTable):
47         * kjs/identifier.h:
48         (KJS::Identifier::add):
49         Since checkSameIdentifierTable is exported for debug build's sake, gcc wants it to be
50         non-inline in release builds, too.
51
52         * JavaScriptCore.exp: Don't export inline OpaqueJSString destructor.
53
54 2008-08-15  Alexey Proskuryakov  <ap@webkit.org>
55
56         Reviewed by Geoff Garen.
57
58         JSStringRef is created context-free, but can get linked to one via an identifier table,
59         breaking an implicit API contract.
60
61         Made JSStringRef point to OpaqueJSString, which is a new string object separate from UString.
62
63         * API/APICast.h: Removed toRef/toJS conversions for JSStringRef, as this is no longer a
64         simple typecast.
65
66         * kjs/identifier.cpp:
67         (KJS::Identifier::checkSameIdentifierTable):
68         * kjs/identifier.h:
69         (KJS::Identifier::add):
70         (KJS::UString::checkSameIdentifierTable):
71         Added assertions to verify that an identifier is not being added to a different JSGlobalData.
72
73         * API/JSObjectRef.cpp:
74         (OpaqueJSPropertyNameArray::OpaqueJSPropertyNameArray): Changed OpaqueJSPropertyNameArray to
75         hold JSStringRefs. This is necessary to avoid having to construct (and leak) a new instance
76         in JSPropertyNameArrayGetNameAtIndex(), now that making a JSStringRef is not just a typecast.
77
78         * API/OpaqueJSString.cpp: Added.
79         (OpaqueJSString::create):
80         (OpaqueJSString::ustring):
81         (OpaqueJSString::identifier):
82         * API/OpaqueJSString.h: Added.
83         (OpaqueJSString::create):
84         (OpaqueJSString::characters):
85         (OpaqueJSString::length):
86         (OpaqueJSString::OpaqueJSString):
87         (OpaqueJSString::~OpaqueJSString):
88
89         * API/JSBase.cpp:
90         (JSEvaluateScript):
91         (JSCheckScriptSyntax):
92         * API/JSCallbackObjectFunctions.h:
93         (KJS::::getOwnPropertySlot):
94         (KJS::::put):
95         (KJS::::deleteProperty):
96         (KJS::::staticValueGetter):
97         (KJS::::callbackGetter):
98         * API/JSStringRef.cpp:
99         (JSStringCreateWithCharacters):
100         (JSStringCreateWithUTF8CString):
101         (JSStringRetain):
102         (JSStringRelease):
103         (JSStringGetLength):
104         (JSStringGetCharactersPtr):
105         (JSStringGetMaximumUTF8CStringSize):
106         (JSStringGetUTF8CString):
107         (JSStringIsEqual):
108         * API/JSStringRefCF.cpp:
109         (JSStringCreateWithCFString):
110         (JSStringCopyCFString):
111         * API/JSValueRef.cpp:
112         (JSValueMakeString):
113         (JSValueToStringCopy):
114         Updated to use OpaqueJSString.
115
116         * GNUmakefile.am:
117         * JavaScriptCore.exp:
118         * JavaScriptCore.pri:
119         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
120         * JavaScriptCore.xcodeproj/project.pbxproj:
121         * JavaScriptCoreSources.bkl:
122         Added OpaqueJSString.
123
124 2008-08-14  Kevin McCullough  <kmccullough@apple.com>
125
126         Reviewed by Tim.
127
128         <rdar://problem/6115819> Notify of profile in console
129         - Profiles now have a unique ID so that they can be linked to the
130         console message that announces that a profile completed.
131
132         * profiler/HeavyProfile.cpp: 
133         (KJS::HeavyProfile::HeavyProfile):
134         * profiler/Profile.cpp:
135         (KJS::Profile::create):
136         (KJS::Profile::Profile):
137         * profiler/Profile.h:
138         (KJS::Profile::uid):
139         * profiler/ProfileGenerator.cpp:
140         (KJS::ProfileGenerator::create):
141         (KJS::ProfileGenerator::ProfileGenerator):
142         * profiler/ProfileGenerator.h:
143         * profiler/Profiler.cpp:
144         (KJS::Profiler::startProfiling):
145         * profiler/TreeProfile.cpp:
146         (KJS::TreeProfile::create):
147         (KJS::TreeProfile::TreeProfile):
148         * profiler/TreeProfile.h:
149
150 2008-08-13  Geoffrey Garen  <ggaren@apple.com>
151
152         Reviewed by Oliver Hunt.
153         
154         Nixed a PIC branch from JSObject::getOwnPropertySlot, by forcing
155         fillGetterProperty, which references a global function pointer,
156         out-of-line.
157         
158         .2% SunSpider speedup, 4.3% access-nbody speedup, 8.7% speedup on a
159         custom property access benchmark for objects with one property.
160
161         * kjs/JSObject.cpp:
162         (KJS::JSObject::fillGetterPropertySlot):
163
164 2008-08-13  Alp Toker  <alp@nuanti.com>
165
166         Reviewed by Eric Seidel.
167
168         https://bugs.webkit.org/show_bug.cgi?id=20349
169         WTF::initializeThreading() fails if threading is already initialized
170
171         Fix threading initialization logic to support cases where
172         g_thread_init() has already been called elsewhere.
173
174         Resolves database-related crashers reported in several applications.
175
176         * wtf/ThreadingGtk.cpp:
177         (WTF::initializeThreading):
178
179 2008-08-13  Brad Hughes <bhughes@trolltech.com>
180
181         Reviewed by Simon.
182
183         Fix compiling of QtWebKit in release mode with the Intel C++ Compiler for Linux
184
185         The latest upgrade of the intel compiler allows us to compile all of
186         Qt with optimizations enabled (yay!).
187
188         * JavaScriptCore.pro:
189
190 2008-08-12  Oliver Hunt  <oliver@apple.com>
191
192         Reviewed by Geoff Garen.
193
194         Add peephole optimisation to 'op_not... jfalse...' (eg. if(!...) )
195
196         This is a very slight win in sunspider, and a fairly substantial win
197         in hot code that does if(!...), etc.
198
199         * VM/CodeGenerator.cpp:
200         (KJS::CodeGenerator::retrieveLastUnaryOp):
201         (KJS::CodeGenerator::rewindBinaryOp):
202         (KJS::CodeGenerator::rewindUnaryOp):
203         (KJS::CodeGenerator::emitJumpIfFalse):
204         * VM/CodeGenerator.h:
205
206 2008-08-12  Dan Bernstein  <mitz@apple.com>
207
208         - JavaScriptCore part of <rdar://problem/6121636>
209           Make fast*alloc() abort() on failure and add "try" variants that
210           return NULL on failure.
211
212         Reviewed by Darin Adler.
213
214         * JavaScriptCore.exp: Exported tryFastCalloc().
215         * VM/RegisterFile.h:
216         (KJS::RegisterFile::RegisterFile): Removed an ASSERT().
217         * kjs/JSArray.cpp:
218         (KJS::JSArray::putSlowCase): Changed to use tryFastRealloc().
219         (KJS::JSArray::increaseVectorLength): Ditto.
220         * kjs/ustring.cpp:
221         (KJS::allocChars): Changed to use tryFastMalloc().
222         (KJS::reallocChars): Changed to use tryFastRealloc().
223         * wtf/FastMalloc.cpp:
224         (WTF::fastZeroedMalloc): Removed null checking of fastMalloc()'s result
225         and removed extra call to InvokeNewHook().
226         (WTF::tryFastZeroedMalloc): Added. Uses tryFastMalloc().
227         (WTF::tryFastMalloc): Renamed fastMalloc() to this.
228         (WTF::fastMalloc): Added. This version abort()s if allocation fails.
229         (WTF::tryFastCalloc): Renamed fastCalloc() to this.
230         (WTF::fastCalloc): Added. This version abort()s if allocation fails.
231         (WTF::tryFastRealloc): Renamed fastRealloc() to this.
232         (WTF::fastRealloc): Added. This version abort()s if allocation fails.
233         (WTF::do_malloc): Made this a function template. When the abortOnFailure
234         template parameter is set, the function abort()s on failure to allocate.
235         Otherwise, it sets errno to ENOMEM and returns zero.
236         (WTF::TCMallocStats::fastMalloc): Defined to abort() on failure.
237         (WTF::TCMallocStats::tryFastMalloc): Added. Does not abort() on
238         failure.
239         (WTF::TCMallocStats::fastCalloc): Defined to abort() on failure.
240         (WTF::TCMallocStats::tryFastCalloc): Added. Does not abort() on
241         failure.
242         (WTF::TCMallocStats::fastRealloc): Defined to abort() on failure.
243         (WTF::TCMallocStats::tryFastRealloc): Added. Does not abort() on
244         failure.
245         * wtf/FastMalloc.h: Declared the "try" variants.
246
247 2008-08-11  Adam Roben  <aroben@apple.com>
248
249         Move WTF::notFound into its own header so that it can be used
250         independently of Vector
251
252         Rubberstamped by Darin Adler.
253
254         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
255         * JavaScriptCore.xcodeproj/project.pbxproj:
256         Added NotFound.h to the project.
257         * wtf/NotFound.h: Added. Moved the notFound constant here...
258         * wtf/Vector.h: ...from here.
259
260 2008-08-11  Alexey Proskuryakov  <ap@webkit.org>
261
262         Reviewed by Mark Rowe.
263
264         <rdar://problem/6130393> REGRESSION: PhotoBooth hangs after launching under TOT Webkit
265
266         * API/JSContextRef.cpp: (JSGlobalContextRelease): Corrected a comment.
267
268         * kjs/collector.cpp: (KJS::Heap::~Heap): Ensure that JSGlobalData is not deleted while
269         sweeping the heap.
270
271 == Rolled over to ChangeLog-2008-08-10 ==