6f48a80670c16aeaf213007d6b130f4deb6776b7
[WebKit-https.git] / JavaScriptCore / ChangeLog
1 2010-09-30  Chris Marrin  <cmarrin@apple.com>
2
3         Reviewed by Simon Fraser.
4
5         Make 2D accelerated canvas rendering build on Mac
6         https://bugs.webkit.org/show_bug.cgi?id=46007
7         
8         Added ACCELERATED_2D_CANVAS to FeatureDefines
9
10         * Configurations/FeatureDefines.xcconfig:
11
12 2010-09-30  Kevin Ollivier  <kevino@theolliviers.com>
13
14         [wx] wxMSW build fix. Make sure we copy the compiler flags and remove exception handling from
15         the copy so as not to alter global settings.
16
17         * wscript:
18
19 2010-09-30  Peter Varga  <pvarga@inf.u-szeged.hu>
20
21         Reviewed by Gavin Barraclough.
22
23         The case-insensitivity backreference checking isn't working with YARR
24         Interpreter
25         https://bugs.webkit.org/show_bug.cgi?id=46882
26
27         Add ignorecase checking to the Interpreter::tryConsumeBackReference() function.
28
29         * yarr/RegexInterpreter.cpp:
30         (JSC::Yarr::Interpreter::tryConsumeBackReference):
31
32 2010-09-30  Kwang Yul Seo  <skyul@company100.net>
33
34         Reviewed by Andreas Kling.
35
36         [BREWMP] Leave initializeRandomNumberGenerator empty.
37         https://bugs.webkit.org/show_bug.cgi?id=46851
38
39         On Brew MP, AEECLSID_RANDOM initializes itself.
40
41         * wtf/RandomNumberSeed.h:
42         (WTF::initializeRandomNumberGenerator):
43
44 2010-09-30  Gabor Loki  <loki@webkit.org>
45
46         Reviewed by Csaba Osztrogonác.
47
48         Remove unnecessary cacheFlush calls from Thumb-2
49         https://bugs.webkit.org/show_bug.cgi?id=46702
50
51         * assembler/ARMv7Assembler.h:
52         (JSC::ARMv7Assembler::relinkCall):
53         (JSC::ARMv7Assembler::repatchInt32):
54         (JSC::ARMv7Assembler::repatchPointer):
55
56 2010-09-29  Patrick Gansterer  <paroga@webkit.org>
57
58         Unreviewed.
59
60         Next try to fix cygwin build.
61
62         * wtf/Assertions.cpp:
63
64 2010-09-29  Patrick Gansterer  <paroga@webkit.org>
65
66         Unreviewed.
67
68         Build fix for cygwin #2. It's OS(WINDOWS), not OS(WIN).
69
70         * wtf/Assertions.cpp:
71
72 2010-09-29  Patrick Gansterer  <paroga@webkit.org>
73
74         Unreviewed.
75
76         Build fix for cygwin.
77
78         * wtf/Assertions.cpp:
79
80 2010-09-29  Patrick Gansterer  <paroga@webkit.org>
81
82         Reviewed by Andreas Kling.
83
84         [WINCE] Buildfix for Assertions.cpp after r68511.
85         https://bugs.webkit.org/show_bug.cgi?id=46807
86
87         Some, but not all WinCE environments have support for IsDebuggerPresent().
88         Add HAVE(ISDEBUGGERPRESENT) to make this a build option.
89         HAVE(ISDEBUGGERPRESENT) will be 1 for all OS(WIN) by default.
90
91         * wtf/Assertions.cpp:
92         * wtf/Platform.h:
93
94 2010-09-29  Peter Varga  <pvarga@inf.u-szeged.hu>
95
96         Reviewed by Csaba Osztrogonác.
97
98         JSC compile fails on 32bit platform when Regexp Tracing is enabled
99         https://bugs.webkit.org/show_bug.cgi?id=46713
100
101         Fix the cast of pointer in regexp tracing to avoid the warning.
102
103         * runtime/RegExp.cpp:
104         (JSC::RegExp::match):
105
106 2010-09-28  Anders Carlsson  <andersca@apple.com>
107
108         Reviewed by Sam Weinig.
109
110         Begin hooking up painting in the plug-in process
111         https://bugs.webkit.org/show_bug.cgi?id=46766
112
113         * JavaScriptCore.exp:
114         Add tryFastRealloc, used by WebKit2.
115
116 2010-09-28  Philippe Normand  <pnormand@igalia.com>
117
118         Reviewed by Martin Robinson.
119
120         Guard GRefPtr/GOwnPtr files with ENABLE(GLIB_SUPPORT)
121         https://bugs.webkit.org/show_bug.cgi?id=46721
122
123         Enable GOwnPtr/GRefPtr build only if glib support has been
124         explicitly enabled using the WTF_ENABLE_GLIB_SUPPORT macro.
125
126         * wtf/gobject/GOwnPtr.cpp:
127         * wtf/gobject/GOwnPtr.h:
128         * wtf/gobject/GRefPtr.cpp:
129         * wtf/gobject/GRefPtr.h:
130
131 2010-09-28  İsmail Dönmez  <ismail@namtrac.org>
132
133         Reviewed by Andreas Kling.
134
135         Test for WINCE instead of WINCEBASIC, compiler always defines WINCE.
136         Remove reference to unexisting path JavaScriptCore/os-wince.
137
138         * JavaScriptCore.pri:
139         * wtf/Assertions.cpp:
140
141 2010-09-27  Michael Saboff  <msaboff@apple.com>
142
143         Reviewed by Geoffrey Garen.
144
145         Changed the initialization of JSArray objects to have space for 
146         3 elements for the constructor that takes a ArgList argument.
147         This improves v8-deltablue performance by about 2.8% by reducing 
148         the number of realloc() calls.
149         https://bugs.webkit.org/show_bug.cgi?id=46664
150
151         * runtime/JSArray.cpp:
152         (JSC::JSArray::JSArray):
153
154 2010-09-27  Gavin Barraclough  <barraclough@apple.com>
155
156         Reviewed by Darin Adler.
157
158         Bug 46680 - Inlining string concatenation can regress interpreter performance
159         <rdar://problem/8362752> REGRESSION: ~6.4% sunspider regression in interpreter
160         Do not inline calls to string concatenation in the interpret loop.
161
162         * interpreter/Interpreter.cpp:
163         (JSC::concatenateStrings):
164         (JSC::Interpreter::privateExecute):
165
166 2010-09-27  Anders Carlsson  <andersca@apple.com>
167
168         Fix thinko.
169
170         * runtime/JSCell.h:
171
172 2010-09-27  Anders Carlsson  <andersca@apple.com>
173
174         Reviewed by Adam Roben.
175
176         Try to fix Windows build.
177
178         * runtime/JSCell.h:
179         (JSC::MSVCBugWorkaround::MSVCBugWorkaround):
180         (JSC::MSVCBugWorkaround::~MSVCBugWorkaround):
181
182 2010-09-27  Erik Arvidsson  <arv@chromium.org>
183
184         Reviewed by Darin Adler.
185
186         Add operator == for AtomicString and Vector<Uchar>
187         https://bugs.webkit.org/show_bug.cgi?id=46509
188
189         * JavaScriptCore.exp:
190         * wtf/text/AtomicString.cpp:
191         (WTF::operator==):
192         * wtf/text/AtomicString.h:
193         (WTF::operator==):
194         (WTF::operator!=):
195
196 2010-09-27  Anders Carlsson  <andersca@apple.com>
197
198         Try to fix the Windows build.
199
200         * wtf/Noncopyable.h:
201
202 2010-09-26  Anders Carlsson  <andersca@apple.com>
203
204         Reviewed by Alexey Proskuryakov and Adam Barth.
205
206         Add WTF_MAKE_NONCOPYABLE macro
207         https://bugs.webkit.org/show_bug.cgi?id=46589
208
209         Going forward, we'd like to get rid of the Noncopyable and FastAllocBase classes. The
210         reason for this is that the Itanium C++ ABI states that no empty classes of the same type
211         can be laid out at the same offset in the class. This can result in objects getting larger
212         which leads to memory regressions. (One example of this is the String class which grew by
213         sizeof(void*) when both its base class and its first member variable inherited indirectly
214         from FastAllocBase).
215
216         * wtf/Noncopyable.h:
217         Add a WTF_MAKE_NONCOPYABLE macro and get rid of NoncopyableCustomAllocated.
218         
219         * runtime/JSCell.h:
220         * wtf/RefCounted.h:
221         Don't inherit from NoncopyableCustomAllocated. Instead, use WTF_MAKE_NONCOPYABLE.
222
223 2010-09-27  Philippe Normand  <pnormand@igalia.com>
224
225         Reviewed by Martin Robinson.
226
227         [GTK] use ENABLE(GLIB_SUPPORT)
228         https://bugs.webkit.org/show_bug.cgi?id=46630
229
230         * wtf/Platform.h: Include GTypedefs.h only if glib support
231         is explicitly enabled.
232
233 2010-09-25  Holger Hans Peter Freyther  <holger@moiji-mobile.com>
234
235         Reviewed by Adam Barth.
236
237         jsc: Document the strcat opcode.
238         https://bugs.webkit.org/show_bug.cgi?id=46571
239
240         * interpreter/Interpreter.cpp:
241         (JSC::Interpreter::privateExecute):
242
243 2010-09-21  Holger Hans Peter Freyther  <holger@moiji-mobile.com>
244
245         Reviewed by Adam Barth.
246
247         make-bytecode-docs.pl: Add a comment to the generated HTML
248         https://bugs.webkit.org/show_bug.cgi?id=46570
249
250         Generate an HTML Comment that this file was generated from
251         Interpreter.cpp with the make-bytecode-docs.pl script.
252
253         * docs/make-bytecode-docs.pl:
254
255 2010-09-27  Patrick Gansterer  <paroga@webkit.org>
256
257         Reviewed by Adam Barth.
258
259         Remove WTF::stringHash functions
260         https://bugs.webkit.org/show_bug.cgi?id=46520
261
262         Since r68289 the stringHash functions are only wrappers around StringHasher::createHash.
263         So use StringHasher::createHash directly and remove stringHash.
264
265         * wtf/StringHashFunctions.h:
266         * wtf/text/StringImpl.h:
267         (WTF::StringImpl::computeHash): Use WTF::StringHasher::createHash directly.
268
269 2010-09-26  Patrick Gansterer  <paroga@webkit.org>
270
271         Reviewed by Adam Barth.
272
273         Add WTF::StringHasher::createBlobHash
274         https://bugs.webkit.org/show_bug.cgi?id=46514
275
276         Add this function for hashing FormElementKey and QualifiedNameComponents.
277
278         * wtf/StringHashFunctions.h:
279         (WTF::StringHasher::createBlobHash):
280
281 2010-09-26  Patrick Gansterer  <paroga@webkit.org>
282
283         Reviewed by Adam Barth.
284
285         REGRESSION (r68289): Assertion failure in StringHasher::addCharacter() (ch != invalidCharacterValue)
286         running websocket/tests/bad-sub-protocol-non-ascii.html
287         https://bugs.webkit.org/show_bug.cgi?id=46553
288
289         Because we use StringHasher for binary data too, so the check for invalid unicode input is wrong.
290         Add an additional member variable to indicate if we have an pending character
291         instead of only using an invalid character for this purpose.
292
293         * wtf/StringHashFunctions.h:
294         (WTF::StringHasher::StringHasher):
295         (WTF::StringHasher::addCharacters):
296         (WTF::StringHasher::addCharacter):
297         (WTF::StringHasher::hash):
298
299 2010-09-26  Mark Hahnenberg  <mhahnenb@gmail.com>
300
301         Reviewed by Oliver Hunt.
302
303         valueOf called in wrong order in atan2 and date constructors.
304         https://bugs.webkit.org/show_bug.cgi?id=26978
305
306         Fixed the bug where the arguments to atan2 were being evaluated 
307         out of order.
308
309         * runtime/MathObject.cpp:
310         (JSC::mathProtoFuncATan2):
311
312 2010-09-26  Mark Hahnenberg  <mhahnenb@gmail.com>
313
314         Reviewed by Oliver Hunt.
315
316         valueOf called in wrong order in atan2 and date constructors.
317         https://bugs.webkit.org/show_bug.cgi?id=26978
318
319         Fixed the issue where the parameters to the Date constructor
320         were being evaluated to numbers more than once.
321
322         * runtime/DateConstructor.cpp:
323         (JSC::constructDate):
324         (JSC::dateUTC):
325
326 2010-09-25  Oliver Hunt  <oliver@apple.com>
327
328         Fix various builds
329
330         Relearning the lesson that last minute changes are bad.
331
332         * bytecode/CodeBlock.cpp:
333         (JSC::CodeBlock::dump):
334         * bytecompiler/BytecodeGenerator.cpp:
335         (JSC::BytecodeGenerator::emitGetArgumentsLength):
336         * jit/JITOpcodes.cpp:
337         (JSC::JIT::emitSlow_op_get_argument_by_val):
338
339 2010-09-25  Oliver Hunt  <oliver@apple.com>
340
341         Reviewed by Cameron Zwarich.
342
343         Avoid constructing arguments object when accessing length and index properties
344         https://bugs.webkit.org/show_bug.cgi?id=46572
345
346         Add opcodes to read argument length and properties, and then implement them.
347         Much like other lazy opcodes these opcodes take a fast path when the arguments
348         object has not been instantiated, and fall back on generic access mechanisms
349         if they are acting on an instantiated object.
350
351         3% win on v8-earleyboyer, no change elsewhere.
352
353         * bytecode/CodeBlock.cpp:
354         (JSC::CodeBlock::dump):
355         * bytecode/Opcode.h:
356         * bytecompiler/BytecodeGenerator.cpp:
357         (JSC::BytecodeGenerator::emitGetArgumentsLength):
358         (JSC::BytecodeGenerator::emitGetArgumentByVal):
359         * bytecompiler/BytecodeGenerator.h:
360         * bytecompiler/NodesCodegen.cpp:
361         (JSC::BracketAccessorNode::emitBytecode):
362         (JSC::DotAccessorNode::emitBytecode):
363         * interpreter/Interpreter.cpp:
364         (JSC::Interpreter::privateExecute):
365         * jit/JIT.cpp:
366         (JSC::JIT::privateCompileMainPass):
367         (JSC::JIT::privateCompileSlowCases):
368         * jit/JIT.h:
369         * jit/JITOpcodes.cpp:
370         (JSC::JIT::emit_op_get_arguments_length):
371         (JSC::JIT::emitSlow_op_get_arguments_length):
372         (JSC::JIT::emit_op_get_argument_by_val):
373         (JSC::JIT::emitSlow_op_get_argument_by_val):
374         * jit/JITOpcodes32_64.cpp:
375         (JSC::JIT::emit_op_get_arguments_length):
376         (JSC::JIT::emitSlow_op_get_arguments_length):
377         (JSC::JIT::emit_op_get_argument_by_val):
378         (JSC::JIT::emitSlow_op_get_argument_by_val):
379
380 2010-09-25  Patrick Gansterer  <paroga@webkit.org>
381
382         Unreviewed.
383
384         Fix typo in StringHasher class
385         https://bugs.webkit.org/show_bug.cgi?id=45970
386
387         * wtf/StringHashFunctions.h:
388         (WTF::StringHasher::createHash):
389
390 2010-09-24  Patrick Gansterer  <paroga@paroga.com>
391
392         Reviewed by Gavin Barraclough.
393
394         Add WTF::StringHasher
395         https://bugs.webkit.org/show_bug.cgi?id=45970
396
397         StringHasher is a class for calculation stringHash out of character string.
398         This class will unify the different usages of the same algorithm.
399
400         * wtf/StringHashFunctions.h:
401         (WTF::StringHasher::StringHasher):
402         (WTF::StringHasher::addCharacters):
403         (WTF::StringHasher::addCharacter):
404         (WTF::StringHasher::hash):
405         (WTF::StringHasher::createHash):
406         (WTF::StringHasher::defaultCoverter):
407         (WTF::StringHasher::addCharactersToHash):
408         (WTF::stringHash):
409
410 2010-09-24  Oliver Hunt  <oliver@apple.com>
411
412         Reviewed by Geoffrey Garen.
413
414         Variable declarations inside a catch scope don't get propogated to the parent scope
415         https://bugs.webkit.org/show_bug.cgi?id=46501
416
417         Add logic to make variable declaration look for a scope for the
418         new variable.  This allows us to create a scope (eg. for catch)
419         and then seal it, so that additional variable declarations
420         contained are propogated to the correct target.  Strangely this
421         comes out as a performance win, but I think it's mostly cache
422         effects.
423
424         * parser/JSParser.cpp:
425         (JSC::JSParser::Scope::Scope):
426         (JSC::JSParser::Scope::preventNewDecls):
427         (JSC::JSParser::Scope::allowsNewDecls):
428         (JSC::JSParser::declareVariable):
429         (JSC::JSParser::parseVarDeclarationList):
430         (JSC::JSParser::parseConstDeclarationList):
431         (JSC::JSParser::parseTryStatement):
432         (JSC::JSParser::parseFormalParameters):
433         (JSC::JSParser::parseFunctionDeclaration):
434
435 2010-09-24  İsmail Dönmez  <ismail@namtrac.org>
436
437        Reviewed by Csaba Osztrogonác.
438
439        Add a Windows compatible inttypes.h header to fix WinCE build.
440        https://bugs.webkit.org/show_bug.cgi?id=46463
441
442        * os-win32/inttypes.h: Added.
443
444 2010-09-24  Oliver Hunt  <oliver@apple.com>
445
446         Reviewed by Gavin Barraclough.
447
448         REGRESSION(r68223): It broke 2-3 tests on bots (Requested by Ossy on #webkit).
449         https://bugs.webkit.org/show_bug.cgi?id=46448
450
451         Roll this back in, with additional logic to prevent us from delaying construction
452         of functions named "arguments"
453
454         * bytecode/CodeBlock.cpp:
455         (JSC::CodeBlock::dump):
456         * bytecode/Opcode.h:
457         * bytecompiler/BytecodeGenerator.cpp:
458         (JSC::BytecodeGenerator::BytecodeGenerator):
459         (JSC::BytecodeGenerator::emitInitLazyRegister):
460         (JSC::BytecodeGenerator::registerFor):
461         (JSC::BytecodeGenerator::createLazyRegisterIfNecessary):
462         (JSC::BytecodeGenerator::constRegisterFor):
463         (JSC::BytecodeGenerator::emitNewFunction):
464         (JSC::BytecodeGenerator::emitLazyNewFunction):
465         (JSC::BytecodeGenerator::emitNewFunctionInternal):
466         * bytecompiler/BytecodeGenerator.h:
467         * interpreter/Interpreter.cpp:
468         (JSC::Interpreter::privateExecute):
469         * jit/JIT.cpp:
470         (JSC::JIT::privateCompileMainPass):
471         * jit/JIT.h:
472         * jit/JITOpcodes.cpp:
473         (JSC::JIT::emit_op_init_lazy_reg):
474         (JSC::JIT::emit_op_new_func):
475         * jit/JITOpcodes32_64.cpp:
476         (JSC::JIT::emit_op_init_lazy_reg):
477         * parser/Nodes.h:
478         (JSC::ScopeNode::needsActivationForMoreThanVariables):
479
480 2010-09-23  Sheriff Bot  <webkit.review.bot@gmail.com>
481
482         Unreviewed, rolling out r68223.
483         http://trac.webkit.org/changeset/68223
484         https://bugs.webkit.org/show_bug.cgi?id=46448
485
486         It broke 2-3 tests on bots (Requested by Ossy on #webkit).
487
488         * bytecode/CodeBlock.cpp:
489         (JSC::CodeBlock::dump):
490         * bytecode/Opcode.h:
491         * bytecompiler/BytecodeGenerator.cpp:
492         (JSC::BytecodeGenerator::BytecodeGenerator):
493         (JSC::BytecodeGenerator::registerFor):
494         (JSC::BytecodeGenerator::constRegisterFor):
495         (JSC::BytecodeGenerator::emitNewFunction):
496         * bytecompiler/BytecodeGenerator.h:
497         * interpreter/Interpreter.cpp:
498         (JSC::Interpreter::privateExecute):
499         * jit/JIT.cpp:
500         (JSC::JIT::privateCompileMainPass):
501         * jit/JIT.h:
502         * jit/JITOpcodes.cpp:
503         (JSC::JIT::emit_op_new_func):
504         (JSC::JIT::emit_op_init_arguments):
505         * jit/JITOpcodes32_64.cpp:
506         (JSC::JIT::emit_op_new_func):
507         (JSC::JIT::emit_op_init_arguments):
508         * parser/Nodes.h:
509
510 2010-09-23  Oliver Hunt  <oliver@apple.com>
511
512         Reviewed by Geoffrey Garen.
513
514         Delay construction of functions that aren't captured
515         https://bugs.webkit.org/show_bug.cgi?id=46433
516
517         If a function isn't captured by an activation there's no
518         way it can be accessed indirectly, so we can delay the
519         construction until it's used (similar to what we do with
520         arguments).  We rename the existing op_init_arguments to
521         op_init_lazy_reg and removed its implicit handling of
522         the anonymous argument register, and make op_new_function
523         take a parameter to indicate whether it should null check
524         the target slot before creating the function object.
525
526         * bytecode/CodeBlock.cpp:
527         (JSC::CodeBlock::dump):
528         * bytecode/Opcode.h:
529         * bytecompiler/BytecodeGenerator.cpp:
530         (JSC::BytecodeGenerator::BytecodeGenerator):
531         (JSC::BytecodeGenerator::emitInitLazyRegister):
532         (JSC::BytecodeGenerator::registerFor):
533         (JSC::BytecodeGenerator::createLazyRegisterIfNecessary):
534         (JSC::BytecodeGenerator::constRegisterFor):
535         (JSC::BytecodeGenerator::emitNewFunction):
536         (JSC::BytecodeGenerator::emitLazyNewFunction):
537         (JSC::BytecodeGenerator::emitNewFunctionInternal):
538         * bytecompiler/BytecodeGenerator.h:
539         * interpreter/Interpreter.cpp:
540         (JSC::Interpreter::privateExecute):
541         * jit/JIT.cpp:
542         (JSC::JIT::privateCompileMainPass):
543         * jit/JIT.h:
544         * jit/JITOpcodes.cpp:
545         (JSC::JIT::emit_op_init_lazy_reg):
546         (JSC::JIT::emit_op_new_func):
547         * jit/JITOpcodes32_64.cpp:
548         (JSC::JIT::emit_op_init_lazy_reg):
549         * parser/Nodes.h:
550         (JSC::ScopeNode::needsActivationForMoreThanVariables):
551
552 2010-09-23  David Kilzer  <ddkilzer@apple.com>
553
554         <rdar://problem/8460731> ~9.9% speedup when compiling interpreter with llvm-gcc-4.2
555         https://bugs.webkit.org/show_bug.cgi?id=46423
556
557         Reviewed by Oliver Hunt.
558
559         * interpreter/Interpreter.cpp:
560         (JSC::Interpreter::privateExecute): Disable the gcc computed
561         goto hacks added in r55564 when compiling with llvm-gcc-4.2.
562
563 2010-09-23  Lucas De Marchi  <lucas.demarchi@profusion.mobi>
564
565         Reviewed by Darin Adler.
566
567         Fix usage of enum as if it was a define
568         https://bugs.webkit.org/show_bug.cgi?id=46355
569
570         pthread.h defines PTHREAD_MUTEX_DEFAULT and PTHREAD_MUTEX_NORMAL as an
571         enum.  Hence, it cannot be used by the preprocessor which always
572         evaluates that condition as true. This was giving a warning when
573         compiling with gcc and "-Wundef" flag.
574
575         The second path, when PTHREAD_MUTEX_DEFAULT is not the same of
576         PTHREAD_MUTEX_NORMAL, is not slow. So, let's eliminate the first path
577         and get rid of that #if.
578
579         * wtf/ThreadingPthreads.cpp: Always call pthread_mutexattr_init() to
580         set mutex type to PTHREAD_MUTEX_NORMAL.
581         (WTF::Mutex::Mutex):
582
583 2010-09-23  Michael Saboff  <msaboff@apple.com>
584
585         Reviewed by Geoffrey Garen.
586
587         Removed extraneous truncation of ovector on entry and error exit.
588         Changed the initialization to -1 of vector to only initialize
589         the start indecies, which is sufficient for the pattern/subpatterns.
590         Changed the JIT code to not clear the end index for subpatterns
591         as it isn't needed.  These changes are worth ~2.7% on v8-regexp.
592         https://bugs.webkit.org/show_bug.cgi?id=46404
593
594         * runtime/RegExp.cpp:
595         (JSC::RegExp::match):
596         * yarr/RegexJIT.cpp:
597         (JSC::Yarr::RegexGenerator::generateParenthesesSingle):
598
599 2010-09-22  Oliver Hunt  <oliver@apple.com>
600
601         Reviewed by Geoff Garen.
602
603         Only copy captured variables into activation
604         https://bugs.webkit.org/show_bug.cgi?id=46330
605
606         We now track free variable information which means that
607         we no longer need to copy every variable defined in a
608         function.  With this patch activations only retain those
609         variables needed for correctness.  In order to interact
610         safely with the inspector this means that JSActivation
611         now provides its own lookup functions so it can avoid 
612         trying to read or write to variables that have been
613         optimised out.
614
615         * bytecode/CodeBlock.h:
616         * bytecompiler/BytecodeGenerator.cpp:
617         (JSC::BytecodeGenerator::BytecodeGenerator):
618         * parser/Nodes.h:
619         (JSC::ScopeNode::capturedVariableCount):
620         (JSC::ScopeNode::captures):
621         * runtime/Arguments.h:
622         (JSC::JSActivation::copyRegisters):
623         * runtime/Executable.cpp:
624         (JSC::FunctionExecutable::FunctionExecutable):
625         (JSC::FunctionExecutable::compileForCallInternal):
626         (JSC::FunctionExecutable::compileForConstructInternal):
627         * runtime/Executable.h:
628         (JSC::FunctionExecutable::capturedVariableCount):
629         * runtime/JSActivation.cpp:
630         (JSC::JSActivation::markChildren):
631         (JSC::JSActivation::symbolTableGet):
632         (JSC::JSActivation::symbolTablePut):
633         (JSC::JSActivation::getOwnPropertyNames):
634         (JSC::JSActivation::symbolTablePutWithAttributes):
635         * runtime/JSActivation.h:
636
637 2010-09-23  Ismail Donmez  <ismail@namtrac.org>
638
639         Reviewed by Andreas Kling.
640
641         Fix jsc.exe build for Windows CE
642
643         * jsc.pro: Add mmtimer.lib for Windows CE.
644
645 2010-09-23  Ismail Donmez  <ismail@namtrac.org>
646
647         Unreviewed.
648
649         JIT should be disabled on Windows CE. Broken in r64176.
650
651         * wtf/Platform.h:
652
653 2010-09-23  Peter Varga  <pvarga@inf.u-szeged.hu>
654
655         Reviewed by Gavin Barraclough.
656
657         Reduce the number of BOL checks in YARR Interpreter
658         https://bugs.webkit.org/show_bug.cgi?id=46260
659
660         Extend the YARR Interpreter with an optimization which reduces the number of
661         BOL assertion checks. If a "TypeBodyAlternative" byteTerm is followed by a
662         "TypeAssertionBOL" byteTerm it will be checked just one time.
663
664         * yarr/RegexInterpreter.cpp:
665         (JSC::Yarr::Interpreter::matchDisjunction):
666         (JSC::Yarr::ByteCompiler::compile):
667         (JSC::Yarr::ByteCompiler::regexBegin):
668         (JSC::Yarr::ByteCompiler::alternativeBodyDisjunction):
669         (JSC::Yarr::ByteCompiler::emitDisjunction):
670         * yarr/RegexInterpreter.h:
671         (JSC::Yarr::ByteTerm::BodyAlternativeBegin):
672         (JSC::Yarr::ByteTerm::BodyAlternativeDisjunction):
673         (JSC::Yarr::ByteTerm::BodyAlternativeEnd):
674         (JSC::Yarr::ByteTerm::AlternativeBegin):
675         (JSC::Yarr::ByteTerm::AlternativeDisjunction):
676         (JSC::Yarr::ByteTerm::AlternativeEnd):
677
678 2010-09-22  Michael Saboff  <msaboff@apple.com>
679
680         Reviewed by Gavin Barraclough.
681
682         Fixed the cross over from alternatives executed once and
683         those that loop.  This fixed the problem where the index
684         was getting messed up for looping alternatives causing an
685         infinite loop.
686         https://bugs.webkit.org/show_bug.cgi?id=46189
687
688         * yarr/RegexJIT.cpp:
689         (JSC::Yarr::RegexGenerator::generateDisjunction):
690
691 2010-09-22  Steve Falkenburg  <sfalken@apple.com>
692
693         Rubber stamped by Jon Honeycutt.
694
695         Allow jsc.exe to be run against unversioned ICU.
696
697         * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
698
699 2010-09-22  Kwang Yul Seo  <skyul@company100.net>
700
701         Reviewed by Laszlo Gombos.
702
703         Use "typedef wchar_t JSChar" when compiled with RVCT
704         https://bugs.webkit.org/show_bug.cgi?id=40651
705
706         Use wchar_t for JSChar and UChar when compiled with RVCT.
707         Linux is the exception for this rule.
708
709         * API/JSStringRef.h:
710         * wtf/unicode/qt4/UnicodeQt4.h:
711
712 2010-09-22  Oliver Hunt  <oliver@apple.com>
713
714         Reviewed by Gavin Barraclough.
715
716         [INTERPRETER] Two tests fail with SputnikError: #1.1: if argArray is neither an array nor an arguments object (see 10.1.8), a TypeError exception is thrown
717         https://bugs.webkit.org/show_bug.cgi?id=44245
718
719         Remove incorrect code from op_load_varargs in the interpreter.
720
721         * interpreter/Interpreter.cpp:
722         (JSC::Interpreter::privateExecute):
723
724 2010-09-22  Oliver Hunt  <oliver@apple.com>
725
726         Reviewed by Gavin Barraclough.
727
728         [JIT] fast/js/sputnik/Conformance/15_Native_Objects/15.3_Function/15.3.5/S15.3.5.3_A2_T6.html fails
729         https://bugs.webkit.org/show_bug.cgi?id=44246
730
731         JIT code generated for instanceof was not checking to ensure that the prototype property was
732         an object, this patch ensures that it does.
733
734         * jit/JITOpcodes.cpp:
735         (JSC::JIT::emit_op_instanceof):
736         (JSC::JIT::emitSlow_op_instanceof):
737         * jit/JITOpcodes32_64.cpp:
738         (JSC::JIT::emit_op_instanceof):
739         (JSC::JIT::emitSlow_op_instanceof):
740
741 2010-09-22  Patrick Gansterer  <paroga@webkit.org>
742
743         Reviewed by Darin Adler.
744
745         Inline UTF8SequenceLength
746         https://bugs.webkit.org/show_bug.cgi?id=45589
747
748         * wtf/unicode/UTF8.cpp:
749         (WTF::Unicode::convertUTF8ToUTF16): Use inline version of UTF8SequenceLength to improve performance.
750
751 2010-09-21  Oliver Hunt  <oliver@apple.com>
752
753         RS=Gavin Barraclough.
754
755         Fix codeblock dumping
756
757         * bytecode/CodeBlock.cpp:
758         (JSC::CodeBlock::dump):
759         * runtime/Executable.h:
760         (JSC::ScriptExecutable::ScriptExecutable):
761
762 2010-09-21  Oliver Hunt  <oliver@apple.com>
763
764         Reviewed by Geoffrey Garen.
765
766         Speed up function.apply(..., arguments)
767         https://bugs.webkit.org/show_bug.cgi?id=46207
768
769         Add code to do argument copying inline in the case
770         where we're using Function.apply to forward our arguments
771         directly.
772
773         * jit/JIT.cpp:
774         (JSC::JIT::privateCompileSlowCases):
775            Splitted op_load_varargs into fast and slow paths, so add the call
776            to the slow path generator.
777         * jit/JIT.h:
778         * jit/JITCall32_64.cpp:
779           Remove 32bit specific emit_op_load_varargs as the logic is the
780           same for all value representations
781         * jit/JITOpcodes.cpp:
782         (JSC::JIT::emit_op_load_varargs):
783           Copy arguments inline
784         (JSC::JIT::emitSlow_op_load_varargs):
785
786 2010-09-21  Geoffrey Garen  <ggaren@apple.com>
787
788         Reviewed by Oliver Hunt.
789
790         <rdar://problem/8363003> REGRESSION: ~1.4% sunspider regression in
791         interpreter due to 54724 and 54596
792         
793         Fixed a typo (using "UNLIKELY" instead of "LIKELY").
794         
795         * wtf/PassRefPtr.h:
796         (WTF::refIfNotNull):
797         (WTF::derefIfNotNull): It is likely that m_ptr != 0 because most RefPtrs
798         hold real data. Also, in cases where they do not hold real data, the
799         compiler usually sees a call to release() right before the call to the
800         destructor, so it can probably optimize out the test completely.
801
802 2010-09-21  Fridrich Strba  <fridrich.strba@bluewin.ch>
803
804         Reviewed by Martin Robinson.
805
806         Build issues with Windows versions of the GTK+ port
807         https://bugs.webkit.org/show_bug.cgi?id=45844
808
809         Link with winmm.dll when necessary and specify the executable extension
810         explicitely so that the Programs/jsc-@WEBKITGTK_API_MAJOR_VERSION@
811         rule actually works.
812
813         Don't try to build the ThreadSpecificWin.cpp since GTK+ port uses
814         a section in ThreadSpecific.cpp
815
816         * GNUmakefile.am:
817
818 2010-09-21  Martin Robinson  <mrobinson@igalia.com>
819
820         Reviewed by Xan Lopez.
821
822         [GTK] 'make dist' should be fixed in preparation for the next release
823         https://bugs.webkit.org/show_bug.cgi?id=46129
824
825         * GNUmakefile.am: Update the sources list to include missing headers.
826
827 2010-09-21  Dave Tapuska  <dtapuska@rim.com>
828
829         Reviewed by Csaba Osztrogonác.
830
831         https://bugs.webkit.org/show_bug.cgi?id=45673
832
833         r65596 caused ENABLE_PROFILER_REFERENCE_OFFSET to not be
834         8 byte aligned. A non 8 byte divisible value for this will
835         cause the sp to become non 8 byte aligned.
836
837         Verify and correct offset values that r65596 effected that
838         weren't updated.
839
840         * jit/JITStubs.cpp:
841         * jit/JITStubs.h:
842
843 2010-09-21  Xan Lopez  <xlopez@igalia.com>
844
845         Reviewed by Martin Robinson.
846
847         Fix Opcode stats compilation
848         https://bugs.webkit.org/show_bug.cgi?id=46079
849
850         The FixedArray API had changed, and <stdio.h> was not included for
851         printf.
852
853         * bytecode/Opcode.cpp:
854         (JSC::OpcodeStats::~OpcodeStats):
855
856 2010-09-20  Michael Saboff  <msaboff@apple.com>
857
858         Reviewed by Gavin Barraclough.
859
860         Fixed detection of alternative smaller than the first alternative
861         to only check looping alternatives.
862         https://bugs.webkit.org/show_bug.cgi?id=46049
863
864         * yarr/RegexJIT.cpp:
865         (JSC::Yarr::RegexGenerator::generateDisjunction):
866
867 2010-09-20  Peter Varga  <pvarga@inf.u-szeged.hu>
868
869         Reviewed by Geoffrey Garen.
870
871         REGRESSION(67790): jsc tests are failed with YARR interpreter
872         https://bugs.webkit.org/show_bug.cgi?id=46083
873
874         Fix the initializing of the lastSubpatternId member of
875         parentheses.
876
877         * yarr/RegexCompiler.cpp:
878         (JSC::Yarr::RegexPatternConstructor::atomParenthesesEnd):
879
880 2010-09-20  Gavin Barraclough  <barraclough@apple.com>
881
882         Reviewed by Oliver Hunt.
883
884         Bug 46077 - ASSERT failure in YARR JIT
885
886         We will currently attempt to loop if there are multiple alternatives, they are all
887         BOL predicated, and the last alternative is longer then the first - however if all
888         alternatives are BOL predicated the head of loop label will not have been set, and
889         we'll try to link a jump to an undefined label. Stop doing so.
890
891         * yarr/RegexJIT.cpp:
892         (JSC::Yarr::RegexGenerator::generateDisjunction):
893
894 2010-09-20  Adam Roben  <aroben@apple.com>
895
896         Export RegExpObject::info from JavaScriptCore
897
898         This allows obj->inherits(&RegExpObject::info) to work correctly from
899         outside JavaScriptCore.dll on Windows.
900
901         Fixes <http://webkit.org/b/46098>
902         fast/loader/stateobjects/pushstate-object-types.html fails on Windows
903
904         Reviewed by John Sullivan.
905
906         * runtime/RegExpObject.h: Added JS_EXPORTDATA to the info member, as
907         we already have for some other classes whose info members have to be
908         used from outside the DLL.
909
910 2010-09-19  Gavin Barraclough  <barraclough@apple.com>
911
912         Windows build fix pt 2.
913
914         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
915
916 2010-09-19  Gavin Barraclough  <barraclough@apple.com>
917
918         Windows build fix pt 1.
919
920         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
921
922 2010-09-19  Gavin Barraclough  <barraclough@apple.com>
923
924         Build fix - implicit double-to-int conversion invalid on 32-bit.
925
926         * runtime/DatePrototype.cpp:
927         (JSC::fillStructuresUsingDateArgs):
928         (JSC::dateProtoFuncSetYear):
929
930 2010-09-19  Gavin Barraclough  <barraclough@apple.com>
931
932         Reviewed by Oliver Hunt.
933
934         Bug 46065 - Unify implementation of ToInt32 and ToUInt32, don't use fmod.
935
936         These methods implement the same conversion (see discussion in the notes
937         of sections of 9.5 and 9.6 of the spec), only differing in how the result
938         is interpretted.
939
940         Date prototype is incorrectly using toInt32, and this is causing us to
941         provide an output value indicating whether the input to ToInt32 was finite
942         (the corresponding methods on Date are actually spec'ed to use ToInteger,
943         not ToInt32).  This patch partially fixes this in order to remove this
944         bogus output value, hoewever more work will be require to bring Date
945         fully up to spec compliance (the constructor is still performing ToInt32
946         conversions).
947
948         * JavaScriptCore.exp:
949         * runtime/DatePrototype.cpp:
950         (JSC::fillStructuresUsingTimeArgs):
951         (JSC::fillStructuresUsingDateArgs):
952         (JSC::dateProtoFuncSetYear):
953         * runtime/JSValue.cpp:
954         (JSC::toInt32):
955         * runtime/JSValue.h:
956         (JSC::toUInt32):
957         (JSC::JSValue::toInt32):
958         (JSC::JSValue::toUInt32):
959
960 2010-09-18  Darin Adler  <darin@apple.com>
961
962         First step in fixing Windows build.
963
964         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
965         Removed incorrect symbol. The build will probably still fail,
966         but the failure will tell us what symbol to add.
967
968 2010-09-18  Michael Saboff  <msaboff@apple.com>
969
970         Reviewed by Gavin Barraclough.
971
972         Added code to unroll regular expressions containing ^.
973         Alternatives that begin with ^ are tagged during parsing
974         and rolled up in containing sub expression structs.
975         After parsing, a regular expression flagged as containing
976         a ^ (a.k.a. BOL) is processed further in optimizeBOL().
977         A copy of the disjunction is made excluding alternatives that
978         are rooted with BOL.  The original alternatives are flagged
979         to only be executed once.  The copy of the other alternatives are
980         added to the original expression.
981         In the case that all original alternatives are flagged, there
982         won't be any looping alternatives.
983         The JIT generator will emit code accordingly, executing the
984         original alternatives once and then looping over the
985         alternatives that aren't anchored with a BOL (if any).
986         https://bugs.webkit.org/show_bug.cgi?id=45787
987
988         * yarr/RegexCompiler.cpp:
989         (JSC::Yarr::RegexPatternConstructor::assertionBOL):
990         (JSC::Yarr::RegexPatternConstructor::atomParenthesesEnd):
991         (JSC::Yarr::RegexPatternConstructor::copyDisjunction):
992         (JSC::Yarr::RegexPatternConstructor::copyTerm):
993         (JSC::Yarr::RegexPatternConstructor::optimizeBOL):
994         (JSC::Yarr::compileRegex):
995         * yarr/RegexJIT.cpp:
996         (JSC::Yarr::RegexGenerator::generateDisjunction):
997         * yarr/RegexPattern.h:
998         (JSC::Yarr::PatternAlternative::PatternAlternative):
999         (JSC::Yarr::PatternAlternative::setOnceThrough):
1000         (JSC::Yarr::PatternAlternative::onceThrough):
1001         (JSC::Yarr::PatternDisjunction::PatternDisjunction):
1002         (JSC::Yarr::RegexPattern::RegexPattern):
1003         (JSC::Yarr::RegexPattern::reset):
1004
1005 2010-09-18  Patrick Gansterer  <paroga@paroga.com>
1006
1007         Reviewed by Darin Adler.
1008
1009         Rename Wince files to WinCE
1010         https://bugs.webkit.org/show_bug.cgi?id=37287
1011
1012         * wtf/unicode/Unicode.h:
1013         * wtf/unicode/wince/UnicodeWinCE.cpp: Copied from JavaScriptCore/wtf/unicode/wince/UnicodeWince.cpp.
1014         * wtf/unicode/wince/UnicodeWinCE.h: Copied from JavaScriptCore/wtf/unicode/wince/UnicodeWince.h.
1015         * wtf/unicode/wince/UnicodeWince.cpp: Removed.
1016         * wtf/unicode/wince/UnicodeWince.h: Removed.
1017         * wtf/wince/FastMallocWinCE.h: Copied from JavaScriptCore/wtf/wince/FastMallocWince.h.
1018         * wtf/wince/FastMallocWince.h: Removed.
1019
1020 2010-09-18  Ademar de Souza Reis Jr  <ademar.reis@openbossa.org>
1021
1022         Reviewed by Kenneth Rohde Christiansen.
1023
1024         Enable Platform Strategies on Qt
1025
1026         [Qt] Turn on PLATFORM_STRATEGIES
1027         https://bugs.webkit.org/show_bug.cgi?id=45831
1028
1029         * wtf/Platform.h: Enable Platform Strategies when building QtWebkit
1030
1031 2010-09-17  Oliver Hunt  <oliver@apple.com>
1032
1033         Reviewed by Gavin Barraclough.
1034
1035         Imprecise tracking of variable capture leads to overly pessimistic creation of activations
1036         https://bugs.webkit.org/show_bug.cgi?id=46020
1037
1038         The old logic for track free and captured variables would cause us
1039         to decide we needed an activation in every function along the scope
1040         chain between a variable capture and its declaration.  We now track
1041         captured variables precisely which requires a bit of additional work
1042
1043         The most substantial change is that the parsing routine needs to
1044         be passed the list of function parameters when reparsing a function
1045         as when reparsing we don't parse the function declaration itself only
1046         its body.
1047
1048         * JavaScriptCore.exp:
1049         * parser/JSParser.cpp:
1050         (JSC::JSParser::Scope::Scope):
1051         (JSC::JSParser::Scope::needsFullActivation):
1052            We need to distinguish between use of a feature that requires
1053            an activation and eval so we now get this additional flag.
1054         (JSC::JSParser::Scope::collectFreeVariables):
1055         (JSC::JSParser::Scope::getCapturedVariables):
1056            We can't simply return the list of "capturedVariables" now as
1057            is insufficiently precise, so we compute them instead.
1058         (JSC::JSParser::popScope):
1059         (JSC::jsParse):
1060         (JSC::JSParser::JSParser):
1061         (JSC::JSParser::parseProgram):
1062         (JSC::JSParser::parseWithStatement):
1063         (JSC::JSParser::parseTryStatement):
1064         (JSC::JSParser::parseFunctionInfo):
1065         (JSC::JSParser::parseFunctionDeclaration):
1066         (JSC::JSParser::parseProperty):
1067         (JSC::JSParser::parseMemberExpression):
1068         * parser/JSParser.h:
1069         * parser/Parser.cpp:
1070         (JSC::Parser::parse):
1071         * parser/Parser.h:
1072         (JSC::Parser::parse):
1073         * runtime/Executable.cpp:
1074         (JSC::EvalExecutable::compileInternal):
1075         (JSC::ProgramExecutable::checkSyntax):
1076         (JSC::ProgramExecutable::compileInternal):
1077         (JSC::FunctionExecutable::compileForCallInternal):
1078         (JSC::FunctionExecutable::compileForConstructInternal):
1079         (JSC::FunctionExecutable::reparseExceptionInfo):
1080         (JSC::EvalExecutable::reparseExceptionInfo):
1081         (JSC::FunctionExecutable::fromGlobalCode):
1082            Pass function parameters (if available) to the parser.
1083
1084 2010-09-17  Anders Carlsson  <andersca@apple.com>
1085
1086         Reviewed by Sam Weinig.
1087
1088         Add IsFloatingPoint and IsArithmetic type traits
1089         https://bugs.webkit.org/show_bug.cgi?id=46018
1090
1091         * wtf/TypeTraits.h:
1092         * wtf/TypeTraits.cpp:
1093
1094 2010-09-17  Martin Robinson  <mrobinson@igalia.com>
1095
1096         Reviewed by Oliver Hunt.
1097
1098         [GTK] FontPlatformDataFreeType should use smart pointers to hold its members
1099         https://bugs.webkit.org/show_bug.cgi?id=45917
1100
1101         Added support to PlatformRefPtr for handling HashTableDeletedValue.
1102
1103         * wtf/PlatformRefPtr.h:
1104         (WTF::PlatformRefPtr::PlatformRefPtr): Added a constructor that takes HashTableDeletedValue.
1105         (WTF::PlatformRefPtr::isHashTableDeletedValue): Added.
1106
1107 2010-09-16  Oliver Hunt  <oliver@apple.com>
1108
1109         Reviewed by Geoffrey Garen.
1110
1111         Crash due to timer triggered GC on one heap while another heap is active
1112         https://bugs.webkit.org/show_bug.cgi?id=45932
1113         <rdar://problem/8318446>
1114
1115         The GC timer may trigger for one heap while another heap is active.  This
1116         is safe, but requires us to ensure that we have temporarily associated the
1117         thread's identifierTable with the heap we're collecting on.  Otherwise we
1118         may end up with the identifier tables in an inconsistent state leading to
1119         an eventual crash.
1120
1121         * runtime/Collector.cpp:
1122         (JSC::Heap::allocate):
1123         (JSC::Heap::reset):
1124         (JSC::Heap::collectAllGarbage):
1125            Add assertions to ensure we have the correct identifierTable active
1126            while collecting.
1127         * runtime/GCActivityCallbackCF.cpp:
1128         (JSC::DefaultGCActivityCallbackPlatformData::trigger):
1129            Temporarily make the expected IdentifierTable active
1130         * wtf/WTFThreadData.h:
1131         (JSC::IdentifierTable::remove):
1132            Make it possible to see when IdentifierTable::remove has succeeded
1133         * wtf/text/StringImpl.cpp:
1134         (WTF::StringImpl::~StringImpl):
1135            CRASH if an StringImpl is an Identifier but isn't present in the
1136            active IdentifierTable.  If we get to this state something has
1137            gone wrong and we should just crash immediately.
1138
1139 2010-09-16  Martin Robinson  <mrobinson@igalia.com>
1140
1141         Reviewed by Xan Lopez.
1142
1143         [GTK] Implement dissolveDragImageToFraction
1144         https://bugs.webkit.org/show_bug.cgi?id=45826
1145
1146         * wtf/gobject/GTypedefs.h: Added forward declarations for GtkWindow and GdkEventExpose.
1147
1148 2010-09-16  Eric Uhrhane  <ericu@chromium.org>
1149
1150         Reviewed by Jian Li.
1151
1152         Unify FILE_SYSTEM and FILE_WRITER enables under the name FILE_SYSTEM.
1153         https://bugs.webkit.org/show_bug.cgi?id=45798
1154
1155         * Configurations/FeatureDefines.xcconfig:
1156
1157 2010-09-15  Oliver Hunt  <oliver@apple.com>
1158
1159         Reviewed by Geoffrey Garen.
1160
1161         Use free variable analysis to improve activation performance
1162         https://bugs.webkit.org/show_bug.cgi?id=45837
1163
1164         Adds free and captured variable tracking to the JS parser.  This
1165         allows us to avoid construction of an activation object in some
1166         cases.  Future patches will make more use of this information to
1167         improve those cases where activations are still needed.
1168
1169         * parser/ASTBuilder.h:
1170         * parser/JSParser.cpp:
1171         (JSC::JSParser::Scope::Scope):
1172         (JSC::JSParser::Scope::declareVariable):
1173         (JSC::JSParser::Scope::useVariable):
1174         (JSC::JSParser::Scope::collectFreeVariables):
1175         (JSC::JSParser::Scope::capturedVariables):
1176         (JSC::JSParser::ScopeRef::ScopeRef):
1177         (JSC::JSParser::ScopeRef::operator->):
1178         (JSC::JSParser::ScopeRef::index):
1179         (JSC::JSParser::currentScope):
1180         (JSC::JSParser::pushScope):
1181         (JSC::JSParser::popScope):
1182         (JSC::JSParser::parseProgram):
1183         (JSC::JSParser::parseVarDeclarationList):
1184         (JSC::JSParser::parseConstDeclarationList):
1185         (JSC::JSParser::parseTryStatement):
1186         (JSC::JSParser::parseFormalParameters):
1187         (JSC::JSParser::parseFunctionInfo):
1188         (JSC::JSParser::parseFunctionDeclaration):
1189         (JSC::JSParser::parsePrimaryExpression):
1190         * parser/Nodes.cpp:
1191         (JSC::ScopeNodeData::ScopeNodeData):
1192         (JSC::ScopeNode::ScopeNode):
1193         (JSC::ProgramNode::ProgramNode):
1194         (JSC::ProgramNode::create):
1195         (JSC::EvalNode::EvalNode):
1196         (JSC::EvalNode::create):
1197         (JSC::FunctionBodyNode::FunctionBodyNode):
1198         (JSC::FunctionBodyNode::create):
1199         * parser/Nodes.h:
1200         (JSC::ScopeNode::needsActivation):
1201         (JSC::ScopeNode::hasCapturedVariables):
1202         * parser/Parser.cpp:
1203         (JSC::Parser::didFinishParsing):
1204         * parser/Parser.h:
1205         (JSC::Parser::parse):
1206         * parser/SyntaxChecker.h:
1207         * runtime/Executable.cpp:
1208         (JSC::EvalExecutable::compileInternal):
1209         (JSC::ProgramExecutable::compileInternal):
1210         (JSC::FunctionExecutable::compileForCallInternal):
1211         (JSC::FunctionExecutable::compileForConstructInternal):
1212         * runtime/Executable.h:
1213         (JSC::ScriptExecutable::needsActivation):
1214         (JSC::ScriptExecutable::recordParse):
1215
1216 2010-09-14  Hyung Song  <beergun@company100.net>
1217
1218         Reviewed by Kent Tamura.
1219
1220         [BREWMP] Add IMemGroup and IMemSpace to OwnPtr type.
1221         https://bugs.webkit.org/show_bug.cgi?id=44764
1222
1223         * wtf/OwnPtrCommon.h:
1224         * wtf/brew/OwnPtrBrew.cpp:
1225         (WTF::deleteOwnedPtr):
1226
1227 2010-09-14  Darin Adler  <darin@apple.com>
1228
1229         Reviewed by Geoffrey Garen.
1230
1231         Sort with non-numeric custom sort function fails on array with length but no values
1232         https://bugs.webkit.org/show_bug.cgi?id=45781
1233
1234         * runtime/JSArray.cpp:
1235         (JSC::JSArray::sort): Replaced early exit for an array of length zero to instead
1236         exit for any array without values, even if it has a non-0 length.
1237
1238 2010-09-14  Steve Falkenburg  <sfalken@apple.com>
1239
1240         Windows production build fix.
1241         Roll out r65143.
1242
1243         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
1244
1245 2010-09-14  Kwang Yul Seo  <skyul@company100.net>
1246
1247         Reviewed by Darin Adler.
1248
1249         Share UnicodeMacrosFromICU.h
1250         https://bugs.webkit.org/show_bug.cgi?id=45710
1251
1252         glib, qt4 and wince use the same macros from ICU.
1253         Remove the code duplication and use the same header file.
1254
1255         * wtf/unicode/UnicodeMacrosFromICU.h: Copied from JavaScriptCore/wtf/unicode/glib/UnicodeMacrosFromICU.h.
1256         * wtf/unicode/glib/UnicodeMacrosFromICU.h: Removed.
1257         * wtf/unicode/qt4/UnicodeQt4.h:
1258         * wtf/unicode/wince/UnicodeWince.h:
1259
1260 2010-09-13  Darin Adler  <darin@apple.com>
1261
1262         Reviewed by Adam Barth.
1263
1264         Preparation for eliminating deprecatedParseURL
1265         https://bugs.webkit.org/show_bug.cgi?id=45695
1266
1267         * wtf/text/WTFString.h: Added isAllSpecialCharacters, moved here from
1268         the HTML tree builder.
1269
1270 2010-09-13  Darin Fisher  <darin@chromium.org>
1271
1272         Reviewed by David Levin.
1273
1274         Add option to conditionally compile smooth scrolling support.
1275         https://bugs.webkit.org/show_bug.cgi?id=45689
1276
1277         ENABLE(SMOOTH_SCROLLING) is disabled by default for all platforms.
1278
1279         * wtf/Platform.h:
1280
1281 2010-09-13  Adam Roben  <aroben@apple.com>
1282
1283         Copy JavaScriptCore's generated sources to the right directory
1284
1285         * JavaScriptCore.vcproj/JavaScriptCore.make: Fixed typo.
1286
1287 2010-09-13  Kwang Yul Seo  <skyul@company100.net>
1288
1289         Reviewed by Kent Tamura.
1290
1291         [BREWMP] Don't call _msize
1292         https://bugs.webkit.org/show_bug.cgi?id=45556
1293
1294         Because Brew MP uses its own memory allocator, it is not correct to use
1295         _msize in fastMallocSize. Add !PLATFORM(BREWMP) guard.
1296
1297         * wtf/FastMalloc.cpp:
1298         (WTF::fastMallocSize):
1299
1300 2010-09-11  Simon Hausmann  <simon.hausmann@nokia.com>
1301
1302         Reviewed by Andreas Kling.
1303
1304         [Qt] V8 port: webcore project files changes
1305         https://bugs.webkit.org/show_bug.cgi?id=45141
1306
1307         * JavaScriptCore.pro: Moved wtf specific files to wtf.pri,
1308         so that they can also be used from WebCore.pro for v8 builds.
1309         * wtf/wtf.pri: Added.
1310
1311 2010-09-10  Fridrich Strba  <fridrich.strba@bluewin.ch>
1312
1313         Reviewed by Andreas Kling.
1314
1315         Add a define missing when building with glib unicode backend
1316         https://bugs.webkit.org/show_bug.cgi?id=45544
1317
1318         * wtf/unicode/glib/UnicodeMacrosFromICU.h:
1319
1320 2010-09-10  Stephanie Lewis  <slewis@apple.com>
1321
1322         Reviewed by Alexey Proskuryakov.
1323         
1324         Refactor JavaScriptCore memory statistics so that WebKit doesn't need to know 
1325         about the JIT and other implementation details of JavaScriptCore.  Necessary 
1326         to fix PPC build.
1327         
1328         https://bugs.webkit.org/show_bug.cgi?id=45528
1329
1330         * JavaScriptCore.exp:
1331         * JavaScriptCore.xcodeproj/project.pbxproj:
1332         * runtime/MemoryStatistics.cpp: Added.
1333         (JSC::memoryStatistics):
1334         * runtime/MemoryStatistics.h: Added.
1335
1336 2010-09-09  Michael Saboff  <msaboff@apple.com>
1337
1338         Reviewed by Gavin Barraclough.
1339
1340         Added a regular expression tracing facility.  This tracing is connected
1341         to jsc.  Every compiled regular expression object is added to a list.
1342         When the process exits, each regular expression dumps its pattern,
1343         JIT address, number of times it was executed and the number of matches.
1344         This tracing is controlled by the macro ENABLE_REGEXP_TRACING in
1345         wtf/Platform.h.
1346         https://bugs.webkit.org/show_bug.cgi?id=45401
1347
1348         * JavaScriptCore.exp:
1349         * jsc.cpp:
1350         (runWithScripts):
1351         * runtime/JSGlobalData.cpp:
1352         (JSC::JSGlobalData::JSGlobalData):
1353         (JSC::JSGlobalData::~JSGlobalData):
1354         (JSC::JSGlobalData::addRegExpToTrace):
1355         (JSC::JSGlobalData::dumpRegExpTrace):
1356         * runtime/JSGlobalData.h:
1357         * runtime/RegExp.cpp:
1358         (JSC::RegExp::RegExp):
1359         (JSC::RegExp::create):
1360         (JSC::RegExp::match):
1361         * runtime/RegExp.h:
1362         * wtf/Platform.h:
1363         * yarr/RegexJIT.h:
1364         (JSC::Yarr::RegexCodeBlock::getAddr):
1365
1366 2010-09-09  John Therrell  <jtherrell@apple.com>
1367
1368         32-bit build fix.
1369
1370         * jit/ExecutableAllocator.cpp:
1371         (JSC::ExecutableAllocator::committedByteCount):
1372
1373 2010-09-09  John Therrell  <jtherrell@apple.com>
1374
1375         Reviewed by Alexey Proskuryakov.
1376
1377         Added statistics sampling and reporting for JavaScriptCore's RegisterFile and ExecutableAllocator classes
1378         https://bugs.webkit.org/show_bug.cgi?id=45134
1379
1380         Added thread-safe committed byte counting and reporting functionality to RegisterFile and 
1381         ExecutableAllocator.
1382
1383         * JavaScriptCore.exp:
1384         Exported new symbols to allow for WebKit to get statistics from JavaScriptCore classes.
1385         
1386         * interpreter/RegisterFile.cpp:
1387         (JSC::registerFileStatisticsMutex):
1388         Added function which returns a static Mutex used for locking during read/write access to
1389         static committed byte count variable.
1390         (JSC::RegisterFile::~RegisterFile):
1391         Added call to addToStatistics since memory is decommitted here.
1392         (JSC::RegisterFile::releaseExcessCapacity):
1393         Added call to addToStatistics since memory is decommitted here.
1394         (JSC::RegisterFile::initializeThreading):
1395         Added function which calls registerFileStatisticsMutex().
1396         (JSC::RegisterFile::committedByteCount):
1397         Added function which returns the current committed byte count for RegisterFile.
1398         (JSC::RegisterFile::addToCommittedByteCount):
1399         Added function which updates committed byte count.
1400         
1401         * interpreter/RegisterFile.h:
1402         (JSC::RegisterFile::RegisterFile):
1403         Added call to addToStatistics since memory is committed here.
1404         (JSC::RegisterFile::grow):
1405         Added call to addToStatistics since memory is committed here.
1406         
1407         * jit/ExecutableAllocator.h:
1408         Added function prototype for public static function committedByteCount().
1409         
1410         * jit/ExecutableAllocatorFixedVMPool.cpp:
1411         (JSC::FixedVMPoolAllocator::release):
1412         Added call to addToStatistics since memory is decommitted here.
1413         (JSC::FixedVMPoolAllocator::reuse):
1414         Added call to addToStatistics since memory is committed here.
1415         (JSC::FixedVMPoolAllocator::addToCommittedByteCount):
1416         Added function which updates committed byte count.
1417         (JSC::ExecutableAllocator::committedByteCount):
1418         Added function which returns the current committed byte count for ExecutableAllocator.
1419         
1420         * runtime/InitializeThreading.cpp:
1421         (JSC::initializeThreadingOnce):
1422         Added call to RegisterFile::initializeThreading.
1423
1424 2010-09-09  Mark Rowe  <mrowe@apple.com>
1425
1426         Reviewed by Oliver Hunt.
1427
1428         <http://webkit.org/b/45502> JSObjectSetPrivateProperty does not handle NULL values as it claims
1429
1430         * API/JSObjectRef.cpp:
1431         (JSObjectSetPrivateProperty): Don't call toJS if we have a NULL value as that will cause an assertion
1432         failure. Instead map NULL directly to the null JSValue.
1433         * API/tests/testapi.c:
1434         (main): Add test coverage for the NULL value case.
1435
1436 2010-09-09  Csaba Osztrogonác  <ossy@webkit.org>
1437
1438         Reviewed by Gavin Barraclough.
1439
1440         [Qt] JSVALUE32_64 not works on Windows platform with MinGW compiler
1441         https://bugs.webkit.org/show_bug.cgi?id=29268
1442
1443         * wtf/Platform.h: Enable JSVALUE32_64 for Qt/Windows/MinGW, because it works now.
1444
1445 2010-09-08  Zoltan Herczeg  <zherczeg@webkit.org>
1446
1447         Reviewed by Darin Adler.
1448
1449         Removing doneSemicolon label in the lexer
1450         https://bugs.webkit.org/show_bug.cgi?id=45289
1451
1452         As a side effect of moving the multiline comment parsing
1453         to a separate function, an opportunity raised to simplify
1454         the single line comment parsing, and removing doneSemicolon
1455         label. Slight performance increase on --parse-only
1456         tests (from 32.8ms to 31.5ms)
1457
1458         * parser/Lexer.cpp:
1459         (JSC::Lexer::lex):
1460
1461 2010-09-08  Xan Lopez  <xlopez@igalia.com>
1462
1463         Reviewed by Alexey Proskuryakov.
1464
1465         Remove accessor for private member variable in JSParser
1466         https://bugs.webkit.org/show_bug.cgi?id=45378
1467
1468         m_token is private to JSParser, so it does not seem to be useful
1469         to have an accessor for it. On top of that, the file was both
1470         using the accessor and directly accessing the member variable,
1471         only one style should be used.
1472
1473 2010-09-08  Csaba Osztrogonác  <ossy@webkit.org>
1474
1475         Reviewed by Oliver Hunt.
1476
1477         [Qt] REGRESSION(63348): jsc is broken
1478         https://bugs.webkit.org/show_bug.cgi?id=42818
1479
1480         Need fastcall conventions on Qt/Win/MinGW.
1481         Based on patches of Gavin Barraclough: r63947 and r63948.
1482
1483         * jit/JITStubs.cpp:
1484         * jit/JITStubs.h:
1485
1486 2010-09-08  Robert Hogan  <robert@webkit.org>
1487
1488         Reviewed by Antonio Gomes.
1489
1490         Remove some unnecessary duplicate calls to string functions
1491
1492         https://bugs.webkit.org/show_bug.cgi?id=45314
1493
1494         * wtf/text/WTFString.cpp:
1495         (WTF::String::format):
1496
1497 2010-09-08  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
1498
1499         Reviewed by Andreas Kling.
1500
1501         Re-Disable JIT for MSVC 64bit to fix the build on this compiler.
1502         https://bugs.webkit.org/show_bug.cgi?id=45382
1503
1504         It was enabled in the cleanup made in r64176, though it is still
1505         not implemented.
1506
1507         * wtf/Platform.h:
1508
1509 2010-09-08  Martin Robinson  <mrobinson@igalia.com>
1510
1511         Reviewed by Xan Lopez.
1512
1513         [GTK] Need a WebSocket implementation
1514         https://bugs.webkit.org/show_bug.cgi?id=45197
1515
1516         Add a GIO-based WebSocket implementation.
1517
1518         * wtf/gobject/GRefPtr.cpp: Added PlatformRefPtr support for GSource.
1519         (WTF::refPlatformPtr):
1520         (WTF::derefPlatformPtr):
1521         * wtf/gobject/GRefPtr.h: Added new template specialization declarations.
1522         * wtf/gobject/GTypedefs.h: Add some more GLib/GIO forward declarations.
1523
1524 2010-08-30  Maciej Stachowiak  <mjs@apple.com>
1525
1526         Reviewed by Darin Adler.
1527
1528         Handle MediaQueryExp memory management exclusively with smart pointers
1529         https://bugs.webkit.org/show_bug.cgi?id=44874
1530         
1531         Implemented a non-copying sort function to make it possible to sort a Vector
1532         of OwnPtrs (which cannot be copied). This is required for the above.
1533
1534         * wtf/NonCopyingSort.h: Added.
1535         (WTF::nonCopyingSort): It's secretly heapsort.
1536         (WTF::heapSort): heapsort implementation.
1537         (WTF::siftDown): Helper function for heapsort.
1538         (WTF::heapify): ditto
1539
1540         Adjust build systems.
1541         
1542         * GNUmakefile.am:
1543         * JavaScriptCore.gypi:
1544         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
1545         * JavaScriptCore.xcodeproj/project.pbxproj:
1546
1547 2010-09-08  Zoltan Herczeg  <zherczeg@webkit.org>
1548
1549         Reviewed by Darin Adler.
1550
1551         Refactoring multiline comments in the lexer
1552         https://bugs.webkit.org/show_bug.cgi?id=45289
1553
1554         MultiLine comment parsing is moved to a separate function.
1555
1556         Slight performance increase on --parse-only tests (from 33.6ms to 32.8ms)
1557         SunSpider reports no change (from 523.1ms to 521.2ms).
1558
1559         * parser/Lexer.cpp:
1560         (JSC::Lexer::parseMultilineComment):
1561         (JSC::Lexer::lex):
1562         * parser/Lexer.h:
1563
1564 2010-09-07  James Robinson  <jamesr@chromium.org>
1565
1566         Compile fix attempt for windows.
1567
1568         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1569
1570 2010-09-07  Mihai Parparita  <mihaip@chromium.org>
1571
1572         Reviewed by James Robinson.
1573
1574         Fix Windows build after r66936
1575         https://bugs.webkit.org/show_bug.cgi?id=45348
1576
1577         Add symbol names that were missing from r66936.
1578
1579         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1580
1581 2010-09-07  Mihai Parparita  <mihaip@chromium.org>
1582
1583         Reviewed by Oliver Hunt.
1584
1585         pushState and replaceState do not clone RegExp objects correctly
1586         https://bugs.webkit.org/show_bug.cgi?id=44718
1587         
1588         Move internal representation of JSC::RegExp (which depends on wether
1589         YARR and YARR_JIT is enabled) into RegExpRepresentation which can live
1590         in the implementation only. This makes it feasible to use RegExp in
1591         WebCore without bringing in all of YARR.
1592
1593         * JavaScriptCore.exp: Export RegExp and RegExpObject functions that are
1594         needed inside WebCore's JSC bindings.
1595         * runtime/RegExp.cpp:
1596         (JSC::RegExpRepresentation::~RegExpRepresentation):
1597         (JSC::RegExp::RegExp):
1598         (JSC::RegExp::~RegExp):
1599         (JSC::RegExp::compile):
1600         (JSC::RegExp::match):
1601         * runtime/RegExp.h:
1602
1603 2010-09-07  Anders Carlsson  <andersca@apple.com>
1604
1605         Reviewed by Darin Adler.
1606
1607         <rdar://problem/8381749> -Wcast-align warning emitted when building with clang
1608
1609         Remove the -Wcast-align-warning since it isn't really useful, and clang is more aggressive about warning than gcc.
1610
1611         * Configurations/Base.xcconfig:
1612
1613 2010-09-07  Zoltan Horvath  <zoltan@webkit.org>
1614
1615         Reviewed by Darin Adler.
1616
1617         REGRESSION(66741): Undefined pthread macros
1618         https://bugs.webkit.org/show_bug.cgi?id=45246
1619
1620         PTHREAD_MUTEX_NORMAL and PTHREAD_MUTEX_DEFAULT (introduced in r60487) are not defined on Linux, 
1621         but used in a statement. Add an additional check to test this.
1622
1623         * wtf/FastMalloc.cpp:
1624         (WTF::TCMalloc_PageHeap::initializeScavenger):
1625
1626 2010-09-06  Oliver Hunt  <oliver@apple.com>
1627
1628         Windows build fix
1629
1630 2010-09-05  Oliver Hunt  <oliver@apple.com>
1631
1632         Reviewed by Sam Weinig.
1633
1634         SerializedScriptValue needs to use a flat storage mechanism
1635         https://bugs.webkit.org/show_bug.cgi?id=45244
1636
1637         Export JSArray::put
1638
1639         * JavaScriptCore.exp:
1640
1641 2010-09-06  Chao-ying Fu  <fu@mips.com>
1642
1643         Reviewed by Oliver Hunt.
1644
1645         Support JSVALUE32_64 on MIPS
1646         https://bugs.webkit.org/show_bug.cgi?id=43999
1647
1648         Add missing functions to support JSVALUE32_64 on MIPS.
1649         Remove JSVALUE32 as the default for MIPS.
1650
1651         * assembler/MIPSAssembler.h:
1652         (JSC::MIPSAssembler::divd):
1653         (JSC::MIPSAssembler::mthc1):
1654         (JSC::MIPSAssembler::cvtwd):
1655         * assembler/MacroAssemblerMIPS.h:
1656         (JSC::MacroAssemblerMIPS::neg32):
1657         (JSC::MacroAssemblerMIPS::branchOr32):
1658         (JSC::MacroAssemblerMIPS::set8):
1659         (JSC::MacroAssemblerMIPS::loadDouble):
1660         (JSC::MacroAssemblerMIPS::divDouble):
1661         (JSC::MacroAssemblerMIPS::convertInt32ToDouble):
1662         (JSC::MacroAssemblerMIPS::branchDouble):
1663         (JSC::MacroAssemblerMIPS::branchConvertDoubleToInt32):
1664         (JSC::MacroAssemblerMIPS::zeroDouble):
1665         * jit/JIT.h:
1666         * jit/JITOpcodes32_64.cpp:
1667         (JSC::JIT::privateCompileCTINativeCall):
1668         * jit/JITPropertyAccess32_64.cpp:
1669         (JSC::JIT::privateCompilePutByIdTransition):
1670         * jit/JITStubs.cpp:
1671         (JSC::JITThunks::JITThunks):
1672         * jit/JITStubs.h:
1673         * wtf/Platform.h:
1674
1675 2010-09-06  Robert Hogan  <robert@webkit.org>
1676
1677         Unreviewed, compile fix.
1678
1679         Fix compile failure in r66843
1680
1681         Revert to original patch in bugzilla. Leave bug open for
1682         discussion on potential removal of double utf8 conversion.
1683
1684         https://bugs.webkit.org/show_bug.cgi?id=45240
1685
1686         * wtf/text/WTFString.cpp:
1687         (WTF::String::format):
1688
1689 2010-09-06  Robert Hogan  <robert@webkit.org>
1690
1691         Reviewed by Andreas Kling.
1692
1693         [Qt] utf8 encoding of console() messages
1694
1695         Unskip:
1696         http/tests/security/xssAuditor/embed-tag-null-char.html
1697         http/tests/security/xssAuditor/object-embed-tag-null-char.html
1698
1699         Both tests failed because Qt's implementation of String::format()
1700         is casting a utf8 result to String, which assumes latin1 in
1701         its constructor. So instead of casting a QString to a String, use
1702         StringImpl::create() instead. Unfortunately, this involves a lot
1703         of extra casts but the end result is correct.
1704
1705         https://bugs.webkit.org/show_bug.cgi?id=45240
1706
1707         * wtf/text/WTFString.cpp:
1708         (WTF::String::format):
1709
1710 2010-09-03  Alexey Proskuryakov  <ap@apple.com>
1711
1712         Reviewed by Darin Adler.
1713
1714         https://bugs.webkit.org/show_bug.cgi?id=45135
1715         <rdar://problem/7823714> TCMalloc_PageHeap doesn't hold a mutex while manipulating shared data
1716
1717         * wtf/FastMalloc.cpp:
1718         (WTF::TCMalloc_PageHeap::initializeScavenger): Make sure to create a non-recursive mutex
1719         regardless of platform default, so that we can assert that it's held (this is for platforms
1720         that don't have libdispatch).
1721         (WTF::TCMalloc_PageHeap::signalScavenger): Assert that the mutex is held, so we can look
1722         at m_scavengeThreadActive. For platforms that have libdispatch, assert that pageheap_lock
1723         is held.
1724         (WTF::TCMalloc_PageHeap::periodicScavenge): Make sure that pageheap_lock is held before
1725         manipulating m_scavengeThreadActive. Otherwise, there is an obvious race condition, and we
1726         can make unbalanced calls to dispatch_resume().
1727
1728 2010-09-03  Lucas De Marchi  <lucas.demarchi@profusion.mobi>
1729
1730         Reviewed by Martin Robinson.
1731
1732         [EFL] Regression (66531) Build break with Glib Support
1733         https://bugs.webkit.org/show_bug.cgi?id=45011
1734
1735         Move GtkTypedefs.h to GTypedefs.h and let it inside gobject directory
1736         since when glib is enabled, EFL port needs it, too.
1737
1738         * CMakeListsEfl.txt: Include gobject directory to find new header
1739         file.
1740         * GNUmakefile.am: Ditto.
1741         * wtf/CMakeListsEfl.txt: Ditto.
1742         * wtf/Platform.h: Include header if port is EFL and glib support is
1743         enabled.
1744         * wtf/gtk/GtkTypedefs.h: Removed.
1745         * wtf/gobject/GTypedefs.h: Added. Sections specific to GTK are now
1746         guarded by PLATFORM(GTK).
1747
1748 2010-09-03  Csaba Osztrogonác  <ossy@webkit.org>
1749
1750         Reviewed by Simon Hausmann.
1751
1752         Fix warning in wtf/ByteArray.h
1753         https://bugs.webkit.org/show_bug.cgi?id=44672
1754
1755         * wtf/ByteArray.h: Use maximal sized array for MSVC and unsized array for other compilers.
1756
1757 2010-09-02  Adam Barth  <abarth@webkit.org>
1758
1759         Reviewed by Eric Seidel.
1760
1761         Actually parse a URL from ParsedURL
1762         https://bugs.webkit.org/show_bug.cgi?id=45080
1763
1764         This patch only handles standard URLs.  At some point we'll need to
1765         distinguish between standard URLs and other kinds of URLs.
1766
1767         * wtf/url/api/ParsedURL.cpp:
1768         (WTF::ParsedURL::ParsedURL):
1769
1770 2010-09-02  Adam Barth  <abarth@webkit.org>
1771
1772         Reviewed by Eric Seidel.
1773
1774         Add ParsedURL and URLString to WTFURL API
1775         https://bugs.webkit.org/show_bug.cgi?id=45078
1776
1777         Currently there's no actual URL parsing going on, but this patch is a
1778         start to sketching out the API.
1779
1780         * JavaScriptCore.xcodeproj/project.pbxproj:
1781         * wtf/url/api/ParsedURL.cpp: Added.
1782         (WTF::ParsedURL::ParsedURL):
1783         (WTF::ParsedURL::scheme):
1784         (WTF::ParsedURL::username):
1785         (WTF::ParsedURL::password):
1786         (WTF::ParsedURL::host):
1787         (WTF::ParsedURL::port):
1788         (WTF::ParsedURL::path):
1789         (WTF::ParsedURL::query):
1790         (WTF::ParsedURL::fragment):
1791         (WTF::ParsedURL::segment):
1792         * wtf/url/api/ParsedURL.h: Added.
1793         (WTF::ParsedURL::spec):
1794         * wtf/url/api/URLString.h: Added.
1795         (WTF::URLString::URLString):
1796         (WTF::URLString::string):
1797
1798 2010-09-02  Adam Barth  <abarth@webkit.org>
1799
1800         Reviewed by Eric Seidel.
1801
1802         Add WTFURL to the JavaScriptCore build on Mac
1803         https://bugs.webkit.org/show_bug.cgi?id=45075
1804
1805         Building code is good.
1806
1807         * JavaScriptCore.xcodeproj/project.pbxproj:
1808
1809 2010-09-02  Alexey Proskuryakov  <ap@apple.com>
1810
1811         Reviewed by Oliver Hunt.
1812
1813         https://bugs.webkit.org/show_bug.cgi?id=43230
1814         <rdar://problem/8254215> REGRESSION: Memory leak within JSParser::JSParser
1815
1816         One can't delete a ThreadSpecific object that has data in it. It's not even possible to
1817         enumerate data objects in all threads, much less destroy them from a thread that's destroying
1818         the ThreadSpecific.
1819
1820         * parser/JSParser.cpp:
1821         (JSC::JSParser::JSParser):
1822         * runtime/JSGlobalData.h: 
1823         * wtf/WTFThreadData.cpp:
1824         (WTF::WTFThreadData::WTFThreadData):
1825         * wtf/WTFThreadData.h:
1826         (WTF::WTFThreadData::approximatedStackStart):
1827         Moved stack guard tracking from JSGlobalData to WTFThreadData.
1828
1829         * wtf/ThreadSpecific.h: Made destructor unimplemented. It's dangerous, and we probably won't
1830         ever face a situation where we'd want to delete a ThreadSpecific object.
1831
1832 2010-09-01  Gavin Barraclough  <barraclough@apple.com>
1833
1834         Rubber stamped by Oliver Hunt.
1835
1836         Ecma-262 15.11.1.1 states that if the argument is undefined then an
1837         Error object's message property should be set to the empty string.
1838
1839         * runtime/ErrorInstance.cpp:
1840         (JSC::ErrorInstance::ErrorInstance):
1841         (JSC::ErrorInstance::create):
1842         * runtime/ErrorInstance.h:
1843         * runtime/ErrorPrototype.cpp:
1844         (JSC::ErrorPrototype::ErrorPrototype):
1845
1846 2010-08-31  Darin Adler  <darin@apple.com>
1847
1848         Reviewed by Anders Carlsson.
1849
1850         * wtf/FastMalloc.cpp:
1851         (WTF::TCMalloc_PageHeap::scavenge): Replaced somewhat-quirky code that
1852         mixed types with code that uses size_t.
1853
1854         * wtf/TCPageMap.h: Removed names of unused arguments to avoid warning.
1855
1856 2010-08-31  Martin Robinson  <mrobinson@igalia.com>
1857
1858         Reviewed by Gustavo Noronha Silva.
1859
1860         [GTK] Isolate all GTK+ typedefs into one file
1861         https://bugs.webkit.org/show_bug.cgi?id=44900
1862
1863         * GNUmakefile.am: Add GtkTypedefs.h to the source lists.
1864         * wtf/Platform.h: #include GtkTypedefs.h for the GTK+ build.
1865         * wtf/ThreadingPrimitives.h: Remove GTK+ typedefs.
1866         * wtf/gobject/GOwnPtr.h: Ditto.
1867         * wtf/gobject/GRefPtr.h: Ditto.
1868         * wtf/gtk/GtkTypedefs.h: Added.
1869
1870 2010-08-31  Martin Robinson  <mrobinson@igalia.com>
1871
1872         Reviewed by Gustavo Noronha Silva.
1873
1874         [GTK] Fix 'make dist' in preparation of the 1.3.3 release
1875         https://bugs.webkit.org/show_bug.cgi?id=44978
1876
1877         * GNUmakefile.am: Adding missing headers to the sources list.
1878
1879 2010-08-31  Chao-ying Fu  <fu@mips.com>
1880
1881         Reviewed by Oliver Hunt.
1882
1883         Support emit_op_mod() for MIPS
1884         https://bugs.webkit.org/show_bug.cgi?id=42855
1885
1886         This patch uses MIPS div instructions for op_mod to improve performance.
1887
1888         * assembler/MIPSAssembler.h:
1889         (JSC::MIPSAssembler::div):
1890         * jit/JITArithmetic.cpp:
1891         (JSC::JIT::emit_op_mod):
1892         (JSC::JIT::emitSlow_op_mod):
1893
1894 2010-08-31  Csaba Osztrogonác  <ossy@webkit.org>
1895
1896         Reviewed by Darin Adler.
1897
1898         Modify ASSERT_UNUSED and UNUSED_PARAM similar to Qt's Q_UNUSED.
1899         https://bugs.webkit.org/show_bug.cgi?id=44870
1900
1901         * wtf/Assertions.h:
1902         * wtf/UnusedParam.h:
1903
1904 2010-08-31  Benjamin Poulain  <benjamin.poulain@nokia.com>
1905
1906         Reviewed by Kenneth Rohde Christiansen.
1907
1908         JSC TimeoutChecker::didTimeOut overflows on ARM
1909         https://bugs.webkit.org/show_bug.cgi?id=38538
1910
1911         Make getCPUTime() return values relative to the first call.
1912         The previous implementation relied on simply on currentTime(), which
1913         return a time since epoch and not a time since the thread started. This
1914         made the return value of getCPUTime() overflow on 32 bits.
1915
1916         * runtime/TimeoutChecker.cpp:
1917         (JSC::getCPUTime):
1918
1919 2010-08-30  Mihai Parparita  <mihaip@chromium.org>
1920
1921         Reviewed by Adam Barth.
1922
1923         HISTORY_ALWAYS_ASYNC should be removed (history should always be async)
1924         https://bugs.webkit.org/show_bug.cgi?id=44315
1925
1926         Remove ENABLE_HISTORY_ALWAYS_ASYNC #define.
1927
1928         * wtf/Platform.h: 
1929
1930 2010-08-30  Chris Rogers  <crogers@google.com>
1931
1932         Reviewed by Kenneth Russell.
1933
1934         Fix namespace for wtf/Complex.h and wtf/Vector3.h
1935         https://bugs.webkit.org/show_bug.cgi?id=44892
1936
1937         * wtf/Complex.h:
1938         * wtf/Vector3.h:
1939
1940 2010-08-30  Andy Estes  <aestes@apple.com>
1941
1942         Reviewed by Eric Carlson.
1943
1944         Strings returned by asciiDebug() should be NULL-terminated.
1945         https://bugs.webkit.org/show_bug.cgi?id=44866
1946
1947         * wtf/text/WTFString.cpp:
1948         (asciiDebug):
1949
1950 2010-08-30  Zoltan Herczeg  <zherczeg@webkit.org>
1951
1952         Reviewed by Darin Adler.
1953
1954         Refactor number parsing in the lexer
1955         https://bugs.webkit.org/show_bug.cgi?id=44104
1956
1957         Number parsing was full of gotos, and needed a complete
1958         redesign to remove them (Only one remained). Furthermore
1959         integer arithmetic is empolyed for fast cases (= small
1960         integer numbers).
1961
1962         * parser/Lexer.cpp:
1963         (JSC::Lexer::parseHex):
1964         (JSC::Lexer::parseOctal):
1965         (JSC::Lexer::parseDecimal):
1966         (JSC::Lexer::parseNumberAfterDecimalPoint):
1967         (JSC::Lexer::parseNumberAfterExponentIndicator):
1968         (JSC::Lexer::lex):
1969         * parser/Lexer.h:
1970
1971 2010-08-29  Darin Adler  <darin@apple.com>
1972
1973         Fix Qt build.
1974
1975         * wtf/unicode/glib/UnicodeMacrosFromICU.h: Added U_IS_BMP.
1976         * wtf/unicode/qt4/UnicodeQt4.h: Ditto.
1977         * wtf/unicode/wince/UnicodeWince.h: Ditto.
1978
1979 2010-08-29  Kwang Yul Seo  <skyul@company100.net>
1980
1981         Reviewed by Kent Tamura.
1982
1983         [BREWMP] Port vprintf_stderr_common
1984         https://bugs.webkit.org/show_bug.cgi?id=33568
1985
1986         Use BREW's DBGPRINTF to output debug messages.
1987
1988         * wtf/Assertions.cpp:
1989
1990 2010-08-28  Gavin Barraclough  <barraclough@apple.com>
1991
1992         Reviewed by Oliver Hunt.
1993
1994         Bug 44830 - In Array's prototype functyions we're incorrectly handing large index values
1995
1996         We are in places casting doubles to unsigneds, and unsigneds to ints, without always check
1997         that the result is within bounds. This is problematic in the case of double-to-unsigned
1998         conversion because we should be saturating to array length.
1999
2000         Also, the error return value from Array.splice should be [], not undefined.
2001
2002         I don't see any security concerns here. These methods are spec'ed in such a way that they
2003         can be applied to non Array objects, so in all cases the (potentially bogus) indices are
2004         being passed to functions that will safely check accesses are within bounds.
2005
2006         * runtime/ArrayPrototype.cpp:
2007         (JSC::argumentClampedIndexFromStartOrEnd):
2008         (JSC::arrayProtoFuncJoin):
2009         (JSC::arrayProtoFuncConcat):
2010         (JSC::arrayProtoFuncReverse):
2011         (JSC::arrayProtoFuncShift):
2012         (JSC::arrayProtoFuncSlice):
2013         (JSC::arrayProtoFuncSort):
2014         (JSC::arrayProtoFuncSplice):
2015         (JSC::arrayProtoFuncUnShift):
2016         (JSC::arrayProtoFuncFilter):
2017         (JSC::arrayProtoFuncMap):
2018         (JSC::arrayProtoFuncEvery):
2019         (JSC::arrayProtoFuncForEach):
2020         (JSC::arrayProtoFuncSome):
2021         (JSC::arrayProtoFuncReduce):
2022         (JSC::arrayProtoFuncReduceRight):
2023         (JSC::arrayProtoFuncIndexOf):
2024         (JSC::arrayProtoFuncLastIndexOf):
2025         * runtime/JSValue.h:
2026         (JSC::JSValue::toUInt32):
2027
2028 2010-08-28  Pratik Solanki  <psolanki@apple.com>
2029
2030         Reviewed by Dan Bernstein.
2031
2032         Add an ENABLE define for purgeable memory support
2033         https://bugs.webkit.org/show_bug.cgi?id=44777
2034
2035         * wtf/Platform.h:
2036
2037 2010-08-27  Kimmo Kinnunen  <kimmo.t.kinnunen@nokia.com>
2038
2039         Reviewed by Kenneth Rohde Christiansen.
2040
2041         [Qt] NPAPI Plugin metadata should be cached, and loading a plugin should not require loading every plugin
2042         https://bugs.webkit.org/show_bug.cgi?id=43179
2043
2044         Add ENABLE_NETSCAPE_PLUGIN_METADATA_CACHE flag to enable persistent
2045         NPAPI Plugin Cache. The flag is enabled by default.
2046
2047         * wtf/Platform.h: Add ENABLE_NETSCAPE_PLUGIN_METADATA_CACHE
2048
2049 2010-07-27  Jer Noble  <jer.noble@apple.com>
2050
2051         Reviewed by Eric Carlson.
2052
2053         Add JavaScript API to allow a page to go fullscreen.
2054         rdar://problem/6867795
2055         https://bugs.webkit.org/show_bug.cgi?id=43099
2056
2057         * wtf/Platform.h: Enable FULLSCREEN_API mode for the Mac (except iOS).
2058
2059 2010-08-27  Gavin Barraclough  <barraclough@apple.com>
2060
2061         Windows build fix pt 2.
2062
2063         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2064
2065 2010-08-27  Gavin Barraclough  <barraclough@apple.com>
2066
2067         Windows build fix pt 1.
2068
2069         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2070
2071 2010-08-27  Gavin Barraclough  <barraclough@apple.com>
2072
2073         Reviewed by Oliver Hunt.
2074
2075         Bug 44745 - Number.toFixed/toExponential/toPrecision are inaccurate.
2076
2077         These methods should be using a version of dtoa that can generate results accurate
2078         to the requested precision, whereas our version of dtoa is only currently able to
2079         support producing results sufficiently accurate to distinguish the value from any
2080         other IEEE-754 double precision number.
2081
2082         This change has no impact on benchmarks we track.
2083
2084         On microbenchmarks for these functions, this is a slight regression where a high
2085         precision is requested (dtoa now need to iterate further to generate a a greater
2086         number of digits), but with smaller precision values (hopefully more common) this
2087         improves performance, since it reduced the accurate of result dtoa is required,
2088         to produce, and removes the need to pre-round values before calling dtoa. 
2089
2090         * JavaScriptCore.exp:
2091             doubleToStringInJavaScriptFormat renamed to numberToString
2092
2093         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2094             doubleToStringInJavaScriptFormat renamed to numberToString
2095
2096         * runtime/UString.cpp:
2097         (JSC::UString::number):
2098             doubleToStringInJavaScriptFormat renamed to numberToString
2099
2100         * wtf/DecimalNumber.h:
2101         (WTF::DecimalNumber::DecimalNumber):
2102         (WTF::DecimalNumber::toStringDecimal):
2103         (WTF::DecimalNumber::toStringExponential):
2104             Remove all pre-rounding of values, instead call dtoa correctly.
2105
2106         * wtf/dtoa.cpp:
2107         (WTF::dtoa):
2108         * wtf/dtoa.h:
2109             Reenable support for rounding to specific-figures/decimal-places in dtoa.
2110             Modify to remove unbiased rounding, provide ECMA required away-from-zero.
2111             Rewrite doubleToStringInJavaScriptFormat to use DecimalNumber, rename to
2112             numberToString.
2113
2114 2010-08-27  Chao-ying Fu  <fu@mips.com>
2115
2116         Reviewed by Oliver Hunt.
2117
2118         Byte alignment issue on MIPS
2119         https://bugs.webkit.org/show_bug.cgi?id=29415
2120
2121         MIPS accesses one byte at a time for now to avoid the help from the
2122         kernel to fix unaligned accesses.
2123
2124         * wtf/text/AtomicString.cpp:
2125         (WebCore::equal):
2126         * wtf/text/StringHash.h:
2127         (WebCore::StringHash::equal):
2128
2129 2010-08-27  Xan Lopez  <xlopez@igalia.com>
2130
2131         Reviewed by Tor Arne Vestbø.
2132
2133         Fix a couple of typos in comment.
2134
2135         * bytecode/CodeBlock.h:
2136
2137 2010-08-26  Gavin Barraclough  <barraclough@apple.com>
2138
2139         Windows build fix.
2140
2141         * wtf/dtoa.cpp:
2142
2143 2010-08-26  Gavin Barraclough  <baraclough@apple.com>
2144
2145         Reviewed by Sam Weinig.
2146
2147         Bug 44735 - Clean up dtoa.cpp
2148         Remove unused & unmaintained code paths, reformat code to match
2149         coding standard & use platform #defines from Platform.h directly.
2150
2151         * wtf/dtoa.cpp:
2152         (WTF::storeInc):
2153         (WTF::multadd):
2154         (WTF::s2b):
2155         (WTF::lo0bits):
2156         (WTF::mult):
2157         (WTF::pow5mult):
2158         (WTF::lshift):
2159         (WTF::diff):
2160         (WTF::ulp):
2161         (WTF::b2d):
2162         (WTF::d2b):
2163         (WTF::ratio):
2164         (WTF::):
2165         (WTF::strtod):
2166         (WTF::quorem):
2167         (WTF::dtoa):
2168
2169 2010-08-26  Gavin Barraclough  <barraclough@apple.com>
2170
2171         Rubber Stamped by Oliver Hunt.
2172
2173         Partially revert r65959. The toString changes regressed the v8 tests,
2174         but keep the toFixed/toExponential/toPrecision changes.
2175
2176         * JavaScriptCore.exp:
2177         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2178         * runtime/NumberPrototype.cpp:
2179         * runtime/UString.cpp:
2180         (JSC::UString::number):
2181         * wtf/DecimalNumber.h:
2182         * wtf/dtoa.cpp:
2183         (WTF::append):
2184         (WTF::doubleToStringInJavaScriptFormat):
2185         * wtf/dtoa.h:
2186         * wtf/text/WTFString.cpp:
2187         * wtf/text/WTFString.h:
2188
2189 2010-08-26  James Robinson  <jamesr@chromium.org>
2190
2191         Reviewed by Darin Fisher.
2192
2193         [chromium] Remove the USE(GLES2_RENDERING) define and associated code
2194         https://bugs.webkit.org/show_bug.cgi?id=43761
2195
2196         Remove WTF_USE_GLES2_RENDERING from the list of defines in chromium, it's unused.
2197
2198         * wtf/Platform.h:
2199
2200 2010-08-26  Gavin Barraclough  <barraclough@apple.com>
2201
2202         Rolling out r64608, this regressed performance.
2203
2204         * JavaScriptCore.xcodeproj/project.pbxproj:
2205         * assembler/ARMAssembler.cpp:
2206         (JSC::ARMAssembler::executableCopy):
2207         * assembler/LinkBuffer.h:
2208         (JSC::LinkBuffer::LinkBuffer):
2209         (JSC::LinkBuffer::~LinkBuffer):
2210         (JSC::LinkBuffer::performFinalization):
2211         * assembler/MIPSAssembler.h:
2212         (JSC::MIPSAssembler::executableCopy):
2213         * assembler/X86Assembler.h:
2214         (JSC::X86Assembler::executableCopy):
2215         * bytecode/StructureStubInfo.h:
2216         (JSC::StructureStubInfo::initGetByIdProto):
2217         (JSC::StructureStubInfo::initGetByIdChain):
2218         (JSC::StructureStubInfo::initGetByIdSelfList):
2219         (JSC::StructureStubInfo::initGetByIdProtoList):
2220         (JSC::StructureStubInfo::initPutByIdTransition):
2221         * jit/ExecutableAllocator.cpp:
2222         (JSC::ExecutablePool::systemAlloc):
2223         * jit/ExecutableAllocator.h:
2224         (JSC::ExecutablePool::create):
2225         (JSC::ExecutableAllocator::ExecutableAllocator):
2226         (JSC::ExecutableAllocator::poolForSize):
2227         (JSC::ExecutablePool::ExecutablePool):
2228         (JSC::ExecutablePool::poolAllocate):
2229         * jit/ExecutableAllocatorFixedVMPool.cpp:
2230         (JSC::FixedVMPoolAllocator::allocInternal):
2231         * jit/JIT.cpp:
2232         (JSC::JIT::privateCompile):
2233         * jit/JIT.h:
2234         (JSC::JIT::compileGetByIdProto):
2235         (JSC::JIT::compileGetByIdSelfList):
2236         (JSC::JIT::compileGetByIdProtoList):
2237         (JSC::JIT::compileGetByIdChainList):
2238         (JSC::JIT::compileGetByIdChain):
2239         (JSC::JIT::compilePutByIdTransition):
2240         (JSC::JIT::compilePatchGetArrayLength):
2241         * jit/JITOpcodes.cpp:
2242         (JSC::JIT::privateCompileCTIMachineTrampolines):
2243         * jit/JITOpcodes32_64.cpp:
2244         (JSC::JIT::privateCompileCTIMachineTrampolines):
2245         (JSC::JIT::privateCompileCTINativeCall):
2246         * jit/JITPropertyAccess.cpp:
2247         (JSC::JIT::stringGetByValStubGenerator):
2248         (JSC::JIT::privateCompilePutByIdTransition):
2249         (JSC::JIT::privateCompilePatchGetArrayLength):
2250         (JSC::JIT::privateCompileGetByIdProto):
2251         (JSC::JIT::privateCompileGetByIdSelfList):
2252         (JSC::JIT::privateCompileGetByIdProtoList):
2253         (JSC::JIT::privateCompileGetByIdChainList):
2254         (JSC::JIT::privateCompileGetByIdChain):
2255         * jit/JITPropertyAccess32_64.cpp:
2256         (JSC::JIT::stringGetByValStubGenerator):
2257         (JSC::JIT::privateCompilePutByIdTransition):
2258         (JSC::JIT::privateCompilePatchGetArrayLength):
2259         (JSC::JIT::privateCompileGetByIdProto):
2260         (JSC::JIT::privateCompileGetByIdSelfList):
2261         (JSC::JIT::privateCompileGetByIdProtoList):
2262         (JSC::JIT::privateCompileGetByIdChainList):
2263         (JSC::JIT::privateCompileGetByIdChain):
2264         * jit/JITStubs.cpp:
2265         (JSC::JITThunks::tryCachePutByID):
2266         (JSC::JITThunks::tryCacheGetByID):
2267         (JSC::DEFINE_STUB_FUNCTION):
2268         (JSC::getPolymorphicAccessStructureListSlot):
2269         * jit/JITStubs.h:
2270         * jit/SpecializedThunkJIT.h:
2271         (JSC::SpecializedThunkJIT::finalize):
2272         * runtime/ExceptionHelpers.cpp:
2273         * runtime/ExceptionHelpers.h:
2274         * runtime/Executable.cpp:
2275         (JSC::EvalExecutable::compileInternal):
2276         (JSC::ProgramExecutable::compileInternal):
2277         (JSC::FunctionExecutable::compileForCallInternal):
2278         (JSC::FunctionExecutable::compileForConstructInternal):
2279         (JSC::FunctionExecutable::reparseExceptionInfo):
2280         (JSC::EvalExecutable::reparseExceptionInfo):
2281         * yarr/RegexJIT.cpp:
2282         (JSC::Yarr::RegexGenerator::compile):
2283
2284 2010-08-26  Gavin Barraclough  <barraclough@apple.com>
2285
2286         Reviewed by Brady Eidson.
2287
2288         Bug 44655 - Add debug only convenience methods to obtain a Vector<char> from a String/StringImpl.
2289
2290         * wtf/text/WTFString.cpp:
2291         (asciiDebug):
2292             Return a Vector<char> containing the contents of a string as ASCII.
2293
2294 2010-08-26  Sam Weinig  <sam@webkit.org>
2295
2296         Reviewed by Darin Adler.
2297
2298         Add PassOwnArrayPtr
2299         https://bugs.webkit.org/show_bug.cgi?id=44627
2300
2301         * GNUmakefile.am:
2302         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
2303         * JavaScriptCore.xcodeproj/project.pbxproj:
2304         Add the new files.
2305
2306         * wtf/Forward.h:
2307         Forward declare PassOwnArrayPtr.
2308         
2309         * wtf/OwnArrayPtr.h:
2310         Mimic the OwnPtr interface.
2311
2312         * wtf/OwnArrayPtrCommon.h: Added.
2313         (WTF::deleteOwnedArrayPtr):
2314         Move delete function here so it can be shared by OwnArrayPtr and
2315         PassOwnArrayPtr.
2316
2317         * wtf/PassOwnArrayPtr.h: Added.
2318         Mimic the PassOwnPtr interface.
2319
2320 2010-08-26  Oliver Hunt  <oliver@apple.com>
2321
2322         Reviewed by Gavin Barraclough.
2323
2324         [JSC] JavaScript parsing error when loading Equifax web page
2325         https://bugs.webkit.org/show_bug.cgi?id=42900
2326
2327         '-->' is ostensibly only meant to occur when there is only
2328         whitespace preceeding it on the line.  However firefox treats
2329         multiline comments as a space character, so they are allowed.
2330         One side effect of the firefox model is that any line terminators
2331         inside the multiline comment are ignored, so
2332
2333             foo/*
2334             */-->
2335
2336         is treated as
2337
2338             foo -->
2339
2340         and so '-->' will not be a comment in this case.  Happily this simply
2341         means that to fix this issue all we need to do is stop updating
2342         m_atLineStart when handling multiline comments.
2343
2344         * parser/Lexer.cpp:
2345         (JSC::Lexer::lex):
2346
2347 2010-08-25  Oliver Hunt  <oliver@apple.com>
2348
2349         Reviewed by Geoffrey Garen.
2350
2351         Improve overflow handling in StringImpl::Replace
2352         https://bugs.webkit.org/show_bug.cgi?id=42502
2353         <rdar://problem/8203794>
2354
2355         Harden StringImpl::replace against overflow -- I can't see how this
2356         could be abused, but it's better to be safe than sorry.
2357
2358         * wtf/text/StringImpl.cpp:
2359         (WTF::StringImpl::replace):
2360
2361 2010-08-26  Martin Robinson  <mrobinson@igalia.com>
2362
2363         Reviewed by Xan Lopez.
2364
2365         [GTK] The GNUmakefile.am files contain a myriad of confusing preprocessor and compiler flag definitions
2366         https://bugs.webkit.org/show_bug.cgi?id=44624
2367
2368         Clean up GNUmakefile.am.
2369
2370         * GNUmakefile.am: Alphabetize the include order in javascriptcore_cppflags. Move
2371         a couple include lines from the top-level GNUmakefile.am.
2372
2373 2010-08-25  Xan Lopez  <xlopez@igalia.com>
2374
2375         Reviewed by Kent Tamura.
2376
2377         Local variables 'k' and 'y' in s2b() in dtoa.cpp are computed but not used
2378         https://bugs.webkit.org/show_bug.cgi?id=29259
2379
2380         Remove unused code in dtoa.cpp, spotted by Wan-Teh Chang.
2381
2382         * wtf/dtoa.cpp:
2383         (WTF::s2b):
2384
2385 2010-08-25  Kwang Yul Seo  <skyul@company100.net>
2386
2387         Reviewed by Kevin Ollivier.
2388
2389         [BREWMP] Add build system
2390         https://bugs.webkit.org/show_bug.cgi?id=44645
2391
2392         Make waf script portable so that we can add more ports.
2393
2394         * wscript:
2395
2396 2010-08-25  Michael Saboff  <msaboff@apple.com>
2397
2398         Reviewed by Sam Weinig.
2399
2400         Remove the single entry regular expression cache introduced as part of
2401         the fix for https://bugs.webkit.org/show_bug.cgi?id=41238.
2402         The performance problem in Dromaeo that initiated that bug is no 
2403         longer present. Dromaeo has been modified so that the regular
2404         expression tests are somewhat random and don't benefit from a
2405         single entry cache.
2406
2407         * runtime/RegExp.cpp:
2408         (JSC::RegExp::RegExp):
2409         (JSC::RegExp::match):
2410         * runtime/RegExp.h:
2411
2412 2010-08-25  Martin Robinson  <mrobinson@igalia.com>
2413
2414         Reviewed by Gustavo Noronha Silva.
2415
2416         Cairo and EFL port shouldn't depend on glib.
2417         https://bugs.webkit.org/show_bug.cgi?id=44354
2418
2419         Replace GRefPtr with PlatformRefPtr. Keep GLib specific bits in
2420         GRefPtr.h.
2421
2422         * GNUmakefile.am: Add PlatformRefPtr.h to the source list.
2423         * wtf/PlatformRefPtr.h: Migrated from GRefPtr.h.
2424         (WTF::PlatformRefPtr::PlatformRefPtr): Ditto.
2425         (WTF::PlatformRefPtr::~PlatformRefPtr): Ditto.
2426         (WTF::PlatformRefPtr::clear): Ditto.
2427         (WTF::PlatformRefPtr::get): Ditto.
2428         (WTF::PlatformRefPtr::operator*): Ditto.
2429         (WTF::PlatformRefPtr::operator->): Ditto.
2430         (WTF::PlatformRefPtr::operator!): Ditto.
2431         (WTF::PlatformRefPtr::operator UnspecifiedBoolType): Ditto.
2432         (WTF::PlatformRefPtr::hashTableDeletedValue): Ditto.
2433         (WTF::::operator): Ditto.
2434         (WTF::::swap): Ditto.
2435         (WTF::swap): Ditto.
2436         (WTF::operator==): Ditto.
2437         (WTF::operator!=): Ditto.
2438         (WTF::static_pointer_cast): Ditto.
2439         (WTF::const_pointer_cast): Ditto.
2440         (WTF::getPtr): Ditto.
2441         (WTF::adoptPlatformRef): Ditto.
2442         * wtf/gobject/GRefPtr.cpp: Changes to reflect new names.
2443         (WTF::refPlatformPtr):
2444         (WTF::derefPlatformPtr):
2445         * wtf/gobject/GRefPtr.h: Ditto.
2446         (WTF::refPlatformPtr):
2447         (WTF::derefPlatformPtr):
2448
2449 2010-08-25  Xan Lopez  <xlopez@igalia.com>
2450
2451         Reviewed by Alexey Proskuryakov.
2452
2453         Remove dead code in JSGlobalObject
2454         https://bugs.webkit.org/show_bug.cgi?id=44615
2455
2456         The recursion data member in the JSGlobalObject and its getter
2457         plus inc/dec methods seems to be unused, remove them.
2458
2459         * runtime/JSGlobalObject.cpp:
2460         (JSC::JSGlobalObject::init):
2461         * runtime/JSGlobalObject.h:
2462
2463 2010-08-25  Michael Saboff  <msaboff@apple.com>
2464
2465         Reviewed by Geoffrey Garen.
2466
2467         Changed the initial and subsequent allocation of vector storage to
2468         Array()s. The changes are to limit sparse arrays to 100000 entries
2469         and fixed the sparse map to vector storage conversion to use the 
2470         minimum amount of memory needed to store the current number of entries.
2471         These changes address https://bugs.webkit.org/show_bug.cgi?id=43707
2472
2473         * runtime/JSArray.cpp:
2474         (JSC::JSArray::putSlowCase):
2475         (JSC::JSArray::getNewVectorLength):
2476
2477 2010-08-16  Gabor Loki  <loki@webkit.org>
2478
2479         Reviewed by Gavin Barraclough.
2480
2481         Avoid increasing required alignment of target type warning
2482         https://bugs.webkit.org/show_bug.cgi?id=43963
2483
2484         Fix platform independent alignment warnings.
2485
2486         * wtf/ListHashSet.h:
2487         (WTF::ListHashSetNodeAllocator::pool):
2488
2489 2010-08-19  Gabor Loki  <loki@webkit.org>
2490
2491         Reviewed by Gavin Barraclough.
2492
2493         Enable truncated floating point feature on ARM
2494         https://bugs.webkit.org/show_bug.cgi?id=44233
2495
2496         Enable truncated floating point feature with the help of VCVTR.S32.F64
2497         instruction. If VCVTR.S32.F64 can't fit the result into a 32-bit
2498         integer/register, it saturates at INT_MAX or INT_MIN. Testing this
2499         looks quicker than testing FPSCR for exception.
2500
2501         Inspired by Jacob Bramley's patch from JaegerMonkey
2502
2503         * assembler/ARMAssembler.h:
2504         (JSC::ARMAssembler::):
2505         (JSC::ARMAssembler::cmn_r):
2506         (JSC::ARMAssembler::vcvtr_s32_f64_r):
2507         * assembler/MacroAssemblerARM.h:
2508         (JSC::MacroAssemblerARM::supportsFloatingPointTruncate):
2509         (JSC::MacroAssemblerARM::branchTruncateDoubleToInt32):
2510
2511 2010-08-24  Gavin Barraclough  <barraclough@apple.com>
2512
2513         Windows build fix.
2514
2515         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2516
2517 2010-08-24  Gavin Barraclough  <barraclough@apple.com>
2518
2519         Windows build fix.
2520
2521         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2522         * wtf/DecimalNumber.h:
2523         (WTF::DecimalNumber::intPow10):
2524         * wtf/dtoa.cpp:
2525         * wtf/dtoa.h:
2526
2527 2010-08-23  Gavin Barraclough  <barraclough@apple.com>
2528
2529         Reviewed by Oliver Hunt.
2530
2531         https://bugs.webkit.org/show_bug.cgi?id=44487
2532
2533         Number.toExponential/toFixed/toPrecision all contain a spaghetti of duplicated
2534         code & unnecessary complexity. Add a new DecimalNumber class to encapsulate
2535         double to string conversion, share the implementations of rounding &
2536         decimal-fraction/exponential formatting.
2537
2538         * JavaScriptCore.exp:
2539             Update exports.
2540
2541         * runtime/NumberPrototype.cpp:
2542         (JSC::toThisNumber):
2543         (JSC::getIntegerArgumentInRange):
2544             Helper methods used in implementing toExponential/toFixed/toString.
2545         (JSC::numberProtoFuncToExponential):
2546         (JSC::numberProtoFuncToFixed):
2547         (JSC::numberProtoFuncToPrecision):
2548             Reimplemented using new DecimalNumber class.
2549             
2550         * runtime/UString.cpp:
2551         (JSC::UString::number):
2552             Updated to call numberToString.
2553
2554         * wtf/DecimalNumber.h: Added.
2555         (WTF::):
2556         (WTF::DecimalNumber::DecimalNumber):
2557         (WTF::DecimalNumber::toStringDecimal):
2558         (WTF::DecimalNumber::toStringExponential):
2559         (WTF::DecimalNumber::sign):
2560         (WTF::DecimalNumber::exponent):
2561         (WTF::DecimalNumber::significand):
2562         (WTF::DecimalNumber::precision):
2563         (WTF::DecimalNumber::init):
2564         (WTF::DecimalNumber::isZero):
2565         (WTF::DecimalNumber::roundToPrecision):
2566             New class to perform double to string conversion.
2567             Has three constructors, which allow conversion with no rounding,
2568             rounding to significant-figures, or rounding to decimal-places,
2569             and two methods for formatting strings, either using decimal
2570             fraction or exponential encoding. Internal implementation uses
2571             pre-rounding of the values before calling dtoa rather than
2572             relying on dtoa to correctly round, which does not produce
2573             fully accurate results. Hopefully we can address this in the
2574             near future.
2575
2576         * wtf/dtoa.cpp:
2577         (WTF::intPow10):
2578         * wtf/dtoa.h:
2579             intPow10 is used internally by DecimalNumber.
2580             
2581         * wtf/text/WTFString.cpp:
2582         (WTF::copyToString):
2583         (WTF::nanOrInfToString):
2584             Used internally in numberToString for NaN/Infinity handling.
2585         (WTF::numberToString):
2586             Added new method to convert doubles to strings.
2587
2588         * wtf/text/WTFString.h:
2589             Added declaration for numberToString. This is here because
2590             we should switch over to using this for all double to string
2591             conversion in WebCore (see section 2.4.4.3 of the HTML5 spec).
2592
2593 2010-08-24  Oliver Hunt  <oliver@apple.com>
2594
2595         Reviewed by Geoff Garen.
2596
2597         Don't seed the JS random number generator from time()
2598         https://bugs.webkit.org/show_bug.cgi?id=41868
2599         <rdar://problem/8171025>
2600
2601         Switch to using the secure random number generator to
2602         seed the fast random generator, and make the generator
2603         be per global object.
2604
2605         * runtime/JSGlobalData.cpp:
2606         (JSC::JSGlobalData::JSGlobalData):
2607         * runtime/JSGlobalData.h:
2608         * runtime/JSGlobalObject.h:
2609         (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData):
2610         (JSC::JSGlobalObject::weakRandomNumber):
2611         * runtime/MathObject.cpp:
2612         (JSC::mathProtoFuncRandom):
2613
2614 2010-08-24  Oliver Hunt  <oliver@apple.com>
2615
2616         Reviewed by Beth Dakin.
2617
2618         Make overflow guards in UString::utf8 explicit
2619         https://bugs.webkit.org/show_bug.cgi?id=44540
2620
2621         Add an explicit overflow check prior to allocating our buffer,
2622         rather than implicitly relying on the guard in convertUTF16ToUTF8.
2623
2624         * runtime/UString.cpp:
2625         (JSC::UString::utf8):
2626
2627 2010-08-24  Yael Aharon  <yael.aharon@nokia.com>
2628
2629         Reviewed by Simon Hausmann.
2630
2631         [Symbian] Fix commit/decommit of system memory using RChunk
2632
2633         Swap accidentially reversed start and m_base values for determining the
2634         offset within the RChunk.
2635
2636         * wtf/PageReservation.h:
2637         (WTF::PageReservation::systemCommit):
2638         (WTF::PageReservation::systemDecommit):
2639
2640 2010-08-23  Patrick Gansterer  <paroga@paroga.com>
2641
2642         Rubber-stamped by Gabor Loki.
2643
2644         [WINCE] Buildfix for GeneratedJITStubs after r64818
2645         https://bugs.webkit.org/show_bug.cgi?id=44469
2646
2647         Use " THUNK_RETURN_ADDRESS_OFFSET" instead of "#offset#".
2648
2649         * jit/JITStubs.cpp:
2650
2651 2010-08-23  Oliver Hunt  <oliver@apple.com>
2652
2653         Reviewed by Darin Adler.
2654
2655         [REGRESSION] Interpreter incorrectly excludes prototype chain when validating put_by_id_transition
2656         https://bugs.webkit.org/show_bug.cgi?id=44240
2657         <rdar://problem/8328995>
2658
2659         Fix an error I introduced when cleaning up the interpreter side of the logic
2660         to prevent setters being called in object initialisers.
2661
2662         * interpreter/Interpreter.cpp:
2663         (JSC::Interpreter::privateExecute):
2664
2665 2010-08-23  Michael Saboff  <msaboff@apple.com>
2666
2667         Reviewed by Oliver Hunt.
2668
2669         Fixed case where a single character search string in a string.replace()
2670         did not properly handle back reference replacement.  The fix is to 
2671         check for a '$' as part of the check to see if we can execute the
2672         single character replace optimization.
2673         https://bugs.webkit.org/show_bug.cgi?id=44067
2674
2675         * runtime/StringPrototype.cpp:
2676         (JSC::stringProtoFuncReplace):
2677
2678 2010-08-23  Oliver Hunt  <oliver@apple.com>
2679
2680         Reviewed by Gavin Barraclough.
2681
2682         JSON.stringify is much slower than Firefox on particular pathological input
2683         https://bugs.webkit.org/show_bug.cgi?id=44456
2684
2685         Make StringBuilder::reserveCapacity reserve additional space so we don't end up
2686         repeatedly copying the entire result string.
2687
2688         * runtime/StringBuilder.h:
2689         (JSC::StringBuilder::append):
2690         (JSC::StringBuilder::reserveCapacity):
2691
2692 2010-08-23  Jian Li  <jianli@chromium.org>
2693
2694         Reviewed by Darin Fisher.
2695
2696         Handle blob resource.
2697         https://bugs.webkit.org/show_bug.cgi?id=43941
2698
2699         * JavaScriptCore.exp: Add an export that is neede by BlobResourceHandle.
2700
2701 2010-08-19  Andreas Kling  <andreas.kling@nokia.com>
2702
2703         Reviewed by Geoffrey Garen.
2704
2705         JSC: Move the static_cast into to(U)Int32 fast case
2706         https://bugs.webkit.org/show_bug.cgi?id=44037
2707
2708         Do the static_cast<(u)int32_t> inline to avoid the function call overhead
2709         for easily converted values (within (u)int32_t range.)
2710
2711         * runtime/JSValue.cpp:
2712         (JSC::toInt32SlowCase):
2713         (JSC::toUInt32SlowCase):
2714         * runtime/JSValue.h:
2715         (JSC::JSValue::toInt32):
2716         (JSC::JSValue::toUInt32):
2717
2718 2010-08-18  Andreas Kling  <andreas.kling@nokia.com>
2719
2720         Reviewed by Geoffrey Garen.
2721
2722         REGRESSION(r58469): Math.pow() always returns double-backed JSValue which is extremely slow as array subscript
2723         https://bugs.webkit.org/show_bug.cgi?id=43742
2724
2725         Add codegen for pow() to return Int32 values when possible.
2726
2727         * jit/ThunkGenerators.cpp:
2728         (JSC::powThunkGenerator):
2729
2730 2010-08-18  Gabor Loki  <loki@webkit.org>
2731
2732         Reviewed by Gavin Barraclough.
2733
2734         The JITStackFrame is wrong using Thumb-2 JIT with JSVALUE32_64
2735         https://bugs.webkit.org/show_bug.cgi?id=43897
2736
2737         A 64 bits wide member in a structure is aligned to 8 bytes on ARM by
2738         default, but this is not taken into account in the offset defines of
2739         JITStackFrame.
2740
2741         * jit/JITStubs.cpp:
2742         * jit/JITStubs.h:
2743
2744 2010-08-18  Gavin Barraclough  <barraclough@apple.com>
2745
2746         Rubber stamped by Sam Weinig.
2747
2748         Rename UString::substr to substringSharingImpl, add to WTF::String.
2749         Now WTF::String can do everything that JSC::UString can do!
2750
2751         * JavaScriptCore.exp:
2752         * bytecode/CodeBlock.cpp:
2753         (JSC::escapeQuotes):
2754         * bytecompiler/NodesCodegen.cpp:
2755         (JSC::substitute):
2756         * parser/SourceProvider.h:
2757         (JSC::UStringSourceProvider::getRange):
2758         * runtime/FunctionPrototype.cpp:
2759         (JSC::insertSemicolonIfNeeded):
2760         * runtime/JSGlobalObjectFunctions.cpp:
2761         (JSC::parseInt):
2762         * runtime/JSONObject.cpp:
2763         (JSC::gap):
2764         (JSC::Stringifier::indent):
2765         (JSC::Stringifier::unindent):
2766         * runtime/JSString.cpp:
2767         (JSC::JSString::replaceCharacter):
2768         * runtime/NumberPrototype.cpp:
2769         (JSC::numberProtoFuncToFixed):
2770         (JSC::numberProtoFuncToPrecision):
2771         * runtime/StringPrototype.cpp:
2772         (JSC::stringProtoFuncReplace):
2773         (JSC::trimString):
2774         * runtime/UString.cpp:
2775         (JSC::UString::substringSharingImpl):
2776         * runtime/UString.h:
2777         * wtf/text/WTFString.cpp:
2778         (WTF::String::substringSharingImpl):
2779         * wtf/text/WTFString.h:
2780
2781 2010-08-18  Gavin Barraclough  <barraclough@apple.com>
2782
2783         Windows build fix.
2784
2785         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2786         * JavaScriptCore.xcodeproj/project.pbxproj:
2787
2788 2010-08-18  Gavin Barraclough  <barraclough@apple.com>
2789
2790         Windows build fix.
2791
2792         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2793         * JavaScriptCore.xcodeproj/project.pbxproj:
2794
2795 2010-08-17  Gavin Barraclough  <barraclough@apple.com>
2796
2797         Reviewed by Sam Weinig.
2798
2799         Bug 44146 - Remove toDouble/toUInt32 methods from UString.
2800
2801         These methods all implement JavaScript language specific behaviour, and as such
2802         are not suited to being on a generic string object.  They are also inefficient
2803         and incorrectly used, refactor & cleanup.  Uses of these methods really divide
2804         out into two cases.
2805
2806         ToNumber:
2807         Uses of toDouble from JSString and from parseFloat are implementing ecma's
2808         ToNumber conversion from strings (see ecma-262 9.3.1), so UString::toDouble
2809         should largely just be moved out to a global jsToNumber function.  ToNumber is
2810         capable of recognizing either decimal or hexadecimal numbers, but parseFloat
2811         should only recognize decimal values.  This is currently handled by testing for
2812         hexadecimal before calling toDouble, which should unnecessary - instead we can
2813         just split out the two parts to the grammar into separate functions. Also,
2814         strtod recognizes a set of literals (nan, inf, and infinity - all with any
2815         capitalization) - which are not defined by any of the specs we are implementing.
2816         To handle this we need to perform additional work in toDouble to convert the
2817         unsupported cases of infinities back to NaNs.  Instead we should simply remove
2818         support for this literals from strtod.  This should provide a more desirable
2819         behaviour for all clients of strtod.
2820
2821         Indexed properties:
2822         Uses of the toStrictUInt32 methods are were all converting property names to
2823         indices, and all uses of toUInt32 were incorrect; in all cases we should have
2824         been calling toUInt32.  This error results in some incorrect behaviour in the
2825         DOM (accessing property "0 " of a NodeList should fail; it currently does not).
2826         Move this method onto Identifier (our canonical property name), and make it
2827         always perform a strict conversion. Add a layout test to check NodeList does
2828         convert indexed property names correctly.
2829
2830         * JavaScriptCore.exp:
2831         * runtime/Arguments.cpp:
2832         (JSC::Arguments::getOwnPropertySlot):
2833         (JSC::Arguments::getOwnPropertyDescriptor):
2834         (JSC::Arguments::put):
2835         (JSC::Arguments::deleteProperty):
2836         * runtime/Identifier.cpp:
2837         (JSC::Identifier::toUInt32):
2838         * runtime/Identifier.h:
2839         (JSC::Identifier::toUInt32):
2840         * runtime/JSArray.cpp:
2841         (JSC::JSArray::getOwnPropertySlot):
2842         (JSC::JSArray::getOwnPropertyDescriptor):
2843         (JSC::JSArray::put):
2844         (JSC::JSArray::deleteProperty):
2845         * runtime/JSArray.h:
2846         (JSC::Identifier::toArrayIndex):
2847         * runtime/JSByteArray.cpp:
2848         (JSC::JSByteArray::getOwnPropertySlot):
2849         (JSC::JSByteArray::getOwnPropertyDescriptor):
2850         (JSC::JSByteArray::put):
2851         * runtime/JSGlobalObjectFunctions.cpp:
2852         (JSC::isInfinity):
2853         (JSC::jsHexIntegerLiteral):
2854         (JSC::jsStrDecimalLiteral):
2855         (JSC::jsToNumber):
2856         (JSC::parseFloat):
2857         * runtime/JSGlobalObjectFunctions.h:
2858         * runtime/JSString.cpp:
2859         (JSC::JSString::getPrimitiveNumber):
2860         (JSC::JSString::toNumber):
2861         (JSC::JSString::getStringPropertyDescriptor):
2862         * runtime/JSString.h:
2863         (JSC::JSString::getStringPropertySlot):
2864         * runtime/ObjectPrototype.cpp:
2865         (JSC::ObjectPrototype::put):
2866         * runtime/StringObject.cpp:
2867         (JSC::StringObject::deleteProperty):
2868         * runtime/UString.cpp:
2869         * runtime/UString.h:
2870         * wtf/dtoa.cpp:
2871         (WTF::strtod):
2872
2873 2010-08-17  Gavin Barraclough  <barraclough@apple.com>
2874
2875         Reviewed by Sam Weinig.
2876
2877         Bug 44099 - REGRESSION(r65468): Crashes in StringImpl::find
2878
2879         Bug 44080 introuduced a couple of cases in which array bounds could be overrun.
2880         One of these was fixed in r65493, this patch fixes the other and address the
2881         concerns voiced in comment #6 by restructuring the loops to remove the code
2882         dupliction without introducing an additional if check.
2883
2884         * wtf/text/StringImpl.cpp:
2885         (WTF::StringImpl::find):
2886         (WTF::StringImpl::findIgnoringCase):
2887         (WTF::StringImpl::reverseFind):
2888         (WTF::StringImpl::reverseFindIgnoringCase):
2889
2890 2010-08-17  No'am Rosenthal  <noam.rosenthal@nokia.com>
2891
2892         Reviewed by Ariya Hidayat.
2893
2894         [Qt] Move the accelerated compositing build flag to the right place
2895         https://bugs.webkit.org/show_bug.cgi?id=43882
2896
2897         * wtf/Platform.h:
2898
2899 2010-08-17  Yuta Kitamura  <yutak@chromium.org>
2900
2901         Reviewed by Shinichiro Hamaji.
2902
2903         Avoid uninitialized memory read in StringImpl::find().
2904
2905         REGRESSION(r65468): Crashes in StringImpl::find
2906         https://bugs.webkit.org/show_bug.cgi?id=44099
2907
2908         * wtf/text/StringImpl.cpp:
2909         (WTF::StringImpl::find):
2910
2911 2010-08-16  Gavin Barraclough  <barraclough@apple.com>
2912
2913         Rubber stamped by Sam Weinig
2914
2915         Add VectorTraits to String & DefaultHash traits to UString to unify behaviour.
2916
2917         * runtime/UString.h:
2918         (JSC::UStringHash::hash):
2919         (JSC::UStringHash::equal):
2920         (WTF::):
2921         * wtf/text/WTFString.h:
2922         (WTF::):
2923
2924 2010-08-16  Gavin Barraclough  <barraclough@apple.com>
2925
2926         Rubber stamped by Sam Weinig
2927
2928         Remove unnecessary includes from UString.h, add new includes as necessary.
2929
2930         * profiler/CallIdentifier.h:
2931         * profiler/ProfileNode.h:
2932         * runtime/DateConversion.cpp:
2933         * runtime/Identifier.h:
2934         (JSC::IdentifierRepHash::hash):
2935         * runtime/RegExpCache.h:
2936         * runtime/RegExpKey.h:
2937         * runtime/UString.cpp:
2938         (JSC::UString::substr):
2939         * runtime/UString.h:
2940         * wtf/text/WTFString.h:
2941
2942 2010-08-16  Gavin Barraclough  <barraclough@apple.com>
2943
2944         Reviewed by Sam Weinig
2945
2946         Bug 44080 - String find/reverseFind methods need tidying up
2947         These methods have a couple of problems with their interface, and implementation.
2948
2949         These methods take and int index, and return an int - however this is problematic
2950         since on 64-bit string indices may have a full 32-bit range.  This spills out into
2951         surrounding code, which unsafely casts string indices from unsigned to int. Code
2952         checking the result of these methods check for a mix of "== -1", "< 0", and
2953         "== notFound".  Clean this up by changing these methods to take an unsigned
2954         starting index, and return a size_t. with a failed match indicated by notFound.
2955         reverseFind also has a special meaning for the starting index argument, in that a
2956         negative index is interpreted as an offset back from the end of the string. Remove
2957         this functionality, in the (1!) case where it is used we should just calculate the
2958         offset by subtracting from the string's length.
2959
2960         The implementation has a few problems too.  The code is not in webkit style, in
2961         using assorted abbreviations in variable names, and implementations of similar
2962         find methods with differing argument types were unnecessarily inconsistent. When
2963         find is passed const char* data the string would be handled as latin1 (zero
2964         extended to UTF-16) for all characters but the first; this is sign extended.
2965         Case-insensitive find is broken for unicode strings; the hashing optimization is
2966         not unicode safe, and could result in false negatives.
2967
2968         Unify UString find methods to match String.
2969
2970         * JavaScriptCore.exp:
2971         * bytecode/CodeBlock.cpp:
2972         (JSC::escapeQuotes):
2973         * bytecompiler/NodesCodegen.cpp:
2974         (JSC::substitute):
2975         * runtime/JSString.cpp:
2976         (JSC::JSString::replaceCharacter):
2977         * runtime/RegExp.cpp:
2978         (JSC::RegExp::RegExp):
2979         * runtime/RegExpKey.h:
2980         (JSC::RegExpKey::getFlagsValue):
2981         * runtime/StringPrototype.cpp:
2982         (JSC::substituteBackreferencesSlow):
2983         (JSC::substituteBackreferences):
2984         (JSC::stringProtoFuncReplace):
2985         (JSC::stringProtoFuncIndexOf):
2986         (JSC::stringProtoFuncLastIndexOf):
2987         (JSC::stringProtoFuncSplit):
2988         * runtime/UString.cpp:
2989         * runtime/UString.h:
2990         (JSC::UString::find):
2991         (JSC::UString::reverseFind):
2992         * wtf/text/AtomicString.h:
2993         (WTF::AtomicString::find):
2994         * wtf/text/StringImpl.cpp:
2995         (WTF::StringImpl::find):
2996         (WTF::StringImpl::findCaseInsensitive):
2997         (WTF::StringImpl::reverseFind):
2998         (WTF::StringImpl::reverseFindCaseInsensitive):
2999         (WTF::StringImpl::endsWith):
3000         (WTF::StringImpl::replace):
3001         * wtf/text/StringImpl.h:
3002         (WTF::StringImpl::startsWith):
3003         * wtf/text/WTFString.cpp:
3004         (WTF::String::split):
3005         * wtf/text/WTFString.h:
3006         (WTF::String::find):
3007         (WTF::String::reverseFind):
3008         (WTF::String::findCaseInsensitive):
3009         (WTF::String::reverseFindCaseInsensitive):
3010         (WTF::String::contains):
3011         (WTF::find):
3012         (WTF::reverseFind):
3013
3014 2010-08-16  Kevin Ollivier  <kevino@theolliviers.com>
3015
3016         [wx] Build fix, do not build WebCore as a convenience library as this leads to
3017         errors in the Win build w/export symbols and causes problems with DOM bindings
3018         debugging in gdb. 
3019
3020         * wscript:
3021
3022 2010-08-16  Leandro Pereira  <leandro@profusion.mobi>
3023
3024         [EFL] Build fix after r65366.
3025
3026         * CMakeLists.txt: Use if (VAR) instead of if (${VAR}) to check if
3027         they're empty.
3028         * jsc/CMakeLists.txt: Ditto.
3029         * wtf/CMakeLists.txt: Ditto.
3030
3031 2010-08-15  Kevin Ollivier  <kevino@theolliviers.com>
3032
3033         [wx] Build fix, don't build intermediate source in DerivedSources dir.
3034
3035         * wscript:
3036
3037 2010-08-14  Patrick Gansterer  <paroga@paroga.com>
3038
3039         Reviewed by Kenneth Rohde Christiansen.
3040
3041         [CMake] Add preprocessor detection for generator scripts
3042         https://bugs.webkit.org/show_bug.cgi?id=43984
3043
3044         * CMakeLists.txt:
3045
3046 2010-08-14  Patrick Gansterer  <paroga@paroga.com>
3047
3048         Reviewed by Kenneth Rohde Christiansen.
3049
3050         [CMake] Set target properties only if available
3051         https://bugs.webkit.org/show_bug.cgi?id=43978
3052
3053         * CMakeLists.txt:
3054         * jsc/CMakeLists.txt:
3055         * wtf/CMakeLists.txt:
3056
3057 2010-08-13  Kevin Ollivier  <kevino@theolliviers.com>
3058
3059         [wx] Build fix, add CString to the list of forwards.
3060
3061         * wtf/Forward.h:
3062
3063 2010-08-13  Gavin Barraclough  <barraclough@apple.com>
3064
3065         Windows build fix
3066
3067         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3068
3069 2010-08-13  Gavin Barraclough  <barraclough@apple.com>
3070
3071         Windows build fix
3072
3073         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3074
3075 2010-08-13  Gavin Barraclough  <barraclough@apple.com>
3076
3077         Windows build fix
3078
3079         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3080
3081 2010-08-13  Gavin Barraclough  <barraclough@apple.com>
3082
3083         Rubber stamped by Sam Weinig.
3084         Switch String::/UString::ascii() to return a CString.
3085
3086         * JavaScriptCore.exp:
3087         * JavaScriptCore.xcodeproj/project.pbxproj:
3088         * bytecode/CodeBlock.cpp:
3089         (JSC::CodeBlock::dump):
3090         * bytecode/SamplingTool.cpp:
3091         (JSC::SamplingTool::dump):
3092         * interpreter/CallFrame.cpp:
3093         (JSC::CallFrame::dumpCaller):
3094         * jsc.cpp:
3095         (runWithScripts):
3096         (runInteractive):
3097         * runtime/Identifier.h:
3098         (JSC::Identifier::ascii):
3099         * runtime/ScopeChain.cpp:
3100         (JSC::ScopeChainNode::print):
3101         * runtime/UString.cpp:
3102         (JSC::UString::ascii):
3103         (JSC::UString::latin1):
3104         * runtime/UString.h:
3105         * wtf/text/StringImpl.cpp:
3106         (WTF::StringImpl::asciiOLD):
3107         * wtf/text/StringImpl.h:
3108         * wtf/text/WTFString.cpp:
3109         (WTF::String::ascii):
3110         (WTF::String::latin1):
3111         * wtf/text/WTFString.h:
3112
3113 2010-08-13  Gabor Loki  <loki@webkit.org>
3114
3115         Reviewed by Gavin Barraclough.
3116
3117         Avoid increasing required alignment of target type warning on ARM
3118         https://bugs.webkit.org/show_bug.cgi?id=38045
3119
3120         The reinterpret_cast<Type1*>([pointer to Type2]) expressions - where
3121         sizeof(Type1) > sizeof(Type2) - cause the following warning on ARM:
3122         increases required alignment of target type warnings.
3123         Casting the type of [pointer to Type2] object to void* bypasses the
3124         warning.
3125
3126         * assembler/ARMAssembler.cpp:
3127         (JSC::ARMAssembler::executableCopy):
3128         * assembler/AssemblerBuffer.h:
3129         (JSC::AssemblerBuffer::putShortUnchecked):
3130         (JSC::AssemblerBuffer::putIntUnchecked):
3131         (JSC::AssemblerBuffer::putInt64Unchecked):
3132         * interpreter/RegisterFile.h:
3133         (JSC::RegisterFile::RegisterFile):
3134         (JSC::RegisterFile::grow):
3135         * jit/JITStubs.cpp:
3136         * pcre/pcre_compile.cpp:
3137         (jsRegExpCompile):
3138         * runtime/JSArray.cpp:
3139         (JSC::JSArray::putSlowCase):
3140         (JSC::JSArray::increaseVectorLength):
3141         (JSC::JSArray::increaseVectorPrefixLength):
3142         (JSC::JSArray::shiftCount):
3143         (JSC::JSArray::unshiftCount):
3144         * wtf/FastMalloc.cpp:
3145         (WTF::PageHeapAllocator::New):
3146         (WTF::TCMalloc_Central_FreeList::Populate):
3147         * wtf/MD5.cpp:
3148         (WTF::reverseBytes):
3149         (WTF::MD5::addBytes):
3150         (WTF::MD5::checksum):
3151         * wtf/StdLibExtras.h:
3152         (isPointerTypeAlignmentOkay):
3153         (reinterpret_cast_ptr):
3154         * wtf/Vector.h:
3155         (WTF::VectorBuffer::inlineBuffer):
3156         * wtf/qt/StringQt.cpp:
3157         (WTF::String::String):
3158
3159 2010-08-13  Gavin Barraclough  <barraclough@apple.com>
3160
3161         Reviewed by Sam Weinig
3162
3163         Unify UString::UTF8String() & String::utf8() methods,
3164         remove UString::cost() & make atArrayIndex a free function.
3165
3166         * JavaScriptCore.exp:
3167         * bytecode/CodeBlock.cpp:
3168         (JSC::constantName):
3169         (JSC::idName):
3170         (JSC::CodeBlock::registerName):
3171         (JSC::regexpName):
3172         (JSC::printGlobalResolveInfo):
3173         (JSC::printStructureStubInfo):
3174         (JSC::CodeBlock::printStructure):
3175         (JSC::CodeBlock::printStructures):
3176         * jsc.cpp:
3177         (functionPrint):
3178         (functionDebug):
3179         (runInteractive):
3180         (fillBufferWithContentsOfFile):
3181         * pcre/pcre_exec.cpp:
3182         (Histogram::~Histogram):
3183         * profiler/CallIdentifier.h:
3184         (JSC::CallIdentifier::c_str):
3185         * profiler/Profile.cpp:
3186         (JSC::Profile::debugPrintDataSampleStyle):
3187         * profiler/ProfileGenerator.cpp:
3188         (JSC::ProfileGenerator::willExecute):
3189         (JSC::ProfileGenerator::didExecute):
3190         * profiler/ProfileNode.cpp:
3191         (JSC::ProfileNode::debugPrintData):
3192         (JSC::ProfileNode::debugPrintDataSampleStyle):
3193         * runtime/Arguments.cpp:
3194         (JSC::Arguments::getOwnPropertySlot):
3195         (JSC::Arguments::getOwnPropertyDescriptor):
3196         (JSC::Arguments::put):
3197         (JSC::Arguments::deleteProperty):
3198         * runtime/DateConversion.cpp:
3199         (JSC::parseDate):
3200         * runtime/Identifier.h:
3201         (JSC::Identifier::toStrictUInt32):
3202         * runtime/JSArray.cpp:
3203         (JSC::JSArray::getOwnPropertySlot):
3204         (JSC::JSArray::getOwnPropertyDescriptor):
3205         (JSC::JSArray::put):
3206         (JSC::JSArray::deleteProperty):
3207         * runtime/JSArray.h:
3208         (JSC::toArrayIndex):
3209         * runtime/JSGlobalObjectFunctions.cpp:
3210         (JSC::encode):
3211         (JSC::parseInt):
3212         (JSC::globalFuncJSCPrint):
3213         * runtime/JSString.h:
3214         (JSC::RopeBuilder::JSString):
3215         * runtime/UString.cpp:
3216         (JSC::UString::toDouble):
3217         (JSC::putUTF8Triple):
3218         (JSC::UString::utf8):
3219         * runtime/UString.h:
3220         (JSC::UString::~UString):
3221         (JSC::UString::isNull):
3222         (JSC::UString::isEmpty):
3223         (JSC::UString::impl):
3224         * wtf/text/WTFString.cpp:
3225         (WTF::String::utf8):
3226         * wtf/text/WTFString.h:
3227         (WTF::String::~String):
3228         (WTF::String::swap):
3229         (WTF::String::isNull):
3230         (WTF::String::isEmpty):
3231         (WTF::String::impl):
3232         (WTF::String::length):
3233         (WTF::String::String):
3234         (WTF::String::isHashTableDeletedValue):
3235
3236 2010-08-12  Zoltan Herczeg  <zherczeg@webkit.org>
3237
3238         Reviewed by Gavin Barraclough.
3239
3240         Refactoring the fpu code generator for the ARM port
3241         https://bugs.webkit.org/show_bug.cgi?id=43842
3242
3243         Support up to 32 double precision registers, and the
3244         recent VFP instruction formats. This patch is mainly
3245         a style change which keeps the current functionality.
3246
3247         * assembler/ARMAssembler.h:
3248         (JSC::ARMRegisters::):
3249         (JSC::ARMAssembler::):
3250         (JSC::ARMAssembler::emitInst):
3251         (JSC::ARMAssembler::emitDoublePrecisionInst):
3252         (JSC::ARMAssembler::emitSinglePrecisionInst):
3253         (JSC::ARMAssembler::vadd_f64_r):
3254         (JSC::ARMAssembler::vdiv_f64_r):
3255         (JSC::ARMAssembler::vsub_f64_r):
3256         (JSC::ARMAssembler::vmul_f64_r):
3257         (JSC::ARMAssembler::vcmp_f64_r):
3258         (JSC::ARMAssembler::vsqrt_f64_r):
3259         (JSC::ARMAssembler::vmov_vfp_r):
3260         (JSC::ARMAssembler::vmov_arm_r):
3261         (JSC::ARMAssembler::vcvt_f64_s32_r):
3262         (JSC::ARMAssembler::vcvt_s32_f64_r):
3263         (JSC::ARMAssembler::vmrs_apsr):
3264         * assembler/MacroAssemblerARM.h:
3265         (JSC::MacroAssemblerARM::addDouble):
3266         (JSC::MacroAssemblerARM::divDouble):
3267         (JSC::MacroAssemblerARM::subDouble):
3268         (JSC::MacroAssemblerARM::mulDouble):
3269         (JSC::MacroAssemblerARM::sqrtDouble):
3270         (JSC::MacroAssemblerARM::convertInt32ToDouble):
3271         (JSC::MacroAssemblerARM::branchDouble):
3272         (JSC::MacroAssemblerARM::branchConvertDoubleToInt32):
3273
3274 2010-08-12  Sheriff Bot  <webkit.review.bot@gmail.com>
3275
3276         Unreviewed, rolling out r65295.
3277         http://trac.webkit.org/changeset/65295
3278         https://bugs.webkit.org/show_bug.cgi?id=43950
3279
3280         It broke 4 sputnik tests (Requested by Ossy on #webkit).
3281
3282         * JavaScriptCore.exp:
3283         * bytecode/CodeBlock.cpp:
3284         (JSC::constantName):
3285         (JSC::idName):
3286         (JSC::CodeBlock::registerName):
3287         (JSC::regexpName):
3288         (JSC::printGlobalResolveInfo):
3289         (JSC::printStructureStubInfo):
3290         (JSC::CodeBlock::printStructure):
3291         (JSC::CodeBlock::printStructures):
3292         * jsc.cpp:
3293         (functionPrint):
3294         (functionDebug):
3295         (runInteractive):
3296         (fillBufferWithContentsOfFile):
3297         * pcre/pcre_exec.cpp:
3298         (Histogram::~Histogram):
3299         * profiler/CallIdentifier.h:
3300         (JSC::CallIdentifier::c_str):
3301         * profiler/Profile.cpp:
3302         (JSC::Profile::debugPrintDataSampleStyle):
3303         * profiler/ProfileGenerator.cpp:
3304         (JSC::ProfileGenerator::willExecute):
3305         (JSC::ProfileGenerator::didExecute):
3306         * profiler/ProfileNode.cpp:
3307         (JSC::ProfileNode::debugPrintData):
3308         (JSC::ProfileNode::debugPrintDataSampleStyle):
3309         * runtime/Arguments.cpp:
3310         (JSC::Arguments::getOwnPropertySlot):
3311         (JSC::Arguments::getOwnPropertyDescriptor):
3312         (JSC::Arguments::put):
3313         (JSC::Arguments::deleteProperty):
3314         * runtime/DateConversion.cpp:
3315         (JSC::parseDate):
3316         * runtime/Identifier.h:
3317         (JSC::Identifier::Identifier):
3318         (JSC::Identifier::toArrayIndex):
3319         * runtime/JSArray.cpp:
3320         (JSC::JSArray::getOwnPropertySlot):
3321         (JSC::JSArray::getOwnPropertyDescriptor):
3322         (JSC::JSArray::put):
3323         (JSC::JSArray::deleteProperty):
3324         * runtime/JSArray.h:
3325         * runtime/JSGlobalObjectFunctions.cpp:
3326         (JSC::encode):
3327         (JSC::parseInt):
3328         (JSC::globalFuncJSCPrint):
3329         * runtime/JSString.h:
3330         (JSC::RopeBuilder::JSString):
3331         * runtime/UString.cpp:
3332         (JSC::UString::toDouble):
3333         (JSC::UString::UTF8String):
3334         * runtime/UString.h:
3335         (JSC::UString::isNull):
3336         (JSC::UString::isEmpty):
3337         (JSC::UString::impl):
3338         (JSC::UString::cost):
3339         (JSC::UString::~UString):
3340         (JSC::UString::toArrayIndex):
3341         * wtf/text/WTFString.cpp:
3342         (WTF::String::utf8):
3343         * wtf/text/WTFString.h:
3344         (WTF::String::String):
3345         (WTF::String::isHashTableDeletedValue):
3346         (WTF::String::length):
3347         (WTF::String::operator[]):
3348         (WTF::String::isNull):
3349         (WTF::String::isEmpty):
3350         (WTF::String::impl):
3351
3352 2010-08-12  Gavin Barraclough  <barraclough@apple.com>
3353
3354         Windows build fix.
3355
3356         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3357
3358 2010-08-12  Gavin Barraclough  <barraclough@apple.com>
3359
3360         Reviewed by Sam Weinig
3361
3362         Unify UString::UTF8String() & String::utf8() methods,
3363         remove UString::cost() & make atArrayIndex a free function.
3364
3365         * JavaScriptCore.exp:
3366         * bytecode/CodeBlock.cpp:
3367         (JSC::constantName):
3368         (JSC::idName):
3369         (JSC::CodeBlock::registerName):
3370         (JSC::regexpName):
3371         (JSC::printGlobalResolveInfo):
3372         (JSC::printStructureStubInfo):
3373         (JSC::CodeBlock::printStructure):
3374         (JSC::CodeBlock::printStructures):
3375         * jsc.cpp:
3376         (functionPrint):
3377         (functionDebug):
3378         (runInteractive):
3379         (fillBufferWithContentsOfFile):
3380         * pcre/pcre_exec.cpp:
3381         (Histogram::~Histogram):
3382         * profiler/CallIdentifier.h:
3383         (JSC::CallIdentifier::c_str):
3384         * profiler/Profile.cpp:
3385         (JSC::Profile::debugPrintDataSampleStyle):
3386         * profiler/ProfileGenerator.cpp:
3387         (JSC::ProfileGenerator::willExecute):
3388         (JSC::ProfileGenerator::didExecute):
3389         * profiler/ProfileNode.cpp:
3390         (JSC::ProfileNode::debugPrintData):
3391         (JSC::ProfileNode::debugPrintDataSampleStyle):
3392         * runtime/Arguments.cpp:
3393         (JSC::Arguments::getOwnPropertySlot):
3394         (JSC::Arguments::getOwnPropertyDescriptor):
3395         (JSC::Arguments::put):
3396         (JSC::Arguments::deleteProperty):
3397         * runtime/DateConversion.cpp:
3398         (JSC::parseDate):
3399         * runtime/Identifier.h:
3400         (JSC::Identifier::toStrictUInt32):
3401         * runtime/JSArray.cpp:
3402         (JSC::JSArray::getOwnPropertySlot):
3403         (JSC::JSArray::getOwnPropertyDescriptor):
3404         (JSC::JSArray::put):
3405         (JSC::JSArray::deleteProperty):
3406         * runtime/JSArray.h:
3407         (JSC::toArrayIndex):
3408         * runtime/JSGlobalObjectFunctions.cpp:
3409         (JSC::encode):
3410         (JSC::parseInt):
3411         (JSC::globalFuncJSCPrint):
3412         * runtime/JSString.h:
3413         (JSC::RopeBuilder::JSString):
3414         * runtime/UString.cpp:
3415         (JSC::UString::toDouble):
3416         (JSC::putUTF8Triple):
3417         (JSC::UString::utf8):
3418         * runtime/UString.h:
3419         (JSC::UString::~UString):
3420         (JSC::UString::isNull):
3421         (JSC::UString::isEmpty):
3422         (JSC::UString::impl):
3423         * wtf/text/WTFString.cpp:
3424         (WTF::String::utf8):
3425         * wtf/text/WTFString.h:
3426         (WTF::String::~String):
3427         (WTF::String::swap):
3428         (WTF::String::isNull):
3429         (WTF::String::isEmpty):
3430         (WTF::String::impl):
3431         (WTF::String::length):
3432         (WTF::String::String):
3433         (WTF::String::isHashTableDeletedValue):
3434
3435 2010-08-12  Gavin Barraclough  <barraclough@apple.com>
3436
3437         Eeerk! - revert accidentally committed changes in UString!
3438
3439         * JavaScriptCore.exp:
3440         * runtime/UString.cpp:
3441         (JSC::UString::UString):
3442         * runtime/UString.h:
3443
3444 2010-08-12  Gavin Barraclough  <barraclough@apple.com>
3445
3446         Reviewed by Sam Weinig
3447
3448         Change UString constructors to match those in WTF::String.
3449         This changes behaviour of UString((char*)0) to create null
3450         strings, akin to UString() rather than UString::empty().
3451         (This matches String).  Remove unused constructors from
3452         UString, and add null-terminated UTF-16 constructor, to
3453         match String.  Move String's constructor into the .cpp to
3454         match UString.
3455
3456         * JavaScriptCore.exp:
3457         * debugger/DebuggerCallFrame.cpp:
3458         (JSC::DebuggerCallFrame::calculatedFunctionName):
3459         * runtime/RegExpKey.h:
3460         (JSC::RegExpKey::RegExpKey):
3461         * runtime/SmallStrings.cpp:
3462         (JSC::SmallStrings::createSingleCharacterString):
3463         * runtime/UString.cpp:
3464         (JSC::UString::UString):
3465         * runtime/UString.h:
3466         (JSC::UString::UString):
3467         (JSC::UString::swap):
3468         (JSC::UString::adopt):
3469         (JSC::UString::operator[]):
3470         * wtf/text/WTFString.h:
3471         (WTF::String::String):
3472         (WTF::String::adopt):
3473         (WTF::String::operator[]):
3474
3475 2010-08-12  David Levin  <levin@chromium.org>
3476
3477         Reviewed by NOBODY (build fix).
3478
3479         * runtime/UString.h: Removed unneccessary #include.
3480
3481 2010-08-12  Gavin Barraclough  <barraclough@apple.com>
3482
3483         Reviewed by Sam Weinig
3484
3485         Revert changes to ALWAYS_INLINEness of a couple of functions in UString.
3486         This appears to have degraded performance.
3487
3488         * runtime/UString.cpp:
3489         (JSC::UString::ascii):
3490         * runtime/UString.h:
3491         (JSC::UString::length):
3492         (JSC::UString::isEmpty):
3493         (JSC::UString::~UString):
3494
3495 2010-08-12  Csaba Osztrogonác  <ossy@webkit.org>
3496
3497         Reviewed by Antonio Gomes.
3498
3499         [Qt] Fix warnings: unknown conversion type character 'l' in format
3500         https://bugs.webkit.org/show_bug.cgi?id=43359
3501
3502         Qt port doesn't call any printf in String::format(...), consequently
3503         using __attribute__((format(printf,m,n))) is incorrect and causes
3504         false positive warnings on Windows if you build with MinGW.
3505
3506         Qt port calls QString::vsprintf(...) , which is platform
3507         independent, and handles %lli, %llu and %llx on all platforms.
3508         (http://trac.webkit.org/changeset/35712)
3509
3510         * wtf/text/WTFString.h:
3511
3512 2010-08-12  Gabor Loki  <loki@webkit.org>
3513
3514         Reviewed by Geoffrey Garen.
3515
3516         Fix the array subscript is above array bounds warning in ByteArray on ARM.
3517         https://bugs.webkit.org/show_bug.cgi?id=43358
3518
3519         The warning is very similar to this one: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37861
3520
3521         * wtf/ByteArray.cpp:
3522         (WTF::ByteArray::create):
3523
3524 2010-08-12  Gustavo Noronha Silva  <gustavo.noronha@collabora.co.uk>
3525
3526         Reviewed by Martin Robinson.
3527
3528         [GTK] Use GSettings to save/restore Web Inspector settings
3529         https://bugs.webkit.org/show_bug.cgi?id=43512
3530
3531         * wtf/gobject/GRefPtr.cpp: Added support for GVariant, used by our
3532         GSettings support.
3533         (WTF::refGPtr):
3534         (WTF::derefGPtr):
3535         * wtf/gobject/GRefPtr.h:
3536
3537 2010-08-12  Gabor Loki  <loki@webkit.org>
3538
3539         Reviewed by Simon Hausmann.
3540
3541         The scratch register should be saved in YARR with ARM JIT
3542         https://bugs.webkit.org/show_bug.cgi?id=43910
3543
3544         Reported by Jocelyn Turcotte.
3545
3546         * yarr/RegexJIT.cpp:
3547         (JSC::Yarr::RegexGenerator::generateEnter):
3548         (JSC::Yarr::RegexGenerator::generateReturn):
3549
3550 2010-08-11  Gavin Barraclough  <barraclough@apple.com>
3551
3552         Windows build fix.
3553
3554         * JavaScriptCore.xcodeproj/project.pbxproj:
3555         * wtf/Forward.h:
3556
3557 2010-08-11  Leo Yang  <leo.yang@torchmobile.com.cn>
3558
3559         Reviewed by Geoffrey Garen.
3560
3561         Date("") should be an invalid date. For IE, Firefox and Chrome, Date("") is invalid date,
3562         which means isNaN(new Date("")) should return true.
3563         https://bugs.webkit.org/show_bug.cgi?id=43793
3564         Tests: fast/js/date-constructor.html
3565
3566         * runtime/JSGlobalData.cpp:
3567         (JSC::JSGlobalData::resetDateCache):
3568
3569 2010-08-11  Gavin Barraclough  <barraclough@apple.com>
3570
3571         Windows & !JIT build fix.
3572
3573         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3574         * JavaScriptCore.xcodeproj/project.pbxproj:
3575         * runtime/RegExp.cpp:
3576         (JSC::RegExp::match):
3577
3578 2010-08-11  Gavin Barraclough  <barraclough@apple.com>
3579
3580         Rubber stamp by sam weinig
3581
3582         Touch a file to stop the bot rolling a bit change out!
3583
3584         * runtime/UString.cpp:
3585         (JSC::UString::ascii):
3586
3587 2010-08-11  Kevin Ollivier  <kevino@theolliviers.com>
3588
3589         [wx] Build fix for wx and WebDOM bindings, add CString classes to the list of forwards.
3590
3591         * wtf/Forward.h:
3592
3593 2010-08-11  Gavin Barraclough  <barraclough@apple.com>
3594
3595         Rubber stamps by Darin Adler & Sam Weinig.
3596
3597         Bug 43867 - Some UString cleanup
3598
3599         Change JSC::UString data(), size(), and from(), to characters(), length(), and number() to match WTF::String.
3600         Move string concatenation methods to a new header to simplify down UString.h.  Remove is8Bit().
3601
3602         * API/JSClassRef.cpp:
3603         (OpaqueJSClass::~OpaqueJSClass):
3604         (OpaqueJSClass::className):
3605         * API/OpaqueJSString.cpp:
3606         (OpaqueJSString::create):
3607         * JavaScriptCore.exp:
3608         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3609         * JavaScriptCore.xcodeproj/project.pbxproj:
3610         * bytecode/CodeBlock.cpp:
3611         (JSC::constantName):
3612         (JSC::idName):
3613         (JSC::CodeBlock::registerName):
3614         (JSC::regexpName):
3615         * bytecode/EvalCodeCache.h:
3616         (JSC::EvalCodeCache::get):
3617         * bytecompiler/NodesCodegen.cpp:
3618         (JSC::ResolveNode::emitBytecode):
3619         (JSC::FunctionCallResolveNode::emitBytecode):
3620         (JSC::ReadModifyResolveNode::emitBytecode):
3621         (JSC::processClauseList):
3622         * parser/ASTBuilder.h:
3623         (JSC::ASTBuilder::createRegex):
3624         * parser/ParserArena.h:
3625         (JSC::IdentifierArena::makeNumericIdentifier):
3626         * parser/SourceProvider.h:
3627         (JSC::UStringSourceProvider::data):
3628         (JSC::UStringSourceProvider::length):
3629         * profiler/Profiler.cpp:
3630         * runtime/Arguments.cpp:
3631         (JSC::Arguments::getOwnPropertySlot):
3632         (JSC::Arguments::getOwnPropertyNames):
3633         (JSC::Arguments::put):
3634         (JSC::Arguments::deleteProperty):
3635         * runtime/ArrayPrototype.cpp:
3636         (JSC::arrayProtoFuncToString):
3637         * runtime/DatePrototype.cpp:
3638         (JSC::formatLocaleDate):
3639         * runtime/ExceptionHelpers.cpp:
3640         * runtime/FunctionConstructor.cpp:
3641         * runtime/FunctionPrototype.cpp:
3642         (JSC::insertSemicolonIfNeeded):
3643         * runtime/Identifier.h:
3644         (JSC::Identifier::characters):
3645         (JSC::Identifier::length):
3646         * runtime/JSGlobalObjectFunctions.cpp:
3647         (JSC::decode):
3648         (JSC::parseInt):
3649         (JSC::parseFloat):
3650         (JSC::globalFuncEscape):
3651         (JSC::globalFuncUnescape):
3652         * runtime/JSNumberCell.cpp:
3653         (JSC::JSNumberCell::toString):
3654         * runtime/JSONObject.cpp:
3655         (JSC::gap):
3656         (JSC::Stringifier::appendQuotedString):
3657         (JSC::Stringifier::appendStringifiedValue):
3658         (JSC::Stringifier::indent):
3659         (JSC::Stringifier::unindent):
3660         (JSC::Walker::walk):
3661         * runtime/JSString.cpp:
3662         (JSC::JSString::replaceCharacter):
3663         (JSC::JSString::getIndexSlowCase):
3664         * runtime/JSString.h:
3665         (JSC::RopeBuilder::JSString):
3666         (JSC::RopeBuilder::appendValueInConstructAndIncrementLength):
3667         (JSC::RopeBuilder::fiberCount):
3668         (JSC::jsSingleCharacterSubstring):
3669         (JSC::jsNontrivialString):
3670         (JSC::JSString::getIndex):
3671         (JSC::jsString):
3672         (JSC::jsStringWithFinalizer):
3673         (JSC::jsSubstring):
3674         (JSC::jsOwnedString):
3675         * runtime/JSStringBuilder.h:
3676         (JSC::JSStringBuilder::append):
3677         * runtime/LiteralParser.h:
3678         (JSC::LiteralParser::Lexer::Lexer):
3679         * runtime/NumberPrototype.cpp:
3680         (JSC::numberProtoFuncToString):
3681         (JSC::numberProtoFuncToFixed):
3682         (JSC::numberProtoFuncToExponential):
3683         (JSC::numberProtoFuncToPrecision):
3684         * runtime/NumericStrings.h:
3685         (JSC::NumericStrings::add):
3686         (JSC::NumericStrings::lookupSmallString):
3687         * runtime/Operations.h:
3688         (JSC::jsString):
3689         * runtime/RegExp.cpp:
3690         (JSC::RegExp::match):
3691         * runtime/RegExpCache.cpp:
3692         (JSC::RegExpCache::lookupOrCreate):
3693         (JSC::RegExpCache::create):
3694         * runtime/RegExpConstructor.cpp:
3695         (JSC::RegExpConstructor::getRightContext):
3696         * runtime/RegExpObject.cpp:
3697         (JSC::RegExpObject::match):
3698         * runtime/RegExpPrototype.cpp:
3699         (JSC::regExpProtoFuncToString):
3700         * runtime/StringBuilder.h:
3701         (JSC::StringBuilder::append):
3702         * runtime/StringConcatenate.h: Copied from JavaScriptCore/runtime/UString.h.
3703         (JSC::):
3704         (JSC::sumWithOverflow):
3705         (JSC::tryMakeString):
3706         (JSC::makeString):
3707         * runtime/StringObject.cpp:
3708         (JSC::StringObject::getOwnPropertyNames):
3709         * runtime/StringPrototype.cpp:
3710         (JSC::substituteBackreferencesSlow):
3711         (JSC::localeCompare):
3712         (JSC::jsSpliceSubstringsWithSeparators):
3713         (JSC::stringProtoFuncReplace):
3714         (JSC::stringProtoFuncCharAt):
3715         (JSC::stringProtoFuncCharCodeAt):
3716         (JSC::stringProtoFuncIndexOf):
3717         (JSC::stringProtoFuncLastIndexOf):
3718         (JSC::stringProtoFuncSlice):
3719         (JSC::stringProtoFuncSplit):
3720         (JSC::stringProtoFuncSubstr):
3721         (JSC::stringProtoFuncSubstring):
3722         (JSC::stringProtoFuncToLowerCase):
3723         (JSC::stringProtoFuncToUpperCase):
3724         (JSC::stringProtoFuncFontsize):
3725         (JSC::stringProtoFuncLink):
3726         (JSC::trimString):
3727         * runtime/UString.cpp:
3728         (JSC::UString::number):
3729         (JSC::UString::ascii):
3730         (JSC::UString::operator[]):
3731         (JSC::UString::toDouble):
3732         (JSC::UString::find):
3733         (JSC::UString::rfind):
3734         (JSC::UString::substr):
3735         (JSC::operator==):
3736         (JSC::operator<):
3737         (JSC::operator>):
3738         (JSC::UString::UTF8String):
3739         * runtime/UString.h:
3740         (JSC::UString::UString):
3741         (JSC::UString::adopt):
3742         (JSC::UString::length):
3743         (JSC::UString::characters):
3744         (JSC::UString::isNull):
3745         (JSC::UString::isEmpty):
3746         (JSC::UString::impl):
3747         (JSC::UString::cost):
3748         (JSC::operator==):
3749         (JSC::operator!=):
3750         (JSC::codePointCompare):
3751         (JSC::UString::toArrayIndex):
3752         (JSC::IdentifierRepHash::hash):
3753         (WTF::):
3754         * yarr/RegexJIT.cpp:
3755         (JSC::Yarr::jitCompileRegex):
3756         * yarr/RegexParser.h:
3757         (JSC::Yarr::Parser::Parser):
3758
3759 2010-08-11  Gabor Loki  <loki@webkit.org>
3760
3761         Qt build fix (ARMv7).
3762
3763         Fix invalid conversion from int to Condition.
3764         Add ARMv7Assembler.cpp to JavaScriptCore.pro.
3765
3766         * JavaScriptCore.pro:
3767         * assembler/ARMv7Assembler.h:
3768         (JSC::ARMv7Assembler::):
3769         (JSC::ARMv7Assembler::JmpSrc::JmpSrc):
3770
3771 2010-08-11  Nathan Lawrence  <nlawrence@apple.com>
3772
3773         Reviewed by Geoffrey Garen.
3774
3775         At collection time, we frequently want to mark a cell, while checking
3776         whether it was originally checked.  Previously, this was a get
3777         operation follwed by a set operation.  Fusing the two saves
3778         computation and gives a 0.5% sunspider speedup.
3779
3780         * runtime/Collector.h:
3781         (JSC::CollectorBitmap::getset):
3782         (JSC::Heap::checkMarkCell):
3783         * runtime/JSArray.h:
3784         (JSC::MarkStack::drain):
3785         * runtime/JSCell.h:
3786         (JSC::MarkStack::append):
3787
3788 2010-08-11  Steve Falkenburg  <sfalken@apple.com>
3789
3790         Reviewed by Adam Roben.
3791
3792         Improve vsprops copying for Windows build
3793         https://bugs.webkit.org/show_bug.cgi?id=41982
3794
3795         When we detect a new SDK, always copy a new set of vsprops files.
3796         Previously, if someone updated their SDK after updating their sources,
3797         they could end up with out-of-date vsprops files.
3798
3799         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
3800
3801 2010-08-10  Darin Adler  <darin@apple.com>
3802
3803         Reviewed by Sam Weinig.
3804
3805         Add leakRef and clear to all RefPtr variants
3806         https://bugs.webkit.org/show_bug.cgi?id=42389
3807
3808         * API/JSRetainPtr.h: Changed all uses of "template <...>" to instead do
3809         "template<...>". We should probably put this in the style guide and do it
3810         consitently. Fixed other minor style issues. Defined many of the inlined
3811         functions outside the class definition, to avoid style checker warnings
3812         about multiple statements on a single line and for slightly better clarity
3813         of the class definition itself. Renamed releaseRef to leakRef. Added a
3814         releaseRef that calls leakRef so we don't have to rename all callers oat
3815         once. Added a clear function.
3816
3817         * wtf/PassRefPtr.h: Changed all uses of releaseRef to leakRef.
3818
3819         * wtf/RefPtr.h: Changed all uses of "template <...>" to instead do
3820         "template<...>". Tidied up declarations and comments a bit.
3821          Changed all uses of releaseRef to leakRef.
3822
3823         * wtf/RetainPtr.h: Changed all uses of "template <...>" to instead do
3824         "template<...>". Defined many of the inlined functions outside the class
3825         definition, to avoid style checker warnings about multiple statements on
3826         a single line and for slightly better clarity of the class definition itself.
3827         Renamed releaseRef to leakRef. Added a releaseRef that calls leakRef so we
3828         don't have to rename all callers at once. Added a clear function.
3829
3830 2010-08-10  Dumitru Daniliuc  <dumi@chromium.org>
3831
3832         Unreviewed, reverting an unintentional change to a file submitted in r65108.
3833
3834         * bytecode/CodeBlock.h:
3835         (JSC::binaryChop):
3836
3837 2010-08-10  Gavin Barraclough  <barraclough@apple.com>
3838
3839         Rubber stamped by Sam Weinig
3840
3841         Bug 43817 - Remove UString::Rep
3842         UString::Rep has for a long time been replaced by UStringImpl (Rep
3843         remaining as a typedef).  UStringImpl has since been removed too
3844         (unified with StringImpl). Remove Rep, rename rep() to impl() and
3845         m_rep to m_impl.  Also add impl() method to Identifier, and rename
3846         its UString member from _ustring to m_string.
3847
3848         * API/JSCallbackObject.h:
3849         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::getPrivateProperty):
3850         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::setPrivateProperty):
3851         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::deletePrivateProperty):
3852         * API/JSCallbackObjectFunctions.h:
3853         (JSC::::getOwnPropertySlot):
3854         (JSC::::put):
3855         (JSC::::deleteProperty):
3856         (JSC::::getOwnPropertyNames):
3857         (JSC::::staticValueGetter):
3858         (JSC::::staticFunctionGetter):
3859         * API/JSClassRef.cpp:
3860         (tryCreateStringFromUTF8):
3861         (OpaqueJSClass::OpaqueJSClass):
3862         (OpaqueJSClass::~OpaqueJSClass):
3863         (OpaqueJSClassContextData::OpaqueJSClassContextData):
3864         * API/JSClassRef.h:
3865         * API/OpaqueJSString.cpp:
3866         (OpaqueJSString::ustring):
3867         * bytecode/EvalCodeCache.h:
3868         (JSC::EvalCodeCache::get):
3869         * bytecode/JumpTable.h:
3870         (JSC::StringJumpTable::offsetForValue):
3871         (JSC::StringJumpTable::ctiForValue):
3872         * bytecompiler/BytecodeGenerator.cpp:
3873         (JSC::BytecodeGenerator::addVar):
3874         (JSC::BytecodeGenerator::addGlobalVar):
3875         (JSC::BytecodeGenerator::BytecodeGenerator):
3876         (JSC::BytecodeGenerator::addParameter):
3877         (JSC::BytecodeGenerator::registerFor):
3878         (JSC::BytecodeGenerator::willResolveToArguments):
3879         (JSC::BytecodeGenerator::uncheckedRegisterForArguments):
3880         (JSC::BytecodeGenerator::constRegisterFor):
3881         (JSC::BytecodeGenerator::isLocal):
3882         (JSC::BytecodeGenerator::isLocalConstant):
3883         (JSC::BytecodeGenerator::addConstant):
3884         (JSC::BytecodeGenerator::emitLoad):
3885         (JSC::BytecodeGenerator::findScopedProperty):
3886         (JSC::keyForCharacterSwitch):
3887         (JSC::prepareJumpTableForStringSwitch):
3888         * bytecompiler/BytecodeGenerator.h:
3889         * bytecompiler/NodesCodegen.cpp:
3890         (JSC::processClauseList):
3891         * interpreter/Interpreter.cpp:
3892         (JSC::Interpreter::privateExecute):
3893         * jit/JITStubs.cpp:
3894         (JSC::DEFINE_STUB_FUNCTION):
3895         * parser/JSParser.cpp:
3896         (JSC::JSParser::parseStrictObjectLiteral):
3897         * pcre/pcre_exec.cpp:
3898         (Histogram::add):
3899         * profiler/CallIdentifier.h:
3900         (JSC::CallIdentifier::Hash::hash):
3901         * profiler/Profile.cpp:
3902         * profiler/ProfileNode.cpp:
3903         (JSC::ProfileNode::debugPrintDataSampleStyle):
3904         * profiler/ProfileNode.h:
3905         * runtime/ArrayPrototype.cpp:
3906         (JSC::arrayProtoFuncToString):
3907         * runtime/Identifier.cpp:
3908         (JSC::Identifier::equal):
3909         (JSC::IdentifierCStringTranslator::hash):
3910         (JSC::IdentifierCStringTranslator::equal):
3911         (JSC::IdentifierCStringTranslator::translate):
3912         (JSC::Identifier::add):
3913         (JSC::IdentifierUCharBufferTranslator::hash):
3914         (JSC::IdentifierUCharBufferTranslator::equal):
3915         (JSC::IdentifierUCharBufferTranslator::translate):
3916         (JSC::Identifier::addSlowCase):
3917         * runtime/Identifier.h:
3918         (JSC::Identifier::Identifier):
3919         (JSC::Identifier::ustring):
3920         (JSC::Identifier::impl):
3921         (JSC::Identifier::data):
3922         (JSC::Identifier::size):
3923         (JSC::Identifier::ascii):
3924         (JSC::Identifier::isNull):
3925         (JSC::Identifier::isEmpty):
3926         (JSC::Identifier::toUInt32):
3927         (JSC::Identifier::toStrictUInt32):
3928         (JSC::Identifier::toArrayIndex):
3929         (JSC::Identifier::toDouble):
3930         (JSC::Identifier::equal):
3931         (JSC::Identifier::add):
3932         * runtime/InitializeThreading.cpp:
3933         (JSC::initializeThreadingOnce):
3934         * runtime/InternalFunction.cpp:
3935         (JSC::InternalFunction::displayName):
3936         * runtime/JSFunction.cpp:
3937         (JSC::JSFunction::displayName):
3938         * runtime/JSGlobalObject.h:
3939         (JSC::JSGlobalObject::addStaticGlobals):
3940         * runtime/JSStaticScopeObject.h:
3941         (JSC::JSStaticScopeObject::JSStaticScopeObject):
3942         * runtime/JSString.h:
3943         (JSC::):
3944         (JSC::RopeBuilder::appendStringInConstruct):
3945         (JSC::RopeBuilder::appendValueInConstructAndIncrementLength):
3946         (JSC::jsSingleCharacterSubstring):
3947         (JSC::jsSubstring):
3948         * runtime/JSVariableObject.cpp:
3949         (JSC::JSVariableObject::deleteProperty):
3950         (JSC::JSVariableObject::symbolTableGet):
3951         * runtime/JSVariableObject.h:
3952         (JSC::JSVariableObject::symbolTableGet):
3953         (JSC::JSVariableObject::symbolTablePut):
3954         (JSC::JSVariableObject::symbolTablePutWithAttributes):
3955         * runtime/Lookup.cpp:
3956         (JSC::HashTable::createTable):
3957         (JSC::HashTable::deleteTable):
3958         * runtime/Lookup.h:
3959         (JSC::HashEntry::initialize):
3960         (JSC::HashEntry::setKey):
3961         (JSC::HashEntry::key):
3962         (JSC::HashTable::entry):
3963         * runtime/PropertyMapHashTable.h:
3964         (JSC::PropertyMapEntry::PropertyMapEntry):
3965         * runtime/PropertyNameArray.cpp:
3966         (JSC::PropertyNameArray::add):
3967         * runtime/PropertyNameArray.h:
3968         (JSC::PropertyNameArray::add):
3969         (JSC::PropertyNameArray::addKnownUnique):
3970         * runtime/RegExp.cpp:
3971         (JSC::RegExp::match):
3972         * runtime/RegExpCache.cpp:
3973         (JSC::RegExpCache::create):
3974         * runtime/RegExpKey.h:
3975         (JSC::RegExpKey::RegExpKey):
3976         * runtime/SmallStrings.cpp:
3977         (JSC::SmallStringsStorage::rep):
3978         (JSC::SmallStrings::singleCharacterStringRep):
3979         * runtime/SmallStrings.h:
3980         * runtime/StringPrototype.cpp:
3981         (JSC::jsSpliceSubstringsWithSeparators):
3982         (JSC::stringProtoFuncMatch):
3983         (JSC::stringProtoFuncSearch):
3984         * runtime/Structure.cpp:
3985         (JSC::Structure::~Structure):
3986         (JSC::Structure::despecifyDictionaryFunction):
3987         (JSC::Structure::addPropertyTransitionToExistingStructure):
3988         (JSC::Structure::addPropertyTransition):
3989         (JSC::Structure::copyPropertyTable):
3990         (JSC::Structure::get):
3991         (JSC::Structure::despecifyFunction):
3992         (JSC::Structure::put):
3993         (JSC::Structure::hasTransition):
3994         (JSC::Structure::remove):
3995         (JSC::Structure::checkConsistency):
3996         * runtime/Structure.h:
3997         (JSC::Structure::get):
3998         (JSC::Structure::hasTransition):
3999         * runtime/StructureTransitionTable.h:
4000         * runtime/SymbolTable.h:
4001         * runtime/UString.cpp:
4002         (JSC::UString::UString):
4003         (JSC::UString::toStrictUInt32):
4004         (JSC::UString::substr):
4005         * runtime/UString.h:
4006         (JSC::UString::UString):
4007         (JSC::UString::adopt):
4008         (JSC::UString::data):
4009         (JSC::UString::size):
4010         (JSC::UString::isNull):
4011         (JSC::UString::isEmpty):
4012         (JSC::UString::impl):
4013         (JSC::UString::cost):
4014         (JSC::operator==):
4015         (JSC::codePointCompare):
4016         (JSC::IdentifierRepHash::hash):
4017         (WTF::):
4018
4019 2010-08-10  Gavin Barraclough  <barraclough@apple.com>
4020
4021         Bug 43816 - Remove UStringImpl
4022         The class was actually removed a long time ago, replaced by StringImpl.
4023         UStringImpl is just a typedef onto StringImpl.  Remove this.
4024
4025         * API/JSClassRef.cpp:
4026         (OpaqueJSClass::OpaqueJSClass):
4027         * JavaScriptCore.xcodeproj/project.pbxproj:
4028         * runtime/JSString.cpp:
4029         (JSC::JSString::resolveRope):
4030         (JSC::JSString::replaceCharacter):
4031         * runtime/JSString.h:
4032         (JSC::RopeBuilder::RopeIterator::operator*):
4033         (JSC::RopeBuilder::JSString):
4034         (JSC::RopeBuilder::appendStringInConstruct):
4035         (JSC::RopeBuilder::appendValueInConstructAndIncrementLength):
4036         (JSC::jsSingleCharacterSubstring):
4037         (JSC::jsSubstring):
4038         * runtime/JSStringBuilder.h:
4039         (JSC::jsMakeNontrivialString):
4040         * runtime/RopeImpl.cpp:
4041         (JSC::RopeImpl::derefFibersNonRecursive):
4042         * runtime/RopeImpl.h:
4043         (JSC::RopeImpl::deref):
4044         * runtime/SmallStrings.cpp:
4045         (JSC::SmallStringsStorage::SmallStringsStorage):
4046         * runtime/StringConstructor.cpp:
4047         (JSC::stringFromCharCodeSlowCase):
4048         * runtime/StringPrototype.cpp:
4049         (JSC::jsSpliceSubstringsWithSeparators):
4050         (JSC::stringProtoFuncFontsize):
4051         (JSC::stringProtoFuncLink):
4052         * runtime/UString.cpp:
4053         (JSC::initializeUString):
4054         * runtime/UString.h:
4055         (JSC::UString::adopt):
4056         (JSC::tryMakeString):
4057         (JSC::makeString):
4058         * runtime/UStringImpl.h: Removed.
4059
4060 2010-08-10  Patrick Gansterer  <paroga@paroga.com>
4061
4062         Reviewed by Eric Seidel.
4063
4064         Make FastMalloc more portable.
4065         https://bugs.webkit.org/show_bug.cgi?id=41790
4066
4067         * wtf/FastMalloc.cpp:
4068         (WTF::TCMalloc_Central_FreeList::Populate):
4069         (WTF::TCMalloc_ThreadCache::CreateCacheIfNecessary):
4070
4071 2010-08-10  Patrick Gansterer  <paroga@paroga.com>
4072
4073         Reviewed by David Levin.
4074
4075         [WINCE] Buildfix for CE 6.0
4076         https://bugs.webkit.org/show_bug.cgi?id=43027
4077
4078         CE 6.0 doesn't define localtime in the system include files.
4079
4080         * wtf/Platform.h: Include ce_time.h on all OS(WINCE).
4081
4082 2010-08-10  Gavin Barraclough  <barraclough@apple.com>
4083
4084         Rubber stamped by Sam Weinig.
4085
4086         Bug 43786 - Move AtomicStringHash from WebCore to WTF
4087         Also remove deprecated string headers from WebCore/platform/text.
4088
4089         * GNUmakefile.am:
4090         * JavaScriptCore.gypi:
4091         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
4092         * JavaScriptCore.xcodeproj/project.pbxproj:
4093         * wtf/text/AtomicString.h:
4094         * wtf/text/AtomicStringHash.h: Copied from WebCore/platform/text/AtomicStringHash.h.
4095
4096 2010-08-09  Oliver Hunt  <oliver@apple.com>
4097
4098         Fix Qt/ARM again, this time including the other changed file.
4099
4100         * jit/JIT.h:
4101
4102 2010-08-09  Oliver Hunt  <oliver@apple.com>
4103
4104         Fix Qt/ARM
4105
4106         C++ overload resolution I stab at thee
4107
4108         * jit/JITInlineMethods.h:
4109         (JSC::JIT::beginUninterruptedSequence):
4110         (JSC::JIT::endUninterruptedSequence):
4111
4112 2010-08-09  Oliver Hunt  <oliver@apple.com>
4113
4114         Reviewed by Gavin Barraclough.
4115
4116         Allow an assembler/macroassembler to compact branches to more concise forms when linking
4117         https://bugs.webkit.org/show_bug.cgi?id=43745
4118
4119         This patch makes it possible for an assembler to convert jumps into a different
4120         (presumably more efficient) form at link time.  Currently implemented in the
4121         ARMv7 JIT as that already had logic to delay linking of jumps until the end of
4122         compilation already.  The ARMv7 JIT chooses between either a 4 byte short jump
4123         or a full 32-bit offset (and rewrites ITTT instructions as appropriate), so does
4124         not yet produce the most compact form possible.  The general design of the linker
4125         should make it relatively simple to introduce new branch types with little effort,
4126         as the linker has no knowledge of the exact form of any of the branches.
4127
4128         * JavaScriptCore.xcodeproj/project.pbxproj:
4129         * assembler/ARMv7Assembler.cpp: Added.
4130         (JSC::):
4131           Record jump sizes
4132
4133         * assembler/ARMv7Assembler.h:
4134         (JSC::ARMv7Assembler::LinkRecord::LinkRecord):
4135         (JSC::ARMv7Assembler::LinkRecord::from):
4136         (JSC::ARMv7Assembler::LinkRecord::setFrom):
4137         (JSC::ARMv7Assembler::LinkRecord::to):
4138         (JSC::ARMv7Assembler::LinkRecord::type):
4139         (JSC::ARMv7Assembler::LinkRecord::linkType):
4140         (JSC::ARMv7Assembler::LinkRecord::setLinkType):
4141           Encapsulate LinkRecord fields so we can compress the values somewhat
4142
4143         (JSC::ARMv7Assembler::JmpSrc::JmpSrc):
4144           Need to record the jump type now
4145
4146         (JSC::ARMv7Assembler::b):
4147         (JSC::ARMv7Assembler::blx):
4148         (JSC::ARMv7Assembler::bx):
4149           Need to pass the jump types
4150
4151         (JSC::ARMv7Assembler::executableOffsetFor):
4152         (JSC::ARMv7Assembler::jumpSizeDelta):
4153         (JSC::ARMv7Assembler::linkRecordSourceComparator):
4154         (JSC::ARMv7Assembler::computeJumpType):
4155         (JSC::ARMv7Assembler::convertJumpTo):
4156         (JSC::ARMv7Assembler::recordLinkOffsets):
4157         (JSC::ARMv7Assembler::jumpsToLink):
4158         (JSC::ARMv7Assembler::link):
4159         (JSC::ARMv7Assembler::unlinkedCode):
4160           Helper functions for the linker
4161
4162         (JSC::ARMv7Assembler::linkJump):
4163         (JSC::ARMv7Assembler::canBeShortJump):
4164         (JSC::ARMv7Assembler::linkLongJump):
4165         (JSC::ARMv7Assembler::linkShortJump):
4166         (JSC::ARMv7Assembler::linkJumpAbsolute):
4167            Moving code around for the various jump linking functions
4168
4169         * assembler/AbstractMacroAssembler.h:
4170         (JSC::AbstractMacroAssembler::beginUninterruptedSequence):
4171         (JSC::AbstractMacroAssembler::endUninterruptedSequence):
4172           We have to track uninterrupted sequences in any assembler that compacts
4173           branches as that's not something we're allowed to do in such sequences.
4174           AbstractMacroAssembler has a nop version of these functions as it makes the
4175           code elsewhere nicer.
4176
4177         * assembler/LinkBuffer.h:
4178         (JSC::LinkBuffer::LinkBuffer):
4179         (JSC::LinkBuffer::link):
4180         (JSC::LinkBuffer::patch):
4181         (JSC::LinkBuffer::locationOf):
4182         (JSC::LinkBuffer::locationOfNearCall):
4183         (JSC::LinkBuffer::returnAddressOffset):
4184         (JSC::LinkBuffer::trampolineAt):
4185           Updated these functions to adjust for any changed offsets in the linked code
4186
4187         (JSC::LinkBuffer::applyOffset):
4188           A helper function to deal with the now potentially moved labels
4189
4190         (JSC::LinkBuffer::linkCode):
4191           The new and mighty linker function
4192
4193         * assembler/MacroAssemblerARMv7.h:
4194         (JSC::MacroAssemblerARMv7::MacroAssemblerARMv7):
4195         (JSC::MacroAssemblerARMv7::beginUninterruptedSequence):
4196         (JSC::MacroAssemblerARMv7::endUninterruptedSequence):
4197         (JSC::MacroAssemblerARMv7::jumpsToLink):
4198         (JSC::MacroAssemblerARMv7::unlinkedCode):
4199         (JSC::MacroAssemblerARMv7::computeJumpType):
4200         (JSC::MacroAssemblerARMv7::convertJumpTo):
4201         (JSC::MacroAssemblerARMv7::recordLinkOffsets):
4202         (JSC::MacroAssemblerARMv7::jumpSizeDelta):
4203         (JSC::MacroAssemblerARMv7::link):
4204         (JSC::MacroAssemblerARMv7::jump):
4205         (JSC::MacroAssemblerARMv7::branchMul32):
4206         (JSC::MacroAssemblerARMv7::breakpoint):
4207         (JSC::MacroAssemblerARMv7::nearCall):
4208         (JSC::MacroAssemblerARMv7::call):
4209         (JSC::MacroAssemblerARMv7::ret):
4210         (JSC::MacroAssemblerARMv7::tailRecursiveCall):
4211         (JSC::MacroAssemblerARMv7::executableOffsetFor):
4212         (JSC::MacroAssemblerARMv7::inUninterruptedSequence):
4213         (JSC::MacroAssemblerARMv7::makeJump):
4214         (JSC::MacroAssemblerARMv7::makeBranch):
4215            All branches need to pass on their type now
4216
4217         * jit/ExecutableAllocator.h:
4218         (JSC::ExecutablePool::returnLastBytes):
4219            We can't know ahead of time how much space will be necessary to
4220            hold the linked code if we're compacting branches, this new
4221            function allows us to return the unused bytes at the end of linking
4222
4223         * jit/JIT.cpp:
4224         (JSC::JIT::JIT):
4225         (JSC::JIT::privateCompile):
4226         * jit/JIT.h:
4227         (JSC::JIT::compile):
4228            The JIT class now needs to take a linker offset so that recompilation
4229            can generate the same jumps when using branch compaction.
4230         * jit/JITArithmetic32_64.cpp:
4231         (JSC::JIT::emitSlow_op_mod):
4232         * jit/JITOpcodes.cpp:
4233         (JSC::JIT::privateCompileCTIMachineTrampolines):