32-bit build fix.
[WebKit.git] / JavaScriptCore / ChangeLog
1 2010-09-09  John Therrell  <jtherrell@apple.com>
2
3         32-bit build fix.
4
5         * jit/ExecutableAllocator.cpp:
6         (JSC::ExecutableAllocator::committedByteCount):
7
8 2010-09-09  John Therrell  <jtherrell@apple.com>
9
10         Reviewed by Alexey Proskuryakov.
11
12         Added statistics sampling and reporting for JavaScriptCore's RegisterFile and ExecutableAllocator classes
13         https://bugs.webkit.org/show_bug.cgi?id=45134
14
15         Added thread-safe committed byte counting and reporting functionality to RegisterFile and 
16         ExecutableAllocator.
17
18         * JavaScriptCore.exp:
19         Exported new symbols to allow for WebKit to get statistics from JavaScriptCore classes.
20         
21         * interpreter/RegisterFile.cpp:
22         (JSC::registerFileStatisticsMutex):
23         Added function which returns a static Mutex used for locking during read/write access to
24         static committed byte count variable.
25         (JSC::RegisterFile::~RegisterFile):
26         Added call to addToStatistics since memory is decommitted here.
27         (JSC::RegisterFile::releaseExcessCapacity):
28         Added call to addToStatistics since memory is decommitted here.
29         (JSC::RegisterFile::initializeThreading):
30         Added function which calls registerFileStatisticsMutex().
31         (JSC::RegisterFile::committedByteCount):
32         Added function which returns the current committed byte count for RegisterFile.
33         (JSC::RegisterFile::addToCommittedByteCount):
34         Added function which updates committed byte count.
35         
36         * interpreter/RegisterFile.h:
37         (JSC::RegisterFile::RegisterFile):
38         Added call to addToStatistics since memory is committed here.
39         (JSC::RegisterFile::grow):
40         Added call to addToStatistics since memory is committed here.
41         
42         * jit/ExecutableAllocator.h:
43         Added function prototype for public static function committedByteCount().
44         
45         * jit/ExecutableAllocatorFixedVMPool.cpp:
46         (JSC::FixedVMPoolAllocator::release):
47         Added call to addToStatistics since memory is decommitted here.
48         (JSC::FixedVMPoolAllocator::reuse):
49         Added call to addToStatistics since memory is committed here.
50         (JSC::FixedVMPoolAllocator::addToCommittedByteCount):
51         Added function which updates committed byte count.
52         (JSC::ExecutableAllocator::committedByteCount):
53         Added function which returns the current committed byte count for ExecutableAllocator.
54         
55         * runtime/InitializeThreading.cpp:
56         (JSC::initializeThreadingOnce):
57         Added call to RegisterFile::initializeThreading.
58
59 2010-09-09  Mark Rowe  <mrowe@apple.com>
60
61         Reviewed by Oliver Hunt.
62
63         <http://webkit.org/b/45502> JSObjectSetPrivateProperty does not handle NULL values as it claims
64
65         * API/JSObjectRef.cpp:
66         (JSObjectSetPrivateProperty): Don't call toJS if we have a NULL value as that will cause an assertion
67         failure. Instead map NULL directly to the null JSValue.
68         * API/tests/testapi.c:
69         (main): Add test coverage for the NULL value case.
70
71 2010-09-09  Csaba Osztrogonác  <ossy@webkit.org>
72
73         Reviewed by Gavin Barraclough.
74
75         [Qt] JSVALUE32_64 not works on Windows platform with MinGW compiler
76         https://bugs.webkit.org/show_bug.cgi?id=29268
77
78         * wtf/Platform.h: Enable JSVALUE32_64 for Qt/Windows/MinGW, because it works now.
79
80 2010-09-08  Zoltan Herczeg  <zherczeg@webkit.org>
81
82         Reviewed by Darin Adler.
83
84         Removing doneSemicolon label in the lexer
85         https://bugs.webkit.org/show_bug.cgi?id=45289
86
87         As a side effect of moving the multiline comment parsing
88         to a separate function, an opportunity raised to simplify
89         the single line comment parsing, and removing doneSemicolon
90         label. Slight performance increase on --parse-only
91         tests (from 32.8ms to 31.5ms)
92
93         * parser/Lexer.cpp:
94         (JSC::Lexer::lex):
95
96 2010-09-08  Xan Lopez  <xlopez@igalia.com>
97
98         Reviewed by Alexey Proskuryakov.
99
100         Remove accessor for private member variable in JSParser
101         https://bugs.webkit.org/show_bug.cgi?id=45378
102
103         m_token is private to JSParser, so it does not seem to be useful
104         to have an accessor for it. On top of that, the file was both
105         using the accessor and directly accessing the member variable,
106         only one style should be used.
107
108 2010-09-08  Csaba Osztrogonác  <ossy@webkit.org>
109
110         Reviewed by Oliver Hunt.
111
112         [Qt] REGRESSION(63348): jsc is broken
113         https://bugs.webkit.org/show_bug.cgi?id=42818
114
115         Need fastcall conventions on Qt/Win/MinGW.
116         Based on patches of Gavin Barraclough: r63947 and r63948.
117
118         * jit/JITStubs.cpp:
119         * jit/JITStubs.h:
120
121 2010-09-08  Robert Hogan  <robert@webkit.org>
122
123         Reviewed by Antonio Gomes.
124
125         Remove some unnecessary duplicate calls to string functions
126
127         https://bugs.webkit.org/show_bug.cgi?id=45314
128
129         * wtf/text/WTFString.cpp:
130         (WTF::String::format):
131
132 2010-09-08  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
133
134         Reviewed by Andreas Kling.
135
136         Re-Disable JIT for MSVC 64bit to fix the build on this compiler.
137         https://bugs.webkit.org/show_bug.cgi?id=45382
138
139         It was enabled in the cleanup made in r64176, though it is still
140         not implemented.
141
142         * wtf/Platform.h:
143
144 2010-09-08  Martin Robinson  <mrobinson@igalia.com>
145
146         Reviewed by Xan Lopez.
147
148         [GTK] Need a WebSocket implementation
149         https://bugs.webkit.org/show_bug.cgi?id=45197
150
151         Add a GIO-based WebSocket implementation.
152
153         * wtf/gobject/GRefPtr.cpp: Added PlatformRefPtr support for GSource.
154         (WTF::refPlatformPtr):
155         (WTF::derefPlatformPtr):
156         * wtf/gobject/GRefPtr.h: Added new template specialization declarations.
157         * wtf/gobject/GTypedefs.h: Add some more GLib/GIO forward declarations.
158
159 2010-08-30  Maciej Stachowiak  <mjs@apple.com>
160
161         Reviewed by Darin Adler.
162
163         Handle MediaQueryExp memory management exclusively with smart pointers
164         https://bugs.webkit.org/show_bug.cgi?id=44874
165         
166         Implemented a non-copying sort function to make it possible to sort a Vector
167         of OwnPtrs (which cannot be copied). This is required for the above.
168
169         * wtf/NonCopyingSort.h: Added.
170         (WTF::nonCopyingSort): It's secretly heapsort.
171         (WTF::heapSort): heapsort implementation.
172         (WTF::siftDown): Helper function for heapsort.
173         (WTF::heapify): ditto
174
175         Adjust build systems.
176         
177         * GNUmakefile.am:
178         * JavaScriptCore.gypi:
179         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
180         * JavaScriptCore.xcodeproj/project.pbxproj:
181
182 2010-09-08  Zoltan Herczeg  <zherczeg@webkit.org>
183
184         Reviewed by Darin Adler.
185
186         Refactoring multiline comments in the lexer
187         https://bugs.webkit.org/show_bug.cgi?id=45289
188
189         MultiLine comment parsing is moved to a separate function.
190
191         Slight performance increase on --parse-only tests (from 33.6ms to 32.8ms)
192         SunSpider reports no change (from 523.1ms to 521.2ms).
193
194         * parser/Lexer.cpp:
195         (JSC::Lexer::parseMultilineComment):
196         (JSC::Lexer::lex):
197         * parser/Lexer.h:
198
199 2010-09-07  James Robinson  <jamesr@chromium.org>
200
201         Compile fix attempt for windows.
202
203         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
204
205 2010-09-07  Mihai Parparita  <mihaip@chromium.org>
206
207         Reviewed by James Robinson.
208
209         Fix Windows build after r66936
210         https://bugs.webkit.org/show_bug.cgi?id=45348
211
212         Add symbol names that were missing from r66936.
213
214         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
215
216 2010-09-07  Mihai Parparita  <mihaip@chromium.org>
217
218         Reviewed by Oliver Hunt.
219
220         pushState and replaceState do not clone RegExp objects correctly
221         https://bugs.webkit.org/show_bug.cgi?id=44718
222         
223         Move internal representation of JSC::RegExp (which depends on wether
224         YARR and YARR_JIT is enabled) into RegExpRepresentation which can live
225         in the implementation only. This makes it feasible to use RegExp in
226         WebCore without bringing in all of YARR.
227
228         * JavaScriptCore.exp: Export RegExp and RegExpObject functions that are
229         needed inside WebCore's JSC bindings.
230         * runtime/RegExp.cpp:
231         (JSC::RegExpRepresentation::~RegExpRepresentation):
232         (JSC::RegExp::RegExp):
233         (JSC::RegExp::~RegExp):
234         (JSC::RegExp::compile):
235         (JSC::RegExp::match):
236         * runtime/RegExp.h:
237
238 2010-09-07  Anders Carlsson  <andersca@apple.com>
239
240         Reviewed by Darin Adler.
241
242         <rdar://problem/8381749> -Wcast-align warning emitted when building with clang
243
244         Remove the -Wcast-align-warning since it isn't really useful, and clang is more aggressive about warning than gcc.
245
246         * Configurations/Base.xcconfig:
247
248 2010-09-07  Zoltan Horvath  <zoltan@webkit.org>
249
250         Reviewed by Darin Adler.
251
252         REGRESSION(66741): Undefined pthread macros
253         https://bugs.webkit.org/show_bug.cgi?id=45246
254
255         PTHREAD_MUTEX_NORMAL and PTHREAD_MUTEX_DEFAULT (introduced in r60487) are not defined on Linux, 
256         but used in a statement. Add an additional check to test this.
257
258         * wtf/FastMalloc.cpp:
259         (WTF::TCMalloc_PageHeap::initializeScavenger):
260
261 2010-09-06  Oliver Hunt  <oliver@apple.com>
262
263         Windows build fix
264
265 2010-09-05  Oliver Hunt  <oliver@apple.com>
266
267         Reviewed by Sam Weinig.
268
269         SerializedScriptValue needs to use a flat storage mechanism
270         https://bugs.webkit.org/show_bug.cgi?id=45244
271
272         Export JSArray::put
273
274         * JavaScriptCore.exp:
275
276 2010-09-06  Chao-ying Fu  <fu@mips.com>
277
278         Reviewed by Oliver Hunt.
279
280         Support JSVALUE32_64 on MIPS
281         https://bugs.webkit.org/show_bug.cgi?id=43999
282
283         Add missing functions to support JSVALUE32_64 on MIPS.
284         Remove JSVALUE32 as the default for MIPS.
285
286         * assembler/MIPSAssembler.h:
287         (JSC::MIPSAssembler::divd):
288         (JSC::MIPSAssembler::mthc1):
289         (JSC::MIPSAssembler::cvtwd):
290         * assembler/MacroAssemblerMIPS.h:
291         (JSC::MacroAssemblerMIPS::neg32):
292         (JSC::MacroAssemblerMIPS::branchOr32):
293         (JSC::MacroAssemblerMIPS::set8):
294         (JSC::MacroAssemblerMIPS::loadDouble):
295         (JSC::MacroAssemblerMIPS::divDouble):
296         (JSC::MacroAssemblerMIPS::convertInt32ToDouble):
297         (JSC::MacroAssemblerMIPS::branchDouble):
298         (JSC::MacroAssemblerMIPS::branchConvertDoubleToInt32):
299         (JSC::MacroAssemblerMIPS::zeroDouble):
300         * jit/JIT.h:
301         * jit/JITOpcodes32_64.cpp:
302         (JSC::JIT::privateCompileCTINativeCall):
303         * jit/JITPropertyAccess32_64.cpp:
304         (JSC::JIT::privateCompilePutByIdTransition):
305         * jit/JITStubs.cpp:
306         (JSC::JITThunks::JITThunks):
307         * jit/JITStubs.h:
308         * wtf/Platform.h:
309
310 2010-09-06  Robert Hogan  <robert@webkit.org>
311
312         Unreviewed, compile fix.
313
314         Fix compile failure in r66843
315
316         Revert to original patch in bugzilla. Leave bug open for
317         discussion on potential removal of double utf8 conversion.
318
319         https://bugs.webkit.org/show_bug.cgi?id=45240
320
321         * wtf/text/WTFString.cpp:
322         (WTF::String::format):
323
324 2010-09-06  Robert Hogan  <robert@webkit.org>
325
326         Reviewed by Andreas Kling.
327
328         [Qt] utf8 encoding of console() messages
329
330         Unskip:
331         http/tests/security/xssAuditor/embed-tag-null-char.html
332         http/tests/security/xssAuditor/object-embed-tag-null-char.html
333
334         Both tests failed because Qt's implementation of String::format()
335         is casting a utf8 result to String, which assumes latin1 in
336         its constructor. So instead of casting a QString to a String, use
337         StringImpl::create() instead. Unfortunately, this involves a lot
338         of extra casts but the end result is correct.
339
340         https://bugs.webkit.org/show_bug.cgi?id=45240
341
342         * wtf/text/WTFString.cpp:
343         (WTF::String::format):
344
345 2010-09-03  Alexey Proskuryakov  <ap@apple.com>
346
347         Reviewed by Darin Adler.
348
349         https://bugs.webkit.org/show_bug.cgi?id=45135
350         <rdar://problem/7823714> TCMalloc_PageHeap doesn't hold a mutex while manipulating shared data
351
352         * wtf/FastMalloc.cpp:
353         (WTF::TCMalloc_PageHeap::initializeScavenger): Make sure to create a non-recursive mutex
354         regardless of platform default, so that we can assert that it's held (this is for platforms
355         that don't have libdispatch).
356         (WTF::TCMalloc_PageHeap::signalScavenger): Assert that the mutex is held, so we can look
357         at m_scavengeThreadActive. For platforms that have libdispatch, assert that pageheap_lock
358         is held.
359         (WTF::TCMalloc_PageHeap::periodicScavenge): Make sure that pageheap_lock is held before
360         manipulating m_scavengeThreadActive. Otherwise, there is an obvious race condition, and we
361         can make unbalanced calls to dispatch_resume().
362
363 2010-09-03  Lucas De Marchi  <lucas.demarchi@profusion.mobi>
364
365         Reviewed by Martin Robinson.
366
367         [EFL] Regression (66531) Build break with Glib Support
368         https://bugs.webkit.org/show_bug.cgi?id=45011
369
370         Move GtkTypedefs.h to GTypedefs.h and let it inside gobject directory
371         since when glib is enabled, EFL port needs it, too.
372
373         * CMakeListsEfl.txt: Include gobject directory to find new header
374         file.
375         * GNUmakefile.am: Ditto.
376         * wtf/CMakeListsEfl.txt: Ditto.
377         * wtf/Platform.h: Include header if port is EFL and glib support is
378         enabled.
379         * wtf/gtk/GtkTypedefs.h: Removed.
380         * wtf/gobject/GTypedefs.h: Added. Sections specific to GTK are now
381         guarded by PLATFORM(GTK).
382
383 2010-09-03  Csaba Osztrogonác  <ossy@webkit.org>
384
385         Reviewed by Simon Hausmann.
386
387         Fix warning in wtf/ByteArray.h
388         https://bugs.webkit.org/show_bug.cgi?id=44672
389
390         * wtf/ByteArray.h: Use maximal sized array for MSVC and unsized array for other compilers.
391
392 2010-09-02  Adam Barth  <abarth@webkit.org>
393
394         Reviewed by Eric Seidel.
395
396         Actually parse a URL from ParsedURL
397         https://bugs.webkit.org/show_bug.cgi?id=45080
398
399         This patch only handles standard URLs.  At some point we'll need to
400         distinguish between standard URLs and other kinds of URLs.
401
402         * wtf/url/api/ParsedURL.cpp:
403         (WTF::ParsedURL::ParsedURL):
404
405 2010-09-02  Adam Barth  <abarth@webkit.org>
406
407         Reviewed by Eric Seidel.
408
409         Add ParsedURL and URLString to WTFURL API
410         https://bugs.webkit.org/show_bug.cgi?id=45078
411
412         Currently there's no actual URL parsing going on, but this patch is a
413         start to sketching out the API.
414
415         * JavaScriptCore.xcodeproj/project.pbxproj:
416         * wtf/url/api/ParsedURL.cpp: Added.
417         (WTF::ParsedURL::ParsedURL):
418         (WTF::ParsedURL::scheme):
419         (WTF::ParsedURL::username):
420         (WTF::ParsedURL::password):
421         (WTF::ParsedURL::host):
422         (WTF::ParsedURL::port):
423         (WTF::ParsedURL::path):
424         (WTF::ParsedURL::query):
425         (WTF::ParsedURL::fragment):
426         (WTF::ParsedURL::segment):
427         * wtf/url/api/ParsedURL.h: Added.
428         (WTF::ParsedURL::spec):
429         * wtf/url/api/URLString.h: Added.
430         (WTF::URLString::URLString):
431         (WTF::URLString::string):
432
433 2010-09-02  Adam Barth  <abarth@webkit.org>
434
435         Reviewed by Eric Seidel.
436
437         Add WTFURL to the JavaScriptCore build on Mac
438         https://bugs.webkit.org/show_bug.cgi?id=45075
439
440         Building code is good.
441
442         * JavaScriptCore.xcodeproj/project.pbxproj:
443
444 2010-09-02  Alexey Proskuryakov  <ap@apple.com>
445
446         Reviewed by Oliver Hunt.
447
448         https://bugs.webkit.org/show_bug.cgi?id=43230
449         <rdar://problem/8254215> REGRESSION: Memory leak within JSParser::JSParser
450
451         One can't delete a ThreadSpecific object that has data in it. It's not even possible to
452         enumerate data objects in all threads, much less destroy them from a thread that's destroying
453         the ThreadSpecific.
454
455         * parser/JSParser.cpp:
456         (JSC::JSParser::JSParser):
457         * runtime/JSGlobalData.h: 
458         * wtf/WTFThreadData.cpp:
459         (WTF::WTFThreadData::WTFThreadData):
460         * wtf/WTFThreadData.h:
461         (WTF::WTFThreadData::approximatedStackStart):
462         Moved stack guard tracking from JSGlobalData to WTFThreadData.
463
464         * wtf/ThreadSpecific.h: Made destructor unimplemented. It's dangerous, and we probably won't
465         ever face a situation where we'd want to delete a ThreadSpecific object.
466
467 2010-09-01  Gavin Barraclough  <barraclough@apple.com>
468
469         Rubber stamped by Oliver Hunt.
470
471         Ecma-262 15.11.1.1 states that if the argument is undefined then an
472         Error object's message property should be set to the empty string.
473
474         * runtime/ErrorInstance.cpp:
475         (JSC::ErrorInstance::ErrorInstance):
476         (JSC::ErrorInstance::create):
477         * runtime/ErrorInstance.h:
478         * runtime/ErrorPrototype.cpp:
479         (JSC::ErrorPrototype::ErrorPrototype):
480
481 2010-08-31  Darin Adler  <darin@apple.com>
482
483         Reviewed by Anders Carlsson.
484
485         * wtf/FastMalloc.cpp:
486         (WTF::TCMalloc_PageHeap::scavenge): Replaced somewhat-quirky code that
487         mixed types with code that uses size_t.
488
489         * wtf/TCPageMap.h: Removed names of unused arguments to avoid warning.
490
491 2010-08-31  Martin Robinson  <mrobinson@igalia.com>
492
493         Reviewed by Gustavo Noronha Silva.
494
495         [GTK] Isolate all GTK+ typedefs into one file
496         https://bugs.webkit.org/show_bug.cgi?id=44900
497
498         * GNUmakefile.am: Add GtkTypedefs.h to the source lists.
499         * wtf/Platform.h: #include GtkTypedefs.h for the GTK+ build.
500         * wtf/ThreadingPrimitives.h: Remove GTK+ typedefs.
501         * wtf/gobject/GOwnPtr.h: Ditto.
502         * wtf/gobject/GRefPtr.h: Ditto.
503         * wtf/gtk/GtkTypedefs.h: Added.
504
505 2010-08-31  Martin Robinson  <mrobinson@igalia.com>
506
507         Reviewed by Gustavo Noronha Silva.
508
509         [GTK] Fix 'make dist' in preparation of the 1.3.3 release
510         https://bugs.webkit.org/show_bug.cgi?id=44978
511
512         * GNUmakefile.am: Adding missing headers to the sources list.
513
514 2010-08-31  Chao-ying Fu  <fu@mips.com>
515
516         Reviewed by Oliver Hunt.
517
518         Support emit_op_mod() for MIPS
519         https://bugs.webkit.org/show_bug.cgi?id=42855
520
521         This patch uses MIPS div instructions for op_mod to improve performance.
522
523         * assembler/MIPSAssembler.h:
524         (JSC::MIPSAssembler::div):
525         * jit/JITArithmetic.cpp:
526         (JSC::JIT::emit_op_mod):
527         (JSC::JIT::emitSlow_op_mod):
528
529 2010-08-31  Csaba Osztrogonác  <ossy@webkit.org>
530
531         Reviewed by Darin Adler.
532
533         Modify ASSERT_UNUSED and UNUSED_PARAM similar to Qt's Q_UNUSED.
534         https://bugs.webkit.org/show_bug.cgi?id=44870
535
536         * wtf/Assertions.h:
537         * wtf/UnusedParam.h:
538
539 2010-08-31  Benjamin Poulain  <benjamin.poulain@nokia.com>
540
541         Reviewed by Kenneth Rohde Christiansen.
542
543         JSC TimeoutChecker::didTimeOut overflows on ARM
544         https://bugs.webkit.org/show_bug.cgi?id=38538
545
546         Make getCPUTime() return values relative to the first call.
547         The previous implementation relied on simply on currentTime(), which
548         return a time since epoch and not a time since the thread started. This
549         made the return value of getCPUTime() overflow on 32 bits.
550
551         * runtime/TimeoutChecker.cpp:
552         (JSC::getCPUTime):
553
554 2010-08-30  Mihai Parparita  <mihaip@chromium.org>
555
556         Reviewed by Adam Barth.
557
558         HISTORY_ALWAYS_ASYNC should be removed (history should always be async)
559         https://bugs.webkit.org/show_bug.cgi?id=44315
560
561         Remove ENABLE_HISTORY_ALWAYS_ASYNC #define.
562
563         * wtf/Platform.h: 
564
565 2010-08-30  Chris Rogers  <crogers@google.com>
566
567         Reviewed by Kenneth Russell.
568
569         Fix namespace for wtf/Complex.h and wtf/Vector3.h
570         https://bugs.webkit.org/show_bug.cgi?id=44892
571
572         * wtf/Complex.h:
573         * wtf/Vector3.h:
574
575 2010-08-30  Andy Estes  <aestes@apple.com>
576
577         Reviewed by Eric Carlson.
578
579         Strings returned by asciiDebug() should be NULL-terminated.
580         https://bugs.webkit.org/show_bug.cgi?id=44866
581
582         * wtf/text/WTFString.cpp:
583         (asciiDebug):
584
585 2010-08-30  Zoltan Herczeg  <zherczeg@webkit.org>
586
587         Reviewed by Darin Adler.
588
589         Refactor number parsing in the lexer
590         https://bugs.webkit.org/show_bug.cgi?id=44104
591
592         Number parsing was full of gotos, and needed a complete
593         redesign to remove them (Only one remained). Furthermore
594         integer arithmetic is empolyed for fast cases (= small
595         integer numbers).
596
597         * parser/Lexer.cpp:
598         (JSC::Lexer::parseHex):
599         (JSC::Lexer::parseOctal):
600         (JSC::Lexer::parseDecimal):
601         (JSC::Lexer::parseNumberAfterDecimalPoint):
602         (JSC::Lexer::parseNumberAfterExponentIndicator):
603         (JSC::Lexer::lex):
604         * parser/Lexer.h:
605
606 2010-08-29  Darin Adler  <darin@apple.com>
607
608         Fix Qt build.
609
610         * wtf/unicode/glib/UnicodeMacrosFromICU.h: Added U_IS_BMP.
611         * wtf/unicode/qt4/UnicodeQt4.h: Ditto.
612         * wtf/unicode/wince/UnicodeWince.h: Ditto.
613
614 2010-08-29  Kwang Yul Seo  <skyul@company100.net>
615
616         Reviewed by Kent Tamura.
617
618         [BREWMP] Port vprintf_stderr_common
619         https://bugs.webkit.org/show_bug.cgi?id=33568
620
621         Use BREW's DBGPRINTF to output debug messages.
622
623         * wtf/Assertions.cpp:
624
625 2010-08-28  Gavin Barraclough  <barraclough@apple.com>
626
627         Reviewed by Oliver Hunt.
628
629         Bug 44830 - In Array's prototype functyions we're incorrectly handing large index values
630
631         We are in places casting doubles to unsigneds, and unsigneds to ints, without always check
632         that the result is within bounds. This is problematic in the case of double-to-unsigned
633         conversion because we should be saturating to array length.
634
635         Also, the error return value from Array.splice should be [], not undefined.
636
637         I don't see any security concerns here. These methods are spec'ed in such a way that they
638         can be applied to non Array objects, so in all cases the (potentially bogus) indices are
639         being passed to functions that will safely check accesses are within bounds.
640
641         * runtime/ArrayPrototype.cpp:
642         (JSC::argumentClampedIndexFromStartOrEnd):
643         (JSC::arrayProtoFuncJoin):
644         (JSC::arrayProtoFuncConcat):
645         (JSC::arrayProtoFuncReverse):
646         (JSC::arrayProtoFuncShift):
647         (JSC::arrayProtoFuncSlice):
648         (JSC::arrayProtoFuncSort):
649         (JSC::arrayProtoFuncSplice):
650         (JSC::arrayProtoFuncUnShift):
651         (JSC::arrayProtoFuncFilter):
652         (JSC::arrayProtoFuncMap):
653         (JSC::arrayProtoFuncEvery):
654         (JSC::arrayProtoFuncForEach):
655         (JSC::arrayProtoFuncSome):
656         (JSC::arrayProtoFuncReduce):
657         (JSC::arrayProtoFuncReduceRight):
658         (JSC::arrayProtoFuncIndexOf):
659         (JSC::arrayProtoFuncLastIndexOf):
660         * runtime/JSValue.h:
661         (JSC::JSValue::toUInt32):
662
663 2010-08-28  Pratik Solanki  <psolanki@apple.com>
664
665         Reviewed by Dan Bernstein.
666
667         Add an ENABLE define for purgeable memory support
668         https://bugs.webkit.org/show_bug.cgi?id=44777
669
670         * wtf/Platform.h:
671
672 2010-08-27  Kimmo Kinnunen  <kimmo.t.kinnunen@nokia.com>
673
674         Reviewed by Kenneth Rohde Christiansen.
675
676         [Qt] NPAPI Plugin metadata should be cached, and loading a plugin should not require loading every plugin
677         https://bugs.webkit.org/show_bug.cgi?id=43179
678
679         Add ENABLE_NETSCAPE_PLUGIN_METADATA_CACHE flag to enable persistent
680         NPAPI Plugin Cache. The flag is enabled by default.
681
682         * wtf/Platform.h: Add ENABLE_NETSCAPE_PLUGIN_METADATA_CACHE
683
684 2010-07-27  Jer Noble  <jer.noble@apple.com>
685
686         Reviewed by Eric Carlson.
687
688         Add JavaScript API to allow a page to go fullscreen.
689         rdar://problem/6867795
690         https://bugs.webkit.org/show_bug.cgi?id=43099
691
692         * wtf/Platform.h: Enable FULLSCREEN_API mode for the Mac (except iOS).
693
694 2010-08-27  Gavin Barraclough  <barraclough@apple.com>
695
696         Windows build fix pt 2.
697
698         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
699
700 2010-08-27  Gavin Barraclough  <barraclough@apple.com>
701
702         Windows build fix pt 1.
703
704         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
705
706 2010-08-27  Gavin Barraclough  <barraclough@apple.com>
707
708         Reviewed by Oliver Hunt.
709
710         Bug 44745 - Number.toFixed/toExponential/toPrecision are inaccurate.
711
712         These methods should be using a version of dtoa that can generate results accurate
713         to the requested precision, whereas our version of dtoa is only currently able to
714         support producing results sufficiently accurate to distinguish the value from any
715         other IEEE-754 double precision number.
716
717         This change has no impact on benchmarks we track.
718
719         On microbenchmarks for these functions, this is a slight regression where a high
720         precision is requested (dtoa now need to iterate further to generate a a greater
721         number of digits), but with smaller precision values (hopefully more common) this
722         improves performance, since it reduced the accurate of result dtoa is required,
723         to produce, and removes the need to pre-round values before calling dtoa. 
724
725         * JavaScriptCore.exp:
726             doubleToStringInJavaScriptFormat renamed to numberToString
727
728         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
729             doubleToStringInJavaScriptFormat renamed to numberToString
730
731         * runtime/UString.cpp:
732         (JSC::UString::number):
733             doubleToStringInJavaScriptFormat renamed to numberToString
734
735         * wtf/DecimalNumber.h:
736         (WTF::DecimalNumber::DecimalNumber):
737         (WTF::DecimalNumber::toStringDecimal):
738         (WTF::DecimalNumber::toStringExponential):
739             Remove all pre-rounding of values, instead call dtoa correctly.
740
741         * wtf/dtoa.cpp:
742         (WTF::dtoa):
743         * wtf/dtoa.h:
744             Reenable support for rounding to specific-figures/decimal-places in dtoa.
745             Modify to remove unbiased rounding, provide ECMA required away-from-zero.
746             Rewrite doubleToStringInJavaScriptFormat to use DecimalNumber, rename to
747             numberToString.
748
749 2010-08-27  Chao-ying Fu  <fu@mips.com>
750
751         Reviewed by Oliver Hunt.
752
753         Byte alignment issue on MIPS
754         https://bugs.webkit.org/show_bug.cgi?id=29415
755
756         MIPS accesses one byte at a time for now to avoid the help from the
757         kernel to fix unaligned accesses.
758
759         * wtf/text/AtomicString.cpp:
760         (WebCore::equal):
761         * wtf/text/StringHash.h:
762         (WebCore::StringHash::equal):
763
764 2010-08-27  Xan Lopez  <xlopez@igalia.com>
765
766         Reviewed by Tor Arne Vestbø.
767
768         Fix a couple of typos in comment.
769
770         * bytecode/CodeBlock.h:
771
772 2010-08-26  Gavin Barraclough  <barraclough@apple.com>
773
774         Windows build fix.
775
776         * wtf/dtoa.cpp:
777
778 2010-08-26  Gavin Barraclough  <baraclough@apple.com>
779
780         Reviewed by Sam Weinig.
781
782         Bug 44735 - Clean up dtoa.cpp
783         Remove unused & unmaintained code paths, reformat code to match
784         coding standard & use platform #defines from Platform.h directly.
785
786         * wtf/dtoa.cpp:
787         (WTF::storeInc):
788         (WTF::multadd):
789         (WTF::s2b):
790         (WTF::lo0bits):
791         (WTF::mult):
792         (WTF::pow5mult):
793         (WTF::lshift):
794         (WTF::diff):
795         (WTF::ulp):
796         (WTF::b2d):
797         (WTF::d2b):
798         (WTF::ratio):
799         (WTF::):
800         (WTF::strtod):
801         (WTF::quorem):
802         (WTF::dtoa):
803
804 2010-08-26  Gavin Barraclough  <barraclough@apple.com>
805
806         Rubber Stamped by Oliver Hunt.
807
808         Partially revert r65959. The toString changes regressed the v8 tests,
809         but keep the toFixed/toExponential/toPrecision changes.
810
811         * JavaScriptCore.exp:
812         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
813         * runtime/NumberPrototype.cpp:
814         * runtime/UString.cpp:
815         (JSC::UString::number):
816         * wtf/DecimalNumber.h:
817         * wtf/dtoa.cpp:
818         (WTF::append):
819         (WTF::doubleToStringInJavaScriptFormat):
820         * wtf/dtoa.h:
821         * wtf/text/WTFString.cpp:
822         * wtf/text/WTFString.h:
823
824 2010-08-26  James Robinson  <jamesr@chromium.org>
825
826         Reviewed by Darin Fisher.
827
828         [chromium] Remove the USE(GLES2_RENDERING) define and associated code
829         https://bugs.webkit.org/show_bug.cgi?id=43761
830
831         Remove WTF_USE_GLES2_RENDERING from the list of defines in chromium, it's unused.
832
833         * wtf/Platform.h:
834
835 2010-08-26  Gavin Barraclough  <barraclough@apple.com>
836
837         Rolling out r64608, this regressed performance.
838
839         * JavaScriptCore.xcodeproj/project.pbxproj:
840         * assembler/ARMAssembler.cpp:
841         (JSC::ARMAssembler::executableCopy):
842         * assembler/LinkBuffer.h:
843         (JSC::LinkBuffer::LinkBuffer):
844         (JSC::LinkBuffer::~LinkBuffer):
845         (JSC::LinkBuffer::performFinalization):
846         * assembler/MIPSAssembler.h:
847         (JSC::MIPSAssembler::executableCopy):
848         * assembler/X86Assembler.h:
849         (JSC::X86Assembler::executableCopy):
850         * bytecode/StructureStubInfo.h:
851         (JSC::StructureStubInfo::initGetByIdProto):
852         (JSC::StructureStubInfo::initGetByIdChain):
853         (JSC::StructureStubInfo::initGetByIdSelfList):
854         (JSC::StructureStubInfo::initGetByIdProtoList):
855         (JSC::StructureStubInfo::initPutByIdTransition):
856         * jit/ExecutableAllocator.cpp:
857         (JSC::ExecutablePool::systemAlloc):
858         * jit/ExecutableAllocator.h:
859         (JSC::ExecutablePool::create):
860         (JSC::ExecutableAllocator::ExecutableAllocator):
861         (JSC::ExecutableAllocator::poolForSize):
862         (JSC::ExecutablePool::ExecutablePool):
863         (JSC::ExecutablePool::poolAllocate):
864         * jit/ExecutableAllocatorFixedVMPool.cpp:
865         (JSC::FixedVMPoolAllocator::allocInternal):
866         * jit/JIT.cpp:
867         (JSC::JIT::privateCompile):
868         * jit/JIT.h:
869         (JSC::JIT::compileGetByIdProto):
870         (JSC::JIT::compileGetByIdSelfList):
871         (JSC::JIT::compileGetByIdProtoList):
872         (JSC::JIT::compileGetByIdChainList):
873         (JSC::JIT::compileGetByIdChain):
874         (JSC::JIT::compilePutByIdTransition):
875         (JSC::JIT::compilePatchGetArrayLength):
876         * jit/JITOpcodes.cpp:
877         (JSC::JIT::privateCompileCTIMachineTrampolines):
878         * jit/JITOpcodes32_64.cpp:
879         (JSC::JIT::privateCompileCTIMachineTrampolines):
880         (JSC::JIT::privateCompileCTINativeCall):
881         * jit/JITPropertyAccess.cpp:
882         (JSC::JIT::stringGetByValStubGenerator):
883         (JSC::JIT::privateCompilePutByIdTransition):
884         (JSC::JIT::privateCompilePatchGetArrayLength):
885         (JSC::JIT::privateCompileGetByIdProto):
886         (JSC::JIT::privateCompileGetByIdSelfList):
887         (JSC::JIT::privateCompileGetByIdProtoList):
888         (JSC::JIT::privateCompileGetByIdChainList):
889         (JSC::JIT::privateCompileGetByIdChain):
890         * jit/JITPropertyAccess32_64.cpp:
891         (JSC::JIT::stringGetByValStubGenerator):
892         (JSC::JIT::privateCompilePutByIdTransition):
893         (JSC::JIT::privateCompilePatchGetArrayLength):
894         (JSC::JIT::privateCompileGetByIdProto):
895         (JSC::JIT::privateCompileGetByIdSelfList):
896         (JSC::JIT::privateCompileGetByIdProtoList):
897         (JSC::JIT::privateCompileGetByIdChainList):
898         (JSC::JIT::privateCompileGetByIdChain):
899         * jit/JITStubs.cpp:
900         (JSC::JITThunks::tryCachePutByID):
901         (JSC::JITThunks::tryCacheGetByID):
902         (JSC::DEFINE_STUB_FUNCTION):
903         (JSC::getPolymorphicAccessStructureListSlot):
904         * jit/JITStubs.h:
905         * jit/SpecializedThunkJIT.h:
906         (JSC::SpecializedThunkJIT::finalize):
907         * runtime/ExceptionHelpers.cpp:
908         * runtime/ExceptionHelpers.h:
909         * runtime/Executable.cpp:
910         (JSC::EvalExecutable::compileInternal):
911         (JSC::ProgramExecutable::compileInternal):
912         (JSC::FunctionExecutable::compileForCallInternal):
913         (JSC::FunctionExecutable::compileForConstructInternal):
914         (JSC::FunctionExecutable::reparseExceptionInfo):
915         (JSC::EvalExecutable::reparseExceptionInfo):
916         * yarr/RegexJIT.cpp:
917         (JSC::Yarr::RegexGenerator::compile):
918
919 2010-08-26  Gavin Barraclough  <barraclough@apple.com>
920
921         Reviewed by Brady Eidson.
922
923         Bug 44655 - Add debug only convenience methods to obtain a Vector<char> from a String/StringImpl.
924
925         * wtf/text/WTFString.cpp:
926         (asciiDebug):
927             Return a Vector<char> containing the contents of a string as ASCII.
928
929 2010-08-26  Sam Weinig  <sam@webkit.org>
930
931         Reviewed by Darin Adler.
932
933         Add PassOwnArrayPtr
934         https://bugs.webkit.org/show_bug.cgi?id=44627
935
936         * GNUmakefile.am:
937         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
938         * JavaScriptCore.xcodeproj/project.pbxproj:
939         Add the new files.
940
941         * wtf/Forward.h:
942         Forward declare PassOwnArrayPtr.
943         
944         * wtf/OwnArrayPtr.h:
945         Mimic the OwnPtr interface.
946
947         * wtf/OwnArrayPtrCommon.h: Added.
948         (WTF::deleteOwnedArrayPtr):
949         Move delete function here so it can be shared by OwnArrayPtr and
950         PassOwnArrayPtr.
951
952         * wtf/PassOwnArrayPtr.h: Added.
953         Mimic the PassOwnPtr interface.
954
955 2010-08-26  Oliver Hunt  <oliver@apple.com>
956
957         Reviewed by Gavin Barraclough.
958
959         [JSC] JavaScript parsing error when loading Equifax web page
960         https://bugs.webkit.org/show_bug.cgi?id=42900
961
962         '-->' is ostensibly only meant to occur when there is only
963         whitespace preceeding it on the line.  However firefox treats
964         multiline comments as a space character, so they are allowed.
965         One side effect of the firefox model is that any line terminators
966         inside the multiline comment are ignored, so
967
968             foo/*
969             */-->
970
971         is treated as
972
973             foo -->
974
975         and so '-->' will not be a comment in this case.  Happily this simply
976         means that to fix this issue all we need to do is stop updating
977         m_atLineStart when handling multiline comments.
978
979         * parser/Lexer.cpp:
980         (JSC::Lexer::lex):
981
982 2010-08-25  Oliver Hunt  <oliver@apple.com>
983
984         Reviewed by Geoffrey Garen.
985
986         Improve overflow handling in StringImpl::Replace
987         https://bugs.webkit.org/show_bug.cgi?id=42502
988         <rdar://problem/8203794>
989
990         Harden StringImpl::replace against overflow -- I can't see how this
991         could be abused, but it's better to be safe than sorry.
992
993         * wtf/text/StringImpl.cpp:
994         (WTF::StringImpl::replace):
995
996 2010-08-26  Martin Robinson  <mrobinson@igalia.com>
997
998         Reviewed by Xan Lopez.
999
1000         [GTK] The GNUmakefile.am files contain a myriad of confusing preprocessor and compiler flag definitions
1001         https://bugs.webkit.org/show_bug.cgi?id=44624
1002
1003         Clean up GNUmakefile.am.
1004
1005         * GNUmakefile.am: Alphabetize the include order in javascriptcore_cppflags. Move
1006         a couple include lines from the top-level GNUmakefile.am.
1007
1008 2010-08-25  Xan Lopez  <xlopez@igalia.com>
1009
1010         Reviewed by Kent Tamura.
1011
1012         Local variables 'k' and 'y' in s2b() in dtoa.cpp are computed but not used
1013         https://bugs.webkit.org/show_bug.cgi?id=29259
1014
1015         Remove unused code in dtoa.cpp, spotted by Wan-Teh Chang.
1016
1017         * wtf/dtoa.cpp:
1018         (WTF::s2b):
1019
1020 2010-08-25  Kwang Yul Seo  <skyul@company100.net>
1021
1022         Reviewed by Kevin Ollivier.
1023
1024         [BREWMP] Add build system
1025         https://bugs.webkit.org/show_bug.cgi?id=44645
1026
1027         Make waf script portable so that we can add more ports.
1028
1029         * wscript:
1030
1031 2010-08-25  Michael Saboff  <msaboff@apple.com>
1032
1033         Reviewed by Sam Weinig.
1034
1035         Remove the single entry regular expression cache introduced as part of
1036         the fix for https://bugs.webkit.org/show_bug.cgi?id=41238.
1037         The performance problem in Dromaeo that initiated that bug is no 
1038         longer present. Dromaeo has been modified so that the regular
1039         expression tests are somewhat random and don't benefit from a
1040         single entry cache.
1041
1042         * runtime/RegExp.cpp:
1043         (JSC::RegExp::RegExp):
1044         (JSC::RegExp::match):
1045         * runtime/RegExp.h:
1046
1047 2010-08-25  Martin Robinson  <mrobinson@igalia.com>
1048
1049         Reviewed by Gustavo Noronha Silva.
1050
1051         Cairo and EFL port shouldn't depend on glib.
1052         https://bugs.webkit.org/show_bug.cgi?id=44354
1053
1054         Replace GRefPtr with PlatformRefPtr. Keep GLib specific bits in
1055         GRefPtr.h.
1056
1057         * GNUmakefile.am: Add PlatformRefPtr.h to the source list.
1058         * wtf/PlatformRefPtr.h: Migrated from GRefPtr.h.
1059         (WTF::PlatformRefPtr::PlatformRefPtr): Ditto.
1060         (WTF::PlatformRefPtr::~PlatformRefPtr): Ditto.
1061         (WTF::PlatformRefPtr::clear): Ditto.
1062         (WTF::PlatformRefPtr::get): Ditto.
1063         (WTF::PlatformRefPtr::operator*): Ditto.
1064         (WTF::PlatformRefPtr::operator->): Ditto.
1065         (WTF::PlatformRefPtr::operator!): Ditto.
1066         (WTF::PlatformRefPtr::operator UnspecifiedBoolType): Ditto.
1067         (WTF::PlatformRefPtr::hashTableDeletedValue): Ditto.
1068         (WTF::::operator): Ditto.
1069         (WTF::::swap): Ditto.
1070         (WTF::swap): Ditto.
1071         (WTF::operator==): Ditto.
1072         (WTF::operator!=): Ditto.
1073         (WTF::static_pointer_cast): Ditto.
1074         (WTF::const_pointer_cast): Ditto.
1075         (WTF::getPtr): Ditto.
1076         (WTF::adoptPlatformRef): Ditto.
1077         * wtf/gobject/GRefPtr.cpp: Changes to reflect new names.
1078         (WTF::refPlatformPtr):
1079         (WTF::derefPlatformPtr):
1080         * wtf/gobject/GRefPtr.h: Ditto.
1081         (WTF::refPlatformPtr):
1082         (WTF::derefPlatformPtr):
1083
1084 2010-08-25  Xan Lopez  <xlopez@igalia.com>
1085
1086         Reviewed by Alexey Proskuryakov.
1087
1088         Remove dead code in JSGlobalObject
1089         https://bugs.webkit.org/show_bug.cgi?id=44615
1090
1091         The recursion data member in the JSGlobalObject and its getter
1092         plus inc/dec methods seems to be unused, remove them.
1093
1094         * runtime/JSGlobalObject.cpp:
1095         (JSC::JSGlobalObject::init):
1096         * runtime/JSGlobalObject.h:
1097
1098 2010-08-25  Michael Saboff  <msaboff@apple.com>
1099
1100         Reviewed by Geoffrey Garen.
1101
1102         Changed the initial and subsequent allocation of vector storage to
1103         Array()s. The changes are to limit sparse arrays to 100000 entries
1104         and fixed the sparse map to vector storage conversion to use the 
1105         minimum amount of memory needed to store the current number of entries.
1106         These changes address https://bugs.webkit.org/show_bug.cgi?id=43707
1107
1108         * runtime/JSArray.cpp:
1109         (JSC::JSArray::putSlowCase):
1110         (JSC::JSArray::getNewVectorLength):
1111
1112 2010-08-16  Gabor Loki  <loki@webkit.org>
1113
1114         Reviewed by Gavin Barraclough.
1115
1116         Avoid increasing required alignment of target type warning
1117         https://bugs.webkit.org/show_bug.cgi?id=43963
1118
1119         Fix platform independent alignment warnings.
1120
1121         * wtf/ListHashSet.h:
1122         (WTF::ListHashSetNodeAllocator::pool):
1123
1124 2010-08-19  Gabor Loki  <loki@webkit.org>
1125
1126         Reviewed by Gavin Barraclough.
1127
1128         Enable truncated floating point feature on ARM
1129         https://bugs.webkit.org/show_bug.cgi?id=44233
1130
1131         Enable truncated floating point feature with the help of VCVTR.S32.F64
1132         instruction. If VCVTR.S32.F64 can't fit the result into a 32-bit
1133         integer/register, it saturates at INT_MAX or INT_MIN. Testing this
1134         looks quicker than testing FPSCR for exception.
1135
1136         Inspired by Jacob Bramley's patch from JaegerMonkey
1137
1138         * assembler/ARMAssembler.h:
1139         (JSC::ARMAssembler::):
1140         (JSC::ARMAssembler::cmn_r):
1141         (JSC::ARMAssembler::vcvtr_s32_f64_r):
1142         * assembler/MacroAssemblerARM.h:
1143         (JSC::MacroAssemblerARM::supportsFloatingPointTruncate):
1144         (JSC::MacroAssemblerARM::branchTruncateDoubleToInt32):
1145
1146 2010-08-24  Gavin Barraclough  <barraclough@apple.com>
1147
1148         Windows build fix.
1149
1150         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1151
1152 2010-08-24  Gavin Barraclough  <barraclough@apple.com>
1153
1154         Windows build fix.
1155
1156         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1157         * wtf/DecimalNumber.h:
1158         (WTF::DecimalNumber::intPow10):
1159         * wtf/dtoa.cpp:
1160         * wtf/dtoa.h:
1161
1162 2010-08-23  Gavin Barraclough  <barraclough@apple.com>
1163
1164         Reviewed by Oliver Hunt.
1165
1166         https://bugs.webkit.org/show_bug.cgi?id=44487
1167
1168         Number.toExponential/toFixed/toPrecision all contain a spaghetti of duplicated
1169         code & unnecessary complexity. Add a new DecimalNumber class to encapsulate
1170         double to string conversion, share the implementations of rounding &
1171         decimal-fraction/exponential formatting.
1172
1173         * JavaScriptCore.exp:
1174             Update exports.
1175
1176         * runtime/NumberPrototype.cpp:
1177         (JSC::toThisNumber):
1178         (JSC::getIntegerArgumentInRange):
1179             Helper methods used in implementing toExponential/toFixed/toString.
1180         (JSC::numberProtoFuncToExponential):
1181         (JSC::numberProtoFuncToFixed):
1182         (JSC::numberProtoFuncToPrecision):
1183             Reimplemented using new DecimalNumber class.
1184             
1185         * runtime/UString.cpp:
1186         (JSC::UString::number):
1187             Updated to call numberToString.
1188
1189         * wtf/DecimalNumber.h: Added.
1190         (WTF::):
1191         (WTF::DecimalNumber::DecimalNumber):
1192         (WTF::DecimalNumber::toStringDecimal):
1193         (WTF::DecimalNumber::toStringExponential):
1194         (WTF::DecimalNumber::sign):
1195         (WTF::DecimalNumber::exponent):
1196         (WTF::DecimalNumber::significand):
1197         (WTF::DecimalNumber::precision):
1198         (WTF::DecimalNumber::init):
1199         (WTF::DecimalNumber::isZero):
1200         (WTF::DecimalNumber::roundToPrecision):
1201             New class to perform double to string conversion.
1202             Has three constructors, which allow conversion with no rounding,
1203             rounding to significant-figures, or rounding to decimal-places,
1204             and two methods for formatting strings, either using decimal
1205             fraction or exponential encoding. Internal implementation uses
1206             pre-rounding of the values before calling dtoa rather than
1207             relying on dtoa to correctly round, which does not produce
1208             fully accurate results. Hopefully we can address this in the
1209             near future.
1210
1211         * wtf/dtoa.cpp:
1212         (WTF::intPow10):
1213         * wtf/dtoa.h:
1214             intPow10 is used internally by DecimalNumber.
1215             
1216         * wtf/text/WTFString.cpp:
1217         (WTF::copyToString):
1218         (WTF::nanOrInfToString):
1219             Used internally in numberToString for NaN/Infinity handling.
1220         (WTF::numberToString):
1221             Added new method to convert doubles to strings.
1222
1223         * wtf/text/WTFString.h:
1224             Added declaration for numberToString. This is here because
1225             we should switch over to using this for all double to string
1226             conversion in WebCore (see section 2.4.4.3 of the HTML5 spec).
1227
1228 2010-08-24  Oliver Hunt  <oliver@apple.com>
1229
1230         Reviewed by Geoff Garen.
1231
1232         Don't seed the JS random number generator from time()
1233         https://bugs.webkit.org/show_bug.cgi?id=41868
1234         <rdar://problem/8171025>
1235
1236         Switch to using the secure random number generator to
1237         seed the fast random generator, and make the generator
1238         be per global object.
1239
1240         * runtime/JSGlobalData.cpp:
1241         (JSC::JSGlobalData::JSGlobalData):
1242         * runtime/JSGlobalData.h:
1243         * runtime/JSGlobalObject.h:
1244         (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData):
1245         (JSC::JSGlobalObject::weakRandomNumber):
1246         * runtime/MathObject.cpp:
1247         (JSC::mathProtoFuncRandom):
1248
1249 2010-08-24  Oliver Hunt  <oliver@apple.com>
1250
1251         Reviewed by Beth Dakin.
1252
1253         Make overflow guards in UString::utf8 explicit
1254         https://bugs.webkit.org/show_bug.cgi?id=44540
1255
1256         Add an explicit overflow check prior to allocating our buffer,
1257         rather than implicitly relying on the guard in convertUTF16ToUTF8.
1258
1259         * runtime/UString.cpp:
1260         (JSC::UString::utf8):
1261
1262 2010-08-24  Yael Aharon  <yael.aharon@nokia.com>
1263
1264         Reviewed by Simon Hausmann.
1265
1266         [Symbian] Fix commit/decommit of system memory using RChunk
1267
1268         Swap accidentially reversed start and m_base values for determining the
1269         offset within the RChunk.
1270
1271         * wtf/PageReservation.h:
1272         (WTF::PageReservation::systemCommit):
1273         (WTF::PageReservation::systemDecommit):
1274
1275 2010-08-23  Patrick Gansterer  <paroga@paroga.com>
1276
1277         Rubber-stamped by Gabor Loki.
1278
1279         [WINCE] Buildfix for GeneratedJITStubs after r64818
1280         https://bugs.webkit.org/show_bug.cgi?id=44469
1281
1282         Use " THUNK_RETURN_ADDRESS_OFFSET" instead of "#offset#".
1283
1284         * jit/JITStubs.cpp:
1285
1286 2010-08-23  Oliver Hunt  <oliver@apple.com>
1287
1288         Reviewed by Darin Adler.
1289
1290         [REGRESSION] Interpreter incorrectly excludes prototype chain when validating put_by_id_transition
1291         https://bugs.webkit.org/show_bug.cgi?id=44240
1292         <rdar://problem/8328995>
1293
1294         Fix an error I introduced when cleaning up the interpreter side of the logic
1295         to prevent setters being called in object initialisers.
1296
1297         * interpreter/Interpreter.cpp:
1298         (JSC::Interpreter::privateExecute):
1299
1300 2010-08-23  Michael Saboff  <msaboff@apple.com>
1301
1302         Reviewed by Oliver Hunt.
1303
1304         Fixed case where a single character search string in a string.replace()
1305         did not properly handle back reference replacement.  The fix is to 
1306         check for a '$' as part of the check to see if we can execute the
1307         single character replace optimization.
1308         https://bugs.webkit.org/show_bug.cgi?id=44067
1309
1310         * runtime/StringPrototype.cpp:
1311         (JSC::stringProtoFuncReplace):
1312
1313 2010-08-23  Oliver Hunt  <oliver@apple.com>
1314
1315         Reviewed by Gavin Barraclough.
1316
1317         JSON.stringify is much slower than Firefox on particular pathological input
1318         https://bugs.webkit.org/show_bug.cgi?id=44456
1319
1320         Make StringBuilder::reserveCapacity reserve additional space so we don't end up
1321         repeatedly copying the entire result string.
1322
1323         * runtime/StringBuilder.h:
1324         (JSC::StringBuilder::append):
1325         (JSC::StringBuilder::reserveCapacity):
1326
1327 2010-08-23  Jian Li  <jianli@chromium.org>
1328
1329         Reviewed by Darin Fisher.
1330
1331         Handle blob resource.
1332         https://bugs.webkit.org/show_bug.cgi?id=43941
1333
1334         * JavaScriptCore.exp: Add an export that is neede by BlobResourceHandle.
1335
1336 2010-08-19  Andreas Kling  <andreas.kling@nokia.com>
1337
1338         Reviewed by Geoffrey Garen.
1339
1340         JSC: Move the static_cast into to(U)Int32 fast case
1341         https://bugs.webkit.org/show_bug.cgi?id=44037
1342
1343         Do the static_cast<(u)int32_t> inline to avoid the function call overhead
1344         for easily converted values (within (u)int32_t range.)
1345
1346         * runtime/JSValue.cpp:
1347         (JSC::toInt32SlowCase):
1348         (JSC::toUInt32SlowCase):
1349         * runtime/JSValue.h:
1350         (JSC::JSValue::toInt32):
1351         (JSC::JSValue::toUInt32):
1352
1353 2010-08-18  Andreas Kling  <andreas.kling@nokia.com>
1354
1355         Reviewed by Geoffrey Garen.
1356
1357         REGRESSION(r58469): Math.pow() always returns double-backed JSValue which is extremely slow as array subscript
1358         https://bugs.webkit.org/show_bug.cgi?id=43742
1359
1360         Add codegen for pow() to return Int32 values when possible.
1361
1362         * jit/ThunkGenerators.cpp:
1363         (JSC::powThunkGenerator):
1364
1365 2010-08-18  Gabor Loki  <loki@webkit.org>
1366
1367         Reviewed by Gavin Barraclough.
1368
1369         The JITStackFrame is wrong using Thumb-2 JIT with JSVALUE32_64
1370         https://bugs.webkit.org/show_bug.cgi?id=43897
1371
1372         A 64 bits wide member in a structure is aligned to 8 bytes on ARM by
1373         default, but this is not taken into account in the offset defines of
1374         JITStackFrame.
1375
1376         * jit/JITStubs.cpp:
1377         * jit/JITStubs.h:
1378
1379 2010-08-18  Gavin Barraclough  <barraclough@apple.com>
1380
1381         Rubber stamped by Sam Weinig.
1382
1383         Rename UString::substr to substringSharingImpl, add to WTF::String.
1384         Now WTF::String can do everything that JSC::UString can do!
1385
1386         * JavaScriptCore.exp:
1387         * bytecode/CodeBlock.cpp:
1388         (JSC::escapeQuotes):
1389         * bytecompiler/NodesCodegen.cpp:
1390         (JSC::substitute):
1391         * parser/SourceProvider.h:
1392         (JSC::UStringSourceProvider::getRange):
1393         * runtime/FunctionPrototype.cpp:
1394         (JSC::insertSemicolonIfNeeded):
1395         * runtime/JSGlobalObjectFunctions.cpp:
1396         (JSC::parseInt):
1397         * runtime/JSONObject.cpp:
1398         (JSC::gap):
1399         (JSC::Stringifier::indent):
1400         (JSC::Stringifier::unindent):
1401         * runtime/JSString.cpp:
1402         (JSC::JSString::replaceCharacter):
1403         * runtime/NumberPrototype.cpp:
1404         (JSC::numberProtoFuncToFixed):
1405         (JSC::numberProtoFuncToPrecision):
1406         * runtime/StringPrototype.cpp:
1407         (JSC::stringProtoFuncReplace):
1408         (JSC::trimString):
1409         * runtime/UString.cpp:
1410         (JSC::UString::substringSharingImpl):
1411         * runtime/UString.h:
1412         * wtf/text/WTFString.cpp:
1413         (WTF::String::substringSharingImpl):
1414         * wtf/text/WTFString.h:
1415
1416 2010-08-18  Gavin Barraclough  <barraclough@apple.com>
1417
1418         Windows build fix.
1419
1420         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1421         * JavaScriptCore.xcodeproj/project.pbxproj:
1422
1423 2010-08-18  Gavin Barraclough  <barraclough@apple.com>
1424
1425         Windows build fix.
1426
1427         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1428         * JavaScriptCore.xcodeproj/project.pbxproj:
1429
1430 2010-08-17  Gavin Barraclough  <barraclough@apple.com>
1431
1432         Reviewed by Sam Weinig.
1433
1434         Bug 44146 - Remove toDouble/toUInt32 methods from UString.
1435
1436         These methods all implement JavaScript language specific behaviour, and as such
1437         are not suited to being on a generic string object.  They are also inefficient
1438         and incorrectly used, refactor & cleanup.  Uses of these methods really divide
1439         out into two cases.
1440
1441         ToNumber:
1442         Uses of toDouble from JSString and from parseFloat are implementing ecma's
1443         ToNumber conversion from strings (see ecma-262 9.3.1), so UString::toDouble
1444         should largely just be moved out to a global jsToNumber function.  ToNumber is
1445         capable of recognizing either decimal or hexadecimal numbers, but parseFloat
1446         should only recognize decimal values.  This is currently handled by testing for
1447         hexadecimal before calling toDouble, which should unnecessary - instead we can
1448         just split out the two parts to the grammar into separate functions. Also,
1449         strtod recognizes a set of literals (nan, inf, and infinity - all with any
1450         capitalization) - which are not defined by any of the specs we are implementing.
1451         To handle this we need to perform additional work in toDouble to convert the
1452         unsupported cases of infinities back to NaNs.  Instead we should simply remove
1453         support for this literals from strtod.  This should provide a more desirable
1454         behaviour for all clients of strtod.
1455
1456         Indexed properties:
1457         Uses of the toStrictUInt32 methods are were all converting property names to
1458         indices, and all uses of toUInt32 were incorrect; in all cases we should have
1459         been calling toUInt32.  This error results in some incorrect behaviour in the
1460         DOM (accessing property "0 " of a NodeList should fail; it currently does not).
1461         Move this method onto Identifier (our canonical property name), and make it
1462         always perform a strict conversion. Add a layout test to check NodeList does
1463         convert indexed property names correctly.
1464
1465         * JavaScriptCore.exp:
1466         * runtime/Arguments.cpp:
1467         (JSC::Arguments::getOwnPropertySlot):
1468         (JSC::Arguments::getOwnPropertyDescriptor):
1469         (JSC::Arguments::put):
1470         (JSC::Arguments::deleteProperty):
1471         * runtime/Identifier.cpp:
1472         (JSC::Identifier::toUInt32):
1473         * runtime/Identifier.h:
1474         (JSC::Identifier::toUInt32):
1475         * runtime/JSArray.cpp:
1476         (JSC::JSArray::getOwnPropertySlot):
1477         (JSC::JSArray::getOwnPropertyDescriptor):
1478         (JSC::JSArray::put):
1479         (JSC::JSArray::deleteProperty):
1480         * runtime/JSArray.h:
1481         (JSC::Identifier::toArrayIndex):
1482         * runtime/JSByteArray.cpp:
1483         (JSC::JSByteArray::getOwnPropertySlot):
1484         (JSC::JSByteArray::getOwnPropertyDescriptor):
1485         (JSC::JSByteArray::put):
1486         * runtime/JSGlobalObjectFunctions.cpp:
1487         (JSC::isInfinity):
1488         (JSC::jsHexIntegerLiteral):
1489         (JSC::jsStrDecimalLiteral):
1490         (JSC::jsToNumber):
1491         (JSC::parseFloat):
1492         * runtime/JSGlobalObjectFunctions.h:
1493         * runtime/JSString.cpp:
1494         (JSC::JSString::getPrimitiveNumber):
1495         (JSC::JSString::toNumber):
1496         (JSC::JSString::getStringPropertyDescriptor):
1497         * runtime/JSString.h:
1498         (JSC::JSString::getStringPropertySlot):
1499         * runtime/ObjectPrototype.cpp:
1500         (JSC::ObjectPrototype::put):
1501         * runtime/StringObject.cpp:
1502         (JSC::StringObject::deleteProperty):
1503         * runtime/UString.cpp:
1504         * runtime/UString.h:
1505         * wtf/dtoa.cpp:
1506         (WTF::strtod):
1507
1508 2010-08-17  Gavin Barraclough  <barraclough@apple.com>
1509
1510         Reviewed by Sam Weinig.
1511
1512         Bug 44099 - REGRESSION(r65468): Crashes in StringImpl::find
1513
1514         Bug 44080 introuduced a couple of cases in which array bounds could be overrun.
1515         One of these was fixed in r65493, this patch fixes the other and address the
1516         concerns voiced in comment #6 by restructuring the loops to remove the code
1517         dupliction without introducing an additional if check.
1518
1519         * wtf/text/StringImpl.cpp:
1520         (WTF::StringImpl::find):
1521         (WTF::StringImpl::findIgnoringCase):
1522         (WTF::StringImpl::reverseFind):
1523         (WTF::StringImpl::reverseFindIgnoringCase):
1524
1525 2010-08-17  No'am Rosenthal  <noam.rosenthal@nokia.com>
1526
1527         Reviewed by Ariya Hidayat.
1528
1529         [Qt] Move the accelerated compositing build flag to the right place
1530         https://bugs.webkit.org/show_bug.cgi?id=43882
1531
1532         * wtf/Platform.h:
1533
1534 2010-08-17  Yuta Kitamura  <yutak@chromium.org>
1535
1536         Reviewed by Shinichiro Hamaji.
1537
1538         Avoid uninitialized memory read in StringImpl::find().
1539
1540         REGRESSION(r65468): Crashes in StringImpl::find
1541         https://bugs.webkit.org/show_bug.cgi?id=44099
1542
1543         * wtf/text/StringImpl.cpp:
1544         (WTF::StringImpl::find):
1545
1546 2010-08-16  Gavin Barraclough  <barraclough@apple.com>
1547
1548         Rubber stamped by Sam Weinig
1549
1550         Add VectorTraits to String & DefaultHash traits to UString to unify behaviour.
1551
1552         * runtime/UString.h:
1553         (JSC::UStringHash::hash):
1554         (JSC::UStringHash::equal):
1555         (WTF::):
1556         * wtf/text/WTFString.h:
1557         (WTF::):
1558
1559 2010-08-16  Gavin Barraclough  <barraclough@apple.com>
1560
1561         Rubber stamped by Sam Weinig
1562
1563         Remove unnecessary includes from UString.h, add new includes as necessary.
1564
1565         * profiler/CallIdentifier.h:
1566         * profiler/ProfileNode.h:
1567         * runtime/DateConversion.cpp:
1568         * runtime/Identifier.h:
1569         (JSC::IdentifierRepHash::hash):
1570         * runtime/RegExpCache.h:
1571         * runtime/RegExpKey.h:
1572         * runtime/UString.cpp:
1573         (JSC::UString::substr):
1574         * runtime/UString.h:
1575         * wtf/text/WTFString.h:
1576
1577 2010-08-16  Gavin Barraclough  <barraclough@apple.com>
1578
1579         Reviewed by Sam Weinig
1580
1581         Bug 44080 - String find/reverseFind methods need tidying up
1582         These methods have a couple of problems with their interface, and implementation.
1583
1584         These methods take and int index, and return an int - however this is problematic
1585         since on 64-bit string indices may have a full 32-bit range.  This spills out into
1586         surrounding code, which unsafely casts string indices from unsigned to int. Code
1587         checking the result of these methods check for a mix of "== -1", "< 0", and
1588         "== notFound".  Clean this up by changing these methods to take an unsigned
1589         starting index, and return a size_t. with a failed match indicated by notFound.
1590         reverseFind also has a special meaning for the starting index argument, in that a
1591         negative index is interpreted as an offset back from the end of the string. Remove
1592         this functionality, in the (1!) case where it is used we should just calculate the
1593         offset by subtracting from the string's length.
1594
1595         The implementation has a few problems too.  The code is not in webkit style, in
1596         using assorted abbreviations in variable names, and implementations of similar
1597         find methods with differing argument types were unnecessarily inconsistent. When
1598         find is passed const char* data the string would be handled as latin1 (zero
1599         extended to UTF-16) for all characters but the first; this is sign extended.
1600         Case-insensitive find is broken for unicode strings; the hashing optimization is
1601         not unicode safe, and could result in false negatives.
1602
1603         Unify UString find methods to match String.
1604
1605         * JavaScriptCore.exp:
1606         * bytecode/CodeBlock.cpp:
1607         (JSC::escapeQuotes):
1608         * bytecompiler/NodesCodegen.cpp:
1609         (JSC::substitute):
1610         * runtime/JSString.cpp:
1611         (JSC::JSString::replaceCharacter):
1612         * runtime/RegExp.cpp:
1613         (JSC::RegExp::RegExp):
1614         * runtime/RegExpKey.h:
1615         (JSC::RegExpKey::getFlagsValue):
1616         * runtime/StringPrototype.cpp:
1617         (JSC::substituteBackreferencesSlow):
1618         (JSC::substituteBackreferences):
1619         (JSC::stringProtoFuncReplace):
1620         (JSC::stringProtoFuncIndexOf):
1621         (JSC::stringProtoFuncLastIndexOf):
1622         (JSC::stringProtoFuncSplit):
1623         * runtime/UString.cpp:
1624         * runtime/UString.h:
1625         (JSC::UString::find):
1626         (JSC::UString::reverseFind):
1627         * wtf/text/AtomicString.h:
1628         (WTF::AtomicString::find):
1629         * wtf/text/StringImpl.cpp:
1630         (WTF::StringImpl::find):
1631         (WTF::StringImpl::findCaseInsensitive):
1632         (WTF::StringImpl::reverseFind):
1633         (WTF::StringImpl::reverseFindCaseInsensitive):
1634         (WTF::StringImpl::endsWith):
1635         (WTF::StringImpl::replace):
1636         * wtf/text/StringImpl.h:
1637         (WTF::StringImpl::startsWith):
1638         * wtf/text/WTFString.cpp:
1639         (WTF::String::split):
1640         * wtf/text/WTFString.h:
1641         (WTF::String::find):
1642         (WTF::String::reverseFind):
1643         (WTF::String::findCaseInsensitive):
1644         (WTF::String::reverseFindCaseInsensitive):
1645         (WTF::String::contains):
1646         (WTF::find):
1647         (WTF::reverseFind):
1648
1649 2010-08-16  Kevin Ollivier  <kevino@theolliviers.com>
1650
1651         [wx] Build fix, do not build WebCore as a convenience library as this leads to
1652         errors in the Win build w/export symbols and causes problems with DOM bindings
1653         debugging in gdb. 
1654
1655         * wscript:
1656
1657 2010-08-16  Leandro Pereira  <leandro@profusion.mobi>
1658
1659         [EFL] Build fix after r65366.
1660
1661         * CMakeLists.txt: Use if (VAR) instead of if (${VAR}) to check if
1662         they're empty.
1663         * jsc/CMakeLists.txt: Ditto.
1664         * wtf/CMakeLists.txt: Ditto.
1665
1666 2010-08-15  Kevin Ollivier  <kevino@theolliviers.com>
1667
1668         [wx] Build fix, don't build intermediate source in DerivedSources dir.
1669
1670         * wscript:
1671
1672 2010-08-14  Patrick Gansterer  <paroga@paroga.com>
1673
1674         Reviewed by Kenneth Rohde Christiansen.
1675
1676         [CMake] Add preprocessor detection for generator scripts
1677         https://bugs.webkit.org/show_bug.cgi?id=43984
1678
1679         * CMakeLists.txt:
1680
1681 2010-08-14  Patrick Gansterer  <paroga@paroga.com>
1682
1683         Reviewed by Kenneth Rohde Christiansen.
1684
1685         [CMake] Set target properties only if available
1686         https://bugs.webkit.org/show_bug.cgi?id=43978
1687
1688         * CMakeLists.txt:
1689         * jsc/CMakeLists.txt:
1690         * wtf/CMakeLists.txt:
1691
1692 2010-08-13  Kevin Ollivier  <kevino@theolliviers.com>
1693
1694         [wx] Build fix, add CString to the list of forwards.
1695
1696         * wtf/Forward.h:
1697
1698 2010-08-13  Gavin Barraclough  <barraclough@apple.com>
1699
1700         Windows build fix
1701
1702         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1703
1704 2010-08-13  Gavin Barraclough  <barraclough@apple.com>
1705
1706         Windows build fix
1707
1708         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1709
1710 2010-08-13  Gavin Barraclough  <barraclough@apple.com>
1711
1712         Windows build fix
1713
1714         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1715
1716 2010-08-13  Gavin Barraclough  <barraclough@apple.com>
1717
1718         Rubber stamped by Sam Weinig.
1719         Switch String::/UString::ascii() to return a CString.
1720
1721         * JavaScriptCore.exp:
1722         * JavaScriptCore.xcodeproj/project.pbxproj:
1723         * bytecode/CodeBlock.cpp:
1724         (JSC::CodeBlock::dump):
1725         * bytecode/SamplingTool.cpp:
1726         (JSC::SamplingTool::dump):
1727         * interpreter/CallFrame.cpp:
1728         (JSC::CallFrame::dumpCaller):
1729         * jsc.cpp:
1730         (runWithScripts):
1731         (runInteractive):
1732         * runtime/Identifier.h:
1733         (JSC::Identifier::ascii):
1734         * runtime/ScopeChain.cpp:
1735         (JSC::ScopeChainNode::print):
1736         * runtime/UString.cpp:
1737         (JSC::UString::ascii):
1738         (JSC::UString::latin1):
1739         * runtime/UString.h:
1740         * wtf/text/StringImpl.cpp:
1741         (WTF::StringImpl::asciiOLD):
1742         * wtf/text/StringImpl.h:
1743         * wtf/text/WTFString.cpp:
1744         (WTF::String::ascii):
1745         (WTF::String::latin1):
1746         * wtf/text/WTFString.h:
1747
1748 2010-08-13  Gabor Loki  <loki@webkit.org>
1749
1750         Reviewed by Gavin Barraclough.
1751
1752         Avoid increasing required alignment of target type warning on ARM
1753         https://bugs.webkit.org/show_bug.cgi?id=38045
1754
1755         The reinterpret_cast<Type1*>([pointer to Type2]) expressions - where
1756         sizeof(Type1) > sizeof(Type2) - cause the following warning on ARM:
1757         increases required alignment of target type warnings.
1758         Casting the type of [pointer to Type2] object to void* bypasses the
1759         warning.
1760
1761         * assembler/ARMAssembler.cpp:
1762         (JSC::ARMAssembler::executableCopy):
1763         * assembler/AssemblerBuffer.h:
1764         (JSC::AssemblerBuffer::putShortUnchecked):
1765         (JSC::AssemblerBuffer::putIntUnchecked):
1766         (JSC::AssemblerBuffer::putInt64Unchecked):
1767         * interpreter/RegisterFile.h:
1768         (JSC::RegisterFile::RegisterFile):
1769         (JSC::RegisterFile::grow):
1770         * jit/JITStubs.cpp:
1771         * pcre/pcre_compile.cpp:
1772         (jsRegExpCompile):
1773         * runtime/JSArray.cpp:
1774         (JSC::JSArray::putSlowCase):
1775         (JSC::JSArray::increaseVectorLength):
1776         (JSC::JSArray::increaseVectorPrefixLength):
1777         (JSC::JSArray::shiftCount):
1778         (JSC::JSArray::unshiftCount):
1779         * wtf/FastMalloc.cpp:
1780         (WTF::PageHeapAllocator::New):
1781         (WTF::TCMalloc_Central_FreeList::Populate):
1782         * wtf/MD5.cpp:
1783         (WTF::reverseBytes):
1784         (WTF::MD5::addBytes):
1785         (WTF::MD5::checksum):
1786         * wtf/StdLibExtras.h:
1787         (isPointerTypeAlignmentOkay):
1788         (reinterpret_cast_ptr):
1789         * wtf/Vector.h:
1790         (WTF::VectorBuffer::inlineBuffer):
1791         * wtf/qt/StringQt.cpp:
1792         (WTF::String::String):
1793
1794 2010-08-13  Gavin Barraclough  <barraclough@apple.com>
1795
1796         Reviewed by Sam Weinig
1797
1798         Unify UString::UTF8String() & String::utf8() methods,
1799         remove UString::cost() & make atArrayIndex a free function.
1800
1801         * JavaScriptCore.exp:
1802         * bytecode/CodeBlock.cpp:
1803         (JSC::constantName):
1804         (JSC::idName):
1805         (JSC::CodeBlock::registerName):
1806         (JSC::regexpName):
1807         (JSC::printGlobalResolveInfo):
1808         (JSC::printStructureStubInfo):
1809         (JSC::CodeBlock::printStructure):
1810         (JSC::CodeBlock::printStructures):
1811         * jsc.cpp:
1812         (functionPrint):
1813         (functionDebug):
1814         (runInteractive):
1815         (fillBufferWithContentsOfFile):
1816         * pcre/pcre_exec.cpp:
1817         (Histogram::~Histogram):
1818         * profiler/CallIdentifier.h:
1819         (JSC::CallIdentifier::c_str):
1820         * profiler/Profile.cpp:
1821         (JSC::Profile::debugPrintDataSampleStyle):
1822         * profiler/ProfileGenerator.cpp:
1823         (JSC::ProfileGenerator::willExecute):
1824         (JSC::ProfileGenerator::didExecute):
1825         * profiler/ProfileNode.cpp:
1826         (JSC::ProfileNode::debugPrintData):
1827         (JSC::ProfileNode::debugPrintDataSampleStyle):
1828         * runtime/Arguments.cpp:
1829         (JSC::Arguments::getOwnPropertySlot):
1830         (JSC::Arguments::getOwnPropertyDescriptor):
1831         (JSC::Arguments::put):
1832         (JSC::Arguments::deleteProperty):
1833         * runtime/DateConversion.cpp:
1834         (JSC::parseDate):
1835         * runtime/Identifier.h:
1836         (JSC::Identifier::toStrictUInt32):
1837         * runtime/JSArray.cpp:
1838         (JSC::JSArray::getOwnPropertySlot):
1839         (JSC::JSArray::getOwnPropertyDescriptor):
1840         (JSC::JSArray::put):
1841         (JSC::JSArray::deleteProperty):
1842         * runtime/JSArray.h:
1843         (JSC::toArrayIndex):
1844         * runtime/JSGlobalObjectFunctions.cpp:
1845         (JSC::encode):
1846         (JSC::parseInt):
1847         (JSC::globalFuncJSCPrint):
1848         * runtime/JSString.h:
1849         (JSC::RopeBuilder::JSString):
1850         * runtime/UString.cpp:
1851         (JSC::UString::toDouble):
1852         (JSC::putUTF8Triple):
1853         (JSC::UString::utf8):
1854         * runtime/UString.h:
1855         (JSC::UString::~UString):
1856         (JSC::UString::isNull):
1857         (JSC::UString::isEmpty):
1858         (JSC::UString::impl):
1859         * wtf/text/WTFString.cpp:
1860         (WTF::String::utf8):
1861         * wtf/text/WTFString.h:
1862         (WTF::String::~String):
1863         (WTF::String::swap):
1864         (WTF::String::isNull):
1865         (WTF::String::isEmpty):
1866         (WTF::String::impl):
1867         (WTF::String::length):
1868         (WTF::String::String):
1869         (WTF::String::isHashTableDeletedValue):
1870
1871 2010-08-12  Zoltan Herczeg  <zherczeg@webkit.org>
1872
1873         Reviewed by Gavin Barraclough.
1874
1875         Refactoring the fpu code generator for the ARM port
1876         https://bugs.webkit.org/show_bug.cgi?id=43842
1877
1878         Support up to 32 double precision registers, and the
1879         recent VFP instruction formats. This patch is mainly
1880         a style change which keeps the current functionality.
1881
1882         * assembler/ARMAssembler.h:
1883         (JSC::ARMRegisters::):
1884         (JSC::ARMAssembler::):
1885         (JSC::ARMAssembler::emitInst):
1886         (JSC::ARMAssembler::emitDoublePrecisionInst):
1887         (JSC::ARMAssembler::emitSinglePrecisionInst):
1888         (JSC::ARMAssembler::vadd_f64_r):
1889         (JSC::ARMAssembler::vdiv_f64_r):
1890         (JSC::ARMAssembler::vsub_f64_r):
1891         (JSC::ARMAssembler::vmul_f64_r):
1892         (JSC::ARMAssembler::vcmp_f64_r):
1893         (JSC::ARMAssembler::vsqrt_f64_r):
1894         (JSC::ARMAssembler::vmov_vfp_r):
1895         (JSC::ARMAssembler::vmov_arm_r):
1896         (JSC::ARMAssembler::vcvt_f64_s32_r):
1897         (JSC::ARMAssembler::vcvt_s32_f64_r):
1898         (JSC::ARMAssembler::vmrs_apsr):
1899         * assembler/MacroAssemblerARM.h:
1900         (JSC::MacroAssemblerARM::addDouble):
1901         (JSC::MacroAssemblerARM::divDouble):
1902         (JSC::MacroAssemblerARM::subDouble):
1903         (JSC::MacroAssemblerARM::mulDouble):
1904         (JSC::MacroAssemblerARM::sqrtDouble):
1905         (JSC::MacroAssemblerARM::convertInt32ToDouble):
1906         (JSC::MacroAssemblerARM::branchDouble):
1907         (JSC::MacroAssemblerARM::branchConvertDoubleToInt32):
1908
1909 2010-08-12  Sheriff Bot  <webkit.review.bot@gmail.com>
1910
1911         Unreviewed, rolling out r65295.
1912         http://trac.webkit.org/changeset/65295
1913         https://bugs.webkit.org/show_bug.cgi?id=43950
1914
1915         It broke 4 sputnik tests (Requested by Ossy on #webkit).
1916
1917         * JavaScriptCore.exp:
1918         * bytecode/CodeBlock.cpp:
1919         (JSC::constantName):
1920         (JSC::idName):
1921         (JSC::CodeBlock::registerName):
1922         (JSC::regexpName):
1923         (JSC::printGlobalResolveInfo):
1924         (JSC::printStructureStubInfo):
1925         (JSC::CodeBlock::printStructure):
1926         (JSC::CodeBlock::printStructures):
1927         * jsc.cpp:
1928         (functionPrint):
1929         (functionDebug):
1930         (runInteractive):
1931         (fillBufferWithContentsOfFile):
1932         * pcre/pcre_exec.cpp:
1933         (Histogram::~Histogram):
1934         * profiler/CallIdentifier.h:
1935         (JSC::CallIdentifier::c_str):
1936         * profiler/Profile.cpp:
1937         (JSC::Profile::debugPrintDataSampleStyle):
1938         * profiler/ProfileGenerator.cpp:
1939         (JSC::ProfileGenerator::willExecute):
1940         (JSC::ProfileGenerator::didExecute):
1941         * profiler/ProfileNode.cpp:
1942         (JSC::ProfileNode::debugPrintData):
1943         (JSC::ProfileNode::debugPrintDataSampleStyle):
1944         * runtime/Arguments.cpp:
1945         (JSC::Arguments::getOwnPropertySlot):
1946         (JSC::Arguments::getOwnPropertyDescriptor):
1947         (JSC::Arguments::put):
1948         (JSC::Arguments::deleteProperty):
1949         * runtime/DateConversion.cpp:
1950         (JSC::parseDate):
1951         * runtime/Identifier.h:
1952         (JSC::Identifier::Identifier):
1953         (JSC::Identifier::toArrayIndex):
1954         * runtime/JSArray.cpp:
1955         (JSC::JSArray::getOwnPropertySlot):
1956         (JSC::JSArray::getOwnPropertyDescriptor):
1957         (JSC::JSArray::put):
1958         (JSC::JSArray::deleteProperty):
1959         * runtime/JSArray.h:
1960         * runtime/JSGlobalObjectFunctions.cpp:
1961         (JSC::encode):
1962         (JSC::parseInt):
1963         (JSC::globalFuncJSCPrint):
1964         * runtime/JSString.h:
1965         (JSC::RopeBuilder::JSString):
1966         * runtime/UString.cpp:
1967         (JSC::UString::toDouble):
1968         (JSC::UString::UTF8String):
1969         * runtime/UString.h:
1970         (JSC::UString::isNull):
1971         (JSC::UString::isEmpty):
1972         (JSC::UString::impl):
1973         (JSC::UString::cost):
1974         (JSC::UString::~UString):
1975         (JSC::UString::toArrayIndex):
1976         * wtf/text/WTFString.cpp:
1977         (WTF::String::utf8):
1978         * wtf/text/WTFString.h:
1979         (WTF::String::String):
1980         (WTF::String::isHashTableDeletedValue):
1981         (WTF::String::length):
1982         (WTF::String::operator[]):
1983         (WTF::String::isNull):
1984         (WTF::String::isEmpty):
1985         (WTF::String::impl):
1986
1987 2010-08-12  Gavin Barraclough  <barraclough@apple.com>
1988
1989         Windows build fix.
1990
1991         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1992
1993 2010-08-12  Gavin Barraclough  <barraclough@apple.com>
1994
1995         Reviewed by Sam Weinig
1996
1997         Unify UString::UTF8String() & String::utf8() methods,
1998         remove UString::cost() & make atArrayIndex a free function.
1999
2000         * JavaScriptCore.exp:
2001         * bytecode/CodeBlock.cpp:
2002         (JSC::constantName):
2003         (JSC::idName):
2004         (JSC::CodeBlock::registerName):
2005         (JSC::regexpName):
2006         (JSC::printGlobalResolveInfo):
2007         (JSC::printStructureStubInfo):
2008         (JSC::CodeBlock::printStructure):
2009         (JSC::CodeBlock::printStructures):
2010         * jsc.cpp:
2011         (functionPrint):
2012         (functionDebug):
2013         (runInteractive):
2014         (fillBufferWithContentsOfFile):
2015         * pcre/pcre_exec.cpp:
2016         (Histogram::~Histogram):
2017         * profiler/CallIdentifier.h:
2018         (JSC::CallIdentifier::c_str):
2019         * profiler/Profile.cpp:
2020         (JSC::Profile::debugPrintDataSampleStyle):
2021         * profiler/ProfileGenerator.cpp:
2022         (JSC::ProfileGenerator::willExecute):
2023         (JSC::ProfileGenerator::didExecute):
2024         * profiler/ProfileNode.cpp:
2025         (JSC::ProfileNode::debugPrintData):
2026         (JSC::ProfileNode::debugPrintDataSampleStyle):
2027         * runtime/Arguments.cpp:
2028         (JSC::Arguments::getOwnPropertySlot):
2029         (JSC::Arguments::getOwnPropertyDescriptor):
2030         (JSC::Arguments::put):
2031         (JSC::Arguments::deleteProperty):
2032         * runtime/DateConversion.cpp:
2033         (JSC::parseDate):
2034         * runtime/Identifier.h:
2035         (JSC::Identifier::toStrictUInt32):
2036         * runtime/JSArray.cpp:
2037         (JSC::JSArray::getOwnPropertySlot):
2038         (JSC::JSArray::getOwnPropertyDescriptor):
2039         (JSC::JSArray::put):
2040         (JSC::JSArray::deleteProperty):
2041         * runtime/JSArray.h:
2042         (JSC::toArrayIndex):
2043         * runtime/JSGlobalObjectFunctions.cpp:
2044         (JSC::encode):
2045         (JSC::parseInt):
2046         (JSC::globalFuncJSCPrint):
2047         * runtime/JSString.h:
2048         (JSC::RopeBuilder::JSString):
2049         * runtime/UString.cpp:
2050         (JSC::UString::toDouble):
2051         (JSC::putUTF8Triple):
2052         (JSC::UString::utf8):
2053         * runtime/UString.h:
2054         (JSC::UString::~UString):
2055         (JSC::UString::isNull):
2056         (JSC::UString::isEmpty):
2057         (JSC::UString::impl):
2058         * wtf/text/WTFString.cpp:
2059         (WTF::String::utf8):
2060         * wtf/text/WTFString.h:
2061         (WTF::String::~String):
2062         (WTF::String::swap):
2063         (WTF::String::isNull):
2064         (WTF::String::isEmpty):
2065         (WTF::String::impl):
2066         (WTF::String::length):
2067         (WTF::String::String):
2068         (WTF::String::isHashTableDeletedValue):
2069
2070 2010-08-12  Gavin Barraclough  <barraclough@apple.com>
2071
2072         Eeerk! - revert accidentally committed changes in UString!
2073
2074         * JavaScriptCore.exp:
2075         * runtime/UString.cpp:
2076         (JSC::UString::UString):
2077         * runtime/UString.h:
2078
2079 2010-08-12  Gavin Barraclough  <barraclough@apple.com>
2080
2081         Reviewed by Sam Weinig
2082
2083         Change UString constructors to match those in WTF::String.
2084         This changes behaviour of UString((char*)0) to create null
2085         strings, akin to UString() rather than UString::empty().
2086         (This matches String).  Remove unused constructors from
2087         UString, and add null-terminated UTF-16 constructor, to
2088         match String.  Move String's constructor into the .cpp to
2089         match UString.
2090
2091         * JavaScriptCore.exp:
2092         * debugger/DebuggerCallFrame.cpp:
2093         (JSC::DebuggerCallFrame::calculatedFunctionName):
2094         * runtime/RegExpKey.h:
2095         (JSC::RegExpKey::RegExpKey):
2096         * runtime/SmallStrings.cpp:
2097         (JSC::SmallStrings::createSingleCharacterString):
2098         * runtime/UString.cpp:
2099         (JSC::UString::UString):
2100         * runtime/UString.h:
2101         (JSC::UString::UString):
2102         (JSC::UString::swap):
2103         (JSC::UString::adopt):
2104         (JSC::UString::operator[]):
2105         * wtf/text/WTFString.h:
2106         (WTF::String::String):
2107         (WTF::String::adopt):
2108         (WTF::String::operator[]):
2109
2110 2010-08-12  David Levin  <levin@chromium.org>
2111
2112         Reviewed by NOBODY (build fix).
2113
2114         * runtime/UString.h: Removed unneccessary #include.
2115
2116 2010-08-12  Gavin Barraclough  <barraclough@apple.com>
2117
2118         Reviewed by Sam Weinig
2119
2120         Revert changes to ALWAYS_INLINEness of a couple of functions in UString.
2121         This appears to have degraded performance.
2122
2123         * runtime/UString.cpp:
2124         (JSC::UString::ascii):
2125         * runtime/UString.h:
2126         (JSC::UString::length):
2127         (JSC::UString::isEmpty):
2128         (JSC::UString::~UString):
2129
2130 2010-08-12  Csaba Osztrogonác  <ossy@webkit.org>
2131
2132         Reviewed by Antonio Gomes.
2133
2134         [Qt] Fix warnings: unknown conversion type character 'l' in format
2135         https://bugs.webkit.org/show_bug.cgi?id=43359
2136
2137         Qt port doesn't call any printf in String::format(...), consequently
2138         using __attribute__((format(printf,m,n))) is incorrect and causes
2139         false positive warnings on Windows if you build with MinGW.
2140
2141         Qt port calls QString::vsprintf(...) , which is platform
2142         independent, and handles %lli, %llu and %llx on all platforms.
2143         (http://trac.webkit.org/changeset/35712)
2144
2145         * wtf/text/WTFString.h:
2146
2147 2010-08-12  Gabor Loki  <loki@webkit.org>
2148
2149         Reviewed by Geoffrey Garen.
2150
2151         Fix the array subscript is above array bounds warning in ByteArray on ARM.
2152         https://bugs.webkit.org/show_bug.cgi?id=43358
2153
2154         The warning is very similar to this one: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37861
2155
2156         * wtf/ByteArray.cpp:
2157         (WTF::ByteArray::create):
2158
2159 2010-08-12  Gustavo Noronha Silva  <gustavo.noronha@collabora.co.uk>
2160
2161         Reviewed by Martin Robinson.
2162
2163         [GTK] Use GSettings to save/restore Web Inspector settings
2164         https://bugs.webkit.org/show_bug.cgi?id=43512
2165
2166         * wtf/gobject/GRefPtr.cpp: Added support for GVariant, used by our
2167         GSettings support.
2168         (WTF::refGPtr):
2169         (WTF::derefGPtr):
2170         * wtf/gobject/GRefPtr.h:
2171
2172 2010-08-12  Gabor Loki  <loki@webkit.org>
2173
2174         Reviewed by Simon Hausmann.
2175
2176         The scratch register should be saved in YARR with ARM JIT
2177         https://bugs.webkit.org/show_bug.cgi?id=43910
2178
2179         Reported by Jocelyn Turcotte.
2180
2181         * yarr/RegexJIT.cpp:
2182         (JSC::Yarr::RegexGenerator::generateEnter):
2183         (JSC::Yarr::RegexGenerator::generateReturn):
2184
2185 2010-08-11  Gavin Barraclough  <barraclough@apple.com>
2186
2187         Windows build fix.
2188
2189         * JavaScriptCore.xcodeproj/project.pbxproj:
2190         * wtf/Forward.h:
2191
2192 2010-08-11  Leo Yang  <leo.yang@torchmobile.com.cn>
2193
2194         Reviewed by Geoffrey Garen.
2195
2196         Date("") should be an invalid date. For IE, Firefox and Chrome, Date("") is invalid date,
2197         which means isNaN(new Date("")) should return true.
2198         https://bugs.webkit.org/show_bug.cgi?id=43793
2199         Tests: fast/js/date-constructor.html
2200
2201         * runtime/JSGlobalData.cpp:
2202         (JSC::JSGlobalData::resetDateCache):
2203
2204 2010-08-11  Gavin Barraclough  <barraclough@apple.com>
2205
2206         Windows & !JIT build fix.
2207
2208         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2209         * JavaScriptCore.xcodeproj/project.pbxproj:
2210         * runtime/RegExp.cpp:
2211         (JSC::RegExp::match):
2212
2213 2010-08-11  Gavin Barraclough  <barraclough@apple.com>
2214
2215         Rubber stamp by sam weinig
2216
2217         Touch a file to stop the bot rolling a bit change out!
2218
2219         * runtime/UString.cpp:
2220         (JSC::UString::ascii):
2221
2222 2010-08-11  Kevin Ollivier  <kevino@theolliviers.com>
2223
2224         [wx] Build fix for wx and WebDOM bindings, add CString classes to the list of forwards.
2225
2226         * wtf/Forward.h:
2227
2228 2010-08-11  Gavin Barraclough  <barraclough@apple.com>
2229
2230         Rubber stamps by Darin Adler & Sam Weinig.
2231
2232         Bug 43867 - Some UString cleanup
2233
2234         Change JSC::UString data(), size(), and from(), to characters(), length(), and number() to match WTF::String.
2235         Move string concatenation methods to a new header to simplify down UString.h.  Remove is8Bit().
2236
2237         * API/JSClassRef.cpp:
2238         (OpaqueJSClass::~OpaqueJSClass):
2239         (OpaqueJSClass::className):
2240         * API/OpaqueJSString.cpp:
2241         (OpaqueJSString::create):
2242         * JavaScriptCore.exp:
2243         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2244         * JavaScriptCore.xcodeproj/project.pbxproj:
2245         * bytecode/CodeBlock.cpp:
2246         (JSC::constantName):
2247         (JSC::idName):
2248         (JSC::CodeBlock::registerName):
2249         (JSC::regexpName):
2250         * bytecode/EvalCodeCache.h:
2251         (JSC::EvalCodeCache::get):
2252         * bytecompiler/NodesCodegen.cpp:
2253         (JSC::ResolveNode::emitBytecode):
2254         (JSC::FunctionCallResolveNode::emitBytecode):
2255         (JSC::ReadModifyResolveNode::emitBytecode):
2256         (JSC::processClauseList):
2257         * parser/ASTBuilder.h:
2258         (JSC::ASTBuilder::createRegex):
2259         * parser/ParserArena.h:
2260         (JSC::IdentifierArena::makeNumericIdentifier):
2261         * parser/SourceProvider.h:
2262         (JSC::UStringSourceProvider::data):
2263         (JSC::UStringSourceProvider::length):
2264         * profiler/Profiler.cpp:
2265         * runtime/Arguments.cpp:
2266         (JSC::Arguments::getOwnPropertySlot):
2267         (JSC::Arguments::getOwnPropertyNames):
2268         (JSC::Arguments::put):
2269         (JSC::Arguments::deleteProperty):
2270         * runtime/ArrayPrototype.cpp:
2271         (JSC::arrayProtoFuncToString):
2272         * runtime/DatePrototype.cpp:
2273         (JSC::formatLocaleDate):
2274         * runtime/ExceptionHelpers.cpp:
2275         * runtime/FunctionConstructor.cpp:
2276         * runtime/FunctionPrototype.cpp:
2277         (JSC::insertSemicolonIfNeeded):
2278         * runtime/Identifier.h:
2279         (JSC::Identifier::characters):
2280         (JSC::Identifier::length):
2281         * runtime/JSGlobalObjectFunctions.cpp:
2282         (JSC::decode):
2283         (JSC::parseInt):
2284         (JSC::parseFloat):
2285         (JSC::globalFuncEscape):
2286         (JSC::globalFuncUnescape):
2287         * runtime/JSNumberCell.cpp:
2288         (JSC::JSNumberCell::toString):
2289         * runtime/JSONObject.cpp:
2290         (JSC::gap):
2291         (JSC::Stringifier::appendQuotedString):
2292         (JSC::Stringifier::appendStringifiedValue):
2293         (JSC::Stringifier::indent):
2294         (JSC::Stringifier::unindent):
2295         (JSC::Walker::walk):
2296         * runtime/JSString.cpp:
2297         (JSC::JSString::replaceCharacter):
2298         (JSC::JSString::getIndexSlowCase):
2299         * runtime/JSString.h:
2300         (JSC::RopeBuilder::JSString):
2301         (JSC::RopeBuilder::appendValueInConstructAndIncrementLength):
2302         (JSC::RopeBuilder::fiberCount):
2303         (JSC::jsSingleCharacterSubstring):
2304         (JSC::jsNontrivialString):
2305         (JSC::JSString::getIndex):
2306         (JSC::jsString):
2307         (JSC::jsStringWithFinalizer):
2308         (JSC::jsSubstring):
2309         (JSC::jsOwnedString):
2310         * runtime/JSStringBuilder.h:
2311         (JSC::JSStringBuilder::append):
2312         * runtime/LiteralParser.h:
2313         (JSC::LiteralParser::Lexer::Lexer):
2314         * runtime/NumberPrototype.cpp:
2315         (JSC::numberProtoFuncToString):
2316         (JSC::numberProtoFuncToFixed):
2317         (JSC::numberProtoFuncToExponential):
2318         (JSC::numberProtoFuncToPrecision):
2319         * runtime/NumericStrings.h:
2320         (JSC::NumericStrings::add):
2321         (JSC::NumericStrings::lookupSmallString):
2322         * runtime/Operations.h:
2323         (JSC::jsString):
2324         * runtime/RegExp.cpp:
2325         (JSC::RegExp::match):
2326         * runtime/RegExpCache.cpp:
2327         (JSC::RegExpCache::lookupOrCreate):
2328         (JSC::RegExpCache::create):
2329         * runtime/RegExpConstructor.cpp:
2330         (JSC::RegExpConstructor::getRightContext):
2331         * runtime/RegExpObject.cpp:
2332         (JSC::RegExpObject::match):
2333         * runtime/RegExpPrototype.cpp:
2334         (JSC::regExpProtoFuncToString):
2335         * runtime/StringBuilder.h:
2336         (JSC::StringBuilder::append):
2337         * runtime/StringConcatenate.h: Copied from JavaScriptCore/runtime/UString.h.
2338         (JSC::):
2339         (JSC::sumWithOverflow):
2340         (JSC::tryMakeString):
2341         (JSC::makeString):
2342         * runtime/StringObject.cpp:
2343         (JSC::StringObject::getOwnPropertyNames):
2344         * runtime/StringPrototype.cpp:
2345         (JSC::substituteBackreferencesSlow):
2346         (JSC::localeCompare):
2347         (JSC::jsSpliceSubstringsWithSeparators):
2348         (JSC::stringProtoFuncReplace):
2349         (JSC::stringProtoFuncCharAt):
2350         (JSC::stringProtoFuncCharCodeAt):
2351         (JSC::stringProtoFuncIndexOf):
2352         (JSC::stringProtoFuncLastIndexOf):
2353         (JSC::stringProtoFuncSlice):
2354         (JSC::stringProtoFuncSplit):
2355         (JSC::stringProtoFuncSubstr):
2356         (JSC::stringProtoFuncSubstring):
2357         (JSC::stringProtoFuncToLowerCase):
2358         (JSC::stringProtoFuncToUpperCase):
2359         (JSC::stringProtoFuncFontsize):
2360         (JSC::stringProtoFuncLink):
2361         (JSC::trimString):
2362         * runtime/UString.cpp:
2363         (JSC::UString::number):
2364         (JSC::UString::ascii):
2365         (JSC::UString::operator[]):
2366         (JSC::UString::toDouble):
2367         (JSC::UString::find):
2368         (JSC::UString::rfind):
2369         (JSC::UString::substr):
2370         (JSC::operator==):
2371         (JSC::operator<):
2372         (JSC::operator>):
2373         (JSC::UString::UTF8String):
2374         * runtime/UString.h:
2375         (JSC::UString::UString):
2376         (JSC::UString::adopt):
2377         (JSC::UString::length):
2378         (JSC::UString::characters):
2379         (JSC::UString::isNull):
2380         (JSC::UString::isEmpty):
2381         (JSC::UString::impl):
2382         (JSC::UString::cost):
2383         (JSC::operator==):
2384         (JSC::operator!=):
2385         (JSC::codePointCompare):
2386         (JSC::UString::toArrayIndex):
2387         (JSC::IdentifierRepHash::hash):
2388         (WTF::):
2389         * yarr/RegexJIT.cpp:
2390         (JSC::Yarr::jitCompileRegex):
2391         * yarr/RegexParser.h:
2392         (JSC::Yarr::Parser::Parser):
2393
2394 2010-08-11  Gabor Loki  <loki@webkit.org>
2395
2396         Qt build fix (ARMv7).
2397
2398         Fix invalid conversion from int to Condition.
2399         Add ARMv7Assembler.cpp to JavaScriptCore.pro.
2400
2401         * JavaScriptCore.pro:
2402         * assembler/ARMv7Assembler.h:
2403         (JSC::ARMv7Assembler::):
2404         (JSC::ARMv7Assembler::JmpSrc::JmpSrc):
2405
2406 2010-08-11  Nathan Lawrence  <nlawrence@apple.com>
2407
2408         Reviewed by Geoffrey Garen.
2409
2410         At collection time, we frequently want to mark a cell, while checking
2411         whether it was originally checked.  Previously, this was a get
2412         operation follwed by a set operation.  Fusing the two saves
2413         computation and gives a 0.5% sunspider speedup.
2414
2415         * runtime/Collector.h:
2416         (JSC::CollectorBitmap::getset):
2417         (JSC::Heap::checkMarkCell):
2418         * runtime/JSArray.h:
2419         (JSC::MarkStack::drain):
2420         * runtime/JSCell.h:
2421         (JSC::MarkStack::append):
2422
2423 2010-08-11  Steve Falkenburg  <sfalken@apple.com>
2424
2425         Reviewed by Adam Roben.
2426
2427         Improve vsprops copying for Windows build
2428         https://bugs.webkit.org/show_bug.cgi?id=41982
2429
2430         When we detect a new SDK, always copy a new set of vsprops files.
2431         Previously, if someone updated their SDK after updating their sources,
2432         they could end up with out-of-date vsprops files.
2433
2434         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
2435
2436 2010-08-10  Darin Adler  <darin@apple.com>
2437
2438         Reviewed by Sam Weinig.
2439
2440         Add leakRef and clear to all RefPtr variants
2441         https://bugs.webkit.org/show_bug.cgi?id=42389
2442
2443         * API/JSRetainPtr.h: Changed all uses of "template <...>" to instead do
2444         "template<...>". We should probably put this in the style guide and do it
2445         consitently. Fixed other minor style issues. Defined many of the inlined
2446         functions outside the class definition, to avoid style checker warnings
2447         about multiple statements on a single line and for slightly better clarity
2448         of the class definition itself. Renamed releaseRef to leakRef. Added a
2449         releaseRef that calls leakRef so we don't have to rename all callers oat
2450         once. Added a clear function.
2451
2452         * wtf/PassRefPtr.h: Changed all uses of releaseRef to leakRef.
2453
2454         * wtf/RefPtr.h: Changed all uses of "template <...>" to instead do
2455         "template<...>". Tidied up declarations and comments a bit.
2456          Changed all uses of releaseRef to leakRef.
2457
2458         * wtf/RetainPtr.h: Changed all uses of "template <...>" to instead do
2459         "template<...>". Defined many of the inlined functions outside the class
2460         definition, to avoid style checker warnings about multiple statements on
2461         a single line and for slightly better clarity of the class definition itself.
2462         Renamed releaseRef to leakRef. Added a releaseRef that calls leakRef so we
2463         don't have to rename all callers at once. Added a clear function.
2464
2465 2010-08-10  Dumitru Daniliuc  <dumi@chromium.org>
2466
2467         Unreviewed, reverting an unintentional change to a file submitted in r65108.
2468
2469         * bytecode/CodeBlock.h:
2470         (JSC::binaryChop):
2471
2472 2010-08-10  Gavin Barraclough  <barraclough@apple.com>
2473
2474         Rubber stamped by Sam Weinig
2475
2476         Bug 43817 - Remove UString::Rep
2477         UString::Rep has for a long time been replaced by UStringImpl (Rep
2478         remaining as a typedef).  UStringImpl has since been removed too
2479         (unified with StringImpl). Remove Rep, rename rep() to impl() and
2480         m_rep to m_impl.  Also add impl() method to Identifier, and rename
2481         its UString member from _ustring to m_string.
2482
2483         * API/JSCallbackObject.h:
2484         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::getPrivateProperty):
2485         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::setPrivateProperty):
2486         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::deletePrivateProperty):
2487         * API/JSCallbackObjectFunctions.h:
2488         (JSC::::getOwnPropertySlot):
2489         (JSC::::put):
2490         (JSC::::deleteProperty):
2491         (JSC::::getOwnPropertyNames):
2492         (JSC::::staticValueGetter):
2493         (JSC::::staticFunctionGetter):
2494         * API/JSClassRef.cpp:
2495         (tryCreateStringFromUTF8):
2496         (OpaqueJSClass::OpaqueJSClass):
2497         (OpaqueJSClass::~OpaqueJSClass):
2498         (OpaqueJSClassContextData::OpaqueJSClassContextData):
2499         * API/JSClassRef.h:
2500         * API/OpaqueJSString.cpp:
2501         (OpaqueJSString::ustring):
2502         * bytecode/EvalCodeCache.h:
2503         (JSC::EvalCodeCache::get):
2504         * bytecode/JumpTable.h:
2505         (JSC::StringJumpTable::offsetForValue):
2506         (JSC::StringJumpTable::ctiForValue):
2507         * bytecompiler/BytecodeGenerator.cpp:
2508         (JSC::BytecodeGenerator::addVar):
2509         (JSC::BytecodeGenerator::addGlobalVar):
2510         (JSC::BytecodeGenerator::BytecodeGenerator):
2511         (JSC::BytecodeGenerator::addParameter):
2512         (JSC::BytecodeGenerator::registerFor):
2513         (JSC::BytecodeGenerator::willResolveToArguments):
2514         (JSC::BytecodeGenerator::uncheckedRegisterForArguments):
2515         (JSC::BytecodeGenerator::constRegisterFor):
2516         (JSC::BytecodeGenerator::isLocal):
2517         (JSC::BytecodeGenerator::isLocalConstant):
2518         (JSC::BytecodeGenerator::addConstant):
2519         (JSC::BytecodeGenerator::emitLoad):
2520         (JSC::BytecodeGenerator::findScopedProperty):
2521         (JSC::keyForCharacterSwitch):
2522         (JSC::prepareJumpTableForStringSwitch):
2523         * bytecompiler/BytecodeGenerator.h:
2524         * bytecompiler/NodesCodegen.cpp:
2525         (JSC::processClauseList):
2526         * interpreter/Interpreter.cpp:
2527         (JSC::Interpreter::privateExecute):
2528         * jit/JITStubs.cpp:
2529         (JSC::DEFINE_STUB_FUNCTION):
2530         * parser/JSParser.cpp:
2531         (JSC::JSParser::parseStrictObjectLiteral):
2532         * pcre/pcre_exec.cpp:
2533         (Histogram::add):
2534         * profiler/CallIdentifier.h:
2535         (JSC::CallIdentifier::Hash::hash):
2536         * profiler/Profile.cpp:
2537         * profiler/ProfileNode.cpp:
2538         (JSC::ProfileNode::debugPrintDataSampleStyle):
2539         * profiler/ProfileNode.h:
2540         * runtime/ArrayPrototype.cpp:
2541         (JSC::arrayProtoFuncToString):
2542         * runtime/Identifier.cpp:
2543         (JSC::Identifier::equal):
2544         (JSC::IdentifierCStringTranslator::hash):
2545         (JSC::IdentifierCStringTranslator::equal):
2546         (JSC::IdentifierCStringTranslator::translate):
2547         (JSC::Identifier::add):
2548         (JSC::IdentifierUCharBufferTranslator::hash):
2549         (JSC::IdentifierUCharBufferTranslator::equal):
2550         (JSC::IdentifierUCharBufferTranslator::translate):
2551         (JSC::Identifier::addSlowCase):
2552         * runtime/Identifier.h:
2553         (JSC::Identifier::Identifier):
2554         (JSC::Identifier::ustring):
2555         (JSC::Identifier::impl):
2556         (JSC::Identifier::data):
2557         (JSC::Identifier::size):
2558         (JSC::Identifier::ascii):
2559         (JSC::Identifier::isNull):
2560         (JSC::Identifier::isEmpty):
2561         (JSC::Identifier::toUInt32):
2562         (JSC::Identifier::toStrictUInt32):
2563         (JSC::Identifier::toArrayIndex):
2564         (JSC::Identifier::toDouble):
2565         (JSC::Identifier::equal):
2566         (JSC::Identifier::add):
2567         * runtime/InitializeThreading.cpp:
2568         (JSC::initializeThreadingOnce):
2569         * runtime/InternalFunction.cpp:
2570         (JSC::InternalFunction::displayName):
2571         * runtime/JSFunction.cpp:
2572         (JSC::JSFunction::displayName):
2573         * runtime/JSGlobalObject.h:
2574         (JSC::JSGlobalObject::addStaticGlobals):
2575         * runtime/JSStaticScopeObject.h:
2576         (JSC::JSStaticScopeObject::JSStaticScopeObject):
2577         * runtime/JSString.h:
2578         (JSC::):
2579         (JSC::RopeBuilder::appendStringInConstruct):
2580         (JSC::RopeBuilder::appendValueInConstructAndIncrementLength):
2581         (JSC::jsSingleCharacterSubstring):
2582         (JSC::jsSubstring):
2583         * runtime/JSVariableObject.cpp:
2584         (JSC::JSVariableObject::deleteProperty):
2585         (JSC::JSVariableObject::symbolTableGet):
2586         * runtime/JSVariableObject.h:
2587         (JSC::JSVariableObject::symbolTableGet):
2588         (JSC::JSVariableObject::symbolTablePut):
2589         (JSC::JSVariableObject::symbolTablePutWithAttributes):
2590         * runtime/Lookup.cpp:
2591         (JSC::HashTable::createTable):
2592         (JSC::HashTable::deleteTable):
2593         * runtime/Lookup.h:
2594         (JSC::HashEntry::initialize):
2595         (JSC::HashEntry::setKey):
2596         (JSC::HashEntry::key):
2597         (JSC::HashTable::entry):
2598         * runtime/PropertyMapHashTable.h:
2599         (JSC::PropertyMapEntry::PropertyMapEntry):
2600         * runtime/PropertyNameArray.cpp:
2601         (JSC::PropertyNameArray::add):
2602         * runtime/PropertyNameArray.h:
2603         (JSC::PropertyNameArray::add):
2604         (JSC::PropertyNameArray::addKnownUnique):
2605         * runtime/RegExp.cpp:
2606         (JSC::RegExp::match):
2607         * runtime/RegExpCache.cpp:
2608         (JSC::RegExpCache::create):
2609         * runtime/RegExpKey.h:
2610         (JSC::RegExpKey::RegExpKey):
2611         * runtime/SmallStrings.cpp:
2612         (JSC::SmallStringsStorage::rep):
2613         (JSC::SmallStrings::singleCharacterStringRep):
2614         * runtime/SmallStrings.h:
2615         * runtime/StringPrototype.cpp:
2616         (JSC::jsSpliceSubstringsWithSeparators):
2617         (JSC::stringProtoFuncMatch):
2618         (JSC::stringProtoFuncSearch):
2619         * runtime/Structure.cpp:
2620         (JSC::Structure::~Structure):
2621         (JSC::Structure::despecifyDictionaryFunction):
2622         (JSC::Structure::addPropertyTransitionToExistingStructure):
2623         (JSC::Structure::addPropertyTransition):
2624         (JSC::Structure::copyPropertyTable):
2625         (JSC::Structure::get):
2626         (JSC::Structure::despecifyFunction):
2627         (JSC::Structure::put):
2628         (JSC::Structure::hasTransition):
2629         (JSC::Structure::remove):
2630         (JSC::Structure::checkConsistency):
2631         * runtime/Structure.h:
2632         (JSC::Structure::get):
2633         (JSC::Structure::hasTransition):
2634         * runtime/StructureTransitionTable.h:
2635         * runtime/SymbolTable.h:
2636         * runtime/UString.cpp:
2637         (JSC::UString::UString):
2638         (JSC::UString::toStrictUInt32):
2639         (JSC::UString::substr):
2640         * runtime/UString.h:
2641         (JSC::UString::UString):
2642         (JSC::UString::adopt):
2643         (JSC::UString::data):
2644         (JSC::UString::size):
2645         (JSC::UString::isNull):
2646         (JSC::UString::isEmpty):
2647         (JSC::UString::impl):
2648         (JSC::UString::cost):
2649         (JSC::operator==):
2650         (JSC::codePointCompare):
2651         (JSC::IdentifierRepHash::hash):
2652         (WTF::):
2653
2654 2010-08-10  Gavin Barraclough  <barraclough@apple.com>
2655
2656         Bug 43816 - Remove UStringImpl
2657         The class was actually removed a long time ago, replaced by StringImpl.
2658         UStringImpl is just a typedef onto StringImpl.  Remove this.
2659
2660         * API/JSClassRef.cpp:
2661         (OpaqueJSClass::OpaqueJSClass):
2662         * JavaScriptCore.xcodeproj/project.pbxproj:
2663         * runtime/JSString.cpp:
2664         (JSC::JSString::resolveRope):
2665         (JSC::JSString::replaceCharacter):
2666         * runtime/JSString.h:
2667         (JSC::RopeBuilder::RopeIterator::operator*):
2668         (JSC::RopeBuilder::JSString):
2669         (JSC::RopeBuilder::appendStringInConstruct):
2670         (JSC::RopeBuilder::appendValueInConstructAndIncrementLength):
2671         (JSC::jsSingleCharacterSubstring):
2672         (JSC::jsSubstring):
2673         * runtime/JSStringBuilder.h:
2674         (JSC::jsMakeNontrivialString):
2675         * runtime/RopeImpl.cpp:
2676         (JSC::RopeImpl::derefFibersNonRecursive):
2677         * runtime/RopeImpl.h:
2678         (JSC::RopeImpl::deref):
2679         * runtime/SmallStrings.cpp:
2680         (JSC::SmallStringsStorage::SmallStringsStorage):
2681         * runtime/StringConstructor.cpp:
2682         (JSC::stringFromCharCodeSlowCase):
2683         * runtime/StringPrototype.cpp:
2684         (JSC::jsSpliceSubstringsWithSeparators):
2685         (JSC::stringProtoFuncFontsize):
2686         (JSC::stringProtoFuncLink):
2687         * runtime/UString.cpp:
2688         (JSC::initializeUString):
2689         * runtime/UString.h:
2690         (JSC::UString::adopt):
2691         (JSC::tryMakeString):
2692         (JSC::makeString):
2693         * runtime/UStringImpl.h: Removed.
2694
2695 2010-08-10  Patrick Gansterer  <paroga@paroga.com>
2696
2697         Reviewed by Eric Seidel.
2698
2699         Make FastMalloc more portable.
2700         https://bugs.webkit.org/show_bug.cgi?id=41790
2701
2702         * wtf/FastMalloc.cpp:
2703         (WTF::TCMalloc_Central_FreeList::Populate):
2704         (WTF::TCMalloc_ThreadCache::CreateCacheIfNecessary):
2705
2706 2010-08-10  Patrick Gansterer  <paroga@paroga.com>
2707
2708         Reviewed by David Levin.
2709
2710         [WINCE] Buildfix for CE 6.0
2711         https://bugs.webkit.org/show_bug.cgi?id=43027
2712
2713         CE 6.0 doesn't define localtime in the system include files.
2714
2715         * wtf/Platform.h: Include ce_time.h on all OS(WINCE).
2716
2717 2010-08-10  Gavin Barraclough  <barraclough@apple.com>
2718
2719         Rubber stamped by Sam Weinig.
2720
2721         Bug 43786 - Move AtomicStringHash from WebCore to WTF
2722         Also remove deprecated string headers from WebCore/platform/text.
2723
2724         * GNUmakefile.am:
2725         * JavaScriptCore.gypi:
2726         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
2727         * JavaScriptCore.xcodeproj/project.pbxproj:
2728         * wtf/text/AtomicString.h:
2729         * wtf/text/AtomicStringHash.h: Copied from WebCore/platform/text/AtomicStringHash.h.
2730
2731 2010-08-09  Oliver Hunt  <oliver@apple.com>
2732
2733         Fix Qt/ARM again, this time including the other changed file.
2734
2735         * jit/JIT.h:
2736
2737 2010-08-09  Oliver Hunt  <oliver@apple.com>
2738
2739         Fix Qt/ARM
2740
2741         C++ overload resolution I stab at thee
2742
2743         * jit/JITInlineMethods.h:
2744         (JSC::JIT::beginUninterruptedSequence):
2745         (JSC::JIT::endUninterruptedSequence):
2746
2747 2010-08-09  Oliver Hunt  <oliver@apple.com>
2748
2749         Reviewed by Gavin Barraclough.
2750
2751         Allow an assembler/macroassembler to compact branches to more concise forms when linking
2752         https://bugs.webkit.org/show_bug.cgi?id=43745
2753
2754         This patch makes it possible for an assembler to convert jumps into a different
2755         (presumably more efficient) form at link time.  Currently implemented in the
2756         ARMv7 JIT as that already had logic to delay linking of jumps until the end of
2757         compilation already.  The ARMv7 JIT chooses between either a 4 byte short jump
2758         or a full 32-bit offset (and rewrites ITTT instructions as appropriate), so does
2759         not yet produce the most compact form possible.  The general design of the linker
2760         should make it relatively simple to introduce new branch types with little effort,
2761         as the linker has no knowledge of the exact form of any of the branches.
2762
2763         * JavaScriptCore.xcodeproj/project.pbxproj:
2764         * assembler/ARMv7Assembler.cpp: Added.
2765         (JSC::):
2766           Record jump sizes
2767
2768         * assembler/ARMv7Assembler.h:
2769         (JSC::ARMv7Assembler::LinkRecord::LinkRecord):
2770         (JSC::ARMv7Assembler::LinkRecord::from):
2771         (JSC::ARMv7Assembler::LinkRecord::setFrom):
2772         (JSC::ARMv7Assembler::LinkRecord::to):
2773         (JSC::ARMv7Assembler::LinkRecord::type):
2774         (JSC::ARMv7Assembler::LinkRecord::linkType):
2775         (JSC::ARMv7Assembler::LinkRecord::setLinkType):
2776           Encapsulate LinkRecord fields so we can compress the values somewhat
2777
2778         (JSC::ARMv7Assembler::JmpSrc::JmpSrc):
2779           Need to record the jump type now
2780
2781         (JSC::ARMv7Assembler::b):
2782         (JSC::ARMv7Assembler::blx):
2783         (JSC::ARMv7Assembler::bx):
2784           Need to pass the jump types
2785
2786         (JSC::ARMv7Assembler::executableOffsetFor):
2787         (JSC::ARMv7Assembler::jumpSizeDelta):
2788         (JSC::ARMv7Assembler::linkRecordSourceComparator):
2789         (JSC::ARMv7Assembler::computeJumpType):
2790         (JSC::ARMv7Assembler::convertJumpTo):
2791         (JSC::ARMv7Assembler::recordLinkOffsets):
2792         (JSC::ARMv7Assembler::jumpsToLink):
2793         (JSC::ARMv7Assembler::link):
2794         (JSC::ARMv7Assembler::unlinkedCode):
2795           Helper functions for the linker
2796
2797         (JSC::ARMv7Assembler::linkJump):
2798         (JSC::ARMv7Assembler::canBeShortJump):
2799         (JSC::ARMv7Assembler::linkLongJump):
2800         (JSC::ARMv7Assembler::linkShortJump):
2801         (JSC::ARMv7Assembler::linkJumpAbsolute):
2802            Moving code around for the various jump linking functions
2803
2804         * assembler/AbstractMacroAssembler.h:
2805         (JSC::AbstractMacroAssembler::beginUninterruptedSequence):
2806         (JSC::AbstractMacroAssembler::endUninterruptedSequence):
2807           We have to track uninterrupted sequences in any assembler that compacts
2808           branches as that's not something we're allowed to do in such sequences.
2809           AbstractMacroAssembler has a nop version of these functions as it makes the
2810           code elsewhere nicer.
2811
2812         * assembler/LinkBuffer.h:
2813         (JSC::LinkBuffer::LinkBuffer):
2814         (JSC::LinkBuffer::link):
2815         (JSC::LinkBuffer::patch):
2816         (JSC::LinkBuffer::locationOf):
2817         (JSC::LinkBuffer::locationOfNearCall):
2818         (JSC::LinkBuffer::returnAddressOffset):
2819         (JSC::LinkBuffer::trampolineAt):
2820           Updated these functions to adjust for any changed offsets in the linked code
2821
2822         (JSC::LinkBuffer::applyOffset):
2823           A helper function to deal with the now potentially moved labels
2824
2825         (JSC::LinkBuffer::linkCode):
2826           The new and mighty linker function
2827
2828         * assembler/MacroAssemblerARMv7.h:
2829         (JSC::MacroAssemblerARMv7::MacroAssemblerARMv7):
2830         (JSC::MacroAssemblerARMv7::beginUninterruptedSequence):
2831         (JSC::MacroAssemblerARMv7::endUninterruptedSequence):
2832         (JSC::MacroAssemblerARMv7::jumpsToLink):
2833         (JSC::MacroAssemblerARMv7::unlinkedCode):
2834         (JSC::MacroAssemblerARMv7::computeJumpType):
2835         (JSC::MacroAssemblerARMv7::convertJumpTo):
2836         (JSC::MacroAssemblerARMv7::recordLinkOffsets):
2837         (JSC::MacroAssemblerARMv7::jumpSizeDelta):
2838         (JSC::MacroAssemblerARMv7::link):
2839         (JSC::MacroAssemblerARMv7::jump):
2840         (JSC::MacroAssemblerARMv7::branchMul32):
2841         (JSC::MacroAssemblerARMv7::breakpoint):
2842         (JSC::MacroAssemblerARMv7::nearCall):
2843         (JSC::MacroAssemblerARMv7::call):
2844         (JSC::MacroAssemblerARMv7::ret):
2845         (JSC::MacroAssemblerARMv7::tailRecursiveCall):
2846         (JSC::MacroAssemblerARMv7::executableOffsetFor):
2847         (JSC::MacroAssemblerARMv7::inUninterruptedSequence):
2848         (JSC::MacroAssemblerARMv7::makeJump):
2849         (JSC::MacroAssemblerARMv7::makeBranch):
2850            All branches need to pass on their type now
2851
2852         * jit/ExecutableAllocator.h:
2853         (JSC::ExecutablePool::returnLastBytes):
2854            We can't know ahead of time how much space will be necessary to
2855            hold the linked code if we're compacting branches, this new
2856            function allows us to return the unused bytes at the end of linking
2857
2858         * jit/JIT.cpp:
2859         (JSC::JIT::JIT):
2860         (JSC::JIT::privateCompile):
2861         * jit/JIT.h:
2862         (JSC::JIT::compile):
2863            The JIT class now needs to take a linker offset so that recompilation
2864            can generate the same jumps when using branch compaction.
2865         * jit/JITArithmetic32_64.cpp:
2866         (JSC::JIT::emitSlow_op_mod):
2867         * jit/JITOpcodes.cpp:
2868         (JSC::JIT::privateCompileCTIMachineTrampolines):
2869         * jit/JITOpcodes32_64.cpp:
2870         (JSC::JIT::privateCompileCTIMachineTrampolines):
2871         (JSC::JIT::privateCompileCTINativeCall):
2872           Update for new trampolineAt changes
2873
2874         * wtf/FastMalloc.cpp:
2875         (WTF::TCMallocStats::):
2876         * wtf/Platform.h:
2877
2878 2010-08-09  Gavin Barraclough  <barraclough@apple.com>
2879
2880         Qt build fix III.
2881
2882         * wtf/text/WTFString.h:
2883
2884 2010-08-09  Gavin Barraclough  <barraclough@apple.com>
2885
2886         Qt build fix.
2887
2888         * wtf/qt/StringQt.cpp:
2889
2890 2010-08-06  Gavin Barraclough  <barraclough@apple.com>
2891
2892         Rubber stamped by Sam Weinig
2893
2894         Bug 43594 - Add string forwards to Forward.h
2895         This allows us to remove forward declarations for these classes from
2896         WebCore/WebKit (a step in moving these class from WebCore:: to WTF::).
2897
2898         * JavaScriptCore.xcodeproj/project.pbxproj:
2899         * wtf/Forward.h:
2900
2901 2010-08-07  Sheriff Bot  <webkit.review.bot@gmail.com>
2902
2903         Unreviewed, rolling out r64938.
2904         http://trac.webkit.org/changeset/64938
2905         https://bugs.webkit.org/show_bug.cgi?id=43685
2906
2907         Did not compile on several ports (Requested by abarth on
2908         #webkit).
2909
2910         * Android.mk:
2911         * CMakeLists.txt:
2912         * GNUmakefile.am:
2913         * JavaScriptCore.gypi:
2914         * JavaScriptCore.pro:
2915         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
2916         * JavaScriptCore.xcodeproj/project.pbxproj:
2917         * assembler/AbstractMacroAssembler.h:
2918         * assembler/MacroAssembler.h:
2919         * assembler/MacroAssemblerX86.h:
2920         (JSC::MacroAssemblerX86::load32):
2921         (JSC::MacroAssemblerX86::store32):
2922         * assembler/X86Assembler.h:
2923         (JSC::X86Assembler::movl_rm):
2924         (JSC::X86Assembler::movl_mr):
2925         * bytecode/CodeBlock.cpp:
2926         (JSC::CodeBlock::markAggregate):
2927         * bytecode/Instruction.h:
2928         (JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::):
2929         (JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::set):
2930         (JSC::PolymorphicAccessStructureList::PolymorphicAccessStructureList):
2931         * bytecode/StructureStubInfo.cpp:
2932         (JSC::StructureStubInfo::deref):
2933         * bytecode/StructureStubInfo.h:
2934         (JSC::StructureStubInfo::initGetByIdProto):
2935         (JSC::StructureStubInfo::initGetByIdChain):
2936         (JSC::StructureStubInfo::):
2937         * jit/JIT.h:
2938         * jit/JITMarkObjects.cpp: Removed.
2939         * jit/JITPropertyAccess.cpp:
2940         (JSC::JIT::compileGetDirectOffset):
2941         (JSC::JIT::testPrototype):
2942         (JSC::JIT::privateCompilePutByIdTransition):
2943         (JSC::JIT::privateCompileGetByIdProto):
2944         (JSC::JIT::privateCompileGetByIdProtoList):
2945         (JSC::JIT::privateCompileGetByIdChainList):
2946         (JSC::JIT::privateCompileGetByIdChain):
2947         * jit/JITPropertyAccess32_64.cpp:
2948         (JSC::JIT::compileGetDirectOffset):
2949         (JSC::JIT::testPrototype):
2950         (JSC::JIT::privateCompilePutByIdTransition):
2951         (JSC::JIT::privateCompileGetByIdProto):
2952         (JSC::JIT::privateCompileGetByIdProtoList):
2953         (JSC::JIT::privateCompileGetByIdChainList):
2954         (JSC::JIT::privateCompileGetByIdChain):
2955         * jit/JITStubs.cpp:
2956         (JSC::setupPolymorphicProtoList):
2957         * wtf/Platform.h:
2958
2959 2010-08-07  Nathan Lawrence  <nlawrence@apple.com>
2960
2961         Reviewed by Geoffrey Garen.
2962
2963         The JIT code contains a number of direct references to GC'd objects.
2964         When we have movable objects, these references will need to be
2965         updated.
2966
2967         * Android.mk:
2968         * CMakeLists.txt:
2969         * GNUmakefile.am:
2970         * JavaScriptCore.gypi:
2971         * JavaScriptCore.pro:
2972         * JavaScriptCore.xcodeproj/project.pbxproj:
2973         * assembler/AbstractMacroAssembler.h:
2974         (JSC::AbstractMacroAssembler::int32AtLocation):
2975         (JSC::AbstractMacroAssembler::pointerAtLocation):
2976         (JSC::AbstractMacroAssembler::jumpTarget):
2977         * assembler/MacroAssembler.h:
2978         (JSC::MacroAssembler::loadPtrWithPatch):
2979             Normally, loadPtr will optimize when the register is eax.  Since
2980             the slightly smaller instruction changes the offsets, it messes up
2981             our ability to repatch the code.  We added this new instruction
2982             that garuntees a constant size.
2983         * assembler/MacroAssemblerX86.h:
2984         (JSC::MacroAssemblerX86::load32WithPatch):
2985             Changed load32 in the same way described above.
2986         (JSC::MacroAssemblerX86::load32):
2987             Moved the logic to optimize laod32 from movl_mr to load32
2988         (JSC::MacroAssemblerX86::store32):
2989             Moved the logic to optimize store32 from movl_rm to store32
2990         * assembler/X86Assembler.h:
2991         (JSC::X86Assembler::movl_rm):
2992         (JSC::X86Assembler::movl_mr):
2993         (JSC::X86Assembler::int32AtLocation):
2994         (JSC::X86Assembler::pointerAtLocation):
2995         (JSC::X86Assembler::jumpTarget):
2996         * bytecode/CodeBlock.cpp:
2997         (JSC::CodeBlock::markAggregate):
2998         * bytecode/Instruction.h:
2999             As described in StructureStubInfo.h, we needed to add additional
3000             fields to both StructureStubInfo and
3001             PolymorphicAccessStructureList so that we can determine the
3002             structure of the JITed code at patch time.
3003         (JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::set):
3004         (JSC::PolymorphicAccessStructureList::PolymorphicAccessStructureList):
3005         * bytecode/StructureStubInfo.cpp:
3006         (JSC::StructureStubInfo::markAggregate):
3007             Added this function to mark the JITed code that correosponds to
3008             this structure stub info.
3009         * bytecode/StructureStubInfo.h:
3010         (JSC::StructureStubInfo::initGetByIdProto):
3011         (JSC::StructureStubInfo::initGetByIdChain):
3012         (JSC::StructureStubInfo::):
3013         * jit/JIT.h:
3014         * jit/JITMarkObjects.cpp: Added.
3015         (JSC::JIT::patchPrototypeStructureAddress):
3016         (JSC::JIT::patchGetDirectOffset):
3017         (JSC::JIT::markGetByIdProto):
3018         (JSC::JIT::markGetByIdChain):
3019         (JSC::JIT::markGetByIdProtoList):
3020         (JSC::JIT::markPutByIdTransition):
3021         (JSC::JIT::markGlobalObjectReference):
3022         * jit/JITPropertyAccess.cpp:
3023             Added asserts for the patch offsets.
3024         (JSC::JIT::compileGetDirectOffset):
3025         (JSC::JIT::testPrototype):
3026         (JSC::JIT::privateCompilePutByIdTransition):
3027         (JSC::JIT::privateCompileGetByIdProto):
3028         (JSC::JIT::privateCompileGetByIdProtoList):
3029         (JSC::JIT::privateCompileGetByIdChainList):
3030         (JSC::JIT::privateCompileGetByIdChain):
3031         * jit/JITPropertyAccess32_64.cpp:
3032         (JSC::JIT::compileGetDirectOffset):
3033         (JSC::JIT::testPrototype):
3034         (JSC::JIT::privateCompilePutByIdTransition):
3035         (JSC::JIT::privateCompileGetByIdProto):
3036         (JSC::JIT::privateCompileGetByIdProtoList):
3037         (JSC::JIT::privateCompileGetByIdChainList):
3038         (JSC::JIT::privateCompileGetByIdChain):
3039         * jit/JITStubs.cpp:
3040         (JSC::setupPolymorphicProtoList):
3041         * wtf/Platform.h:
3042             Added ENABLE_MOVABLE_GC_OBJECTS flag
3043
3044 2010-08-07  Michael Saboff  <msaboff@apple.com>
3045
3046         Reviewed by Geoffrey Garen.
3047
3048         Revert JSArray to point to the beginning of the contained ArrayStorage
3049         struct.  This is described in
3050         https://bugs.webkit.org/show_bug.cgi?id=43526.
3051
3052         * jit/JITPropertyAccess.cpp:
3053         (JSC::JIT::emit_op_get_by_val):
3054         (JSC::JIT::emit_op_put_by_val):
3055         (JSC::JIT::privateCompilePatchGetArrayLength):
3056         * jit/JITPropertyAccess32_64.cpp:
3057         (JSC::JIT::emit_op_get_by_val):
3058         (JSC::JIT::emit_op_put_by_val):
3059         (JSC::JIT::privateCompilePatchGetArrayLength):
3060         * runtime/JSArray.cpp:
3061         (JSC::JSArray::JSArray):
3062         (JSC::JSArray::~JSArray):
3063         (JSC::JSArray::getOwnPropertySlot):
3064         (JSC::JSArray::getOwnPropertyDescriptor):
3065         (JSC::JSArray::put):
3066         (JSC::JSArray::putSlowCase):
3067         (JSC::JSArray::deleteProperty):
3068         (JSC::JSArray::getOwnPropertyNames):
3069         (JSC::JSArray::getNewVectorLength):
3070         (JSC::JSArray::increaseVectorLength):
3071         (JSC::JSArray::increaseVectorPrefixLength):
3072         (JSC::JSArray::setLength):
3073         (JSC::JSArray::pop):
3074         (JSC::JSArray::push):
3075         (JSC::JSArray::shiftCount):
3076         (JSC::JSArray::unshiftCount):
3077         (JSC::JSArray::sortNumeric):
3078         (JSC::JSArray::sort):
3079         (JSC::JSArray::fillArgList):
3080         (JSC::JSArray::copyToRegisters):
3081         (JSC::JSArray::compactForSorting):
3082         (JSC::JSArray::subclassData):
3083         (JSC::JSArray::setSubclassData):
3084         (JSC::JSArray::checkConsistency):
3085         * runtime/JSArray.h:
3086         (JSC::JSArray::length):
3087         (JSC::JSArray::canGetIndex):
3088         (JSC::JSArray::getIndex):
3089         (JSC::JSArray::setIndex):
3090         (JSC::JSArray::uncheckedSetIndex):
3091         (JSC::JSArray::markChildrenDirect):
3092
3093 2010-08-07  Kwang Yul Seo  <skyul@company100.net>
3094
3095         Reviewed by Eric Seidel.
3096
3097         Add ENABLE(YARR) guard around JSGlobalData::m_regexAllocator
3098         https://bugs.webkit.org/show_bug.cgi?id=43399
3099
3100         m_regexAllocator is used only by RegExp::compile which is guarded with ENABLE(YARR).
3101
3102         * runtime/JSGlobalData.h:
3103
3104 2010-08-07  Patrick Roland Gansterer  <paroga@paroga.com>
3105
3106         Reviewed by Eric Seidel.
3107
3108         [Qt] Enable JIT on WinCE
3109         https://bugs.webkit.org/show_bug.cgi?id=43303
3110
3111         Add ExtraCompiler for generating GeneratedJITStubs_MSVC.asm.
3112
3113         * DerivedSources.pro:
3114
3115 2010-08-07  Dan Bernstein  <mitz@apple.com>
3116
3117         Reviewed by Anders Carlsson.
3118
3119         Created a separate SimpleFontData constructor exclusively for SVG fonts and moved the CTFontRef
3120         from SimpleFontData to FontPlatformData.
3121         https://bugs.webkit.org/show_bug.cgi?id=43674
3122
3123         * wtf/Platform.h: Moved definitions of WTF_USE_CORE_TEXT and WTF_USE_ATSUI here from WebCore/config.h.
3124
3125 2010-08-07  Zoltan Herczeg  <zherczeg@webkit.org>
3126
3127         Reviewed by Eric Seidel.
3128
3129         Bitmap.h has no default constructor
3130         https://bugs.webkit.org/show_bug.cgi?id=43619
3131
3132         Without a constructor, the initial bits of the Bitmap class
3133         are undefinied. If only a few, or zero bits are 0, the memory
3134         area provided by AlignedMemoryAllocator can be easly exhausted.
3135
3136         Csaba Osztrogonác helped to find this bug.
3137
3138         * wtf/Bitmap.h:
3139         (WTF::::Bitmap):
3140
3141 2010-08-06  Rafael Antognolli  <antognolli@profusion.mobi>
3142
3143         [EFL] Build fix.
3144
3145         * CMakeLists.txt: add runtime/CGHandle.cpp.
3146
3147 2010-08-06  Jessie Berlin  <jberlin@apple.com>
3148
3149         Roll out http://trac.webkit.org/changeset/64801, which broke the Safari Windows Build.
3150         Unreviewed.
3151
3152         * JavaScriptCore.xcodeproj/project.pbxproj:
3153         * wtf/Forward.h:
3154
3155 2010-08-06  Jessie Berlin  <jberlin@apple.com>
3156
3157         Windows Build Fix (continued). Unreviewed.
3158
3159         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3160
3161 2010-08-06  Jessie Berlin  <jberlin@apple.com>
3162
3163         Windows Build Fix. Unreviewed.
3164
3165         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
3166         Add GCHandle.h and GCHandle.cpp.
3167
3168 2010-08-06  Nathan Lawrence  <nlawrence@apple.com>
3169
3170         Reviewed by Geoffrey Garen.
3171
3172         https://bugs.webkit.org/show_bug.cgi?id=43207
3173
3174         WeakGCPtr's should instead of directly pointing to the GC'd object
3175         should be directed to an array of pointers that can be updated for
3176         movable objects.
3177
3178         * Android.mk:
3179         * GNUmakefile.am:
3180         * JavaScriptCore.exp:
3181         * JavaScriptCore.gypi:
3182         * JavaScriptCore.pro:
3183         * JavaScriptCore.xcodeproj/project.pbxproj:
3184         * runtime/Collector.cpp:
3185         (JSC::Heap::destroy):
3186         (JSC::Heap::allocateBlock):
3187         (JSC::Heap::freeBlock):
3188         (JSC::Heap::updateWeakGCHandles):
3189         (JSC::WeakGCHandlePool::update):
3190         (JSC::Heap::addWeakGCHandle):
3191         (JSC::Heap::markRoots):
3192         * runtime/Collector.h:
3193         (JSC::Heap::weakGCHandlePool):
3194         * runtime/GCHandle.cpp: Added.
3195         (JSC::WeakGCHandle::pool):
3196         (JSC::WeakGCHandlePool::WeakGCHandlePool):
3197         (JSC::WeakGCHandlePool::allocate):
3198         (JSC::WeakGCHandlePool::free):
3199         (JSC::WeakGCHandlePool::operator new):
3200         * runtime/GCHandle.h: Added.
3201         (JSC::WeakGCHandle::isValidPtr):
3202         (JSC::WeakGCHandle::isPtr):
3203         (JSC::WeakGCHandle::isNext):
3204         (JSC::WeakGCHandle::invalidate):
3205         (JSC::WeakGCHandle::get):
3206         (JSC::WeakGCHandle::set):
3207         (JSC::WeakGCHandle::getNextInFreeList):
3208         (JSC::WeakGCHandle::setNextInFreeList):
3209         (JSC::WeakGCHandlePool::isFull):
3210         * runtime/WeakGCPtr.h:
3211         (JSC::WeakGCPtr::WeakGCPtr):
3212         (JSC::WeakGCPtr::~WeakGCPtr):
3213         (JSC::WeakGCPtr::get):
3214         (JSC::WeakGCPtr::clear):
3215         (JSC::WeakGCPtr::assign):
3216         (JSC::get):
3217
3218 2010-08-06  Tor Arne Vestbø  <tor.arne.vestbo@nokia.com>
3219
3220         Reviewed by Antonio Gomes.
3221
3222         [Qt] Fix warnings about difference in symbol visiblity on Mac OS X
3223
3224         * jsc.pro:
3225
3226 2010-08-06  Zoltan Herczeg  <zherczeg@webkit.org>
3227
3228         Reviewed by Darin Adler.
3229
3230         Refactor identifier parsing in lexer
3231         https://bugs.webkit.org/show_bug.cgi?id=41845
3232
3233         The code is refactored to avoid gotos. The new code
3234         has the same performance as the old one.
3235
3236         SunSpider --parse-only: no change (from 34.0ms to 33.6ms)
3237         SunSpider: no change (from 523.2ms to 523.5ms)
3238
3239         * parser/Lexer.cpp:
3240         (JSC::Lexer::parseIdent):
3241         (JSC::Lexer::lex):
3242         * parser/Lexer.h:
3243
3244 2010-08-06  Gabor Loki  <loki@webkit.org>
3245
3246         Reviewed by Gavin Barraclough.
3247
3248         The ARM JIT does not support JSValue32_64 with RVCT
3249         https://bugs.webkit.org/show_bug.cgi?id=43411
3250
3251         JSValue32_64 is enabled for RVCT by default.
3252
3253         * create_jit_stubs:
3254         * jit/JITStubs.cpp:
3255         (JSC::ctiTrampoline):
3256         (JSC::ctiVMThrowTrampoline):
3257         (JSC::ctiOpThrowNotCaught):
3258         * wtf/Platform.h:
3259
3260 2010-08-05  Chao-ying Fu  <fu@mips.com>
3261
3262         Reviewed by Darin Adler.
3263
3264         Define WTF_USE_ARENA_ALLOC_ALIGNMENT_INTEGER for MIPS
3265         https://bugs.webkit.org/show_bug.cgi?id=43514
3266
3267         MIPS needs to define WTF_USE_ARENA_ALLOC_ALIGNMENT_INTEGER, so that
3268         RenderArena::allocate() can return 8-byte aligned memory to avoid
3269         exceptions on sdc1/ldc1.
3270
3271         * wtf/Platform.h:
3272
3273 2010-08-05  Gavin Barraclough  <barraclough@apple.com>
3274
3275         Rubber stamped by Sam Weinig
3276
3277         Bug 43594 - Add string forwards to Forward.h
3278         This allows us to remove forward declarations for these classes from
3279         WebCore/WebKit (a step in moving these class from WebCore:: to WTF::).
3280
3281         * JavaScriptCore.xcodeproj/project.pbxproj:
3282         * wtf/Forward.h:
3283
3284 2010-08-05  Geoffrey Garen  <ggaren@apple.com>
3285
3286         Reviewed by Mark Rowe.
3287
3288         Fixed leak seen on buildbot.
3289
3290         * runtime/GCActivityCallbackCF.cpp:
3291         (JSC::DefaultGCActivityCallback::DefaultGCActivityCallback):
3292         (JSC::DefaultGCActivityCallback::~DefaultGCActivityCallback):
3293         (JSC::DefaultGCActivityCallback::operator()): Make out timer a RetainPtr,
3294         since anything less would be uncivilized.
3295
3296 2010-08-05  Andy Estes  <aestes@apple.com>
3297
3298         Reviewed by David Kilzer.
3299
3300         Rename iOS-related OS and PLATFORM macros.
3301         https://bugs.webkit.org/show_bug.cgi?id=43493
3302         
3303         Rename WTF_OS_IPHONE_OS to WTF_OS_IOS, WTF_PLATFORM_IPHONE to
3304         WTF_PLATFORM_IOS, and WTF_PLATFORM_IPHONE_SIMULATOR to
3305         WTF_PLATFORM_IOS_SIMULATOR.
3306
3307         * jit/ExecutableAllocator.h:
3308         * jit/JITStubs.cpp:
3309         * profiler/ProfilerServer.mm:
3310         (-[ProfilerServer init]):
3311         * wtf/FastMalloc.cpp:
3312         (WTF::TCMallocStats::):
3313         * wtf/Platform.h:
3314         * wtf/unicode/icu/CollatorICU.cpp:
3315         (WTF::Collator::userDefault):
3316
3317 2010-08-05  Nathan Lawrence  <nlawrence@apple.com>
3318
3319         Reviewed by Darin Adler.
3320
3321         https://bugs.webkit.org/show_bug.cgi?id=43464
3322
3323         Currently, the global object is being embedded in the JavaScriptCore
3324         bytecode, however since the global object is the same for all opcodes
3325         in a code block, we can have the global object just be a member of the
3326         associated code block.
3327
3328         Additionally, I added an assert inside of emitOpcode that verifies
3329         that the last generated opcode was of the correct length.
3330
3331         * bytecode/CodeBlock.cpp:
3332         (JSC::CodeBlock::CodeBlock):
3333         (JSC::CodeBlock::derefStructures):
3334         (JSC::CodeBlock::markAggregate):
3335         * bytecode/CodeBlock.h:
3336         (JSC::CodeBlock::globalObject):
3337         (JSC::GlobalCodeBlock::GlobalCodeBlock):
3338         (JSC::ProgramCodeBlock::ProgramCodeBlock):
3339         (JSC::EvalCodeBlock::EvalCodeBlock):
3340         (JSC::FunctionCodeBlock::FunctionCodeBlock):
3341         * bytecode/Opcode.h:
3342         (JSC::opcodeLength):
3343         * bytecompiler/BytecodeGenerator.cpp:
3344         (JSC::BytecodeGenerator::BytecodeGenerator):
3345         (JSC::BytecodeGenerator::emitOpcode):
3346             Added an assert to check that the last generated opcode is the
3347             correct length.
3348         (JSC::BytecodeGenerator::rewindBinaryOp):
3349             Changed the last opcode to op_end since the length will no longer
3350             be correct.
3351         (JSC::BytecodeGenerator::rewindUnaryOp):
3352             Changed the last opcode to op_end since the length will no longer
3353             be correct.
3354         (JSC::BytecodeGenerator::emitResolve):
3355         (JSC::BytecodeGenerator::emitGetScopedVar):
3356         (JSC::BytecodeGenerator::emitPutScopedVar):
3357         (JSC::BytecodeGenerator::emitResolveWithBase):
3358         * bytecompiler/BytecodeGenerator.h:
3359         * interpreter/Interpreter.cpp:
3360         (JSC::Interpreter::resolveGlobal):
3361         (JSC::Interpreter::resolveGlobalDynamic):
3362         (JSC::Interpreter::privateExecute):
3363         * jit/JITOpcodes.cpp:
3364         (JSC::JIT::emit_op_get_global_var):
3365         (JSC::JIT::emit_op_put_global_var):
3366         (JSC::JIT::emit_op_resolve_global):
3367         (JSC::JIT::emitSlow_op_resolve_global):
3368         (JSC::JIT::emit_op_resolve_global_dynamic):
3369         (JSC::JIT::emitSlow_op_resolve_global_dynamic):
3370         * jit/JITOpcodes32_64.cpp:
3371         (JSC::JIT::emit_op_get_global_var):
3372         (JSC::JIT::emit_op_put_global_var):
3373         (JSC::JIT::emit_op_resolve_global):
3374         (JSC::JIT::emitSlow_op_resolve_global):
3375         * jit/JITStubs.cpp:
3376         (JSC::cti_op_resolve_global):
3377         * runtime/Executable.cpp:
3378         (JSC::FunctionExecutable::compileForCallInternal):
3379         (JSC::FunctionExecutable::compileForConstructInternal):
3380         (JSC::FunctionExecutable::reparseExceptionInfo):
3381
3382 2010-08-05  Gavin Barraclough  <barraclough@apple.com>
3383
3384         Reviewed by Sam Weinig.
3385
3386         Bug 43185 - Switch RegisterFile over to use PageAllocation
3387
3388         Remove platform-specific memory allocation code.
3389
3390         * interpreter/RegisterFile.cpp:
3391         (JSC::RegisterFile::~RegisterFile):
3392         (JSC::RegisterFile::releaseExcessCapacity):
3393         * interpreter/RegisterFile.h:
3394         (JSC::RegisterFile::RegisterFile):
3395         (JSC::RegisterFile::grow):
3396         (JSC::RegisterFile::checkAllocatedOkay):
3397         * wtf/PageAllocation.cpp:
3398         (WTF::PageAllocation::lastError):
3399         * wtf/PageAllocation.h:
3400         (WTF::PageAllocation::allocate):
3401         (WTF::PageAllocation::allocateAt):
3402         (WTF::PageAllocation::allocateAligned):
3403         (WTF::PageAllocation::pageSize):
3404         (WTF::PageAllocation::isPageAligned):
3405         (WTF::PageAllocation::isPowerOfTwo):
3406         * wtf/PageReservation.h:
3407         (WTF::PageReservation::commit):
3408         (WTF::PageReservation::decommit):
3409         (WTF::PageReservation::reserve):
3410         (WTF::PageReservation::reserveAt):
3411
3412 2010-08-05  Michael Saboff  <msaboff@apple.com>
3413
3414         Reviewed by Darin Adler.
3415
3416         Fixed https://bugs.webkit.org/show_bug.cgi?id=43401 where array 
3417         content aren't properly initialized as part of unshift.  
3418
3419         * runtime/JSArray.cpp:
3420         (JSC::JSArray::unshiftCount):
3421
3422 2010-08-05  Jian Li  <jianli@chromium.org>
3423
3424         Reviewed by David Levin.
3425
3426         Unify blob related feature defines to ENABLE(BLOB).
3427         https://bugs.webkit.org/show_bug.cgi?id=43081
3428
3429         * Configurations/FeatureDefines.xcconfig:
3430
3431 2010-08-05  Gustavo Noronha Silva  <gustavo.noronha@collabora.co.uk>
3432
3433         Rubber-stamped by Xan Lopez.
3434
3435         Remove GHashTable left-overs. GHashTable is ref-counted, and is
3436         correctly supported by GRefPtr.
3437
3438         * wtf/gobject/GOwnPtr.h:
3439
3440 2010-08-05  Gustavo Noronha Silva  <gustavo.noronha@collabora.co.uk>
3441
3442         Unreviewed.
3443
3444         Typo fix that makes distcheck happy.
3445
3446         * GNUmakefile.am:
3447
3448 2010-08-03  Geoffrey Garen  <ggaren@apple.com>
3449
3450         Reviewed by Oliver Hunt and Beth Dakin.
3451
3452         https://bugs.webkit.org/show_bug.cgi?id=43461
3453         Invalid NaN parsing
3454         
3455         * wtf/dtoa.cpp: Turn off the dtoa feature that allows you to specify a
3456         non-standard NaN representation, since our NaN encoding assumes that all
3457         true NaNs have the standard bit pattern.
3458
3459         * API/JSValueRef.cpp:
3460         (JSValueMakeNumber): Don't allow an API client to accidentally specify
3461         a non-standard NaN either.
3462
3463 2010-08-04  Gavin Barraclough  <barraclough@apple.com>
3464
3465         Windows build fix part II.
3466
3467         * wtf/PageReservation.h:
3468         (WTF::PageReservation::systemReserve):
3469
3470 2010-08-04  Gavin Barraclough  <barraclough@apple.com>
3471
3472         Windows build fix.
3473
3474         * wtf/PageReservation.h:
3475         (WTF::PageReservation::systemReserve):
3476
3477 2010-08-04  Gavin Barraclough  <barraclough@apple.com>
3478
3479         Build fix - add new header to !Mac projects.
3480
3481         * GNUmakefile.am:
3482         * JavaScriptCore.gypi:
3483         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
3484
3485 2010-08-04  Gavin Barraclough  <barraclough@apple.com>
3486
3487         Reviewed by Sam Weinig.
3488
3489         Bug 43515 - Fix small design issues with PageAllocation, split out PageReservation.
3490
3491         The PageAllocation class has a number of issues:
3492         * Changes in bug #43269 accidentally switched SYMBIAN over to use malloc/free to allocate
3493           blocks of memory for the GC heap, instead of allocating RChunks.  Revert this change in
3494           behaviour.
3495         * In order for PageAllocation to work correctly on WinCE we should be decommitting memory
3496           before deallocating.  In order to simplify understanding the expected state at deallocate,
3497           split behaviour out into PageAllocation and PageReservation classes.  Require that all
3498           memory be decommitted before calling deallocate on a PageReservation, add asserts to
3499           enforce this.
3500         * add many missing asserts.
3501         * inline more functions.
3502         * remove ability to create sub-PageAllocations from an existing PageAllocations object -
3503           this presented an interface that would allow sub regions to be deallocated, which would
3504           not have provided expected behaviour.
3505         * remove writable/executable arguments to commit, this value can be cached at the point
3506           the memory is reserved.
3507         * remove writable/executable arguments to allocateAligned, protection other than RW is not
3508           supported.
3509         * add missing checks for overflow & failed allocation to mmap path through allocateAligned.
3510
3511         * JavaScriptCore.xcodeproj/project.pbxproj:
3512         * jit/ExecutableAllocator.cpp:
3513         (JSC::ExecutableAllocator::intializePageSize):
3514         * jit/ExecutableAllocator.h:
3515         (JSC::ExecutablePool::Allocation::Allocation):
3516         (JSC::ExecutablePool::Allocation::base):
3517         (JSC::ExecutablePool::Allocation::size):
3518         (JSC::ExecutablePool::Allocation::operator!):
3519         * jit/ExecutableAllocatorFixedVMPool.cpp:
3520         (JSC::FixedVMPoolAllocator::reuse):
3521         (JSC::FixedVMPoolAllocator::coalesceFreeSpace):
3522         (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
3523         (JSC::FixedVMPoolAllocator::alloc):
3524         (JSC::FixedVMPoolAllocator::free):
3525         (JSC::FixedVMPoolAllocator::allocInternal):
3526         * runtime/AlignedMemoryAllocator.h:
3527         (JSC::::allocate):
3528         (JSC::::AlignedMemoryAllocator):
3529         * runtime/Collector.cpp:
3530         (JSC::Heap::allocateBlock):
3531         * runtime/Collector.h:
3532         * wtf/PageAllocation.cpp:
3533         * wtf/PageAllocation.h:
3534         (WTF::PageAllocation::operator!):
3535         (WTF::PageAllocation::allocate):
3536         (WTF::PageAllocation::allocateAt):
3537         (WTF::PageAllocation::allocateAligned):
3538         (WTF::PageAllocation::deallocate):
3539         (WTF::PageAllocation::pageSize):
3540         (WTF::PageAllocation::systemAllocate):
3541         (WTF::PageAllocation::systemAllocateAt):
3542         (WTF::PageAllocation::systemAllocateAligned):
3543         (WTF::PageAllocation::systemDeallocate):
3544         (WTF::PageAllocation::systemPageSize):
3545         * wtf/PageReservation.h: Copied from JavaScriptCore/wtf/PageAllocation.h.
3546         (WTF::PageReservation::PageReservation):
3547         (WTF::PageReservation::commit):
3548         (WTF::PageReservation::decommit):
3549         (WTF::PageReservation::reserve):
3550         (WTF::PageReservation::reserveAt):
3551         (WTF::PageReservation::deallocate):
3552         (WTF::PageReservation::systemCommit):
3553         (WTF::PageReservation::systemDecommit):
3554         (WTF::PageReservation::systemReserve):
3555         (WTF::PageReservation::systemReserveAt):
3556         * wtf/Platform.h:
3557
3558 2010-08-04  Sheriff Bot  <webkit.review.bot@gmail.com>
3559
3560         Unreviewed, rolling out r64655.
3561         http://trac.webkit.org/changeset/64655
3562         https://bugs.webkit.org/show_bug.cgi?id=43496
3563
3564         JavaScriptCore references patch seems to have caused
3565         regressions in QT and GTK builds (Requested by nlawrence on
3566         #webkit).
3567
3568         * bytecode/CodeBlock.cpp:
3569         (JSC::CodeBlock::markAggregate):
3570         * runtime/Collector.cpp:
3571         (JSC::Heap::markConservatively):
3572         * runtime/JSCell.h:
3573         (JSC::JSValue::asCell):
3574         (JSC::MarkStack::append):
3575         * runtime/JSGlobalObject.cpp:
3576         (JSC::markIfNeeded):
3577         * runtime/JSONObject.cpp:
3578         (JSC::Stringifier::Holder::object):
3579         * runtime/JSObject.h:
3580         (JSC::JSObject::prototype):
3581         * runtime/JSStaticScopeObject.cpp:
3582         (JSC::JSStaticScopeObject::markChildren):
3583         * runtime/JSValue.h:
3584         (JSC::JSValue::):
3585         (JSC::JSValue::JSValue):
3586         (JSC::JSValue::asCell):
3587         * runtime/MarkStack.h:
3588         * runtime/NativeErrorConstructor.cpp:
3589         * runtime/NativeErrorConstructor.h:
3590         * runtime/Structure.h:
3591         (JSC::Structure::storedPrototype):
3592
3593 2010-08-04  Gavin Barraclough  <barraclough@apple.com>
3594
3595         Rubber stamped by Sam Weinig.
3596
3597         Enable JSVALUE64 for CPU(PPC64).
3598         Basic browsing seems to work.
3599
3600         * wtf/Platform.h:
3601
3602 2010-08-04  Nathan Lawrence  <nlawrence@apple.com>
3603
3604         Reviewed by Darin Adler.
3605
3606         Refactoring MarkStack::append to take a reference.  This is in
3607         preparation for movable objects when we will need to update pointers.
3608         http://bugs.webkit.org/show_bug.cgi?id=41177
3609
3610         Unless otherwise noted, all changes are to either return by reference
3611         or pass a reference to MarkStack::append.
3612
3613         * bytecode/CodeBlock.cpp:
3614         (JSC::CodeBlock::markAggregate):
3615         * runtime/Collector.cpp:
3616         (JSC::Heap::markConservatively):
3617             Added a temporary variable to prevent marking from changing an
3618             unknown value on the stack
3619         * runtime/JSCell.h:
3620         (JSC::JSValue::asCell):
3621         (JSC::MarkStack::append):
3622         (JSC::MarkStack::appendInternal):
3623         * runtime/JSGlobalObject.cpp:
3624         (JSC::markIfNeeded):
3625         * runtime/JSONObject.cpp:
3626         (JSC::Stringifier::Holder::object):
3627         * runtime/JSObject.h:
3628         (JSC::JSObject::prototype):
3629         * runtime/JSStaticScopeObject.cpp:
3630         (JSC::JSStaticScopeObject::markChildren):
3631         * runtime/JSValue.h:
3632         (JSC::JSValue::JSValue):
3633         (JSC::JSValue::asCell):
3634         * runtime/MarkStack.h:
3635         * runtime/NativeErrorConstructor.cpp:
3636         (JSC::NativeErrorConstructor::createStructure):
3637             Changed the structure flags to include a custom markChildren.
3638         (JSC::NativeErrorConstructor::markChildren):
3639             Update the prototype of the stored structure.
3640         * runtime/NativeErrorConstructor.h:
3641             Added structure flags.
3642         * runtime/Structure.h:
3643         (JSC::Structure::storedPrototype):
3644
3645 2010-08-03  Nathan Lawrence  <nlawrence@apple.com>
3646
3647         Reviewed by Oliver Hunt.
3648
3649         Tightened up some get_by_id_chain* code generation
3650         https://bugs.webkit.org/show_bug.cgi?id=40935
3651
3652         This is in the style of
3653         https://bugs.webkit.org/show_bug.cgi?id=30539, and changed code to
3654         call accessor functions when it was not necessary to directly access
3655         the private variables.
3656
3657         * jit/JIT.h: