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