Not reviewed.
[WebKit-https.git] / JavaScriptCore / ChangeLog
1 2010-03-15  Geoffrey Garen  <ggaren@apple.com>
2
3         Not reviewed.
4
5         Removed a now-incorrect comment I forgot to remove in my last check-in.
6
7         * wtf/FastMalloc.cpp:
8         (WTF::TCMalloc_PageHeap::scavenge):
9
10 2010-03-15  Geoffrey Garen  <ggaren@apple.com>
11
12         Reviewed by Sam Weinig.
13
14         Fixed a portion of:
15         <rdar://problem/7165917> | https://bugs.webkit.org/show_bug.cgi?id=28676
16         Safari 4 does not release memory back to the operating system fast enough (28676)
17
18         Every few seconds, release a percentage of the minimum unused page count
19         during that time period.
20
21         SunSpider reports no change, command-line or in-browser, Mac or Windows.
22         
23         * wtf/FastMalloc.cpp:
24         (WTF::TCMalloc_PageHeap::init):
25         (WTF::TCMalloc_PageHeap::signalScavenger):
26         (WTF::TCMalloc_PageHeap::initializeScavenger): Renamed shouldContinueScavenging
27         to shouldScavenge, since scavenging is no longer something that we interrupt.
28
29         (WTF::TCMalloc_PageHeap::scavenge): The new scavenging algorithm. Fixes
30         a bug where the old code would release only one item from each size class
31         per scavenge, potentially leaving large numbers of large-sized objects
32         unreleased for a long time.
33
34         (WTF::TCMalloc_PageHeap::shouldScavenge):
35         (WTF::TCMalloc_PageHeap::New):
36         (WTF::TCMalloc_PageHeap::AllocLarge):
37         (WTF::TCMalloc_PageHeap::Delete):
38         (WTF::TCMalloc_PageHeap::GrowHeap):
39         (WTF::TCMalloc_PageHeap::scavengerThread):
40         (WTF::TCMalloc_PageHeap::periodicScavenge): Updated to track the minimum
41         value of free_committed_pages_ during a given scavenge period.
42
43 2010-03-15  Gavin Barraclough  <barraclough@apple.com>
44
45         Reviewed by Sam Weinig.
46
47         https://bugs.webkit.org/show_bug.cgi?id=35843
48         Re-land reverted fix to JSString::getIndex()
49
50         Calling getIndex() on a JSString in rope form may result in a JSException being thrown
51         if there is insuficient memory so value(exec) returns UString() with length zero,
52         which will be passed to jsSingleCharacterSubstring.
53         Add a slow case function to trap the error & return a safe null value, until the
54         exception is handled.
55
56         * runtime/JSString.cpp:
57         (JSC::JSString::getIndexSlowCase):
58         (JSC::JSString::getStringPropertyDescriptor):
59         * runtime/JSString.h:
60         (JSC::jsSingleCharacterSubstring):
61         (JSC::JSString::getIndex):
62         (JSC::jsSingleCharacterString):
63         (JSC::JSString::getStringPropertySlot):
64
65 2010-03-04  Kenneth Rohde Christiansen  <kenneth@webkit.org>
66
67         Reviewed by Adam Roben.
68
69         Add a long long version of abs() for MSVC.
70
71         * wtf/MathExtras.h:
72         (abs):
73
74 2010-03-15  Gabor Loki  <loki@webkit.org>
75
76         Reviewed by Gavin Barraclough.
77
78         Combine ctiTrampolines on ARM and Thumb-2
79         https://bugs.webkit.org/show_bug.cgi?id=36014
80
81         * jit/JITStubs.cpp:
82         (JSC::JITThunks::JITThunks):
83
84 2010-03-12  Gavin Barraclough  <barraclough@apple.com>
85
86         Reviewed by NOBODY (build fix).
87
88         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
89
90 2010-03-12  Gavin Barraclough  <barraclough@apple.com>
91
92         Reviewed by NOBODY (build fix).
93
94         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
95
96 2010-03-11  Gavin Barraclough  <barraclough@apple.com>
97
98         Reviewed by Oliver Hunt.
99
100         Bug 36075 - Clean up screwyness re static string impls & Identifiers.
101
102         * API/JSClassRef.cpp:
103         (OpaqueJSClass::~OpaqueJSClass): Classname may be null/empty, and these are an identifer.  This is okay, since the null/empty strings are shared across all threads.
104         * JavaScriptCore.exp:
105         * runtime/Identifier.cpp:
106         (JSC::Identifier::add): No need to explicitly hash null reps, this is done in the ststic UStringImpl constructor.
107         (JSC::Identifier::addSlowCase): UStringImpl::empty() handled & checkCurrentIdentifierTable now called in the header.
108         (JSC::Identifier::checkCurrentIdentifierTable): Replaces checkSameIdentifierTable (this no longer checked the rep since the identifierTable pointer was removed from UString::Rep long ago).
109         * runtime/Identifier.h:
110         (JSC::Identifier::add): Replace call to checkSameIdentifierTable with call to checkCurrentIdentifierTable at head of function.
111         * runtime/UStringImpl.cpp:
112         (JSC::UStringImpl::~UStringImpl): Remove call to checkConsistency - this function no longer checks anything interesting.
113         * runtime/UStringImpl.h:
114         (JSC::UStringOrRopeImpl::UStringOrRopeImpl): Set s_refCountFlagIsIdentifier in static constructor.
115         (JSC::UStringImpl::UStringImpl): remove calls to checkConsistency (see above), add new ASSERT to substring constructor.
116         (JSC::UStringImpl::setHash): ASSERT not static (static strings set the hash in their constructor, should not reach this code path).
117         (JSC::UStringImpl::create): Add missing ASSERT.
118         (JSC::UStringImpl::setIsIdentifier): ASSERT !isStatic() (static strings hash set in constructor).
119
120 2010-03-12  Peter Varga  <pvarga@inf.u-szeged.hu>
121
122         Reviewed by David Levin.
123
124         Two functions tryConsumeCharacter() and tryConsumeCharacterClass() are
125         removed from yarr/RegexInterpreter.cpp because they are never called.
126
127         * yarr/RegexInterpreter.cpp:
128
129 2010-03-11  Kent Hansen  <kent.hansen@nokia.com>
130
131         Reviewed by Simon Hausmann.
132
133         Mac OS X: Use deployment target to determine whether memory tagging should be enabled
134         https://bugs.webkit.org/show_bug.cgi?id=34888
135
136         Use TARGETING_TIGER rather than BUILDING_ON_TIGER to determine the tags.
137
138         * wtf/VMTags.h:
139
140 2010-03-11  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
141
142         Reviewed by Simon Hausmann.
143
144         The JSNative state was renamed to JSPrimitive. The new name better
145         coresponds to the ECMAScript standard.
146
147         Enum QScriptValuePrivate::States was renamed to State to obey Qt
148         coding style rules ("States" name suggests that a state could
149         mixed together with an other state using bitwise logic operators.
150
151         [Qt] QScriptValuePrivate::States has naming issues
152         https://bugs.webkit.org/show_bug.cgi?id=35968
153
154         * qt/api/qscriptvalue_p.h:
155         (QScriptValuePrivate::):
156         (QScriptValuePrivate::QScriptValuePrivate):
157         (QScriptValuePrivate::isBool):
158         (QScriptValuePrivate::isNumber):
159         (QScriptValuePrivate::isNull):
160         (QScriptValuePrivate::isString):
161         (QScriptValuePrivate::isUndefined):
162         (QScriptValuePrivate::toString):
163         (QScriptValuePrivate::toNumber):
164         (QScriptValuePrivate::toBool):
165         (QScriptValuePrivate::assignEngine):
166         (QScriptValuePrivate::refinedJSValue):
167
168 2010-03-11  Gavin Barraclough  <barraclough@apple.com>
169
170         Reviewed by NOBODY (Windows build fix).
171
172         Add export.
173
174         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
175
176 2010-03-11  Gavin Barraclough  <barraclough@apple.com>
177
178         Reviewed by NOBODY (Windows build fix).
179
180         Add export.
181
182         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
183
184 2010-03-11  Gavin Barraclough  <barraclough@apple.com>
185
186         Rubber stamped by Oliver Hunt.
187
188         Remove nonsense comments used in development & commited in error.
189
190         * runtime/UStringImpl.h:
191
192 2010-03-11  Gavin Barraclough  <barraclough@apple.com>
193
194         Reviewed by NOBODY (Windows build fix).
195
196         Remove export.
197
198         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
199
200 2010-03-11  Gavin Barraclough  <barraclough@apple.com>
201
202         Reviewed by Oliver Hunt.
203
204         https://bugs.webkit.org/show_bug.cgi?id=36041
205         Remove unnecessary differences in common code between WebCore::StringImpl & JSC::UStringImpl
206
207         Much of the code in WebCore::StringImpl and JSC::UStringImpl is now very similar,
208         but has trivial and unnecessary formatting differences, such as the exact wording
209         of comments, missing ASSERTs, functions implemented in the .h vs .cpp etc.
210
211         * runtime/Identifier.cpp:
212         (JSC::Identifier::add): UStringImpl::empty() now automatically hashes, uas per WebCore strings.
213         (JSC::Identifier::addSlowCase): UStringImpl::empty() now automatically hashes, uas per WebCore strings.
214         * runtime/UStringImpl.cpp:
215         (JSC::UStringImpl::~UStringImpl): Only call bufferOwnership() once, add missing ASSERTs.
216         (JSC::UStringImpl::createUninitialized): Move from .h, not commonly called, no need to inline.
217         (JSC::UStringImpl::create): Move from .h, not commonly called, no need to inline.
218         (JSC::UStringImpl::sharedBuffer): Rewritten to more closely match WebCore implementation, remove need for separate baseSharedBuffer() method.
219         * runtime/UStringImpl.h:
220         (JSC::UStringImpl::UStringImpl): Automatically hash static strings, ASSERT m_data & m_length are non-null/non-zero in non-static strings.
221         (JSC::UStringImpl::setHash): Add missing ASSERT.
222         (JSC::UStringImpl::create): Moved to .cpp / added missing check for empty string creation.
223         (JSC::UStringImpl::adopt): Vector.size() returns size_t, not unsigned.
224         (JSC::UStringImpl::cost): Renamed m_bufferSubstring -> m_substringBuffer
225         (JSC::UStringImpl::hash): Reordered in file.
226         (JSC::UStringImpl::existingHash): Reordered in file.
227         (JSC::UStringImpl::computeHash): Reordered in file, renamed parameter.
228         (JSC::UStringImpl::checkConsistency): rewrote ASSERT.
229         (JSC::UStringImpl::bufferOwnership): Return type should be BufferOwnership.
230         (JSC::UStringImpl::): Moved friends to head of class.
231
232 2010-03-11  Mark Rowe  <mrowe@apple.com>
233
234         Reviewed by David Kilzer.
235
236         <rdar://problem/7745082> Make it possible to build WebKit for older Mac OS X versions from the current Mac OS X version
237
238         Default to using the appropriate SDK if the target Mac OS X version is not the current Mac OS X version.
239
240         * Configurations/Base.xcconfig:
241
242 2010-03-11  Mark Rowe  <mrowe@apple.com>
243
244         Reviewed by Tim Hatcher.
245
246         <rdar://problem/7745082> Make it possible to build WebKit for older Mac OS X versions from the current Mac OS X version
247
248         Introduce TARGET_MAC_OS_X_VERSION_MAJOR to represent the Mac OS X version that is being targeted.  It defaults to the
249         current Mac OS X version unless otherwise specified.
250
251         Key off TARGET_MAC_OS_X_VERSION_MAJOR where we'd previously been keying off MAC_OS_X_VERSION_MAJOR.
252
253         Explicitly map from the target Mac OS X version to the preferred compiler since Xcode's default compiler choice
254         may not be usable when targetting a different Mac OS X version.
255
256         Key off TARGET_GCC_VERSION rather than MAC_OS_X_VERSION_MAJOR in locations where we'd previously been keying off
257         MAC_OS_X_VERSION_MAJOR but the decision is really related to the compiler version being used.
258
259         * Configurations/Base.xcconfig:
260         * Configurations/DebugRelease.xcconfig:
261         * Configurations/FeatureDefines.xcconfig:
262         * Configurations/JavaScriptCore.xcconfig:
263         * Configurations/Version.xcconfig:
264
265 2010-03-11  Simon Fraser  <simon.fraser@apple.com>
266
267         Reviewed by Mark Rowe.
268
269         Sort the project file.
270
271         * JavaScriptCore.xcodeproj/project.pbxproj:
272
273 2010-03-11  Simon Fraser  <simon.fraser@apple.com>
274
275         Reviewed by Mark Rowe.
276
277         Sort the project file .
278
279         * JavaScriptCore.xcodeproj/project.pbxproj:
280
281 2010-03-11  Gabor Loki  <loki@webkit.org>
282
283         Reviewed by Gavin Barraclough.
284
285         Buildfix for Thumb-2 after r55684. Add branch8 and branchTest8 functions.
286         https://bugs.webkit.org/show_bug.cgi?id=35892
287
288         * assembler/ARMv7Assembler.h:
289         (JSC::ARMv7Assembler::):
290         (JSC::ARMv7Assembler::ldrb):
291         * assembler/MacroAssemblerARMv7.h:
292         (JSC::MacroAssemblerARMv7::load8):
293         (JSC::MacroAssemblerARMv7::branch8):
294         (JSC::MacroAssemblerARMv7::branchTest8):
295         (JSC::MacroAssemblerARMv7::setTest8):
296
297 2010-03-10  Gavin Barraclough  <barraclough@apple.com>
298
299         Rubber stamped by Oliver Hunt.
300         
301         Rename JSC::UStringImpl::data() to characters(), to match WebCore::StringImpl.
302
303         * API/JSClassRef.cpp:
304         (OpaqueJSClassContextData::OpaqueJSClassContextData):
305         * bytecompiler/BytecodeGenerator.cpp:
306         (JSC::keyForCharacterSwitch):
307         * bytecompiler/NodesCodegen.cpp:
308         (JSC::processClauseList):
309         * interpreter/Interpreter.cpp:
310         (JSC::Interpreter::privateExecute):
311         * jit/JITStubs.cpp:
312         (JSC::DEFINE_STUB_FUNCTION):
313         * runtime/ArrayPrototype.cpp:
314         (JSC::arrayProtoFuncToString):
315         * runtime/Identifier.cpp:
316         (JSC::Identifier::equal):
317         (JSC::Identifier::addSlowCase):
318         * runtime/JSString.cpp:
319         (JSC::JSString::resolveRope):
320         * runtime/UString.cpp:
321         (JSC::UString::toStrictUInt32):
322         (JSC::equal):
323         * runtime/UString.h:
324         (JSC::UString::data):
325         * runtime/UStringImpl.h:
326         (JSC::UStringImpl::characters):
327         (JSC::UStringImpl::hash):
328         (JSC::UStringImpl::setHash):
329
330 2010-03-10  Gavin Barraclough  <barraclough@apple.com>
331
332         Reviewed by Darin Adler, Geoffrey Garen, Maciej Stachowiak.
333
334         https://bugs.webkit.org/show_bug.cgi?id=35991
335         Would be faster to not use a thread specific to implement StringImpl::empty()
336
337         Change JSC::UStringImpl's implementation of empty() match to match StringImpl's new implementation
338         (use a static defined within the empty() method), and change the interface to match too (return
339         a pointer not a reference). 
340
341         ~0% performance impact (possible minor progression from moving empty() from .h to .cpp).
342
343         * JavaScriptCore.exp:
344         * runtime/Identifier.cpp:
345         (JSC::Identifier::add):
346         (JSC::Identifier::addSlowCase):
347         * runtime/PropertyNameArray.cpp:
348         (JSC::PropertyNameArray::add):
349         * runtime/UString.cpp:
350         (JSC::initializeUString):
351         (JSC::UString::UString):
352         * runtime/UStringImpl.cpp:
353         (JSC::UStringImpl::empty):
354         (JSC::UStringImpl::create):
355         * runtime/UStringImpl.h:
356         (JSC::UStringImpl::adopt):
357         (JSC::UStringImpl::createUninitialized):
358         (JSC::UStringImpl::tryCreateUninitialized):
359
360 2010-03-10  Dmitry Titov  <dimich@chromium.org>
361
362         Not reviewed, fixing Snow Leopard build.
363
364         * wtf/mac/MainThreadMac.mm: Forgot 'static' for a new local function.
365         (WTF::postTimer):
366
367 2010-03-10  Dmitry Titov  <dimich@chromium.org>
368
369         Reviewed by Darin Adler.
370
371         Make Document::postTask to use a single queue of tasks, to fire them in order
372         https://bugs.webkit.org/show_bug.cgi?id=35943
373
374         The patch uses CFRunLoopTimer to schedule execution of tasks instead of performSelectorOnMainThread which apparently can starve other event sources.
375         The timer is used when the schedule request is coming on the main thread itself. This happens when the task is posted on the main thread or
376         when too many tasks are posted and the queue does 'stop and re-schedule' to make sure run loop has a chance to execute other events.
377
378         * wtf/mac/MainThreadMac.mm:
379         (WTF::timerFired):
380         (WTF::postTimer):
381         (WTF::scheduleDispatchFunctionsOnMainThread): Use timer posted to the current RunLoop if scheduling the task execution while on the main thread.
382
383 2010-03-10  Geoffrey Garen  <ggaren@apple.com>
384
385         Windows build fix: added new symbol.
386
387         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
388
389 2010-03-10  Geoffrey Garen  <ggaren@apple.com>
390
391         Windows build fix: removed old symbol.
392
393         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
394
395 2010-03-09  Geoffrey Garen  <ggaren@apple.com>
396
397         Reviewed by Alexey Proskuryakov, Darin Adler, and Sam Weinig.
398
399         Refactored fastCheckConsistency to match some review comments:
400             - renamed fastCheckConsistency to fastMallocSize, and changed ValueCheck
401               to ASSERT that a pointer's fastMallocSize is not 0.
402             - implemented a version of fastMallocSize for tcmalloc.
403             
404         Also moved some pre-existing code around to avoid a problem related to
405         mismatched #define/#undef of malloc/free in this source file.
406
407         * JavaScriptCore.exp:
408         * wtf/FastMalloc.cpp:
409         (WTF::fastMallocSize): Renamed. Fixed indentation.
410
411         (WTF::TCMalloc_PageHeap::scavenge): Removed an incorrect ASSERT that
412         got in the way of testing the tcmalloc implementation. (More information
413         on why this ASSERT is incorrect is in <rdar://problem/7165917>.)
414
415         (WTF::TCMallocStats::fastMallocSize): Implemented for tcmalloc.
416
417         * wtf/FastMalloc.h: Updated for rename.
418
419         * wtf/ValueCheck.h:
420         (WTF::): Moved the ASSERT that used to be in fastCheckConsistency here.
421
422 2010-03-10  Kevin Ollivier  <kevino@theolliviers.com>
423
424         Reviewed by Eric Seidel.
425
426         Make global new/delete operators configurable for all ports and disable it
427         for the wx port for now.
428
429         * wtf/FastMalloc.h:
430         * wtf/Platform.h:
431
432 2010-03-09  Gavin Barraclough  <barraclough@apple.com>
433
434         Reviewed by NOBODY (reverting r54510).
435
436         This caused a performance regression, by breaking the code
437         generator's logic to calculate the skip level for resolving
438         variables (traced by rdar:7683350)  Reverting for now.
439
440         * parser/Grammar.y:
441         * parser/NodeConstructors.h:
442         (JSC::ContinueNode::ContinueNode):
443         (JSC::BreakNode::BreakNode):
444         (JSC::ForInNode::ForInNode):
445         * runtime/CommonIdentifiers.cpp:
446         (JSC::CommonIdentifiers::CommonIdentifiers):
447         * runtime/CommonIdentifiers.h:
448         * runtime/FunctionPrototype.cpp:
449         (JSC::FunctionPrototype::FunctionPrototype):
450         * runtime/Identifier.cpp:
451         (JSC::Identifier::add):
452         * runtime/PropertyNameArray.cpp:
453         (JSC::PropertyNameArray::add):
454
455 2010-03-09  Geoffrey Garen  <ggaren@apple.com>
456
457         Reviewed by Darin Adler.
458
459         Changed FastMalloc statistics reporting to be a bit clearer. We now
460         report:
461             - Reserved VM Bytes: the VM that has been mapped into the process.
462             - Committed VM Bytes: the subset of Reserved VM Bytes actually in use.
463             - Free List Bytes: the subset of Committed VM Bytes in a free list.
464
465         * wtf/FastMalloc.cpp:
466         (WTF::fastMallocStatistics):
467         (WTF::TCMallocStats::fastMallocStatistics): Updated to report the statistics
468         above. Standardized use of "ifdef WTF_CHANGES". Added a SpinLockHolder
469         around all statistics gathering, since it reads from the page heap.
470
471         * wtf/FastMalloc.h: Updated to report the statistics above. 
472
473 2010-03-09  Gabor Loki  <loki@webkit.org>
474
475         Rubber-stamped by Maciej Stachowiak.
476
477         Buildfix for ARM after r55684. Add branch8 and branchTest8 functions.
478         https://bugs.webkit.org/show_bug.cgi?id=35892
479
480         * assembler/ARMAssembler.cpp:
481         (JSC::ARMAssembler::dataTransfer32):
482         * assembler/ARMAssembler.h:
483         (JSC::ARMAssembler::):
484         * assembler/MacroAssemblerARM.h:
485         (JSC::MacroAssemblerARM::load8):
486         (JSC::MacroAssemblerARM::branch8):
487         (JSC::MacroAssemblerARM::branchTest8):
488
489 2010-03-08  Geoffrey Garen  <ggaren@apple.com>
490
491         Windows build fix: 'P' is not a type. Luckily, 'void' is.
492
493         * wtf/FastMalloc.cpp:
494         (WTF::fastCheckConsistency):
495
496 2010-03-08  Geoffrey Garen  <ggaren@apple.com>
497
498         Windows build fix: export a new symbol.
499
500         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
501
502 2010-03-08  Geoffrey Garen  <ggaren@apple.com>
503
504         Reviewed by Maciej Stachowiak.
505
506         Switching malloc implementations requires a world rebuild
507         https://bugs.webkit.org/show_bug.cgi?id=35899
508
509         * wtf/FastMalloc.cpp:
510         (WTF::fastCheckConsistency):
511         (WTF::TCMallocStats::fastCheckConsistency):
512         * wtf/FastMalloc.h:
513         * wtf/ValueCheck.h:
514         (WTF::): Moved pointer checking into a helper function in FastMalloc.cpp,
515         so you can switch malloc implementations without rebuilding the world.
516
517 2010-03-07  Oliver Hunt  <oliver@apple.com>
518
519         Reviewed by Darin Adler.
520
521         TypeInfo is unnecessarily large
522         https://bugs.webkit.org/show_bug.cgi?id=35850
523
524         Reduce the size of the type and flags members to a single
525         byte each, reducing the size of Structure by 8 bytes.
526
527         * assembler/MacroAssemblerX86Common.h:
528         (JSC::MacroAssemblerX86Common::branch8):
529         (JSC::MacroAssemblerX86Common::branchTest8):
530         (JSC::MacroAssemblerX86Common::setTest8):
531           Add single byte branches, and correct setTest8 to do a
532           single byte read from memory, and actually store the result
533         * assembler/X86Assembler.h:
534         (JSC::X86Assembler::):
535         (JSC::X86Assembler::cmpb_im):
536         (JSC::X86Assembler::testb_im):
537         * jit/JITCall.cpp:
538         (JSC::JIT::emit_op_construct_verify):
539         * jit/JITOpcodes.cpp:
540         (JSC::JIT::emit_op_instanceof):
541         (JSC::JIT::emit_op_jeq_null):
542         (JSC::JIT::emit_op_jneq_null):
543         (JSC::JIT::emit_op_get_pnames):
544         (JSC::JIT::emit_op_convert_this):
545         (JSC::JIT::emit_op_construct_verify):
546         (JSC::JIT::emit_op_to_jsnumber):
547         (JSC::JIT::emit_op_eq_null):
548         (JSC::JIT::emit_op_neq_null):
549         * runtime/JSTypeInfo.h:
550         (JSC::TypeInfo::TypeInfo):
551         (JSC::TypeInfo::type):
552
553 2010-03-08  Gavin Barraclough  <barraclough@apple.com>
554
555         Reviewed by NOBODY (reverting regression).
556
557         Reverting 55035, this caused a regression.
558         (https://bugs.webkit.org/show_bug.cgi?id=35843)
559
560         * runtime/JSString.cpp:
561         (JSC::JSString::resolveRope):
562         (JSC::JSString::getStringPropertyDescriptor):
563         * runtime/JSString.h:
564         (JSC::jsSingleCharacterSubstring):
565         (JSC::JSString::getIndex):
566         (JSC::JSString::getStringPropertySlot):
567         * runtime/UStringImpl.cpp:
568         * runtime/UStringImpl.h:
569
570 2010-03-08  Stuart Morgan  <stuartmorgan@chromium.org>
571
572         Reviewed by Darin Adler.
573
574         Added a new USE definition for secure text mode on the Mac.
575         https://bugs.webkit.org/show_bug.cgi?id=31265
576
577         * wtf/Platform.h:
578
579 2010-03-08  Jian Li  <jianli@chromium.org>
580
581         Reviewed by Dmitry Titov.
582
583         Blob.slice support.
584         https://bugs.webkit.org/show_bug.cgi?id=32993
585
586         Add ENABLE_BLOB_SLICE feature define.
587         Also fix a problem that JSValue.toInteger is not exposed on Windows.
588
589         * Configurations/FeatureDefines.xcconfig:
590         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
591
592 2010-03-07  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
593
594         Reviewed by Simon Hausmann.
595
596         Small performance fix in the QScriptConverter::toString().
597
598         The QByteArray was replaced by the QVarLengthArray which doesn't
599         have to allocate any memory on heap.
600
601         [Qt] QScriptConverter::toString() should use QVarLengthArray instead of QByteArray
602         https://bugs.webkit.org/show_bug.cgi?id=35577
603
604         * qt/api/qscriptconverter_p.h:
605         (QScriptConverter::toString):
606
607 2010-03-06  Mark Rowe  <mrowe@apple.com>
608
609         Rubber-stamped by Sam Weinig.
610
611         Remove unnecessary includes of wtf/Platform.h.  This is already pulled in by config.h.
612
613         * API/APICast.h:
614         * API/JSCallbackFunction.cpp:
615         * API/JSContextRef.cpp:
616         * API/JSObjectRef.cpp:
617         * API/JSValueRef.cpp:
618         * assembler/ARMAssembler.h:
619         * assembler/ARMv7Assembler.h:
620         * assembler/AbstractMacroAssembler.h:
621         * assembler/AssemblerBuffer.h:
622         * assembler/AssemblerBufferWithConstantPool.h:
623         * assembler/CodeLocation.h:
624         * assembler/LinkBuffer.h:
625         * assembler/MIPSAssembler.h:
626         * assembler/MacroAssembler.h:
627         * assembler/MacroAssemblerARM.h:
628         * assembler/MacroAssemblerARMv7.h:
629         * assembler/MacroAssemblerCodeRef.h:
630         * assembler/MacroAssemblerMIPS.h:
631         * assembler/MacroAssemblerX86.h:
632         * assembler/MacroAssemblerX86Common.h:
633         * assembler/MacroAssemblerX86_64.h:
634         * assembler/RepatchBuffer.h:
635         * assembler/X86Assembler.h:
636         * jit/JIT.h:
637         * jit/JITCode.h:
638         * jit/JITInlineMethods.h:
639         * jit/JITStubs.h:
640         * os-win32/stdint.h:
641         * runtime/JSAPIValueWrapper.h:
642         * runtime/JSImmediate.h:
643         * wtf/ASCIICType.h:
644         * wtf/StdLibExtras.h:
645         * wtf/VMTags.h:
646         * yarr/RegexCompiler.h:
647         * yarr/RegexInterpreter.h:
648         * yarr/RegexJIT.h:
649         * yarr/RegexParser.h:
650         * yarr/RegexPattern.h:
651
652 2010-03-06  Kwang Yul Seo  <skyul@company100.net>
653
654         Reviewed by Eric Seidel.
655
656         [BREWMP] Share OwnPtr.
657         https://bugs.webkit.org/show_bug.cgi?id=35776
658
659         Share OwnPtr implementation with BREW MP and remove OwnPtrBrew.
660
661         * wtf/OwnPtrBrew.cpp: Added.
662         (WTF::deleteOwnedPtr):
663         * wtf/OwnPtrCommon.h:
664         * wtf/brew/OwnPtrBrew.cpp: Removed.
665         * wtf/brew/OwnPtrBrew.h: Removed.
666
667 2010-03-06  Patrick Gansterer  <paroga@paroga.com>
668
669         Reviewed by Eric Seidel.
670
671         Implemented JIT_OPTIMIZE_NATIVE_CALL for WinCE
672         https://bugs.webkit.org/show_bug.cgi?id=33426
673
674         * jit/JITOpcodes.cpp:
675         (JSC::JIT::privateCompileCTIMachineTrampolines):
676
677 2010-03-05  Oliver Hunt  <oliver@apple.com>
678
679         Reviewed by NOBODY (build fix).
680
681         Add enw exports to windows
682
683         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
684
685 2010-03-05  Oliver Hunt  <oliver@apple.com>
686
687         Reviewed by Gavin Barraclough.
688
689         JSC should cache int to Identifier conversion as it does for ordinary strings
690         https://bugs.webkit.org/show_bug.cgi?id=35814
691
692         Make the NumericStrings cache cache unsigned ints in addition to signed.
693         We keep them separate from the int cache as it both simplifies code, and
694         also because the unsigned path is exclusive to property access and therefore
695         seems to have different usage patterns.
696
697         The primary trigger for the unsigned to Identifier propertyName conversion
698         is the construction of array-like objects out of normal objects.  Given these
699         tend to be relative small numbers, and the array-like behaviour lends itself
700         to sequential values this patch also adds a non-colliding cache for all small
701         numbers.
702
703         * JavaScriptCore.exp:
704         * runtime/Identifier.cpp:
705         (JSC::Identifier::from):
706         * runtime/Identifier.h:
707         * runtime/NumericStrings.h:
708         (JSC::NumericStrings::add):
709         (JSC::NumericStrings::lookup):
710         (JSC::NumericStrings::lookupSmallString):
711
712 2010-03-03  Oliver Hunt  <oliver@apple.com>
713
714         Reviewed by Gavin Barraclough.
715
716         Allow static property getters to interact with JSCs caching
717         https://bugs.webkit.org/show_bug.cgi?id=35716
718
719         Add new opcodes for handling cached lookup of static value getters.
720         More or less the same as with JS getters, all that changes is that
721         instead of calling through a JSFunction we always know that we have
722         a C function to call.
723
724         For the patching routines in the JIT we now need to pass a few
725         new parameters to allow us to pass enough information to the stub
726         function to allow us to call the C function correctly.  Logically
727         this shouldn't actually be necessary as all of these functions ignore
728         the identifier, but removing the ident parameter would require
729         somewhat involved changes to the way we implement getOwnPropertySlot,
730         etc.
731
732         * bytecode/CodeBlock.cpp:
733         (JSC::CodeBlock::dump):
734         (JSC::CodeBlock::derefStructures):
735         (JSC::CodeBlock::refStructures):
736         * bytecode/Instruction.h:
737         (JSC::Instruction::Instruction):
738         (JSC::Instruction::):
739         * bytecode/Opcode.h:
740         * interpreter/Interpreter.cpp:
741         (JSC::Interpreter::tryCacheGetByID):
742         (JSC::Interpreter::privateExecute):
743         * jit/JIT.cpp:
744         (JSC::JIT::privateCompileMainPass):
745         * jit/JIT.h:
746         (JSC::JIT::compileGetByIdProto):
747         (JSC::JIT::compileGetByIdSelfList):
748         (JSC::JIT::compileGetByIdProtoList):
749         (JSC::JIT::compileGetByIdChainList):
750         (JSC::JIT::compileGetByIdChain):
751         * jit/JITPropertyAccess.cpp:
752         (JSC::JIT::privateCompileGetByIdProto):
753         (JSC::JIT::privateCompileGetByIdSelfList):
754         (JSC::JIT::privateCompileGetByIdProtoList):
755         (JSC::JIT::privateCompileGetByIdChainList):
756         (JSC::JIT::privateCompileGetByIdChain):
757         * jit/JITPropertyAccess32_64.cpp:
758         (JSC::JIT::privateCompileGetByIdProto):
759         (JSC::JIT::privateCompileGetByIdSelfList):
760         (JSC::JIT::privateCompileGetByIdProtoList):
761         (JSC::JIT::privateCompileGetByIdChainList):
762         (JSC::JIT::privateCompileGetByIdChain):
763         * jit/JITStubs.cpp:
764         (JSC::JITThunks::tryCacheGetByID):
765         (JSC::DEFINE_STUB_FUNCTION):
766         * jit/JITStubs.h:
767         (JSC::):
768         * runtime/JSFunction.cpp:
769         (JSC::JSFunction::getOwnPropertySlot):
770         * runtime/Lookup.h:
771         (JSC::getStaticPropertySlot):
772         (JSC::getStaticValueSlot):
773         * runtime/PropertySlot.h:
774         (JSC::PropertySlot::):
775         (JSC::PropertySlot::PropertySlot):
776         (JSC::PropertySlot::cachedPropertyType):
777         (JSC::PropertySlot::isCacheable):
778         (JSC::PropertySlot::isCacheableValue):
779         (JSC::PropertySlot::setValueSlot):
780         (JSC::PropertySlot::setCacheableCustom):
781         (JSC::PropertySlot::setGetterSlot):
782         (JSC::PropertySlot::setCacheableGetterSlot):
783         (JSC::PropertySlot::clearOffset):
784         (JSC::PropertySlot::customGetter):
785
786 2010-03-04  Shinichiro Hamaji  <hamaji@chromium.org>
787
788         Unreviewed. Remove a non-ASCII character introduced in the following bug.
789
790         put_by_id does will incorrectly cache writes where a specific value exists, where at the point of caching the same value is being written.
791         https://bugs.webkit.org/show_bug.cgi?id=35537
792
793         * runtime/JSObject.h:
794         (JSC::JSObject::putDirectInternal):
795
796 2010-03-04  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
797
798         Reviewed by Tor Arne Vestbø.
799
800         [Qt] Make the OUTPUT_DIR variable in qmake projects independent of build-webkit's logic.
801
802         This also allows shadow builds relying only on qmake to work properly.
803         * jsc.pro:
804         * qt/api/QtScript.pro:
805         * qt/tests/qscriptengine/qscriptengine.pro:
806         * qt/tests/qscriptvalue/qscriptvalue.pro:
807         * qt/tests/tests.pri:
808
809 2010-03-03  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
810
811         Reviewed by Simon Hausmann.
812
813         QScriptValue::isObject fix.
814
815         Fix broken internal state evaluation from JSValue to JSNative / JSObject.
816         New function was introduced which should take care about promoting
817         JSValue state inside QScriptValuePrivate. It should be used instead of a
818         direct JSC C API call.
819
820         The bug exposed a weakness in autotest suite, as the QScriptValuePrivate
821         is based on state machine with lazy state evaluation, there is a possibility
822         that serial sequencial calls to the same public const function could return
823         different results. The patch fix the issue.
824
825         [Qt] Sometimes QScriptValue::isObject returns an incorrect value
826         https://bugs.webkit.org/show_bug.cgi?id=35387
827
828         * qt/api/qscriptvalue_p.h:
829         (QScriptValuePrivate::isBool):
830         (QScriptValuePrivate::isNumber):
831         (QScriptValuePrivate::isNull):
832         (QScriptValuePrivate::isString):
833         (QScriptValuePrivate::isUndefined):
834         (QScriptValuePrivate::isError):
835         (QScriptValuePrivate::isObject):
836         (QScriptValuePrivate::isFunction):
837         (QScriptValuePrivate::call):
838         (QScriptValuePrivate::refineJSValue):
839         * qt/tests/qscriptvalue/tst_qscriptvalue_generated.cpp:
840         (tst_QScriptValue::initScriptValues):
841         (tst_QScriptValue::isValid_makeData):
842         (tst_QScriptValue::isValid_test):
843         (tst_QScriptValue::isBool_makeData):
844         (tst_QScriptValue::isBool_test):
845         (tst_QScriptValue::isBoolean_makeData):
846         (tst_QScriptValue::isBoolean_test):
847         (tst_QScriptValue::isNumber_makeData):
848         (tst_QScriptValue::isNumber_test):
849         (tst_QScriptValue::isFunction_test):
850         (tst_QScriptValue::isNull_makeData):
851         (tst_QScriptValue::isNull_test):
852         (tst_QScriptValue::isString_makeData):
853         (tst_QScriptValue::isString_test):
854         (tst_QScriptValue::isUndefined_makeData):
855         (tst_QScriptValue::isUndefined_test):
856         (tst_QScriptValue::isObject_makeData):
857         (tst_QScriptValue::isObject_test):
858         (tst_QScriptValue::toString_makeData):
859         (tst_QScriptValue::toString_test):
860         (tst_QScriptValue::toNumber_makeData):
861         (tst_QScriptValue::toNumber_test):
862         (tst_QScriptValue::toBool_makeData):
863         (tst_QScriptValue::toBool_test):
864         (tst_QScriptValue::toBoolean_makeData):
865         (tst_QScriptValue::toBoolean_test):
866         (tst_QScriptValue::toInteger_makeData):
867         (tst_QScriptValue::toInteger_test):
868         (tst_QScriptValue::toInt32_makeData):
869         (tst_QScriptValue::toInt32_test):
870         (tst_QScriptValue::toUInt32_makeData):
871         (tst_QScriptValue::toUInt32_test):
872         (tst_QScriptValue::toUInt16_makeData):
873         (tst_QScriptValue::toUInt16_test):
874
875 2010-03-03  Chao-ying Fu  <fu@mips.com>
876
877         Reviewed by Gavin Barraclough.
878
879         MIPS JIT Supports
880         https://bugs.webkit.org/show_bug.cgi?id=30144
881
882         The following changes enable MIPS YARR and YARR_JIT.
883
884         * assembler/AbstractMacroAssembler.h:
885         (JSC::AbstractMacroAssembler::Imm32::Imm32):
886         * assembler/MIPSAssembler.h: Added.
887         (JSC::MIPSRegisters::):
888         (JSC::MIPSAssembler::MIPSAssembler):
889         (JSC::MIPSAssembler::):
890         (JSC::MIPSAssembler::JmpSrc::JmpSrc):
891         (JSC::MIPSAssembler::JmpDst::JmpDst):
892         (JSC::MIPSAssembler::JmpDst::isUsed):
893         (JSC::MIPSAssembler::JmpDst::used):
894         (JSC::MIPSAssembler::emitInst):
895         (JSC::MIPSAssembler::nop):
896         (JSC::MIPSAssembler::loadDelayNop):
897         (JSC::MIPSAssembler::copDelayNop):
898         (JSC::MIPSAssembler::move):
899         (JSC::MIPSAssembler::li):
900         (JSC::MIPSAssembler::lui):
901         (JSC::MIPSAssembler::addiu):
902         (JSC::MIPSAssembler::addu):
903         (JSC::MIPSAssembler::subu):
904         (JSC::MIPSAssembler::mult):
905         (JSC::MIPSAssembler::mfhi):
906         (JSC::MIPSAssembler::mflo):
907         (JSC::MIPSAssembler::mul):
908         (JSC::MIPSAssembler::andInsn):
909         (JSC::MIPSAssembler::andi):
910         (JSC::MIPSAssembler::nor):
911         (JSC::MIPSAssembler::orInsn):
912         (JSC::MIPSAssembler::ori):
913         (JSC::MIPSAssembler::xorInsn):
914         (JSC::MIPSAssembler::xori):
915         (JSC::MIPSAssembler::slt):
916         (JSC::MIPSAssembler::sltu):
917         (JSC::MIPSAssembler::sltiu):
918         (JSC::MIPSAssembler::sll):
919         (JSC::MIPSAssembler::sllv):
920         (JSC::MIPSAssembler::sra):
921         (JSC::MIPSAssembler::srav):
922         (JSC::MIPSAssembler::lw):
923         (JSC::MIPSAssembler::lwl):
924         (JSC::MIPSAssembler::lwr):
925         (JSC::MIPSAssembler::lhu):
926         (JSC::MIPSAssembler::sw):
927         (JSC::MIPSAssembler::jr):
928         (JSC::MIPSAssembler::jalr):
929         (JSC::MIPSAssembler::jal):
930         (JSC::MIPSAssembler::bkpt):
931         (JSC::MIPSAssembler::bgez):
932         (JSC::MIPSAssembler::bltz):
933         (JSC::MIPSAssembler::beq):
934         (JSC::MIPSAssembler::bne):
935         (JSC::MIPSAssembler::bc1t):
936         (JSC::MIPSAssembler::bc1f):
937         (JSC::MIPSAssembler::newJmpSrc):
938         (JSC::MIPSAssembler::appendJump):
939         (JSC::MIPSAssembler::addd):
940         (JSC::MIPSAssembler::subd):
941         (JSC::MIPSAssembler::muld):
942         (JSC::MIPSAssembler::lwc1):
943         (JSC::MIPSAssembler::ldc1):
944         (JSC::MIPSAssembler::swc1):
945         (JSC::MIPSAssembler::sdc1):
946         (JSC::MIPSAssembler::mtc1):
947         (JSC::MIPSAssembler::mfc1):
948         (JSC::MIPSAssembler::truncwd):
949         (JSC::MIPSAssembler::cvtdw):
950         (JSC::MIPSAssembler::ceqd):
951         (JSC::MIPSAssembler::cngtd):
952         (JSC::MIPSAssembler::cnged):
953         (JSC::MIPSAssembler::cltd):
954         (JSC::MIPSAssembler::cled):
955         (JSC::MIPSAssembler::cueqd):
956         (JSC::MIPSAssembler::coled):
957         (JSC::MIPSAssembler::coltd):
958         (JSC::MIPSAssembler::culed):
959         (JSC::MIPSAssembler::cultd):
960         (JSC::MIPSAssembler::label):
961         (JSC::MIPSAssembler::align):
962         (JSC::MIPSAssembler::getRelocatedAddress):
963         (JSC::MIPSAssembler::getDifferenceBetweenLabels):
964         (JSC::MIPSAssembler::size):
965         (JSC::MIPSAssembler::executableCopy):
966         (JSC::MIPSAssembler::getCallReturnOffset):
967         (JSC::MIPSAssembler::linkJump):
968         (JSC::MIPSAssembler::linkCall):
969         (JSC::MIPSAssembler::linkPointer):
970         (JSC::MIPSAssembler::relinkJump):
971         (JSC::MIPSAssembler::relinkCall):
972         (JSC::MIPSAssembler::repatchInt32):
973         (JSC::MIPSAssembler::repatchPointer):
974         (JSC::MIPSAssembler::repatchLoadPtrToLEA):
975         (JSC::MIPSAssembler::relocateJumps):
976         (JSC::MIPSAssembler::linkWithOffset):
977         (JSC::MIPSAssembler::linkCallInternal):
978         * assembler/MacroAssembler.h:
979         * assembler/MacroAssemblerMIPS.h: Added.
980         (JSC::MacroAssemblerMIPS::MacroAssemblerMIPS):
981         (JSC::MacroAssemblerMIPS::):
982         (JSC::MacroAssemblerMIPS::add32):
983         (JSC::MacroAssemblerMIPS::and32):
984         (JSC::MacroAssemblerMIPS::lshift32):
985         (JSC::MacroAssemblerMIPS::mul32):
986         (JSC::MacroAssemblerMIPS::not32):
987         (JSC::MacroAssemblerMIPS::or32):
988         (JSC::MacroAssemblerMIPS::rshift32):
989         (JSC::MacroAssemblerMIPS::sub32):
990         (JSC::MacroAssemblerMIPS::xor32):
991         (JSC::MacroAssemblerMIPS::load32):
992         (JSC::MacroAssemblerMIPS::load32WithUnalignedHalfWords):
993         (JSC::MacroAssemblerMIPS::load32WithAddressOffsetPatch):
994         (JSC::MacroAssemblerMIPS::loadPtrWithPatchToLEA):
995         (JSC::MacroAssemblerMIPS::loadPtrWithAddressOffsetPatch):
996         (JSC::MacroAssemblerMIPS::load16):
997         (JSC::MacroAssemblerMIPS::store32WithAddressOffsetPatch):
998         (JSC::MacroAssemblerMIPS::store32):
999         (JSC::MacroAssemblerMIPS::supportsFloatingPoint):
1000         (JSC::MacroAssemblerMIPS::supportsFloatingPointTruncate):
1001         (JSC::MacroAssemblerMIPS::pop):
1002         (JSC::MacroAssemblerMIPS::push):
1003         (JSC::MacroAssemblerMIPS::move):
1004         (JSC::MacroAssemblerMIPS::swap):
1005         (JSC::MacroAssemblerMIPS::signExtend32ToPtr):
1006         (JSC::MacroAssemblerMIPS::zeroExtend32ToPtr):
1007         (JSC::MacroAssemblerMIPS::branch32):
1008         (JSC::MacroAssemblerMIPS::branch32WithUnalignedHalfWords):
1009         (JSC::MacroAssemblerMIPS::branch16):
1010         (JSC::MacroAssemblerMIPS::branchTest32):
1011         (JSC::MacroAssemblerMIPS::jump):
1012         (JSC::MacroAssemblerMIPS::branchAdd32):
1013         (JSC::MacroAssemblerMIPS::branchMul32):
1014         (JSC::MacroAssemblerMIPS::branchSub32):
1015         (JSC::MacroAssemblerMIPS::breakpoint):
1016         (JSC::MacroAssemblerMIPS::nearCall):
1017         (JSC::MacroAssemblerMIPS::call):
1018         (JSC::MacroAssemblerMIPS::ret):
1019         (JSC::MacroAssemblerMIPS::set32):
1020         (JSC::MacroAssemblerMIPS::setTest32):
1021         (JSC::MacroAssemblerMIPS::moveWithPatch):
1022         (JSC::MacroAssemblerMIPS::branchPtrWithPatch):
1023         (JSC::MacroAssemblerMIPS::storePtrWithPatch):
1024         (JSC::MacroAssemblerMIPS::tailRecursiveCall):
1025         (JSC::MacroAssemblerMIPS::makeTailRecursiveCall):
1026         (JSC::MacroAssemblerMIPS::loadDouble):
1027         (JSC::MacroAssemblerMIPS::storeDouble):
1028         (JSC::MacroAssemblerMIPS::addDouble):
1029         (JSC::MacroAssemblerMIPS::subDouble):
1030         (JSC::MacroAssemblerMIPS::mulDouble):
1031         (JSC::MacroAssemblerMIPS::convertInt32ToDouble):
1032         (JSC::MacroAssemblerMIPS::insertRelaxationWords):
1033         (JSC::MacroAssemblerMIPS::branchTrue):
1034         (JSC::MacroAssemblerMIPS::branchFalse):
1035         (JSC::MacroAssemblerMIPS::branchEqual):
1036         (JSC::MacroAssemblerMIPS::branchNotEqual):
1037         (JSC::MacroAssemblerMIPS::branchDouble):
1038         (JSC::MacroAssemblerMIPS::branchTruncateDoubleToInt32):
1039         (JSC::MacroAssemblerMIPS::linkCall):
1040         (JSC::MacroAssemblerMIPS::repatchCall):
1041         * jit/ExecutableAllocator.h:
1042         (JSC::ExecutableAllocator::cacheFlush):
1043         * wtf/Platform.h:
1044         * yarr/RegexJIT.cpp:
1045         (JSC::Yarr::RegexGenerator::generateEnter):
1046         (JSC::Yarr::RegexGenerator::generateReturn):
1047
1048 2010-03-03  Steve Falkenburg  <sfalken@apple.com>
1049
1050         Windows build fix.
1051
1052         * JavaScriptCore.vcproj/jsc/jsc.vcproj:
1053         * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
1054
1055 2010-03-03  Steve Falkenburg  <sfalken@apple.com>
1056
1057         Windows build fix.
1058
1059         * JavaScriptCore.vcproj/jsc/jsc.vcproj:
1060
1061 2010-03-03  Mark Rowe  <mrowe@apple.com>
1062
1063         Reviewed by Geoff Garen.
1064
1065         Add virtual memory tags for TCMalloc and WebCore's purgeable buffers.
1066
1067         * wtf/TCSystemAlloc.cpp:
1068         (TryMmap): Use the VM tag.
1069         * wtf/VMTags.h: Make use of VM_MEMORY_TCMALLOC and VM_MEMORY_WEBCORE_PURGEABLE_BUFFERS.
1070
1071 2010-03-03  Steve Falkenburg  <sfalken@apple.com>
1072
1073         Rubber stamped by Adam Roben.
1074
1075         Fix bogus xcopy that was polluting source tree at build time.
1076
1077         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
1078
1079 2010-03-02  Fridrich Strba  <fridrich.strba@bluewin.ch>
1080
1081         Reviewed by Oliver Hunt.
1082
1083         Allow building smoothly on win32 and win64 using GCC
1084         https://bugs.webkit.org/show_bug.cgi?id=35607
1085
1086         * jit/JITStubs.h:
1087         * runtime/Collector.cpp:
1088         (JSC::Heap::allocateBlock):
1089         (JSC::Heap::freeBlockPtr):
1090         (JSC::currentThreadStackBase):
1091
1092 2010-03-02  Jeremy Orlow  <jorlow@chromium.org>
1093
1094         Reviewed by David Levin.
1095
1096         Revert database thread changes that are no longer required
1097         https://bugs.webkit.org/show_bug.cgi?id=35519
1098
1099         Jochen Eisinger created 55214 and 55247 to track which database
1100         owns which thread.  Dmitry suggested that this could also
1101         be done via TLS, though.  After exploring the options, Jochen
1102         chose to go the TLS route, so these patches are no longer needed.
1103
1104         * wtf/Threading.h:
1105         * wtf/ThreadingNone.cpp:
1106         (WTF::isMainThread):
1107         * wtf/ThreadingPthreads.cpp:
1108         (WTF::identifierByPthreadHandle):
1109         (WTF::establishIdentifierForPthreadHandle):
1110         (WTF::pthreadHandleForIdentifier):
1111         (WTF::createThreadInternal):
1112         (WTF::currentThread):
1113         * wtf/ThreadingWin.cpp:
1114         (WTF::threadMap):
1115         (WTF::storeThreadHandleByIdentifier):
1116         (WTF::threadHandleForIdentifier):
1117         (WTF::createThreadInternal):
1118
1119 2010-03-02  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
1120
1121         Reviewed by Simon Hausmann.
1122
1123         Fix QScriptValue::toString().
1124
1125         More ECMA Script compliance, especially for values as NaN, Inifinite
1126         and really big/small numbers.
1127
1128         [Qt] QScriptValue::toString() returns incorrect values
1129         https://bugs.webkit.org/show_bug.cgi?id=34850
1130
1131         * qt/api/qscriptconverter_p.h:
1132         (QScriptConverter::toString):
1133         * qt/api/qscriptvalue_p.h:
1134         (QScriptValuePrivate::toString):
1135         * qt/tests/qscriptvalue/tst_qscriptvalue.cpp:
1136         * qt/tests/qscriptvalue/tst_qscriptvalue.h:
1137         * qt/tests/qscriptvalue/tst_qscriptvalue_generated.cpp:
1138         (tst_QScriptValue::toString_initData):
1139         (tst_QScriptValue::toString_makeData):
1140         (tst_QScriptValue::toString_test):
1141
1142 2010-03-02  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
1143
1144         Reviewed by Simon Hausmann.
1145
1146         Introduce a new class; QScriptString.
1147
1148         The QScriptString class should act as a handle to "interned"
1149         strings in a QScriptEngine.
1150
1151         [Qt] QtScript should provide QScriptString
1152         https://bugs.webkit.org/show_bug.cgi?id=34843
1153
1154         * qt/api/QtScript.pro:
1155         * qt/api/qscriptengine.cpp:
1156         (QScriptEngine::toStringHandle):
1157         * qt/api/qscriptengine.h:
1158         * qt/api/qscriptengine_p.h:
1159         (QScriptEnginePrivate::toStringHandle):
1160         * qt/api/qscriptstring.cpp: Added.
1161         (QScriptString::QScriptString):
1162         (QScriptString::~QScriptString):
1163         (QScriptString::operator=):
1164         (QScriptString::isValid):
1165         (QScriptString::operator==):
1166         (QScriptString::operator!=):
1167         (QScriptString::toArrayIndex):
1168         (QScriptString::toString):
1169         (QScriptString::operator QString):
1170         (qHash):
1171         * qt/api/qscriptstring.h: Added.
1172         * qt/api/qscriptstring_p.h: Added.
1173         (QScriptStringPrivate::QScriptStringPrivate):
1174         (QScriptStringPrivate::~QScriptStringPrivate):
1175         (QScriptStringPrivate::get):
1176         (QScriptStringPrivate::isValid):
1177         (QScriptStringPrivate::operator==):
1178         (QScriptStringPrivate::operator!=):
1179         (QScriptStringPrivate::toArrayIndex):
1180         (QScriptStringPrivate::toString):
1181         (QScriptStringPrivate::id):
1182         * qt/tests/qscriptstring/qscriptstring.pro: Added.
1183         * qt/tests/qscriptstring/tst_qscriptstring.cpp: Added.
1184         (tst_QScriptString::tst_QScriptString):
1185         (tst_QScriptString::~tst_QScriptString):
1186         (tst_QScriptString::test):
1187         (tst_QScriptString::hash):
1188         (tst_QScriptString::toArrayIndex_data):
1189         (tst_QScriptString::toArrayIndex):
1190         * qt/tests/tests.pro:
1191
1192 2010-03-02  Oliver Hunt  <oliver@apple.com>
1193
1194         Reviewed by NOBODY (Build fix).
1195
1196         Export function on windows.
1197
1198         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1199
1200 2010-03-01  Oliver Hunt  <oliver@apple.com>
1201
1202         Reviewed by Maciej Stachowiak.
1203
1204         Refactor named getter function signature to be in line with indexing getter signature
1205         https://bugs.webkit.org/show_bug.cgi?id=35563
1206
1207         This removes the PropertySlot argument from getter functions, and makes them directly
1208         pass the slot base.  This makes the semantics for the functions match that of the
1209         indexing getters.
1210
1211         On the down side, this means that we can no longer simply use a proxy function for
1212         JS getters, so we now add another marker value to indicate that a getter is present
1213         and branch accordingly.
1214
1215         Against all rationality sunspider reports this as a perf win, but i suspect it's just noise.
1216
1217         * API/JSCallbackObject.h:
1218         * API/JSCallbackObjectFunctions.h:
1219         (JSC::::staticValueGetter):
1220         (JSC::::staticFunctionGetter):
1221         (JSC::::callbackGetter):
1222         * JavaScriptCore.exp:
1223         * runtime/JSActivation.cpp:
1224         (JSC::JSActivation::argumentsGetter):
1225         * runtime/JSActivation.h:
1226         * runtime/JSFunction.cpp:
1227         (JSC::JSFunction::argumentsGetter):
1228         (JSC::JSFunction::callerGetter):
1229         (JSC::JSFunction::lengthGetter):
1230         * runtime/JSFunction.h:
1231         * runtime/NumberConstructor.cpp:
1232         (JSC::numberConstructorNaNValue):
1233         (JSC::numberConstructorNegInfinity):
1234         (JSC::numberConstructorPosInfinity):
1235         (JSC::numberConstructorMaxValue):
1236         (JSC::numberConstructorMinValue):
1237         * runtime/PropertySlot.cpp:
1238         (JSC::PropertySlot::functionGetter):
1239         * runtime/PropertySlot.h:
1240         (JSC::PropertySlot::getValue):
1241         (JSC::PropertySlot::setGetterSlot):
1242         (JSC::PropertySlot::setCacheableGetterSlot):
1243         * runtime/RegExpConstructor.cpp:
1244         (JSC::regExpConstructorDollar1):
1245         (JSC::regExpConstructorDollar2):
1246         (JSC::regExpConstructorDollar3):
1247         (JSC::regExpConstructorDollar4):
1248         (JSC::regExpConstructorDollar5):
1249         (JSC::regExpConstructorDollar6):
1250         (JSC::regExpConstructorDollar7):
1251         (JSC::regExpConstructorDollar8):
1252         (JSC::regExpConstructorDollar9):
1253         (JSC::regExpConstructorInput):
1254         (JSC::regExpConstructorMultiline):
1255         (JSC::regExpConstructorLastMatch):
1256         (JSC::regExpConstructorLastParen):
1257         (JSC::regExpConstructorLeftContext):
1258         (JSC::regExpConstructorRightContext):
1259         * runtime/RegExpObject.cpp:
1260         (JSC::regExpObjectGlobal):
1261         (JSC::regExpObjectIgnoreCase):
1262         (JSC::regExpObjectMultiline):
1263         (JSC::regExpObjectSource):
1264         (JSC::regExpObjectLastIndex):
1265
1266 2010-03-01  Oliver Hunt  <oliver@apple.com>
1267
1268         Reviewed by Gavin Barraclough.
1269
1270         PropertySlot::getValue(ExecState, unsigned) unnecessarily converts index to an Identifier
1271         https://bugs.webkit.org/show_bug.cgi?id=35561
1272
1273         Fix this by defining a separate property getter function for index getters.  This allows
1274         us to pass an unsigned number without the conversion to an Identifier.  We then update
1275         setCustomIndex to take this new getter type.
1276
1277         * runtime/PropertySlot.h:
1278         (JSC::PropertySlot::getValue):
1279         (JSC::PropertySlot::setCustom):
1280         (JSC::PropertySlot::setCustomIndex):
1281
1282 2010-03-01  Gavin Barraclough  <barraclough@apple.com>
1283
1284         Reviewed by Oliver Hunt.
1285
1286         Bug 35537 - put_by_id does will incorrectly cache writes where a specific value exists,
1287                     where at the point of caching the same value is being written.
1288
1289         When performing a put_by_id that is replacing a property already present on the object,
1290         there are three interesting cases regarding the state of the specific value:
1291
1292         (1) No specific value set - nothing to do, leave the structure in it's current state,
1293             can cache.
1294         (2) A specific value was set, the new put is not of a specified value (i.e. function),
1295             or is of a different specific value - in these cases we need to perform a despecifying
1296             transition to clear the specific value in the structure, but having done so this is a
1297             normal property so as such we can again cache normally.
1298         (3) A specific value was set, and we are overwriting with the same value - in these cases
1299             leave the structure unchanged, but since a specific value is set we cannot cache this
1300             put (we would need the JIT to dynamically check the value being written matched).
1301
1302         Unfortunately, the current behaviour does not match this.  the checks for a specific value
1303         being present & the value matching are combined in such a way that in case (2), above we
1304         will unnecessarily prevent the transition being cached, but in case (3) we will incorrectly
1305         fail to prevent caching.
1306
1307         The bug exposes itself if multiple puts of the same specific value are performed to a
1308         property, and erroneously the put is allowed to be cached by the JIT.  Method checks may be
1309         generated caching calls of this structure.  Subsequent puts performed from JIT code may
1310         write different values without triggering a despecify transition, and as such cached method
1311         checks will continue to pass, despite the value having changed.
1312
1313         * runtime/JSObject.h:
1314         (JSC::JSObject::putDirectInternal):
1315
1316 2010-03-01  Tor Arne Vestbø  <tor.arne.vestbo@nokia.com>
1317
1318         Reviewed by Simon Hausmann.
1319
1320         Fix the Qt build on Mac OS X/Cocoa 64-bit
1321
1322         * JavaScriptCore.pri: Add missing implementation file to resolve JSC symbols
1323
1324 2010-02-26  Gavin Barraclough  <barraclough@apple.com>
1325
1326         Rubber Stamped by Geoff Garen.
1327
1328         Remove wrec.  All builds should have switched to yarr by now.
1329
1330         * Android.mk:
1331         * GNUmakefile.am:
1332         * JavaScriptCore.gypi:
1333         * JavaScriptCore.pri:
1334         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
1335         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
1336         * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
1337         * JavaScriptCore.xcodeproj/project.pbxproj:
1338         * runtime/RegExp.cpp:
1339         (JSC::RegExp::match):
1340         * runtime/RegExp.h:
1341         * wrec: Removed.
1342         * wrec/CharacterClass.cpp: Removed.
1343         * wrec/CharacterClass.h: Removed.
1344         * wrec/CharacterClassConstructor.cpp: Removed.
1345         * wrec/CharacterClassConstructor.h: Removed.
1346         * wrec/Escapes.h: Removed.
1347         * wrec/Quantifier.h: Removed.
1348         * wrec/WREC.cpp: Removed.
1349         * wrec/WREC.h: Removed.
1350         * wrec/WRECFunctors.cpp: Removed.
1351         * wrec/WRECFunctors.h: Removed.
1352         * wrec/WRECGenerator.cpp: Removed.
1353         * wrec/WRECGenerator.h: Removed.
1354         * wrec/WRECParser.cpp: Removed.
1355         * wrec/WRECParser.h: Removed.
1356         * wscript:
1357
1358 2010-02-26  Oliver Hunt  <oliver@apple.com>
1359
1360         Reviewed by Geoff Garen.
1361
1362         Make the lookup table generator include an explicit cast to expected
1363         type of the function.  We do this because otherwise the blind intptr_t
1364         cast that is subsequently applied allows incorrectly typed functions
1365         to be inserted into the table, where they will only fail at runtime.
1366         This change makes such errors produce a compile time failure.
1367
1368         * create_hash_table:
1369
1370 2010-02-26  Janne Koskinen  <janne.p.koskinen@digia.com>
1371
1372         Reviewed by Simon Hausmann.
1373
1374         [Qt] Symbian specific getCPUTime implemetation
1375         https://bugs.webkit.org/show_bug.cgi?id=34742
1376
1377         Default implementation doesn't work on Symbian devices.
1378         This change adds a proper implementation by
1379         asking thread execution time from the current thread.
1380
1381         * runtime/TimeoutChecker.cpp:
1382         (JSC::getCPUTime):
1383
1384 2010-02-25  Alexey Proskuryakov  <ap@apple.com>
1385
1386         Reviewed by Anders Carlsson.
1387
1388         https://bugs.webkit.org/show_bug.cgi?id=35406
1389         <rdar://problem/6945502> Make generic array methods work with JavaArray
1390
1391         Renamed lazyCreationData to subclassData. This is extra data that can be used by JSArray
1392         subclasses (you can't add new data members, because it wouldn't fit in JSCell otherwise).
1393
1394         * JavaScriptCore.exp:
1395         * runtime/JSArray.cpp:
1396         (JSC::JSArray::JSArray):
1397         (JSC::JSArray::subclassData):
1398         (JSC::JSArray::setSubclassData):
1399         * runtime/JSArray.h:
1400         * runtime/RegExpConstructor.cpp:
1401         (JSC::RegExpMatchesArray::RegExpMatchesArray):
1402         (JSC::RegExpMatchesArray::~RegExpMatchesArray):
1403         (JSC::RegExpMatchesArray::fillArrayInstance):
1404         * runtime/RegExpMatchesArray.h:
1405         (JSC::RegExpMatchesArray::getOwnPropertySlot):
1406         (JSC::RegExpMatchesArray::getOwnPropertyDescriptor):
1407         (JSC::RegExpMatchesArray::put):
1408         (JSC::RegExpMatchesArray::deleteProperty):
1409         (JSC::RegExpMatchesArray::getOwnPropertyNames):
1410
1411 2010-02-25  Oliver Hunt  <oliver@apple.com>
1412
1413         Reviewed by Geoff Garen.
1414
1415         JSC crashes like crazy in the JSPropertyNameIterator destructor
1416
1417         Add back null check of m_cachedStructure.  Curse last minute changes.
1418
1419         * runtime/JSPropertyNameIterator.cpp:
1420         (JSC::JSPropertyNameIterator::~JSPropertyNameIterator):
1421
1422 2010-02-25  Oliver Hunt  <oliver@apple.com>
1423
1424         Reviewed by Maciej Stachowiak.
1425
1426         Race condition in JSPropertyNameIterator and Structure destruction
1427         https://bugs.webkit.org/show_bug.cgi?id=35398
1428
1429         JSPropertyNameIterator and Structure have a cyclic dependency that they
1430         manage by clearing the appropriate reference in each other during their
1431         destruction.  However if the Structure is destroyed while the 
1432         JSPropertyNameIterator is dead but not yet finalized the Structures
1433         WeakGCPtr will return null, and so prevent Structure from clearing
1434         the m_cachedStructure pointer of the iterator.  When the iterator is
1435         then finalised the m_cachedStructure is invalid, and the attempt to
1436         clear the structures back reference fails.
1437
1438         To fix this we simply make JSPropertyNameIterator keep the Structure
1439         alive, using the weak pointer to break the ref cycle.
1440
1441         * runtime/JSPropertyNameIterator.cpp:
1442         (JSC::JSPropertyNameIterator::~JSPropertyNameIterator):
1443           The iterator now keeps m_cachedStructure alive itself, so no longer needs
1444           to check for it being cleared
1445         * runtime/JSPropertyNameIterator.h:
1446         (JSC::JSPropertyNameIterator::setCachedStructure):
1447           Add an assertion to ensure correct usage
1448         (JSC::JSPropertyNameIterator::cachedStructure):
1449           Add .get()
1450         * runtime/Structure.cpp:
1451         (JSC::Structure::~Structure):
1452           Add an assertion that our iterator isn't already dead, and remove
1453           the now unnecessary attempt to clear the ref in the iterator
1454         * runtime/WeakGCPtr.h:
1455         (JSC::WeakGCPtr::hasDeadObject):
1456           An assert-only function to allow us to assert correct behaviour
1457           in the Structure destructor
1458
1459 2010-02-25  Jochen Eisinger  <jochen@chromium.org>
1460  
1461         Reviewed by Jeremy Orlow.
1462  
1463         Make the context that was passed to the ThreadFunction accessible.
1464         https://bugs.webkit.org/show_bug.cgi?id=35379
1465
1466         When a database is opened, right now you
1467         don't have any context from where it is opened. The problem is that
1468         the actual calls that open a database go through the sqlite3 vfs
1469         layer, so there's no easy way to pass this function down to to
1470         platform/sql/chromium/SQLFileSystemChromium*.cpp
1471
1472         This patch will allow you to get from anywhere within webkit a pointer
1473         to the Thread object that actually created the thread you're currently
1474         on (in case of the database, this can be either a thread forked of
1475         from the main thread or from a worker thread), and query the object
1476         for context information.
1477
1478         * wtf/Threading.h:
1479         * wtf/ThreadingNone.cpp:
1480         (WTF::threadContext):
1481         * wtf/ThreadingPthreads.cpp:
1482         (WTF::):
1483         (WTF::identifierByPthreadHandle):
1484         (WTF::establishIdentifierForPthreadHandle):
1485         (WTF::pthreadHandleForIdentifier):
1486         (WTF::contextForIdentifier):
1487         (WTF::createThreadInternal):
1488         (WTF::currentThread):
1489         (WTF::threadContext):
1490         * wtf/ThreadingWin.cpp:
1491         (WTF::):
1492         (WTF::threadMap):
1493         (WTF::storeThreadHandleByIdentifier):
1494         (WTF::threadHandleForIdentifier):
1495         (WTF::contextForIdentifier):
1496         (WTF::createThreadInternal):
1497         (WTF::threadContext):
1498
1499 2010-02-25  Jeremy Orlow  <jorlow@chromium.org>
1500
1501         Reverting to re-submit with better change log.
1502
1503         * wtf/Threading.h:
1504         * wtf/ThreadingNone.cpp:
1505         (WTF::isMainThread):
1506         * wtf/ThreadingPthreads.cpp:
1507         (WTF::identifierByPthreadHandle):
1508         (WTF::establishIdentifierForPthreadHandle):
1509         (WTF::pthreadHandleForIdentifier):
1510         (WTF::createThreadInternal):
1511         (WTF::currentThread):
1512         * wtf/ThreadingWin.cpp:
1513         (WTF::threadMap):
1514         (WTF::storeThreadHandleByIdentifier):
1515         (WTF::threadHandleForIdentifier):
1516         (WTF::createThreadInternal):
1517
1518 2010-02-25  Jochen Eisinger  <jochen@chromium.org>
1519
1520         Reviewed by Jeremy Orlow.
1521
1522         Make the context that was passed to the ThreadFunction accessible.
1523         https://bugs.webkit.org/show_bug.cgi?id=35379
1524
1525         * wtf/Threading.h:
1526         * wtf/ThreadingNone.cpp:
1527         (WTF::threadContext):
1528         * wtf/ThreadingPthreads.cpp:
1529         (WTF::):
1530         (WTF::identifierByPthreadHandle):
1531         (WTF::establishIdentifierForPthreadHandle):
1532         (WTF::pthreadHandleForIdentifier):
1533         (WTF::contextForIdentifier):
1534         (WTF::createThreadInternal):
1535         (WTF::currentThread):
1536         (WTF::threadContext):
1537         * wtf/ThreadingWin.cpp:
1538         (WTF::):
1539         (WTF::threadMap):
1540         (WTF::storeThreadHandleByIdentifier):
1541         (WTF::threadHandleForIdentifier):
1542         (WTF::contextForIdentifier):
1543         (WTF::createThreadInternal):
1544         (WTF::threadContext):
1545
1546 2010-02-24  Oliver Hunt  <oliver@apple.com>
1547
1548         Reviewed by Geoffrey Garen.
1549
1550         [REGRESSION in r55185] EXC_BAD_ACCESS on opening inspector.
1551         https://bugs.webkit.org/show_bug.cgi?id=35335
1552
1553         compileGetDirectOffset modifies the contents of the object register
1554         when the object is not using the inline storage array.  As the object
1555         register contains our 'this' pointer we can't allow it to be clobbered.
1556         The fix is simply to copy the register into a separate scratch register
1557         when we're loading off an object that doesn't use inline storage.
1558
1559         * jit/JITPropertyAccess.cpp:
1560         (JSC::JIT::privateCompileGetByIdSelfList):
1561         * jit/JITPropertyAccess32_64.cpp:
1562         (JSC::JIT::privateCompileGetByIdSelfList):
1563
1564 2010-02-24  Oliver Hunt  <oliver@apple.com>
1565
1566         Reviewed by Gavin Barraclough.
1567
1568         Speed up getter performance in the jit
1569         https://bugs.webkit.org/show_bug.cgi?id=35332
1570
1571         Implement getter lookup caching in the interpreter.
1572         The getter stubs are generated through basically the
1573         same code paths as the normal get_by_id caching.
1574         Instead of simply loading a property and returning,
1575         we load the getter slot, and pass the getter, base value
1576         and return address to a shared stub used for getter
1577         dispatch.
1578
1579         * jit/JIT.h:
1580         (JSC::JIT::compileGetByIdProto):
1581         (JSC::JIT::compileGetByIdSelfList):
1582         (JSC::JIT::compileGetByIdProtoList):
1583         (JSC::JIT::compileGetByIdChainList):
1584         (JSC::JIT::compileGetByIdChain):
1585         * jit/JITPropertyAccess.cpp:
1586         (JSC::JIT::privateCompileGetByIdProto):
1587         (JSC::JIT::privateCompileGetByIdSelfList):
1588         (JSC::JIT::privateCompileGetByIdProtoList):
1589         (JSC::JIT::privateCompileGetByIdChainList):
1590         (JSC::JIT::privateCompileGetByIdChain):
1591         * jit/JITPropertyAccess32_64.cpp:
1592         (JSC::JIT::privateCompileGetByIdProto):
1593         (JSC::JIT::privateCompileGetByIdSelfList):
1594         (JSC::JIT::privateCompileGetByIdProtoList):
1595         (JSC::JIT::privateCompileGetByIdChainList):
1596         (JSC::JIT::privateCompileGetByIdChain):
1597         * jit/JITStubs.cpp:
1598         (JSC::JITThunks::tryCacheGetByID):
1599         (JSC::DEFINE_STUB_FUNCTION):
1600         * jit/JITStubs.h:
1601         (JSC::):
1602         * runtime/GetterSetter.h:
1603
1604 2010-02-23  Oliver Hunt  <oliver@apple.com>
1605
1606         Reviewed by Maciej Stachowiak.
1607
1608         Web Inspector: Regression: r55027+: Inspector broken
1609         https://bugs.webkit.org/show_bug.cgi?id=35253
1610
1611         op_get_by_id_getter_chain was not passing the correct this parameter.
1612         The bug was caused by incorrect use of baseCell instead of baseValue,
1613         baseValue contains the original object for the lookup (and hence the
1614         correct this object), baseCell is clobbered as part of walking the
1615         prototype chain.
1616
1617         * interpreter/Interpreter.cpp:
1618         (JSC::Interpreter::privateExecute):
1619
1620 2010-02-23  Gustavo Noronha Silva  <gns@gnome.org>
1621
1622         Rubber-stamped by Dimitri Glazkov.
1623
1624         Chromium build fix.
1625
1626         * JavaScriptCore.gyp/JavaScriptCore.gyp:
1627
1628 2010-02-23  Leandro Pereira  <leandro@profusion.mobi>
1629
1630         Reviewed by Gustavo Noronha Silva.
1631
1632         Changes references of GOwnPtr to reflect their new place.
1633         http://webkit.org/b/35084
1634
1635         * JavaScriptCore/JavaScriptCore.gypi:
1636         * JavaScriptCore/wtf/Threading.h:
1637         * JavaScriptCore/wtf/unicode/glib/UnicodeGLib.h:
1638
1639 2010-02-23  Leandro Pereira  <leandro@profusion.mobi>
1640
1641         Reviewed by Kenneth Rohde Christiansen.
1642
1643         Adding the EFL implementation of JavaScriptCore.
1644         See https://bugs.webkit.org/show_bug.cgi?id=35084 for details.
1645
1646         * GNUmakefile.am: Updated to reflect the new location of GOwnPtr and
1647                           GRefPtr.
1648         * wtf/efl/MainThreadEfl.cpp: Added.
1649         * wtf/gobject/GOwnPtr.cpp: Moved from wtf/gtk.
1650         * wtf/gobject/GOwnPtr.h: Moved from wtf/gtk.
1651         * wtf/gobject/GRefPtr.cpp: Moved from wtf/gtk.
1652         * wtf/gobject/GRefPtr.h: Moved from wtf/gtk.
1653
1654 2010-02-22  Julien Chaffraix  <jchaffraix@webkit.org>
1655
1656         Reviewed by Darin Adler.
1657
1658         Remove auto_ptr usage in JavaScriptCore.
1659         https://bugs.webkit.org/show_bug.cgi?id=35221
1660
1661         * parser/Nodes.h: Removed now unneeded adopt method.
1662         * parser/Parser.cpp: Removed <memory> include as it is not required anymore.
1663         * wtf/OwnPtr.h: Removed the constructor from auto_ptr.
1664         * wtf/VectorTraits.h: Removed a template specialization for auto_ptr.
1665         * wtf/unicode/Collator.h: Made userDefault return a PassOwnPtr.
1666         * wtf/unicode/CollatorDefault.cpp:
1667         (WTF::Collator::userDefault): Changed the method to match the next signature.
1668         * wtf/unicode/icu/CollatorICU.cpp:
1669         (WTF::Collator::userDefault): Ditto.
1670
1671 2010-02-22  Huahui Wu  <hwu@google.com>
1672
1673         Reviewed by Eric Seidel.
1674
1675         Add code that enables SquirrelFish Extreme (a.k.a JSCX, JSC JIT)
1676         in Android. It's disabled by default, but is enabled when the 
1677         enveronment variable ENABLE_JSC_JIT is set to true.
1678         https://bugs.webkit.org/show_bug.cgi?id=34855
1679
1680         * Android.mk:
1681         * wtf/Platform.h:
1682
1683 2010-02-22  Gavin Barraclough  <barraclough@apple.com>
1684
1685         Reviewed by Oliver Hunt.
1686
1687         JSStringBuilder should not CRASH if allocation fails, it should throw a JSException.
1688
1689         * runtime/JSGlobalObjectFunctions.cpp:
1690         * runtime/JSStringBuilder.h:
1691         (JSC::JSStringBuilder::JSStringBuilder):
1692         (JSC::JSStringBuilder::append):
1693         (JSC::JSStringBuilder::build):
1694         * runtime/StringBuilder.h:
1695         (JSC::StringBuilder::build):
1696         * wtf/Vector.h:
1697         (WTF::VectorBufferBase::tryAllocateBuffer):
1698         (WTF::):
1699         (WTF::VectorBuffer::tryAllocateBuffer):
1700         (WTF::::tryExpandCapacity):
1701         (WTF::::tryReserveCapacity):
1702         (WTF::::tryAppend):
1703
1704 2010-02-22  Kwang Yul Seo  <skyul@company100.net>
1705
1706         Reviewed by Eric Seidel.
1707
1708         [BREWMP] Map FastMalloc to BREW memory allocator
1709         https://bugs.webkit.org/show_bug.cgi?id=33570
1710
1711         Use MALLOC macro instead of the standard malloc function.
1712         Although RVCT provides malloc, we can't use it in BREW
1713         because the loader does not initialize the base address properly.
1714
1715         * wtf/FastMalloc.cpp:
1716         * wtf/brew/SystemMallocBrew.h: Added.
1717         (mallocBrew):
1718         (callocBrew):
1719         (freeBrew):
1720         (reallocBrew):
1721
1722 2010-02-22  Gustavo Noronha Silva  <gustavo.noronha@collabora.co.uk>
1723
1724         Build fix for make distcheck.
1725
1726         * GNUmakefile.am:
1727
1728 2010-02-22  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
1729
1730         Unreviewed build fix.
1731
1732         [Qt] Build fix for RVCT.
1733
1734         Fix after r55024. The "-i" option is for perl not for the
1735         script.
1736
1737         * DerivedSources.pro:
1738
1739 2010-02-21  Gavin Barraclough  <barraclough@apple.com>
1740
1741         Reviewed by Oliver Hunt.
1742
1743         Make UString::m_data be const, and make the UChar owned/ref-counted by CrossThreadRefCounted be const too.
1744
1745         * runtime/UStringImpl.cpp:
1746         (JSC::UStringImpl::baseSharedBuffer):
1747         (JSC::UStringImpl::~UStringImpl):
1748         * runtime/UStringImpl.h:
1749         (JSC::UStringImpl::create):
1750         (JSC::UStringImpl::data):
1751         (JSC::UStringImpl::UStringImpl):
1752         * wtf/OwnFastMallocPtr.h:
1753         (WTF::OwnFastMallocPtr::~OwnFastMallocPtr):
1754
1755 2010-02-21  Yuta Kitamura  <yutak@chromium.org>
1756
1757         Reviewed by Darin Adler.
1758
1759         HashMapTranslatorAdapter::translate() needs to set the mapped value.
1760
1761         HTTPHeaderMap::add(const char*, const String&) does not work
1762         https://bugs.webkit.org/show_bug.cgi?id=35227
1763
1764         * wtf/HashMap.h:
1765         (WTF::HashMapTranslatorAdapter::translate):
1766
1767 2010-02-19  Maciej Stachowiak  <mjs@apple.com>
1768
1769         Reviewed by David Levin.
1770
1771         Add an ENABLE flag for sandboxed iframes to make it possible to disable it in releases
1772         https://bugs.webkit.org/show_bug.cgi?id=35147
1773
1774         * Configurations/FeatureDefines.xcconfig:
1775
1776 2010-02-19  Gavin Barraclough  <barraclough@apple.com>
1777
1778         Reviewed by Oliver Hunt.
1779
1780         JSString::getIndex() calls value() to resolve the string value (is a rope)
1781         to a UString, then passes the result to jsSingleCharacterSubstring without
1782         checking for an exception.  In case of out-of-memory the returned UString
1783         is null(), which may result in an out-of-buounds substring being created.
1784         This is bad.
1785
1786         Simple fix is to be able to get an index from a rope without resolving to
1787         UString.  This may be a useful optimization in some test cases.
1788
1789         The same bug exists in some other methods is JSString, these can be fixed
1790         by changing them to call getIndex().
1791
1792         * runtime/JSString.cpp:
1793         (JSC::JSString::resolveRope):
1794         (JSC::JSString::getStringPropertyDescriptor):
1795         * runtime/JSString.h:
1796         (JSC::jsSingleCharacterSubstring):
1797         (JSC::JSString::getIndex):
1798         (JSC::jsSingleCharacterString):
1799         (JSC::JSString::getStringPropertySlot):
1800         * runtime/UStringImpl.cpp:
1801         (JSC::singleCharacterSubstring):
1802         * runtime/UStringImpl.h:
1803         (JSC::UStringImpl::singleCharacterSubstring):
1804
1805 2010-02-19  Oliver Hunt  <oliver@apple.com>
1806
1807         RS = Gavin Barraclough.
1808
1809         Split the 32/64 version of JITPropertyAccess into a separate file.
1810
1811         * GNUmakefile.am:
1812         * JavaScriptCore.gypi:
1813         * JavaScriptCore.pri:
1814         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
1815         * JavaScriptCore.xcodeproj/project.pbxproj:
1816         * jit/JITPropertyAccess.cpp:
1817         * jit/JITPropertyAccess32_64.cpp: Added.
1818         (JSC::JIT::emit_op_put_by_index):
1819         (JSC::JIT::emit_op_put_getter):
1820         (JSC::JIT::emit_op_put_setter):
1821         (JSC::JIT::emit_op_del_by_id):
1822         (JSC::JIT::emit_op_method_check):
1823         (JSC::JIT::emitSlow_op_method_check):
1824         (JSC::JIT::emit_op_get_by_val):
1825         (JSC::JIT::emitSlow_op_get_by_val):
1826         (JSC::JIT::emit_op_put_by_val):
1827         (JSC::JIT::emitSlow_op_put_by_val):
1828         (JSC::JIT::emit_op_get_by_id):
1829         (JSC::JIT::emitSlow_op_get_by_id):
1830         (JSC::JIT::emit_op_put_by_id):
1831         (JSC::JIT::emitSlow_op_put_by_id):
1832         (JSC::JIT::compileGetByIdHotPath):
1833         (JSC::JIT::compileGetByIdSlowCase):
1834         (JSC::JIT::compilePutDirectOffset):
1835         (JSC::JIT::compileGetDirectOffset):
1836         (JSC::JIT::testPrototype):
1837         (JSC::JIT::privateCompilePutByIdTransition):
1838         (JSC::JIT::patchGetByIdSelf):
1839         (JSC::JIT::patchMethodCallProto):
1840         (JSC::JIT::patchPutByIdReplace):
1841         (JSC::JIT::privateCompilePatchGetArrayLength):
1842         (JSC::JIT::privateCompileGetByIdProto):
1843         (JSC::JIT::privateCompileGetByIdSelfList):
1844         (JSC::JIT::privateCompileGetByIdProtoList):
1845         (JSC::JIT::privateCompileGetByIdChainList):
1846         (JSC::JIT::privateCompileGetByIdChain):
1847         (JSC::JIT::emit_op_get_by_pname):
1848         (JSC::JIT::emitSlow_op_get_by_pname):
1849
1850 2010-02-19  Patrick Gansterer  <paroga@paroga.com>
1851
1852         Reviewed by Laszlo Gombos.
1853
1854         Added additional parameter to create_rvct_stubs 
1855         for setting the regularexpression prefix.
1856         Renamed it because it now works for other platforms too.
1857         https://bugs.webkit.org/show_bug.cgi?id=34951
1858
1859         * DerivedSources.pro:
1860         * create_jit_stubs: Copied from JavaScriptCore/create_rvct_stubs.
1861         * create_rvct_stubs: Removed.
1862
1863 2010-02-18  Oliver Hunt  <oliver@apple.com>
1864
1865         Reviewed by Gavin Barraclough.
1866
1867         Improve interpreter getter performance
1868         https://bugs.webkit.org/show_bug.cgi?id=35138
1869
1870         Improve the performance of getter dispatch by making it possible
1871         for the interpreter to cache the GetterSetter object lookup.
1872
1873         To do this we simply need to make PropertySlot aware of getters
1874         as a potentially cacheable property, and record the base and this
1875         objects for a getter access.  This allows us to use more-or-less
1876         identical code to that used by the normal get_by_id caching, with
1877         the dispatch being the only actual difference.
1878
1879         I'm holding off of implementing this in the JIT until I do some
1880         cleanup to try and making coding in the JIT not be as horrible
1881         as it is currently.
1882
1883         * bytecode/CodeBlock.cpp:
1884         (JSC::CodeBlock::dump):
1885         (JSC::CodeBlock::derefStructures):
1886         (JSC::CodeBlock::refStructures):
1887         * bytecode/Opcode.h:
1888         * interpreter/Interpreter.cpp:
1889         (JSC::Interpreter::resolveGlobal):
1890         (JSC::Interpreter::tryCacheGetByID):
1891         (JSC::Interpreter::privateExecute):
1892         * jit/JIT.cpp:
1893         (JSC::JIT::privateCompileMainPass):
1894         * jit/JITStubs.cpp:
1895         (JSC::JITThunks::tryCacheGetByID):
1896         (JSC::DEFINE_STUB_FUNCTION):
1897         * runtime/JSObject.cpp:
1898         (JSC::JSObject::fillGetterPropertySlot):
1899         * runtime/PropertySlot.cpp:
1900         (JSC::PropertySlot::functionGetter):
1901         * runtime/PropertySlot.h:
1902         (JSC::PropertySlot::isGetter):
1903         (JSC::PropertySlot::isCacheable):
1904         (JSC::PropertySlot::isCacheableValue):
1905         (JSC::PropertySlot::setValueSlot):
1906         (JSC::PropertySlot::setGetterSlot):
1907         (JSC::PropertySlot::setCacheableGetterSlot):
1908         (JSC::PropertySlot::clearOffset):
1909         (JSC::PropertySlot::thisValue):
1910
1911 2010-02-17  Geoffrey Garen  <ggaren@apple.com>
1912
1913         Reviewed by Oliver Hunt.
1914
1915         Fixed a portion of:
1916         <rdar://problem/7165917> | https://bugs.webkit.org/show_bug.cgi?id=28676
1917         Safari 4 does not release memory back to the operating system fast enough (28676)
1918         
1919         This patch fixes a surprisingly common edge case in which the page heap
1920         would have only one free span, but that span would be larger than the
1921         minimum free size, so we would decide not to free it, even though it
1922         could be as large as 100MB or more!
1923         
1924         SunSpider reports no change on Mac or Windows.
1925
1926         * wtf/FastMalloc.cpp:
1927         (WTF::TCMalloc_PageHeap::scavenge): Call shouldContinueScavenging() instead
1928         of doing the math ourselves. Don't keep a local value for pagesDecommitted
1929         because that lets free_committed_pages_ be wrong temporarily. Instead,
1930         update free_committed_pages_ as we go. ASSERT that we aren't releasing
1931         a span that has already been released, because we think this is impossible.
1932         Finally, don't be afraid to release all free memory in the page heap when
1933         scavenging. We only scavenge after 5 seconds of the application's working
1934         set not growing, and we keep both thread caches and a central cache on
1935         top of the page heap, so the extra free pages in the page heap were just
1936         overkill.
1937
1938 2010-02-17  Gavin Barraclough  <barraclough@apple.com>
1939
1940         Reviewed by Oliver Hunt.
1941
1942         https://bugs.webkit.org/show_bug.cgi?id=35070
1943         Addition of 2 strings of length 2^31 may result in a string of length 0.
1944
1945         Check for overflow when creating a new JSString as a result of an addition
1946         or concatenation, throw an out of memory exception.
1947
1948         * runtime/JSString.h:
1949         (JSC::):
1950         * runtime/Operations.h:
1951         (JSC::jsString):
1952
1953 2010-02-17  Xan Lopez  <xlopez@igalia.com>
1954
1955         Reviewed by Gustavo Noronha.
1956
1957         [Linux] Webkit incompatible with Java plugins
1958         https://bugs.webkit.org/show_bug.cgi?id=24912
1959
1960         Add support for GFile to GOwnPtr.
1961
1962         Based on original work by Gustavo Noronha.
1963
1964         * wtf/gtk/GOwnPtr.cpp:
1965         (WTF::GFile):
1966         * wtf/gtk/GOwnPtr.h:
1967
1968 2010-02-16  Gavin Barraclough  <barraclough@apple.com>
1969
1970         Reviewed by Mark Rowe.
1971
1972         Fix a handful of other leaks seen on the buildbot.
1973
1974         * runtime/UStringImpl.h:
1975         (JSC::UStringOrRopeImpl::deref): Delegate through to the subclass version of deref to ensure that
1976         the correct cleanup takes place.  This function previously featured some code that attempted to
1977         skip deletion of static UStringImpl's.  Closer inspection revealed that it was in fact equivalent
1978         to "if (false)", meaning that UStringImpl's which had their final deref performed via this function
1979         were leaked.
1980
1981 2010-02-16  Mark Rowe  <mrowe@apple.com>
1982
1983         Reviewed by Gavin Barraclough.
1984
1985         Fix a handful of leaks seen on the buildbot.
1986
1987         * runtime/UStringImpl.h:
1988         (JSC::UStringOrRopeImpl::deref): Call URopeImpl::destructNonRecursive rather than delete
1989         to ensure that the rope's fibers are also destroyed.
1990
1991 2010-02-16  Gavin Barraclough  <barraclough@apple.com>
1992
1993         Reviewed by Oliver Hunt.
1994
1995         https://bugs.webkit.org/show_bug.cgi?id=34964
1996         Leaks tool reports false memory leaks due to Rope implementation.
1997
1998         A rope is a recursive data structure where each node in the rope holds a set of
1999         pointers, each of which may reference either a string (in UStringImpl form) or
2000         another rope node.  A low bit in each pointer is used to distinguish between
2001         rope & string elements, in a fashion similar to the recently-removed
2002         PtrAndFlags class (see https://bugs.webkit.org/show_bug.cgi?id=33731 ).  Again,
2003         this causes a problem for Leaks - refactor to remove the magic pointer
2004         mangling.
2005
2006         Move Rope out from JSString.h and rename to URopeImpl, to match UStringImpl.
2007         Give UStringImpl and URopeImpl a common parent class, UStringOrRopeImpl.
2008         Repurpose an otherwise invalid permutation to flags (static & should report
2009         memory cost) to identify ropes.
2010
2011         This allows us to change the rope's fibers to interrogate the object rather
2012         than storing a bool within the low bits of the pointer (or in some cases the
2013         use of a common parent class removes the need to determine the type at all -
2014         there is a common interface to ref or get the length of either ropes or strings).
2015
2016         * API/JSClassRef.cpp:
2017         (OpaqueJSClass::OpaqueJSClass):
2018         (OpaqueJSClassContextData::OpaqueJSClassContextData):
2019         * bytecompiler/BytecodeGenerator.cpp:
2020         (JSC::keyForCharacterSwitch):
2021         * interpreter/Interpreter.cpp:
2022         (JSC::Interpreter::privateExecute):
2023         * jit/JITStubs.cpp:
2024         (JSC::DEFINE_STUB_FUNCTION):
2025         * runtime/ArrayPrototype.cpp:
2026         (JSC::arrayProtoFuncToString):
2027         * runtime/Identifier.cpp:
2028         (JSC::Identifier::equal):
2029         (JSC::Identifier::addSlowCase):
2030         * runtime/JSString.cpp:
2031         (JSC::JSString::resolveRope):
2032         * runtime/JSString.h:
2033         (JSC::):
2034         (JSC::RopeBuilder::JSString):
2035         (JSC::RopeBuilder::~JSString):
2036         (JSC::RopeBuilder::appendStringInConstruct):
2037         (JSC::RopeBuilder::appendValueInConstructAndIncrementLength):
2038         (JSC::RopeBuilder::JSStringFinalizerStruct::JSStringFinalizerStruct):
2039         (JSC::RopeBuilder::JSStringFinalizerStruct::):
2040         * runtime/UString.cpp:
2041         (JSC::UString::toStrictUInt32):
2042         (JSC::equal):
2043         * runtime/UString.h:
2044         (JSC::UString::isEmpty):
2045         (JSC::UString::size):
2046         * runtime/UStringImpl.cpp:
2047         (JSC::URopeImpl::derefFibersNonRecursive):
2048         (JSC::URopeImpl::destructNonRecursive):
2049         * runtime/UStringImpl.h:
2050         (JSC::UStringOrRopeImpl::isRope):
2051         (JSC::UStringOrRopeImpl::length):
2052         (JSC::UStringOrRopeImpl::ref):
2053         (JSC::UStringOrRopeImpl::):
2054         (JSC::UStringOrRopeImpl::operator new):
2055         (JSC::UStringOrRopeImpl::UStringOrRopeImpl):
2056         (JSC::UStringImpl::adopt):
2057         (JSC::UStringImpl::createUninitialized):
2058         (JSC::UStringImpl::tryCreateUninitialized):
2059         (JSC::UStringImpl::data):
2060         (JSC::UStringImpl::cost):
2061         (JSC::UStringImpl::deref):
2062         (JSC::UStringImpl::UStringImpl):
2063         (JSC::UStringImpl::):
2064         (JSC::URopeImpl::tryCreateUninitialized):
2065         (JSC::URopeImpl::initializeFiber):
2066         (JSC::URopeImpl::fiberCount):
2067         (JSC::URopeImpl::fibers):
2068         (JSC::URopeImpl::deref):
2069         (JSC::URopeImpl::URopeImpl):
2070         (JSC::URopeImpl::hasOneRef):
2071         (JSC::UStringOrRopeImpl::deref):
2072
2073 2010-02-15  Gabor Loki  <loki@webkit.org>
2074
2075         Reviewed by Gavin Barraclough.
2076
2077         Fix the SP at ctiOpThrowNotCaught on Thumb2 (JSVALUE32)
2078         https://bugs.webkit.org/show_bug.cgi?id=34939
2079
2080         * jit/JITStubs.cpp:
2081
2082 2010-02-15  Gavin Barraclough  <barraclough@apple.com>
2083
2084         Reviewed by NOBODY (Build Fix!).
2085
2086         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2087
2088 2010-02-15  Gavin Barraclough  <barraclough@apple.com>
2089
2090         Reviewed by Oliver Hunt.
2091
2092         Some general Rope related refactoring.
2093
2094         Rename Rope::m_ropeLength to m_fiberCount, to be more descriptive.
2095         Rename Rope::m_stringLength to simply m_length (since this is the
2096         more conventional name for the length of a string).  Move append
2097         behaviour out into a new RopeBuilder class, so that Rope no longer
2098         needs any knowledge of the JSString or UString implementation.
2099
2100         Make Rope no longer be nested within JSString.
2101         (Rope now no-longer need reside within JSString.h, but leaving
2102         the change of moving this out to a different header as a separate
2103         change from these renames).
2104
2105         * JavaScriptCore.exp:
2106         * jit/JITOpcodes.cpp:
2107         (JSC::JIT::privateCompileCTIMachineTrampolines):
2108         * runtime/JSString.cpp:
2109         (JSC::Rope::destructNonRecursive):
2110         (JSC::Rope::~Rope):
2111         (JSC::JSString::resolveRope):
2112         (JSC::JSString::toBoolean):
2113         (JSC::JSString::getStringPropertyDescriptor):
2114         * runtime/JSString.h:
2115         (JSC::Rope::Fiber::Fiber):
2116         (JSC::Rope::Fiber::deref):
2117         (JSC::Rope::Fiber::ref):
2118         (JSC::Rope::Fiber::refAndGetLength):
2119         (JSC::Rope::Fiber::isRope):
2120         (JSC::Rope::Fiber::rope):
2121         (JSC::Rope::Fiber::isString):
2122         (JSC::Rope::Fiber::string):
2123         (JSC::Rope::Fiber::nonFiber):
2124         (JSC::Rope::tryCreateUninitialized):
2125         (JSC::Rope::append):
2126         (JSC::Rope::fiberCount):
2127         (JSC::Rope::length):
2128         (JSC::Rope::fibers):
2129         (JSC::Rope::Rope):
2130         (JSC::Rope::operator new):
2131         (JSC::):
2132         (JSC::RopeBuilder::JSString):
2133         (JSC::RopeBuilder::~JSString):
2134         (JSC::RopeBuilder::length):
2135         (JSC::RopeBuilder::canGetIndex):
2136         (JSC::RopeBuilder::appendStringInConstruct):
2137         (JSC::RopeBuilder::appendValueInConstructAndIncrementLength):
2138         (JSC::RopeBuilder::isRope):
2139         (JSC::RopeBuilder::fiberCount):
2140         (JSC::JSString::getStringPropertySlot):
2141         * runtime/Operations.h:
2142         (JSC::jsString):
2143
2144 2010-02-15  Gavin Barraclough  <barraclough@apple.com>
2145
2146         Reviewed by NOBODY (Build fix).
2147
2148         Add missing cast for !YARR (PPC) builds.
2149
2150         * runtime/RegExp.cpp:
2151         (JSC::RegExp::match):
2152
2153 2010-02-14  Gavin Barraclough  <barraclough@apple.com>
2154
2155         Reviewed by Darin Adler.
2156
2157         https://bugs.webkit.org/show_bug.cgi?id=33731
2158         Many false leaks in release builds due to PtrAndFlags
2159
2160         StructureTransitionTable was effectively a smart pointer type,
2161         one machine word in size and wholly contained as a member of
2162         of Structure.  It either pointed to an actual table, or could
2163         be used to describe a single transtion entry without use of a
2164         table.
2165
2166         This, however, worked by using a PtrAndFlags, which is not
2167         compatible with the leaks tool.  Since there is no clear way to
2168         obtain another bit for 'free' here, and since there are bits
2169         available up in Structure, merge this functionality back up into
2170         Structure.  Having this in a separate class was quite clean
2171         from an enacapsulation perspective, but this solution doesn't
2172         seem to bad - all table access is now intermediated through the
2173         Structure::structureTransitionTableFoo methods, keeping the
2174         optimization fairly well contained.
2175
2176         This was the last use of PtrAndFlags, so removing the file too.
2177
2178         * JavaScriptCore.xcodeproj/project.pbxproj:
2179         * bytecode/CodeBlock.h:
2180         * runtime/Structure.cpp:
2181         (JSC::Structure::Structure):
2182         (JSC::Structure::~Structure):
2183         (JSC::Structure::addPropertyTransitionToExistingStructure):
2184         (JSC::Structure::addPropertyTransition):
2185         (JSC::Structure::hasTransition):
2186         * runtime/Structure.h:
2187         (JSC::Structure::):
2188         (JSC::Structure::structureTransitionTableContains):
2189         (JSC::Structure::structureTransitionTableGet):
2190         (JSC::Structure::structureTransitionTableHasTransition):
2191         (JSC::Structure::structureTransitionTableRemove):
2192         (JSC::Structure::structureTransitionTableAdd):
2193         (JSC::Structure::structureTransitionTable):
2194         (JSC::Structure::setStructureTransitionTable):
2195         (JSC::Structure::singleTransition):
2196         (JSC::Structure::setSingleTransition):
2197         * runtime/StructureTransitionTable.h:
2198         * wtf/PtrAndFlags.h: Removed.
2199
2200 2010-02-15  Gavin Barraclough  <barraclough@apple.com>
2201
2202         Rubber Stamped by Geoff Garen.
2203
2204         Bug 34948 - tryMakeString should fail on error in length calculation
2205
2206         Ooops! - "bool overflow" argument should have been "bool& overflow".
2207
2208         * runtime/UString.h:
2209         (JSC::sumWithOverflow):
2210         (JSC::tryMakeString):
2211
2212 2010-02-15  Gavin Barraclough  <barraclough@apple.com>
2213
2214         Reviewed by NOBODY (Build Fix (pt 2!)).
2215
2216         Some symbol names have changed, remove, will readd if required.
2217
2218         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2219
2220 2010-02-15  Gavin Barraclough  <barraclough@apple.com>
2221
2222         Reviewed by NOBODY (Build Fix (pt 1?)).
2223
2224         Some symbol names have changed, remove, will readd if required.
2225
2226         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2227
2228 2010-02-15  Geoffrey Garen  <ggaren@apple.com>
2229
2230         Reviewed by Oliver Hunt.
2231
2232         Removed some mistaken code added in http://trac.webkit.org/changeset/53860.
2233
2234         * API/APIShims.h:
2235         (JSC::APICallbackShim::APICallbackShim):
2236         (JSC::APICallbackShim::~APICallbackShim): No need to start/stop the
2237         timeout checker when calling out from the API to the client; we want to
2238         monitor the VM for timeouts, not the client. This mistake was harmless /
2239         undetectable, since it's totally redundant with the APIEntryShim, which
2240         also starts / stops the timeout checker.
2241
2242 2010-02-15  Gavin Barraclough  <barraclough@apple.com>
2243
2244         Reviewed by Geoff Garen.
2245
2246         Bug 34952 - String lengths in UString should be unsigned.
2247         This matches WebCore::StringImpl, and better unifies behaviour throughout JSC.
2248
2249         * JavaScriptCore.exp:
2250         * bytecode/EvalCodeCache.h:
2251         * runtime/Identifier.cpp:
2252         (JSC::Identifier::equal):
2253         * runtime/Identifier.h:
2254         * runtime/JSGlobalObjectFunctions.cpp:
2255         (JSC::globalFuncEscape):
2256         * runtime/JSONObject.cpp:
2257         (JSC::gap):
2258         (JSC::Stringifier::indent):
2259         * runtime/NumberPrototype.cpp:
2260         (JSC::numberProtoFuncToFixed):
2261         (JSC::numberProtoFuncToPrecision):
2262         * runtime/RegExp.cpp:
2263         (JSC::RegExp::match):
2264         * runtime/StringPrototype.cpp:
2265         (JSC::substituteBackreferencesSlow):
2266         (JSC::stringProtoFuncReplace):
2267         (JSC::stringProtoFuncSplit):
2268         (JSC::trimString):
2269         * runtime/UString.cpp:
2270         (JSC::UString::UString):
2271         (JSC::UString::from):
2272         (JSC::UString::getCString):
2273         (JSC::UString::ascii):
2274         (JSC::UString::operator[]):
2275         (JSC::UString::toStrictUInt32):
2276         (JSC::UString::find):
2277         (JSC::UString::rfind):
2278         (JSC::UString::substr):
2279         (JSC::operator<):
2280         (JSC::operator>):
2281         (JSC::compare):
2282         (JSC::equal):
2283         (JSC::UString::UTF8String):
2284         * runtime/UString.h:
2285         (JSC::UString::size):
2286         (JSC::operator==):
2287         * runtime/UStringImpl.cpp:
2288         (JSC::UStringImpl::create):
2289         * runtime/UStringImpl.h:
2290         (JSC::UStringImpl::create):
2291         (JSC::UStringImpl::size):
2292         (JSC::UStringImpl::computeHash):
2293         (JSC::UStringImpl::UStringImpl):
2294
2295 2010-02-15  Gavin Barraclough  <barraclough@apple.com>
2296
2297         Reviewed by Geoff Garen.
2298
2299         Bug 34948 - tryMakeString should fail on error in length calculation
2300
2301         The sum of the length of substrings could overflow.
2302
2303         * runtime/UString.h:
2304         (JSC::sumWithOverflow):
2305         (JSC::tryMakeString):
2306
2307 2010-02-15  Geoffrey Garen  <ggaren@apple.com>
2308
2309         Reviewed by Oliver Hunt.
2310
2311         Fixed <rdar://problem/7628524> Crash beneath JSGlobalContextRelease when
2312         typing in Google search field with GuardMalloc/full page heap enabled
2313
2314         * API/JSContextRef.cpp: Don't use APIEntryShim, since that requires
2315         a JSGlobalData, which this function destroys. Do use setCurrentIdentifierTable
2316         and JSLock instead, since those are the two features of APIEntryShim we
2317         require.
2318
2319 2010-02-15  Patrick Gansterer  <paroga@paroga.com>
2320
2321         Reviewed by Laszlo Gombos.
2322
2323         Added additional parameter to create_rvct_stubs 
2324         for setting the offset of thunkReturnAddress.
2325         https://bugs.webkit.org/show_bug.cgi?id=34657
2326
2327         * create_rvct_stubs:
2328         * jit/JITStubs.cpp:
2329
2330 2010-02-15  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
2331
2332         Reviewed by Simon Hausmann.
2333
2334         Fix QScriptValue::toIntXX methods.
2335
2336         More ECMA Script compliance.
2337
2338         [Qt] QScriptValue::toIntXX returns incorrect values
2339         https://bugs.webkit.org/show_bug.cgi?id=34847
2340
2341         * qt/api/qscriptvalue_p.h:
2342         (QScriptValuePrivate::toInteger):
2343         (QScriptValuePrivate::toInt32):
2344         (QScriptValuePrivate::toUInt32):
2345         (QScriptValuePrivate::toUInt16):
2346         * qt/tests/qscriptvalue/tst_qscriptvalue.h:
2347         * qt/tests/qscriptvalue/tst_qscriptvalue_generated.cpp:
2348         (tst_QScriptValue::toInteger_initData):
2349         (tst_QScriptValue::toInteger_makeData):
2350         (tst_QScriptValue::toInteger_test):
2351         (tst_QScriptValue::toInt32_initData):
2352         (tst_QScriptValue::toInt32_makeData):
2353         (tst_QScriptValue::toInt32_test):
2354         (tst_QScriptValue::toUInt32_initData):
2355         (tst_QScriptValue::toUInt32_makeData):
2356         (tst_QScriptValue::toUInt32_test):
2357         (tst_QScriptValue::toUInt16_initData):
2358         (tst_QScriptValue::toUInt16_makeData):
2359         (tst_QScriptValue::toUInt16_test):
2360
2361 2010-02-14  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
2362
2363         Reviewed by Adam Barth.
2364
2365         Implement NEVER_INLINE and NO_RETURN for RVCT
2366         https://bugs.webkit.org/show_bug.cgi?id=34740
2367
2368         * wtf/AlwaysInline.h:
2369
2370 2010-02-12  Gavin Barraclough  <barraclough@apple.com>
2371
2372         Reviewed by Oliver Hunt.
2373
2374         https://bugs.webkit.org/show_bug.cgi?id=33731
2375         Remove uses of PtrAndFlags from JIT data stuctures.
2376
2377         These break the OS X Leaks tool.  Free up a bit in CallLinkInfo, and invalid
2378         permutation of pointer states in MethodCallLinkInfo to represent the removed bits.
2379
2380         * bytecode/CodeBlock.h:
2381         (JSC::CallLinkInfo::seenOnce):
2382         (JSC::CallLinkInfo::setSeen):
2383         (JSC::MethodCallLinkInfo::MethodCallLinkInfo):
2384         (JSC::MethodCallLinkInfo::seenOnce):
2385         (JSC::MethodCallLinkInfo::setSeen):
2386         * jit/JIT.cpp:
2387         (JSC::JIT::unlinkCall):
2388         * jit/JITPropertyAccess.cpp:
2389         (JSC::JIT::patchMethodCallProto):
2390         * runtime/UString.h:
2391
2392 2010-02-12  Gavin Barraclough  <barraclough@apple.com>
2393
2394         Reviewed by Darin Adler.
2395
2396         https://bugs.webkit.org/show_bug.cgi?id=33731
2397         Many false leaks in release builds due to PtrAndFlags
2398
2399         Remove UntypedPtrAndBitfield (similar to PtrAndFlags) in UStringImpl,
2400         and steal bits from the refCount instead.
2401
2402         * runtime/UStringImpl.cpp:
2403         (JSC::UStringImpl::baseSharedBuffer):
2404         (JSC::UStringImpl::~UStringImpl):
2405         * runtime/UStringImpl.h:
2406         (JSC::UStringImpl::cost):
2407         (JSC::UStringImpl::isIdentifier):
2408         (JSC::UStringImpl::setIsIdentifier):
2409         (JSC::UStringImpl::ref):
2410         (JSC::UStringImpl::deref):
2411         (JSC::UStringImpl::UStringImpl):
2412         (JSC::UStringImpl::bufferOwnerString):
2413         (JSC::UStringImpl::bufferOwnership):
2414         (JSC::UStringImpl::isStatic):
2415         (JSC::UStringImpl::):
2416
2417 2010-02-12  Geoffrey Garen  <ggaren@apple.com>
2418
2419         Reviewed by Darin Adler.
2420
2421         Removed an unnecessary data dependency from my last patch.
2422
2423         * runtime/SmallStrings.cpp:
2424         (JSC::SmallStrings::markChildren): Since isAnyStringMarked being false
2425         is a condition of entering the loop, we can just use '=' instead of '|='.
2426
2427 2010-02-12  Janne Koskinen  <janne.p.koskinen@digia.com>
2428
2429         Reviewed by Tor Arne Vestbø.
2430
2431         Additional refptr/passrefptr workarounds for WINSCW compiler
2432         https://bugs.webkit.org/show_bug.cgi?id=28054
2433
2434         * wtf/PassRefPtr.h:
2435         (WTF::refIfNotNull):
2436         (WTF::PassRefPtr::PassRefPtr):
2437         (WTF::PassRefPtr::~PassRefPtr):
2438         (WTF::PassRefPtr::clear):
2439         (WTF::::operator):
2440         * wtf/RefPtr.h:
2441         (WTF::RefPtr::RefPtr):
2442         (WTF::::operator):
2443
2444 2010-02-12  Janne Koskinen  <janne.p.koskinen@digia.com>
2445
2446         Reviewed by Simon Hausmann.
2447
2448         Don't import the cmath functions from std:: for WINSCW.
2449
2450         * wtf/MathExtras.h:
2451
2452 2010-02-12  Kwang Yul Seo  <skyul@company100.net>
2453
2454         Reviewed by Adam Barth.
2455
2456         Typedef both JSChar and UChar to wchar_t in RVCT.
2457         https://bugs.webkit.org/show_bug.cgi?id=34560
2458
2459         Define both JSChar and UChar to wchar_t as the size
2460         of wchar_t is 2 bytes in RVCT.
2461
2462         * API/JSStringRef.h:
2463         * wtf/unicode/qt4/UnicodeQt4.h:
2464
2465 2010-02-11  Geoffrey Garen  <ggaren@apple.com>
2466
2467         Reviewed by Oliver Hunt and Darin Adler.
2468
2469         The rest of the fix for
2470         https://bugs.webkit.org/show_bug.cgi?id=34864 | <rdar://problem/7594198>
2471         Many objects left uncollected after visiting mail.google.com and closing
2472         window
2473         
2474         Don't unconditionally hang onto small strings. Instead, hang onto all
2475         small strings as long as any small string is still referenced.
2476         
2477         SunSpider reports no change.
2478
2479         * runtime/Collector.cpp:
2480         (JSC::Heap::markRoots): Mark the small strings cache last, so it can
2481         check if anything else has kept any strings alive.
2482
2483         * runtime/SmallStrings.cpp:
2484         (JSC::isMarked):
2485         (JSC::SmallStrings::markChildren): Only keep our strings alive if some
2486         other reference to at least one of them exists, too.
2487
2488 2010-02-11  Geoffrey Garen  <ggaren@apple.com>
2489
2490         Reviewed by Gavin Barraclough.
2491
2492         Some progress toward fixing
2493         https://bugs.webkit.org/show_bug.cgi?id=34864 | <rdar://problem/7594198>
2494         Many objects left uncollected after visiting mail.google.com and closing
2495         window
2496         
2497         SunSpider reports no change.
2498         
2499         Keep weak references, rather than protected references, to cached for-in
2500         property name enumerators.
2501         
2502         One problem with protected references is that a chain like 
2503             [ gc object 1 ] => [ non-gc object ] => [ gc object 2 ]
2504         takes two GC passes to break, since the first pass collects [ gc object 1 ],
2505         releasing [ non-gc object ] and unprotecting [ gc object 2 ], and only
2506         then can a second pass collect [ gc object 2 ].
2507         
2508         Another problem with protected references is that they can keep a bunch
2509         of strings alive long after they're useful. In SunSpider and a few popular
2510         websites, the size-speed tradeoff seems to favor weak references.
2511
2512         * runtime/JSPropertyNameIterator.cpp:
2513         (JSC::JSPropertyNameIterator::JSPropertyNameIterator): Moved this constructor
2514         into the .cpp file, since it's not used elsewhere.
2515
2516         (JSC::JSPropertyNameIterator::~JSPropertyNameIterator): Added a destructor
2517         to support our weak reference.
2518
2519         * runtime/JSPropertyNameIterator.h:
2520         (JSC::Structure::setEnumerationCache):
2521         (JSC::Structure::clearEnumerationCache):
2522         (JSC::Structure::enumerationCache): Added a function for clearing a
2523         Structure's enumeration cache, used by our new destructor. Also fixed
2524         indentation to match the rest of the file.
2525
2526         * runtime/Structure.h: Changed from protected pointer to weak pointer.
2527
2528 2010-02-11  Chris Rogers  <crogers@google.com>
2529
2530         Reviewed by David Levin.
2531
2532         audio engine: add Complex number class
2533         https://bugs.webkit.org/show_bug.cgi?id=34538
2534
2535         * wtf/Complex.h: Added.
2536         (WebCore::complexFromMagnitudePhase):
2537
2538 2010-02-10  Geoffrey Garen  <ggaren@apple.com>
2539
2540         Reviewed by Oliver Hunt.
2541
2542         Added an SPI for asking about all the different live objects on the heap.
2543         Useful for memory debugging.
2544
2545         * JavaScriptCore.exp: Export the new SPI.
2546
2547         * runtime/Collector.cpp:
2548         (JSC::typeName): Use a little capitalization. Don't crash in the case of
2549         a non-object cell, since it might just be an uninitialized cell.
2550
2551         (JSC::Heap::objectTypeCounts): The new SPI.
2552
2553         * runtime/Collector.h:
2554         * runtime/CollectorHeapIterator.h:
2555         (JSC::CollectorHeapIterator::advance):
2556         (JSC::LiveObjectIterator::operator++):
2557         (JSC::DeadObjectIterator::operator++):
2558         (JSC::ObjectIterator::operator++): Made 2 tweaks to these iterators:
2559         (1) Skip the last cell in the block, since it's a dummy sentinel, and
2560         we don't want it to confuse the object count; (2) Fixed a logic error
2561         in LiveObjectIterator that could cause it to iterate dead objects if
2562         m_block were equal to m_heap.nextBlock and m_cell were less than
2563         m_heap.nextCell. No test for this since I can't think of a way that this
2564         could make WebKit behave badly.
2565
2566 2010-02-11  Steve Block  <steveblock@google.com>
2567
2568         Reviewed by Darin Adler.
2569
2570         Guard cmath using declarations in MathExtras.h on Android
2571         https://bugs.webkit.org/show_bug.cgi?id=34840
2572
2573         Android does not provide these functions.
2574
2575         * wtf/MathExtras.h:
2576
2577 2010-02-08  Maciej Stachowiak  <mjs@apple.com>
2578
2579         Reviewed by Cameron Zwarich.
2580
2581         Restore ENABLE_RUBY flag so vendors can ship with Ruby disabled if they choose.
2582         https://bugs.webkit.org/show_bug.cgi?id=34698
2583
2584         * Configurations/FeatureDefines.xcconfig:
2585
2586 2010-02-10  Kevin Watters  <kevinwatters@gmail.com>
2587
2588         Reviewed by Kevin Ollivier.
2589
2590         [wx] Add Windows complex text support and Mac support for containsCharacters.
2591         
2592         https://bugs.webkit.org/show_bug.cgi?id=34759
2593
2594         * wscript:
2595
2596 2010-02-10  Alexey Proskuryakov  <ap@apple.com>
2597
2598         Addressing issues found by style bot.
2599
2600         * wtf/ValueCheck.h: Renamed header guard to match final file name.
2601
2602         * wtf/Vector.h: (WTF::::checkConsistency): Remove braces around a one-line clause.
2603
2604 2010-02-09  Alexey Proskuryakov  <ap@apple.com>
2605
2606         Reviewed by Geoffrey Garen.
2607
2608         https://bugs.webkit.org/show_bug.cgi?id=34490
2609         WebCore::ImageEventSender::dispatchPendingEvents() crashes in certain conditions
2610
2611         * GNUmakefile.am:
2612         * JavaScriptCore.gypi:
2613         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
2614         * JavaScriptCore.xcodeproj/project.pbxproj:
2615         Added ValueCheck.h.
2616
2617         * wtf/ValueCheck.h: Added. Moved code out of HashTraits, since it would be awkward to
2618         include that from Vector.h.
2619         (WTF::ValueCheck::checkConsistency): Allow null pointers, those are pretty consistent.
2620
2621         * wtf/HashTraits.h: Moved value checking code out of here.
2622
2623         * wtf/HashTable.h: (WTF::::checkTableConsistencyExceptSize): Updated for the above changes.
2624
2625         * wtf/Vector.h:
2626         (WTF::::checkConsistency): Check all vector elements.
2627         (WTF::ValueCheck): Support checking a Vector as an element in other containers. Currently
2628         unused.
2629
2630 2010-02-10  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
2631
2632         Reviewed by Simon Hausmann.
2633
2634         Fix QScriptValue::toBool.
2635
2636         Fix ECMA compliance in the QScriptValue for values like 0, NaN and
2637         empty strings.
2638
2639         [Qt] QScriptValue::toBool problem
2640         https://bugs.webkit.org/show_bug.cgi?id=34793
2641
2642         * qt/api/qscriptvalue_p.h:
2643         (QScriptValuePrivate::toBool):
2644         * qt/tests/qscriptvalue/tst_qscriptvalue.h:
2645         * qt/tests/qscriptvalue/tst_qscriptvalue_generated.cpp:
2646         (tst_QScriptValue::toBool_initData):
2647         (tst_QScriptValue::toBool_makeData):
2648         (tst_QScriptValue::toBool_test):
2649         (tst_QScriptValue::toBoolean_initData):
2650         (tst_QScriptValue::toBoolean_makeData):
2651         (tst_QScriptValue::toBoolean_test):
2652
2653 2009-10-06  Yongjun Zhang  <yongjun.zhang@nokia.com>
2654
2655         Reviewed by Simon Hausmann.
2656
2657         Use derefIfNotNull() to work around WINSCW compiler forward declaration bug
2658
2659         The compiler bug is reported at
2660         https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=9812.
2661
2662         The change should be reverted when the above bug is fixed in WINSCW compiler.
2663
2664         https://bugs.webkit.org/show_bug.cgi?id=28054
2665
2666 2009-10-06  Yongjun Zhang  <yongjun.zhang@nokia.com>
2667
2668         Reviewed by Simon Hausmann.
2669
2670         Get rid of WINSCW hack for UnSpecifiedBoolType
2671
2672         Add parenthesis around (RefPtr::*UnspecifiedBoolType) to make the WINSCW
2673         compiler work with the default UnSpecifiedBoolType() operator.
2674
2675         https://bugs.webkit.org/show_bug.cgi?id=28054
2676
2677         * wtf/RefPtr.h:
2678
2679 2010-02-09  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
2680
2681         Reviewed by Simon Hausmann.
2682
2683         New functions nullValue() and undefinedValue().
2684
2685         [Qt] QScriptEngine should contain nullValue and undefinedValue methods
2686         https://bugs.webkit.org/show_bug.cgi?id=34749
2687
2688         * qt/api/qscriptengine.cpp:
2689         (QScriptEngine::nullValue):
2690         (QScriptEngine::undefinedValue):
2691         * qt/api/qscriptengine.h:
2692         * qt/tests/qscriptengine/tst_qscriptengine.cpp:
2693         (tst_QScriptEngine::nullValue):
2694         (tst_QScriptEngine::undefinedValue):
2695
2696 2010-02-09  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
2697
2698         Reviewed by Simon Hausmann.
2699
2700         Fixes for QScriptValue::toNumber().
2701
2702         Fix ECMA compliance in QScriptValue for values unbound
2703         to a QScriptEngine.
2704
2705         [Qt] QScriptValue::toNumber() is broken
2706         https://bugs.webkit.org/show_bug.cgi?id=34592
2707
2708         * qt/api/qscriptvalue_p.h:
2709         (QScriptValuePrivate::toNumber):
2710         * qt/tests/qscriptvalue/tst_qscriptvalue.h:
2711         * qt/tests/qscriptvalue/tst_qscriptvalue_generated.cpp:
2712         (tst_QScriptValue::toNumber_initData):
2713         (tst_QScriptValue::toNumber_makeData):
2714         (tst_QScriptValue::toNumber_test):
2715
2716 2010-02-09  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
2717
2718         Reviewed by Simon Hausmann.
2719
2720         Fix QScriptValue::isNumber().
2721
2722         The isNumber() should return 'true' if the value is in the CNumber
2723         state.
2724
2725         [Qt] QScriptValue::isNumber() returns an incorrect value
2726         https://bugs.webkit.org/show_bug.cgi?id=34575
2727
2728         * qt/api/qscriptvalue_p.h:
2729         (QScriptValuePrivate::isNumber):
2730         * qt/tests/qscriptvalue/tst_qscriptvalue.h:
2731         * qt/tests/qscriptvalue/tst_qscriptvalue_generated.cpp:
2732         (tst_QScriptValue::isNumber_initData):
2733         (tst_QScriptValue::isNumber_makeData):
2734         (tst_QScriptValue::isNumber_test):
2735
2736 2010-02-09  Geoffrey Garen  <ggaren@apple.com>
2737
2738         Reviewed by Oliver Hunt.
2739
2740         Small refactoring to the small strings cache to allow it to be cleared
2741         dynamically.
2742
2743         * runtime/SmallStrings.cpp:
2744         (JSC::SmallStrings::SmallStrings):
2745         (JSC::SmallStrings::clear):
2746         * runtime/SmallStrings.h: Moved initialization code into a shared function,
2747         and changed the constructor to call it.
2748
2749 2010-02-09  Gavin Barraclough  <barraclough@apple.com>
2750
2751         Rubber Stamped by Geoff Garen.
2752
2753         Rename StringBuilder::release && JSStringBuilder::releaseJSString
2754         to 'build()'.
2755
2756         * runtime/ArrayPrototype.cpp:
2757         (JSC::arrayProtoFuncToLocaleString):
2758         (JSC::arrayProtoFuncJoin):
2759         * runtime/Executable.cpp:
2760         (JSC::FunctionExecutable::paramString):
2761         * runtime/FunctionConstructor.cpp:
2762         (JSC::constructFunction):
2763         * runtime/JSGlobalObjectFunctions.cpp:
2764         (JSC::encode):
2765         (JSC::decode):
2766         (JSC::globalFuncEscape):
2767         (JSC::globalFuncUnescape):
2768         * runtime/JSONObject.cpp:
2769         (JSC::Stringifier::stringify):
2770         * runtime/JSStringBuilder.h:
2771         (JSC::JSStringBuilder::build):
2772         * runtime/LiteralParser.cpp:
2773         (JSC::LiteralParser::Lexer::lexString):
2774         * runtime/NumberPrototype.cpp:
2775         (JSC::integerPartNoExp):
2776         (JSC::numberProtoFuncToFixed):
2777         * runtime/StringBuilder.h:
2778         (JSC::StringBuilder::build):
2779
2780 2010-02-09  John Sullivan  <sullivan@apple.com>
2781
2782         https://bugs.webkit.org/show_bug.cgi?id=34772
2783         Overzealous new assertion in URStringImpl::adopt()
2784
2785         Reviewed by Adam Barth.
2786
2787         * runtime/UStringImpl.h:
2788         (JSC::UStringImpl::adopt):
2789         Only assert that vector.data() is non-zero if vector.size() is non-zero.
2790
2791 2010-02-09  Nikolas Zimmermann  <nzimmermann@rim.com>
2792
2793         Not reviewed. Try to fix build problem on SnowLeopard slaves to bring them back.
2794
2795         * API/JSClassRef.cpp:
2796         (tryCreateStringFromUTF8): Mark method as 'static inline' to suppress "warning: no previous prototype for ..."
2797
2798 2010-02-09  Gavin Barraclough  <barraclough@apple.com>
2799
2800         Reviewed by Oliver Hunt.
2801
2802         Three small string fixes:
2803         (1) StringBuilder::release should CRASH if the buffer allocation failed.
2804         (2) Remove weird, dead code from JSString::tryGetValue, replace with an ASSERT.
2805         (3) Move UString::createFromUTF8 out to the API, as tryCreateStringFromUTF8.
2806             This is only used from the API, and (now) unlike other UString::create
2807             methods may return UString::null() to indicate failure cases.  Better
2808             handle these in the API.
2809
2810         * API/JSClassRef.cpp:
2811         (tryCreateStringFromUTF8):
2812         (OpaqueJSClass::OpaqueJSClass):
2813         (OpaqueJSClassContextData::OpaqueJSClassContextData):
2814         * runtime/JSString.h:
2815         (JSC::Fiber::tryGetValue):
2816         * runtime/StringBuilder.h:
2817         (JSC::StringBuilder::release):
2818         * runtime/UString.cpp:
2819         (JSC::UString::UString):
2820         (JSC::UString::from):
2821         (JSC::UString::find):
2822         * runtime/UString.h:
2823
2824 2010-02-09  Janne Koskinen  <janne.p.koskinen@digia.com>
2825
2826         Reviewed by Laszlo Gombos.
2827
2828         [Qt] use nanval() for Symbian as nonInlineNaN
2829         https://bugs.webkit.org/show_bug.cgi?id=34170
2830
2831         numeric_limits<double>::quiet_NaN is broken in Symbian
2832         causing NaN to be evaluated as a number.
2833
2834         * runtime/JSValue.cpp:
2835         (JSC::nonInlineNaN):
2836
2837 2010-02-09  Tamas Szirbucz  <szirbucz@inf.u-szeged.hu>
2838
2839         Reviewed by Gavin Barraclough.
2840
2841         Add a soft modulo operation to ARM JIT using a trampoline function.
2842         The performance progression is about ~1.8% on ARMv7
2843         https://bugs.webkit.org/show_bug.cgi?id=34424
2844
2845         Developed in cooperation with Gabor Loki.
2846
2847         * jit/JIT.h:
2848         * jit/JITArithmetic.cpp:
2849         (JSC::JIT::emit_op_mod):
2850         (JSC::JIT::emitSlow_op_mod):
2851         * jit/JITOpcodes.cpp:
2852         (JSC::JIT::softModulo):
2853         * jit/JITStubs.h:
2854         (JSC::JITThunks::ctiSoftModulo):
2855         * wtf/Platform.h:
2856
2857 2010-02-08  Gavin Barraclough  <barraclough@apple.com>
2858
2859         Reviewed by NOBODY (SL/win build fixes).
2860
2861         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2862         * runtime/StringPrototype.cpp:
2863
2864 2010-02-08  Gavin Barraclough  <barraclough@apple.com>
2865
2866         Reviewed by Oliver Hunt
2867
2868         Make String.replace throw an exception on out-of-memory, rather than
2869         returning a null (err, empty-ish) string.  Move String::replaceRange
2870         and String::spliceSubstringsWithSeparators out to StringPrototype -
2871         these were fairly specific use anyway, and we can better integrate
2872         throwing the JS expcetion this way.
2873
2874         Also removes redundant assignment operator from UString.
2875
2876         * JavaScriptCore.exp:
2877         * runtime/StringPrototype.cpp:
2878         (JSC::StringRange::StringRange):
2879         (JSC::jsSpliceSubstringsWithSeparators):
2880         (JSC::jsReplaceRange):
2881         (JSC::stringProtoFuncReplace):
2882         * runtime/UString.cpp:
2883         * runtime/UString.h:
2884
2885 2010-02-08  Kwang Yul Seo  <skyul@company100.net>
2886
2887         Reviewed by Eric Seidel.
2888
2889         [BREWMP] Undefine WTF_OS_WINDOWS and WTF_PLATFORM_WIN
2890         https://bugs.webkit.org/show_bug.cgi?id=34561
2891
2892         As the binary for simulator is built with MSVC 2005,
2893         WTF_OS_WINDOWS and WTF_PLATFORM_WIN are defined.
2894         Undefine them as we don't target Windows.
2895
2896         * wtf/Platform.h:
2897
2898 2010-02-08  Chris Rogers  <crogers@google.com>
2899
2900         Reviewed by Darin Adler.
2901
2902         audio engine: add Vector3 class
2903         https://bugs.webkit.org/show_bug.cgi?id=34548
2904
2905         * wtf/Vector3.h: Added.
2906         (WebCore::Vector3::Vector3):
2907         (WebCore::Vector3::abs):
2908         (WebCore::Vector3::isZero):
2909         (WebCore::Vector3::normalize):
2910         (WebCore::Vector3::x):
2911         (WebCore::Vector3::y):
2912         (WebCore::Vector3::z):
2913         (WebCore::operator+):
2914         (WebCore::operator-):
2915         (WebCore::operator*):
2916         (WebCore::dot):
2917         (WebCore::cross):
2918         (WebCore::distance):
2919
2920 2010-02-08  Oliver Hunt  <oliver@apple.com>
2921
2922         Reviewed by Gavin Barraclough.
2923
2924         Fix warning in clang++
2925
2926         * runtime/Structure.h:
2927         (JSC::Structure::propertyStorageSize):
2928
2929 2010-02-08  Gavin Barraclough  <barraclough@apple.com>
2930
2931         Reviewed by Geoff Garen.
2932
2933         Make makeString CRASH if we fail to allocate a string.
2934
2935         (tryMakeString or jsMakeNontrivialString can be used where we
2936         expect allocation may fail and want to handle the error).
2937
2938         * runtime/JSStringBuilder.h:
2939         (JSC::jsMakeNontrivialString):
2940         * runtime/UString.h:
2941         (JSC::tryMakeString):
2942         (JSC::makeString):
2943
2944 2010-02-08  Gavin Barraclough  <barraclough@apple.com>
2945
2946         Rubber Stamped by Oliver Hunt.
2947
2948         Remove a couple of unnecesary C-style casts spotted by Darin.
2949
2950         * runtime/JSGlobalObjectFunctions.cpp:
2951         (JSC::encode):
2952         (JSC::globalFuncEscape):
2953
2954 2010-02-08  Gavin Barraclough  <barraclough@apple.com>
2955
2956         Reviewed by Geoff Garen.
2957
2958         Switch some more StringBuilder/jsNontrivialString code to use
2959         JSStringBuilder/jsMakeNontrivialString - these methods will
2960         throw an exception if we hit out-of-memory, rather than just
2961         CRASHing.
2962
2963         * runtime/FunctionPrototype.cpp:
2964         (JSC::functionProtoFuncToString):
2965         * runtime/JSGlobalObjectFunctions.cpp:
2966         (JSC::encode):
2967         (JSC::decode):
2968         (JSC::globalFuncEscape):
2969
2970 2010-02-08  Gavin Barraclough  <barraclough@apple.com>
2971
2972         Reviewed by Sam Weinig.
2973
2974         Use an empty identifier instead of a null identifier for parse
2975         tokens without an identifier.
2976
2977         This helps encapsulate the null UStringImpl within UString.
2978
2979         * parser/Grammar.y:
2980         * parser/NodeConstructors.h:
2981         (JSC::ContinueNode::ContinueNode):
2982         (JSC::BreakNode::BreakNode):
2983         (JSC::ForInNode::ForInNode):
2984         * runtime/CommonIdentifiers.cpp:
2985         (JSC::CommonIdentifiers::CommonIdentifiers):
2986         * runtime/CommonIdentifiers.h:
2987         * runtime/FunctionPrototype.cpp:
2988         (JSC::FunctionPrototype::FunctionPrototype):
2989
2990 2010-02-08  Gustavo Noronha Silva  <gustavo.noronha@collabora.co.uk>
2991
2992         Build fix for make distcheck.
2993
2994         * GNUmakefile.am:
2995
2996 2010-02-08  Simon Hausmann  <simon.hausmann@nokia.com>
2997
2998         Unreviewed RVCT build fix.
2999
3000         Similar to r54391, don't import the cmath functions from std:: for RVCT.
3001
3002         * wtf/MathExtras.h:
3003
3004 2010-02-05  Gavin Barraclough  <barraclough@apple.com>
3005
3006         Reviewed by Geoff Garen.
3007
3008         Change UStringImpl::create to CRASH if the string cannot be allocated,
3009         rather than returning a null string (which will behave like a zero-length
3010         string if used).
3011
3012         Also move createRep function from UString to become new overloaded
3013         UStringImpl::create methods.  In doing so, bring their behaviour closer to
3014         being in line with WebCore::StringImpl, in removing the behaviour that they
3015         can be used to produce null UStrings (ASSERT the char* provided is non-null).
3016         This behaviour of converting null C-strings to null UStrings is inefficient
3017         (cmompared to just using UString::null()), incompatible with WebCore::StringImpl's
3018         behaviour, and may generate unexpected behaviour, since in many cases a null
3019         UString can be used like an empty string.
3020
3021         With these changes UStringImpl need not have a concept of null impls, we can
3022         start transitioning this to become an implementation detail of UString, that
3023         internally it chooses to use a null-object rather than an actually zero impl
3024         pointer.
3025
3026         * JavaScriptCore.exp:
3027         * debugger/Debugger.cpp:
3028         (JSC::Debugger::recompileAllJSFunctions):
3029         * debugger/DebuggerCallFrame.cpp:
3030         (JSC::DebuggerCallFrame::calculatedFunctionName):
3031         * parser/Parser.cpp:
3032         (JSC::Parser::parse):
3033         * profiler/Profile.cpp:
3034         (JSC::Profile::Profile):
3035         * profiler/ProfileGenerator.cpp:
3036         (JSC::ProfileGenerator::stopProfiling):
3037         * runtime/Error.cpp:
3038         (JSC::Error::create):
3039         (JSC::throwError):
3040         * runtime/ExceptionHelpers.cpp:
3041         (JSC::createError):
3042         * runtime/Identifier.cpp:
3043         (JSC::Identifier::add):
3044         * runtime/PropertyNameArray.cpp:
3045         (JSC::PropertyNameArray::add):
3046         * runtime/UString.cpp:
3047         (JSC::initializeUString):
3048         (JSC::UString::UString):
3049         (JSC::UString::operator=):
3050         * runtime/UString.h:
3051         (JSC::UString::isNull):
3052         (JSC::UString::null):
3053         (JSC::UString::rep):
3054         (JSC::UString::UString):
3055         * runtime/UStringImpl.cpp:
3056         (JSC::UStringImpl::create):
3057         * runtime/UStringImpl.h:
3058
3059 2010-02-05  Kwang Yul Seo  <skyul@company100.net>
3060
3061         Reviewed by Eric Seidel.
3062
3063         [BREWMP] Define SYSTEM_MALLOC 1
3064         https://bugs.webkit.org/show_bug.cgi?id=34640
3065
3066         Make BREWMP use system malloc because FastMalloc is not ported.
3067
3068         * wtf/Platform.h:
3069
3070 2010-02-05  Kwang Yul Seo  <skyul@company100.net>
3071
3072         Reviewed by Alexey Proskuryakov.
3073
3074         Don't call CRASH() in fastMalloc and fastCalloc when the requested memory size is 0
3075         https://bugs.webkit.org/show_bug.cgi?id=34569
3076
3077         With USE_SYSTEM_MALLOC=1, fastMalloc and fastCalloc call CRASH()
3078         if the return value of malloc and calloc is 0.
3079         
3080         However, these functions can return 0 when the request size is 0.
3081         Libc manual says, "If size is 0, then malloc() returns either NULL,
3082         or a unique pointer value that can later be successfully passed to free()."
3083         Though malloc returns a unique pointer in most systems,
3084         0 can be returned in some systems. For instance, BREW's MALLOC returns 0
3085         when size is 0.
3086
3087         If malloc or calloc returns 0 due to allocation size, increase the size
3088         to 1 and try again.
3089
3090         * wtf/FastMalloc.cpp:
3091         (WTF::fastMalloc):
3092         (WTF::fastCalloc):
3093
3094 2010-02-04  Mark Rowe  <mrowe@apple.com>
3095
3096         Reviewed by Timothy Hatcher.
3097
3098         Build fix.  Remove a symbol corresponding to an inline function from the linker export
3099         file to prevent a weak external failure.
3100
3101         * JavaScriptCore.xcodeproj/project.pbxproj: Accommodate rename of script.
3102
3103 2010-02-04  Daniel Bates  <dbates@webkit.org>
3104
3105         [Qt] Unreviewed, build fix for Qt bot.
3106
3107         * runtime/JSStringBuilder.h: Changed #include <X.h> notation #include "X.h".
3108
3109 2010-02-04  Geoffrey Garen  <ggaren@apple.com>
3110
3111         Reviewed by Oliver Hunt.
3112
3113         Clearing a WeakGCPtr is weird
3114         https://bugs.webkit.org/show_bug.cgi?id=34627
3115
3116         Added a WeakGCPtr::clear interface.
3117         
3118         As discussed in https://bugs.webkit.org/show_bug.cgi?id=33383, the old
3119         interface made it pretty weird for a client to conditionally clear a
3120         WeakGCPtr, which is exactly what clients want to do when objects are
3121         finalized.
3122
3123         * API/JSClassRef.cpp:
3124         (clearReferenceToPrototype): Use the new WeakGCPtr::clear() interface. 
3125
3126         * runtime/WeakGCPtr.h:
3127         (JSC::WeakGCPtr::clear): Added an interface for clearing a WeakGCPtr,
3128         iff its current value is the value passed in. It's cumbersome for the
3129         client to do this test, since WeakGCPtr sometimes pretends to be null.
3130
3131 2010-02-04  Geoffrey Garen  <ggaren@apple.com>
3132
3133         Build fix: export a header.
3134
3135         * JavaScriptCore.xcodeproj/project.pbxproj:
3136
3137 2010-02-04  Gavin Barraclough  <barraclough@apple.com>
3138
3139         Reviewed by Oliver Hunt.
3140
3141         Add a JSStringBuilder class (similar-to, and derived-from StringBuilder) to
3142         construct JSStrings, throwing a JS exception should we run out of memory whilst
3143         allocating storage for the string.
3144
3145         Similarly, add jsMakeNontrivialString methods to use in cases where previously
3146         we were calling makeString & passing the result to jsNontrivialString.  Again,
3147         these new methods throw if we hit an out of memory condition.
3148
3149         Move throwOutOfMemoryError into ExceptionHelpers, to make it more widely available.
3150
3151         * JavaScriptCore.xcodeproj/project.pbxproj:
3152         * runtime/ArrayPrototype.cpp:
3153         (JSC::arrayProtoFuncToString):
3154         (JSC::arrayProtoFuncToLocaleString):
3155         (JSC::arrayProtoFuncJoin):
3156         * runtime/DateConstructor.cpp:
3157         (JSC::callDate):
3158         * runtime/DatePrototype.cpp:
3159         (JSC::dateProtoFuncToString):
3160         (JSC::dateProtoFuncToUTCString):
3161         (JSC::dateProtoFuncToGMTString):
3162         * runtime/ErrorPrototype.cpp:
3163         (JSC::errorProtoFuncToString):
3164         * runtime/ExceptionHelpers.cpp:
3165         (JSC::throwOutOfMemoryError):
3166         * runtime/ExceptionHelpers.h:
3167         * runtime/JSStringBuilder.h: Added.
3168         (JSC::JSStringBuilder::releaseJSString):
3169         (JSC::jsMakeNontrivialString):
3170         * runtime/NumberPrototype.cpp:
3171         (JSC::numberProtoFuncToPrecision):
3172         * runtime/ObjectPrototype.cpp:
3173         (JSC::objectProtoFuncToString):
3174         * runtime/Operations.cpp:
3175         * runtime/Operations.h:
3176         * runtime/RegExpPrototype.cpp:
3177         (JSC::regExpProtoFuncToString):
3178         * runtime/StringBuilder.h:
3179         (JSC::StringBuilder::append):
3180         * runtime/StringPrototype.cpp:
3181         (JSC::stringProtoFuncBig):
3182         (JSC::stringProtoFuncSmall):
3183         (JSC::stringProtoFuncBlink):
3184         (JSC::stringProtoFuncBold):
3185         (JSC::stringProtoFuncFixed):
3186         (JSC::stringProtoFuncItalics):
3187         (JSC::stringProtoFuncStrike):
3188         (JSC::stringProtoFuncSub):
3189         (JSC::stringProtoFuncSup):
3190         (JSC::stringProtoFuncFontcolor):
3191         (JSC::stringProtoFuncFontsize):
3192         (JSC::stringProtoFuncAnchor):
3193
3194 2010-02-04  Steve Falkenburg  <sfalken@apple.com>
3195
3196         Windows build fix.
3197
3198         * wtf/MathExtras.h:
3199
3200 2010-02-04  Darin Adler  <darin@apple.com>
3201
3202         Reviewed by David Levin.
3203
3204         Make MathExtras.h compatible with <cmath>
3205         https://bugs.webkit.org/show_bug.cgi?id=34618
3206
3207         * wtf/MathExtras.h: Include <cmath> instead of <math.h>.
3208         Use "using" as we do elsewhere in WTF for the four functions from <cmath>
3209         we want to use without the prefix. Later we could consider making the std
3210         explicit at call sites instead.
3211
3212 2010-02-04  Tamas Szirbucz  <szirbucz@inf.u-szeged.hu>
3213
3214         Reviewed by Gavin Barraclough.
3215
3216         Use an easily appendable structure for trampolines instead of pointer parameters.
3217         https://bugs.webkit.org/show_bug.cgi?id=34424
3218
3219         * assembler/ARMAssembler.cpp:
3220         (JSC::ARMAssembler::executableCopy):
3221         * jit/JIT.h:
3222         (JSC::JIT::compileCTIMachineTrampolines):
3223         * jit/JITOpcodes.cpp:
3224         (JSC::JIT::privateCompileCTIMachineTrampolines):
3225         * jit/JITStubs.cpp:
3226         (JSC::JITThunks::JITThunks):
3227         * jit/JITStubs.h:
3228         (JSC::JITThunks::ctiStringLengthTrampoline):
3229         (JSC::JITThunks::ctiVirtualCallLink):
3230         (JSC::JITThunks::ctiVirtualCall):
3231         (JSC::JITThunks::ctiNativeCallThunk):
3232
3233 2010-02-04  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
3234
3235         Reviewed by Simon Hausmann.
3236
3237         Increase test coverage for the QScriptValue.
3238
3239         https://bugs.webkit.org/show_bug.cgi?id=34533
3240
3241         * qt/tests/qscriptvalue/qscriptvalue.pro:
3242         * qt/tests/qscriptvalue/tst_qscriptvalue.cpp:
3243         (tst_QScriptValue::tst_QScriptValue):
3244         (tst_QScriptValue::~tst_QScriptValue):
3245         (tst_QScriptValue::dataHelper):
3246         (tst_QScriptValue::newRow):
3247         (tst_QScriptValue::testHelper):
3248         (tst_QScriptValue::ctor):
3249         * qt/tests/qscriptvalue/tst_qscriptvalue.h: Added.
3250         * qt/tests/qscriptvalue/tst_qscriptvalue_generated.cpp: Added.
3251         (tst_QScriptValue::initScriptValues):
3252         (tst_QScriptValue::isValid_initData):
3253         (tst_QScriptValue::isValid_makeData):
3254         (tst_QScriptValue::isValid_test):
3255         (tst_QScriptValue::isBool_initData):
3256         (tst_QScriptValue::isBool_makeData):
3257         (tst_QScriptValue::isBool_test):
3258         (tst_QScriptValue::isBoolean_initData):
3259         (tst_QScriptValue::isBoolean_makeData):
3260         (tst_QScriptValue::isBoolean_test):
3261         (tst_QScriptValue::isFunction_initData):
3262         (tst_QScriptValue::isFunction_makeData):
3263         (tst_QScriptValue::isFunction_test):
3264         (tst_QScriptValue::isNull_initData):
3265         (tst_QScriptValue::isNull_makeData):
3266         (tst_QScriptValue::isNull_test):
3267         (tst_QScriptValue::isString_initData):
3268         (tst_QScriptValue::isString_makeData):
3269         (tst_QScriptValue::isString_test):
3270         (tst_QScriptValue::isUndefined_initData):
3271         (tst_QScriptValue::isUndefined_makeData):
3272         (tst_QScriptValue::isUndefined_test):
3273         (tst_QScriptValue::isObject_initData):
3274         (tst_QScriptValue::isObject_makeData):
3275         (tst_QScriptValue::isObject_test):
3276
3277 2010-02-03  Kwang Yul Seo  <skyul@company100.net>
3278
3279         Reviewed by Eric Seidel.
3280
3281         [BREWMP] Define WTF_PLATFORM_BREWMP_SIMULATOR when AEE_SIMULATOR is defined
3282         https://bugs.webkit.org/show_bug.cgi?id=34514
3283
3284         PLATFORM(BREWMP_SIMULATOR) guard is needed to make distinction between BREWMP
3285         and BREWMP simulator.
3286
3287         * wtf/Platform.h:
3288
3289 2010-02-03  Kwang Yul Seo  <skyul@company100.net>
3290
3291         Reviewed by Eric Seidel.
3292
3293         [BREWMP] Remove COMPILE_ASSERT conflict with the underlying PLATFORM
3294         https://bugs.webkit.org/show_bug.cgi?id=34190
3295
3296         COMPILE_ASSERT conflicts with the underlying PLATFORM because it is defined
3297         both in WTF's Assertions.h and BREWMP's AEEClassIDs.h. Include AEEClassIDs.h
3298         in Assertions.h and undef COMPILE_ASSERT to avoid redefining COMPILE_ASSERT.
3299
3300         * wtf/Assertions.h:
3301
3302 2010-02-03  Kwang Yul Seo  <skyul@company100.net>
3303
3304         Reviewed by Eric Seidel.
3305
3306         [BREWMP] Implement OwnPtrBrew to make sure BREW instances are freed.
3307         https://bugs.webkit.org/show_bug.cgi?id=34518
3308
3309         Add OwnPtrBrew to release IFile, IFileMgr and IBitmap instances.
3310
3311         * wtf/brew/OwnPtrBrew.cpp: Added.
3312         (WTF::IFileMgr):
3313         (WTF::IFile):
3314         (WTF::IBitmap):
3315         (WTF::freeOwnedPtrBrew):
3316         * wtf/brew/OwnPtrBrew.h: Added.
3317         (WTF::OwnPtrBrew::OwnPtrBrew):
3318         (WTF::OwnPtrBrew::~OwnPtrBrew):
3319         (WTF::OwnPtrBrew::get):
3320         (WTF::OwnPtrBrew::release):
3321         (WTF::OwnPtrBrew::outPtr):
3322         (WTF::OwnPtrBrew::set):
3323         (WTF::OwnPtrBrew::clear):
3324         (WTF::OwnPtrBrew::operator*):
3325         (WTF::OwnPtrBrew::operator->):
3326         (WTF::OwnPtrBrew::operator!):
3327         (WTF::OwnPtrBrew::operator UnspecifiedBoolType):
3328         (WTF::OwnPtrBrew::swap):
3329         (WTF::swap):
3330         (WTF::operator==):
3331         (WTF::operator!=):
3332         (WTF::getPtr):
3333
3334 2010-02-03  Kwang Yul Seo  <skyul@company100.net>
3335
3336         Reviewed by Darin Adler.
3337
3338         Export WTF::fastStrDup symbol
3339         https://bugs.webkit.org/show_bug.cgi?id=34526
3340
3341         * JavaScriptCore.exp:
3342
3343 2010-02-03  Kevin Watters  <kevinwatters@gmail.com>
3344
3345         Reviewed by Kevin Ollivier.
3346
3347         [wx] Enable JIT compilation for wx.
3348         
3349         https://bugs.webkit.org/show_bug.cgi?id=34536
3350
3351         * wtf/Platform.h:
3352
3353 2010-02-02  Oliver Hunt  <oliver@apple.com>
3354
3355         Reviewed by Geoffrey Garen.
3356
3357         Crash in CollectorBitmap::get at nbcolympics.com
3358         https://bugs.webkit.org/show_bug.cgi?id=34504
3359
3360         This was caused by the use of m_offset to determine the offset of
3361         a new property into the property storage.  This patch corrects
3362         the effected cases by incorporating the anonymous slot count. It
3363         also removes the duplicate copy of anonymous slot count from the
3364         property table as keeping this up to date merely increased the
3365         chance of a mismatch.  Finally I've added a large number of
3366         assertions in an attempt to prevent such a bug from happening
3367         again.
3368
3369         With the new assertions in place the existing anonymous slot tests
3370         all fail without the m_offset fixes.
3371
3372         * runtime/PropertyMapHashTable.h:
3373         * runtime/Structure.cpp:
3374         (JSC::Structure::materializePropertyMap):
3375         (JSC::Structure::addPropertyTransitionToExistingStructure):
3376         (JSC::Structure::addPropertyTransition):
3377         (JSC::Structure::removePropertyTransition):
3378         (JSC::Structure::flattenDictionaryStructure):
3379         (JSC::Structure::addPropertyWithoutTransition):
3380         (JSC::Structure::removePropertyWithoutTransition):
3381         (JSC::Structure::copyPropertyTable):
3382         (JSC::Structure::get):
3383         (JSC::Structure::put):
3384         (JSC::Structure::remove):
3385         (JSC::Structure::insertIntoPropertyMapHashTable):
3386         (JSC::Structure::createPropertyMapHashTable):
3387         (JSC::Structure::rehashPropertyMapHashTable):
3388         (JSC::Structure::checkConsistency):
3389
3390 2010-02-02  Steve Falkenburg  <sfalken@apple.com>
3391
3392         Reviewed by Darin Adler.
3393
3394         Copyright year updating for Windows version resources should be automatic
3395         https://bugs.webkit.org/show_bug.cgi?id=34503
3396
3397         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.rc:
3398
3399 2010-02-02  Kwang Yul Seo  <skyul@company100.net>
3400
3401         Reviewed by Eric Seidel.
3402
3403         [BREWMP] Add dummy main thread functions
3404         https://bugs.webkit.org/show_bug.cgi?id=33569
3405
3406         Add dummy initializeMainThreadPlatform and
3407         scheduleDispatchFunctionsOnMainThread.
3408
3409         * wtf/brew/MainThreadBrew.cpp: Added.
3410         (WTF::initializeMainThreadPlatform):
3411         (WTF::scheduleDispatchFunctionsOnMainThread):
3412
3413 2010-02-02  Kwang Yul Seo  <skyul@company100.net>
3414
3415         Reviewed by Darin Adler.
3416
3417         Add using WTF::getLocalTime to CurrentTime.h
3418         https://bugs.webkit.org/show_bug.cgi?id=34493
3419
3420         * wtf/CurrentTime.h:
3421
3422 2010-02-02  Kwang Yul Seo  <skyul@company100.net>
3423
3424         Reviewed by Eric Seidel.
3425
3426         [BREWMP] Add HAVE_XXX definitions
3427         https://bugs.webkit.org/show_bug.cgi?id=34414
3428
3429         Add HAVE_ERRNO_H=1
3430
3431         * wtf/Platform.h:
3432
3433 2010-02-02  Kwang Yul Seo  <skyul@company100.net>
3434
3435         Reviewed by Eric Seidel.
3436
3437         [BREWMP] Don't define HAVE_TM_GMTOFF, HAVE_TM_ZONE and HAVE_TIMEGM
3438         https://bugs.webkit.org/show_bug.cgi?id=34388
3439
3440         BREWMP does not have these features.
3441
3442         * wtf/Platform.h:
3443
3444 2010-02-02  Kwang Yul Seo  <skyul@company100.net>
3445
3446         Reviewed by Eric Seidel.
3447
3448         [BREWMP] Define WTF_PLATFORM_BREWMP=1 when BUILDING_BREWMP is defined
3449         https://bugs.webkit.org/show_bug.cgi?id=34386
3450
3451         Define WTF_PLATFORM_BREWMP=1 so that PLATFORM(BREWMP) guard can be used.
3452
3453         * wtf/Platform.h:
3454
3455 2010-02-01  Kent Tamura  <tkent@chromium.org>
3456
3457         Reviewed by Darin Adler.
3458
3459         Date.UTC() should apply TimeClip operation.
3460         https://bugs.webkit.org/show_bug.cgi?id=34461
3461
3462         ECMAScript 5 15.9.4.3:
3463         > 9 Return TimeClip(MakeDate(MakeDay(yr, m, dt), MakeTime(h, min, s, milli))).
3464
3465         * runtime/DateConstructor.cpp:
3466         (JSC::dateUTC): Calls WTF::timeClip().
3467
3468 2010-02-01  Kent Tamura  <tkent@chromium.org>
3469
3470         Reviewed by Darin Adler.
3471
3472         Fix a bug that Math.round() retunrs incorrect results for huge integers
3473         https://bugs.webkit.org/show_bug.cgi?id=34462
3474
3475         * runtime/MathObject.cpp:
3476         (JSC::mathProtoFuncRound): Avoid "arg + 0.5".
3477
3478 2010-02-01  Kwang Yul Seo  <skyul@company100.net>
3479
3480         Reviewed by Eric Seidel.
3481
3482         [BREWMP] Port WTF's currentTime
3483         https://bugs.webkit.org/show_bug.cgi?id=33567
3484
3485         Combine GETUTCSECONDS and GETTIMEMS to calculate the number
3486         of milliseconds since 1970/01/01 00:00:00 UTC.
3487
3488         * wtf/CurrentTime.cpp:
3489         (WTF::currentTime):
3490
3491 2010-02-01  Patrick Gansterer  <paroga@paroga.com>
3492
3493         Reviewed by Darin Adler.
3494
3495         [Qt] WinCE buildfix after r52729 and fix for Q_BIG_ENDIAN typo.
3496         https://bugs.webkit.org/show_bug.cgi?id=34378
3497
3498         * wtf/Platform.h:
3499
3500 2010-02-01  Oliver Hunt  <oliver@apple.com>
3501
3502         Reviewed by Gavin Barraclough.
3503
3504         Structure not accounting for anonymous slots when computing property storage size
3505         https://bugs.webkit.org/show_bug.cgi?id=34441
3506
3507         Previously any Structure with anonymous storage would have a property map, so we
3508         were only including anonymous slot size if there was a property map.  Given this
3509         is no longer the case we should always include the anonymous slot count in the
3510         property storage size.
3511
3512         * runtime/Structure.h:
3513         (JSC::Structure::propertyStorageSize):
3514
3515 2010-02-01  Oliver Hunt  <oliver@apple.com>
3516
3517         Windows build fix, update exports file (again)
3518
3519         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3520
3521 2010-02-01  Oliver Hunt  <oliver@apple.com>
3522
3523         Windows build fix, update exports file
3524
3525         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3526
3527 2010-01-31  Oliver Hunt  <oliver@apple.com>
3528
3529         Reviewed by Maciej Stachowiak.
3530
3531         JSC is failing to propagate anonymous slot count on some transitions
3532         https://bugs.webkit.org/show_bug.cgi?id=34321
3533
3534         Remove secondary Structure constructor, and make Structure store a copy
3535         of the number of anonymous slots directly so saving an immediate allocation
3536         of a property map for all structures with anonymous storage, which also
3537         avoids the leaked property map on new property transition in the original
3538         version of this patch.
3539
3540         We need to propagate the the anonymous slot count otherwise we can end up
3541         with a structure recording incorrect information about the available and
3542         needed space for property storage, or alternatively incorrectly reusing
3543         some slots.
3544
3545         * JavaScriptCore.exp:
3546         * runtime/Structure.cpp:
3547         (JSC::Structure::Structure):
3548         (JSC::Structure::materializePropertyMap):
3549         (JSC::Structure::addPropertyTransition):
3550         (JSC::Structure::changePrototypeTransition):
3551         (JSC::Structure::despecifyFunctionTransition):
3552         (JSC::Structure::getterSetterTransition):
3553         (JSC::Structure::toDictionaryTransition):
3554         (JSC::Structure::flattenDictionaryStructure):
3555         (JSC::Structure::copyPropertyTable):
3556         (JSC::Structure::put):
3557         (JSC::Structure::remove):
3558         (JSC::Structure::insertIntoPropertyMapHashTable):
3559         (JSC::Structure::createPropertyMapHashTable):
3560         * runtime/Structure.h:
3561         (JSC::Structure::create):
3562         (JSC::Structure::hasAnonymousSlots):
3563         (JSC::Structure::anonymousSlotCount):
3564
3565 2010-01-31  Patrick Gansterer  <paroga@paroga.com>