Fix typos in ChangeLog
[WebKit-https.git] / JavaScriptCore / ChangeLog
1 2008-01-15  Sam Weinig  <sam@webkit.org>
2
3         Reviewed by Geoffrey Garen.
4
5         Fix <rdar://problem/5595552> r27608 introduced a 20% increase in JS binary size, 4% increase in WebCore binary size
6
7         - This changes the way JS functions that use Lookup tables are handled.  Instead of using
8           one class per function, which allowed specialization of the virtual callAsFunction
9           method, we now use one class, PrototypeFunction, which takes a pointer to a static
10           function to use as the implementation.  This significantly decreases the binary size
11           of JavaScriptCore (about 145k on an Intel only build) while still keeping some of the
12           speedup r27608 garnered (SunSpider says this is 1.005x as slow, which should leave some
13           wiggle room from the original 1% speedup) and keeps the functions implementations in separate
14           functions to help with optimizations.
15
16         * JavaScriptCore.exp:
17         * JavaScriptCore.xcodeproj/project.pbxproj:
18         * kjs/array_object.cpp:
19         (KJS::arrayProtoFuncToString):
20         (KJS::arrayProtoFuncToLocaleString):
21         (KJS::arrayProtoFuncJoin):
22         (KJS::arrayProtoFuncConcat):
23         (KJS::arrayProtoFuncPop):
24         (KJS::arrayProtoFuncPush):
25         (KJS::arrayProtoFuncReverse):
26         (KJS::arrayProtoFuncShift):
27         (KJS::arrayProtoFuncSlice):
28         (KJS::arrayProtoFuncSort):
29         (KJS::arrayProtoFuncSplice):
30         (KJS::arrayProtoFuncUnShift):
31         (KJS::arrayProtoFuncFilter):
32         (KJS::arrayProtoFuncMap):
33         (KJS::arrayProtoFuncEvery):
34         (KJS::arrayProtoFuncForEach):
35         (KJS::arrayProtoFuncSome):
36         (KJS::arrayProtoFuncIndexOf):
37         (KJS::arrayProtoFuncLastIndexOf):
38         * kjs/array_object.h:
39         * kjs/date_object.cpp:
40         (KJS::DatePrototype::getOwnPropertySlot):
41         (KJS::dateProtoFuncToString):
42         (KJS::dateProtoFuncToUTCString):
43         (KJS::dateProtoFuncToDateString):
44         (KJS::dateProtoFuncToTimeString):
45         (KJS::dateProtoFuncToLocaleString):
46         (KJS::dateProtoFuncToLocaleDateString):
47         (KJS::dateProtoFuncToLocaleTimeString):
48         (KJS::dateProtoFuncValueOf):
49         (KJS::dateProtoFuncGetTime):
50         (KJS::dateProtoFuncGetFullYear):
51         (KJS::dateProtoFuncGetUTCFullYear):
52         (KJS::dateProtoFuncToGMTString):
53         (KJS::dateProtoFuncGetMonth):
54         (KJS::dateProtoFuncGetUTCMonth):
55         (KJS::dateProtoFuncGetDate):
56         (KJS::dateProtoFuncGetUTCDate):
57         (KJS::dateProtoFuncGetDay):
58         (KJS::dateProtoFuncGetUTCDay):
59         (KJS::dateProtoFuncGetHours):
60         (KJS::dateProtoFuncGetUTCHours):
61         (KJS::dateProtoFuncGetMinutes):
62         (KJS::dateProtoFuncGetUTCMinutes):
63         (KJS::dateProtoFuncGetSeconds):
64         (KJS::dateProtoFuncGetUTCSeconds):
65         (KJS::dateProtoFuncGetMilliSeconds):
66         (KJS::dateProtoFuncGetUTCMilliseconds):
67         (KJS::dateProtoFuncGetTimezoneOffset):
68         (KJS::dateProtoFuncSetTime):
69         (KJS::dateProtoFuncSetMilliSeconds):
70         (KJS::dateProtoFuncSetUTCMilliseconds):
71         (KJS::dateProtoFuncSetSeconds):
72         (KJS::dateProtoFuncSetUTCSeconds):
73         (KJS::dateProtoFuncSetMinutes):
74         (KJS::dateProtoFuncSetUTCMinutes):
75         (KJS::dateProtoFuncSetHours):
76         (KJS::dateProtoFuncSetUTCHours):
77         (KJS::dateProtoFuncSetDate):
78         (KJS::dateProtoFuncSetUTCDate):
79         (KJS::dateProtoFuncSetMonth):
80         (KJS::dateProtoFuncSetUTCMonth):
81         (KJS::dateProtoFuncSetFullYear):
82         (KJS::dateProtoFuncSetUTCFullYear):
83         (KJS::dateProtoFuncSetYear):
84         (KJS::dateProtoFuncGetYear):
85         * kjs/date_object.h:
86         * kjs/function.cpp:
87         (KJS::PrototypeFunction::PrototypeFunction):
88         (KJS::PrototypeFunction::callAsFunction):
89         * kjs/function.h:
90         * kjs/lookup.h:
91         (KJS::HashEntry::):
92         (KJS::staticFunctionGetter):
93         * kjs/math_object.cpp:
94         (KJS::mathProtoFuncAbs):
95         (KJS::mathProtoFuncACos):
96         (KJS::mathProtoFuncASin):
97         (KJS::mathProtoFuncATan):
98         (KJS::mathProtoFuncATan2):
99         (KJS::mathProtoFuncCeil):
100         (KJS::mathProtoFuncCos):
101         (KJS::mathProtoFuncExp):
102         (KJS::mathProtoFuncFloor):
103         (KJS::mathProtoFuncLog):
104         (KJS::mathProtoFuncMax):
105         (KJS::mathProtoFuncMin):
106         (KJS::mathProtoFuncPow):
107         (KJS::mathProtoFuncRandom):
108         (KJS::mathProtoFuncRound):
109         (KJS::mathProtoFuncSin):
110         (KJS::mathProtoFuncSqrt):
111         (KJS::mathProtoFuncTan):
112         * kjs/math_object.h:
113         * kjs/string_object.cpp:
114         (KJS::stringProtoFuncToString):
115         (KJS::stringProtoFuncValueOf):
116         (KJS::stringProtoFuncCharAt):
117         (KJS::stringProtoFuncCharCodeAt):
118         (KJS::stringProtoFuncConcat):
119         (KJS::stringProtoFuncIndexOf):
120         (KJS::stringProtoFuncLastIndexOf):
121         (KJS::stringProtoFuncMatch):
122         (KJS::stringProtoFuncSearch):
123         (KJS::stringProtoFuncReplace):
124         (KJS::stringProtoFuncSlice):
125         (KJS::stringProtoFuncSplit):
126         (KJS::stringProtoFuncSubstr):
127         (KJS::stringProtoFuncSubstring):
128         (KJS::stringProtoFuncToLowerCase):
129         (KJS::stringProtoFuncToUpperCase):
130         (KJS::stringProtoFuncToLocaleLowerCase):
131         (KJS::stringProtoFuncToLocaleUpperCase):
132         (KJS::stringProtoFuncLocaleCompare):
133         (KJS::stringProtoFuncBig):
134         (KJS::stringProtoFuncSmall):
135         (KJS::stringProtoFuncBlink):
136         (KJS::stringProtoFuncBold):
137         (KJS::stringProtoFuncFixed):
138         (KJS::stringProtoFuncItalics):
139         (KJS::stringProtoFuncStrike):
140         (KJS::stringProtoFuncSub):
141         (KJS::stringProtoFuncSup):
142         (KJS::stringProtoFuncFontcolor):
143         (KJS::stringProtoFuncFontsize):
144         (KJS::stringProtoFuncAnchor):
145         (KJS::stringProtoFuncLink):
146         * kjs/string_object.h:
147
148 2008-01-15  Geoffrey Garen  <ggaren@apple.com>
149
150         Reviewed by Adam Roben.
151         
152         Some tweaks to our headerdoc, suggested by David Gatwood on the docs
153         team.
154
155         * API/JSBase.h:
156         * API/JSObjectRef.h:
157         * API/JSStringRef.h:
158         * API/JSValueRef.h:
159
160 2008-01-15  Alp Toker  <alp@atoker.com>
161
162         Rubber-stamped by Anders.
163
164         Make the HTTP backend configurable in the GTK+ port. curl is currently
165         the only option.
166
167         * wtf/Platform.h: Don't hard-code WTF_USE_CURL for GTK
168
169 2008-01-15  Sam Weinig  <sam@webkit.org>
170
171         Reviewed by Beth Dakin.
172
173         Remove unneeded variable.
174
175         * kjs/string_object.cpp:
176         (KJS::StringProtoFuncSubstr::callAsFunction):
177
178 2008-01-14  Steve Falkenburg  <sfalken@apple.com>
179
180         Use shared vsprops for most vcproj properties.
181         
182         Reviewed by Darin.
183
184         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Add missing Debug_Internal config.
185         * JavaScriptCore.vcproj/WTF/WTF.vcproj: Add missing Debug_Internal config.
186         * JavaScriptCore.vcproj/testkjs/testkjs.vcproj:
187
188 2008-01-14  Adam Roben  <aroben@apple.com>
189
190         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Added
191         some headers that were missing from the vcproj so their contents will
192         be included in Find in Files.
193
194 2008-01-14  Adam Roben  <aroben@apple.com>
195
196         Fix Bug 16871: Crash when loading apple.com/startpage
197
198         <http://bugs.webkit.org/show_bug.cgi?id=16871>
199         <rdar://problem/5686670>
200
201         Patch written by Darin, reviewed by me.
202
203         * kjs/ExecState.cpp:
204         (KJS::ExecState::mark): Call ActivationImp::markChildren if our
205         m_activation is on the stack. This is what ScopeChain::mark also does,
206         but apparently in some cases it's possible for an ExecState's
207         ActivationImp to not be in any ScopeChain.
208
209 2008-01-14  Kevin McCullough  <kmccullough@apple.com>
210
211         Reviewed by Oliver.
212
213         -<rdar://problem/5622667> REGRESSION (Leopard-ToT): Endless loading loop
214         trying to view techreport.com comments
215         - We need to set values in the map, because if they are already in the
216         map they will not be reset when we use add().
217
218         * kjs/array_instance.cpp:
219         (KJS::ArrayInstance::put):
220
221 2008-01-14  Darin Adler  <darin@apple.com>
222
223         Reviewed by Adam.
224
225         - re-speed-up the page load test (my StringImpl change slowed it down)
226
227         * wtf/RefCounted.h:
228         (WTF::RefCounted::RefCounted): Allow derived classes to start with a reference
229         count other than 0. Eventually everyone will want to start with a 1. This is a
230         staged change. For now, there's a default of 0, and you can specify 1. Later,
231         there will be no default and everyone will have to specify. And then later, there
232         will be a default of 1. Eventually, we can take away even the option of starting
233         with 0!
234
235         * wtf/Vector.h:
236         (WTF::Vector::Vector): Sped up creation of non-empty vectors by removing the
237         overhead of first constructing something empty and then calling resize.
238         (WTF::Vector::clear): Sped up the common case of calling clear on an empty
239         vector by adding a check for that case.
240         (WTF::Vector::releaseBuffer): Marked this function inline and removed a branch
241         in the case of vectors with no inline capacity (normal vectors) by leaving out
242         the code to copy the inline buffer in that case.
243
244 2008-01-14  Alexey Proskuryakov  <ap@webkit.org>
245
246         Reviewed by David Kilzer.
247
248         http://bugs.webkit.org/show_bug.cgi?id=16787
249         array.splice() with 1 element not working
250
251         Test: fast/js/array-splice.html
252
253         * kjs/array_object.cpp:
254         (KJS::ArrayProtoFuncSplice::callAsFunction): Implement this Mozilla extension, and fix
255         some other edge cases.
256
257 2008-01-13  Steve Falkenburg  <sfalken@apple.com>
258
259         Share common files across projects.
260         
261         Unify vsprops files
262         Debug:          common.vsprops, debug.vsprops
263         Debug_Internal: common.vsprops, debug.vsprops, debug_internal.vsprops
264         Release:        common.vsprops, release.vsprops
265         
266         Shared properties can go into common.vsprops, shared debug settings can go into debug.vsprops.
267         debug_internal.vsprops will be mostly empty except for file path prefix modifiers.
268
269         Reviewed by Adam Roben.
270
271         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
272         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
273         * JavaScriptCore.vcproj/debug.vsprops: Removed.
274         * JavaScriptCore.vcproj/debug_internal.vsprops: Removed.
275         * JavaScriptCore.vcproj/release.vsprops: Removed.
276         * JavaScriptCore.vcproj/testkjs/testkjs.vcproj:
277
278 2008-01-13  Marius Bugge Monsen  <mbm@trolltech.com>
279
280         Contributions and review by Adriaan de Groot,
281         Simon Hausmann, Eric Seidel, and Darin Adler.
282
283         - http://bugs.webkit.org/show_bug.cgi?id=16590
284           Compilation fixes for Solaris.
285
286         * kjs/DateMath.h:
287         (KJS::GregorianDateTime::GregorianDateTime): Use the WIN_OS code path
288         for SOLARIS too, presumably because Solaris also lacks the tm_gtoff and tm_zone
289         fields.
290         (KJS::GregorianDateTime::operator tm): Ditto.
291
292         * kjs/collector.cpp:
293         (KJS::currentThreadStackBase): Use thr_stksegment on Solaris.
294
295         * wtf/MathExtras.h:
296         (isfinite): Implement for Solaris.
297         (isinf): Ditto.
298         (signbit): Ditto. But this one is wrong, so I added a FIXME.
299
300         * wtf/Platform.h: Define PLATFORM(SOLARIS) when "sun" or "__sun" is defined.
301
302 2008-01-13  Michael Goddard  <michael.goddard@trolltech.com>
303
304         Reviewed by Anders Carlsson.
305
306         Add binding language type to Instance.
307         Allows runtime determination of the type of an
308         Instance, to allow safe casting.  Doesn't actually
309         add any safe casting yet, though.
310
311         Add a helper function to get an Instance from a JSObject*.
312         Given an object and the expected binding language, see if
313         the JSObject actually wraps an Instance of the given type
314         and return it.  Otherwise return 0.
315
316         Move RuntimeObjectImp creations into Instance.
317         Make the ctor protected, and Instance a friend class, so
318         that all creation of RuntimeObjectImps goes through
319         one place.
320
321         Remove copy ctor/assignment operator for QtInstance.
322         Instance itself is Noncopyable, so QtInstance doesn't
323         need to have these.
324
325         Add caching for QtInstance and associated RuntimeObjectImps.
326         Push any dealings with QtLanguage bindings into QtInstance,
327         and cache them there, rather than in the Instance layer.  Add
328         a QtRuntimeObjectImp to help with caching.
329
330         * JavaScriptCore.exp:
331         * bindings/c/c_instance.h:
332         * bindings/jni/jni_instance.h:
333         * bindings/objc/objc_instance.h:
334         * bindings/qt/qt_instance.cpp:
335         (KJS::Bindings::QtRuntimeObjectImp::QtRuntimeObjectImp):
336         (KJS::Bindings::QtRuntimeObjectImp::~QtRuntimeObjectImp):
337         (KJS::Bindings::QtRuntimeObjectImp::invalidate):
338         (KJS::Bindings::QtRuntimeObjectImp::removeFromCache):
339         (KJS::Bindings::QtInstance::QtInstance):
340         (KJS::Bindings::QtInstance::~QtInstance):
341         (KJS::Bindings::QtInstance::getQtInstance):
342         (KJS::Bindings::QtInstance::getRuntimeObject):
343         * bindings/qt/qt_instance.h:
344         (KJS::Bindings::QtInstance::getBindingLanguage):
345         * bindings/runtime.cpp:
346         (KJS::Bindings::Instance::createBindingForLanguageInstance):
347         (KJS::Bindings::Instance::createRuntimeObject):
348         (KJS::Bindings::Instance::getInstance):
349         * bindings/runtime.h:
350         * bindings/runtime_object.h:
351         (KJS::RuntimeObjectImp::getInternalInstance):
352
353 2008-01-12  Alp Toker  <alp@atoker.com>
354
355         Reviewed by Mark Rowe.
356
357         Hide non-public symbols in GTK+/autotools release builds.
358
359         * GNUmakefile.am:
360
361 2008-01-12  Cameron Zwarich  <cwzwarich@uwaterloo.ca>
362
363         Reviewed by Mark Rowe.
364
365         Fix http://bugs.webkit.org/show_bug.cgi?id=16852
366         Fixes leaking of ActivationStackNode objects.
367
368         * kjs/JSGlobalObject.cpp:
369         (KJS::JSGlobalObject::deleteActivationStack):
370         (KJS::JSGlobalObject::~JSGlobalObject):
371         (KJS::JSGlobalObject::init):
372         (KJS::JSGlobalObject::reset):
373         * kjs/JSGlobalObject.h:
374
375 2008-01-12  Darin Adler  <darin@apple.com>
376
377         - try to fix Qt Windows build
378
379         * pcre/dftables: Remove reliance on the list form of Perl pipes.
380
381 2008-01-12  Darin Adler  <darin@apple.com>
382
383         - try to fix Qt build
384
385         * kjs/function.cpp: Added include of scope_chain_mark.h.
386         * kjs/scope_chain_mark.h: Added multiple-include guards.
387
388 2008-01-12  Mark Rowe  <mrowe@apple.com>
389
390         Another Windows build fix.
391
392         * kjs/Activation.h:
393
394 2008-01-12  Mark Rowe  <mrowe@apple.com>
395
396         Attempted Windows build fix.  Use struct consistently when forward-declaring
397         ActivationStackNode and StackActivation.
398
399         * kjs/Activation.h:
400         * kjs/JSGlobalObject.h:
401
402 2008-01-12  Cameron Zwarich  <cwzwarich@uwaterloo.ca>
403
404         Reviewed by Maciej.
405
406         Fixes a problem with the ActivationImp tear-off patch (r29425) where
407         some of the calls to JSGlobalObject::tearOffActivation() were using
408         the wrong test to determine whether it should leave a relic behind.
409
410         * kjs/function.cpp:
411         (KJS::FunctionImp::argumentsGetter):
412         (KJS::ActivationImp::getOwnPropertySlot):
413
414 2008-01-11  Geoffrey Garen  <ggaren@apple.com>
415
416         Reviewed by Oliver Hunt.
417         
418         Fixed <rdar://problem/5665251> REGRESSION (r28880-r28886): Global
419         variable access (16644)
420         
421         This bug was caused by var declarations shadowing built-in properties of
422         the global object.
423         
424         To match Firefox, we've decided that var declarations will never shadow
425         built-in properties of the global object or its prototypes. We used to
426         behave more like IE, which allows shadowing, but walking that line got
427         us into trouble with websites that sent us down the Firefox codepath.
428
429         * kjs/JSVariableObject.h:
430         (KJS::JSVariableObject::symbolTableGet): New code to support calling
431         hasProperty before the variable object is fully initialized (so you
432         can call it during initialization).
433
434         * kjs/nodes.cpp:.
435         (KJS::ProgramNode::initializeSymbolTable): Always do a full hasProperty
436         check when looking for duplicates, not getDirect, since it only checks
437         the property map, and not hasOwnProperty, since it doesn't check
438         prototypes.
439         (KJS::EvalNode::processDeclarations): ditto
440
441         * kjs/property_slot.h:
442         (KJS::PropertySlot::ungettableGetter): Best function name evar.
443
444 2008-01-11  Cameron Zwarich  <cwzwarich@uwaterloo.ca>
445
446         Reviewed by Maciej.
447
448         Optimized ActivationImp allocation, so that activation records are now
449         first allocated on an explicitly managed stack and only heap allocated
450         when necessary. Roughly a 5% improvement on SunSpider, and a larger
451         improvement on benchmarks that use more function calls.
452
453         * JavaScriptCore.xcodeproj/project.pbxproj:
454         * kjs/Activation.h: Added.
455         (KJS::ActivationImp::ActivationData::ActivationData):
456         (KJS::ActivationImp::ActivationImp):
457         (KJS::ActivationImp::classInfo):
458         (KJS::ActivationImp::isActivationObject):
459         (KJS::ActivationImp::isOnStack):
460         (KJS::ActivationImp::d):
461         (KJS::StackActivation::StackActivation):
462         * kjs/ExecState.cpp:
463         (KJS::ExecState::ExecState):
464         (KJS::ExecState::~ExecState):
465         * kjs/ExecState.h:
466         (KJS::ExecState::replaceScopeChainTop):
467         (KJS::ExecState::setActivationObject):
468         (KJS::ExecState::setLocalStorage):
469         * kjs/JSGlobalObject.cpp:
470         (KJS::JSGlobalObject::reset):
471         (KJS::JSGlobalObject::pushActivation):
472         (KJS::JSGlobalObject::checkActivationCount):
473         (KJS::JSGlobalObject::popActivationHelper):
474         (KJS::JSGlobalObject::popActivation):
475         (KJS::JSGlobalObject::tearOffActivation):
476         * kjs/JSGlobalObject.h:
477         * kjs/JSVariableObject.h:
478         (KJS::JSVariableObject::JSVariableObjectData::JSVariableObjectData):
479         (KJS::JSVariableObject::JSVariableObject):
480         * kjs/function.cpp:
481         (KJS::FunctionImp::argumentsGetter):
482         (KJS::ActivationImp::ActivationImp):
483         (KJS::ActivationImp::~ActivationImp):
484         (KJS::ActivationImp::init):
485         (KJS::ActivationImp::getOwnPropertySlot):
486         (KJS::ActivationImp::markHelper):
487         (KJS::ActivationImp::mark):
488         (KJS::ActivationImp::ActivationData::ActivationData):
489         (KJS::GlobalFuncImp::callAsFunction):
490         * kjs/function.h:
491         * kjs/nodes.cpp:
492         (KJS::PostIncResolveNode::evaluate):
493         (KJS::PostDecResolveNode::evaluate):
494         (KJS::PreIncResolveNode::evaluate):
495         (KJS::PreDecResolveNode::evaluate):
496         (KJS::ReadModifyResolveNode::evaluate):
497         (KJS::AssignResolveNode::evaluate):
498         (KJS::WithNode::execute):
499         (KJS::TryNode::execute):
500         (KJS::FunctionBodyNode::processDeclarations):
501         (KJS::FuncExprNode::evaluate):
502         * kjs/object.h:
503         * kjs/scope_chain.h:
504         (KJS::ScopeChain::replace):
505         * kjs/scope_chain_mark.h: Added.
506         (KJS::ScopeChain::mark):
507
508 2008-01-11  Simon Hausmann  <hausmann@webkit.org>
509
510         Reviewed by Mark Rowe.
511
512         Fix the (clean) qmake build. For generating chartables.c we don't
513         depend on a separate input source file anymore, the dftables perl
514         script is enough. So use that instead as value for the .input
515         variable, to ensure that qmake also generates a rule to call dftables.
516
517         * pcre/pcre.pri:
518
519 2008-01-10  Geoffrey Garen  <ggaren@apple.com>
520
521         Reviewed by John Sullivan.
522
523         Fixed some world leak reports:
524         * <rdar://problem/5669436> PLT complains about world leak of 1 JavaScript
525         Interpreter after running cvs-base suite
526
527         * <rdar://problem/5669423> PLT complains about world leak if browser
528         window is open when PLT starts
529         
530         * kjs/collector.h: Added the ability to distinguish between global
531         objects and GC-protected global objects, since we only consider the
532         latter to be world leaks.
533         * kjs/collector.cpp:
534
535 2008-01-11  Mark Rowe  <mrowe@apple.com>
536
537         Silence qmake warning about ctgen lacking input.
538
539         Rubber-stamped by Alp Toker.
540
541         * pcre/pcre.pri:
542
543 2008-01-10  David Kilzer  <ddkilzer@apple.com>
544
545         dftables should be rewritten as a script
546
547         <http://bugs.webkit.org/show_bug.cgi?id=16818>
548         <rdar://problem/5681463>
549
550         Reviewed by Darin.
551
552         Rewrote the dftables utility in Perl.  Attempted to switch all
553         build systems to call the script directly instead of building
554         a binary first.  Only the Xcode build was able to be tested.
555
556         * DerivedSources.make: Added pcre directory to VPATH and changed
557         to invoke dftables directly.
558         * GNUmakefile.am: Removed build information and changed to invoke
559         dftables directly.
560         * JavaScriptCore.vcproj/JavaScriptCore.sln: Removed reference to
561         dftables project.
562         * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln: Ditto.
563         * JavaScriptCore.vcproj/dftables: Removed.
564         * JavaScriptCore.vcproj/dftables/dftables.vcproj: Removed.
565         * JavaScriptCore.xcodeproj/project.pbxproj: Removed dftables target.
566         * jscore.bkl: Removed dftables executable definition.
567         * pcre/dftables: Copied from JavaScriptCore/pcre/dftables.cpp.
568         * pcre/dftables.cpp: Removed.
569         * pcre/dftables.pro: Removed.
570         * pcre/pcre.pri: Removed references to dftables.cpp and changed to
571         invoke dftables directly.
572
573 2008-01-10  Dan Bernstein  <mitz@apple.com>
574
575         Reviewed by Darin Adler.
576
577         - fix http://bugs.webkit.org/show_bug.cgi?id=16782
578           <rdar://problem/5675331> REGRESSION(r29266): Reproducible crash in fast/replaced/image-map.html
579
580         The crash resulted from a native object (DumpRenderTree's
581         EventSender) causing its wrapper to be invalidated (by clicking a
582         link that replaced the document in the window) and consequently
583         deallocated. The fix is to use RefPtrs to protect the native object
584         from deletion by self-invalidation.
585
586         * bindings/runtime_method.cpp:
587         (RuntimeMethod::callAsFunction):
588         * bindings/runtime_object.cpp:
589         (RuntimeObjectImp::fallbackObjectGetter):
590         (RuntimeObjectImp::fieldGetter):
591         (RuntimeObjectImp::methodGetter):
592         (RuntimeObjectImp::put):
593         (RuntimeObjectImp::defaultValue):
594         (RuntimeObjectImp::callAsFunction):
595
596 2008-01-07  Mark Rowe  <mrowe@apple.com>
597
598         Reviewed by Maciej Stachowiak.
599
600         Turn testIsInteger assertions into compile-time asserts and move them into HashTraits.h
601         where possible.
602
603         * kjs/testkjs.cpp:
604         * wtf/HashTraits.h:
605
606 2008-01-07  Nikolas Zimmermann  <zimmermann@kde.org>
607
608         Reviewed by Mark.
609
610         Enable SVG_FONTS by default.
611
612         * Configurations/JavaScriptCore.xcconfig:
613
614 2008-01-07  Darin Adler  <darin@apple.com>
615
616         Rubber stamped by David Kilzer.
617
618         - get rid of empty fpconst.cpp
619
620         * GNUmakefile.am: Remove fpconst.cpp.
621         * JavaScriptCore.pri: Ditto.
622         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Ditto.
623         * JavaScriptCore.xcodeproj/project.pbxproj: Ditto.
624         * JavaScriptCoreSources.bkl: Ditto.
625
626         * kjs/fpconst.cpp: Removed.
627
628 2008-01-07  Darin Adler  <darin@apple.com>
629
630         Reviewed by David Kilzer.
631
632         - fix alignment problem with NaN and Inf globals
633
634         * kjs/fpconst.cpp: Move the contents of this file from here back to
635         value.cpp. The reason this was in a separate file is that the DARWIN
636         version of this used a declaration of the globals with a different
637         type to avoid creating "init routines". That's no longer necessary for
638         DARWIN and was never necessary for the non-DARWIN code path.
639         To make this patch easy to merge, I didn't actually delete this file
640         yet. We'll do that in a separate changeset.
641
642         * kjs/value.cpp: If C99's NAN and INFINITY are present, then use them,
643         othrewise use the union trick from fpconst.cpp. I think it would be
644         better to eliminate KJS::NaN and KJS::Inf and just use NAN and INFINITY
645         directly or std::numeric_limits<double>::quiet_nan() and
646         std::numeric_limits<double>::infinity(). But when I tried that, it
647         slowed down SunSpider. Someone else could do that cleanup if they
648         could do it without slowing down the engine.
649
650 2008-01-07  Adam Roben  <aroben@apple.com>
651
652         Windows build fix
653
654         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Added
655         JavaScript.h to the project.
656         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
657         Copy JavaScript.h to WEBKITOUTPUTDIR.
658
659 2008-01-07  Timothy Hatcher  <timothy@apple.com>
660
661         Reviewed by Darin.
662
663         Fix Mac build.
664
665         * API/JSNode.c:
666         * API/JSNode.h:
667         * API/JSNodeList.c:
668         * API/JSNodeList.h:
669         * API/JavaScript.h:
670         * API/JavaScriptCore.h:
671         * API/minidom.c:
672         * JavaScriptCore.xcodeproj/project.pbxproj:
673
674 2008-01-07  Alp Toker  <alp@atoker.com>
675
676         Reviewed by Darin.
677
678         http://bugs.webkit.org/show_bug.cgi?id=16029
679         JavaScriptCore.h is not suitable for platforms other than Mac OS X
680
681         Introduce a new JavaScriptCore/JavaScript.h public API header. This
682         should be used by all new portable code using the JavaScriptCore API.
683
684         JavaScriptCore/JavaScriptCore.h will remain for compatibility with
685         existing applications that depend on it including JSStringRefCF.h
686         which isn't portable.
687
688         Also add minidom to the GTK+/autotools build since we can now support
689         it on all platforms.
690
691         * API/JSNode.h:
692         * API/JSNodeList.h:
693         * API/JavaScript.h: Added.
694         * API/JavaScriptCore.h:
695         * ForwardingHeaders/JavaScriptCore/JavaScript.h: Added.
696         * GNUmakefile.am:
697         * JavaScriptCore.xcodeproj/project.pbxproj:
698
699 2008-01-06  Eric Seidel  <eric@webkit.org>
700
701         Reviewed by Sam.
702
703         Abstract all DateObject.set* functions in preparation for fixing:
704         http://bugs.webkit.org/show_bug.cgi?id=16753
705         
706         SunSpider had random changes here and there but was overall a wash.
707
708         * kjs/date_object.cpp:
709         (KJS::fillStructuresUsingTimeArgs):
710         (KJS::setNewValueFromTimeArgs):
711         (KJS::setNewValueFromDateArgs):
712         (KJS::DateProtoFuncSetMilliSeconds::callAsFunction):
713         (KJS::DateProtoFuncSetUTCMilliseconds::callAsFunction):
714         (KJS::DateProtoFuncSetSeconds::callAsFunction):
715         (KJS::DateProtoFuncSetUTCSeconds::callAsFunction):
716         (KJS::DateProtoFuncSetMinutes::callAsFunction):
717         (KJS::DateProtoFuncSetUTCMinutes::callAsFunction):
718         (KJS::DateProtoFuncSetHours::callAsFunction):
719         (KJS::DateProtoFuncSetUTCHours::callAsFunction):
720         (KJS::DateProtoFuncSetDate::callAsFunction):
721         (KJS::DateProtoFuncSetUTCDate::callAsFunction):
722         (KJS::DateProtoFuncSetMonth::callAsFunction):
723         (KJS::DateProtoFuncSetUTCMonth::callAsFunction):
724         (KJS::DateProtoFuncSetFullYear::callAsFunction):
725         (KJS::DateProtoFuncSetUTCFullYear::callAsFunction):
726
727 2008-01-06  Nikolas Zimmermann  <zimmermann@kde.org>
728
729         Reviewed by Dan.
730
731         Add new helper function isArabicChar - SVG Fonts support needs it.
732
733         * wtf/unicode/icu/UnicodeIcu.h:
734         (WTF::Unicode::isArabicChar):
735         * wtf/unicode/qt4/UnicodeQt4.h:
736         (WTF::Unicode::isArabicChar):
737
738 2008-01-06  Alp Toker  <alp@atoker.com>
739
740         Reviewed by Mark Rowe.
741
742         Use $(EXEEXT) to account for the .exe extension in the GTK+ Windows
743         build. (This is already done correctly in DerivedSources.make.) Issue
744         noticed by Mikkel when building in Cygwin.
745
746         Add a missing slash. This was a hack from the qmake build system that
747         isn't necessary with autotools.
748
749         * GNUmakefile.am:
750
751 2008-01-05  Darin Adler  <darin@apple.com>
752
753         * API/JSRetainPtr.h: One more file that needed the change below.
754
755 2008-01-05  Darin Adler  <darin@apple.com>
756
757         * wtf/OwnPtr.h: OwnPtr needs the same fix as RefPtr below.
758
759 2008-01-05  Adam Roben  <aroben@apple.com>
760
761         Build fix.
762
763         Reviewed by Maciej.
764
765         * wtf/RetainPtr.h: Use PtrType instead of T* because of the
766         RemovePointer magic.
767
768 2008-01-05  Darin Adler  <darin@apple.com>
769
770         Rubber stamped by Maciej Stachowiak.
771
772         - cut down own PIC branches by using a pointer-to-member-data instead of a
773           pointer-to-member-function in WTF smart pointers
774
775         * wtf/OwnArrayPtr.h:
776         * wtf/OwnPtr.h:
777         * wtf/PassRefPtr.h:
778         * wtf/RefPtr.h:
779         * wtf/RetainPtr.h:
780         Use a pointer to the m_ptr member instead of the get member.
781         The GCC compiler generates better code for this idiom.
782
783 2008-01-05  Henry Mason  <hmason@mac.com>
784
785         Reviewed by Maciej Stachowiak.
786
787         http://bugs.webkit.org/show_bug.cgi?id=16738
788         Bug 16738: Collector block offset could be stored as an cell offset instead of a byte offset
789
790         Gives a 0.4% SunSpider boost and prettier code.
791
792         * kjs/collector.cpp: Switched to cell offsets from byte offsets
793         (KJS::Collector::heapAllocate):
794         (KJS::Collector::sweep):
795
796 2008-01-04  Mark Rowe  <mrowe@apple.com>
797
798         Reviewed by Maciej Stachowiak.
799
800         Have the two malloc zones print useful diagnostics if their free method are unexpectedly invoked.
801         Due to <rdar://problem/5671357> this can happen if an application attempts to free a pointer that
802         was not allocated by any registered malloc zone on the system.
803
804         * kjs/CollectorHeapIntrospector.h:
805         * wtf/FastMalloc.cpp:
806
807 2008-01-04  Alp Toker  <alp@atoker.com>
808
809         GTK+ autotools build fix. Terminate empty rules.
810
811         * GNUmakefile.am:
812
813 2008-01-03  Simon Hausmann  <hausmann@webkit.org>
814
815         Reviewed by Mark Rowe.
816
817         Fix compilation with gcc 4.3: limits.h is needed for INT_MAX.
818
819         * pcre/pcre_exec.cpp:
820
821 2008-01-03  Darin Adler  <darin@apple.com>
822
823         * tests/mozilla/expected.html: The fix for bug 16696 also fixed a test
824         case, ecma_3/RegExp/perlstress-002.js, so updated results to expect
825         that test to succeed.
826
827 2008-01-02  Darin Adler  <darin@apple.com>
828
829         Reviewed by Geoff.
830
831         - fix http://bugs.webkit.org/show_bug.cgi?id=16696
832           JSCRE fails fails to match Acid3 regexp
833
834         Test: fast/regex/early-acid3-86.html
835
836         The problem was with the cutoff point between backreferences and octal
837         escape sequences. We need to determine the cutoff point by counting the
838         total number of capturing brackets, which requires an extra pass through
839         the expression when compiling it.
840
841         * pcre/pcre_compile.cpp:
842         (CompileData::CompileData): Added numCapturingBrackets. Removed some
843         unused fields.
844         (compileBranch): Use numCapturingBrackets when calling checkEscape.
845         (calculateCompiledPatternLength): Use numCapturingBrackets when calling
846         checkEscape, and also store the bracket count at the end of the compile.
847         (jsRegExpCompile): Call calculateCompiledPatternLength twice -- once to
848         count the number of brackets and then a second time to calculate the length.
849
850 2008-01-02  Darin Adler  <darin@apple.com>
851
852         Reviewed by Geoff.
853
854         - fix http://bugs.webkit.org/show_bug.cgi?id=16696
855           JSCRE fails fails to match Acid3 regexp
856
857         Test: fast/regex/early-acid3-86.html
858
859         The problem was with the cutoff point between backreferences and octal
860         escape sequences. We need to determine the cutoff point by counting the
861         total number of capturing brackets, which requires an extra pass through
862         the expression when compiling it.
863
864         * pcre/pcre_compile.cpp:
865         (CompileData::CompileData): Added numCapturingBrackets. Removed some
866         unused fields.
867         (compileBranch): Use numCapturingBrackets when calling checkEscape.
868         (calculateCompiledPatternLength): Use numCapturingBrackets when calling
869         checkEscape, and also store the bracket count at the end of the compile.
870         (jsRegExpCompile): Call calculateCompiledPatternLength twice -- once to
871         count the number of brackets and then a second time to calculate the length.
872
873 2008-01-02  David Kilzer <ddkilzer@webkit.org>
874
875         Reviewed and landed by Darin.
876
877         * kjs/nodes.cpp:
878         (KJS::DoWhileNode::execute): Added a missing return.
879
880 2008-01-02  Darin Adler  <darin@apple.com>
881
882         - try to fix Qt build
883
884         * wtf/unicode/qt4/UnicodeQt4.h:
885         (WTF::Unicode::foldCase): Add some missing const.
886
887 2008-01-02  Alice Liu  <alice.liu@apple.com>
888
889         Reviewed by Sam Weinig.
890
891         need to export ASCIICType.h for use in DRT
892
893         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
894         * wtf/ASCIICType.h:
895         (WTF::isASCIIUpper):
896
897 2008-01-02  Sam Weinig  <sam@webkit.org>
898
899         Reviewed by Beth Dakin.
900
901         Cleanup error_object.h/cpp.
902
903         * kjs/JSGlobalObject.cpp:
904         (KJS::JSGlobalObject::reset):
905         * kjs/error_object.cpp:
906         (KJS::):
907         (KJS::ErrorInstance::ErrorInstance):
908         (KJS::ErrorPrototype::ErrorPrototype):
909         (KJS::ErrorProtoFuncToString::ErrorProtoFuncToString):
910         (KJS::ErrorProtoFuncToString::callAsFunction):
911         (KJS::ErrorObjectImp::ErrorObjectImp):
912         (KJS::ErrorObjectImp::implementsConstruct):
913         (KJS::ErrorObjectImp::construct):
914         (KJS::ErrorObjectImp::callAsFunction):
915         (KJS::NativeErrorPrototype::NativeErrorPrototype):
916         (KJS::NativeErrorImp::NativeErrorImp):
917         (KJS::NativeErrorImp::implementsConstruct):
918         (KJS::NativeErrorImp::construct):
919         (KJS::NativeErrorImp::callAsFunction):
920         (KJS::NativeErrorImp::mark):
921         * kjs/error_object.h:
922         (KJS::ErrorInstance::classInfo):
923         (KJS::NativeErrorImp::classInfo):
924
925 2008-01-02  Mark Rowe  <mrowe@apple.com>
926
927         Rubber-stamped by Alp Toker.
928
929         * GNUmakefile.am: Add missing dependency on grammar.y.
930
931 2008-01-01  Darin Adler  <darin@apple.com>
932
933         Reviewed by Eric.
934
935         - fix for http://bugs.webkit.org/show_bug.cgi?id=16695
936           JSC allows non-identifier codepoints in identifiers (affects Acid3)
937
938         Test: fast/js/kde/parse.html
939
940         * kjs/lexer.cpp:
941         (KJS::Lexer::lex): Added additional states to distinguish Unicode escapes at the
942         start of identifiers from ones inside identifiers. Rejected characters that don't pass
943         the isIdentStart and isIdentPart tests.
944         (KJS::Lexer::convertUnicode): Removed incorrect FIXME comment.
945
946         * kjs/lexer.h: Added new states to distinguish \u escapes at the start of identifiers
947         from \u escapes inside identifiers.
948
949 2008-01-01  Darin Adler  <darin@apple.com>
950
951         - rolled scope chain optimization out; it was breaking the world
952
953 2008-01-01  Darin Adler  <darin@apple.com>
954
955         Reviewed by Geoff.
956
957         - http://bugs.webkit.org/show_bug.cgi?id=16685
958           eliminate List::empty() to cut down on PIC branches
959
960         Also included one other speed-up -- remove the call to reserveCapacity from
961         FunctionBodyNode::processDeclarations in all but the most unusual cases.
962
963         Together these make SunSpider 1.016x as fast.
964
965         * JavaScriptCore.exp: Updated.
966         * kjs/ExecState.cpp:
967         (KJS::globalEmptyList): Added. Called only when creating global ExecState
968         instances.
969         (KJS::ExecState::ExecState): Broke constructor up into three separate functions,
970         for the three separate node types. Also went through each of the three and
971         streamlined as much as possible, removing dead code. This prevents us from having
972         to access the global in the function body version of the constructor.
973
974         * kjs/ExecState.h: Added emptyList(). Replaced the constructor with a set of
975         three that are specific to the different node types that can create new execution
976         state objects.
977
978         * kjs/array_object.cpp:
979         (KJS::ArrayProtoFuncToLocaleString::callAsFunction): Use exec->emptyList() instead
980         of List::empty().
981         (KJS::ArrayProtoFuncConcat::callAsFunction): Ditto.
982         (KJS::ArrayProtoFuncSlice::callAsFunction): Ditto.
983         (KJS::ArrayProtoFuncSplice::callAsFunction): Ditto.
984         (KJS::ArrayProtoFuncFilter::callAsFunction): Ditto.
985         * kjs/function.cpp:
986         (KJS::FunctionImp::callAsFunction): Updated to call new ExecState constructor.
987         (KJS::GlobalFuncImp::callAsFunction): Ditto (for eval).
988         * kjs/function_object.cpp:
989         (FunctionObjectImp::construct): Use exec->emptyList() instead of List::empty().
990
991         * kjs/list.cpp: Removed List::empty.
992         * kjs/list.h: Ditto.
993
994         * kjs/nodes.cpp:
995         (KJS::ElementNode::evaluate): Use exec->emptyList() instead of List::empty().
996         (KJS::ArrayNode::evaluate): Ditto.
997         (KJS::ObjectLiteralNode::evaluate): Ditto.
998         (KJS::PropertyListNode::evaluate): Ditto.
999         (KJS::FunctionBodyNode::processDeclarations): Another speed-up. Check the capacity
1000         before calling reserveCapacity, because it doesn't get inlined the local storage
1001         vector is almost always big enough -- saving the function call overhead is a big
1002         deal.
1003         (KJS::FuncDeclNode::makeFunction): Use exec->emptyList() instead of List::empty().
1004         (KJS::FuncExprNode::evaluate): Ditto.
1005         * kjs/object.cpp:
1006         (KJS::tryGetAndCallProperty): Ditto.
1007         * kjs/property_slot.cpp:
1008         (KJS::PropertySlot::functionGetter): Ditto.
1009         * kjs/string_object.cpp:
1010         (KJS::StringProtoFuncSplit::callAsFunction): Ditto.
1011
1012 2008-01-01  Darin Adler  <darin@apple.com>
1013
1014         Reviewed by Geoff.
1015
1016         - fix http://bugs.webkit.org/show_bug.cgi?id=16648
1017           REGRESSION (r28165): Yuku.com navigation prints "jsRegExpExecute failed with result -2"
1018           <rdar://problem/5646486> REGRESSION (r28165): Layout test fast/regex/test1 fails intermittently
1019
1020         Fixes 34 failing test cases in the fast/regex/test1.html test.
1021
1022         Restored the stack which prevents infinite loops for brackets that match the empty
1023         string; it had been removed as an optimization.
1024
1025         Unfortunately, restoring this stack causes the regular expression test in SunSpider
1026         to be 1.095x as slow and the overall test to be 1.004x as slow. Maybe we can find
1027         a correct optimization to restore the speed!
1028
1029         It's possible the original change was on the right track but just off by one.
1030
1031         * pcre/pcre_exec.cpp: Add back eptrblock, but name it BracketChainNode.
1032         (MatchStack::pushNewFrame): Add back the logic needed here.
1033         (startNewGroup): Ditto.
1034         (match): Ditto.
1035
1036 2008-01-01  Darin Adler  <darin@apple.com>
1037
1038         Reviewed by Geoff.
1039
1040         - http://bugs.webkit.org/show_bug.cgi?id=16683
1041           speed up function calls by making ScopeChain::push cheaper
1042
1043         This gives a 1.019x speedup on SunSpider.
1044
1045         After doing this, I realized this probably will be obsolete when the optimization
1046         to avoid creating an activation object is done. When we do that one we should check
1047         if rolling this out will speed things up, since this does add overhead at the time
1048         you copy the scope chain.
1049
1050         * kjs/object.h: Removed the ScopeChain::release function. It was
1051         marked inline, and called in exactly one place, so moved it there.
1052         No idea why it was in this header file!
1053
1054         * kjs/scope_chain.cpp: Removed the overload of the ScopeChain::push
1055         function that takes another ScopeChain. It was unused. I think we used
1056         it over in WebCore at one point, but not any more.
1057
1058         * kjs/scope_chain.h: Changed ScopeChainNode into a struct rather than
1059         a class, got rid of its constructor so we can have one that's uninitialized,
1060         and moved the refCount into a derived struct, ScopeChainHeapNode. Made _node
1061         mutable so it can be changed in the moveToHeap function. Changed the copy
1062         constructor and assignment operator to call moveToHeap, since the top node
1063         can't be shared when it's embedded in another ScopeChain object. Updated
1064         functions as needed to handle the case where the first object isn't on the
1065         heap or to add casts for cases where it's guaranteed to be. Changed the push
1066         function to always put the new node into the ScopeChain object; it will get
1067         put onto the heap when needed later.
1068
1069 2008-01-01  Geoffrey Garen  <ggaren@apple.com>
1070
1071         Reviewed by Darin Adler.
1072         
1073         Fixed slight logic error in reserveCapacity, where we would reallocate
1074         the storage buffer unnecessarily.
1075
1076         * wtf/Vector.h:
1077         (WTF::::reserveCapacity): No need to grow the buffer if newCapacity is
1078         equal to capacity().
1079
1080 2008-01-01  Darin Adler  <darin@apple.com>
1081
1082         Reviewed by Oliver.
1083
1084         - http://bugs.webkit.org/show_bug.cgi?id=16684
1085           eliminate debugger overhead from function body execution
1086
1087         Speeds SunSpider up 1.003x. That's a small amount, but measurable.
1088
1089         * JavaScriptCore.exp: Updated.
1090         * kjs/Parser.h:
1091         (KJS::Parser::parse): Create the node with a static member function named create() instead
1092         of using new explicitly.
1093
1094         * kjs/grammar.y: Changed calls to new FunctionBodyNode to use FunctionBodyNode::create().
1095
1096         * kjs/nodes.cpp:
1097         (KJS::ProgramNode::create): Added. Calls new.
1098         (KJS::EvalNode::create): Ditto.
1099         (KJS::FunctionBodyNode::create): Ditto, but creates FunctionBodyNodeWithDebuggerHooks
1100         when a debugger is present.
1101         (KJS::FunctionBodyNode::execute): Removed debugger hooks.
1102         (KJS::FunctionBodyNodeWithDebuggerHooks::FunctionBodyNodeWithDebuggerHooks): Added.
1103         (KJS::FunctionBodyNodeWithDebuggerHooks::execute): Calls the debugger, then the code,
1104         then the debugger again.
1105
1106         * kjs/nodes.h: Added create functions, made the constructors private and protected.
1107
1108 2007-12-30  Eric Seidel  <eric@webkit.org>
1109
1110         Reviewed by Sam.
1111
1112         More small cleanup to array_object.cpp
1113
1114         * kjs/array_object.cpp:
1115         (KJS::ArrayProtoFuncToString::callAsFunction):
1116         (KJS::ArrayProtoFuncToLocaleString::callAsFunction):
1117         (KJS::ArrayProtoFuncJoin::callAsFunction):
1118         (KJS::ArrayProtoFuncConcat::callAsFunction):
1119         (KJS::ArrayProtoFuncReverse::callAsFunction):
1120         (KJS::ArrayProtoFuncShift::callAsFunction):
1121         (KJS::ArrayProtoFuncSlice::callAsFunction):
1122         (KJS::ArrayProtoFuncSort::callAsFunction):
1123         (KJS::ArrayProtoFuncSplice::callAsFunction):
1124         (KJS::ArrayProtoFuncUnShift::callAsFunction):
1125         (KJS::ArrayProtoFuncFilter::callAsFunction):
1126         (KJS::ArrayProtoFuncMap::callAsFunction):
1127         (KJS::ArrayProtoFuncEvery::callAsFunction):
1128
1129 2007-12-30  Eric Seidel  <eric@webkit.org>
1130
1131         Reviewed by Sam.
1132
1133         Apply wkstyle to array_object.cpp
1134
1135         * kjs/array_object.cpp:
1136         (KJS::ArrayPrototype::ArrayPrototype):
1137         (KJS::ArrayPrototype::getOwnPropertySlot):
1138         (KJS::ArrayProtoFuncConcat::callAsFunction):
1139         (KJS::ArrayProtoFuncPop::callAsFunction):
1140         (KJS::ArrayProtoFuncReverse::callAsFunction):
1141         (KJS::ArrayProtoFuncShift::callAsFunction):
1142         (KJS::ArrayProtoFuncSlice::callAsFunction):
1143         (KJS::ArrayProtoFuncSort::callAsFunction):
1144         (KJS::ArrayProtoFuncSplice::callAsFunction):
1145         (KJS::ArrayProtoFuncUnShift::callAsFunction):
1146         (KJS::ArrayProtoFuncFilter::callAsFunction):
1147         (KJS::ArrayProtoFuncMap::callAsFunction):
1148         (KJS::ArrayProtoFuncEvery::callAsFunction):
1149         (KJS::ArrayProtoFuncLastIndexOf::callAsFunction):
1150         (KJS::ArrayObjectImp::ArrayObjectImp):
1151         (KJS::ArrayObjectImp::implementsConstruct):
1152         (KJS::ArrayObjectImp::construct):
1153         (KJS::ArrayObjectImp::callAsFunction):
1154
1155 2007-12-30  Eric Seidel  <eric@webkit.org>
1156
1157         Reviewed by Sam.
1158
1159         Remove maxInt/minInt, replacing with std:max/min<int>()
1160
1161         * kjs/array_object.cpp:
1162         (KJS::ArrayProtoFuncSplice::callAsFunction):
1163         * kjs/operations.cpp:
1164         * kjs/operations.h:
1165
1166 2007-12-30  Eric Seidel  <eric@webkit.org>
1167
1168         Reviewed by Sam.
1169         
1170         Update Number.toString to properly throw exceptions.
1171         Cleanup code in Number.toString implementation.
1172
1173         * kjs/number_object.cpp:
1174         (KJS::numberToString):
1175         * kjs/object.cpp:
1176         (KJS::Error::create): Remove bogus debug lines.
1177
1178 2007-12-28  Eric Seidel  <eric@webkit.org>
1179
1180         Reviewed by Oliver.
1181
1182         ASSERT when debugging via Drosera due to missed var lookup optimization.
1183         http://bugs.webkit.org/show_bug.cgi?id=16634
1184         
1185         No test case possible.
1186
1187         * kjs/nodes.cpp:
1188         (KJS::BreakpointCheckStatement::optimizeVariableAccess):
1189         * kjs/nodes.h:
1190
1191 2007-12-28  Eric Seidel  <eric@webkit.org>
1192
1193         Reviewed by Oliver.
1194
1195         Fix (-0).toFixed() and re-factor a little
1196         Fix (-0).toExponential() and printing of trailing 0s in toExponential
1197         Fix toPrecision(nan) handling
1198         http://bugs.webkit.org/show_bug.cgi?id=16640
1199
1200         * kjs/number_object.cpp:
1201         (KJS::numberToFixed):
1202         (KJS::fractionalPartToString):
1203         (KJS::numberToExponential):
1204         (KJS::numberToPrecision):
1205
1206 2007-12-28  Eric Seidel  <eric@webkit.org>
1207
1208         Reviewed by Sam.
1209
1210         More changes to make number code readable
1211
1212         * kjs/number_object.cpp:
1213         (KJS::integer_part_noexp):
1214         (KJS::numberToFixed):
1215         (KJS::numberToExponential):
1216
1217 2007-12-28  Eric Seidel  <eric@webkit.org>
1218
1219         Reviewed by Sam.
1220
1221         More small cleanups to toPrecision
1222
1223         * kjs/number_object.cpp:
1224         (KJS::numberToPrecision):
1225
1226 2007-12-28  Eric Seidel  <eric@webkit.org>
1227
1228         Reviewed by Sam.
1229
1230         More small attempts to make number code readable
1231
1232         * kjs/number_object.cpp:
1233         (KJS::exponentialPartToString):
1234         (KJS::numberToExponential):
1235         (KJS::numberToPrecision):
1236
1237 2007-12-28  Eric Seidel  <eric@webkit.org>
1238
1239         Reviewed by Sam.
1240
1241         Break out callAsFunction implementations into static functions
1242
1243         * kjs/number_object.cpp:
1244         (KJS::numberToString):
1245         (KJS::numberToFixed):
1246         (KJS::numberToExponential):
1247         (KJS::numberToPrecision):
1248         (KJS::NumberProtoFunc::callAsFunction):
1249
1250 2007-12-28  Eric Seidel  <eric@webkit.org>
1251
1252         Reviewed by Sam.
1253
1254         Apply wkstyle/astyle and fix placement of *
1255
1256         * kjs/number_object.cpp:
1257         (KJS::):
1258         (KJS::NumberInstance::NumberInstance):
1259         (KJS::NumberPrototype::NumberPrototype):
1260         (KJS::NumberProtoFunc::NumberProtoFunc):
1261         (KJS::integer_part_noexp):
1262         (KJS::intPow10):
1263         (KJS::NumberProtoFunc::callAsFunction):
1264         (KJS::NumberObjectImp::NumberObjectImp):
1265         (KJS::NumberObjectImp::getOwnPropertySlot):
1266         (KJS::NumberObjectImp::getValueProperty):
1267         (KJS::NumberObjectImp::implementsConstruct):
1268         (KJS::NumberObjectImp::construct):
1269         (KJS::NumberObjectImp::callAsFunction):
1270         * kjs/object.cpp:
1271         (KJS::JSObject::put):
1272
1273 2007-12-27  Eric Seidel  <eric@webkit.org>
1274
1275         Reviewed by Sam.
1276
1277         ASSERT in JavaScriptCore while viewing WICD test case
1278         http://bugs.webkit.org/show_bug.cgi?id=16626
1279         
1280         * kjs/nodes.cpp:
1281         (KJS::ForInNode::execute): move KJS_CHECK_EXCEPTION to proper place
1282
1283 2007-12-26  Jan Michael Alonzo  <jmalonzo@unpluggable.com>
1284
1285         Reviewed by Alp Toker.
1286
1287         http://bugs.webkit.org/show_bug.cgi?id=16390
1288         Use autotools or GNU make as the build system for the GTK port
1289
1290         * GNUmakefile.am: Added.
1291
1292 2007-12-25  Maciej Stachowiak  <mjs@apple.com>
1293         
1294         Reviewed by Oliver.
1295                 
1296         - Remove unnecessary redundant check from property setting
1297         http://bugs.webkit.org/show_bug.cgi?id=16602
1298                 
1299         1.3% speedup on SunSpider.
1300         
1301         * kjs/object.cpp:
1302         (KJS::JSObject::put): Don't do canPut check when not needed; let
1303         the PropertyMap handle it.        
1304         (KJS::JSObject::canPut): Don't check the static property
1305         table. lookupPut does that already.
1306         
1307 2007-12-24  Alp Toker  <alp@atoker.com>
1308
1309         Fix builds that don't use AllInOneFile.cpp following breakage
1310         introduced in r28973.
1311
1312         * kjs/grammar.y:
1313
1314 2007-12-24  Maciej Stachowiak  <mjs@apple.com>
1315
1316         Reviewed by Eric.
1317
1318         - Optimize variable declarations
1319         http://bugs.webkit.org/show_bug.cgi?id=16585
1320         
1321         3.5% speedup on SunSpider.
1322
1323         var statements now result in either assignments or empty statements.
1324         
1325         This allows a couple of optimization opportunities:
1326         - No need to branch at runtime to check if there is an initializer
1327         - EmptyStatementNodes can be removed entirely (also done in this patch)
1328         - Assignment expressions get properly optimized for local variables
1329         
1330         This patch also includes some code cleanup:
1331         - Most of the old VarStatement/VarDecl logic is now only used for const declarations, 
1332           thus it is renamed appropriately
1333         - AssignExprNode is gone
1334         
1335         * JavaScriptCore.exp:
1336         * kjs/NodeInfo.h:
1337         * kjs/grammar.y:
1338         * kjs/nodes.cpp:
1339         (KJS::SourceElements::append):
1340         (KJS::ConstDeclNode::ConstDeclNode):
1341         (KJS::ConstDeclNode::optimizeVariableAccess):
1342         (KJS::ConstDeclNode::handleSlowCase):
1343         (KJS::ConstDeclNode::evaluateSingle):
1344         (KJS::ConstDeclNode::evaluate):
1345         (KJS::ConstStatementNode::optimizeVariableAccess):
1346         (KJS::ConstStatementNode::execute):
1347         (KJS::VarStatementNode::optimizeVariableAccess):
1348         (KJS::VarStatementNode::execute):
1349         (KJS::ForInNode::ForInNode):
1350         (KJS::ForInNode::optimizeVariableAccess):
1351         (KJS::ForInNode::execute):
1352         (KJS::FunctionBodyNode::initializeSymbolTable):
1353         (KJS::ProgramNode::initializeSymbolTable):
1354         (KJS::FunctionBodyNode::processDeclarations):
1355         (KJS::ProgramNode::processDeclarations):
1356         (KJS::EvalNode::processDeclarations):
1357         * kjs/nodes.h:
1358         (KJS::DeclarationStacks::):
1359         (KJS::StatementNode::):
1360         (KJS::ConstDeclNode::):
1361         (KJS::ConstStatementNode::):
1362         (KJS::EmptyStatementNode::):
1363         (KJS::VarStatementNode::):
1364         (KJS::ForNode::):
1365         * kjs/nodes2string.cpp:
1366         (KJS::ConstDeclNode::streamTo):
1367         (KJS::ConstStatementNode::streamTo):
1368         (KJS::ScopeNode::streamTo):
1369         (KJS::VarStatementNode::streamTo):
1370         (KJS::ForNode::streamTo):
1371         (KJS::ForInNode::streamTo):
1372
1373 2007-12-21  Mark Rowe  <mrowe@apple.com>
1374
1375         Reviewed by Oliver Hunt.
1376
1377         * JavaScriptCore.exp: Remove unused symbol to prevent a weak external symbol
1378         being generated in JavaScriptCore.framework.
1379
1380 2007-12-21  Darin Adler  <darin@apple.com>
1381
1382         Requested by Maciej.
1383
1384         * kjs/nodes.h: Use the new NEVER_INLINE here and eliminate the old
1385         KJS_NO_INLINE. We don't want to have two, and we figured it was better
1386         to keep the one that's in WTF.
1387
1388 2007-12-21  Darin Adler  <darin@apple.com>
1389
1390         Reviewed by Eric.
1391
1392         - http://bugs.webkit.org/show_bug.cgi?id=16561
1393           remove debugger overhead from non-debugged JavaScript execution
1394
1395         1.022x as fast on SunSpider.
1396
1397         * JavaScriptCore.exp: Updated.
1398
1399         * kjs/NodeInfo.h: Renamed SourceElementsStub to SourceElements,
1400         since that more accurately describes the role of this object, which
1401         is a reference-counted wrapper for a Vector.
1402
1403         * kjs/Parser.cpp:
1404         (KJS::Parser::didFinishParsing): Changed parameter type to SourceElements,
1405         and use plain assignment instead of set.
1406         * kjs/Parser.h: Changed parameter type of didFinishParsing to a
1407         SourceElements. Also changed m_sourceElements; we now use a RefPtr instead
1408         of an OwnPtr as well.
1409
1410         * kjs/grammar.y: Got rid of all the calls to release() on SourceElements.
1411         That's now handed inside the constructors for various node types, since we now
1412         use vector swapping instead.
1413
1414         * kjs/nodes.cpp:
1415         (KJS::Node::rethrowException): Added NEVER_INLINE, because this was getting inlined
1416         and we want exception handling out of the normal code flow.
1417         (KJS::SourceElements::append): Moved here from the header. This now handles
1418         creating a BreakpointCheckStatement for each statement in the debugger case.
1419         That way we can get breakpoint handling without having it in every execute function.
1420         (KJS::BreakpointCheckStatement::BreakpointCheckStatement): Added.
1421         (KJS::BreakpointCheckStatement::execute): Added. Contains the code that was formerly
1422         in the StatementNode::hitStatement function and the KJS_BREAKPOINT macro.
1423         (KJS::BreakpointCheckStatement::streamTo): Added.
1424         (KJS::ArgumentListNode::evaluateList): Use KJS_CHECKEXCEPTIONVOID since the return
1425         type is void.
1426         (KJS::VarStatementNode::execute): Removed KJS_BREAKPOINT.
1427         (KJS::BlockNode::BlockNode): Changed parameter type to SourceElements.
1428         Changed code to use release since the class now contains a vector rather than
1429         a vector point.
1430         (KJS::BlockNode::optimizeVariableAccess): Updated since member is now a vector
1431         rather than a vector pointer.
1432         (KJS::BlockNode::execute): Ditto.
1433         (KJS::ExprStatementNode::execute): Removed KJS_BREAKPOINT.
1434         (KJS::IfNode::execute): Ditto.
1435         (KJS::IfElseNode::execute): Ditto.
1436         (KJS::DoWhileNode::execute): Ditto.
1437         (KJS::WhileNode::execute): Ditto.
1438         (KJS::ContinueNode::execute): Ditto.
1439         (KJS::BreakNode::execute): Ditto.
1440         (KJS::ReturnNode::execute): Ditto.
1441         (KJS::WithNode::execute): Ditto.
1442         (KJS::CaseClauseNode::optimizeVariableAccess): Updated since member is now a vector
1443         rather than a vector pointer.
1444         (KJS::CaseClauseNode::executeStatements): Ditto.
1445         (KJS::SwitchNode::execute): Removed KJS_BREAKPOINT.
1446         (KJS::ThrowNode::execute): Ditto.
1447         (KJS::TryNode::execute): Ditto.
1448         (KJS::ScopeNode::ScopeNode): Changed parameter type to SourceElements.
1449         (KJS::ProgramNode::ProgramNode): Ditto.
1450         (KJS::EvalNode::EvalNode): Ditto.
1451         (KJS::FunctionBodyNode::FunctionBodyNode): Ditto.
1452         (KJS::ScopeNode::optimizeVariableAccess): Updated since member is now a vector
1453         rather than a vector pointer.
1454
1455         * kjs/nodes.h: Removed hitStatement. Renamed SourceElements to StatementVector.
1456         Renamed SourceElementsStub to SourceElements and made it derive from
1457         ParserRefCounted rather than from Node, hold a vector rather than a pointer to
1458         a vector, and changed the release function to swap with another vector rather
1459         than the pointer idiom. Updated BlockNode and CaseClauseNode to hold actual
1460         vectors instead of pointers to vectors. Added BreakpointCheckStatement.
1461
1462         * kjs/nodes2string.cpp:
1463         (KJS::statementListStreamTo): Changed to work on a vector instead of a pointer
1464         to a vector.
1465         (KJS::BlockNode::streamTo): Ditto.
1466         (KJS::CaseClauseNode::streamTo):  Ditto.
1467
1468         * wtf/AlwaysInline.h: Added NEVER_INLINE.
1469         * wtf/PassRefPtr.h: Tweaked formatting. Added clear() function that matches the
1470         ones in OwnPtr and auto_ptr.
1471         * wtf/RefPtr.h: Ditto.
1472
1473 2007-12-21  Darin Adler  <darin@apple.com>
1474
1475         - fix broken regression tests
1476
1477         The broken tests were fast/js/do-while-expression-value.html and
1478         fast/js/while-expression-value.html.
1479
1480         * kjs/nodes.cpp: Check in the correct version of this file. I had accidentally landed
1481         an old version of my patch for bug 16471.
1482         (KJS::statementListExecute): The logic here was backwards. Have to set the value
1483         even for non-normal execution results.
1484
1485 2007-12-20  Alexey Proskuryakov  <ap@webkit.org>
1486
1487         Windows build fix
1488
1489         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Copy npruntime_internal.h
1490         to WebKitBuild.
1491
1492 2007-12-20  Eric Seidel  <eric@webkit.org>
1493
1494         Reviewed by mjs.
1495         
1496         Split IfNode into IfNode and IfElseNode for speedup.
1497         http://bugs.webkit.org/show_bug.cgi?id=16470
1498         
1499         SunSpider claims this is 1.003x as fast as before.
1500         (This required running with --runs 15 to get consistent enough results to tell!)
1501
1502         * kjs/grammar.y:
1503         * kjs/nodes.cpp:
1504         (KJS::IfNode::optimizeVariableAccess):
1505         (KJS::IfNode::execute):
1506         (KJS::IfNode::getDeclarations):
1507         (KJS::IfElseNode::optimizeVariableAccess):
1508         (KJS::IfElseNode::execute):
1509         (KJS::IfElseNode::getDeclarations):
1510         * kjs/nodes.h:
1511         (KJS::IfNode::):
1512         (KJS::IfElseNode::):
1513         * kjs/nodes2string.cpp:
1514         (KJS::IfNode::streamTo):
1515         (KJS::IfElseNode::streamTo):
1516
1517 2007-12-20  Darin Adler  <darin@apple.com>
1518
1519         Reviewed by Sam.
1520
1521         * wtf/OwnPtr.h:
1522         (WTF::operator==): Added.
1523         (WTF::operator!=): Added.
1524
1525 2007-12-20  Geoffrey Garen  <ggaren@apple.com>
1526
1527         Reviewed by Oliver Hunt.
1528         
1529         AST optimization: Avoid NULL-checking ForNode's child nodes.
1530         
1531         0.6% speedup on SunSpider.
1532         
1533         This is a proof of concept patch that demonstrates how to optimize
1534         grammar productions with optional components, like
1535         
1536             for (optional; optional; optional) {
1537                 ...
1538             }
1539             
1540         The parser emits NULL for an optional component that is not present.
1541
1542         Instead of checking for a NULL child at execution time, a node that
1543         expects an optional component to be present more often than not checks
1544         for a NULL child at construction time, and substitutes a viable
1545         alternative node in its place.
1546
1547         (We'd like the parser to start emitting NULL a lot more once we teach
1548         it to emit NULL for certain no-op productions like EmptyStatement and
1549         VariableStatement, so, as a foundation, it's important for nodes with
1550         NULL optional components to be fast.)
1551
1552         * kjs/Parser.cpp:
1553         (KJS::Parser::didFinishParsing): Check for NULL SourceElements. Also,
1554         moved didFinishParsing into the .cpp file because adding a branch while
1555         it was in the header file caused a substantial and inexplicable
1556         performance regression. (Did I mention that GCC is crazy?)
1557
1558         * kjs/grammar.y:
1559
1560         * kjs/nodes.cpp:
1561         (KJS::BlockNode::BlockNode): Check for NULL SourceElements.
1562         (KJS::ForNode::optimizeVariableAccess): No need to check for NULL here.
1563         (KJS::ForNode::execute): No need to check for NULL here.
1564         * kjs/nodes.h:
1565         (KJS::ForNode::): Check for NULL SourceElements. Substitute a TrueNode
1566         because it's semantically harmless, and it evaluates to boolean in an
1567         efficient manner.
1568
1569 2007-12-20  Oliver Hunt  <oliver@apple.com>
1570
1571         Reviewed by Geoff.
1572
1573         Slight logic reordering in JSImmediate::from(double)
1574
1575         This gives a 0.6% improvement in SunSpider.
1576
1577         * kjs/JSImmediate.h:
1578         (KJS::JSImmediate::from):
1579
1580 2007-12-20  Eric Seidel  <eric@webkit.org>
1581
1582         Reviewed by mjs.
1583
1584         Fix major Array regression introduced by 28899.
1585
1586         SunSpider claims this is at least 1.37x as fast as pre-regression. :)
1587
1588         * kjs/array_instance.cpp: make Arrays fast again!
1589
1590 2007-12-20  Eric Seidel  <eric@webkit.org>
1591
1592         Reviewed by Geoff, then re-rubber-stamped by Geoff after final search/replace and testing.
1593
1594         Small reworking of Date code for 4% speedup on Date tests (0.2% overall)
1595         http://bugs.webkit.org/show_bug.cgi?id=16537
1596
1597         Make msToYear human-readable
1598         Make msToDayInMonth slightly more readable and avoid recalculating msToYear
1599         Remove use of isInLeapYear to avoid calling msToYear
1600         Remove dayInYear call by changing msToDayInMonth to dayInMonthFromDayInYear
1601         Remove more duplicate calls to dayInYear and getUTCOffset for further speedup
1602
1603         * kjs/DateMath.cpp:
1604         (KJS::daysFrom1970ToYear):
1605         (KJS::msToYear):
1606         (KJS::monthFromDayInYear):
1607         (KJS::checkMonth):
1608         (KJS::dayInMonthFromDayInYear):
1609         (KJS::dateToDayInYear):
1610         (KJS::getDSTOffsetSimple):
1611         (KJS::getDSTOffset):
1612         (KJS::gregorianDateTimeToMS):
1613         (KJS::msToGregorianDateTime):
1614
1615 2007-12-20  Rodney Dawes  <dobey@wayofthemonkey.com>
1616
1617         Reviewed by Darin Adler.
1618
1619         Proxy includes of npruntime.h or npapi.h through npruntime_internal.h
1620         Include stdio.h in npapi.h for the use of FILE with XP_UNIX defined
1621         This is for building with X11, as some type and enum names conflict
1622         with #define names in X11 headers.
1623         http://bugs.webkit.org/show_bug.cgi?id=15669
1624
1625         * JavaScriptCore.xcodeproj/project.pbxproj:
1626         * bindings/NP_jsobject.h:
1627         * bindings/npapi.h:
1628         * bindings/npruntime.cpp:
1629         * bindings/npruntime_impl.h:
1630         * bindings/npruntime_priv.h:
1631         * bindings/npruntime_internal.h:
1632         * bindings/testbindings.cpp:
1633         * bindings/c/c_class.h:
1634         * bindings/c/c_runtime.h:
1635         * bindings/c/c_utility.h:
1636
1637 2007-12-20  Darin Adler  <darin@apple.com>
1638
1639         - re-fix http://bugs.webkit.org/show_bug.cgi?id=16471
1640           Completions need to be smaller (or not exist at all)
1641
1642         Same patch as last time with the test failures problem fixed.
1643
1644         * kjs/function.cpp:
1645         (KJS::GlobalFuncImp::callAsFunction): Make sure to check the completion
1646         type from newExec to see if the execute raised an exception.
1647
1648 2007-12-20  Darin Adler  <darin@apple.com>
1649
1650         - roll out that last change -- it was causing test failures;
1651           I'll check it back in after fixing them
1652
1653 2007-12-20  Darin Adler  <darin@apple.com>
1654
1655         Reviewed by Eric.
1656
1657         - http://bugs.webkit.org/show_bug.cgi?id=16471
1658           Completions need to be smaller (or not exist at all)
1659
1660         SuSpider shows 2.4% speedup.
1661
1662         Stop using completions in the execution engine.
1663         Instead, the completion type and label target are both
1664         stored in the ExecState.
1665
1666         * API/JSContextRef.cpp: Removed unneeded include of "completion.h".
1667         * bindings/runtime_method.cpp: Removed unused execute function.
1668         * bindings/runtime_method.h: Ditto.
1669
1670         * kjs/ExecState.h: Added completionType, breakOrContinueTarget,
1671         setCompletionType, setNormalCompletion, setBreakCompletion,
1672         setContinueCompletion, setReturnValueCompletion, setThrowCompletion,
1673         setInterruptedCompletion, m_completionType, and m_breakOrContinueTarget.
1674
1675         * kjs/completion.h: Removed constructor and getter for target
1676         for break and continue from Completion. This class is now only
1677         used for the public API to Interpreter and such.
1678
1679         * kjs/date_object.h: Removed unused execute function.
1680
1681         * kjs/function.cpp:
1682         (KJS::FunctionImp::callAsFunction): Removed some unneeded
1683         exception processing. Updated to call the new execute function
1684         and to get the completion type from the ExecState. Merged in
1685         the execute function, which repeated some of the same logic and
1686         was called only from here.
1687         (KJS::GlobalFuncImp::callAsFunction): More of the same for eval.
1688         * kjs/function.h: Removed execute.
1689
1690         * kjs/interpreter.cpp:
1691         (KJS::Interpreter::evaluate): Added code to convert the result of
1692         execut into a Completion.
1693
1694         * kjs/nodes.cpp:
1695         (KJS::Node::setErrorCompletion): Renamed from createErrorCompletion.
1696         Now sets the completion type in the ExecState.
1697         (KJS::Node::rethrowException): Now sets the completion type in the
1698         ExecState.
1699         (KJS::StatementNode::hitStatement): Now sets the completion type in
1700         the ExecState.
1701         (KJS::VarStatementNode::execute): Updated to put completion type in
1702         the ExecState instead of a Completion object.
1703         (KJS::statementListExecute): Ditto. Also changed the for loop to use
1704         indices instead of iterators.
1705         (KJS::BlockNode::execute): Updated return type.
1706         (KJS::EmptyStatementNode::execute): Updated to put completion type in
1707         the ExecState instead of a Completion object.
1708         (KJS::ExprStatementNode::execute): Ditto.
1709         (KJS::IfNode::execute): Ditto.
1710         (KJS::DoWhileNode::execute): Ditto. Also streamlined the logic a little
1711         to make the normal case a little faster and moved the end outside the
1712         loop so that "break" can do a break.
1713         (KJS::WhileNode::execute): Ditto.
1714         (KJS::ForNode::execute): Ditto.
1715         (KJS::ForInNode::execute): Ditto.
1716         (KJS::ContinueNode::execute): Updated to put completion type in
1717         the ExecState instead of a Completion object.
1718         (KJS::BreakNode::execute): Ditto.
1719         (KJS::ReturnNode::execute): Ditto.
1720         (KJS::WithNode::execute): Ditto.
1721         (KJS::CaseClauseNode::executeStatements): Ditto. Also renamed to have
1722         execute in its name to reflect the fact that it's a member of the same
1723         family of functions.
1724         (KJS::CaseBlockNode::executeBlock): Ditto.
1725         (KJS::SwitchNode::execute): Ditto.
1726         (KJS::LabelNode::execute): Ditto.
1727         (KJS::ThrowNode::execute): Ditto.
1728         (KJS::TryNode::execute): Ditto.
1729         (KJS::ProgramNode::execute): Ditto.
1730         (KJS::EvalNode::execute): Ditto.
1731         (KJS::FunctionBodyNode::execute): Ditto.
1732         (KJS::FuncDeclNode::execute): Ditto.
1733
1734         * kjs/nodes.h: Renamed setErrorCompletion to createErrorCompletion, made
1735         hitStatement protected, changed return value of execute to a JSValue,
1736         renamed evalStatements to executeStatements, and evalBlock to executeBlock.
1737
1738         * kjs/number_object.h: Removed unused execute function.
1739
1740 2007-12-20  Geoffrey Garen  <ggaren@apple.com>
1741
1742         Added Radar number.
1743
1744         * kjs/nodes.cpp:
1745         (KJS::ProgramNode::processDeclarations):
1746
1747 2007-12-20  Geoffrey Garen  <ggaren@apple.com>
1748
1749         Linux build fix: config.h has to come first.
1750
1751         * kjs/error_object.cpp:
1752
1753 2007-12-19  Geoffrey Garen  <ggaren@apple.com>
1754
1755         Reviewed by Oliver Hunt.
1756         
1757         Optimized global access to global variables, using a symbol table.
1758         
1759         SunSpider reports a 1.5% overall speedup, a 6.2% speedup on 3d-morph,
1760         and a whopping 33.1% speedup on bitops-bitwise-and.
1761
1762         * API/JSCallbackObjectFunctions.h: Replaced calls to JSObject:: with
1763         calls to Base::, since JSObject is not always our base class. This
1764         was always a bug, but the bug is even more apparent after some of my
1765         changes.
1766
1767         (KJS::::staticFunctionGetter): Replaced use of getDirect with call to
1768         getOwnPropertySlot. Global declarations are no longer stored in the
1769         property map, so a call to getDirect is insufficient for finding
1770         override properties.
1771
1772         * API/testapi.c: 
1773         * API/testapi.js: Added test for the getDirect change mentioned above.
1774
1775         * kjs/ExecState.cpp: 
1776         * kjs/ExecState.h: Dialed back the optimization to store a direct
1777         pointer to the localStorage buffer. One ExecState can grow the global
1778         object's localStorage without another ExecState's knowledge, so
1779         ExecState can't store a direct pointer to the localStorage buffer
1780         unless/until we invent a way to update all the relevant ExecStates.
1781
1782         * kjs/JSGlobalObject.cpp: Inserted the symbol table into get and put
1783         operations.
1784         (KJS::JSGlobalObject::reset): Reset the symbol table and local storage,
1785         too. Also, clear the property map here, removing the need for a
1786         separate call.
1787
1788         * kjs/JSVariableObject.cpp:
1789         * kjs/JSVariableObject.h: Added support for saving localStorage and the
1790         symbol table to the back/forward cache, and restoring them.
1791
1792         * kjs/function.cpp:
1793         (KJS::GlobalFuncImp::callAsFunction): Renamed progNode to evalNode
1794         because it's an EvalNode, not a ProgramNode.
1795
1796         * kjs/lookup.h:
1797         (KJS::cacheGlobalObject): Replaced put with faster putDirect, since
1798         that's how the rest of lookup.h works. putDirect is safe here because
1799         cacheGlobalObject is only used for objects whose names are not valid
1800         identifiers.
1801
1802         * kjs/nodes.cpp: The good stuff!
1803
1804         (KJS::EvalNode::processDeclarations): Replaced hasProperty with
1805         the new hasOwnProperty, which is slightly faster.
1806
1807         * kjs/object.h: Nixed clearProperties because clear() does this job now.
1808
1809         * kjs/property_map.cpp:
1810         * kjs/property_map.h: More back/forward cache support.
1811         
1812         * wtf/Vector.h:
1813         (WTF::::grow): Added fast non-branching grow function. I used it in
1814         an earlier version of this patch, even though it's not used anymore.
1815
1816 2007-12-09  Mark Rowe  <mrowe@apple.com>
1817
1818         Reviewed by Oliver Hunt.
1819
1820         Build fix for non-Mac platforms.  Move NodeInfo into its own header so that the YYTYPE
1821         declaration in grammar.h is able to declare members of that type.
1822
1823         * kjs/NodeInfo.h: Added.
1824         (KJS::createNodeInfo):
1825         (KJS::mergeDeclarationLists):
1826         (KJS::appendToVarDeclarationList):
1827         * kjs/grammar.y:
1828         * kjs/lexer.cpp:
1829
1830 2007-12-19  Oliver Hunt  <oliver@apple.com>
1831
1832         Make appendToVarDeclarationList static
1833
1834         RS=Weinig.
1835
1836         * kjs/grammar.y:
1837
1838 2007-12-18  Oliver Hunt  <oliver@apple.com>
1839
1840         Remove dead code due to removal of post-parse declaration discovery.
1841
1842         RS=Geoff.
1843
1844         Due to the removal of the declaration discovery pass after parsing we
1845         no longer need any of the logic used for that discovery.
1846
1847         * kjs/nodes.cpp:
1848         (KJS::Node::Node):
1849         (KJS::VarDeclNode::VarDeclNode):
1850         (KJS::BlockNode::BlockNode):
1851         (KJS::ForInNode::ForInNode):
1852         (KJS::CaseBlockNode::CaseBlockNode):
1853         * kjs/nodes.h:
1854         (KJS::VarStatementNode::):
1855         (KJS::IfNode::):
1856         (KJS::DoWhileNode::):
1857         (KJS::WhileNode::):
1858         (KJS::WithNode::):
1859         (KJS::LabelNode::):
1860         (KJS::TryNode::):
1861         (KJS::FuncDeclNode::):
1862         (KJS::CaseClauseNode::):
1863         (KJS::ClauseListNode::):
1864         (KJS::SwitchNode::):
1865
1866 2007-12-18  Oliver Hunt  <oliver@apple.com>
1867
1868         Replace post-parse pass to find declarations with logic in the parser itself
1869
1870         Reviewed by Geoff.
1871
1872         Instead of finding declarations in a pass following the initial parsing of
1873         a program, we incorporate the logic directly into the parser.  This lays
1874         the groundwork for further optimisations (such as improving performance in
1875         declaration expressions -- var x = y; -- to match that of standard assignment)
1876         in addition to providing a 0.4% performance improvement in SunSpider.
1877
1878         * JavaScriptCore.exp:
1879         * kjs/Parser.cpp:
1880         (KJS::Parser::parse):
1881         * kjs/Parser.h:
1882         (KJS::Parser::didFinishParsing):
1883         (KJS::Parser::parse):
1884         * kjs/grammar.y:
1885         * kjs/nodes.cpp:
1886         (KJS::ParserTracked::ParserTracked):
1887         (KJS::ParserTracked::~ParserTracked):
1888         (KJS::ParserTracked::ref):
1889         (KJS::ParserTracked::deref):
1890         (KJS::ParserTracked::refcount):
1891         (KJS::ParserTracked::clearNewTrackedObjects):
1892         (KJS::Node::Node):
1893         (KJS::ScopeNode::ScopeNode):
1894         (KJS::ProgramNode::ProgramNode):
1895         (KJS::EvalNode::EvalNode):
1896         (KJS::FunctionBodyNode::FunctionBodyNode):
1897         (KJS::FunctionBodyNode::initializeSymbolTable):
1898         (KJS::FunctionBodyNode::processDeclarations):
1899         * kjs/nodes.h:
1900         (KJS::ParserTracked::):
1901         (KJS::Node::):
1902         (KJS::ScopeNode::):
1903
1904 2007-12-18  Xan Lopez  <xan@gnome.org>
1905
1906         Reviewed by Geoff.
1907
1908         Fix http://bugs.webkit.org/show_bug.cgi?id=14521
1909         Bug 14521: JavaScriptCore fails to build on Linux/PPC gcc 4.1.2
1910         
1911         * wtf/TCSpinLock.h:
1912         (TCMalloc_SpinLock::Unlock):
1913
1914         Use less strict memory operand constraint on inline asm generation.
1915         PLATFORM(DARWIN) left unpatched due to Apple's GCC bug.
1916
1917         Patch by David Kilzer <ddkilzer@webkit.org>
1918
1919 2007-12-18  Mark Rowe  <mrowe@apple.com>
1920
1921         Rubber-stamped by Maciej Stachowiak.
1922
1923         Remove outdated and non-functioning project files for the Apollo port.
1924
1925         * JavaScriptCore.apolloproj: Removed.
1926
1927 2007-12-18  Darin Adler  <darin@apple.com>
1928
1929         - fix Windows build
1930
1931         * pcre/pcre_exec.cpp:
1932         (jsRegExpExecute): Change back from false/true to 0/1 -- I probably should not have
1933         deleted MATCH_MATCH and MATCH_NOMATCH, but I'm going to leave them out.
1934
1935 2007-12-18  Darin Adler  <darin@apple.com>
1936
1937         Reviewed by Geoff.
1938
1939         - fix http://bugs.webkit.org/show_bug.cgi?id=16458
1940           REGRESSION (r28164): regular expressions can now hang due to lack of a match limit
1941           <rdar://problem/5636067>
1942
1943         Test: fast/regex/slow.html
1944
1945         Slows down SunSpider a bit (about 1.01x); filed a bug to follow up on that:
1946         http://bugs.webkit.org/show_bug.cgi?id=16503
1947
1948         * pcre/pcre.h: Changed name of error code to not specifically mention "recursion".
1949         * pcre/pcre_exec.cpp:
1950         (match): Replaced the depth limit, MATCH_RECURSION_LIMIT, with a total match looping
1951         limit, matchLimit. Also eliminated the constants for MATCH_MATCH and MATCH_NOMATCH,
1952         since they are just true and false (1 and 0).
1953         (jsRegExpExecute): More of the MATCH_MATCH change.
1954
1955 2007-12-17  Darin Adler  <darin@apple.com>
1956
1957         - speculative build fix for non-gcc platforms
1958
1959         * pcre/pcre_exec.cpp: (match): Remove unused cases from return switch.
1960
1961 2007-12-16  Mark Rowe  <mrowe@apple.com>
1962
1963         Speculative build fix for non-Mac platforms.
1964
1965         * pcre/pcre_compile.cpp: Include string.h for memset, memmove, etc.
1966
1967 2007-12-16  Darin Adler  <darin@apple.com>
1968
1969         Reviewed by Maciej.
1970
1971         - http://bugs.webkit.org/show_bug.cgi?id=16438
1972         - removed some more unused code
1973         - changed quite a few more names to WebKit-style
1974         - moved more things out of pcre_internal.h
1975         - changed some indentation to WebKit-style
1976         - improved design of the functions for reading and writing
1977           2-byte values from the opcode stream (in pcre_internal.h)
1978
1979         * pcre/dftables.cpp:
1980         (main): Added the kjs prefix a normal way in lieu of using macros.
1981
1982         * pcre/pcre_compile.cpp: Moved some definitions here from pcre_internal.h.
1983         (errorText): Name changes, fewer typedefs.
1984         (checkEscape): Ditto. Changed uppercase conversion to use toASCIIUpper.
1985         (isCountedRepeat): Name change.
1986         (readRepeatCounts): Name change.
1987         (firstSignificantOpcode): Got rid of the use of OP_lengths, which is
1988         very lightly used here. Hard-coded the length of OP_BRANUMBER.
1989         (firstSignificantOpcodeSkippingAssertions): Ditto. Also changed to
1990         use the advanceToEndOfBracket function.
1991         (getOthercaseRange): Name changes.
1992         (encodeUTF8): Ditto.
1993         (compileBranch): Name changes. Removed unused after_manual_callout and
1994         the code to handle it. Removed code to handle OP_ONCE since we never
1995         emit this opcode. Changed to use advanceToEndOfBracket in more places.
1996         (compileBracket): Name changes.
1997         (branchIsAnchored): Removed code to handle OP_ONCE since we never emit
1998         this opcode.
1999         (bracketIsAnchored): Name changes.
2000         (branchNeedsLineStart): More fo the same.
2001         (bracketNeedsLineStart): Ditto.
2002         (branchFindFirstAssertedCharacter): Removed OP_ONCE code.
2003         (bracketFindFirstAssertedCharacter): More of the same.
2004         (calculateCompiledPatternLengthAndFlags): Ditto.
2005         (returnError): Name changes.
2006         (jsRegExpCompile): Ditto.
2007
2008         * pcre/pcre_exec.cpp: Moved some definitions here from pcre_internal.h.
2009         (matchRef): Updated names.
2010         Improved macros to use the do { } while(0) idiom so they expand to single
2011         statements rather than to blocks or multiple statements. And refeactored
2012         the recursive match macros.
2013         (MatchStack::pushNewFrame): Name changes.
2014         (getUTF8CharAndIncrementLength): Name changes.
2015         (match): Name changes. Removed the ONCE opcode.
2016         (jsRegExpExecute): Name changes.
2017
2018         * pcre/pcre_internal.h: Removed quite a few unneeded includes. Rewrote
2019         quite a few comments. Removed the macros that add kjs prefixes to the
2020         functions with external linkage; instead renamed the functions. Removed
2021         the unneeded typedefs pcre_uint16, pcre_uint32, and uschar. Removed the
2022         dead and not-all-working code for LINK_SIZE values other than 2, although
2023         we aim to keep the abstraction working. Removed the OP_LENGTHS macro.
2024         (put2ByteValue): Replaces put2ByteOpcodeValueAtOffset.
2025         (get2ByteValue): Replaces get2ByteOpcodeValueAtOffset.
2026         (put2ByteValueAndAdvance): Replaces put2ByteOpcodeValueAtOffsetAndAdvance.
2027         (putLinkValueAllowZero): Replaces putOpcodeValueAtOffset; doesn't do the
2028         addition, since a comma is really no better than a plus sign. Added an
2029         assertion to catch out of range values and changed the parameter type to
2030         int rather than unsigned.
2031         (getLinkValueAllowZero): Replaces getOpcodeValueAtOffset.
2032         (putLinkValue): New function that most former callers of the
2033         putOpcodeValueAtOffset function can use; asserts the value that is
2034         being stored is non-zero and then calls putLinkValueAllowZero.
2035         (getLinkValue): Ditto.
2036         (putLinkValueAndAdvance): Replaces putOpcodeValueAtOffsetAndAdvance. No
2037         caller was using an offset, which makes sense given the advancing behavior.
2038         (putLinkValueAllowZeroAndAdvance): Ditto.
2039         (isBracketOpcode): Added. For use in an assertion.
2040         (advanceToEndOfBracket): Renamed from moveOpcodePtrPastAnyAlternateBranches,
2041         and removed comments about how it's not well designed. This function takes
2042         a pointer to the beginning of a bracket and advances to the end of the
2043         bracket.
2044
2045         * pcre/pcre_tables.cpp: Updated names.
2046         * pcre/pcre_ucp_searchfuncs.cpp:
2047         (kjs_pcre_ucp_othercase): Ditto.
2048         * pcre/pcre_xclass.cpp:
2049         (getUTF8CharAndAdvancePointer): Ditto.
2050         (kjs_pcre_xclass): Ditto.
2051         * pcre/ucpinternal.h: Ditto.
2052
2053         * wtf/ASCIICType.h:
2054         (WTF::isASCIIAlpha): Added an int overload, like the one we already have for
2055         isASCIIDigit.
2056         (WTF::isASCIIAlphanumeric): Ditto.
2057         (WTF::isASCIIHexDigit): Ditto.
2058         (WTF::isASCIILower): Ditto.
2059         (WTF::isASCIISpace): Ditto.
2060         (WTF::toASCIILower): Ditto.
2061         (WTF::toASCIIUpper): Ditto.
2062
2063 2007-12-16  Darin Adler  <darin@apple.com>
2064
2065         Reviewed by Maciej.
2066
2067         - fix http://bugs.webkit.org/show_bug.cgi?id=16459
2068           REGRESSION: assertion failure with regexp with \B in a case-ignoring character range
2069           <rdar://problem/5646361>
2070
2071         The problem was that \B was not handled properly in character classes.
2072
2073         Test: fast/js/regexp-overflow.html
2074
2075         * pcre/pcre_compile.cpp:
2076         (check_escape): Added handling of ESC_b and ESC_B in character classes here.
2077         Allows us to get rid of the handling of \b in character classes from all the
2078         call sites that handle it separately and to handle \B properly as well.
2079         (compileBranch): Remove the ESC_b handling, since it's not needed any more.
2080         (calculateCompiledPatternLengthAndFlags): Ditto.
2081
2082 2007-12-16  Mark Rowe  <mrowe@apple.com>
2083
2084         Reviewed by Maciej Stachowiak.
2085
2086         Fix http://bugs.webkit.org/show_bug.cgi?id=16448
2087         Bug 16448: [GTK] Celtic Kane JavaScript performance on Array test is slow relative to Mac
2088
2089         * kjs/array_instance.cpp:
2090         (KJS::compareByStringPairForQSort):
2091         (KJS::ArrayInstance::sort): Convert JSValue's to strings once up front and then sort the
2092         results.  This avoids calling toString twice per comparison, but requires a temporary buffer
2093         so we only use this approach in cases where the array being sorted is not too large.
2094
2095 2007-12-16  Geoffrey Garen  <ggaren@apple.com>
2096
2097         Reviewed by Darin Adler and Maciej Stachowiak.
2098         
2099         More refactoring to support global variable optimization.
2100         
2101         Changed SymbolTable to use RefPtr<UString::Rep> as its key instead of
2102         UString::Rep*. With globals, the symbol table can outlast the
2103         declaration node for any given symbol, so the symbol table needs to ref
2104         its symbol names.
2105         
2106         In support, specialized HashMaps with RefPtr keys to allow lookup
2107         via raw pointer, avoiding refcount churn.
2108         
2109         SunSpider reports a .6% speedup (prolly just noise).
2110
2111         * JavaScriptCore.vcproj/WTF/WTF.vcproj: Added new file: wtf/RefPtrHashMap.h
2112         * JavaScriptCore.xcodeproj/project.pbxproj: ditto
2113
2114         * kjs/JSVariableObject.cpp:
2115         (KJS::JSVariableObject::getPropertyNames): Symbol table keys are RefPtrs now.
2116
2117         * kjs/SymbolTable.h: Modified key traits to match RefPtr. Added a
2118         static Rep* for null, which helps compute the deletedValue() trait.
2119
2120         * wtf/HashMap.h: #include the RefPtr specialization so everyone can use it.
2121
2122         * wtf/RefPtrHashMap.h: Copied from wtf/HashMap.h. Added overloaded versions
2123         of find(), contains(), get(), set(), add(), remove(), and take() that take
2124         raw pointers as keys.
2125
2126 2007-12-16  Alexey Proskuryakov  <ap@webkit.org>
2127
2128         Reviewed by Darin.
2129
2130         http://bugs.webkit.org/show_bug.cgi?id=16162
2131         Problems with float parsing on Linux (locale-dependent parsing was used).
2132
2133         * kjs/dtoa.cpp: Removed USE_LOCALE to reduce future confusion.
2134         * kjs/lexer.cpp: (KJS::Lexer::lex): Parse with kjs_strtod, not the system one.
2135
2136 2007-12-14  Alp Toker  <alp@atoker.com>
2137
2138         Reviewed by Mark Rowe.
2139
2140         Enable the AllInOneFile.cpp optimization for the GTK+ port.
2141
2142         * JavaScriptCore.pri:
2143
2144 2007-12-14  Mark Rowe  <mrowe@apple.com>
2145
2146         Unreviewed.  Remove commented out fprintf's that were for debugging purposes only.
2147
2148         * wtf/FastMalloc.cpp:
2149         (WTF::TCMalloc_PageHeap::IncrementalScavenge):
2150
2151 2007-12-14  Mark Rowe  <mrowe@apple.com>
2152
2153         Reviewed by Maciej Stachowiak.
2154
2155         Don't use the MADV_DONTNEED code path for now as it has no effect on Mac OS X and is
2156         currently untested on other platforms.
2157
2158         * wtf/TCSystemAlloc.cpp:
2159         (TCMalloc_SystemRelease): Return after releasing memory rather than potentially falling
2160         through into another mechanism if multiple are supported.
2161
2162 2007-12-14  Alp Toker  <alp@atoker.com>
2163
2164         Build fix for GTK+/Qt and ports that don't use AllInOneFile.cpp.
2165
2166         Include UnusedParam.h.
2167
2168         * wtf/TCSystemAlloc.cpp:
2169
2170 2007-12-14  Oliver Hunt  <oliver@apple.com>
2171
2172         Reviewed by Stephanie.
2173
2174         Fix build on windows
2175
2176         * wtf/FastMalloc.cpp:
2177         (WTF::TCMalloc_PageHeap::IncrementalScavenge):
2178
2179 2007-12-14  Dan Bernstein  <mitz@apple.com>
2180
2181         - try again to fix the Windows build
2182
2183         * wtf/TCSystemAlloc.cpp:
2184         (TCMalloc_SystemRelease):
2185
2186 2007-12-14  Dan Bernstein  <mitz@apple.com>
2187
2188         - try to fix the Windows build
2189
2190         * wtf/TCSystemAlloc.cpp:
2191         (TCMalloc_SystemRelease):
2192
2193 2007-12-14  Mark Rowe <mrowe@apple.com>
2194
2195         Reviewed by Maciej and Oliver.
2196
2197         Add final changes to make TCMalloc release memory to the system.
2198         This results in a 0.4% regression against ToT, but this is offset
2199         against the gains made by the original TCMalloc r38 merge - in fact
2200         we retain around 0.3-0.4% progression overall.
2201
2202         * wtf/FastMalloc.cpp:
2203         (WTF::InitSizeClasses):
2204         (WTF::TCMalloc_PageHeap::IncrementalScavenge):
2205         * wtf/TCSystemAlloc.cpp:
2206         (TCMalloc_SystemRelease):
2207
2208 2007-12-14  Darin Adler  <darin@apple.com>
2209
2210         Reviewed by Sam.
2211
2212         - removed unnecessary includes of "Vector.h"
2213
2214         * wtf/HashMap.h:
2215         (WTF::copyKeysToVector): Make the type of the vector be a template parameter.
2216         This allows copying keys into a vector of a base class or one with an inline capacity.
2217         (WTF::copyValuesToVector): Ditto.
2218         * wtf/HashSet.h:
2219         (WTF::copyToVector): Ditto.
2220
2221 2007-12-14  Anders Carlsson  <andersca@apple.com>
2222
2223         Reviewed by Darin and Geoff.
2224
2225         <rdar://problem/5619295> 
2226         REGRESSION: 303-304: Embedded YouTube video fails to render- JS errors (16150) (Flash 9)
2227         
2228         Get rid of unnecessary and incorrect security checks for plug-ins accessing JavaScript objects. 
2229         
2230         The way this used to work was that each NPObject that wrapped a JSObject would have a root object
2231         corresponding to the frame object (used for managing the lifecycle) and an origin root object (used for
2232         doing security checks). 
2233         
2234         This would prevent a plug-in from accessing a frame's window object if it's security origin was different
2235         (some parts of the window, such as the location object, can be accessed from frames with different security 
2236         origins, and those checks are being done in WebCore).
2237         
2238         Also, if a plug-in were to access a window object of a frame that later went away, it could lead to that
2239         Window JSObject being garbage collected and the NPObject pointing to freed memory.
2240         
2241         How this works now is that there is no origin root object anymore, and all NPObject wrappers that are created
2242         for a plug-in will have the root object of the containing frame of that plug-in.
2243         
2244         * bindings/NP_jsobject.cpp:
2245         (jsDeallocate):
2246         Don't free the origin root object.
2247         
2248         (_NPN_CreateScriptObject):
2249         Remove the origin root object parameter.
2250         
2251         (_NPN_InvokeDefault):
2252         (_NPN_Invoke):
2253         (_NPN_Evaluate):
2254         (_NPN_GetProperty):
2255         (_NPN_SetProperty):
2256         (_NPN_RemoveProperty):
2257         (_NPN_HasProperty):
2258         (_NPN_HasMethod):
2259         (_NPN_Enumerate):
2260         Get rid of all security checks.
2261         
2262         * bindings/NP_jsobject.h:
2263         Remove originRootObject from the JavaScriptObject struct.
2264         
2265         * bindings/c/c_utility.cpp:
2266         (KJS::Bindings::convertValueToNPVariant):
2267         Always use the root object from the ExecState.
2268         
2269 2007-12-13  Steve Falkenburg  <sfalken@apple.com>
2270
2271         Move source file generation into its own vcproj to fix build dependencies.
2272
2273         Reviewed by Adam.
2274
2275         * JavaScriptCore.vcproj/JavaScriptCore.sln:
2276         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
2277         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: Added.
2278         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: Added.
2279         * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln:
2280
2281 2007-12-13  Alp Toker  <alp@atoker.com>
2282
2283         http://bugs.webkit.org/show_bug.cgi?id=16406
2284         [Gtk] JavaScriptCore needs -lpthread
2285
2286         Build fix for Debian and any other platforms that don't implicitly
2287         link to pthread.
2288
2289         Link to pthread on non-Windows platforms until this dependency is
2290         removed from JSC.
2291
2292 2007-12-11  Geoffrey Garen  <ggaren@apple.com>
2293
2294         Reviewed by Sam Weinig.
2295         
2296         Build fix: Note some variables that are used only for ASSERTs.
2297
2298         * API/testapi.c:
2299         (Base_finalize):
2300         (globalObject_initialize):
2301         (testInitializeFinalize):
2302
2303 2007-12-11  Geoffrey Garen  <ggaren@apple.com>
2304
2305         Reviewed by Darin Adler.
2306         
2307         Fixed: All JS tests crash on Windows.
2308
2309         NDEBUG wasn't defined when compiling testkjs in release builds, so the
2310         HashTable definition in HashTable.h included an extra data member.
2311
2312         The solution was to add NDEBUG to the release testkjs configuration on
2313         Windows and Mac.
2314         
2315         For giggles, I also added other missing #defines to testkjs on Windows.
2316
2317         * Configurations/Base.xcconfig:
2318         * Configurations/JavaScriptCore.xcconfig:
2319         * JavaScriptCore.vcproj/testkjs/testkjs.vcproj:
2320         * JavaScriptCore.xcodeproj/project.pbxproj:
2321         * kjs/testkjs.cpp:
2322         (main):
2323
2324 2007-12-11  Geoffrey Garen  <ggaren@apple.com>
2325
2326         Reviewed by Darin Adler.
2327         
2328         Removed bogus ASSERT.
2329         
2330         ASSERT should only be used when we know that a code path will not be
2331         taken. This code path is taken often during the jsFunFuzz test.
2332
2333         * pcre/pcre_exec.cpp:
2334         (jsRegExpExecute):
2335
2336 2007-12-11  Darin Adler  <darin@apple.com>
2337
2338         * wtf/unicode/qt4/UnicodeQt4.h: Try to fix Qt build by adding U16_IS_SINGLE.
2339
2340 2007-12-10  Darin Adler  <darin@apple.com>
2341
2342         Reviewed by Sam Weinig.
2343
2344         - fix http://bugs.webkit.org/show_bug.cgi?id=16379
2345           REGRESSION(r28525): Failures in http/tests/xmlhttprequest/response-encoding.html and
2346           fast/dom/xmlhttprequest-html-response-encoding.html
2347           and <rdar://problem/5640230> REGRESSION (306A4-ToT): Access violation in PCRE function
2348           find_firstassertedchar
2349
2350         Test: fast/js/regexp-find-first-asserted.html
2351
2352         * pcre/pcre_compile.cpp:
2353         (compileBracket): Take out unnecessary initialization of out parameters.
2354         (branchFindFirstAssertedCharacter): Added. Broke out the half of the function that handles
2355         a branch.
2356         (bracketFindFirstAssertedCharacter): Renamed from find_firstassertedchar. Also removed the
2357         options parameter -- the caller can handle the options.
2358         (jsRegExpCompile): Changed call site to call the appropriate bracket or branch version of
2359         the find_firstassertedchar function. Also put the REQ_IGNORE_CASE code here instead of
2360         passing in the options.
2361
2362 2007-12-10  Geoffrey Garen  <ggaren@apple.com>
2363
2364         Reviewed by Sam Weinig.
2365
2366         Split this:
2367         
2368                             FunctionBodyNode
2369                                     ^
2370                                     |
2371                                 ProgramNode
2372             
2373         into this:
2374             
2375                                 ScopeNode
2376                 ^                   ^                   ^
2377                 |                   |                   |
2378         FunctionBodyNode        ProgramNode         EvalNode
2379
2380         in preparation for specializing each class more while optimizing global
2381         variable access.
2382         
2383         Also removed some cruft from the FunctionBodyNode interface to simplify
2384         things.
2385         
2386         SunSpider says this patch is a .8% speedup, which seems reasonable,
2387         since it eliminates a few branches and adds KJS_FAST_CALL in a few
2388         places.
2389         
2390         Layout tests and JS tests pass. Also, this baby builds on Windows! (Qt
2391         mileage may vary...)
2392
2393 2007-12-10  Geoffrey Garen  <ggaren@apple.com>
2394
2395         RS by Mark Rowe.
2396         
2397         Mac build fix: added some exported symbols, now that Parser::parse is
2398         defined in the header.
2399
2400         * JavaScriptCore.exp:
2401
2402 2007-12-10  Sam Weinig  <sam@webkit.org>
2403
2404         Build fix.
2405
2406         Template methods need to be in the header.
2407
2408         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
2409         * kjs/Parser.cpp:
2410         * kjs/Parser.h:
2411         (KJS::Parser::parse):
2412
2413 2007-12-10  Geoffrey Garen  <ggaren@apple.com>
2414
2415         Reviewed by Sam Weinig.
2416         
2417         Merged different implementations of Parser::parse into a single,
2418         templatized implementation, in preparation for adding yet another
2419         implementation for "eval" code.
2420         
2421         JS and layout tests pass.
2422
2423 2007-12-10  Timothy Hatcher  <timothy@apple.com>
2424
2425         Reviewed by Mark Rowe
2426
2427         <rdar://problem/5639463> Bundle versions on Tiger should be 4523.x not 523.x
2428
2429         * Configurations/Version.xcconfig: Some Tiger versions of Xcode don't set MAC_OS_X_VERSION_MAJOR,
2430           so assume Tiger and use a 4 for the SYSTEM_VERSION_PREFIX.
2431
2432 2007-12-10  Mark Rowe  <mrowe@apple.com>
2433
2434         Tiger build fix.
2435
2436         * kjs/grammar.y: Use @1 and @0 in place of @$ where Tiger's bison chokes.
2437
2438 2007-12-10  Darin Adler  <darin@apple.com>
2439
2440         Reviewed by Mark Rowe.
2441
2442         - fix http://bugs.webkit.org/show_bug.cgi?id=16375
2443           REGRESSION: Safari crashes on quit
2444
2445         Probably a debug-only issue.
2446
2447         * kjs/Parser.cpp:
2448         (KJS::parser): Create the parser and never destroy it by using a pointer instead
2449         of a global object.
2450
2451 2007-12-09  Darin Adler  <darin@apple.com>
2452
2453         Reviewed by Sam Weinig.
2454
2455         - fix http://bugs.webkit.org/show_bug.cgi?id=16369
2456           REGRESSION (r28525): regular expression tests failing due to bad firstByte optimization
2457
2458         * pcre/pcre_compile.cpp: Changed some names to use interCaps intead of under_scores.
2459         (branchIsAnchored): Broke is_anchored into two separate functions; this one works on a
2460         branch and the other on an anchor. The old function would only work on a bracket.
2461         Also removed unneeded parameters; the anchored check does not require the bracket
2462         map or the options any more because we have a reduced set of features.
2463         (bracketIsAnchored): Ditto.
2464         (branchNeedsLineStart): Broke canApplyFirstCharOptimization into two functions and gave
2465         both a better name. This is the function that was returning the wrong value. The failure
2466         was beacuse the old function would only work on a bracket.
2467         (bracketNeedsLineStart): Ditto.
2468         (jsRegExpCompile): Changed to call the appropriate branch or bracket flavor of the
2469         functions based on whether we compiled an outer bracket. Also removed inaccurate comments
2470         and unneeded parameters.
2471
2472         - other small changes
2473
2474         * pcre/pcre.h: Renumbered error codes, in a logical order. First, normal failure, then
2475         the recursion limit, then running out of memory, and finally an unexpected internal error.
2476
2477         * pcre/pcre_exec.cpp: Fixed indentation.
2478         (jsRegExpExecute): Corrected an inaccurate comment.
2479
2480 2007-12-09  Darin Adler  <darin@apple.com>
2481
2482         Reviewed by Maciej.
2483
2484         - fix http://bugs.webkit.org/show_bug.cgi?id=16370
2485           REGRESSION (r28540): source URL and line number no longer set for outer function/programs
2486
2487         Test: fast/js/exception-linenums-in-html-1.html
2488         Test: fast/js/exception-linenums-in-html-2.html
2489         Test: fast/js/exception-linenums.html
2490
2491         By the time the ProgramNode was constructed, the source URL was empty.
2492
2493         * kjs/Parser.cpp:
2494         (KJS::Parser::parseProgram): Added code to set and clear m_sourceURL, which is now
2495         handled here instead of in the lexer; it needs to still be set when we create the
2496         program node. Call setLoc to set the first and last line number.
2497         (KJS::Parser::parseFunctionBody): Ditto, but for the body.
2498         (KJS::Parser::parse): Removed the sourceURL argument.
2499
2500         * kjs/Parser.h: Added sourceURL(), m_sourceURL, and m_lastLine. Added a lastLine
2501         parameter to didFinishParsing, since the bison grammar knows the last line number
2502         and we otherwise do not know it. Removed the sourceURL parameter from parse, since
2503         that's now handled at a higher level.
2504
2505         * kjs/grammar.y: Pass the last line number to didFinishParsing.
2506
2507         * kjs/lexer.cpp:
2508         (KJS::Lexer::setCode): Removed the sourceURL argument and the code to set m_sourceURL.
2509         (KJS::Lexer::clear): Ditto.
2510         * kjs/lexer.h: More of the same.
2511
2512         * kjs/nodes.cpp:
2513         (KJS::FunctionBodyNode::FunctionBodyNode): Get the source URL from the parser rather
2514         than from the lexer. Removed unneeded call to setLoc, since the line numbers already
2515         both default to -1.
2516
2517 2007-12-08  Oliver Hunt  <oliver@apple.com>
2518
2519         Reviewed by Sam W.
2520
2521         Split the ENABLE_SVG_EXPERIMENTAL_FEATURES flag into separate flags.
2522         
2523         Fixes <rdar://problem/5620249> Must disable SVG animation
2524         <rdar://problem/5612772> Disable SVG filters on Mac to match Windows behavior
2525         
2526         Minor config changes.
2527
2528         * Configurations/JavaScriptCore.xcconfig:
2529         * JavaScriptCore.xcodeproj/project.pbxproj:
2530
2531 2007-12-07  Sam Weinig  <sam@webkit.org>
2532
2533         Reviewed by Darin.
2534
2535         - Rename isSafeScript to allowsAccessFrom.
2536
2537         * bindings/NP_jsobject.cpp:
2538         (_isSafeScript):
2539         * kjs/JSGlobalObject.h:
2540         (KJS::JSGlobalObject::allowsAccessFrom): Reverse caller/argument of allowsAccessFrom to match
2541         the new call.
2542
2543 2007-12-07  Geoffrey Garen  <ggaren@apple.com>
2544
2545         Reviewed by Sam Weinig.
2546         
2547         Refactored variable access optimization: Removed the assumption that
2548         the FunctionBodyNode holds the symbol table.
2549         
2550 2007-12-07  Geoffrey Garen  <ggaren@apple.com>
2551
2552         Build fix: added #include.
2553
2554         * kjs/nodes.cpp:
2555
2556 2007-12-07  Geoffrey Garen  <ggaren@apple.com>
2557
2558         Build fix: added #include.
2559
2560         * kjs/interpreter.cpp:
2561
2562 2007-12-07  Geoffrey Garen  <ggaren@apple.com>
2563
2564         Build fix: added #include.
2565
2566         * kjs/grammar.y:
2567
2568 2007-12-07  Geoffrey Garen  <ggaren@apple.com>
2569
2570         Build fix: added #include.
2571
2572         * kjs/function_object.cpp:
2573
2574 2007-12-07  Geoffrey Garen  <ggaren@apple.com>
2575
2576         Reviewed by Sam Weinig.
2577         
2578         Fixed crash seen running layout tests.
2579         
2580         Reverted a change I made earlier today. Added a comment to try to
2581         discourage myself from making this mistake a third time.
2582
2583         * kjs/function.cpp:
2584         (KJS::ActivationImp::mark):
2585         * kjs/function.h:
2586         (KJS::ActivationImp::ActivationImpData::ActivationImpData):
2587
2588 2007-12-07  Geoffrey Garen  <ggaren@apple.com>
2589
2590         Reviewed by Sam Weinig.
2591         
2592         Refactored parsing of global code: Removed the assumption that 
2593         ProgramNode inherits from FunctionBodyNode from the parser.
2594
2595         * kjs/Parser.cpp:
2596         (KJS::Parser::parseProgram):
2597         (KJS::Parser::parseFunctionBody):
2598         (KJS::Parser::parse):
2599         * kjs/Parser.h:
2600         (KJS::Parser::didFinishParsing):
2601         * kjs/function.cpp:
2602         * kjs/grammar.y:
2603         * kjs/nodes.h:
2604
2605 2007-12-07  Geoffrey Garen  <ggaren@apple.com>
2606
2607         Build fix: added JSVariableObject.cpp to the .pri file.
2608
2609         * JavaScriptCore.pri:
2610
2611 2007-12-07  Geoffrey Garen  <ggaren@apple.com>
2612
2613         Build fix: added #include.
2614
2615         * kjs/function.cpp:
2616
2617 2007-12-07  Steve Falkenburg  <sfalken@apple.com>
2618
2619         Re-named our B&I flag from BUILDBOT to PRODUCTION.
2620
2621         Reviewed by Sam Weinig.
2622
2623         * JavaScriptCore.vcproj/JavaScriptCore.make:
2624         * JavaScriptCore.vcproj/testkjs/testkjs.vcproj:
2625
2626 2007-12-07  Geoffrey Garen  <ggaren@apple.com>
2627
2628         Build fix: removed stray name qualification.
2629
2630         * kjs/function.h:
2631         (KJS::ActivationImp::ActivationImp):
2632
2633 2007-12-07  Geoffrey Garen  <ggaren@apple.com>
2634
2635         Build fix: moved functions with qualified names outside of class
2636         declaration.
2637
2638         * kjs/JSVariableObject.h:
2639         (KJS::JSVariableObject::symbolTableGet):
2640         (KJS::JSVariableObject::symbolTablePut):
2641
2642 2007-12-07  Geoffrey Garen  <ggaren@apple.com>
2643
2644         Reviewed by Sam Weinig.
2645
2646         Next step in refactoring JSGlobalObject: Added JSVariableObject class,
2647         and factored symbol-table-related code into it. (JSGlobalObject doesn't
2648         use the symbol table code yet, though.)
2649         
2650         Layout and JS tests, and testapi, pass. SunSpider reports no regression.
2651
2652 2007-12-07  Darin Adler  <darin@apple.com>
2653
2654         Reviewed by Geoff.
2655
2656         - fix http://bugs.webkit.org/show_bug.cgi?id=16185
2657           jsRegExpCompile should not add implicit non-capturing bracket
2658
2659         While this does not make SunSpider faster, it will make many regular
2660         expressions a bit faster.
2661
2662         * pcre/pcre_compile.cpp: Moved CompileData struct in here from the
2663         header since it's private to this file.
2664         (compile_branch): Updated for function name change.
2665         (compile_bracket): Renamed from compile_regex, since, for one thing,
2666         this does not compile an entire regular expression.
2667         (calculateCompiledPatternLengthAndFlags): Removed unused item_count
2668         local variable. Renamed CompileData to cd instead of compile_block
2669         to be consistent with other functions. Added code to set the
2670         needOuterBracket flag if there's at least one "|" at the outer level.
2671         (jsRegExpCompile): Renamed CompileData to cd instead of compile_block
2672         to be consistent with other functions. Removed unneeded "size" field
2673         from the compiled regular expression. If no outer bracket is needed,
2674         then use compile_branch to compile the regular expression.
2675
2676         * pcre/pcre_internal.h: Removed the CompileData struct, which is now
2677         private to pcre_compile.cpp. Removed the size member from JSRegExp.
2678
2679 2007-12-06  Kevin Ollivier  <kevino@theolliviers.com>
2680
2681         MSVC7 build fix due to a compiler bug with placement new and/or
2682         templates and casting.
2683
2684         Reviewed by Darin Adler.
2685
2686         * wtf/Vector.h:
2687         (WTF::::append):
2688
2689 2007-12-06  Darin Adler  <darin@apple.com>
2690
2691         Reviewed by Eric Seidel.
2692
2693         - fix http://bugs.webkit.org/show_bug.cgi?id=16321
2694           new RegExp("[\u0097]{4,6}", "gmy") crashes in DEBUG builds
2695           <rdar://problem/5632992>
2696
2697         Test: fast/js/regexp-oveflow.html
2698
2699         * pcre/pcre_compile.cpp:
2700         (calculateCompiledPatternLengthAndFlags): In the case where a single character
2701         character class is optimized to not use a character class at all, the preflight
2702         code was not setting the lastitemlength variable.
2703
2704 2007-12-05  Mark Rowe  <mrowe@apple.com>
2705
2706         Qt Windows build fix.  Include the time-related headers in the correct place.
2707
2708         * kjs/JSGlobalObject.cpp:
2709         * kjs/interpreter.cpp:
2710
2711 2007-12-05  Darin Adler  <darin@apple.com>
2712
2713         Not reviewed; just undoing a previous commit.
2714
2715         - remove earlier incorrect fix for http://bugs.webkit.org/show_bug.cgi?id=16220
2716           <rdar://problem/5625221> Crash opening www.news.com (CNet)
2717
2718         The real bug was the backwards ?: in the compile function, which Geoff just
2719         fixed. Rolling out the incorrect earlier fix.
2720
2721         * pcre/pcre_compile.cpp: (calculateCompiledPatternLengthAndFlags): Take out
2722         the unneeded preflight change. The regression test proves this is still working
2723         fine, so the bug remains fixed.
2724
2725 2007-12-01  Mark Rowe  <mrowe@apple.com>
2726
2727         Build fix.  Include headers before trying to use the things that they declare.
2728
2729         * kjs/JSImmediate.cpp:
2730         * kjs/nodes.cpp:
2731         * kjs/object.cpp:
2732         * kjs/object_object.cpp:
2733         * kjs/regexp_object.cpp:
2734         * kjs/string_object.cpp:
2735
2736 2007-12-05  Geoffrey Garen  <ggaren@apple.com>
2737
2738         Build fix: added some #includes.
2739
2740         * kjs/JSImmediate.cpp:
2741
2742 2007-12-05  Geoffrey Garen  <ggaren@apple.com>
2743
2744         Build fix: added some #includes.
2745
2746         * kjs/JSGlobalObject.cpp:
2747         * kjs/JSImmediate.cpp:
2748
2749 2007-12-05  Geoffrey Garen  <ggaren@apple.com>
2750
2751         Build fix: Fixed #include spelling.
2752
2753         * kjs/debugger.cpp:
2754
2755 2007-12-05  Geoffrey Garen  <ggaren@apple.com>
2756
2757         Build fix: added #include.
2758
2759         * kjs/debugger.cpp:
2760
2761 2007-12-05  Geoffrey Garen  <ggaren@apple.com>
2762
2763         Build fix: added a forward declaration.
2764
2765         * kjs/debugger.h:
2766
2767 2007-12-05  Geoffrey Garen  <ggaren@apple.com>
2768
2769         Build fix: added an #include.
2770
2771         * kjs/error_object.cpp:
2772
2773 2007-12-05  Geoffrey Garen  <ggaren@apple.com>
2774
2775         Build fix: added an #include.
2776
2777         * kjs/bool_object.cpp:
2778
2779 2007-12-05  Geoffrey Garen  <ggaren@apple.com>
2780
2781         Reviewed by Darin Adler.
2782
2783         Third step in refactoring JSGlobalObject: Moved data members and 
2784         functions accessing data members from Interpreter to JSGlobalObject.
2785         Changed Interpreter member functions to static functions.
2786         
2787         This resolves a bug in global object bootstrapping, where the global
2788         ExecState could be used when uninitialized.
2789         
2790         This is a big change, but it's mostly code motion and renaming.
2791         
2792         Layout and JS tests, and testjsglue and testapi, pass. SunSpider reports
2793         a .7% regression, but Shark sees no difference related to this patch,
2794         and SunSpider reported a .7% speedup from an earlier step in this 
2795         refactoring, so I think it's fair to call that a wash.
2796
2797 2007-12-05  Geoffrey Garen  <ggaren@apple.com>
2798
2799         Reviewed by Darin Adler. (Or vice versa.)
2800         
2801         Fixed ASSERT during run-javascriptcore-tests. (Darin just added the
2802         ASSERT, but the bug wasn't new.)
2803
2804         * pcre/pcre_compile.cpp:
2805         (compile_branch): The ?: operator here was backwards, causing us to
2806         execute the loop too many times, adding stray KET opcodes to the
2807         compiled regular expression.
2808
2809 2007-12-05  Kevin McCullough  <kmccullough@apple.com>
2810
2811         Reviewed by Geoff.
2812
2813         - Wait until local variable data is fully constructed before notifying the debugger of entering
2814         or leaving a call frame.
2815
2816         * kjs/function.cpp:
2817         (KJS::FunctionImp::callAsFunction):
2818         * kjs/nodes.cpp:
2819         (KJS::FunctionBodyNode::execute):
2820
2821 2007-12-05  Mark Rowe  <mrowe@apple.com>
2822
2823         Reviewed by Oliver.
2824
2825         Build fix for GCC 4.2. Cast via a union to avoid strict-aliasing issues.
2826
2827         * wtf/FastMalloc.cpp:
2828         (WTF::):
2829         (WTF::getPageHeap):
2830
2831 2007-12-05  Mark Rowe  <mrowe@apple.com>
2832
2833         Reviewed by Darin.
2834
2835         Fix testkjs in 64-bit.
2836
2837         When built for 64-bit the TCMalloc spin lock uses pthread mutexes rather than a custom spin lock
2838         implemented in assembly.  If we fail to initialize the pthread mutex, attempts to lock or unlock
2839         it will fail and trigger a call to abort.
2840
2841         * wtf/FastMalloc.cpp: Initialize the spin lock so that we can later lock and unlock it.
2842         * wtf/TCSpinLock.h: Add an Init method to the optimised spin lock.
2843
2844 2007-12-04  Oliver Hunt  <oliver@apple.com>
2845
2846         Reviewed by NOBODY (Build fix).
2847
2848         Fix gtk build.
2849
2850         * wtf/TCSystemAlloc.cpp:
2851
2852 2007-12-03  Oliver Hunt  <oliver@apple.com>
2853
2854         Reviewed by Mark Rowe and Geoff Garen.
2855
2856         Merge TCMalloc r38
2857
2858         It also result in a performance progression between 0.5% and 
2859         0.9% depending on the test, however most if not all of this 
2860         gain will be consumed by the overhead involved in the later
2861         change to release memory to the system.
2862
2863         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
2864         * JavaScriptCore.xcodeproj/project.pbxproj:
2865         * wtf/FastMalloc.cpp:
2866         (WTF::KernelSupportsTLS):
2867         (WTF::CheckIfKernelSupportsTLS):
2868         (WTF::):
2869         (WTF::ClassIndex):
2870         (WTF::SLL_Next):
2871         (WTF::SLL_SetNext):
2872         (WTF::SLL_Push):
2873         (WTF::SLL_Pop):
2874         (WTF::SLL_PopRange):
2875         (WTF::SLL_PushRange):
2876         (WTF::SLL_Size):
2877         (WTF::SizeClass):
2878         (WTF::ByteSizeForClass):
2879         (WTF::NumMoveSize):
2880         (WTF::InitSizeClasses):
2881         (WTF::AllocationSize):
2882         (WTF::TCMalloc_PageHeap::GetSizeClassIfCached):
2883         (WTF::TCMalloc_PageHeap::CacheSizeClass):
2884         (WTF::TCMalloc_PageHeap::init):
2885         (WTF::TCMalloc_PageHeap::New):
2886         (WTF::TCMalloc_PageHeap::AllocLarge):
2887         (WTF::TCMalloc_PageHeap::Carve):
2888         (WTF::TCMalloc_PageHeap::Delete):
2889         (WTF::TCMalloc_PageHeap::IncrementalScavenge):
2890         (WTF::PagesToMB):
2891         (WTF::TCMalloc_PageHeap::Dump):
2892         (WTF::TCMalloc_PageHeap::GrowHeap):
2893         (WTF::TCMalloc_PageHeap::Check):
2894         (WTF::ReleaseFreeList):
2895         (WTF::TCMalloc_PageHeap::ReleaseFreePages):
2896         (WTF::TCMalloc_ThreadCache_FreeList::Push):
2897         (WTF::TCMalloc_ThreadCache_FreeList::PushRange):
2898         (WTF::TCMalloc_ThreadCache_FreeList::PopRange):
2899         (WTF::TCMalloc_ThreadCache_FreeList::Pop):
2900         (WTF::TCMalloc_Central_FreeList::length):
2901         (WTF::TCMalloc_Central_FreeList::tc_length):
2902         (WTF::TCMalloc_Central_FreeList::Init):
2903         (WTF::TCMalloc_Central_FreeList::ReleaseListToSpans):
2904         (WTF::TCMalloc_Central_FreeList::EvictRandomSizeClass):
2905         (WTF::TCMalloc_Central_FreeList::MakeCacheSpace):
2906         (WTF::TCMalloc_Central_FreeList::ShrinkCache):
2907         (WTF::TCMalloc_Central_FreeList::InsertRange):
2908         (WTF::TCMalloc_Central_FreeList::RemoveRange):
2909         (WTF::TCMalloc_Central_FreeList::FetchFromSpansSafe):
2910         (WTF::TCMalloc_Central_FreeList::Populate):
2911         (WTF::TCMalloc_ThreadCache::Init):
2912         (WTF::TCMalloc_ThreadCache::Cleanup):
2913         (WTF::TCMalloc_ThreadCache::Allocate):
2914         (WTF::TCMalloc_ThreadCache::Deallocate):
2915         (WTF::TCMalloc_ThreadCache::FetchFromCentralCache):
2916         (WTF::TCMalloc_ThreadCache::ReleaseToCentralCache):
2917         (WTF::TCMalloc_ThreadCache::Scavenge):
2918         (WTF::TCMalloc_ThreadCache::PickNextSample):
2919         (WTF::TCMalloc_ThreadCache::NewHeap):
2920         (WTF::TCMalloc_ThreadCache::GetThreadHeap):
2921         (WTF::TCMalloc_ThreadCache::GetCache):
2922         (WTF::TCMalloc_ThreadCache::GetCacheIfPresent):
2923         (WTF::TCMalloc_ThreadCache::InitTSD):
2924         (WTF::TCMalloc_ThreadCache::CreateCacheIfNecessary):
2925         (WTF::TCMallocStats::ExtractStats):
2926         (WTF::TCMallocStats::DumpStats):
2927         (WTF::TCMallocStats::DumpStackTraces):
2928         (WTF::TCMallocStats::TCMallocImplementation::MarkThreadIdle):
2929         (WTF::TCMallocStats::TCMallocImplementation::ReleaseFreeMemory):
2930         (WTF::TCMallocStats::TCMallocGuard::TCMallocGuard):
2931         (WTF::TCMallocStats::TCMallocGuard::~TCMallocGuard):
2932         (WTF::TCMallocStats::DoSampledAllocation):
2933         (WTF::TCMallocStats::CheckCachedSizeClass):
2934         (WTF::TCMallocStats::CheckedMallocResult):
2935         (WTF::TCMallocStats::SpanToMallocResult):
2936         (WTF::TCMallocStats::do_malloc):
2937         (WTF::TCMallocStats::do_free):
2938         (WTF::TCMallocStats::do_memalign):
2939         (WTF::TCMallocStats::do_malloc_stats):
2940         (WTF::TCMallocStats::do_mallopt):
2941         (WTF::TCMallocStats::do_mallinfo):
2942         (WTF::TCMallocStats::realloc):
2943         (WTF::TCMallocStats::cpp_alloc):
2944         (WTF::TCMallocStats::operator new):
2945         (WTF::TCMallocStats::):
2946         (WTF::TCMallocStats::operator new[]):
2947         (WTF::TCMallocStats::malloc_stats):
2948         (WTF::TCMallocStats::mallopt):
2949         (WTF::TCMallocStats::mallinfo):
2950         * wtf/TCPackedCache.h: Added.
2951         (PackedCache::PackedCache):
2952         (PackedCache::Put):
2953         (PackedCache::Has):
2954         (PackedCache::GetOrDefault):
2955         (PackedCache::Clear):
2956         (PackedCache::EntryToValue):
2957         (PackedCache::EntryToUpper):
2958         (PackedCache::KeyToUpper):
2959         (PackedCache::UpperToPartialKey):
2960         (PackedCache::Hash):
2961         (PackedCache::KeyMatch):
2962         * wtf/TCPageMap.h:
2963         (TCMalloc_PageMap2::PreallocateMoreMemory):
2964         * wtf/TCSystemAlloc.cpp:
2965         (TCMalloc_SystemRelease):
2966         * wtf/TCSystemAlloc.h:
2967
2968 2007-12-04  Anders Carlsson  <andersca@apple.com>
2969
2970         Reviewed by Sam.
2971
2972         Make isSafeScript const.
2973         
2974         * kjs/JSGlobalObject.h:
2975         (KJS::JSGlobalObject::isSafeScript):
2976
2977 2007-12-04  Darin Adler  <darin@apple.com>
2978
2979         Reviewed by Geoff.
2980
2981         - fix first part of http://bugs.webkit.org/show_bug.cgi?id=16220
2982           <rdar://problem/5625221> Crash opening www.news.com (CNet)
2983
2984         Test: fast/js/regexp-overflow.html
2985
2986         * pcre/pcre_compile.cpp:
2987         (calculateCompiledPatternLengthAndFlags): Add room for the additional BRA/KET that
2988         was generated in the compile code but not taken into account here.
2989
2990 2007-12-03  Darin Adler  <darin@apple.com>
2991
2992         Reviewed by Geoff.
2993
2994         - fix http://bugs.webkit.org/show_bug.cgi?id=15618
2995           <rdar://problem/5619353> REGRESSION: Stack overflow/crash in KJS::equal (15618)
2996
2997         Test: fast/js/recursion-limit-equal.html
2998
2999         * kjs/operations.cpp: (KJS::equal): Check the exception from toPrimitive.
3000
3001 2007-12-03  Dan Bernstein  <mitz@apple.com>
3002
3003         - fix a copy-and-paste-o
3004
3005         * bindings/npruntime.cpp:
3006         (_NPN_GetIntIdentifier):
3007
3008 2007-12-03  Dan Bernstein  <mitz@apple.com>
3009
3010         Reviewed by Darin Adler.
3011
3012         - fix an ASSERT when getIntIdentifier is called with 0 or -1
3013
3014         * bindings/npruntime.cpp:
3015         (_NPN_GetIntIdentifier): We cannot use the hashmap for 0 and -1 since
3016         they are the empty value and the deleted value. Instead, keep the
3017         identifiers for those two integers in a static array.
3018
3019 2007-12-02  Darin Adler  <darin@apple.com>
3020
3021         Reviewed by Mitz.
3022
3023         - fix http://bugs.webkit.org/show_bug.cgi?id=15848
3024           <rdar://problem/5619330> REGRESSION: Assertion failure viewing comments page on digg.com
3025
3026         Test: fast/js/sparse-array.html
3027
3028         * kjs/array_instance.cpp:
3029         (KJS::ArrayInstance::inlineGetOwnPropertySlot): Check sparse array cutoff before looking
3030         in hash map. Can't avoid the branch because we can't look for 0 in the hash.
3031         (KJS::ArrayInstance::deleteProperty): Ditto.
3032
3033 2007-12-02  Geoffrey Garen  <ggaren@apple.com>
3034
3035         Build fix: added an #include.
3036
3037         * kjs/collector.cpp:
3038
3039 2007-12-02  Geoffrey Garen  <ggaren@apple.com>
3040
3041         Reviewed by Eric Seidel.
3042
3043         Second step in refactoring JSGlobalObject: moved virtual functions from
3044         Interpreter to JSGlobalObject.
3045         
3046         Layout and JS tests pass. SunSpider reports a .7% speedup -- don't 
3047         believe his lies.
3048
3049 2007-12-01  Alp Toker  <alp@atoker.com>
3050
3051         Reviewed by Adam Roben.
3052
3053         http://bugs.webkit.org/show_bug.cgi?id=16228
3054         kJSClassDefinitionEmpty is not exported with JS_EXPORT
3055
3056         Add JS_EXPORT to kJSClassDefinitionEmpty.
3057
3058         Make the gcc compiler check take precedence over the WIN32||_WIN32
3059         check to ensure that symbols are exported on Windows when using gcc.
3060
3061         Add a TODO referencing the bug about JS_EXPORT in the Win build
3062         (http://bugs.webkit.org/show_bug.cgi?id=16227)
3063
3064         Don't define JS_EXPORT as 'extern' when the compiler is unknown since
3065         it would result in the incorrect expansion:
3066
3067           extern extern const JSClassDefinition kJSClassDefinitionEmpty;
3068
3069         (This was something we inherited from CFBase.h that doesn't make sense
3070         for JSBase.h)
3071
3072         * API/JSBase.h:
3073         * API/JSObjectRef.h:
3074
3075 2007-11-30  Geoffrey Garen  <ggaren@apple.com>
3076
3077         Reviewed by Beth Dakin.
3078         
3079         Reversed the ownership relationship between Interpreter and JSGlobalObject.
3080         Now, the JSGlobalObject owns the Interpreter, and top-level objects
3081         that need the two to persist just protect the JSGlobalObject from GC.
3082         
3083         Global object bootstrapping looks a little odd right now, but it will
3084         make much more sense soon, after further rounds of refactoring.
3085
3086         * bindings/runtime_root.h: Made this class inherit from RefCounted,
3087         to avoid code duplication.
3088
3089         * kjs/collector.cpp:
3090         (KJS::Collector::collect): No need to give special GC treatment to 
3091         Interpreters, since we mark their global objects, which mark them.
3092
3093         * kjs/interpreter.cpp:
3094         (KJS::Interpreter::mark): No need to mark our global object, since it
3095         marks us.
3096         * kjs/interpreter.h: Don't inherit from RefCounted -- JSGlobalObject 
3097         owns us directly.
3098
3099         * kjs/testkjs.cpp: Modified to follow the new rules.
3100         (createGlobalObject):
3101         (runWithScripts):
3102
3103 2007-11-30  Brent Fulgham  <bfulgham@gmail.com>
3104
3105         Reviewed by Eric.
3106
3107         * ChangeLog:
3108         * pcre/pcre_compile.cpp:
3109         (compile_branch):
3110
3111 2007-11-30  Eric Seidel  <eric@webkit.org>
3112
3113         No review, build fix only.
3114         
3115         Fix uninitialized var warnings in release build.
3116
3117         * JavaScriptCore.xcodeproj/project.pbxproj:
3118         * pcre/pcre_compile.cpp:
3119         (compile_regex):
3120
3121 2007-11-30  Darin Adler  <darin@apple.com>
3122
3123         Reviewed by Adam Roben.
3124
3125         - fix http://bugs.webkit.org/show_bug.cgi?id=16207
3126           JavaScript regular expressions should match UTF-16 code units rather than characters
3127
3128         SunSpider says this is 5.5% faster on the regexp test, 0.4% faste overall.
3129
3130         Test: fast/js/regexp-non-bmp.html
3131
3132         Renamed ANY_CHAR to NOT_NEWLINE to more-accurately reflect its meaning.
3133
3134         * pcre/pcre_compile.cpp:
3135         (compile_branch): Removed calls to the UTF-16 character accessor functions, replacing
3136         them with simple pointer dereferences in some cases, and no code at all in others.
3137         (calculateCompiledPatternLengthAndFlags): Ditto.
3138
3139         * pcre/pcre_exec.cpp:
3140         (match): Fixed indentation of some case labels (including all the BEGIN_OPCODE).
3141         Removed calls to the UTF-16 character accessor functions, replacing them with simple
3142         pointer dereferences in some cases, and no code at all in others. Also removed some
3143         explicit UTF-16 support code in a few cases. Removed the unneeded "UTF-8" code path
3144         in the ANY_CHAR repeat code, and in another case, eliminated the code to check against
3145         end_subject in because it is already done outside the loop.
3146         (jsRegExpExecute):
3147
3148         * pcre/pcre_internal.h: Removed all the UTF-16 helper functions.
3149
3150 2007-11-30  Eric Seidel  <eric@webkit.org>
3151
3152         Reviewed by darin.
3153         
3154         PCRE crashes under GuardMalloc
3155         http://bugs.webkit.org/show_bug.cgi?id=16127
3156         check against patternEnd to make sure we don't walk off the end of the string
3157
3158         * pcre/pcre_compile.cpp:
3159         (compile_branch):
3160         (calculateCompiledPatternLengthAndFlags):
3161
3162 2007-11-30  Eric Seidel  <eric@webkit.org>
3163
3164         Reviewed by Maciej.
3165         
3166         Fix layout test regressions caused by r28186
3167         http://bugs.webkit.org/show_bug.cgi?id=16195
3168         change first_byte and req_byte back to shorts instead of chars
3169         (I think PCRE stuffs information in the high bits) 
3170
3171         * pcre/pcre_internal.h:
3172
3173 2007-11-29  Oliver Hunt  <oliver@apple.com>
3174
3175         Reviewed by Maciej and Darin.
3176
3177         Make the JS collector work with multiple threads 
3178
3179         Under heavy contention it was possible the GC to suspend other
3180         threads inside the pthread spinlock, which could lead to the GC
3181         thread blocking on the pthread spinlock itself.
3182
3183         We now determine and store each thread's stack base when it is
3184         registered, thus removing the need for any calls to pthread_get_stackaddr_np
3185         that needed the pthread spinlock.
3186
3187         * kjs/collector.cpp:
3188         (KJS::Collector::Thread::Thread):
3189         (KJS::Collector::registerThread):
3190         (KJS::Collector::markOtherThreadConservatively):
3191
3192 2007-11-29  Adam Roben  <aroben@apple.com>
3193
3194         Windows build fix
3195
3196         Removed some unreachable code (ironically, the code was some
3197         ASSERT_NOT_REACHED()s).
3198
3199         * pcre/pcre_compile.cpp:
3200         (compile_branch):
3201         * pcre/pcre_exec.cpp:
3202         (match):
3203
3204 2007-11-29  Eric Seidel  <eric@webkit.org>
3205
3206         Reviewed by Mark Rowe.
3207         
3208         Fix for --guard crash of fast/js/regexp-charclass-crash introduced by r28151.
3209
3210         * pcre/pcre_compile.cpp:
3211         (is_anchored):
3212
3213 2007-11-28  Mark Rowe  <mrowe@apple.com>
3214
3215         Gtk build fix.  Rubber-stamped by Eric.
3216
3217         * pcre/pcre_exec.cpp:
3218         (match): Add braces around the body of the case statement to prevent
3219         wanings about jumps across the initialization of a variable.
3220
3221 2007-11-29  Eric Seidel  <eric@webkit.org>
3222
3223         Reviewed by Mark Rowe.
3224         
3225         Attempt to fix non-mac builds after PCRE cleanup.
3226
3227         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
3228         * JavaScriptCoreSources.bkl:
3229         * pcre/pcre.pri:
3230
3231 2007-11-28  Eric Seidel  <eric@webkit.org>
3232
3233         Reviewed by Maciej.
3234
3235         Centralize code for subjectPtr adjustments using inlines, only ever check for a single
3236         trailing surrogate (as UTF16 only allows one), possibly fix PCRE bugs involving char
3237         classes and garbled UTF16 strings.
3238
3239         * pcre/pcre_exec.cpp:
3240         (match):
3241         (jsRegExpExecute):
3242         * pcre/pcre_internal.h:
3243         (getPreviousChar):
3244         (movePtrToPreviousChar):
3245         (movePtrToNextChar):
3246         (movePtrToStartOfCurrentChar):
3247
3248 2007-11-28  Eric Seidel  <eric@webkit.org>
3249
3250         Reviewed by Maciej.
3251
3252         change getChar* functions to return result and push 'c' into local scopes for clarity
3253
3254         * pcre/pcre_compile.cpp:
3255         (compile_branch):
3256         (calculateCompiledPatternLengthAndFlags):
3257         * pcre/pcre_exec.cpp:
3258         (match):
3259         * pcre/pcre_internal.h:
3260         (getChar):
3261         (getCharAndAdvance):
3262         (getCharAndLength):
3263         (getCharAndAdvanceIfSurrogate):
3264
3265 2007-11-28  Eric Seidel  <eric@webkit.org>
3266
3267         Reviewed by Sam.
3268
3269         Comment cleanup
3270
3271         * pcre/pcre_exec.cpp:
3272         (match):
3273
3274 2007-11-26  Eric Seidel  <eric@webkit.org>
3275
3276         Reviewed by Sam.
3277
3278         Further cleanups to calculateCompiledPatternLengthAndFlags
3279
3280         * pcre/pcre_compile.cpp:
3281         (calculateCompiledPatternLengthAndFlags):
3282         * pcre/pcre_internal.h:
3283
3284 2007-11-26  Eric Seidel  <eric@webkit.org>
3285
3286         Reviewed by Sam.
3287
3288         Give consistent naming to the RegExp options/compile flags
3289
3290         * pcre/pcre_compile.cpp:
3291         (compile_branch):
3292         (is_anchored):
3293         (find_firstassertedchar):
3294         (printCompiledRegExp):
3295         (jsRegExpCompile):
3296         * pcre/pcre_exec.cpp:
3297         (jsRegExpExecute):
3298         * pcre/pcre_internal.h:
3299
3300 2007-11-26  Eric Seidel  <eric@webkit.org>
3301
3302         Reviewed by Sam.
3303
3304         Pull first_byte and req_byte optimizations out into separate static funtions, SunSpider reported this as a win.
3305
3306         * pcre/pcre_exec.cpp:
3307         (tryFirstByteOptimization):
3308         (tryRequiredByteOptimization):
3309         (jsRegExpExecute):
3310         * pcre/pcre_internal.h:
3311
3312 2007-11-26  Eric Seidel  <eric@webkit.org>
3313
3314         Reviewed by Maciej.
3315
3316         give PCRE_MULTILINE a better name: OptionMatchAcrossMultipleLines
3317
3318         * pcre/pcre_compile.cpp:
3319         (compile_branch):
3320         (is_anchored):
3321         (printCompiledRegExp):
3322         (jsRegExpCompile):
3323         * pcre/pcre_exec.cpp:
3324         (jsRegExpExecute):
3325         * pcre/pcre_internal.h:
3326
3327 2007-11-26  Eric Seidel  <eric@webkit.org>
3328
3329         Reviewed by Oliver.
3330
3331         Deprecate jsRegExpExecute's offset-vector fallback code
3332
3333         * pcre/pcre_exec.cpp:
3334         (jsRegExpExecute):
3335
3336 2007-11-26  Eric Seidel  <eric@webkit.org>
3337
3338         Reviewed by Maciej.
3339
3340         Make cur_is_word and prev_is_word locals, and change OP_ANY to OP_ANY_CHAR for clarity
3341
3342         * pcre/pcre_compile.cpp:
3343         (find_fixedlength):
3344         (compile_branch):
3345         (canApplyFirstCharOptimization):
3346         * pcre/pcre_exec.cpp:
3347         (match):
3348         * pcre/pcre_internal.h:
3349
3350 2007-11-26  Eric Seidel  <eric@webkit.org>
3351
3352         Reviewed by Mitz & Maciej.
3353
3354         Change _NC operators to use _IGNORING_CASE for clarity
3355
3356         * pcre/pcre_compile.cpp:
3357         (find_fixedlength):
3358         (compile_branch):
3359         (find_firstassertedchar):
3360         * pcre/pcre_exec.cpp:
3361         (match):
3362         * pcre/pcre_internal.h:
3363
3364 2007-11-26  Eric Seidel  <eric@webkit.org>
3365
3366         Reviewed by Mitz.
3367
3368         Remove branch from return
3369
3370         * pcre/pcre_compile.cpp:
3371         (compile_branch):
3372         * pcre/pcre_exec.cpp:
3373         (match):
3374
3375 2007-11-26  Eric Seidel  <eric@webkit.org>
3376
3377         Reviewed by Maciej.
3378
3379         Add repeatInformationFromInstructionOffset inline
3380
3381         * pcre/pcre_exec.cpp:
3382         (repeatInformationFromInstructionOffset):
3383         (match):
3384
3385 2007-11-26  Eric Seidel  <eric@webkit.org>
3386
3387         Reviewed by Maciej.
3388
3389         Remove no longer used error code JSRegExpErrorMatchLimit
3390
3391         * kjs/regexp.cpp:
3392         (KJS::RegExp::match):
3393         * pcre/pcre.h:
3394         * pcre/pcre_internal.h:
3395
3396 2007-11-26  Eric Seidel  <eric@webkit.org>
3397
3398         Reviewed by Sam.
3399
3400         Make i locally scoped for better code clarity
3401
3402         * pcre/pcre_exec.cpp:
3403         (match):
3404
3405 2007-11-26  Eric Seidel  <eric@webkit.org>
3406
3407         Reviewed by Maciej.
3408
3409         Give subjectPtr and instructionPtr sane names, reduce size of MatchFrame for a 0.2% speedup.
3410
3411         * pcre/pcre_compile.cpp:
3412         (compile_branch):
3413         (calculateCompiledPatternLengthAndFlags):
3414         * pcre/pcre_exec.cpp:
3415         (match_ref):
3416         (MatchStack::pushNewFrame):
3417         (getUTF8CharAndIncrementLength):
3418         (match):
3419         * pcre/pcre_internal.h:
3420         (getChar):
3421         (getCharAndAdvance):
3422         (getCharAndLength):
3423         (getCharAndAdvanceIfSurrogate):
3424         * pcre/pcre_xclass.cpp:
3425         (getUTF8CharAndAdvancePointer):
3426
3427 2007-11-26  Eric Seidel  <eric@webkit.org>
3428
3429         Reviewed by Sam.
3430
3431         Small speedup (0.7%) by simplifying canUseStackBufferForNextFrame() check
3432
3433         * pcre/pcre_exec.cpp:
3434         (MatchStack::MatchStack):
3435         (MatchStack::popCurrentFrame):
3436
3437 2007-11-25  Eric Seidel  <eric@webkit.org>
3438
3439         Reviewed by Sam.
3440
3441         Lower MATCH_LIMIT_RECURSION to more sane levels to prevent hangs on run-javascriptcore-tests
3442
3443         * pcre/pcre_internal.h:
3444
3445 2007-11-25  Eric Seidel  <eric@webkit.org>
3446
3447         Reviewed by Maciej.
3448
3449         Remove match_is_group variable for another 5% speedup
3450
3451         * pcre/pcre_compile.cpp:
3452         * pcre/pcre_exec.cpp:
3453         (startNewGroup):
3454         (match):
3455
3456 2007-11-28  Eric Seidel  <eric@webkit.org>
3457
3458         Reviewed by Sam.
3459
3460         Abstract frame variables into locals and args
3461
3462         * pcre/pcre_compile.cpp:
3463         (compile_branch):
3464         * pcre/pcre_exec.cpp:
3465         (match):
3466         * pcre/pcre_internal.h:
3467
3468 2007-11-28  Eric Seidel  <eric@webkit.org>
3469
3470         Reviewed by Sam.
3471
3472         Section off MatchData arguments into args struct
3473
3474         * pcre/pcre_exec.cpp:
3475         (MatchStack::pushNewFrame):
3476         (match):
3477
3478 2007-11-24  Eric Seidel  <eric@webkit.org>
3479
3480         Reviewed by Sam.
3481
3482         Remove redundant eptrblock struct
3483
3484         * pcre/pcre_exec.cpp:
3485         (MatchStack::pushNewFrame):
3486         (match):
3487
3488 2007-11-24  Eric Seidel  <eric@webkit.org>
3489
3490         Reviewed by Maciej.
3491
3492         Remove redundant match_call_count and move recursion check out of super-hot code path
3493         SunSpider says this is at least an 8% speedup for regexp.
3494
3495         * pcre/pcre_exec.cpp:
3496         (MatchStack::MatchStack):
3497         (MatchStack::pushNewFrame):
3498         (MatchStack::popCurrentFrame):
3499         (MatchStack::popAllFrames):
3500         (match):
3501         (jsRegExpExecute):
3502         * pcre/pcre_internal.h:
3503
3504 2007-11-24  Eric Seidel  <eric@webkit.org>
3505
3506         Reviewed by Sam.
3507
3508         Get rid of GETCHAR* macros, replacing them with better named inlines
3509
3510         * pcre/pcre_compile.cpp:
3511         (compile_branch):
3512         (calculateCompiledPatternLengthAndFlags):
3513         * pcre/pcre_exec.cpp:
3514         (match):
3515         * pcre/pcre_internal.h:
3516         (getCharAndAdvance):
3517         (getCharAndLength):
3518         (getCharAndAdvanceIfSurrogate):
3519
3520 2007-11-24  Eric Seidel  <eric@webkit.org>
3521
3522         Reviewed by Sam.
3523
3524         Further cleanup GET/PUT inlines
3525
3526         * pcre/pcre_internal.h:
3527         (putOpcodeValueAtOffset):
3528         (getOpcodeValueAtOffset):
3529         (putOpcodeValueAtOffsetAndAdvance):
3530         (put2ByteOpcodeValueAtOffset):
3531         (get2ByteOpcodeValueAtOffset):
3532         (put2ByteOpcodeValueAtOffsetAndAdvance):
3533
3534 2007-11-24  Eric Seidel  <eric@webkit.org>
3535
3536         Reviewed by Sam.
3537
3538         Give GET, PUT better names, and add (poor) moveOpcodePtrPastAnyAlternateBranches
3539
3540         * pcre/pcre_compile.cpp:
3541         (firstSignificantOpCodeSkippingAssertions):
3542         (find_fixedlength):
3543         (complete_callout):
3544         (compile_branch):
3545         (compile_regex):
3546         (is_anchored):
3547         (canApplyFirstCharOptimization):
3548         (find_firstassertedchar):
3549         * pcre/pcre_exec.cpp:
3550         (match):
3551         * pcre/pcre_internal.h:
3552         (putOpcodeValueAtOffset):
3553         (getOpcodeValueAtOffset):
3554         (putOpcodeValueAtOffsetAndAdvance):
3555         (put2ByteOpcodeValueAtOffset):
3556         (get2ByteOpcodeValueAtOffset):
3557         (moveOpcodePtrPastAnyAlternat