c9a2570a603d85d34d7dedb4c540e490e2896cc6
[WebKit-https.git] / Source / JavaScriptCore / ChangeLog
1 2011-03-02  Adam Roben  <aroben@apple.com>
2
3         Delete old .res files whenever any .vsprops file changes
4
5         Prospective fix for <http://webkit.org/b/55599> r80079 caused incremental Windows builds to
6         fail
7
8         Reviewed by Tony Chang.
9
10         * JavaScriptCore.vcproj/JavaScriptCore/react-to-vsprops-changes.py:
11         (main): Restructured code to loop over a set of file extensions, deleting any old files that
12         have that extension. Now deletes .res files, too. (We previously deleted any file matching
13         *.manifest*, but that turned out to just be the union of *.manifest and *.res.)
14
15 2011-03-02  Adam Barth  <abarth@webkit.org>
16
17         Reviewed by Dimitri Glazkov.
18
19         Teach JavaScriptCore GYP build how to build minidom
20         https://bugs.webkit.org/show_bug.cgi?id=55536
21
22         * JavaScriptCore.gypi:
23         * gyp/JavaScriptCore.gyp:
24
25 2011-03-01  Adam Barth  <abarth@webkit.org>
26
27         Reviewed by Eric Seidel.
28
29         JavaScriptCore GYP build should copy some headers into the target framework
30         https://bugs.webkit.org/show_bug.cgi?id=55524
31
32         After this patch, all the framework headers are exported as public
33         headers.  We need to teach GYP how to handle private headers.
34
35         I struggled to determine how to store the information about whether a
36         header was public, private, or project (i.e., not exported).
37         Generally, the GYPI should just list the files, but it seemed siliy to
38         have an almost duplicated list of files in the GYP file itself.  If
39         this design doesn't scale, we might have to revisit it in the future.
40
41         * JavaScriptCore.gyp/JavaScriptCore.gyp:
42         * JavaScriptCore.gypi:
43         * gyp/JavaScriptCore.gyp:
44
45 2011-03-01  Sheriff Bot  <webkit.review.bot@gmail.com>
46
47         Unreviewed, rolling out r80079.
48         http://trac.webkit.org/changeset/80079
49         https://bugs.webkit.org/show_bug.cgi?id=55547
50
51         "Broke the Win debug build?" (Requested by dcheng on #webkit).
52
53         * wtf/Platform.h:
54
55 2011-03-01  Daniel Cheng  <dcheng@chromium.org>
56
57         Reviewed by David Levin.
58
59         Add feature define for data transfer items
60         https://bugs.webkit.org/show_bug.cgi?id=55510
61
62         * wtf/Platform.h:
63
64 2011-03-01  Oliver Hunt  <oliver@apple.com>
65
66         Reviewed by Joseph Pecoraro.
67
68         Misaligned memory access in CloneDeserializer on all ARM arch.
69         https://bugs.webkit.org/show_bug.cgi?id=48742
70
71         Add a CPU class for architectures that need aligned addresses
72         for memory access.
73
74         * wtf/Platform.h:
75
76 2011-03-01  Adam Barth  <abarth@webkit.org>
77
78         Reviewed by Dimitri Glazkov.
79
80         Add pre- and post-build actions for JavaScriptCore GYP build
81         https://bugs.webkit.org/show_bug.cgi?id=55507
82
83         After this patch, we have all the steps for building the main
84         JavaScriptCore framework except the "copy headers" step, which I'll do
85         next.
86
87         * gyp/JavaScriptCore.gyp:
88
89 2011-03-01  Geoffrey Garen  <ggaren@apple.com>
90
91         Reviewed by Sam Weinig.
92
93         Rolled back in r79627 now that the underlying cause for it crashing is fixed.
94         https://bugs.webkit.org/show_bug.cgi?id=55159
95
96         * JavaScriptCore.exp:
97         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
98         * JavaScriptCore.xcodeproj/project.pbxproj:
99         * runtime/Heap.cpp:
100         (JSC::Heap::allocateSlowCase):
101         * runtime/Heap.h:
102         * runtime/JSCell.h:
103         (JSC::JSCell::MarkedSpace::sizeClassFor):
104         (JSC::JSCell::Heap::allocate):
105         (JSC::JSCell::JSCell::operator new):
106         * runtime/MarkedBlock.h:
107         * runtime/MarkedSpace.cpp:
108         (JSC::MarkedSpace::MarkedSpace):
109         (JSC::MarkedSpace::allocateBlock):
110         (JSC::MarkedSpace::reset):
111         * runtime/MarkedSpace.h:
112         (JSC::MarkedSpace::SizeClass::SizeClass):
113
114 2011-03-01  Mark Rowe  <mrowe@apple.com>
115
116         Reviewed by Sam Weinig.
117
118         Replace two script phases that do nothing but copy files with copy files build phases.
119
120         This speeds up the build by a few seconds on high-end Mac Pros.
121
122         * JavaScriptCore.xcodeproj/project.pbxproj:
123
124 2011-03-01  David Kilzer  <ddkilzer@apple.com>
125
126         Spring cleaning!
127
128         Rubber-stamped by Mark Rowe.
129
130         * JavaScriptCore.xcodeproj/project.pbxproj:
131         (Copy Into Framework): Remove "set -x" and its comment.
132
133 2011-03-01  Michael Saboff  <msaboff@apple.com>
134
135         Reviewed by Darin Adler.
136
137         TinyMCE not working in nightlies
138         https://bugs.webkit.org/show_bug.cgi?id=54978
139
140         Disabling setupBeginChars() to temporarily work arround the test 
141         failure.  Filed https://bugs.webkit.org/show_bug.cgi?id=55479
142         to track fixing the issue.
143
144         * yarr/YarrPattern.cpp:
145         (JSC::Yarr::YarrPattern::compile):
146
147 2011-02-23  Joseph Pecoraro  <joepeck@webkit.org>
148
149         Reviewed by Kenneth Rohde Christiansen.
150
151         Viewport parsing no longer accepts "1.0;" value as valid.
152         https://bugs.webkit.org/show_bug.cgi?id=53705
153
154         Include a didReadNumber parameter to String -> float / double
155         conversion functions. This way, if the "ok" boolean out
156         parameter is false, you can check to see if there in fact
157         was a valid number parsed with garbage at the end. Examples
158         of that would be parsing "123x456" would have ok = false,
159         but didReadNumber = true.
160
161         * JavaScriptCore.exp:
162         * wtf/text/StringImpl.cpp:
163         (WTF::StringImpl::toDouble):
164         (WTF::StringImpl::toFloat):
165         * wtf/text/StringImpl.h:
166         * wtf/text/WTFString.cpp:
167         (WTF::String::toDouble):
168         (WTF::String::toFloat):
169         (WTF::charactersToDouble):
170         (WTF::charactersToFloat):
171         * wtf/text/WTFString.h:
172
173 2011-02-28  Geoffrey Garen  <ggaren@apple.com>
174
175         Reviewed by Gavin Barraclough.
176
177         Past-the-end writes in VM exceptions (caused crashes in r79627)
178         https://bugs.webkit.org/show_bug.cgi?id=55448
179         
180         Some exceptions had the wrong structures, so they misoverestimated their
181         inline storage sizes.
182
183         * runtime/JSGlobalData.cpp:
184         (JSC::JSGlobalData::JSGlobalData): Use the right structure.
185
186         * runtime/JSObject.h:
187         (JSC::JSNonFinalObject::JSNonFinalObject):
188         (JSC::JSFinalObject::JSFinalObject): ASSERT that our structure capacity
189         is correct to verify this doesn't happen again.
190
191 2011-03-01  Andras Becsi  <abecsi@webkit.org>
192
193         Reviewed by Csaba Osztrogon√°c.
194
195         [Qt] Clean up the project files and move common options to WebKit.pri.
196
197         * JavaScriptCore.pri: Move options also needed in WebCore into WebKit.pri.
198         * JavaScriptCore.pro: Deduplicate options.
199         * jsc.pro: Ditto.
200
201 2011-03-01  Adam Barth  <abarth@webkit.org>
202
203         Reviewed by Eric Seidel.
204
205         Teach JavaScriptCore GYP build about DEPTH
206         https://bugs.webkit.org/show_bug.cgi?id=55425
207
208         In addition to teaching the JavaScriptCore GYP build about DEPTH, this
209         change overrides the GCC warning configuration to disable a warning
210         that's causing probems in Assertions.cpp.  With that warning disabled,
211         JavaScriptCore builds again.
212
213         * gyp/JavaScriptCore.gyp:
214
215 2011-02-28  Gavin Barraclough  <barraclough@apple.com>
216
217         Windows build fix.
218
219         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
220
221 2011-02-28  Sheriff Bot  <webkit.review.bot@gmail.com>
222
223         Unreviewed, rolling out r79948.
224         http://trac.webkit.org/changeset/79948
225         https://bugs.webkit.org/show_bug.cgi?id=55439
226
227         "caused crashes on the SL release bot" (Requested by ggaren on
228         #webkit).
229
230         * runtime/JSGlobalData.h:
231         * runtime/WriteBarrier.h:
232
233 2011-02-28  Gavin Barraclough  <barraclough@apple.com>
234
235         Windows build fix.
236
237         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
238
239 2011-02-28  Gavin Barraclough  <barraclough@apple.com>
240
241         Reviewed by Sam Weinig & Darin Adler.
242
243         Bug 55423 - Clean up property tables in Structure
244
245         Encapsulate, reduce duplication of table search code,
246         and reduce the size of the tables (remove the index,
247         just maintain the tables in the correct order).
248
249         Shows a 0.5% - 1% progression on sunspider.
250
251         * JavaScriptCore.exp:
252         * runtime/PropertyMapHashTable.h:
253         (JSC::isPowerOf2):
254         (JSC::nextPowerOf2):
255             bit ops used to calculate table size.
256         (JSC::PropertyMapEntry::PropertyMapEntry):
257         (JSC::PropertyTable::ordered_iterator::operator++):
258         (JSC::PropertyTable::ordered_iterator::operator==):
259         (JSC::PropertyTable::ordered_iterator::operator!=):
260         (JSC::PropertyTable::ordered_iterator::operator*):
261         (JSC::PropertyTable::ordered_iterator::operator->):
262         (JSC::PropertyTable::ordered_iterator::ordered_iterator):
263             implementation of the iterator types
264         (JSC::PropertyTable::PropertyTable):
265         (JSC::PropertyTable::~PropertyTable):
266             constructors take an initial capacity for the table,
267             a table to copy, or both.
268         (JSC::PropertyTable::begin):
269         (JSC::PropertyTable::end):
270             create in-order iterators.
271         (JSC::PropertyTable::find):
272             search the hash table
273         (JSC::PropertyTable::add):
274             add a value to the hash table
275         (JSC::PropertyTable::remove):
276             remove a value from the hash table
277         (JSC::PropertyTable::size):
278         (JSC::PropertyTable::isEmpty):
279             accessors.
280         (JSC::PropertyTable::propertyStorageSize):
281         (JSC::PropertyTable::clearDeletedOffsets):
282         (JSC::PropertyTable::hasDeletedOffset):
283         (JSC::PropertyTable::getDeletedOffset):
284         (JSC::PropertyTable::addDeletedOffset):
285             cache deleted (available) offsets in the property storage array.
286         (JSC::PropertyTable::copy):
287             take a copy of the PropertyTable, potentially expanding the capacity.
288         (JSC::PropertyTable::sizeInMemory):
289             used for DEBUG build statistics
290         (JSC::PropertyTable::reinsert):
291         (JSC::PropertyTable::rehash):
292         (JSC::PropertyTable::tableCapacity):
293         (JSC::PropertyTable::deletedEntryIndex):
294         (JSC::PropertyTable::skipDeletedEntries):
295         (JSC::PropertyTable::table):
296         (JSC::PropertyTable::usedCount):
297         (JSC::PropertyTable::dataSize):
298         (JSC::PropertyTable::sizeForCapacity):
299         (JSC::PropertyTable::canInsert):
300             these methods provide internal implementation.
301         * runtime/Structure.cpp:
302         (JSC::Structure::dumpStatistics):
303         (JSC::Structure::~Structure):
304         (JSC::Structure::materializePropertyMap):
305         (JSC::Structure::despecifyDictionaryFunction):
306         (JSC::Structure::addPropertyTransition):
307         (JSC::Structure::flattenDictionaryStructure):
308         (JSC::Structure::copyPropertyTable):
309         (JSC::Structure::get):
310         (JSC::Structure::despecifyFunction):
311         (JSC::Structure::despecifyAllFunctions):
312         (JSC::Structure::put):
313         (JSC::Structure::remove):
314         (JSC::Structure::createPropertyMap):
315         (JSC::Structure::getPropertyNames):
316         (JSC::PropertyTable::checkConsistency):
317         (JSC::Structure::checkConsistency):
318             factored out code to PropertyMapHashTable.h
319         * runtime/Structure.h:
320         (JSC::Structure::propertyStorageSize):
321         (JSC::Structure::isEmpty):
322         (JSC::Structure::get):
323             factored out code to PropertyMapHashTable.h
324
325 2011-02-28  Xan Lopez  <xlopez@igalia.com>
326
327         Another fix build :(
328
329         Fix typo.
330
331         * runtime/MachineStackMarker.cpp:
332         (JSC::freePlatformThreadRegisters):
333
334 2011-02-28  Xan Lopez  <xlopez@igalia.com>
335
336         Unreviewed build fix for Snow Leopard.
337
338         * runtime/MachineStackMarker.cpp:
339         (JSC::freePlatformThreadRegisters):
340
341 2011-02-28  Alejandro G. Castro  <alex@igalia.com>
342
343         Unreviewed, fix SnowLeopard compilation after r79952.
344
345         * runtime/MachineStackMarker.cpp:
346         (JSC::freePlatformThreadRegisters):
347
348 2011-02-28  Mark Rowe  <mrowe@apple.com>
349
350         Reviewed by Darin Adler.
351
352         <http://webkit.org/b/55430> OwnArrayPtr.h's LOOSE_OWN_ARRAY_PTR results in link errors.
353
354         * wtf/OwnArrayPtr.h:
355         (WTF::::set): Implement OwnArrayPtr::set.
356
357 2011-02-28  Martin Zoubek  <martin.zoubek@acision.com> and Alejandro G. Castro  <alex@igalia.com>
358
359         Reviewed by Martin Robinson.
360
361         Multithread support for JSC on UNIX
362         https://bugs.webkit.org/show_bug.cgi?id=26838
363
364         Implement suspendThread() and resumeThread() for systems with
365         pthread.h using thread signal handler.
366
367         * runtime/MachineStackMarker.cpp:
368         (JSC::pthreadSignalHandlerSuspendResume):
369         (JSC::MachineStackMarker::Thread::Thread):
370         (JSC::getCurrentPlatformThread):
371         (JSC::suspendThread):
372         (JSC::resumeThread):
373         (JSC::getPlatformThreadRegisters):
374         (JSC::otherThreadStackPointer):
375         (JSC::freePlatformThreadRegisters):
376         (JSC::MachineStackMarker::markOtherThreadConservatively):
377         * wtf/Platform.h: Added Gtk port to use
378         ENABLE_JSC_MULTIPLE_THREADS.
379
380 2011-02-28  Oliver Hunt  <oliver@apple.com>
381
382         Reviewed by Darin Adler.
383
384         Stop using DeprecatedPtr for the global exception slot
385         https://bugs.webkit.org/show_bug.cgi?id=55424
386
387         Create GCRootPtr to signify that the exception slot is
388         a gcroot, and so is exempt from the usual writebarrier
389         restrictions.
390
391         * runtime/JSGlobalData.h:
392         * runtime/WriteBarrier.h:
393         (JSC::GCRootPtr::GCRootPtr):
394         (JSC::GCRootPtr::operator=):
395
396 2011-02-28  Adam Barth  <abarth@webkit.org>
397
398         Reviewed by Dimitri Glazkov.
399
400         Use more xcconfig files in JavaScriptCore gyp build
401         https://bugs.webkit.org/show_bug.cgi?id=55391
402
403         The GYP experts tell me that we have have a total of two xcconfig
404         files: one for the xcodeproj as a whole and one for each target.  This
405         patch uses that technique to re-use the existing xcconfig files and
406         eliminate the duplication.
407
408         Technically, this patch introduces some build errors because the
409         xcconfig files assume that the xcodeproj file is one level higher in
410         the directory hierarchy.  Specifically, the xcodeproj file can no
411         longer find the Info.plist or the prefix header.  I plan to fix that in
412         a subsequent patch.
413
414         Also, this patch introduces the Release and Production configurations,
415         which should work correctly now.
416
417         * gyp/JavaScriptCore.gyp:
418
419 2011-02-28  Jon Honeycutt  <jhoneycutt@apple.com>
420
421         Windows build fix.
422
423         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
424         Add symbol to export.
425
426 2011-02-28  Oliver Hunt  <oliver@apple.com>
427
428         Reviewed by Gavin Barraclough.
429
430         Make ScopeChainNode GC allocated
431         https://bugs.webkit.org/show_bug.cgi?id=55283
432
433         Simplify lifetime and other issues with the scopechain
434         by making it gc allocated.  This allows us to simplify
435         function exit and unwinding, as well as making the
436         current iterative refcounting go away.
437
438         * JavaScriptCore.exp:
439         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
440         * bytecode/CodeBlock.cpp:
441         (JSC::CodeBlock::createActivation):
442         * bytecode/StructureStubInfo.cpp:
443         * bytecompiler/BytecodeGenerator.cpp:
444         (JSC::BytecodeGenerator::generate):
445         (JSC::BytecodeGenerator::BytecodeGenerator):
446         (JSC::BytecodeGenerator::emitJumpIfNotFunctionCall):
447         (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply):
448         * bytecompiler/BytecodeGenerator.h:
449         * debugger/Debugger.cpp:
450         (JSC::Recompiler::operator()):
451         * debugger/DebuggerCallFrame.h:
452         (JSC::DebuggerCallFrame::scopeChain):
453         * interpreter/CachedCall.h:
454         (JSC::CachedCall::CachedCall):
455         * interpreter/CallFrame.h:
456         * interpreter/Interpreter.cpp:
457         (JSC::depth):
458         (JSC::Interpreter::unwindCallFrame):
459         (JSC::Interpreter::throwException):
460         (JSC::Interpreter::execute):
461         (JSC::Interpreter::executeCall):
462         (JSC::Interpreter::executeConstruct):
463         (JSC::Interpreter::privateExecute):
464         * jit/JITCall.cpp:
465         (JSC::JIT::compileOpCallInitializeCallFrame):
466         (JSC::JIT::compileOpCall):
467         * jit/JITCall32_64.cpp:
468         (JSC::JIT::compileOpCallInitializeCallFrame):
469         (JSC::JIT::emit_op_ret):
470         (JSC::JIT::emit_op_ret_object_or_this):
471         (JSC::JIT::compileOpCall):
472         * jit/JITOpcodes.cpp:
473         (JSC::JIT::emit_op_end):
474         (JSC::JIT::emit_op_ret):
475         (JSC::JIT::emit_op_ret_object_or_this):
476         * jit/JITOpcodes32_64.cpp:
477         (JSC::JIT::emit_op_end):
478         * jit/JITStubs.cpp:
479         (JSC::DEFINE_STUB_FUNCTION):
480         * jit/JITStubs.h:
481         * runtime/ArgList.cpp:
482         * runtime/Completion.cpp:
483         (JSC::evaluate):
484         * runtime/Completion.h:
485         * runtime/DateConversion.cpp:
486         * runtime/Executable.cpp:
487         (JSC::EvalExecutable::compileInternal):
488         (JSC::ProgramExecutable::compileInternal):
489         (JSC::FunctionExecutable::compileForCallInternal):
490         (JSC::FunctionExecutable::compileForConstructInternal):
491         * runtime/FunctionConstructor.cpp:
492         (JSC::constructFunction):
493         * runtime/GCActivityCallbackCF.cpp:
494         * runtime/Identifier.cpp:
495         * runtime/JSCell.h:
496         * runtime/JSChunk.cpp: Added.
497         * runtime/JSChunk.h: Added.
498         * runtime/JSFunction.cpp:
499         (JSC::JSFunction::JSFunction):
500         (JSC::JSFunction::markChildren):
501         (JSC::JSFunction::getCallData):
502         (JSC::JSFunction::getOwnPropertySlot):
503         (JSC::JSFunction::getConstructData):
504         * runtime/JSFunction.h:
505         (JSC::JSFunction::scope):
506         (JSC::JSFunction::setScope):
507         * runtime/JSGlobalData.cpp:
508         (JSC::JSGlobalData::JSGlobalData):
509         * runtime/JSGlobalData.h:
510         * runtime/JSGlobalObject.cpp:
511         (JSC::JSGlobalObject::init):
512         (JSC::JSGlobalObject::markChildren):
513         * runtime/JSGlobalObject.h:
514         (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData):
515         (JSC::JSGlobalObject::globalScopeChain):
516         * runtime/JSGlobalObjectFunctions.cpp:
517         (JSC::globalFuncEval):
518         * runtime/JSLock.cpp:
519         * runtime/JSNumberCell.cpp:
520         * runtime/JSZombie.cpp:
521         * runtime/MarkedBlock.cpp:
522         * runtime/MarkedSpace.cpp:
523         * runtime/PropertyNameArray.cpp:
524         * runtime/ScopeChain.cpp:
525         (JSC::ScopeChainNode::print):
526         (JSC::ScopeChainNode::localDepth):
527         (JSC::ScopeChainNode::markChildren):
528         * runtime/ScopeChain.h:
529         (JSC::ScopeChainNode::ScopeChainNode):
530         (JSC::ScopeChainNode::createStructure):
531         (JSC::ScopeChainNode::push):
532         (JSC::ScopeChainNode::pop):
533         (JSC::ScopeChainIterator::ScopeChainIterator):
534         (JSC::ScopeChainIterator::operator*):
535         (JSC::ScopeChainIterator::operator->):
536         (JSC::ScopeChainIterator::operator++):
537         (JSC::ScopeChainNode::begin):
538         (JSC::ScopeChainNode::end):
539         (JSC::ExecState::globalData):
540         (JSC::ExecState::lexicalGlobalObject):
541         (JSC::ExecState::globalThisValue):
542         * runtime/ScopeChainMark.h:
543         * wtf/DateMath.cpp:
544
545 2011-02-27  Adam Barth  <abarth@webkit.org>
546
547         Reviewed by Eric Seidel.
548
549         Implement WTF::randomNumber in terms of WTF::cryptographicallyRandomNumber when possible
550         https://bugs.webkit.org/show_bug.cgi?id=55326
551
552         Currently, randomNumber does a bunch of platform-specific work that to
553         get a cryptographic randomness when available.  Instead, we should use
554         cryptographicallyRandomNumber, which abstracts this work.
555         Unfortunately, we can't remove all of the WTF::randomNumber
556         implementation because not every port has access to cryptographically
557         random numbers.
558
559         * wtf/RandomNumber.cpp:
560         (WTF::randomNumber):
561
562 2011-02-27  Benjamin Poulain  <ikipou@gmail.com>
563
564         Reviewed by Darin Adler.
565
566         Eliminate DeprecatedPtrList from RenderBlock
567         https://bugs.webkit.org/show_bug.cgi?id=54972
568
569         Add methods find() and contains() using an adaptor to ListHashSet.
570         Those method are like the one of HashSet, they allow to find objects
571         based on a different key than the one used to define the set.
572
573         Add convenience methods for direct access to the head and tail of the list.
574         Those methods are providing similar API/behavior as Vector.
575
576         * wtf/ListHashSet.h:
577         (WTF::::first):
578         (WTF::::last):
579         (WTF::::removeLast):
580         (WTF::ListHashSetTranslatorAdapter::hash):
581         (WTF::ListHashSetTranslatorAdapter::equal):
582         (WTF::::find):
583         (WTF::::contains):
584
585 2011-02-26  Patrick Gansterer  <paroga@webkit.org>
586
587         Reviewed by Andreas Kling.
588
589         Add support for DragonFly BSD
590         https://bugs.webkit.org/show_bug.cgi?id=54407
591
592         DragonFly BSD is based on FreeBSD, so handle it like FreeBSD.
593
594         * wtf/Platform.h:
595
596 2011-02-26  Adam Barth  <abarth@webkit.org>
597
598         Reviewed by Dimitri Glazkov.
599
600         JavaScriptCore should use the xcconfig file instead of importing that information into GYP
601         https://bugs.webkit.org/show_bug.cgi?id=55282
602
603         Technically, this breaks the build because I had removed one of the
604         warnings in this config file, but this change seems like an
605         improvement.
606
607         * gyp/JavaScriptCore.gyp:
608
609 2011-02-26  Thouraya ANDOLSI  <thouraya.andolsi@st.com>
610
611         Reviewed by Nikolas Zimmermann.
612
613         SH4 JIT SUPPORT
614         https://bugs.webkit.org/show_bug.cgi?id=44329
615
616         Provide an ExecutableAllocater::cacheFlush() implementation for
617         Linux/SH4.
618
619         * jit/ExecutableAllocator.h:
620         (JSC::ExecutableAllocator::cacheFlush):
621
622 2011-02-25  Sheriff Bot  <webkit.review.bot@gmail.com>
623
624         Unreviewed, rolling out r79627.
625         http://trac.webkit.org/changeset/79627
626         https://bugs.webkit.org/show_bug.cgi?id=55274
627
628         broke worker tests (Requested by olliej on #webkit).
629
630         * JavaScriptCore.exp:
631         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
632         * runtime/Heap.cpp:
633         (JSC::Heap::allocate):
634         * runtime/Heap.h:
635         * runtime/JSCell.h:
636         (JSC::JSCell::JSCell::operator new):
637         (JSC::JSCell::MarkedSpace::sizeClassFor):
638         (JSC::JSCell::MarkedSpace::allocate):
639         * runtime/MarkedBlock.h:
640         * runtime/MarkedSpace.cpp:
641         (JSC::MarkedSpace::MarkedSpace):
642         (JSC::MarkedSpace::allocateBlock):
643         (JSC::MarkedSpace::reset):
644         * runtime/MarkedSpace.h:
645         (JSC::MarkedSpace::SizeClass::SizeClass):
646
647 2011-02-25  Michael Saboff  <msaboff@apple.com>
648
649         Reviewed by Darin Adler.
650
651         Leak in JSParser::Scope of ScopeLabelInfo Vector
652         https://bugs.webkit.org/show_bug.cgi?id=55249
653
654         Changed m_labels to be an OwnPtr<>.  Added VectorTraits
655         and Scope copy constructor to support this change.
656
657         * parser/JSParser.cpp:
658         (JSC::JSParser::Scope::~Scope):
659
660 2011-02-25  Fumitoshi Ukai  <ukai@chromium.org>
661
662         Reviewed by Adam Barth.
663
664         WebSocket uses insecure random numbers
665         https://bugs.webkit.org/show_bug.cgi?id=54714
666
667         * JavaScriptCore.exp: Export WTF::cryptographicallyRandomNumber()
668
669 2011-02-25  Patrick Gansterer  <paroga@webkit.org>
670
671         Reviewed by Adam Roben.
672
673         Move timeBeginPeriod into OS(WINDOWS) section
674         https://bugs.webkit.org/show_bug.cgi?id=55247
675
676         * jsc.cpp:
677         (main): timeBeginPeriod is available on all Windows versions and not compiler specific.
678
679 2011-02-25  Patrick Gansterer  <paroga@webkit.org>
680
681         Unreviewed WinCE build fix for r79695.
682
683         * jsc.cpp:
684         (main): SetErrorMode isn't available on WinCE.
685
686 2011-02-25  Adam Roben  <aroben@apple.com>
687
688         Work around Cygwin's crash-suppression behavior
689
690         Cygwin calls ::SetErrorMode(SEM_FAILCRITICALERRORS), which any processes it launches will
691         inherit. This is bad for testing/debugging, as it causes the post-mortem debugger not to be
692         invoked. (Cygwin does this because it makes crashes more UNIX-y.) We reset the error mode
693         when our test apps launch to work around Cygwin's behavior.
694
695         Fixes <http://webkit.org/b/55222> Test apps crash silently (without invoking post-mortem
696         debugger) when launched from Cygwin 1.7
697
698         Reviewed by Darin Adler.
699
700         * API/tests/testapi.c: Added a now-needed #include.
701         (main):
702         * jsc.cpp:
703         (main):
704         Call ::SetErrorMode(0) to undo Cygwin's folly.
705
706         * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: Define NOMINMAX like many of our
707         other projects do so that windows.h won't define min/max macros that interfere with
708         std::numeric_limits<T>::min/max.
709
710 2011-02-24  Adam Barth  <abarth@webkit.org>
711
712         Reviewed by Eric Seidel.
713
714         Add GYP project for JavaScriptCore
715         https://bugs.webkit.org/show_bug.cgi?id=55027
716
717         Again, this GYP files is very rough, but it succeeds in building
718         JavaScriptCore.  There's a lot more work to do here, especially in the
719         area of sharing with JavaScriptGlue.gyp.  This patch is more of a
720         checkpoint so that other folks can help out if they wish.
721
722         * gyp: Added.
723         * gyp/JavaScriptCore.gyp: Added.
724         * gyp/generate-derived-sources.sh: Added.
725
726 2011-02-24  Adam Barth  <abarth@webkit.org>
727
728         Reviewed by Eric Seidel.
729
730         Add missing files to JavaScriptCore.gypi
731         https://bugs.webkit.org/show_bug.cgi?id=55193
732
733         I forgot to add mm files in my previous patch.
734
735         * JavaScriptCore.gyp/JavaScriptCore.gyp:
736         * JavaScriptCore.gypi:
737
738 2011-02-24  Adam Barth  <abarth@webkit.org>
739
740         Reviewed by Eric Seidel.
741
742         Remove unused parameter name in GCActivityCallback.cpp
743         https://bugs.webkit.org/show_bug.cgi?id=55194
744
745         This change is not strictly required for the GYP-based build system,
746         but I noticed this error when working on the new build system.
747
748         * runtime/GCActivityCallback.cpp:
749         (JSC::DefaultGCActivityCallback::DefaultGCActivityCallback):
750
751 2011-02-24  James Robinson  <jamesr@chromium.org>
752
753         Reviewed by Darin Fisher.
754
755         Add a USE() macro to control use of the built-in UTF8 codec
756         https://bugs.webkit.org/show_bug.cgi?id=55189
757
758         Defaults USE(BUILTIN_UTF8_CODEC) to true for all platforms except chromium, which controls the flag via features.gypi.
759
760         * wtf/Platform.h:
761
762 2011-02-24  Geoffrey Garen  <ggaren@apple.com>
763
764         Reviewed by Darin Adler.
765
766         Variable-sized allocation (but still capped at 64 bytes)
767         https://bugs.webkit.org/show_bug.cgi?id=55159
768         
769         SunSpider reports no change.
770
771         * JavaScriptCore.exp: Some day, I hope not to have to edit this file.
772
773         * runtime/Heap.cpp:
774         (JSC::Heap::allocateSlowCase): Split allocation into a fast and slow
775         case, so the fast case can inline size class selection and turn it into
776         a compile-time constant.
777         
778         Changed the collect-on-every allocation debugging switch to collect only
779         on every slow allocation, so you can still flip the switch without
780         recompiling the world. This may also be preferable for debugging purposes,
781         since collecting after every single allocation can be unusably slow,
782         and can mask problems by running destructors early.
783
784         * runtime/Heap.h: Ditto.
785
786         * runtime/JSCell.h:
787         (JSC::JSCell::MarkedSpace::sizeClassFor):
788         (JSC::JSCell::Heap::allocate):
789         (JSC::JSCell::JSCell::operator new): The inlining mentioned above.
790
791         * runtime/MarkedBlock.h: Dropped the block size from 256KB to 16KB. With
792         multiple size classes, allocating a full 256KB for the first allocation
793         in a given class can be pathologically wasteful. (8KB, or 4KB Mac and
794         8KB Windows, would be even better, but that seems to be a peformance
795         regression for now.)
796         
797         * runtime/MarkedSpace.cpp:
798         (JSC::MarkedSpace::MarkedSpace):
799         (JSC::MarkedSpace::allocateBlock):
800         (JSC::MarkedSpace::reset): There's more than one size class now, and its
801         cell size is not constant.
802
803         * runtime/MarkedSpace.h:
804         (JSC::MarkedSpace::SizeClass::SizeClass): Ditto.
805
806 2011-02-23  Oliver Hunt  <oliver@apple.com>
807
808         Reviewed by Geoffrey Garen.
809
810         Make WeakGCMap use new handle infrastructure
811         https://bugs.webkit.org/show_bug.cgi?id=55100
812
813         Remove old WeakGCMap implementation and move over to new handle
814         based logic.
815
816         This has a number of benefits, most notably it makes a WeakGCMap
817         always reflect the true state of the world by as all entries are
818         removed at the first gc cycle that makes them dead.  This allows
819         us to get rid of code in a wide variety of objects where the only
820         purpose was to remove themselves from maps.
821
822         It also means that we no longer need to have special "unchecked"
823         versions of any functions on WeakGCMap.  Alas in order to maintain
824         compatibility with the JSWeakObjectMapClear API it is still
825         necessary to have an api that resembles uncheckedRemove, this is
826         now deprecatedRemove and will be dealt with in a later patch.
827
828         In order to get correct semantics in WeakGCMap we need more
829         contextual information in the finalizer, so we've added an
830         abstract class based finaliser and a context parameter to the
831         calls.
832
833         The new an improved WeakGCMap also results in sigificantly more
834         churn in the weak handle lists so exposed some potential problems
835         during the post mark phase which have been rectified as well.
836
837         * API/JSWeakObjectMapRefPrivate.cpp:
838         * API/JSWeakObjectMapRefPrivate.h:
839         * runtime/Heap.cpp:
840         (JSC::Heap::globalObjectCount):
841         (JSC::Heap::protectedGlobalObjectCount):
842         * runtime/JSGlobalData.cpp:
843         (JSC::JSGlobalData::JSGlobalData):
844         * runtime/JSGlobalData.h:
845         * runtime/JSGlobalObject.cpp:
846         (JSC::JSGlobalObject::~JSGlobalObject):
847         (JSC::JSGlobalObject::init):
848         * runtime/WeakGCMap.h:
849         (JSC::WeakGCMap::iterator::iterator):
850         (JSC::WeakGCMap::iterator::get):
851         (JSC::WeakGCMap::iterator::getSlot):
852         (JSC::WeakGCMap::iterator::operator++):
853         (JSC::WeakGCMap::iterator::operator==):
854         (JSC::WeakGCMap::iterator::operator!=):
855         (JSC::WeakGCMap::WeakGCMap):
856         (JSC::WeakGCMap::isEmpty):
857         (JSC::WeakGCMap::clear):
858         (JSC::WeakGCMap::get):
859         (JSC::WeakGCMap::getSlot):
860         (JSC::WeakGCMap::set):
861         (JSC::WeakGCMap::take):
862         (JSC::WeakGCMap::size):
863         (JSC::WeakGCMap::deprecatedRemove):
864         (JSC::WeakGCMap::begin):
865         (JSC::WeakGCMap::end):
866         (JSC::WeakGCMap::~WeakGCMap):
867         (JSC::WeakGCMap::finalize):
868         * runtime/WeakGCPtr.h:
869         (JSC::WeakGCPtr::WeakGCPtr):
870         (JSC::WeakGCPtr::set):
871
872 2011-02-24  Oliver Hunt  <oliver@apple.com>
873
874         Reviewed by Gavin Barraclough.
875
876         Make weaklist processing deal with weak handles being removed during the iteration
877         https://bugs.webkit.org/show_bug.cgi?id=55105
878
879         It is possible for the handle heap to end up in a broken state if
880         a handle's finalizer removes either the current or next handle
881         to be visited during the post-gc cleanup.  This patch removes that
882         problem by allowing the deallocate(Node*) routine to update the
883         iterator if it is called during finalization.
884
885         * collector/handles/HandleHeap.cpp:
886         (JSC::HandleHeap::HandleHeap):
887         (JSC::HandleHeap::updateAfterMark):
888         (JSC::HandleHeap::clearWeakPointers):
889         (JSC::HandleHeap::writeBarrier):
890         (JSC::HandleHeap::protectedGlobalObjectCount):
891         * collector/handles/HandleHeap.h:
892         (JSC::Finalizer::~Finalizer):
893         (JSC::HandleHeap::getFinalizer):
894         (JSC::HandleHeap::deallocate):
895         (JSC::HandleHeap::makeWeak):
896         (JSC::HandleHeap::makeSelfDestroying):
897         (JSC::HandleHeap::Node::Node):
898         (JSC::HandleHeap::Node::setFinalizer):
899         (JSC::HandleHeap::Node::finalizer):
900         (JSC::HandleHeap::Node::finalizerContext):
901         * interpreter/RegisterFile.cpp:
902         (JSC::RegisterFile::setGlobalObject):
903         (JSC::GlobalObjectNotifier::finalize):
904         (JSC::RegisterFile::globalObjectCollectedNotifier):
905         * interpreter/RegisterFile.h:
906         (JSC::RegisterFile::RegisterFile):
907         * runtime/Heap.cpp:
908         (JSC::Heap::destroy):
909         * runtime/WeakGCPtr.h:
910         (JSC::WeakGCPtr::WeakGCPtr):
911         (JSC::WeakGCPtr::set):
912
913 2011-02-24  Michael Saboff  <msaboff@apple.com>
914
915         Reviewed by Oliver Hunt.
916
917         PatternAlternative leaked in YarrPatternConstructor::atomParenthesesEnd()
918         https://bugs.webkit.org/show_bug.cgi?id=55156
919
920         Added code to delete unneeded PatternAlternative after it is removed
921         from m_alternatives Vector.
922
923         * yarr/YarrPattern.cpp:
924         (JSC::Yarr::YarrPatternConstructor::atomParenthesesEnd):
925
926 2011-02-24  Eric Seidel  <eric@webkit.org>
927
928         Reviewed by Anders Carlsson.
929
930         VectorBuffer should not call malloc(0)
931         https://bugs.webkit.org/show_bug.cgi?id=55091
932
933         Turns out the malloc() call which was so hot in:
934         https://bugs.webkit.org/show_bug.cgi?id=55005
935         was actually just malloc(0).
936
937         We shouldn't be calling malloc(0) anyway, since there is no need to
938         and it might actually do work on some systems.
939         I believe on Mac it ends up taking the standard spinlocks (expensive)
940         and the code on Brew actually does a malloc(1) instead.  Neither is desirable.
941
942         * wtf/Vector.h:
943         (WTF::VectorBufferBase::allocateBuffer):
944         (WTF::VectorBufferBase::tryAllocateBuffer):
945
946 2011-02-24  Patrick Gansterer  <paroga@webkit.org>
947
948         Reviewed by Darin Adler.
949
950         Remove obsolete PLATFORM(CI)
951         https://bugs.webkit.org/show_bug.cgi?id=55082
952
953         * wtf/Platform.h:
954
955 2011-02-24  Martin Robinson  <mrobinson@igalia.com>
956
957         Reviewed by Xan Lopez.
958
959         [GTK] Remove the GFile GOwnPtr specialization
960         https://bugs.webkit.org/show_bug.cgi?id=55154
961
962         Remove the GFile specialization of GOwnPtr. It's sufficient to use GRefPtr
963         to track GFiles since they are just regular reference-counted GObjects.
964
965         * wtf/gobject/GOwnPtr.cpp: Remove GFile specialization.
966         * wtf/gobject/GOwnPtr.h: Ditto.
967
968 2011-02-24  Patrick Gansterer  <paroga@webkit.org>
969
970         Reviewed by Eric Seidel.
971
972         Rename PLATFORM(SKIA) to USE(SKIA)
973         https://bugs.webkit.org/show_bug.cgi?id=55090
974
975         * wtf/Platform.h:
976
977 2011-02-24  Patrick Gansterer  <paroga@webkit.org>
978
979         Reviewed by Alexey Proskuryakov.
980
981         Remove pthreads dependecy for JSLock
982         https://bugs.webkit.org/show_bug.cgi?id=54832
983
984         JSLock is only needed to support an obsolete execution model where JavaScriptCore
985         automatically protected against concurrent access from multiple threads.
986         So it's safe to disable it on non-mac platforms where we don't have native pthreads.
987
988         * runtime/JSLock.cpp:
989
990 2011-02-24  Chao-ying Fu  <fu@mips.com>
991
992         Reviewed by Eric Seidel.
993
994         Fix MIPS build with new patchOffsetPut/GetByIdPropertyMapOffset1/2 values
995         https://bugs.webkit.org/show_bug.cgi?id=54997
996
997         * jit/JIT.h:
998         * jit/JITStubs.cpp:
999         (JSC::JITThunks::JITThunks):
1000
1001 2011-02-24  Andras Becsi  <abecsi@webkit.org>
1002
1003         Reviewed by Laszlo Gombos.
1004
1005         [Qt] MinGW build fails to link
1006         https://bugs.webkit.org/show_bug.cgi?id=55050
1007
1008         Prepend the libraries of subcomponents instead of appending them
1009         to fix the library order according to the dependency of the libraries
1010
1011         * JavaScriptCore.pri: rename addJavaScriptCore to prependJavaScriptCore
1012         * jsc.pro: ditto
1013
1014 2011-02-24  Eric Seidel  <eric@webkit.org>
1015
1016         Reviewed by Adam Barth.
1017
1018         Deque<T> should support inline capacity
1019         https://bugs.webkit.org/show_bug.cgi?id=55032
1020
1021         The title says it all.  There are currently no places
1022         which use this code yet, however it's been tested in conjunction
1023         with code for bug 55005.
1024
1025         This also adds an ASSERT that capacity is never 1.  If you were able
1026         to set the capacity equal to 1, the Deque would just get confused
1027         and happily append your item but still think it had size 0.
1028
1029         * wtf/Deque.h:
1030         (WTF::DequeIterator::DequeIterator):
1031         (WTF::DequeConstIterator::DequeConstIterator):
1032         (WTF::DequeReverseIterator::DequeReverseIterator):
1033         (WTF::DequeConstReverseIterator::DequeConstReverseIterator):
1034         (WTF::::checkValidity):
1035         (WTF::::checkIndexValidity):
1036         (WTF::::invalidateIterators):
1037         (WTF::::Deque):
1038         (WTF::deleteAllValues):
1039         (WTF::::operator):
1040         (WTF::::destroyAll):
1041         (WTF::::~Deque):
1042         (WTF::::swap):
1043         (WTF::::clear):
1044         (WTF::::findIf):
1045         (WTF::::expandCapacityIfNeeded):
1046         (WTF::::expandCapacity):
1047         (WTF::::takeFirst):
1048         (WTF::::append):
1049         (WTF::::prepend):
1050         (WTF::::removeFirst):
1051         (WTF::::remove):
1052         (WTF::::addToIteratorsList):
1053         (WTF::::removeFromIteratorsList):
1054         (WTF::::DequeIteratorBase):
1055         (WTF::::~DequeIteratorBase):
1056         (WTF::::isEqual):
1057         (WTF::::increment):
1058         (WTF::::decrement):
1059         (WTF::::after):
1060         (WTF::::before):
1061         * wtf/Vector.h:
1062
1063 2011-02-22  Adam Barth  <abarth@webkit.org>
1064
1065         Reviewed by Ojan Vafai. 
1066
1067         Add missing files to JavaScriptCore.gypi 
1068         https://bugs.webkit.org/show_bug.cgi?id=55020 
1069
1070         gypi files are supposed to list every file under the sun.  This patch 
1071         adds some missing files and sorts the rest. 
1072
1073         * JavaScriptCore.gypi: 
1074
1075 2011-02-23  Geoffrey Garen  <ggaren@apple.com>
1076
1077         Reviewed by Darin Adler.
1078
1079         Refactored MarkedSpace to operate in terms of size classes
1080         https://bugs.webkit.org/show_bug.cgi?id=55106
1081         
1082         SunSpider reports no change.
1083
1084         * runtime/JSCell.h:
1085         (JSC::JSCell::MarkedSpace::sizeClassFor):
1086         (JSC::JSCell::MarkedSpace::allocate): Delegate allocation based on size
1087         class. Since these functions are inline, the compiler can constant fold
1088         them.
1089
1090         * runtime/MarkedBlock.h:
1091         (JSC::MarkedBlock::cellSize):
1092         (JSC::MarkedBlock::size): Factored out a cellSize() helper.
1093
1094         * runtime/MarkedSpace.cpp:
1095         (JSC::MarkedSpace::allocateBlock):
1096         (JSC::MarkedSpace::allocateFromSizeClass):
1097         (JSC::MarkedSpace::shrink):
1098         (JSC::MarkedSpace::reset):
1099         * runtime/MarkedSpace.h:
1100         (JSC::MarkedSpace::SizeClass::SizeClass):
1101         (JSC::MarkedSpace::SizeClass::reset): Changed to operate in terms of
1102         abstract SizeClass objects, which are independent linked lists of blocks
1103         of a certain size class, instead of a single m_heap object.
1104
1105 2011-02-23  Adam Barth  <abarth@webkit.org>
1106
1107         Reviewed by James Robinson.
1108
1109         [Chromium] Use WebKitClient for OSRandomSource instead of trying to talk to the file system in the sandbox
1110         https://bugs.webkit.org/show_bug.cgi?id=55093
1111
1112         Exclude OSRandomSource.cpp from the Chromium build.  This function is
1113         implemented in WebKit/chromium/src instead.
1114
1115         * JavaScriptCore.gyp/JavaScriptCore.gyp:
1116
1117 2011-02-23  Oliver Hunt  <oliver@apple.com>
1118
1119         Roll out r64156 as it introduces incorrect behaviour.
1120
1121         * runtime/JSByteArray.h:
1122         (JSC::JSByteArray::setIndex):
1123
1124 2011-02-23  Geoffrey Garen  <ggaren@apple.com>
1125
1126         Reviewed by Oliver Hunt.
1127
1128         Moved the "nextAtom" allocation pointer into MarkedBlock for better encapsulation
1129         https://bugs.webkit.org/show_bug.cgi?id=55079
1130         
1131         SunSpider reports no change.
1132
1133         * runtime/Heap.cpp:
1134         (JSC::Heap::reset): Moved Zombie sweeping here, up from MarkedSpace,
1135         since we want Heap to logically control MarkedSpace. MarkedSpace should
1136         never choose to sweep itself.
1137
1138         * runtime/JSCell.h:
1139         (JSC::JSCell::MarkedBlock::allocate): Updated for nextAtom becoming a
1140         member of MarkedBlock. No need to reset nextAtom to firstAtom() when
1141         we reach the end of a block, since there's now an explicit reset pass
1142         during GC.
1143
1144         * runtime/MarkedBlock.cpp:
1145         (JSC::MarkedBlock::MarkedBlock):
1146         * runtime/MarkedBlock.h:
1147         (JSC::MarkedBlock::reset): Added the nextAtom data member, and reordered
1148         some data members to improve cache locality.
1149
1150         * runtime/MarkedSpace.cpp:
1151         (JSC::MarkedSpace::MarkedSpace):
1152         (JSC::MarkedSpace::allocate):
1153         (JSC::MarkedSpace::reset):
1154         * runtime/MarkedSpace.h:
1155         (JSC::CollectorHeap::CollectorHeap): Removed nextAtom, and added an
1156         explicit reset pass.
1157
1158 2011-02-23  James Robinson  <jamesr@chromium.org>
1159
1160         Unreviewed, rolling out r79428.
1161         http://trac.webkit.org/changeset/79428
1162         https://bugs.webkit.org/show_bug.cgi?id=54714
1163
1164         Does not work in the Chromium sandbox
1165
1166         * JavaScriptCore.exp:
1167
1168 2011-02-23  Adam Roben  <aroben@apple.com>
1169
1170         Fix an off-by-one error in JSC::appendSourceToError
1171
1172         Looks like this bug has been around since the code was first added in r35245.
1173
1174         Fixes <http://webkit.org/b/55052> <rdar://problem/9043512> Crash in JSC::appendSourceToError
1175         when running fast/dom/objc-big-method-name.html on Windows with full page heap enabled
1176
1177         Reviewed by Darin Adler.
1178
1179         * interpreter/Interpreter.cpp:
1180         (JSC::appendSourceToError): When trimming whitespace off the end of the string, examine the
1181         character at stop-1 rather than at stop. At this point in the code, stop represents the
1182         index just past the end of the characters we care about, and can even be just past the end
1183         of the entire data buffer.
1184
1185 2011-02-23  Geoffrey Garen  <ggaren@apple.com>
1186
1187         Reviewed by Darin Adler.
1188         
1189         Rolled back in r79367 with SnowLeopard Release bot crash fixed.
1190         https://bugs.webkit.org/show_bug.cgi?id=54999
1191         
1192         The crash was caused by failure to update the "nextBlock" pointer when
1193         removing a block from the list while shrinking. The fix is to update the
1194         "nextBlock" pointer.
1195         
1196         This crash was very rare because it only happened in cases where the very
1197         first block in the heap contained no marked cells.
1198
1199 2011-02-23  Dan Bernstein  <mitz@apple.com>
1200
1201         Reviewed by Gavin Barraclough.
1202
1203         Include frame numbers in backtraces.
1204         https://bugs.webkit.org/show_bug.cgi?id=55060
1205
1206         * wtf/Assertions.cpp:
1207
1208 2011-02-23  Xan Lopez  <xlopez@igalia.com>
1209
1210         Reviewed by Gavin Barraclough.
1211
1212         latest jsc for armv7 crashes in sunspider tests
1213         https://bugs.webkit.org/show_bug.cgi?id=54667
1214
1215         Update JIT offset values in ARMv7 after r78732. Fixes crashes in
1216         SunSpider and JavaScript tests.
1217
1218         * jit/JIT.h: update values.
1219
1220 2011-02-23  Sheriff Bot  <webkit.review.bot@gmail.com>
1221
1222         Unreviewed, rolling out r79418.
1223         http://trac.webkit.org/changeset/79418
1224         https://bugs.webkit.org/show_bug.cgi?id=55043
1225
1226         "breaks shlib linux build" (Requested by morrita on #webkit).
1227
1228         * JavaScriptCore.gyp/JavaScriptCore.gyp:
1229         * JavaScriptCore.gypi:
1230
1231 2011-02-23  Patrick Gansterer  <paroga@webkit.org>
1232
1233         Reviewed by Alexey Proskuryakov.
1234
1235         Use DEFINE_STATIC_LOCAL for ignoreSetMutex in Structure.cpp
1236         https://bugs.webkit.org/show_bug.cgi?id=54831
1237
1238         * runtime/InitializeThreading.cpp:
1239         (JSC::initializeThreadingOnce):
1240         * runtime/Structure.cpp:
1241         (JSC::ignoreSetMutex):
1242         (JSC::Structure::Structure):
1243         (JSC::Structure::~Structure):
1244         (JSC::Structure::initializeThreading):
1245         * runtime/Structure.h:
1246
1247 2011-02-23  Patrick Gansterer  <paroga@webkit.org>
1248
1249         Reviewed by Darin Adler.
1250
1251         Rename PLATFORM(CF) to USE(CF)
1252         https://bugs.webkit.org/show_bug.cgi?id=53540
1253
1254         * runtime/DatePrototype.cpp:
1255         * runtime/GCActivityCallbackCF.cpp:
1256         * runtime/JSGlobalData.cpp:
1257         (JSC::JSGlobalData::JSGlobalData):
1258         * wtf/CurrentTime.cpp:
1259         * wtf/Platform.h:
1260         * wtf/text/AtomicString.h:
1261         * wtf/text/StringImpl.h:
1262         (WTF::StringImpl::computeHash):
1263         * wtf/text/WTFString.h:
1264         * wtf/unicode/icu/CollatorICU.cpp:
1265         (WTF::Collator::userDefault):
1266
1267 2011-02-23  Fumitoshi Ukai  <ukai@chromium.org>
1268
1269         Unreviewed build fix for Windows.
1270
1271         WebSocket uses insecure random numbers
1272         https://bugs.webkit.org/show_bug.cgi?id=54714
1273
1274         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export WTF::cryptographicallyRandomNumber()
1275
1276 2011-02-23  Fumitoshi Ukai  <ukai@chromium.org>
1277
1278         Reviewed by Adam Barth.
1279
1280         WebSocket uses insecure random numbers
1281         https://bugs.webkit.org/show_bug.cgi?id=54714
1282
1283         * JavaScriptCore.exp: Export WTF::cryptographicallyRandomNumber()
1284
1285 2011-02-22  Adam Barth  <abarth@webkit.org>
1286
1287         Reviewed by Ojan Vafai.
1288
1289         Add missing files to JavaScriptCore.gypi
1290         https://bugs.webkit.org/show_bug.cgi?id=55020
1291
1292         gypi files are supposed to list every file under the sun.  This patch
1293         adds some missing files and sorts the rest.
1294
1295         * JavaScriptCore.gypi:
1296
1297 2011-02-22  Sheriff Bot  <webkit.review.bot@gmail.com>
1298
1299         Unreviewed, rolling out r79367.
1300         http://trac.webkit.org/changeset/79367
1301         https://bugs.webkit.org/show_bug.cgi?id=55012
1302
1303         all layout tests are crashing on Snow Leopard (Requested by
1304         rniwa on #webkit).
1305
1306         * GNUmakefile.am:
1307         * JavaScriptCore.gypi:
1308         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
1309         * JavaScriptCore.xcodeproj/project.pbxproj:
1310         * runtime/MarkedBlock.cpp:
1311         (JSC::MarkedBlock::MarkedBlock):
1312         * runtime/MarkedBlock.h:
1313         * runtime/MarkedSpace.cpp:
1314         (JSC::MarkedSpace::destroy):
1315         (JSC::MarkedSpace::allocateBlock):
1316         (JSC::MarkedSpace::freeBlock):
1317         (JSC::MarkedSpace::allocate):
1318         (JSC::MarkedSpace::shrink):
1319         (JSC::MarkedSpace::reset):
1320         * runtime/MarkedSpace.h:
1321         (JSC::CollectorHeap::collectorBlock):
1322         * wtf/CMakeLists.txt:
1323         * wtf/DoublyLinkedList.h: Removed.
1324
1325 2011-02-22  Geoffrey Garen  <ggaren@apple.com>
1326
1327         Reviewed by Oliver Hunt.
1328
1329         Manage MarkedBlocks in a linked list instead of a vector, so arbitrary removal is O(1)
1330         https://bugs.webkit.org/show_bug.cgi?id=54999
1331         
1332         SunSpider reports no change.
1333
1334         * GNUmakefile.am:
1335         * JavaScriptCore.gypi:
1336         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
1337         * JavaScriptCore.xcodeproj/project.pbxproj: So many build systems, so little time.
1338         * wtf/CMakeLists.txt:
1339
1340         * runtime/MarkedBlock.cpp:
1341         (JSC::MarkedBlock::MarkedBlock):
1342         * runtime/MarkedBlock.h:
1343         (JSC::MarkedBlock::setPrev):
1344         (JSC::MarkedBlock::setNext):
1345         (JSC::MarkedBlock::prev):
1346         (JSC::MarkedBlock::next): Added linked list data members and accessors.
1347
1348         * runtime/MarkedSpace.cpp:
1349         (JSC::MarkedSpace::destroy):
1350         (JSC::MarkedSpace::allocateBlock): Stop using vector, since it doesn't exist anymore.
1351
1352         (JSC::MarkedSpace::freeBlocks): New helper function for updating relevant
1353         data structures when freeing blocks.
1354
1355         (JSC::MarkedSpace::allocate): Updated for nextBlock being a pointer and
1356         not a vector index.
1357
1358         (JSC::MarkedSpace::shrink): Construct a temporary list of empties and
1359         then free them, to avoid modifying our hash table while iterating it.
1360         This wasn't a concern before because we were using indirect array
1361         indexing, not direct pointer indexing.
1362
1363         (JSC::MarkedSpace::reset): Updated for nextBlock being a pointer and
1364         not a vector index.
1365
1366         * runtime/MarkedSpace.h:
1367         (JSC::CollectorHeap::CollectorHeap): Changed data type from vector to linked list.
1368
1369         * wtf/DoublyLinkedList.h: Added. New linked list class.
1370         (WTF::::DoublyLinkedList):
1371         (WTF::::isEmpty):
1372         (WTF::::head):
1373         (WTF::::append):
1374         (WTF::::remove):
1375
1376 2011-02-22  Gavin Barraclough  <barraclough@apple.com>
1377
1378         Windows build fix.
1379
1380         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1381
1382 2011-02-22  Gavin Barraclough  <barraclough@apple.com>
1383
1384         Reviewed by Sam Weinig.
1385
1386         Bug 54988 - Re-create StructureTransitionTable class, encapsulate transition table
1387
1388         The Structure class keeps a table of transitions to derived Structure types. Since
1389         this table commonly contains a single entry we employ an optimization where instead
1390         of holding a map, we may hold a pointer directly to a single instance of the mapped
1391         type. We use an additional bit of data to flag whether the pointer is currently
1392         pointing to a table of transitions, or a singleton transition. Previously we had
1393         commonly used a pattern of storing data in the low bits of pointers, but had moved
1394         away from this since it causes false leaks to be reported by the leaks tool. However
1395         in this case, the entries in the map are weak links - this pointer will never be
1396         responsible for keeping an object alive.  As such we can use this approach provided
1397         that the bit is set when a table is not in use (otherwise the table would appear to
1398         be leaked).
1399
1400         Additionally, the transition table currently allows two entries to exist for a given
1401         key - one specialized to a particular value, and one not specialized. This is
1402         unnecessary, wasteful, and a little inconsistent. (If you create an entry for a
1403         specialized value, then a non-specialized entry, both will exist.  If you create an
1404         entry for a non-specialized value, then try to create a specialized entry, only a
1405         non-specialized form will be allowed.)
1406
1407         This shows a small progression on v8.
1408
1409         * JavaScriptCore.exp:
1410         * runtime/JSObject.h:
1411         (JSC::JSObject::putDirectInternal):
1412         * runtime/Structure.cpp:
1413         (JSC::StructureTransitionTable::contains):
1414         (JSC::StructureTransitionTable::get):
1415         (JSC::StructureTransitionTable::remove):
1416         (JSC::StructureTransitionTable::add):
1417         (JSC::Structure::dumpStatistics):
1418         (JSC::Structure::Structure):
1419         (JSC::Structure::~Structure):
1420         (JSC::Structure::addPropertyTransitionToExistingStructure):
1421         (JSC::Structure::addPropertyTransition):
1422         * runtime/Structure.h:
1423         (JSC::Structure::get):
1424         * runtime/StructureTransitionTable.h:
1425         (JSC::StructureTransitionTable::Hash::hash):
1426         (JSC::StructureTransitionTable::Hash::equal):
1427         (JSC::StructureTransitionTable::HashTraits::emptyValue):
1428         (JSC::StructureTransitionTable::HashTraits::constructDeletedValue):
1429         (JSC::StructureTransitionTable::HashTraits::isDeletedValue):
1430         (JSC::StructureTransitionTable::StructureTransitionTable):
1431         (JSC::StructureTransitionTable::~StructureTransitionTable):
1432         (JSC::StructureTransitionTable::isUsingSingleSlot):
1433         (JSC::StructureTransitionTable::map):
1434         (JSC::StructureTransitionTable::setMap):
1435         (JSC::StructureTransitionTable::singleTransition):
1436         (JSC::StructureTransitionTable::setSingleTransition):
1437
1438 2011-02-22  Andras Becsi  <abecsi@webkit.org>
1439
1440         Reviewed by Laszlo Gombos.
1441
1442         [Qt] Redesign the build system
1443         https://bugs.webkit.org/show_bug.cgi?id=51339
1444
1445         Part 2.
1446
1447         Build WebCore as a static library, compile the WebKit API and WebKit2 API
1448         in a final step and link to WebKit2, WebCore and JSC libraries to fix
1449         linking issues resulting from stripped away symbols.
1450
1451         * JavaScriptCore.pri: Remove the workaround.
1452
1453 2011-02-21  Adam Roben  <aroben@apple.com>
1454
1455         Fix linker warning on Windows
1456
1457         r79135 tried to export JSObject::s_info by adding it to JavaScriptCore.def. This is the
1458         obvious way (since it's how we export functions), but unfortunately it doesn't work correct.
1459         r79222 made us export it the right way (using the JS_EXPORTDATA macro), but forgot to remove
1460         it from JavaScriptCore.def. This caused us to get linker warnings about exporting the symbol
1461         multiple times.
1462
1463         Rubber-stamped by Anders Carlsson.
1464
1465         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Removed JSObject::s_info.
1466
1467 2011-02-21  Brian Weinstein  <bweinstein@apple.com>
1468
1469         Reviewed by Adam Roben.
1470
1471         WebResourceCacheManager should be responsible for managing the CFURLCache as well
1472         as the WebCore memory cache.
1473         https://bugs.webkit.org/show_bug.cgi?id=54886
1474         Part of <rdar://problem/8971738>
1475
1476         Add a new use flag for using the CFURLCache.
1477
1478         * wtf/Platform.h:
1479
1480 2011-02-21  Xan Lopez  <xlopez@igalia.com>
1481
1482         Reviewed by Gavin Barraclough.
1483
1484         Use ASSERT_JIT_OFFSET in JITPropertyAccess32_64.cpp
1485         https://bugs.webkit.org/show_bug.cgi?id=54901
1486
1487         * jit/JIT.h: swap actual and expected values in message, they were
1488         reversed.
1489         * jit/JITCall32_64.cpp:
1490         (JSC::JIT::compileOpCall): use ASSERT_JIT_OFFSET instead of
1491         a simple ASSERT.
1492         * jit/JITPropertyAccess32_64.cpp:
1493         (JSC::JIT::emit_op_method_check): ditto.
1494         (JSC::JIT::compileGetByIdHotPath): ditto.
1495         (JSC::JIT::compileGetByIdSlowCase): ditto.
1496         (JSC::JIT::emit_op_put_by_id): ditto.
1497
1498 2011-02-21  Gavin Barraclough  <barraclough@apple.com>
1499
1500         Ruber stamped by Sam Weinig
1501
1502         Bug 54899 - Math.LOG10E should be 0.4342944819032518
1503         This value is quoted in section 15.8.1.5 of the spec.
1504
1505         * runtime/MathObject.cpp:
1506         (JSC::MathObject::MathObject):
1507
1508 2011-02-21  Gavin Barraclough  <barraclough@apple.com>
1509
1510         Reviewed by Sam Weinig.
1511
1512         Bug 54894 - Make inheritance structure described by ClassInfo match C++ class hierarchy.
1513
1514         The ClassInfo objects describe an inheritance hierarchy, with each ClassInfo instance
1515         containing a pointer to its parent class. These links should reflect the inheritance
1516         hierarchy of C++ classes below JSObject. For the large part it does, but in some cases
1517         entries in the C++ hierarchy are skipped over. This presently likely doesn't matter,
1518         since intervening C++ classes may not have ClassInfo - but would be a potential bug
1519         were ClassInfo were to be added.
1520
1521         * API/JSCallbackConstructor.cpp:
1522         * API/JSCallbackFunction.cpp:
1523         * API/JSCallbackObjectFunctions.h:
1524         * runtime/Arguments.h:
1525         * runtime/ArrayPrototype.cpp:
1526         * runtime/BooleanObject.cpp:
1527         * runtime/DateInstance.cpp:
1528         * runtime/DatePrototype.cpp:
1529         * runtime/ErrorInstance.cpp:
1530         * runtime/InternalFunction.cpp:
1531         * runtime/JSActivation.cpp:
1532         * runtime/JSArray.cpp:
1533         * runtime/JSFunction.cpp:
1534         * runtime/JSONObject.cpp:
1535         * runtime/JSObject.h:
1536         * runtime/JSZombie.h:
1537         * runtime/MathObject.cpp:
1538         * runtime/NativeErrorConstructor.cpp:
1539         * runtime/NumberConstructor.cpp:
1540         * runtime/NumberObject.cpp:
1541         * runtime/RegExpConstructor.cpp:
1542         * runtime/RegExpObject.cpp:
1543         * runtime/StringObject.cpp:
1544         * runtime/StringPrototype.cpp:
1545
1546 2011-02-21  Adam Roben  <aroben@apple.com>
1547
1548         Export JSObject::s_info from JavaScriptCore.dll
1549
1550         This matches what we do for all other ClassInfo objects that WebCore needs access to.
1551
1552         Fixes <http://webkit.org/b/54881> REGRESSION (r79132): Lots of tests crashing in
1553         JSCell::inherits on Windows
1554
1555         Reviewed by Sam Weinig.
1556
1557         * runtime/JSObject.h: Added JS_EXPORTDATA to s_info.
1558
1559 2011-02-21  Kristian Amlie  <kristian.amlie@nokia.com>
1560
1561         Reviewed by Andreas Kling.
1562
1563         Switched to compiler based detection, where the error actually is.
1564
1565         It is not the platform that needs the workaround, it is the compiler.
1566
1567         QtWebKit fails to compile on Windows XP with msvc-2008
1568         https://bugs.webkit.org/show_bug.cgi?id=54746
1569
1570         * bytecode/CodeBlock.h:
1571         * runtime/RegExpObject.h:
1572
1573 2011-02-20  Gavin Barraclough  <barraclough@apple.com>
1574
1575         Reviewed by Oliver Hunt.
1576
1577         https://bugs.webkit.org/show_bug.cgi?id=54839
1578         Remove PrototypeFunction, NativeFunctionWrapper, and GlobalEvalFunction.
1579
1580         Historically, Native functions used to be represented by PrototypeFunctions, however
1581         since introducing call optimizations to the JIT this has used JSFunctions for host
1582         calls too. At the point this change was made, the interpreter continued to use
1583         PrototypeFunctions, however since fallback from the JIT to interpreter was introduced
1584         the interpreter has had to be able to run using host functions represented using
1585         JSFunctions - leading to an unnecessary and redundant divergence in behaviour between 
1586         interpreter only builds, and situations where the JIT has fallen back to interpreting.
1587
1588         NativeFunctionWrapper only existed to select between PrototypeFunction and JSFunction
1589         for wrappers for host functions, and as such can also be removed.
1590
1591         GlobalEvalFunction is a redundant wrapper that happens to be derived from
1592         PrototypeFunction. It existed to hold a reference to the global object - but since all
1593         functions how derive from JSObjectWithGlobalObject, this no longer requires an
1594         additional class to provide this functionality.
1595
1596         * JavaScriptCore.JSVALUE32_64only.exp:
1597         * JavaScriptCore.JSVALUE64only.exp:
1598         * JavaScriptCore.xcodeproj/project.pbxproj:
1599             Removed symbols / references to files.
1600
1601         * runtime/GlobalEvalFunction.cpp: Removed.
1602         * runtime/GlobalEvalFunction.h: Removed.
1603         * runtime/NativeFunctionWrapper.h: Removed.
1604         * runtime/PrototypeFunction.cpp: Removed.
1605         * runtime/PrototypeFunction.h: Removed.
1606             Removed.
1607
1608         * runtime/Executable.cpp:
1609         (JSC::NativeExecutable::~NativeExecutable):
1610         * runtime/Executable.h:
1611         (JSC::NativeExecutable::create):
1612         (JSC::NativeExecutable::NativeExecutable):
1613         (JSC::JSFunction::nativeFunction):
1614         * runtime/JSFunction.cpp:
1615         (JSC::callHostFunctionAsConstructor):
1616         (JSC::JSFunction::JSFunction):
1617         (JSC::JSFunction::getCallData):
1618         * runtime/JSFunction.h:
1619         * runtime/JSGlobalData.cpp:
1620         (JSC::JSGlobalData::getHostFunction):
1621         * runtime/JSGlobalData.h:
1622         (JSC::JSGlobalData::getCTIStub):
1623             Added interpreter-friendly constructors for NativeExecutables.
1624
1625         * bytecompiler/BytecodeGenerator.cpp:
1626         * interpreter/Interpreter.cpp:
1627         * jit/JITStubs.cpp:
1628         * jsc.cpp:
1629         * runtime/ArrayConstructor.cpp:
1630         * runtime/BooleanPrototype.cpp:
1631         * runtime/BooleanPrototype.h:
1632         * runtime/CallData.h:
1633         * runtime/DateConstructor.cpp:
1634         * runtime/DateConstructor.h:
1635         * runtime/ErrorPrototype.cpp:
1636         * runtime/ErrorPrototype.h:
1637         * runtime/FunctionPrototype.cpp:
1638         * runtime/FunctionPrototype.h:
1639         * runtime/JSGlobalObject.cpp:
1640         * runtime/JSGlobalObject.h:
1641         * runtime/JSGlobalObjectFunctions.cpp:
1642         * runtime/Lookup.cpp:
1643         * runtime/NumberPrototype.cpp:
1644         * runtime/NumberPrototype.h:
1645         * runtime/ObjectConstructor.cpp:
1646         * runtime/ObjectConstructor.h:
1647         * runtime/ObjectPrototype.cpp:
1648         * runtime/ObjectPrototype.h:
1649         * runtime/RegExpPrototype.cpp:
1650         * runtime/RegExpPrototype.h:
1651         * runtime/SmallStrings.h:
1652         * runtime/StringConstructor.cpp:
1653         * runtime/StringConstructor.h:
1654             Removed use of redundant classes.
1655
1656 2011-02-19  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
1657
1658         Unreviewed build fix for Symbian.
1659
1660         [Symbian] Revert the removal of linking 
1661         against hal after r79126.
1662
1663         Dependency on the hal library can not be removed 
1664         as it is still used (e.g. in MarkStackSymbian.cpp).
1665
1666         * JavaScriptCore.pri:
1667
1668 2011-02-19  Gavin Barraclough  <barraclough@apple.com>
1669
1670         Interpreter build fix.
1671
1672         * runtime/ArrayConstructor.cpp:
1673         * runtime/BooleanPrototype.cpp:
1674         * runtime/DateConstructor.cpp:
1675         * runtime/ErrorPrototype.cpp:
1676         * runtime/FunctionPrototype.cpp:
1677         * runtime/Lookup.cpp:
1678         * runtime/NumberPrototype.cpp:
1679         * runtime/ObjectConstructor.cpp:
1680         * runtime/ObjectPrototype.cpp:
1681         * runtime/RegExpPrototype.cpp:
1682         * runtime/StringConstructor.cpp:
1683
1684 2011-02-19  Gavin Barraclough  <barraclough@apple.com>
1685
1686         Build fix!!
1687
1688         * JavaScriptCore.exp:
1689
1690 2011-02-19  Gavin Barraclough  <barraclough@apple.com>
1691
1692         Windows build fix!!
1693
1694         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1695
1696 2011-02-19  Gavin Barraclough  <barraclough@apple.com>
1697
1698         Windows build fix!
1699
1700         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1701
1702 2011-02-19  Gavin Barraclough  <barraclough@apple.com>
1703
1704         Build fix!
1705
1706         * JavaScriptCore.exp:
1707
1708 2011-02-18  Gavin Barraclough  <barraclough@apple.com>
1709
1710         Reviewed by Sam Weinig.
1711
1712         Bug 54786 - Devirtualize JSCell::classInfo()
1713
1714         Instead of making a virtual function call, add a pointer to the ClassInfo
1715         onto Structure.
1716
1717         This removes a virtual function call, and paves the way towards removing all
1718         the createStructure methods, and StructureFlags/AnonymousSlotCount properties
1719         (these should be able to move onto ClassInfo).
1720
1721         Calls to Structure::create must now pass a pointer to the ClassInfo for the
1722         structure. All objects now have a ClassInfo pointer, non-object cell types
1723         still do not.
1724
1725         Changes are most mechanical, involving three steps:
1726             * Remove virtual classInfo() methods.
1727             * Add &s_info parameter to calls to Structure::create.
1728             * Rename ClassInfo static members on classes from 'info' to 's_info',
1729               for consistency.
1730
1731         * API/JSCallbackConstructor.cpp:
1732         * API/JSCallbackConstructor.h:
1733         * API/JSCallbackFunction.cpp:
1734         * API/JSCallbackFunction.h:
1735         * API/JSCallbackObject.cpp:
1736         * API/JSCallbackObject.h:
1737         * API/JSCallbackObjectFunctions.h:
1738         * API/JSObjectRef.cpp:
1739         * API/JSValueRef.cpp:
1740         * API/JSWeakObjectMapRefPrivate.cpp:
1741         * JavaScriptCore.exp:
1742         * debugger/Debugger.cpp:
1743         * debugger/DebuggerActivation.h:
1744         * debugger/DebuggerCallFrame.cpp:
1745         * interpreter/Interpreter.cpp:
1746         * jit/JITCall32_64.cpp:
1747         * jit/JITOpcodes.cpp:
1748         * jit/JITStubs.cpp:
1749         * profiler/Profiler.cpp:
1750         * runtime/Arguments.cpp:
1751         * runtime/Arguments.h:
1752         * runtime/ArrayConstructor.cpp:
1753         * runtime/ArrayPrototype.cpp:
1754         * runtime/ArrayPrototype.h:
1755         * runtime/BooleanObject.cpp:
1756         * runtime/BooleanObject.h:
1757         * runtime/BooleanPrototype.cpp:
1758         * runtime/DateConstructor.cpp:
1759         * runtime/DateInstance.cpp:
1760         * runtime/DateInstance.h:
1761         * runtime/DatePrototype.cpp:
1762         * runtime/DatePrototype.h:
1763         * runtime/ErrorInstance.cpp:
1764         * runtime/ErrorInstance.h:
1765         * runtime/ErrorPrototype.cpp:
1766         * runtime/FunctionPrototype.cpp:
1767         * runtime/FunctionPrototype.h:
1768         * runtime/GetterSetter.h:
1769         * runtime/GlobalEvalFunction.h:
1770         * runtime/InternalFunction.cpp:
1771         * runtime/InternalFunction.h:
1772         * runtime/JSAPIValueWrapper.h:
1773         * runtime/JSActivation.cpp:
1774         * runtime/JSActivation.h:
1775         * runtime/JSArray.cpp:
1776         * runtime/JSArray.h:
1777         * runtime/JSByteArray.cpp:
1778         * runtime/JSByteArray.h:
1779         * runtime/JSCell.cpp:
1780         * runtime/JSCell.h:
1781         * runtime/JSFunction.cpp:
1782         * runtime/JSFunction.h:
1783         * runtime/JSGlobalData.cpp:
1784         * runtime/JSGlobalObject.cpp:
1785         * runtime/JSGlobalObject.h:
1786         * runtime/JSNotAnObject.h:
1787         * runtime/JSONObject.cpp:
1788         * runtime/JSONObject.h:
1789         * runtime/JSObject.cpp:
1790         * runtime/JSObject.h:
1791         * runtime/JSObjectWithGlobalObject.h:
1792         * runtime/JSPropertyNameIterator.h:
1793         * runtime/JSStaticScopeObject.h:
1794         * runtime/JSString.h:
1795         * runtime/JSVariableObject.h:
1796         * runtime/JSWrapperObject.h:
1797         * runtime/JSZombie.cpp:
1798         * runtime/JSZombie.h:
1799         * runtime/Lookup.cpp:
1800         * runtime/MathObject.cpp:
1801         * runtime/MathObject.h:
1802         * runtime/NativeErrorConstructor.cpp:
1803         * runtime/NativeErrorConstructor.h:
1804         * runtime/NumberConstructor.cpp:
1805         * runtime/NumberConstructor.h:
1806         * runtime/NumberObject.cpp:
1807         * runtime/NumberObject.h:
1808         * runtime/NumberPrototype.cpp:
1809         * runtime/ObjectConstructor.cpp:
1810         * runtime/ObjectPrototype.cpp:
1811         * runtime/RegExpConstructor.cpp:
1812         * runtime/RegExpConstructor.h:
1813         * runtime/RegExpObject.cpp:
1814         * runtime/RegExpObject.h:
1815         * runtime/RegExpPrototype.cpp:
1816         * runtime/ScopeChain.cpp:
1817         * runtime/StringConstructor.cpp:
1818         * runtime/StringObject.cpp:
1819         * runtime/StringObject.h:
1820         * runtime/StringObjectThatMasqueradesAsUndefined.h:
1821         * runtime/StringPrototype.cpp:
1822         * runtime/StringPrototype.h:
1823         * runtime/Structure.cpp:
1824         * runtime/Structure.h:
1825
1826 2011-02-19  David Kilzer  <ddkilzer@apple.com>
1827
1828         <http://webkit.org/b/54808> Change jsc target to build directly into JavaScriptCore.framework/Resources/jsc
1829
1830         Reviewed by Dan Bernstein.
1831
1832         * Configurations/Base.xcconfig: Added
1833         JAVASCRIPTCORE_FRAMEWORKS_DIR variable.
1834         * Configurations/JavaScriptCore.xcconfig: Used
1835         JAVASCRIPTCORE_FRAMEWORKS_DIR to define INSTALL_PATH.
1836         * JavaScriptCore.xcodeproj/project.pbxproj: Set the INSTALL_PATH
1837         for Production configuration of jsc target.
1838         (Copy Into Framework): Removed old build phase.
1839         (Fix Framework Reference): Renamed build phase to "Copy Into
1840         Framework".  Added "set -x" call to make the script print the
1841         commands it is running.  Added code to exit early for Production
1842         builds since this was never intended for them.  Added code to
1843         copy jsc into the JavaScriptCore.framework/Resources directory.
1844
1845 2011-02-19  Siddharth Mathur  <siddharth.mathur@nokia.com>
1846
1847         Reviewed by Laszlo Gombos.
1848
1849         [Symbian] OSAllocator implementation for Symbian OS. 
1850         Manages both data and code region requests. V8 and Sunspider tested
1851         OK with interpreter. Not tested with JSC JIT yet as it has unrelated
1852         failures. Also no thread safety yet.
1853         https://bugs.webkit.org/show_bug.cgi?id=51128
1854
1855         * JavaScriptCore.pri: removed HAL linkage
1856         * wtf/Bitmap.h:
1857         (WTF::::findRunOfZeros): find run of zeros in a bitmap. quick n dirty
1858         * wtf/OSAllocator.h:
1859         (WTF::OSAllocator::decommitAndRelease): decommit explicitly 
1860         * wtf/OSAllocatorSymbian.cpp: Impl. of OSAllocator interface 
1861         (WTF::allocateCodeChunk): utility for code chunks
1862         (WTF::deallocateCodeChunk): utility for code chunks
1863         (WTF::dataAllocatorInstance): getter for data allocator instance
1864         (WTF::OSAllocator::reserveUncommitted):
1865         (WTF::OSAllocator::releaseDecommitted):
1866         (WTF::OSAllocator::commit):
1867         (WTF::OSAllocator::decommit):
1868         (WTF::OSAllocator::reserveAndCommit):
1869         (WTF::PageAllocatorSymbian::PageAllocatorSymbian): maps requests 
1870         to one underlying Symbian chunk
1871         (WTF::PageAllocatorSymbian::~PageAllocatorSymbian):
1872         (WTF::PageAllocatorSymbian::reserve):
1873         (WTF::PageAllocatorSymbian::release):
1874         (WTF::PageAllocatorSymbian::commit):
1875         (WTF::PageAllocatorSymbian::decommit):
1876         (WTF::PageAllocatorSymbian::contains):
1877         * wtf/PageAllocatorSymbian.h: Added.
1878         (WTF::SymbianChunk::SymbianChunk): wrapper around RChunk  
1879         (WTF::SymbianChunk::~SymbianChunk):
1880         (WTF::SymbianChunk::contains):
1881         
1882 2011-02-19  Yong Li  <yoli@rim.com>
1883
1884         Reviewed by Eric Seidel.
1885
1886         https://bugs.webkit.org/show_bug.cgi?id=54687
1887         When being built with armcc, "int" bit fields are treated as
1888         unsigned integers, which will fail the comparisons like "m_offset == -1".
1889         Using "signed" fixes the problem.
1890
1891         * assembler/ARMAssembler.h:
1892         * assembler/ARMv7Assembler.h:
1893
1894 2011-02-18  Geoffrey Garen  <ggaren@apple.com>
1895
1896         Reviewed by Sam Weinig.
1897
1898         Made MarkedSpace block iteration size-class agnostic
1899         https://bugs.webkit.org/show_bug.cgi?id=54792
1900         
1901         SunSpider reports no change.
1902
1903         * runtime/MarkedSpace.cpp:
1904         (JSC::MarkedSpace::clearMarks):
1905         (JSC::MarkedSpace::sweep):
1906         (JSC::MarkedSpace::objectCount):
1907         (JSC::MarkedSpace::size):
1908         (JSC::MarkedSpace::capacity):
1909         * runtime/MarkedSpace.h:
1910         (JSC::MarkedSpace::forEach): Iterate blocks in hashing order instead of
1911         size class list order. This is a much simpler convention in a world
1912         of many different size classes.
1913
1914 2011-02-18  Kristian Amlie  <kristian.amlie@nokia.com>
1915
1916         Reviewed by Andreas Kling.
1917
1918         Added friend exception to Qt platform, which also compiles Windows.
1919
1920         QtWebKit fails to compile on Windows XP with msvc-2008
1921         https://bugs.webkit.org/show_bug.cgi?id=54746
1922
1923         * bytecode/CodeBlock.h:
1924         * runtime/RegExpObject.h:
1925
1926 2011-02-18  Geoffrey Garen  <ggaren@apple.com>
1927
1928         (Rolled back in r79022 with crash fixed.)
1929
1930         Reviewed by Sam Weinig.
1931
1932         Use hashing instead of linear search in the conservative pointer test
1933         https://bugs.webkit.org/show_bug.cgi?id=54767
1934         
1935         SunSpider reports no change.
1936
1937         * runtime/MarkedSpace.cpp:
1938         (JSC::MarkedSpace::destroy): No need to explicitly clear the blocks array,
1939         since freeBlock removes items for us.
1940
1941         (JSC::MarkedSpace::freeBlock): Fixed a typo that always removed the last
1942         block from the block set instead of the block being freed. Changed to
1943         remove a block from our data structures before deallocating it, since
1944         this is slightly cleaner.
1945
1946         * runtime/MarkedSpace.h:
1947         (JSC::MarkedSpace::contains): Variable-sized objects will use more,
1948         smaller blocks, so it's important for the contains check not to be O(n)
1949         in the number of blocks.
1950
1951 2011-02-18  chris reiss  <christopher.reiss@nokia.com>
1952
1953         Reviewed by Andreas Kling.
1954
1955         REGRESSION: Date.parse("Tue Nov 23 20:40:05 2010 GMT") returns NaN
1956         https://bugs.webkit.org/show_bug.cgi?id=49989
1957
1958         updated test fast/js/script-tests/date-parse-test.js
1959
1960         * wtf/DateMath.cpp:
1961         (WTF::parseDateFromNullTerminatedCharacters):
1962
1963 2011-02-18  Sheriff Bot  <webkit.review.bot@gmail.com>
1964
1965         Unreviewed, rolling out r79022.
1966         http://trac.webkit.org/changeset/79022
1967         https://bugs.webkit.org/show_bug.cgi?id=54775
1968
1969         It broke the whole world (Requested by Ossy on #webkit).
1970
1971         * runtime/MarkedSpace.h:
1972         (JSC::MarkedSpace::contains):
1973
1974 2011-02-18  Yael Aharon  <yael.aharon@nokia.com>
1975
1976         Reviewed by Dave Hyatt.
1977
1978         Add support for dir=auto
1979         https://bugs.webkit.org/show_bug.cgi?id=50916
1980
1981         Change defaultWritingDirection() to return if the writing direction
1982         was determined from a letter with strong directionality or not.
1983
1984         * JavaScriptCore.exp:
1985         * JavaScriptCore.order:
1986         * wtf/text/StringImpl.cpp:
1987         (WTF::StringImpl::defaultWritingDirection):
1988         * wtf/text/StringImpl.h:
1989         * wtf/text/WTFString.h:
1990         (WTF::String::defaultWritingDirection):
1991
1992 2011-02-18  Geoffrey Garen  <ggaren@apple.com>
1993
1994         Reviewed by Sam Weinig.
1995
1996         Use hashing instead of linear search in the conservative pointer test
1997         https://bugs.webkit.org/show_bug.cgi?id=54767
1998         
1999         SunSpider reports no change.
2000
2001         * runtime/MarkedSpace.h:
2002         (JSC::MarkedSpace::contains): Variable-sized objects will use more,
2003         smaller blocks, so it's important for the contains check not to be O(n)
2004         in the number of blocks.
2005
2006 2011-02-18  Geoffrey Garen  <ggaren@apple.com>
2007
2008         Reviewed by Sam Weinig.
2009
2010         Tightened some usage accounting code in MarkedSpace
2011         https://bugs.webkit.org/show_bug.cgi?id=54761
2012         
2013         SunSpider reports no change.
2014
2015         * runtime/Heap.cpp:
2016         (JSC::Heap::Heap): Initialize the marked space high water mark on
2017         construction, instead of relying on some implicit subtleties to make
2018         not initializing it work out OK.
2019
2020         * runtime/Heap.h: Fixed up includes.
2021
2022         * runtime/MarkedBlock.h: Made firstAtom() static so clients can call it
2023         even without having allocated a block.
2024
2025         * runtime/MarkedSpace.cpp:
2026         (JSC::MarkedSpace::MarkedSpace): Don't pre-allocate a block, since this
2027         would be prohibitively expensive with multiple size classes.
2028
2029         (JSC::MarkedSpace::allocateBlock):
2030         (JSC::MarkedSpace::freeBlock): Track allocated blocks in a hash set,
2031         since linear search in the contains check will be prohibitively
2032         expensive once we're using lots of smaller blocks.
2033
2034         (JSC::MarkedSpace::allocate): Don't assume that we always have a block
2035         allocated, since we don't anymore. (See above.)
2036
2037         (JSC::MarkedSpace::reset):
2038         * runtime/MarkedSpace.h: Updated for changes mentioned above.
2039
2040 2011-02-17  Geoffrey Garen  <ggaren@apple.com>
2041
2042         Reviewed by Sam Weinig.
2043
2044         Made object allocation secretly variable-sized (Shhhh!)
2045         https://bugs.webkit.org/show_bug.cgi?id=54721
2046         
2047         SunSpider reports no change.
2048         
2049         Internally, MarkedBlock now makes variable-sized allocations, even
2050         though MarkedSpace doesn't take advantage of this yet.
2051
2052         * runtime/MarkedBlock.cpp:
2053         (JSC::MarkedBlock::MarkedBlock): No need to ASSERT that allocations are
2054         fixed-sized.
2055
2056         * runtime/MarkedBlock.h: Shrunk the atom size so we can allocate things
2057         that are not multiples of 64 bytes.
2058
2059 2011-02-17  Geoffrey Garen  <ggaren@apple.com>
2060
2061         Reviewed by Sam Weinig.
2062
2063         Fixed some math errors when when using variable-sized cells
2064         https://bugs.webkit.org/show_bug.cgi?id=54717
2065         
2066         SunSpider reports no change.
2067         
2068         Computer Science Barbie says, "Math is not so hard afterall!"
2069
2070         * runtime/JSCell.h:
2071         (JSC::JSCell::MarkedBlock::allocate): Round up when calculating the
2072         minimum number of atoms required for a cell, since rounding down
2073         will get you splinched.
2074
2075         * runtime/MarkedBlock.cpp:
2076         (JSC::MarkedBlock::MarkedBlock):
2077         (JSC::MarkedBlock::sweep):
2078         * runtime/MarkedBlock.h:
2079         (JSC::MarkedBlock::forEach): Changed a bunch of != tests to < tests
2080         because m_endAtom is actually a fuzzy end -- iterating from firstAtom()
2081         may not hit m_endAtom exactly.
2082
2083 2011-02-17  Geoffrey Garen  <ggaren@apple.com>
2084
2085         Reviewed by Sam Weinig.
2086
2087         A little more abstraction for MarkedSpace::contains
2088         https://bugs.webkit.org/show_bug.cgi?id=54715
2089
2090         * runtime/MarkedBlock.h:
2091         (JSC::MarkedBlock::contains): Added a contains function, so MarkedSpace
2092         doesn't have to know how MarkedBlock tracks containment internally.
2093
2094         * runtime/MarkedSpace.h:
2095         (JSC::MarkedSpace::contains): Call through to MarkedBlock to figure out
2096         if a cell that seems to be in a block is valid.
2097
2098 2011-02-17  Geoffrey Garen  <ggaren@apple.com>
2099
2100         Reviewed by Sam Weinig.
2101
2102         Removed the invariant that the last cell in a block is always marked
2103         https://bugs.webkit.org/show_bug.cgi?id=54713
2104         
2105         SunSpider reports no change.
2106         
2107         This adds one branch to allocation, but simplifies the mark invariant,
2108         especially in a world of variable-sized cells. Now, it really is true
2109         that any cell whose mark bit is set is a valid, live cell whose
2110         constructor has run and whose destructor has not run.
2111
2112         * runtime/JSCell.h: 
2113         (JSC::JSCell::MarkedBlock::allocate): Changed this do-while into a while
2114         since we can no longer rely on a set mark bit to break out of this loop
2115         before it reaches the end of the block.
2116
2117         * runtime/MarkedBlock.cpp:
2118         (JSC::MarkedBlock::MarkedBlock):
2119         (JSC::MarkedBlock::sweep): 
2120         * runtime/MarkedBlock.h:
2121         (JSC::MarkedBlock::isEmpty):
2122         (JSC::MarkedBlock::clearMarks):
2123         (JSC::MarkedBlock::markCount):
2124         (JSC::MarkedBlock::forEach): No need to set a special last mark bit.
2125
2126 2011-02-17  Sheriff Bot  <webkit.review.bot@gmail.com>
2127
2128         Unreviewed, rolling out r78856 and r78907.
2129         http://trac.webkit.org/changeset/78856
2130         http://trac.webkit.org/changeset/78907
2131         https://bugs.webkit.org/show_bug.cgi?id=54705
2132
2133         These seem to break tests on 32-bit builds. (Requested by
2134         aroben on #webkit).
2135
2136         * JavaScriptCore.xcodeproj/project.pbxproj:
2137         * collector/handles/Global.h:
2138         (JSC::Global::internalSet):
2139         * collector/handles/Handle.h:
2140         (JSC::HandleTypes::getFromSlot):
2141         (JSC::HandleTypes::toJSValue):
2142         (JSC::HandleTypes::validateUpcast):
2143         (JSC::HandleConverter::operator->):
2144         (JSC::HandleConverter::operator*):
2145         (JSC::Handle::Handle):
2146         (JSC::Handle::get):
2147         * runtime/JSArray.cpp:
2148         (JSC::JSArray::sortNumeric):
2149         * runtime/JSObject.h:
2150         (JSC::JSObject::inlineGetOwnPropertySlot):
2151         * runtime/SlotAccessor.h: Removed.
2152         * runtime/WeakGCPtr.h:
2153         (JSC::WeakGCPtr::get):
2154         (JSC::WeakGCPtr::internalSet):
2155         * runtime/WriteBarrier.h:
2156         (JSC::DeprecatedPtr::DeprecatedPtr):
2157         (JSC::DeprecatedPtr::get):
2158         (JSC::DeprecatedPtr::operator*):
2159         (JSC::DeprecatedPtr::operator->):
2160         (JSC::DeprecatedPtr::slot):
2161         (JSC::DeprecatedPtr::operator UnspecifiedBoolType*):
2162         (JSC::DeprecatedPtr::operator!):
2163         (JSC::WriteBarrierBase::set):
2164         (JSC::WriteBarrierBase::get):
2165         (JSC::WriteBarrierBase::operator*):
2166         (JSC::WriteBarrierBase::operator->):
2167         (JSC::WriteBarrierBase::clear):
2168         (JSC::WriteBarrierBase::slot):
2169         (JSC::WriteBarrierBase::operator UnspecifiedBoolType*):
2170         (JSC::WriteBarrierBase::operator!):
2171         (JSC::WriteBarrierBase::setWithoutWriteBarrier):
2172         (JSC::WriteBarrier::WriteBarrier):
2173
2174 2011-02-17  Csaba Osztrogon√°c  <ossy@webkit.org>
2175
2176         Unreviewed.
2177
2178         [Qt] Buildfix.
2179
2180         * wtf/RetainPtr.h: Add missing PLATFORM(CF) guard.
2181
2182 2011-02-17  Geoffrey Garen  <ggaren@apple.com>
2183
2184         Reviewed by Oliver Hunt.
2185
2186         Made MarkedBlock variable-sized
2187         https://bugs.webkit.org/show_bug.cgi?id=54692
2188         
2189         SunSpider reports no change.
2190         
2191         Each MarkedBlock is now composed of a set of fixed-sized atoms, with one
2192         mark bit per atom. A given cell may be composed of one or more atoms.
2193         
2194         * runtime/Heap.cpp:
2195         (JSC::Heap::allocate): Made fixed-sizedness a property of MarkedSpace,
2196         bubbling it up from MarkedBlock, since MarkedBlock now supports variable-
2197         sizedness.
2198
2199         * runtime/JSCell.h:
2200         (JSC::JSCell::MarkedBlock::allocate): Removed use of CELLS_PER_BLOCK and
2201         (implicit) one constants -- these quantities are not constant anymore.
2202         Updated for switch from cell to atom.
2203
2204         * runtime/MarkedBlock.cpp:
2205         (JSC::MarkedBlock::create):
2206         (JSC::MarkedBlock::destroy):
2207         (JSC::MarkedBlock::MarkedBlock):
2208         (JSC::MarkedBlock::sweep):
2209         * runtime/MarkedBlock.h:
2210         (JSC::MarkedBlock::firstAtom):
2211         (JSC::MarkedBlock::atoms):
2212         (JSC::MarkedBlock::isAtomAligned):
2213         (JSC::MarkedBlock::blockFor):
2214         (JSC::MarkedBlock::isEmpty):
2215         (JSC::MarkedBlock::clearMarks):
2216         (JSC::MarkedBlock::size):
2217         (JSC::MarkedBlock::capacity):
2218         (JSC::MarkedBlock::atomNumber):
2219         (JSC::MarkedBlock::isMarked):
2220         (JSC::MarkedBlock::testAndSetMarked):
2221         (JSC::MarkedBlock::setMarked):
2222         (JSC::MarkedBlock::forEach): Same as above. Also removed use of CELL_SIZE
2223         and BLOCK_SIZE, and switched away from calling arbitrary pointers cells.
2224
2225         * runtime/MarkedSpace.cpp:
2226         (JSC::MarkedSpace::MarkedSpace):
2227         (JSC::MarkedSpace::allocateBlock):
2228         (JSC::MarkedSpace::allocate):
2229         (JSC::MarkedSpace::reset):
2230         * runtime/MarkedSpace.h:
2231         (JSC::CollectorHeap::CollectorHeap):
2232         (JSC::MarkedSpace::contains): Updated for renames. Made fixed-sizedness
2233         a property of MarkedSpace.
2234
2235 2011-02-17  Oliver Hunt  <oliver@apple.com>
2236
2237         Attempt to fix windows build
2238
2239         * runtime/WriteBarrier.h:
2240
2241 2011-02-17  Oliver Hunt  <oliver@apple.com>
2242
2243         Reviewed by Geoffrey Garen.
2244
2245         Refactor WriteBarrier and DeprecatedPtr to have less code duplication.
2246         https://bugs.webkit.org/show_bug.cgi?id=54608
2247
2248         Make use of the tricks used for Handle, et al to avoid duplicating all
2249         of the logic for DeprecatedPtr and WriteBarrier simply to support known
2250         vs. unknown types.
2251
2252         * JavaScriptCore.xcodeproj/project.pbxproj:
2253         * collector/handles/Global.h:
2254         (JSC::Global::internalSet):
2255         * collector/handles/Handle.h:
2256         (JSC::Handle::Handle):
2257         (JSC::Handle::get):
2258         * runtime/JSArray.cpp:
2259         (JSC::JSArray::sortNumeric):
2260         * runtime/JSObject.h:
2261         (JSC::JSObject::inlineGetOwnPropertySlot):
2262         * runtime/SlotAccessor.h: Added.
2263         (JSC::SlotTypes::getFromBaseType):
2264         (JSC::SlotTypes::convertToBaseType):
2265         (JSC::SlotTypes::getFromSlot):
2266         (JSC::SlotTypes::toJSValue):
2267         (JSC::SlotTypes::validateUpcast):
2268         (JSC::SlotAccessor::operator->):
2269         (JSC::SlotAccessor::operator*):
2270         * runtime/WeakGCPtr.h:
2271         (JSC::WeakGCPtr::get):
2272         (JSC::WeakGCPtr::internalSet):
2273         * runtime/WriteBarrier.h:
2274         (JSC::DeprecatedPtr::DeprecatedPtr):
2275         (JSC::DeprecatedPtr::get):
2276         (JSC::DeprecatedPtr::slot):
2277         (JSC::DeprecatedPtr::operator=):
2278         (JSC::WriteBarrierTranslator::convertToStorage):
2279         (JSC::WriteBarrierTranslator::convertFromStorage):
2280         (JSC::WriteBarrierBase::set):
2281         (JSC::WriteBarrierBase::get):
2282         (JSC::WriteBarrierBase::clear):
2283         (JSC::WriteBarrierBase::slot):
2284         (JSC::WriteBarrierBase::operator UnspecifiedBoolType*):
2285         (JSC::WriteBarrierBase::operator!):
2286         (JSC::WriteBarrierBase::setWithoutWriteBarrier):
2287         (JSC::WriteBarrier::WriteBarrier):
2288
2289 2011-02-17  Kevin Ollivier  <kevino@theolliviers.com>
2290
2291         [wx] Revert incorrect blind fix and restore previous working code.
2292
2293         * wtf/wx/StringWx.cpp:
2294         (WTF::String::String):
2295
2296 2011-02-16  Geoffrey Garen  <ggaren@apple.com>
2297
2298         Reviewed by Maciej Stachowiak.
2299
2300         Intermittent crashes beneath MarkStack::drain
2301         https://bugs.webkit.org/show_bug.cgi?id=54614
2302         <rdar://problem/8971070>
2303         
2304         The crashes were caused by a GC happening after the global object's
2305         property table had grown (due to compilation), but before the properties
2306         had been fully initialized by program execution.
2307
2308         * bytecompiler/BytecodeGenerator.cpp:
2309         (JSC::BytecodeGenerator::BytecodeGenerator): Explicitly resize the global
2310         object's register storage immediately, without waiting for program
2311         execution to do it for us. This ensures that the global object's count
2312         of global variables is consistent with the size of its global variable
2313         storage at all times, and it ensures that all global variables are
2314         properly initialized from the get-go.
2315
2316         * runtime/JSGlobalObject.cpp:
2317         (JSC::JSGlobalObject::resizeRegisters):
2318         * runtime/JSGlobalObject.h: Added a helper function for growing the
2319         global object's register storage, and initializing new registers.
2320
2321 == Rolled over to ChangeLog-2011-02-16 ==