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