431a961a5dbe2141a88064c058e1f7d7185ff536
[WebKit-https.git] / JavaScriptCore / ChangeLog
1 2008-08-17  Cameron Zwarich  <cwzwarich@uwaterloo.ca>
2
3         Reviewed by Maciej.
4
5         Bug 20419: Remove op_jless
6         <https://bugs.webkit.org/show_bug.cgi?id=20419>
7
8         Remove op_jless, which is rarely used now that we have op_loop_if_less.
9
10         * VM/CodeBlock.cpp:
11         (KJS::CodeBlock::dump):
12         * VM/CodeGenerator.cpp:
13         (KJS::CodeGenerator::emitJumpIfTrue):
14         * VM/Machine.cpp:
15         (KJS::Machine::privateExecute):
16         * VM/Opcode.h:
17
18 2008-08-17  Cameron Zwarich  <cwzwarich@uwaterloo.ca>
19
20         Reviewed by Dan Bernstein.
21
22         Fix a typo in r35807 that is also causing build failures for
23         non-AllInOne builds.
24
25         * kjs/NumberConstructor.cpp:
26
27 2008-08-17  Geoffrey Garen  <ggaren@apple.com>
28
29         Reviewed by Cameron Zwarich.
30
31         Made room for a free word in JSCell.
32         
33         SunSpider says no change.
34         
35         I changed JSCallbackObjectData, Arguments, JSArray, and RegExpObject to
36         store auxiliary data in a secondary structure.
37
38         I changed InternalFunction to store the function's name in the property
39         map.
40         
41         I changed JSGlobalObjectData to use a virtual destructor, so WebCore's
42         JSDOMWindowBaseData could inherit from it safely. (It's a strange design
43         for JSDOMWindowBase to allocate an object that JSGlobalObject deletes,
44         but that's really our only option, given the size constraint.)
45         
46         I also added a bunch of compile-time ASSERTs, and removed lots of comments
47         in JSObject.h because they were often out of date, and they got in the
48         way of reading what was actually going on.
49         
50         Also renamed JSArray::getLength to JSArray::length, to match our style
51         guidelines.
52
53 2008-08-16  Geoffrey Garen  <ggaren@apple.com>
54
55         Reviewed by Oliver Hunt.
56         
57         Sped up property access for array.length and string.length by adding a
58         mechanism for returning a temporary value directly instead of returning
59         a pointer to a function that retrieves the value.
60         
61         Also removed some unused cruft from PropertySlot.
62         
63         SunSpider says 0.5% - 1.2% faster.
64
65         NOTE: This optimization is not a good idea in general, because it's
66         actually a pessimization in the case of resolve for assignment,
67         and it may get in the way of other optimizations in the future.
68         
69 2008-08-16  Dan Bernstein  <mitz@apple.com>
70
71         Reviewed by Geoffrey Garen.
72
73         Disable dead code stripping in debug builds.
74
75         * Configurations/Base.xcconfig:
76         * JavaScriptCore.xcodeproj/project.pbxproj:
77
78 2008-08-15  Mark Rowe  <mrowe@apple.com>
79
80         Reviewed by Oliver Hunt.
81
82         <rdar://problem/6143072> FastMallocZone's enumeration code makes assumptions about handling of remote memory regions that overlap
83
84         * wtf/FastMalloc.cpp:
85         (WTF::TCMalloc_Central_FreeList::enumerateFreeObjects): Don't directly compare pointers mapped into the local process with
86         a pointer that has not been mapped.  Instead, calculate a local address for the pointer and compare with that.
87         (WTF::TCMallocStats::FreeObjectFinder::findFreeObjects): Pass in the remote address of the central free list so that it can
88         be used when calculating local addresses.
89         (WTF::TCMallocStats::FastMallocZone::enumerate): Ditto.
90
91 2008-08-15  Mark Rowe  <mrowe@apple.com>
92
93         Rubber-stamped by Geoff Garen.
94
95         <rdar://problem/6139914> Please include a _debug version of JavaScriptCore framework
96
97         * Configurations/Base.xcconfig: Factor out the debug-only settings so that they can shared
98         between the Debug configuration and debug Production variant.
99         * JavaScriptCore.xcodeproj/project.pbxproj: Enable the debug variant.
100
101 2008-08-15  Mark Rowe  <mrowe@apple.com>
102
103         Fix the 64-bit build.
104
105         Add extra cast to avoid warnings about loss of precision when casting from
106         JSValue* to an integer type.
107
108         * kjs/JSImmediate.h:
109         (KJS::JSImmediate::intValue):
110         (KJS::JSImmediate::uintValue):
111
112 2008-08-15  Alexey Proskuryakov  <ap@webkit.org>
113
114         Still fixing Windows build.
115
116         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: Added OpaqueJSString
117         to yet another place.
118
119 2008-08-15  Alexey Proskuryakov  <ap@webkit.org>
120
121         Trying to fix non-Apple builds.
122
123         * ForwardingHeaders/JavaScriptCore/OpaqueJSString.h: Added.
124
125 2008-08-15  Gavin Barraclough  <barraclough@apple.com>
126
127         Reviewed by Geoff Garen.
128
129         Allow JSImmediate to hold 31 bit signed integer immediate values.  The low two bits of a
130         JSValue* are a tag, with the tag value 00 indicating the JSValue* is a pointer to a
131         JSCell.  Non-zero tag values used to indicate that the JSValue* is not a real pointer,
132         but instead holds an immediate value encoded within the pointer.  This patch changes the
133         encoding so both the tag values 01 and 11 indicate the value is a signed integer, allowing
134         a 31 bit value to be stored.  All other immediates are tagged with the value 10, and
135         distinguished by a secondary tag.
136
137         Roughly +2% on SunSpider.
138
139         * kjs/JSImmediate.h: Encoding of JSImmediates has changed - see comment at head of file for
140                              descption of new layout.
141
142 2008-08-15  Alexey Proskuryakov  <ap@webkit.org>
143
144         More build fixes.
145
146         * API/OpaqueJSString.h: Add a namespace to friend declaration to appease MSVC.
147         * API/JSStringRefCF.h: (JSStringCreateWithCFString) Cast UniChar* to UChar* explicitly.
148         * JavaScriptCore.exp: Added OpaqueJSString::create(const KJS::UString&) to fix WebCore build.
149
150 2008-08-15  Alexey Proskuryakov  <ap@webkit.org>
151
152         Build fix.
153
154         * JavaScriptCore.xcodeproj/project.pbxproj: Marked OpaqueJSString as private
155
156         * kjs/identifier.cpp:
157         (KJS::Identifier::checkSameIdentifierTable):
158         * kjs/identifier.h:
159         (KJS::Identifier::add):
160         Since checkSameIdentifierTable is exported for debug build's sake, gcc wants it to be
161         non-inline in release builds, too.
162
163         * JavaScriptCore.exp: Don't export inline OpaqueJSString destructor.
164
165 2008-08-15  Alexey Proskuryakov  <ap@webkit.org>
166
167         Reviewed by Geoff Garen.
168
169         JSStringRef is created context-free, but can get linked to one via an identifier table,
170         breaking an implicit API contract.
171
172         Made JSStringRef point to OpaqueJSString, which is a new string object separate from UString.
173
174         * API/APICast.h: Removed toRef/toJS conversions for JSStringRef, as this is no longer a
175         simple typecast.
176
177         * kjs/identifier.cpp:
178         (KJS::Identifier::checkSameIdentifierTable):
179         * kjs/identifier.h:
180         (KJS::Identifier::add):
181         (KJS::UString::checkSameIdentifierTable):
182         Added assertions to verify that an identifier is not being added to a different JSGlobalData.
183
184         * API/JSObjectRef.cpp:
185         (OpaqueJSPropertyNameArray::OpaqueJSPropertyNameArray): Changed OpaqueJSPropertyNameArray to
186         hold JSStringRefs. This is necessary to avoid having to construct (and leak) a new instance
187         in JSPropertyNameArrayGetNameAtIndex(), now that making a JSStringRef is not just a typecast.
188
189         * API/OpaqueJSString.cpp: Added.
190         (OpaqueJSString::create):
191         (OpaqueJSString::ustring):
192         (OpaqueJSString::identifier):
193         * API/OpaqueJSString.h: Added.
194         (OpaqueJSString::create):
195         (OpaqueJSString::characters):
196         (OpaqueJSString::length):
197         (OpaqueJSString::OpaqueJSString):
198         (OpaqueJSString::~OpaqueJSString):
199
200         * API/JSBase.cpp:
201         (JSEvaluateScript):
202         (JSCheckScriptSyntax):
203         * API/JSCallbackObjectFunctions.h:
204         (KJS::::getOwnPropertySlot):
205         (KJS::::put):
206         (KJS::::deleteProperty):
207         (KJS::::staticValueGetter):
208         (KJS::::callbackGetter):
209         * API/JSStringRef.cpp:
210         (JSStringCreateWithCharacters):
211         (JSStringCreateWithUTF8CString):
212         (JSStringRetain):
213         (JSStringRelease):
214         (JSStringGetLength):
215         (JSStringGetCharactersPtr):
216         (JSStringGetMaximumUTF8CStringSize):
217         (JSStringGetUTF8CString):
218         (JSStringIsEqual):
219         * API/JSStringRefCF.cpp:
220         (JSStringCreateWithCFString):
221         (JSStringCopyCFString):
222         * API/JSValueRef.cpp:
223         (JSValueMakeString):
224         (JSValueToStringCopy):
225         Updated to use OpaqueJSString.
226
227         * GNUmakefile.am:
228         * JavaScriptCore.exp:
229         * JavaScriptCore.pri:
230         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
231         * JavaScriptCore.xcodeproj/project.pbxproj:
232         * JavaScriptCoreSources.bkl:
233         Added OpaqueJSString.
234
235 2008-08-14  Kevin McCullough  <kmccullough@apple.com>
236
237         Reviewed by Tim.
238
239         <rdar://problem/6115819> Notify of profile in console
240         - Profiles now have a unique ID so that they can be linked to the
241         console message that announces that a profile completed.
242
243         * profiler/HeavyProfile.cpp: 
244         (KJS::HeavyProfile::HeavyProfile):
245         * profiler/Profile.cpp:
246         (KJS::Profile::create):
247         (KJS::Profile::Profile):
248         * profiler/Profile.h:
249         (KJS::Profile::uid):
250         * profiler/ProfileGenerator.cpp:
251         (KJS::ProfileGenerator::create):
252         (KJS::ProfileGenerator::ProfileGenerator):
253         * profiler/ProfileGenerator.h:
254         * profiler/Profiler.cpp:
255         (KJS::Profiler::startProfiling):
256         * profiler/TreeProfile.cpp:
257         (KJS::TreeProfile::create):
258         (KJS::TreeProfile::TreeProfile):
259         * profiler/TreeProfile.h:
260
261 2008-08-13  Geoffrey Garen  <ggaren@apple.com>
262
263         Reviewed by Oliver Hunt.
264         
265         Nixed a PIC branch from JSObject::getOwnPropertySlot, by forcing
266         fillGetterProperty, which references a global function pointer,
267         out-of-line.
268         
269         .2% SunSpider speedup, 4.3% access-nbody speedup, 8.7% speedup on a
270         custom property access benchmark for objects with one property.
271
272         * kjs/JSObject.cpp:
273         (KJS::JSObject::fillGetterPropertySlot):
274
275 2008-08-13  Alp Toker  <alp@nuanti.com>
276
277         Reviewed by Eric Seidel.
278
279         https://bugs.webkit.org/show_bug.cgi?id=20349
280         WTF::initializeThreading() fails if threading is already initialized
281
282         Fix threading initialization logic to support cases where
283         g_thread_init() has already been called elsewhere.
284
285         Resolves database-related crashers reported in several applications.
286
287         * wtf/ThreadingGtk.cpp:
288         (WTF::initializeThreading):
289
290 2008-08-13  Brad Hughes <bhughes@trolltech.com>
291
292         Reviewed by Simon.
293
294         Fix compiling of QtWebKit in release mode with the Intel C++ Compiler for Linux
295
296         The latest upgrade of the intel compiler allows us to compile all of
297         Qt with optimizations enabled (yay!).
298
299         * JavaScriptCore.pro:
300
301 2008-08-12  Oliver Hunt  <oliver@apple.com>
302
303         Reviewed by Geoff Garen.
304
305         Add peephole optimisation to 'op_not... jfalse...' (eg. if(!...) )
306
307         This is a very slight win in sunspider, and a fairly substantial win
308         in hot code that does if(!...), etc.
309
310         * VM/CodeGenerator.cpp:
311         (KJS::CodeGenerator::retrieveLastUnaryOp):
312         (KJS::CodeGenerator::rewindBinaryOp):
313         (KJS::CodeGenerator::rewindUnaryOp):
314         (KJS::CodeGenerator::emitJumpIfFalse):
315         * VM/CodeGenerator.h:
316
317 2008-08-12  Dan Bernstein  <mitz@apple.com>
318
319         - JavaScriptCore part of <rdar://problem/6121636>
320           Make fast*alloc() abort() on failure and add "try" variants that
321           return NULL on failure.
322
323         Reviewed by Darin Adler.
324
325         * JavaScriptCore.exp: Exported tryFastCalloc().
326         * VM/RegisterFile.h:
327         (KJS::RegisterFile::RegisterFile): Removed an ASSERT().
328         * kjs/JSArray.cpp:
329         (KJS::JSArray::putSlowCase): Changed to use tryFastRealloc().
330         (KJS::JSArray::increaseVectorLength): Ditto.
331         * kjs/ustring.cpp:
332         (KJS::allocChars): Changed to use tryFastMalloc().
333         (KJS::reallocChars): Changed to use tryFastRealloc().
334         * wtf/FastMalloc.cpp:
335         (WTF::fastZeroedMalloc): Removed null checking of fastMalloc()'s result
336         and removed extra call to InvokeNewHook().
337         (WTF::tryFastZeroedMalloc): Added. Uses tryFastMalloc().
338         (WTF::tryFastMalloc): Renamed fastMalloc() to this.
339         (WTF::fastMalloc): Added. This version abort()s if allocation fails.
340         (WTF::tryFastCalloc): Renamed fastCalloc() to this.
341         (WTF::fastCalloc): Added. This version abort()s if allocation fails.
342         (WTF::tryFastRealloc): Renamed fastRealloc() to this.
343         (WTF::fastRealloc): Added. This version abort()s if allocation fails.
344         (WTF::do_malloc): Made this a function template. When the abortOnFailure
345         template parameter is set, the function abort()s on failure to allocate.
346         Otherwise, it sets errno to ENOMEM and returns zero.
347         (WTF::TCMallocStats::fastMalloc): Defined to abort() on failure.
348         (WTF::TCMallocStats::tryFastMalloc): Added. Does not abort() on
349         failure.
350         (WTF::TCMallocStats::fastCalloc): Defined to abort() on failure.
351         (WTF::TCMallocStats::tryFastCalloc): Added. Does not abort() on
352         failure.
353         (WTF::TCMallocStats::fastRealloc): Defined to abort() on failure.
354         (WTF::TCMallocStats::tryFastRealloc): Added. Does not abort() on
355         failure.
356         * wtf/FastMalloc.h: Declared the "try" variants.
357
358 2008-08-11  Adam Roben  <aroben@apple.com>
359
360         Move WTF::notFound into its own header so that it can be used
361         independently of Vector
362
363         Rubberstamped by Darin Adler.
364
365         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
366         * JavaScriptCore.xcodeproj/project.pbxproj:
367         Added NotFound.h to the project.
368         * wtf/NotFound.h: Added. Moved the notFound constant here...
369         * wtf/Vector.h: ...from here.
370
371 2008-08-11  Alexey Proskuryakov  <ap@webkit.org>
372
373         Reviewed by Mark Rowe.
374
375         <rdar://problem/6130393> REGRESSION: PhotoBooth hangs after launching under TOT Webkit
376
377         * API/JSContextRef.cpp: (JSGlobalContextRelease): Corrected a comment.
378
379         * kjs/collector.cpp: (KJS::Heap::~Heap): Ensure that JSGlobalData is not deleted while
380         sweeping the heap.
381
382 == Rolled over to ChangeLog-2008-08-10 ==