Source/JavaScriptCore: Build fix attempt after r89885.
[WebKit-https.git] / Source / JavaScriptCore / ChangeLog
1 2011-06-27  Ryosuke Niwa  <rniwa@webkit.org>
2
3         Build fix attempt after r89885.
4
5         * JavaScriptCore.exp:
6         * jsc.cpp:
7
8 2011-06-27  Oliver Hunt  <oliver@apple.com>
9
10         Reviewed by Geoffrey Garen.
11
12         Support throwing away non-running code even while other code is running
13         https://bugs.webkit.org/show_bug.cgi?id=63485
14
15         Add a function to CodeBlock to support unlinking direct linked callsites,
16         and then with that in place add logic to discard code from any function
17         that is not currently on the stack.
18
19         The unlinking completely reverts any optimized call sites, such that they
20         may be relinked again in future.
21
22         * JavaScriptCore.exp:
23         * bytecode/CodeBlock.cpp:
24         (JSC::CodeBlock::unlinkCalls):
25         (JSC::CodeBlock::clearEvalCache):
26         * bytecode/CodeBlock.h:
27         (JSC::CallLinkInfo::CallLinkInfo):
28         (JSC::CallLinkInfo::unlink):
29         * bytecode/EvalCodeCache.h:
30         (JSC::EvalCodeCache::clear):
31         * heap/Heap.cpp:
32         (JSC::Heap::getConservativeRegisterRoots):
33         * heap/Heap.h:
34         * jit/JIT.cpp:
35         (JSC::JIT::privateCompile):
36         * jit/JIT.h:
37         * jit/JITCall.cpp:
38         (JSC::JIT::compileOpCall):
39         * jit/JITWriteBarrier.h:
40         (JSC::JITWriteBarrierBase::clear):
41         * jsc.cpp:
42         (GlobalObject::GlobalObject):
43         (functionReleaseExecutableMemory):
44         * runtime/Executable.cpp:
45         (JSC::EvalExecutable::unlinkCalls):
46         (JSC::ProgramExecutable::unlinkCalls):
47         (JSC::FunctionExecutable::discardCode):
48         (JSC::FunctionExecutable::unlinkCalls):
49         * runtime/Executable.h:
50         * runtime/JSGlobalData.cpp:
51         (JSC::SafeRecompiler::returnValue):
52         (JSC::SafeRecompiler::operator()):
53         (JSC::JSGlobalData::releaseExecutableMemory):
54
55 2011-06-27  Gavin Barraclough  <barraclough@apple.com>
56
57         Reviewed by Darin Adler & Oliver Hunt.
58
59         https://bugs.webkit.org/show_bug.cgi?id=50554
60         RegExp.prototype.toString does not escape slashes
61
62         The problem here is that we don't escape forwards slashes when converting
63         a RegExp to a string. This means that RegExp("/").toString() is "///",
64         which is not a valid RegExp literal. Also, we return an invalid literal
65         for RegExp.prototype.toString() ("//", which is an empty single-line comment).
66
67         From ES5:
68         "NOTE: The returned String has the form of a RegularExpressionLiteral that
69         evaluates to another RegExp object with the same behaviour as this object."
70
71         * runtime/RegExpObject.cpp:
72         (JSC::regExpObjectSource):
73             - Escape forward slashes when getting the source of a RegExp.
74         * runtime/RegExpPrototype.cpp:
75         (JSC::regExpProtoFuncToString):
76             - Remove unnecessary and erroneous hack to return "//" as the string
77             representation of RegExp.prototype. This is not a valid RegExp literal
78             (it is an empty single-line comment).
79
80 2011-06-27  Gavin Barraclough  <barraclough@apple.com>
81
82         Reviewed by Oliver Hunt.
83
84         https://bugs.webkit.org/show_bug.cgi?id=63497
85         Add DEBUG_WITH_BREAKPOINT support to the DFG JIT.
86
87         * dfg/DFGByteCodeParser.cpp:
88         (JSC::DFG::ByteCodeParser::parseBlock):
89         * dfg/DFGNode.h:
90         * dfg/DFGNonSpeculativeJIT.cpp:
91         (JSC::DFG::NonSpeculativeJIT::compile):
92         * dfg/DFGSpeculativeJIT.cpp:
93         (JSC::DFG::SpeculativeJIT::compile):
94
95 2011-06-27  Juan C. Montemayor  <jmont@apple.com>
96
97         Reviewed by Mark Rowe.
98
99         Indirectly including TextPosition.h and XPathGrammar.h causes compile errors
100         https://bugs.webkit.org/show_bug.cgi?id=63392
101         
102         When both TextPosition.h and XPathGrammar.h are included a compile-error
103         is caused, since XPathGrammar.h defines a macro called NUMBER and 
104         TextPosition has a typedef named NUMBER.
105
106         * wtf/text/TextPosition.h:
107         (WTF::TextPosition::TextPosition):
108         (WTF::TextPosition::minimumPosition):
109         (WTF::TextPosition::belowRangePosition):
110
111 2011-06-27  Filip Pizlo  <fpizlo@apple.com>
112
113         Reviewed by Gavin Barraclough.
114
115         DFG JIT does not perform put_by_id caching.
116         https://bugs.webkit.org/show_bug.cgi?id=63409
117
118         * bytecode/StructureStubInfo.h:
119         * dfg/DFGJITCodeGenerator.cpp:
120         (JSC::DFG::JITCodeGenerator::cachedPutById):
121         * dfg/DFGJITCodeGenerator.h:
122         * dfg/DFGJITCompiler.cpp:
123         (JSC::DFG::JITCompiler::compileFunction):
124         * dfg/DFGJITCompiler.h:
125         (JSC::DFG::JITCompiler::addPropertyAccess):
126         (JSC::DFG::JITCompiler::PropertyAccessRecord::PropertyAccessRecord):
127         * dfg/DFGNonSpeculativeJIT.cpp:
128         (JSC::DFG::NonSpeculativeJIT::compile):
129         * dfg/DFGOperations.cpp:
130         * dfg/DFGOperations.h:
131         * dfg/DFGRepatch.cpp:
132         (JSC::DFG::dfgRepatchByIdSelfAccess):
133         (JSC::DFG::tryCacheGetByID):
134         (JSC::DFG::appropriatePutByIdFunction):
135         (JSC::DFG::tryCachePutByID):
136         (JSC::DFG::dfgRepatchPutByID):
137         * dfg/DFGRepatch.h:
138         * dfg/DFGSpeculativeJIT.cpp:
139         (JSC::DFG::SpeculativeJIT::compile):
140
141 2011-06-27  Gustavo Noronha Silva  <gns@gnome.org>
142
143         Unreviewed build fix. One more filed missing during distcheck, for
144         the MIPS build.
145
146         * GNUmakefile.list.am:
147
148 2011-06-26  Filip Pizlo  <fpizlo@apple.com>
149
150         Reviewed by Gavin Barraclough.
151
152         DFG non-speculative JIT has potentially harmful speculations with respect to arithmetic operations.
153         https://bugs.webkit.org/show_bug.cgi?id=63347
154
155         * dfg/DFGNonSpeculativeJIT.cpp:
156             - Changed arithmetic operations to speculate in favor of integers.
157         (JSC::DFG::NonSpeculativeJIT::valueToNumber):
158         (JSC::DFG::NonSpeculativeJIT::knownConstantArithOp):
159         (JSC::DFG::NonSpeculativeJIT::basicArithOp):
160         (JSC::DFG::NonSpeculativeJIT::compile):
161         * dfg/DFGNonSpeculativeJIT.h:
162         * dfg/DFGOperations.cpp:
163             - Added slow-path routines for arithmetic that perform no speculation; the
164               non-speculative JIT will generate calls to these in cases where its
165               speculation fails.
166         * dfg/DFGOperations.h:
167
168 2011-06-24  Nikolas Zimmermann  <nzimmermann@rim.com>
169
170         Reviewed by Rob Buis.
171
172         Integrate SVG Fonts within GlyphPage concept, removing the special SVG code paths from Font, making it possible to reuse the simple text code path for SVG Fonts
173         https://bugs.webkit.org/show_bug.cgi?id=59085
174
175         * wtf/Platform.h: Force Qt-EWS into a full rebuild, otherwhise this patch breaks the EWS.
176
177 2011-06-24  Michael Saboff  <msaboff@apple.com>
178
179         Reviewed by Gavin Barraclough.
180
181         Arm Assembler, Immediate stack offset values truncated to 8 bits for add & sub
182         https://bugs.webkit.org/show_bug.cgi?id=63345
183
184         The methods ARMThumbImmediate::getUInt9 and ARMThumbImmediate::getUInt10
185         return 9 and 10 bit quantities, therefore changed their return type from
186         uint8_t to uint16_t.  Also casted the places where they are used as they
187         are currently shifted and used as 7 or 8 bit values.
188
189         These methods are currently used for literals for stack offsets, 
190         including creating and destroying stack frames.  The prior truncation of
191         the upper bits caused stack frames to be too small, thus allowing a
192         JIT'ed function to access and overwrite stack space outside of the
193         incorrectly sized stack frame.
194
195         * assembler/ARMv7Assembler.h:
196         (JSC::ARMThumbImmediate::getUInt9):
197         (JSC::ARMThumbImmediate::getUInt10):
198         (JSC::ARMv7Assembler::add):
199         (JSC::ARMv7Assembler::ldr):
200         (JSC::ARMv7Assembler::str):
201         (JSC::ARMv7Assembler::sub):
202         (JSC::ARMv7Assembler::sub_S):
203
204 2011-06-24  Michael Saboff  <msaboff@apple.com>
205
206         Reviewed by Geoffrey Garen.
207
208         releaseFastMallocFreeMemory doesn't adjust free counts for scavenger
209         https://bugs.webkit.org/show_bug.cgi?id=63015
210
211         Added code to adjust class TCMalloc_PageHeap variables free_committed_pages_ and
212         min_free_committed_pages_since_last_scavenge_ in ReleaseFreeList().  These 
213         adjustments are a bug.  These need to reflect the pages that are released
214         in ReleaseFreeLsit so that scavenge doesn't try to free that many pages as well.
215         Made ReleaseFreeList a member of TCMalloc_PageHeap in the process.  Updated
216         Check() and helper method CheckList() to check the number of actual free pages
217         with free_committed_pages_.
218
219         The symptom of the problem of the existing code is that the scavenger may
220         run unneccesarily without any real work to do, i.e. pages on the free lists.
221         The scanvenger would also end up freeing too many pages, that is going below 
222         the current 528 target free pages.
223
224         Note that the style of the changes was kept consistent with the
225         existing style.
226
227         * wtf/FastMalloc.cpp:
228         (WTF::TCMalloc_PageHeap::Check):
229         (WTF::TCMalloc_PageHeap::CheckList):
230         (WTF::TCMalloc_PageHeap::ReleaseFreeList):
231
232 2011-06-24  Abhishek Arya  <inferno@chromium.org>
233
234         Reviewed by Darin Adler.
235
236         Match other clampTo* functions in style with clampToInteger(float)
237         function.
238         https://bugs.webkit.org/show_bug.cgi?id=53449
239
240         * wtf/MathExtras.h:
241         (clampToInteger):
242         (clampToFloat):
243         (clampToPositiveInteger):
244
245 2011-06-24  Sheriff Bot  <webkit.review.bot@gmail.com>
246
247         Unreviewed, rolling out r89594.
248         http://trac.webkit.org/changeset/89594
249         https://bugs.webkit.org/show_bug.cgi?id=63316
250
251         It broke 5 tests on the Qt bot (Requested by Ossy_DC on
252         #webkit).
253
254         * GNUmakefile.list.am:
255         * JavaScriptCore.gypi:
256         * icu/unicode/uscript.h: Removed.
257         * wtf/unicode/ScriptCodesFromICU.h: Removed.
258         * wtf/unicode/brew/UnicodeBrew.h:
259         * wtf/unicode/glib/UnicodeGLib.h:
260         * wtf/unicode/icu/UnicodeIcu.h:
261         * wtf/unicode/qt4/UnicodeQt4.h:
262         * wtf/unicode/wince/UnicodeWinCE.h:
263
264 2011-06-23  Filip Pizlo  <fpizlo@apple.com>
265
266         Reviewed by Gavin Barraclough.
267
268         DFG non-speculative JIT should have obvious optimizations for GetById and GetByVal
269         https://bugs.webkit.org/show_bug.cgi?id=63173
270
271         * dfg/DFGJITCodeGenerator.cpp:
272         (JSC::DFG::JITCodeGenerator::cachedGetById):
273         * dfg/DFGJITCodeGenerator.h:
274         * dfg/DFGNonSpeculativeJIT.cpp:
275         (JSC::DFG::NonSpeculativeJIT::compile):
276         * dfg/DFGSpeculativeJIT.cpp:
277         (JSC::DFG::SpeculativeJIT::compile):
278
279 2011-06-23  Oliver Hunt  <oliver@apple.com>
280
281         Fix Qt again.
282
283         * assembler/ARMAssembler.h:
284         (JSC::ARMAssembler::readPointer):
285
286 2011-06-23  Oliver Hunt  <oliver@apple.com>
287
288         Fix Qt Build
289
290         * assembler/ARMAssembler.h:
291         (JSC::ARMAssembler::readPointer):
292
293 2011-06-23  Stephanie Lewis  <slewis@apple.com>
294
295         Reviewed by Darin Adler.
296
297         https://bugs.webkit.org/show_bug.cgi?id=63298
298         Replace Malloc with FastMalloc to match the rest of wtf.
299
300         * wtf/BlockStack.h:
301         (WTF::::~BlockStack):
302         (WTF::::grow):
303         (WTF::::shrink):
304
305 2011-06-23  Oliver Hunt  <oliver@apple.com>
306
307         Reviewed by Gavin Barraclough.
308
309         Add the ability to dynamically modify linked call sites
310         https://bugs.webkit.org/show_bug.cgi?id=63291
311
312         Add JITWriteBarrier as a writebarrier class that allows
313         reading and writing directly into the code stream.
314
315         This required adding logic to all the assemblers to allow
316         us to read values back out of the instruction stream.
317
318         * JavaScriptCore.xcodeproj/project.pbxproj:
319         * assembler/ARMAssembler.h:
320         (JSC::ARMAssembler::readPointer):
321         * assembler/ARMv7Assembler.h:
322         (JSC::ARMv7Assembler::readPointer):
323         (JSC::ARMv7Assembler::readInt32):
324         (JSC::ARMv7Assembler::decodeTwoWordOp5i6Imm4Reg4EncodedImmFirst):
325         (JSC::ARMv7Assembler::decodeTwoWordOp5i6Imm4Reg4EncodedImmSecond):
326         * assembler/AbstractMacroAssembler.h:
327         (JSC::AbstractMacroAssembler::readPointer):
328         * assembler/MIPSAssembler.h:
329         (JSC::MIPSAssembler::readInt32):
330         (JSC::MIPSAssembler::readPointer):
331         * assembler/MacroAssemblerCodeRef.h:
332         (JSC::MacroAssemblerCodePtr::operator!):
333         * assembler/SH4Assembler.h:
334         (JSC::SH4Assembler::readPCrelativeAddress):
335         (JSC::SH4Assembler::readPointer):
336         (JSC::SH4Assembler::readInt32):
337         * assembler/X86Assembler.h:
338         (JSC::X86Assembler::readPointer):
339         * bytecode/CodeBlock.cpp:
340         (JSC::CodeBlock::visitAggregate):
341         * bytecode/CodeBlock.h:
342         (JSC::MethodCallLinkInfo::seenOnce):
343         (JSC::MethodCallLinkInfo::setSeen):
344         * heap/MarkStack.h:
345         * jit/JIT.cpp:
346         (JSC::JIT::privateCompile):
347         (JSC::JIT::linkCall):
348         (JSC::JIT::linkConstruct):
349         * jit/JITPropertyAccess.cpp:
350         (JSC::JIT::patchMethodCallProto):
351         * jit/JITPropertyAccess32_64.cpp:
352         * jit/JITWriteBarrier.h: Added.
353         (JSC::JITWriteBarrierBase::operator UnspecifiedBoolType*):
354         (JSC::JITWriteBarrierBase::operator!):
355         (JSC::JITWriteBarrierBase::setFlagOnBarrier):
356         (JSC::JITWriteBarrierBase::isFlagged):
357         (JSC::JITWriteBarrierBase::setLocation):
358         (JSC::JITWriteBarrierBase::location):
359         (JSC::JITWriteBarrierBase::JITWriteBarrierBase):
360         (JSC::JITWriteBarrierBase::set):
361         (JSC::JITWriteBarrierBase::get):
362         (JSC::JITWriteBarrier::JITWriteBarrier):
363         (JSC::JITWriteBarrier::set):
364         (JSC::JITWriteBarrier::get):
365         (JSC::MarkStack::append):
366
367 2011-06-23  Gavin Barraclough  <barraclough@apple.com>
368
369         Reviewed by Oliver Hunt.
370
371         https://bugs.webkit.org/show_bug.cgi?id=61585
372         Crash running regexp /(?:(?=g))|(?:m).{2147483648,}/
373
374         This is due to use of int instead of unsigned, bad math around
375         the 2^31 boundary.
376
377         * yarr/YarrInterpreter.cpp:
378         (JSC::Yarr::ByteCompiler::emitDisjunction):
379             - Change some uses of int to unsigned, refactor compare logic to
380               restrict to the range 0..2^32-1 (rather than -2^32-1..2^32-1).
381         * yarr/YarrJIT.cpp:
382         (JSC::Yarr::YarrGenerator::generate):
383         (JSC::Yarr::YarrGenerator::backtrack):
384             - Ditto.
385
386 2011-06-22  Gavin Barraclough  <barraclough@apple.com>
387
388         Reviewed by Sam Weinig.
389
390         https://bugs.webkit.org/show_bug.cgi?id=63218
391         DFG JIT - remove machine type guarantees from graph
392
393         The DFG JIT currently makes assumptions about the types of machine registers
394         that certain nodes will be loaded into. This will be broken as we generate
395         nodes to produce both integer and double code paths. Remove int<->double
396         conversions nodes. This design decision also gave rise to multiple types of
397         constant nodes, requiring separate handling for each type. Merge these back
398         into JSConstant.
399
400         * dfg/DFGAliasTracker.h:
401         (JSC::DFG::AliasTracker::equalIgnoringLaterNumericConversion):
402         * dfg/DFGByteCodeParser.cpp:
403         (JSC::DFG::ByteCodeParser::getToInt32):
404         (JSC::DFG::ByteCodeParser::getToNumber):
405         (JSC::DFG::ByteCodeParser::toInt32):
406         (JSC::DFG::ByteCodeParser::toNumber):
407         (JSC::DFG::ByteCodeParser::isInt32Constant):
408         (JSC::DFG::ByteCodeParser::isDoubleConstant):
409         (JSC::DFG::ByteCodeParser::valueOfInt32Constant):
410         (JSC::DFG::ByteCodeParser::valueOfDoubleConstant):
411         (JSC::DFG::ByteCodeParser::one):
412         (JSC::DFG::ByteCodeParser::predictInt32):
413         * dfg/DFGGraph.cpp:
414         (JSC::DFG::Graph::dump):
415         * dfg/DFGJITCodeGenerator.h:
416         (JSC::DFG::JITCodeGenerator::silentFillGPR):
417         (JSC::DFG::JITCodeGenerator::silentFillFPR):
418         (JSC::DFG::JITCodeGenerator::isJSConstant):
419         (JSC::DFG::JITCodeGenerator::isDoubleConstant):
420         (JSC::DFG::JITCodeGenerator::valueOfJSConstantAsImmPtr):
421         * dfg/DFGJITCompiler.cpp:
422         (JSC::DFG::JITCompiler::fillNumericToDouble):
423         (JSC::DFG::JITCompiler::fillInt32ToInteger):
424         * dfg/DFGJITCompiler.h:
425         (JSC::DFG::JITCompiler::isJSConstant):
426         (JSC::DFG::JITCompiler::isInt32Constant):
427         (JSC::DFG::JITCompiler::isDoubleConstant):
428         (JSC::DFG::JITCompiler::valueOfJSConstant):
429         (JSC::DFG::JITCompiler::valueOfInt32Constant):
430         (JSC::DFG::JITCompiler::valueOfDoubleConstant):
431         * dfg/DFGNode.h:
432         (JSC::DFG::Node::Node):
433         (JSC::DFG::Node::isConstant):
434         (JSC::DFG::Node::notTakenBytecodeOffset):
435         * dfg/DFGNonSpeculativeJIT.cpp:
436         (JSC::DFG::NonSpeculativeJIT::isKnownInteger):
437         (JSC::DFG::NonSpeculativeJIT::isKnownNumeric):
438         (JSC::DFG::NonSpeculativeJIT::compile):
439         * dfg/DFGSpeculativeJIT.cpp:
440         (JSC::DFG::SpeculativeJIT::fillSpeculateIntInternal):
441         (JSC::DFG::SpeculativeJIT::fillSpeculateCell):
442         (JSC::DFG::SpeculativeJIT::compilePeepHoleIntegerBranch):
443         (JSC::DFG::SpeculativeJIT::compile):
444
445 2011-06-23  Jungshik Shin  <jshin@chromium.org>
446
447         Reviewed by Alexey Proskuryakov.
448
449         Add ScriptCodesFromICU.h to wtf/unicode and make necessary changes in
450         build files for ports not using ICU.
451         Add icu/unicode/uscript.h for ports using ICU. It's taken from 
452         ICU 3.6 (the version used on Mac OS 10.5)
453
454         http://bugs.webkit.org/show_bug.cgi?id=20797
455
456         * GNUmakefile.list.am:
457         * JavaScriptCore.gypi:
458         * icu/unicode/uscript.h: Added for UScriptCode enum.
459         * wtf/unicode/ScriptCodesFromICU.h: UScriptCode enum added.
460         * wtf/unicode/icu/UnicodeIcu.h:
461         * wtf/unicode/brew/UnicodeBrew.h:
462         * wtf/unicode/glib/UnicodeGLib.h:
463         * wtf/unicode/qt4/UnicodeQt4.h:
464         * wtf/unicode/wince/UnicodeWinCE.h:
465
466 2011-06-23  Ryuan Choi  <ryuan.choi@samsung.com>
467
468         Reviewed by Andreas Kling.
469
470         [EFL][WK2] Add PLATFORM(EFL) to use UNIX_DOMAIN_SOCKETS.
471         https://bugs.webkit.org/show_bug.cgi?id=63228
472
473         * wtf/Platform.h: Add PLATFORM(EFL) guard.
474
475 2011-06-23  Sheriff Bot  <webkit.review.bot@gmail.com>
476
477         Unreviewed, rolling out r89547.
478         http://trac.webkit.org/changeset/89547
479         https://bugs.webkit.org/show_bug.cgi?id=63252
480
481         "Chrmium crash on start" (Requested by yurys on #webkit).
482
483         * wtf/DynamicAnnotations.cpp:
484         (WTFAnnotateBenignRaceSized):
485         (WTFAnnotateHappensBefore):
486         (WTFAnnotateHappensAfter):
487         * wtf/DynamicAnnotations.h:
488
489 2011-06-23  Timur Iskhodzhanov  <timurrrr@google.com>
490
491         Reviewed by David Levin.
492
493         Make dynamic annotations weak symbols and prevent identical code folding by the linker
494         https://bugs.webkit.org/show_bug.cgi?id=62443
495
496         * wtf/DynamicAnnotations.cpp:
497         (WTFAnnotateBenignRaceSized):
498         (WTFAnnotateHappensBefore):
499         (WTFAnnotateHappensAfter):
500         * wtf/DynamicAnnotations.h:
501
502 2011-06-22  Yael Aharon  <yael.aharon@nokia.com>
503
504         Reviewed by Andreas Kling.
505
506         [Qt] Add a build flag for building with libxml2 and libxslt.
507         https://bugs.webkit.org/show_bug.cgi?id=63113
508
509         * wtf/Platform.h:
510
511 2011-06-22  Sheriff Bot  <webkit.review.bot@gmail.com>
512
513         Unreviewed, rolling out r89489.
514         http://trac.webkit.org/changeset/89489
515         https://bugs.webkit.org/show_bug.cgi?id=63203
516
517         Broke chromium mac build on build.webkit.org (Requested by
518         abarth on #webkit).
519
520         * wtf/Platform.h:
521
522 2011-06-22  Cary Clark  <caryclark@google.com>
523
524         Reviewed by Darin Fisher.
525
526         Use Skia if Skia on Mac Chrome is enabled
527         https://bugs.webkit.org/show_bug.cgi?id=62999
528
529         * wtf/Platform.h:
530         Add switch to use Skia if, externally,
531         Skia has been enabled by a gyp define.
532
533 2011-06-22  Geoffrey Garen  <ggaren@apple.com>
534
535         Reviewed by Oliver Hunt.
536
537         * interpreter/RegisterFile.h: Removed unnecessary #include <stdio.h>.
538
539 2011-06-22  Geoffrey Garen  <ggaren@apple.com>
540
541         Reviewed by Oliver Hunt.
542
543         Removed the conceit that global variables are local variables when running global code
544         https://bugs.webkit.org/show_bug.cgi?id=63106
545         
546         This is required for write barrier correctness.
547         
548         SunSpider reports about a 0.5% regression, mostly from bitops-bitwise-and.js.
549         I was able to reduce the regression with a tiny peephole optimization in
550         the bytecompiler, but not eliminate it. I'm committing this assuming
551         that turning on generational GC will win back at least 0.5%.
552
553         (FWIW, the DFG JIT can easily eliminate any regression by sharing loads of
554         the global object's var storage. I considered doing the same kind of
555         optimization in the existing JIT, but it seemed like moving in the wrong
556         direction.)
557
558         * bytecompiler/BytecodeGenerator.cpp:
559         (JSC::BytecodeGenerator::addGlobalVar):
560         (JSC::BytecodeGenerator::BytecodeGenerator): Don't give global variables
561         negative indices, since they're no longer negatively offset from the
562         current stack frame.
563         
564         Do give global variables monotonically increasing positive indices, since
565         that's much easier to work with.
566         
567         Don't limit the number of optimizable global variables, since it's no
568         longer limited by the register file, since they're no longer stored in
569         the register file.
570
571         (JSC::BytecodeGenerator::registerFor): Global code never has any local
572         registers because a var in global code is actually a property of the
573         global object.
574
575         (JSC::BytecodeGenerator::constRegisterFor): Ditto.
576
577         (JSC::BytecodeGenerator::emitResolve): Did a tiny bit of constant
578         propagation and dead code elimination to speed up our compiles and
579         reduce WTFs / minute.
580
581         * bytecompiler/BytecodeGenerator.h:
582         (JSC::BytecodeGenerator::registerFor): Removed special handling of globals.
583
584         (JSC::BytecodeGenerator::shouldOptimizeLocals): Don't optimize locals in
585         global code, since there are none.
586
587         (JSC::BytecodeGenerator::canOptimizeNonLocals): Do optimize non-locals
588         in global code (i.e., global vars), since there are some.
589
590         * interpreter/Interpreter.cpp:
591         (JSC::Interpreter::callEval):
592         (JSC::Interpreter::Interpreter):
593         (JSC::Interpreter::dumpRegisters):
594         (JSC::Interpreter::execute):
595         * interpreter/Interpreter.h: Updated for deleted / renamed code.
596
597         * interpreter/RegisterFile.cpp:
598         (JSC::RegisterFile::gatherConservativeRoots):
599         (JSC::RegisterFile::releaseExcessCapacity): Updated for deleted / renamed
600         data members.
601
602         * interpreter/RegisterFile.h:
603         (JSC::RegisterFile::begin):
604         (JSC::RegisterFile::size):
605         (JSC::RegisterFile::RegisterFile):
606         (JSC::RegisterFile::shrink): Removed all code and comments dealing with
607         global variables stored in the register file.
608
609         (JSC::RegisterFile::grow): Updated for same.
610         
611         Also, a slight correctness fix: Test the VM commit end, and not just the
612         in-use end, when checking for stack overflow. In theory, it's invalid to
613         commit past the end of your allocation, even if you never touch that
614         memory. This makes the usable size of the stack slightly smaller. No test
615         because we don't know of any case in practice where this crashes.
616
617         * runtime/JSGlobalData.cpp:
618         (JSC::JSGlobalData::JSGlobalData): Updated for changes above.
619
620         * runtime/JSGlobalObject.cpp:
621         (JSC::JSGlobalObject::resizeRegisters):
622         (JSC::JSGlobalObject::addStaticGlobals):
623         * runtime/JSGlobalObject.h: Simplified globals to have monotonically 
624         increasing indexes, always located in our external storage.
625
626 2011-06-21  MORITA Hajime  <morrita@google.com>
627
628         Unreviewed, rolling out r89401 and r89403.
629         http://trac.webkit.org/changeset/89401
630         http://trac.webkit.org/changeset/89403
631         https://bugs.webkit.org/show_bug.cgi?id=62970
632
633         Breaks mac build and mistakenly enables the spellcheck API
634
635         * Configurations/FeatureDefines.xcconfig:
636         * JavaScriptCore.xcodeproj/project.pbxproj:
637
638 2011-06-21  Kent Tamura  <tkent@chromium.org>
639
640         [Mac] Sort Xcode project files.
641
642         * JavaScriptCore.xcodeproj/project.pbxproj:
643
644 2011-06-20  MORITA Hajime  <morrita@google.com>
645
646         Reviewed by Kent Tamura.
647
648         Spellcheck API should be build-able.
649         https://bugs.webkit.org/show_bug.cgi?id=62970
650
651         No new tests, changing only build related files
652         
653         * Configurations/FeatureDefines.xcconfig:
654
655 2011-06-21  Geoffrey Garen  <ggaren@apple.com>
656
657         Reviewed by Oliver Hunt.
658
659         Moved 'const' off the global-variable-as-local-variable crack pipe
660         https://bugs.webkit.org/show_bug.cgi?id=63105
661         
662         This is necessary for moving the rest of the code off of same.
663         
664         Many problems remain in our handling of const. I have fixed none of them.
665
666         * bytecompiler/BytecodeGenerator.h:
667         (JSC::BytecodeGenerator::scopeChain): New accessor, needed to enable
668         const to directly implement its unique scoping rules.
669
670         * bytecompiler/NodesCodegen.cpp:
671         (JSC::PrefixResolveNode::emitBytecode): Do specify that our resolve is
672         for writing, so we don't overwrite const variables.
673
674         (JSC::ConstDeclNode::emitCodeSingle): Don't assume that all declared const
675         variables are available as local variables, since this won't be the case
676         once global variables are not available as local variables. Instead, use
677         put_scoped_var in the case where there is no local variable. Like a local
678         variable, put_scoped_var succeeds even though const properties are
679         read-only, since put_scoped_var skips read-only checks. (Yay?)
680
681 2011-06-21  Oliver Hunt  <oliver@apple.com>
682
683         Reviewed by Alexey Proskuryakov.
684
685         REGRESSION(r89257): It broke 2 jscore tests (Requested by Ossy_away on #webkit).
686         https://bugs.webkit.org/show_bug.cgi?id=63052
687
688         Release mode only failure, the stack overflow guards were getting there error
689         handling inlined, so that they were essentially causing their own demise.
690
691         * parser/JSParser.cpp:
692         (JSC::JSParser::updateErrorMessage):
693         (JSC::JSParser::updateErrorWithNameAndMessage):
694
695 2011-06-20  Kenneth Russell  <kbr@google.com>
696
697         Unreviewed.
698
699         Rolled out r89233 and r89235 because of crashes in http/tests/misc/acid3.html on Snow Leopard and other platforms
700         https://bugs.webkit.org/show_bug.cgi?id=63022
701
702         * wtf/Platform.h:
703
704 2011-06-18  Anders Carlsson  <andersca@apple.com>
705
706         Reviewed by Darin Adler.
707
708         Disallow assigning into PassOwnArrayPtr, PassOwnPtr and PassRefPtr
709         https://bugs.webkit.org/show_bug.cgi?id=62940
710
711         Remove clear() and all assignment operators except one which now has a COMPILE_ASSERT.
712
713         * wtf/PassOwnArrayPtr.h:
714         (WTF::PassOwnArrayPtr::operator=):
715         * wtf/PassOwnPtr.h:
716         (WTF::PassOwnPtr::operator=):
717         * wtf/PassRefPtr.h:
718         (WTF::PassRefPtr::operator=):
719         (WTF::NonNullPassRefPtr::operator=):
720
721 2011-06-20  Oliver Hunt  <oliver@apple.com>
722
723         Reviewed by Darin Adler.
724
725         REGRESSION (r79060): Searching for a flight at united.com fails
726         https://bugs.webkit.org/show_bug.cgi?id=63003
727
728         This original change also broke Twitter, and we attempted to refine the fix to 
729         address that problem (http://trac.webkit.org/changeset/80542), but since it still breaks United,
730         we need to revert the change until we understand the problem better.
731
732         * wtf/DateMath.cpp:
733         (WTF::parseDateFromNullTerminatedCharacters):
734
735 2011-06-20  Juan C. Montemayor  <jmont@apple.com>
736
737         Reviewed by Oliver Hunt.
738
739         No context for javascript parse errors.
740         https://bugs.webkit.org/show_bug.cgi?id=62613
741         
742         Parse errors now show more details like:
743         "Unexpected token: ]"
744         or
745         "Expected token: while"
746         
747         For reserved names, numbers, indentifiers, strings, lexer errors, 
748         and EOFs, the following error messages are printed:
749         
750         "Use of reserved word: super"
751         "Unexpected number: 42"
752         "Unexpected identifier: "
753         "Unexpected string: "foobar""
754         "Invalid token character sequence: \u4023"
755         "Unexpected EOF"
756
757         * parser/JSParser.cpp:
758         (JSC::JSParser::consume):
759         (JSC::JSParser::getToken):
760         (JSC::JSParser::getTokenName):
761         (JSC::JSParser::updateErrorMessageSpecialCase):
762         (JSC::JSParser::updateErrorMessage):
763         (JSC::JSParser::updateErrorWithNameAndMessage):
764         (JSC::jsParse):
765         (JSC::JSParser::JSParser):
766         (JSC::JSParser::parseProgram):
767         (JSC::JSParser::parseVarDeclarationList):
768         (JSC::JSParser::parseForStatement):
769         (JSC::JSParser::parseBreakStatement):
770         (JSC::JSParser::parseContinueStatement):
771         (JSC::JSParser::parseWithStatement):
772         (JSC::JSParser::parseTryStatement):
773         (JSC::JSParser::parseStatement):
774         (JSC::JSParser::parseFormalParameters):
775         (JSC::JSParser::parseFunctionInfo):
776         (JSC::JSParser::parseAssignmentExpression):
777         (JSC::JSParser::parsePrimaryExpression):
778         (JSC::JSParser::parseMemberExpression):
779         (JSC::JSParser::parseUnaryExpression):
780         * parser/JSParser.h:
781         * parser/Lexer.cpp:
782         (JSC::Lexer::lex):
783         * parser/Parser.cpp:
784         (JSC::Parser::parse):
785
786 2011-06-20  Nikolas Zimmermann  <nzimmermann@rim.com>
787
788         Reviewed by Rob Buis.
789
790         Integrate SVG Fonts within GlyphPage concept, removing the special SVG code paths from Font, making it possible to reuse the simple text code path for SVG Fonts
791         https://bugs.webkit.org/show_bug.cgi?id=59085
792
793         * wtf/Platform.h: Force Qt-EWS into a full rebuild, otherwhise this patch breaks the EWS.
794
795 2011-06-19  Oliver Hunt  <oliver@apple.com>
796
797         Reviewed by Sam Weinig.
798
799         Correct logic for putting errors on the correct line when handling JSONP
800         https://bugs.webkit.org/show_bug.cgi?id=62962
801
802         Minor fix for the minor fix.  *sigh*
803
804         * interpreter/Interpreter.cpp:
805         (JSC::Interpreter::execute):
806
807 2011-06-19  Oliver Hunt  <oliver@apple.com>
808
809         Minor fix to correct layout test results.
810
811         * interpreter/Interpreter.cpp:
812         (JSC::Interpreter::execute):
813
814 2011-06-17  Oliver Hunt  <oliver@apple.com>
815
816         Reviewed by Gavin Barraclough.
817
818         JSONP is unnecessarily slow
819         https://bugs.webkit.org/show_bug.cgi?id=62920
820
821         JSONP has unfortunately become a fairly common idiom online, yet
822         it triggers very poor performance in JSC as we end up doing codegen
823         for a large number of property accesses that will
824            * only be run once, so the vast amount of logic we dump to handle
825              caching of accesses is unnecessary.
826            * We are doing codegen that is directly proportional to just
827              creating the object in the first place.
828
829         This patch extends the use of the literal parser to JSONP-like structures
830         in global code, handling a number of different forms I have seen online.
831         In an extreme case this improves performance of JSONP by more than 2x
832         due to removal of code generation and execution time, and a few optimisations
833         that I made to the parser itself.
834
835         * API/JSValueRef.cpp:
836         (JSValueMakeFromJSONString):
837         * interpreter/Interpreter.cpp:
838         (JSC::Interpreter::callEval):
839         (JSC::Interpreter::execute):
840         * parser/Lexer.cpp:
841         (JSC::Lexer::isKeyword):
842         * parser/Lexer.h:
843         * runtime/JSGlobalObjectFunctions.cpp:
844         (JSC::globalFuncEval):
845         * runtime/JSONObject.cpp:
846         (JSC::JSONProtoFuncParse):
847         * runtime/LiteralParser.cpp:
848         (JSC::LiteralParser::tryJSONPParse):
849         (JSC::LiteralParser::makeIdentifier):
850         (JSC::LiteralParser::Lexer::lex):
851         (JSC::LiteralParser::Lexer::next):
852         (JSC::isSafeStringCharacter):
853         (JSC::LiteralParser::Lexer::lexString):
854         (JSC::LiteralParser::Lexer::lexNumber):
855         (JSC::LiteralParser::parse):
856         * runtime/LiteralParser.h:
857         (JSC::LiteralParser::LiteralParser):
858         (JSC::LiteralParser::tryLiteralParse):
859         (JSC::LiteralParser::Lexer::Lexer):
860
861 2011-06-18  Sheriff Bot  <webkit.review.bot@gmail.com>
862
863         Unreviewed, rolling out r89184.
864         http://trac.webkit.org/changeset/89184
865         https://bugs.webkit.org/show_bug.cgi?id=62927
866
867         It broke 22 tests on all bot (Requested by Ossy_weekend on
868         #webkit).
869
870         * API/JSValueRef.cpp:
871         (JSValueMakeFromJSONString):
872         * interpreter/Interpreter.cpp:
873         (JSC::Interpreter::callEval):
874         (JSC::Interpreter::execute):
875         * parser/Lexer.cpp:
876         * parser/Lexer.h:
877         * runtime/JSGlobalObjectFunctions.cpp:
878         (JSC::globalFuncEval):
879         * runtime/JSONObject.cpp:
880         (JSC::JSONProtoFuncParse):
881         * runtime/LiteralParser.cpp:
882         (JSC::LiteralParser::Lexer::lex):
883         (JSC::isSafeStringCharacter):
884         (JSC::LiteralParser::Lexer::lexString):
885         (JSC::LiteralParser::Lexer::lexNumber):
886         (JSC::LiteralParser::parse):
887         * runtime/LiteralParser.h:
888         (JSC::LiteralParser::LiteralParser):
889         (JSC::LiteralParser::tryLiteralParse):
890         (JSC::LiteralParser::Lexer::Lexer):
891         (JSC::LiteralParser::Lexer::next):
892
893 2011-06-17  Oliver Hunt  <oliver@apple.com>
894
895         Reviewed by Gavin Barraclough.
896
897         JSONP is unnecessarily slow
898         https://bugs.webkit.org/show_bug.cgi?id=62920
899
900         JSONP has unfortunately become a fairly common idiom online, yet
901         it triggers very poor performance in JSC as we end up doing codegen
902         for a large number of property accesses that will
903            * only be run once, so the vast amount of logic we dump to handle
904              caching of accesses is unnecessary.
905            * We are doing codegen that is directly proportional to just
906              creating the object in the first place.
907
908         This patch extends the use of the literal parser to JSONP-like structures
909         in global code, handling a number of different forms I have seen online.
910         In an extreme case this improves performance of JSONP by more than 2x
911         due to removal of code generation and execution time, and a few optimisations
912         that I made to the parser itself.
913
914         * API/JSValueRef.cpp:
915         (JSValueMakeFromJSONString):
916         * interpreter/Interpreter.cpp:
917         (JSC::Interpreter::callEval):
918         (JSC::Interpreter::execute):
919         * parser/Lexer.cpp:
920         (JSC::Lexer::isKeyword):
921         * parser/Lexer.h:
922         * runtime/JSGlobalObjectFunctions.cpp:
923         (JSC::globalFuncEval):
924         * runtime/JSONObject.cpp:
925         (JSC::JSONProtoFuncParse):
926         * runtime/LiteralParser.cpp:
927         (JSC::LiteralParser::tryJSONPParse):
928         (JSC::LiteralParser::makeIdentifier):
929         (JSC::LiteralParser::Lexer::lex):
930         (JSC::LiteralParser::Lexer::next):
931         (JSC::isSafeStringCharacter):
932         (JSC::LiteralParser::Lexer::lexString):
933         (JSC::LiteralParser::Lexer::lexNumber):
934         (JSC::LiteralParser::parse):
935         * runtime/LiteralParser.h:
936         (JSC::LiteralParser::LiteralParser):
937         (JSC::LiteralParser::tryLiteralParse):
938         (JSC::LiteralParser::Lexer::Lexer):
939
940 2011-06-17  Geoffrey Garen  <ggaren@apple.com>
941
942         Reviewed by Oliver Hunt.
943
944         Moved some property access JIT code into property access JIT files
945         https://bugs.webkit.org/show_bug.cgi?id=62906
946
947         * jit/JITOpcodes.cpp:
948         * jit/JITOpcodes32_64.cpp:
949         * jit/JITPropertyAccess.cpp:
950         (JSC::JIT::emitSlow_op_put_by_val):
951         (JSC::JIT::emit_op_get_scoped_var):
952         (JSC::JIT::emit_op_put_scoped_var):
953         (JSC::JIT::emit_op_get_global_var):
954         (JSC::JIT::emit_op_put_global_var):
955         * jit/JITPropertyAccess32_64.cpp:
956         (JSC::JIT::emit_op_get_scoped_var):
957         (JSC::JIT::emit_op_put_scoped_var):
958         (JSC::JIT::emit_op_get_global_var):
959         (JSC::JIT::emit_op_put_global_var):
960
961 2011-06-17  Anders Carlsson  <andersca@apple.com>
962
963         Build fix.
964
965         * JavaScriptCore.xcodeproj/project.pbxproj:
966
967 2011-06-17  Geoffrey Garen  <ggaren@apple.com>
968
969         Try to fix the Leopard build?
970
971         * JavaScriptCore.xcodeproj/project.pbxproj:
972
973 2011-06-16  Geoffrey Garen  <ggaren@apple.com>
974
975         Reviewed by Oliver Hunt.
976
977         Added some write barrier action, compiled out by default
978         https://bugs.webkit.org/show_bug.cgi?id=62844
979
980         * JavaScriptCore.exp: Build!
981
982         * JavaScriptCore.xcodeproj/project.pbxproj: Fixed an incremental build
983         issue with Heap.cpp.
984
985         * heap/Heap.cpp:
986         (JSC::Heap::writeBarrierSlowCase):
987         * heap/Heap.h:
988         (JSC::Heap::writeBarrier):
989         * heap/MarkedBlock.h:
990         (JSC::MarkedBlock::isAtomAligned):
991         (JSC::MarkedBlock::blockFor):
992         (JSC::MarkedBlock::atomNumber):
993         (JSC::MarkedBlock::ownerSetNumber):
994         (JSC::MarkedBlock::addOldSpaceOwner):
995         (JSC::MarkedBlock::OwnerSet::OwnerSet):
996         (JSC::MarkedBlock::OwnerSet::add):
997         (JSC::MarkedBlock::OwnerSet::clear):
998         (JSC::MarkedBlock::OwnerSet::size):
999         (JSC::MarkedBlock::OwnerSet::didOverflow):
1000         (JSC::MarkedBlock::OwnerSet::owners): Added a basic write barrier that
1001         tracks owners for regions within blocks. Currently unused.
1002
1003 2011-06-17  Raphael Kubo da Costa  <kubo@profusion.mobi>
1004
1005         Reviewed by Eric Seidel.
1006
1007         [EFL] Add some OwnPtr specializations for EFL types.
1008         For now there are specializations for Ecore_Evas and Evas_Object.
1009         https://bugs.webkit.org/show_bug.cgi?id=62877
1010
1011         * wtf/CMakeListsEfl.txt:
1012         * wtf/OwnPtrCommon.h:
1013         * wtf/efl/OwnPtrEfl.cpp: Added.
1014         (WTF::deleteOwnedPtr):
1015
1016 2011-06-17  Joone Hur  <joone.hur@collabora.co.uk>
1017
1018         Reviewed by Martin Robinson.
1019
1020         [GTK] Replace GdkRectangle by cairo_rectangle_int_t
1021         https://bugs.webkit.org/show_bug.cgi?id=60687
1022
1023         Replace GdkRectangle by cairo_rectangle_int_t.
1024
1025         * wtf/gobject/GTypedefs.h: Replace GdkRectangle by cairo_rectangle_int_t.
1026
1027 2011-06-16  Gavin Barraclough  <barraclough@apple.com>
1028
1029         Reviewed by Oliver Hunt.
1030
1031         https://bugs.webkit.org/show_bug.cgi?id=53014
1032         ES5 strict mode keyword restrictions aren't implemented
1033
1034         The following are future restricted words is strict mode code:
1035             implements, interface, let, package, private, protected, public, static, yield
1036
1037         * parser/JSParser.h:
1038             - Add RESERVED_IF_STRICT token.
1039         * parser/Keywords.table:
1040             - Add new future restricted words.
1041         * parser/Lexer.cpp:
1042         (JSC::Lexer::parseIdentifier):
1043             - Check for RESERVED_IF_STRICT; in nonstrict code this is converted to IDENT.
1044         (JSC::Lexer::lex):
1045             - Pass strictMode flag to parseIdentifier.
1046         * parser/Lexer.h:
1047             - parseIdentifier needs a strictMode flag.
1048         * runtime/CommonIdentifiers.h:
1049             - Add identifiers for new reserved words.
1050
1051 2011-06-16  Gavin Barraclough  <barraclough@apple.com>
1052
1053         Reviewed by Oliver Hunt.
1054
1055         https://bugs.webkit.org/show_bug.cgi?id=23611
1056         Multiline Javascript comments cause incorrect parsing of following script.
1057
1058         From the spec:
1059         "A MultiLineComment [is] simply discarded if it contains no line terminator,
1060         but if a MultiLineComment contains one or more line terminators, then it is
1061         replaced with a single line terminator, which becomes part of the stream of
1062         inputs for the syntactic grammar." 
1063
1064         This may result in behavioural changes, due to automatic semicolon insertion.
1065
1066         * parser/Lexer.cpp:
1067         (JSC::Lexer::parseMultilineComment):
1068             - Set m_terminator is we see a line terminator in a multiline comment.
1069
1070 2011-06-16  Gavin Barraclough  <barraclough@apple.com>
1071
1072         Reviewed by Sam Weinig.
1073
1074         https://bugs.webkit.org/show_bug.cgi?id=62824
1075         DFG JIT - add support for branch-fusion of compareEq, JSValue comparisons in SpeculativeJIT
1076
1077         CompareEq of non-integer values is the most common cause of speculation failure.
1078
1079         * dfg/DFGSpeculativeJIT.cpp:
1080         (JSC::DFG::SpeculativeJIT::compilePeepHoleIntegerBranch):
1081             - Support Equals.
1082         (JSC::DFG::SpeculativeJIT::compilePeepHoleEq):
1083             - new! - peephole optimized Eq of JSValues.
1084         (JSC::DFG::SpeculativeJIT::compile):
1085             - Add peephole optimization for CompareEq.
1086         * dfg/DFGSpeculativeJIT.h:
1087         (JSC::DFG::SpeculativeJIT::detectPeepHoleBranch):
1088             - Add support for dead nodes between compare & branch.
1089         (JSC::DFG::SpeculativeJIT::isInteger):
1090             - Added to determine which form of peephole to do in CompareEq.
1091
1092 2011-06-16  Geoffrey Garen  <ggaren@apple.com>
1093
1094         Try to fix the Windows build.
1095
1096         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export another
1097         symbol.
1098
1099         * bytecode/EvalCodeCache.h:
1100         * heap/HandleHeap.h:
1101         * heap/HeapRootVisitor.h:
1102         * heap/NewSpace.h:
1103         * runtime/ArgList.h:
1104         * runtime/ScopeChain.h:
1105         * runtime/SmallStrings.h:
1106         * runtime/Structure.h: Stop forward-declaring things that don't really
1107         exist anymore.
1108
1109 2011-06-16  Geoffrey Garen  <ggaren@apple.com>
1110
1111         Try to fix the Mac build: Removed and re-added SlotVisitor.h to the Xcode
1112         project while crossing my fingers and facing west.
1113
1114         * JavaScriptCore.xcodeproj/project.pbxproj:
1115
1116 2011-06-16  Geoffrey Garen  <ggaren@apple.com>
1117
1118         Build fix: Removed an incorrect symbol on Windows.
1119
1120         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1121
1122 2011-06-16  Geoffrey Garen  <ggaren@apple.com>
1123
1124         Build fix: Removed an accidental commit from the future.
1125
1126         * CMakeLists.txt:
1127
1128 2011-06-16  Geoffrey Garen  <ggaren@apple.com>
1129
1130         Reviewed by Oliver Hunt.
1131
1132         Introduced SlotVisitor into the project
1133         https://bugs.webkit.org/show_bug.cgi?id=62820
1134         
1135         This resolves a class vs typedef forward declaration issue, and gives all
1136         exported symbols the correct names.
1137
1138         * CMakeLists.txt:
1139         * GNUmakefile.list.am:
1140         * JavaScriptCore.exp:
1141         * JavaScriptCore.gypi:
1142         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1143         * JavaScriptCore.xcodeproj/project.pbxproj: Build!
1144
1145         * bytecode/EvalCodeCache.h:
1146         * heap/HandleHeap.h:
1147         * heap/Heap.cpp:
1148         (JSC::Heap::Heap):
1149         (JSC::Heap::markRoots):
1150         * heap/Heap.h:
1151         * heap/HeapRootVisitor.h: Replaced MarkStack with SlotVisitor. Now no
1152         clients operate on a MarkStack.
1153
1154         * heap/MarkStack.cpp:
1155         (JSC::SlotVisitor::visitChildren):
1156         (JSC::SlotVisitor::drain):
1157         * heap/SlotVisitor.h: Added.
1158         (JSC::SlotVisitor::SlotVisitor): Used 'protected' and a little cheesy
1159         inheritance to give SlotVisitor all the attributes of MarkStack without
1160         making this change giant. Over time, we will move more behavior into
1161         SlotVisitor and its subclasses.
1162
1163         * heap/MarkStack.h:
1164         * heap/NewSpace.h: Replaced MarkStack with SlotVisitor. Now no
1165         clients operate on a MarkStack.
1166
1167         * runtime/ArgList.h:
1168         * runtime/JSCell.h:
1169         * runtime/JSObject.h:
1170         * runtime/ScopeChain.h:
1171         * runtime/SmallStrings.h:
1172         * runtime/Structure.h: Replaced MarkStack with SlotVisitor. Now no
1173         clients operate on a MarkStack.
1174
1175 2011-06-15  Oliver Hunt  <oliver@apple.com>
1176
1177         Reviewed by Geoffrey Garen.
1178
1179         Reduce memory usage of resolve_global
1180         https://bugs.webkit.org/show_bug.cgi?id=62765
1181
1182         If we have a large number of resolve_globals in a single
1183         block start planting plain resolve instructions instead 
1184         whenever we aren't in a loop.  This allows us to reduce
1185         the code size for extremely large functions without
1186         losing the performance benefits of op_resolve_global.
1187
1188         * bytecode/CodeBlock.h:
1189         (JSC::CodeBlock::globalResolveInfoCount):
1190         * bytecompiler/BytecodeGenerator.cpp:
1191         (JSC::BytecodeGenerator::shouldAvoidResolveGlobal):
1192         (JSC::BytecodeGenerator::emitResolve):
1193         (JSC::BytecodeGenerator::emitResolveWithBase):
1194         * bytecompiler/BytecodeGenerator.h:
1195
1196 2011-06-16  Qi Zhang  <qi.2.zhang@nokia.com>
1197
1198         Reviewed by Laszlo Gombos.
1199
1200         [Qt] Fix building with CONFIG(use_system_icu)
1201         https://bugs.webkit.org/show_bug.cgi?id=62744
1202
1203         Do not define WTF_USE_QT4_UNICODE if WTF_USE_ICU_UNICODE is set.
1204
1205         * wtf/Platform.h:
1206
1207 2011-06-15  Darin Adler  <darin@apple.com>
1208
1209         Reviewed by Adam Barth.
1210
1211         Remove obsolete LOOSE_OWN_PTR code
1212         https://bugs.webkit.org/show_bug.cgi?id=59909
1213
1214         The internal Apple dependency on this is gone now.
1215
1216         * wtf/OwnArrayPtr.h: Removed constructor that takes a raw pointer,
1217         set function that takes a raw pointer.
1218
1219         * wtf/OwnPtr.h: Removed constructor that takes a raw pointer,
1220         set functino that takes a raw pointer.
1221
1222         * wtf/PassOwnArrayPtr.h: Made constructor that takes a nullptr
1223         and assignment operator that takes a nullptr unconditional.
1224         Made constructor that takes a raw pointer private and explicit,
1225         and removed assignment operator that takes a raw pointer.
1226
1227         * wtf/PassOwnPtr.h: Made assignment operator that takes a nullptr
1228         unconditional. Made constructor that takes a raw pointer private
1229         and explicit, and removed assignment operator that takes a raw pointer.
1230
1231 2011-06-15  Sam Weinig  <sam@webkit.org>
1232
1233         Reviewed by Geoffrey Garen and Gavin Barraclough.
1234
1235         Make access-nseive ~9x faster on the non-speculative path by
1236         adding special casing for doubles that can lossless-ly be converted
1237         to a uint32_t in getByVal and putByVal. This avoids calls to stringification
1238         and the hash lookup.  Long term, we should try and get property of a getByVal
1239         and putByVal to be an integer immediate even in the non-speculative path.
1240
1241         * dfg/DFGOperations.cpp:
1242         (JSC::DFG::putByVal):
1243         (JSC::DFG::operationPutByValInternal):
1244
1245 2011-06-15  Oliver Hunt  <oliver@apple.com>
1246
1247         Reviewed by Darin Adler.
1248
1249         REGRESSION (r88719): 5by5.tv schedule is not visible
1250         https://bugs.webkit.org/show_bug.cgi?id=62720
1251
1252         Problem here is that the lexer wasn't considering '$' to be
1253         a valid character in an identifier.
1254
1255         * parser/Lexer.h:
1256         (JSC::Lexer::lexExpectIdentifier):
1257
1258 2011-06-15  Oliver Hunt  <oliver@apple.com>
1259
1260         Reviewed by Sam Weinig.
1261
1262         Reduce the size of global_resolve
1263         https://bugs.webkit.org/show_bug.cgi?id=62738
1264
1265         Reduce the code size of global_resolve in the JIT by replacing
1266         multiple pointer loads with a single pointer move + two offset
1267         loads.
1268
1269         * jit/JITOpcodes.cpp:
1270         (JSC::JIT::emit_op_resolve_global):
1271         * jit/JITOpcodes32_64.cpp:
1272         (JSC::JIT::emit_op_resolve_global):
1273
1274 2011-06-14  Geoffrey Garen  <ggaren@apple.com>
1275
1276         Reviewed by Dan Bernstein.
1277
1278         Fixed an inavlid ASSERT I found while investigating
1279         <rdar://problem/9580254> Crash in JSC::HandleHeap::finalizeWeakHandles + 92
1280         https://bugs.webkit.org/show_bug.cgi?id=62699        
1281
1282         No test since we don't know of a way to get WebCore to deallocate the
1283         next-to-finalize handle, which is also the last handle in the list,
1284         while finalizing the second-to-last handle in the list.
1285
1286         * heap/HandleHeap.h:
1287         (JSC::HandleHeap::deallocate): Don't ASSERT that m_nextToFinalize has a
1288         non-0 next() after updating it, since it is valid to update m_nextToFinalize
1289         to point to the tail sentinel.
1290         
1291         Do ASSERT that m_nextToFinalize has a non-0 next() before updating it,
1292         since it is not valid to update m_nextToFinalize to point past the tail
1293         sentinel.
1294         
1295         Also, use m_nextToFinalize consistently for clarity.
1296
1297 2011-06-14  Gavin Barraclough  <barraclough@apple.com>
1298
1299         Reviewed by Sam Weinig.
1300
1301         https://bugs.webkit.org/show_bug.cgi?id=43841
1302         SegmentedVector::operator== typo
1303
1304         * wtf/SegmentedVector.h:
1305         (WTF::SegmentedVectorIterator::operator==):
1306         (WTF::SegmentedVectorIterator::operator!=):
1307
1308 2011-06-14  Oliver Hunt  <oliver@apple.com>
1309
1310         Reviewed by Gavin Barraclough.
1311
1312         Constant array literals result in unnecessarily large amounts of code
1313         https://bugs.webkit.org/show_bug.cgi?id=62658
1314
1315         Add a new version of op_new_array that simply copies values from a buffer
1316         we hang off of the CodeBlock, rather than generating code to place each
1317         entry into the registerfile, and then copying it from the registerfile into
1318         the array.  This is a slight improvement on some sunspider tests, but no
1319         measurable overall change.  That's okay though as our goal was to reduce
1320         code size without hurting performance.
1321
1322         * bytecode/CodeBlock.cpp:
1323         (JSC::CodeBlock::dump):
1324         * bytecode/CodeBlock.h:
1325         (JSC::CodeBlock::addImmediateBuffer):
1326         (JSC::CodeBlock::immediateBuffer):
1327         * bytecode/Opcode.h:
1328         * bytecompiler/BytecodeGenerator.cpp:
1329         (JSC::BytecodeGenerator::addImmediateBuffer):
1330         (JSC::BytecodeGenerator::emitNewArray):
1331         * bytecompiler/BytecodeGenerator.h:
1332         * bytecompiler/NodesCodegen.cpp:
1333         (JSC::ArrayNode::emitBytecode):
1334         * interpreter/Interpreter.cpp:
1335         (JSC::Interpreter::privateExecute):
1336         * jit/JIT.cpp:
1337         (JSC::JIT::privateCompileMainPass):
1338         * jit/JIT.h:
1339         * jit/JITOpcodes.cpp:
1340         (JSC::JIT::emit_op_new_array):
1341         (JSC::JIT::emit_op_new_array_buffer):
1342         * jit/JITOpcodes32_64.cpp:
1343         * jit/JITStubs.cpp:
1344         (JSC::DEFINE_STUB_FUNCTION):
1345         * jit/JITStubs.h:
1346
1347 2011-06-14  Sheriff Bot  <webkit.review.bot@gmail.com>
1348
1349         Unreviewed, rolling out r88841.
1350         http://trac.webkit.org/changeset/88841
1351         https://bugs.webkit.org/show_bug.cgi?id=62672
1352
1353         Caused many tests to crash (Requested by rniwa on #webkit).
1354
1355         * bytecode/CodeBlock.cpp:
1356         (JSC::CodeBlock::dump):
1357         * bytecode/CodeBlock.h:
1358         * bytecode/Opcode.h:
1359         * bytecompiler/BytecodeGenerator.cpp:
1360         (JSC::BytecodeGenerator::emitNewArray):
1361         * bytecompiler/BytecodeGenerator.h:
1362         * bytecompiler/NodesCodegen.cpp:
1363         (JSC::ArrayNode::emitBytecode):
1364         * interpreter/Interpreter.cpp:
1365         (JSC::Interpreter::privateExecute):
1366         * jit/JIT.cpp:
1367         (JSC::JIT::privateCompileMainPass):
1368         * jit/JIT.h:
1369         * jit/JITOpcodes.cpp:
1370         (JSC::JIT::emit_op_new_array):
1371         * jit/JITOpcodes32_64.cpp:
1372         (JSC::JIT::emit_op_new_array):
1373         * jit/JITStubs.cpp:
1374         * jit/JITStubs.h:
1375
1376 2011-06-14  Oliver Hunt  <oliver@apple.com>
1377
1378         Reviewed by Gavin Barraclough.
1379
1380         Constant array literals result in unnecessarily large amounts of code
1381         https://bugs.webkit.org/show_bug.cgi?id=62658
1382
1383         Add a new version of op_new_array that simply copies values from a buffer
1384         we hang off of the CodeBlock, rather than generating code to place each
1385         entry into the registerfile, and then copying it from the registerfile into
1386         the array.  This is a slight improvement on some sunspider tests, but no
1387         measurable overall change.  That's okay though as our goal was to reduce
1388         code size without hurting performance.
1389
1390         * bytecode/CodeBlock.cpp:
1391         (JSC::CodeBlock::dump):
1392         * bytecode/CodeBlock.h:
1393         (JSC::CodeBlock::addImmediateBuffer):
1394         (JSC::CodeBlock::immediateBuffer):
1395         * bytecode/Opcode.h:
1396         * bytecompiler/BytecodeGenerator.cpp:
1397         (JSC::BytecodeGenerator::addImmediateBuffer):
1398         (JSC::BytecodeGenerator::emitNewArray):
1399         * bytecompiler/BytecodeGenerator.h:
1400         * bytecompiler/NodesCodegen.cpp:
1401         (JSC::ArrayNode::emitBytecode):
1402         * interpreter/Interpreter.cpp:
1403         (JSC::Interpreter::privateExecute):
1404         * jit/JIT.cpp:
1405         (JSC::JIT::privateCompileMainPass):
1406         * jit/JIT.h:
1407         * jit/JITOpcodes.cpp:
1408         (JSC::JIT::emit_op_new_array):
1409         (JSC::JIT::emit_op_new_array_buffer):
1410         * jit/JITOpcodes32_64.cpp:
1411         * jit/JITStubs.cpp:
1412         (JSC::DEFINE_STUB_FUNCTION):
1413         * jit/JITStubs.h:
1414
1415 2011-06-14  Stephanie Lewis  <slewis@apple.com>
1416
1417         Rubber stamped by Oliver Hunt.
1418
1419         <rdar://problem/9511169>
1420         Update order files.
1421
1422         * JavaScriptCore.order:
1423
1424 2011-06-14  Sam Weinig  <sam@webkit.org>
1425
1426         Reviewed by Geoffrey Garen.
1427
1428         Fix dumping of constants to have the correct constant number.
1429
1430         * bytecode/CodeBlock.cpp:
1431         (JSC::CodeBlock::dump):
1432
1433 2011-06-14  Benjamin Poulain  <benjamin@webkit.org>
1434
1435         Reviewed by Eric Seidel.
1436
1437         KeywordLookupGenerator's Trie does not work with Python 3
1438         https://bugs.webkit.org/show_bug.cgi?id=62635
1439
1440         With Python 3, dict.items() return an iterator. Since the iterator
1441         protocol changed between Python 2 and 3, the easiest way to get the
1442         values is to have something that use the iterator implicitely, like a
1443         for() loop.
1444
1445         * KeywordLookupGenerator.py:
1446
1447 2011-06-13  Oliver Hunt  <oliver@apple.com>
1448
1449         Reviewed by Gavin Barraclough.
1450
1451         Fix llocp and lvalp names in the lexer to something more meaningful
1452         https://bugs.webkit.org/show_bug.cgi?id=62605
1453
1454         A simple rename
1455
1456         * parser/Lexer.cpp:
1457         (JSC::Lexer::parseIdentifier):
1458         (JSC::Lexer::parseString):
1459         (JSC::Lexer::lex):
1460         * parser/Lexer.h:
1461         (JSC::Lexer::lexExpectIdentifier):
1462
1463 2011-06-13  Oliver Hunt  <oliver@apple.com>
1464
1465         Reviewed by Gavin Barraclough.
1466
1467         Make it possible to inline the common case of identifier lexing
1468         https://bugs.webkit.org/show_bug.cgi?id=62600
1469
1470         Add a lexing function that expects to lex an "normal" alpha numeric
1471         identifier (that ignores keywords) so it's possible to inline the
1472         common parsing cases.  This comes out as a reasonable parsing speed
1473         boost.
1474
1475         * parser/JSParser.cpp:
1476         (JSC::JSParser::nextExpectIdentifier):
1477         (JSC::JSParser::parseProperty):
1478         (JSC::JSParser::parseMemberExpression):
1479         * parser/Lexer.cpp:
1480         * parser/Lexer.h:
1481         (JSC::Lexer::makeIdentifier):
1482         (JSC::Lexer::lexExpectIdentifier):
1483
1484 2011-06-13  Xan Lopez  <xlopez@igalia.com>
1485
1486         Reviewed by Martin Robinson.
1487
1488         Distcheck fixes.
1489
1490         * GNUmakefile.am:
1491         * GNUmakefile.list.am:
1492
1493 2011-06-13  Oliver Hunt  <oliver@apple.com>
1494
1495         Reviewed by Simon Fraser.
1496
1497         Make it possible to inline Identifier::equal
1498         https://bugs.webkit.org/show_bug.cgi?id=62584
1499
1500         Move Identifier::equal to the Identifier header file.
1501
1502         * runtime/Identifier.cpp:
1503         * runtime/Identifier.h:
1504         (JSC::Identifier::equal):
1505
1506 2011-06-13  Tony Chang  <tony@chromium.org>
1507
1508         Reviewed by Dimitri Glazkov.
1509
1510         rename ENABLE_NEW_FLEXBOX to ENABLE_CSS3_FLEXBOX
1511         https://bugs.webkit.org/show_bug.cgi?id=62578
1512
1513         * Configurations/FeatureDefines.xcconfig:
1514
1515 2011-06-13  Tony Chang  <tony@chromium.org>
1516
1517         Reviewed by Adam Barth.
1518
1519         rename ENABLE_FLEXBOX to ENABLE_NEW_FLEXBOX
1520         https://bugs.webkit.org/show_bug.cgi?id=62545
1521
1522         * Configurations/FeatureDefines.xcconfig:
1523
1524 2011-06-12  Patrick Gansterer  <paroga@webkit.org>
1525
1526         Unreviewed. Build fix for !ENABLE(JIT) after r88604.
1527
1528         * bytecode/CodeBlock.cpp:
1529         (JSC::CodeBlock::visitAggregate):
1530
1531 2011-06-11  Gavin Barraclough  <barraclough@apple.com>
1532
1533         Reviewed by Darin Adler.
1534
1535         https://bugs.webkit.org/show_bug.cgi?id=16777
1536
1537         Remove #define NaN per Darin's comments.
1538
1539         * runtime/JSGlobalObjectFunctions.cpp:
1540         (JSC::parseIntOverflow):
1541         (JSC::parseInt):
1542         (JSC::jsStrDecimalLiteral):
1543         (JSC::jsToNumber):
1544         (JSC::parseFloat):
1545         * wtf/DateMath.cpp:
1546         (WTF::equivalentYearForDST):
1547         (WTF::parseES5DateFromNullTerminatedCharacters):
1548         (WTF::parseDateFromNullTerminatedCharacters):
1549         (WTF::timeClip):
1550         (JSC::parseDateFromNullTerminatedCharacters):
1551
1552 2011-06-11  Gavin Barraclough  <barraclough@apple.com>
1553
1554         Rubber stamped by Geoff Garen.
1555
1556         https://bugs.webkit.org/show_bug.cgi?id=62503
1557         Remove JIT_OPTIMIZE_* switches
1558
1559         The alternative code paths are untested, and not well maintained.
1560         These were useful when there was more churn in the JIT, but now
1561         are a maintenance overhead. Time to move on, removing.
1562
1563         * bytecode/CodeBlock.cpp:
1564         (JSC::CodeBlock::visitAggregate):
1565         * jit/JIT.cpp:
1566         (JSC::JIT::privateCompileSlowCases):
1567         (JSC::JIT::privateCompile):
1568         (JSC::JIT::linkConstruct):
1569         * jit/JIT.h:
1570         * jit/JITCall.cpp:
1571         * jit/JITCall32_64.cpp:
1572         * jit/JITOpcodes.cpp:
1573         (JSC::JIT::privateCompileCTIMachineTrampolines):
1574         (JSC::JIT::privateCompileCTINativeCall):
1575         * jit/JITOpcodes32_64.cpp:
1576         (JSC::JIT::privateCompileCTIMachineTrampolines):
1577         (JSC::JIT::privateCompileCTINativeCall):
1578         (JSC::JIT::softModulo):
1579         * jit/JITPropertyAccess.cpp:
1580         * jit/JITPropertyAccess32_64.cpp:
1581         * jit/JITStubs.cpp:
1582         (JSC::DEFINE_STUB_FUNCTION):
1583         * runtime/Lookup.cpp:
1584         (JSC::setUpStaticFunctionSlot):
1585         * runtime/Lookup.h:
1586         * wtf/Platform.h:
1587
1588 2011-06-10  Gavin Barraclough  <barraclough@apple.com>
1589
1590         Reviewed by Sam Weinig.
1591
1592         https://bugs.webkit.org/show_bug.cgi?id=16777
1593         Eliminate JSC::NaN and JSC::Inf
1594
1595         There's no good reason for -K-J-S- JSC to have its own NAN and infinity constants.
1596         The ones in std::numeric_limits are perfectly good.
1597         Remove JSC::Inf, JSC::NaN, switch some cases of (isnan || isinf) to !isfinite.
1598
1599         * API/JSCallbackObjectFunctions.h:
1600         (JSC::::toNumber):
1601         * API/JSValueRef.cpp:
1602         (JSValueMakeNumber):
1603         (JSValueToNumber):
1604         * JavaScriptCore.exp:
1605         * runtime/CachedTranscendentalFunction.h:
1606         (JSC::CachedTranscendentalFunction::initialize):
1607         * runtime/DateConstructor.cpp:
1608         (JSC::constructDate):
1609         * runtime/DateInstanceCache.h:
1610         (JSC::DateInstanceData::DateInstanceData):
1611         (JSC::DateInstanceCache::reset):
1612         * runtime/JSCell.cpp:
1613         * runtime/JSCell.h:
1614         (JSC::JSCell::JSValue::getPrimitiveNumber):
1615         (JSC::JSCell::JSValue::toNumber):
1616         * runtime/JSGlobalData.cpp:
1617         (JSC::JSGlobalData::JSGlobalData):
1618         (JSC::JSGlobalData::resetDateCache):
1619         * runtime/JSGlobalObject.cpp:
1620         (JSC::JSGlobalObject::reset):
1621         * runtime/JSGlobalObjectFunctions.cpp:
1622         (JSC::globalFuncParseInt):
1623         (JSC::globalFuncIsFinite):
1624         * runtime/JSNotAnObject.cpp:
1625         (JSC::JSNotAnObject::toNumber):
1626         * runtime/JSValue.cpp:
1627         * runtime/JSValue.h:
1628         * runtime/JSValueInlineMethods.h:
1629         (JSC::jsNaN):
1630         * runtime/MathObject.cpp:
1631         (JSC::mathProtoFuncMax):
1632         (JSC::mathProtoFuncMin):
1633         * runtime/NumberConstructor.cpp:
1634         (JSC::numberConstructorNegInfinity):
1635         (JSC::numberConstructorPosInfinity):
1636         * runtime/NumberPrototype.cpp:
1637         (JSC::numberProtoFuncToExponential):
1638         (JSC::numberProtoFuncToFixed):
1639         (JSC::numberProtoFuncToPrecision):
1640         (JSC::numberProtoFuncToString):
1641         * runtime/UString.cpp:
1642         * wtf/DecimalNumber.h:
1643         (WTF::DecimalNumber::DecimalNumber):
1644         * wtf/dtoa.cpp:
1645         (WTF::dtoa):
1646
1647 2011-06-10  Tony Chang  <tony@chromium.org>
1648
1649         Reviewed by Ojan Vafai.
1650
1651         add a compile guard ENABLE(FLEXBOX)
1652         https://bugs.webkit.org/show_bug.cgi?id=62049
1653
1654         * Configurations/FeatureDefines.xcconfig:
1655
1656 2011-06-10  Gavin Barraclough  <barraclough@apple.com>
1657
1658         Reviewed by Sam Weinig.
1659
1660         https://bugs.webkit.org/show_bug.cgi?id=55347
1661         "name" and "message" enumerable on *Error.prototype
1662
1663         This arises from chapter 15 of the spec:
1664             "Every other property described in this clause has the attributes
1665             { [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true }
1666             unless otherwise specified."
1667         Standardized properties are not enumerable.
1668
1669         * runtime/ErrorInstance.cpp:
1670         (JSC::ErrorInstance::ErrorInstance):
1671         * runtime/NativeErrorPrototype.cpp:
1672         (JSC::NativeErrorPrototype::NativeErrorPrototype):
1673
1674 2011-06-09  Geoffrey Garen  <ggaren@apple.com>
1675
1676         Build fix: Corrected header spelling.
1677
1678         * heap/OldSpace.h:
1679
1680 2011-06-09  Geoffrey Garen  <ggaren@apple.com>
1681
1682         Reviewed by Oliver Hunt.
1683
1684         Added OldSpace to the project
1685         https://bugs.webkit.org/show_bug.cgi?id=62417
1686         
1687         Currently unused.
1688         
1689         Added OldSpace, the ability to iterate NewSpace vs OldSpace, and a
1690         per-block flag for testing whether you're in NewSpace vs OldSpace.
1691
1692         * CMakeLists.txt:
1693         * GNUmakefile.list.am:
1694         * JavaScriptCore.gypi:
1695         * JavaScriptCore.pro:
1696         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
1697         * JavaScriptCore.xcodeproj/project.pbxproj: Build!
1698
1699         * heap/MarkedBlock.cpp:
1700         (JSC::MarkedBlock::MarkedBlock):
1701         * heap/MarkedBlock.h:
1702         (JSC::MarkedBlock::inNewSpace):
1703         (JSC::MarkedBlock::setInNewSpace): Added inNewSpace flag, for use in
1704         write barrier.
1705
1706         * heap/NewSpace.cpp:
1707         (JSC::NewSpace::addBlock):
1708         (JSC::NewSpace::removeBlock):
1709         * heap/NewSpace.h:
1710         (JSC::NewSpace::forEachBlock): Added forEachBlock, to use for
1711         NewSpace-specific operations.
1712
1713         * heap/OldSpace.cpp: Added.
1714         (JSC::OldSpace::OldSpace):
1715         (JSC::OldSpace::addBlock):
1716         (JSC::OldSpace::removeBlock):
1717         * heap/OldSpace.h: Added.
1718         (JSC::OldSpace::forEachBlock): New class for holding promoted blocks.
1719         Not in use yet.
1720
1721 2011-06-09  Hyowon Kim  <hw1008.kim@samsung.com>
1722
1723         Reviewed by Antonio Gomes.
1724
1725         [EFL] Make accelerated compositing build in Webkit-EFL
1726         https://bugs.webkit.org/show_bug.cgi?id=62361
1727
1728         Add PLATFORM(EFL) to enable ACCELERATED_COMPOSITING on EFL port.
1729
1730         * wtf/Platform.h:
1731
1732 2011-06-09  Gavin Barraclough  <barraclough@apple.com>
1733
1734         Reviewed by Geoff Garen.
1735
1736         Bug 62405 - Fix integer overflow in Array.prototype.push
1737
1738         Fix geoff's review comments re static_cast.
1739
1740         * runtime/ArrayPrototype.cpp:
1741         (JSC::arrayProtoFuncPush):
1742
1743 2011-06-09  Geoffrey Garen  <ggaren@apple.com>
1744
1745         Reviewed by Oliver Hunt.
1746
1747         Factored MarkedBlock set management into a helper class with a fast case Bloom filter
1748         https://bugs.webkit.org/show_bug.cgi?id=62413
1749         
1750         SunSpider reports a small speedup.
1751         
1752         This is in preparation for having ConservativeSet operate on arbitrary
1753         sets of MarkedBlocks, and in preparation for conservative scanning
1754         becoming proportionally more important than other GC activities.
1755
1756         * GNUmakefile.list.am:
1757         * JavaScriptCore.gypi:
1758         * JavaScriptCore.xcodeproj/project.pbxproj: Build-o.
1759
1760         * heap/ConservativeRoots.cpp:
1761         (JSC::ConservativeRoots::add):
1762         * heap/ConservativeRoots.h:
1763         (JSC::ConservativeRoots::ConservativeRoots): Operate on a MarkedBlockSet
1764         directly, instead of a Heap, so we can operate on subsets of the Heap
1765         instead.
1766         
1767         Use a TinyBloomFilter for single-cycle exclusion of most pointers. This
1768         is particularly important since we expect not to find our subject pointer
1769         in the MarkedBlock hash, and hash misses are more expensive than typical
1770         hash lookups because they have high collision rates.
1771         
1772         No need for single-pointer add() to be public anymore, since nobody uses it.
1773
1774         * heap/Heap.cpp:
1775         (JSC::Heap::markRoots):
1776         * heap/Heap.h:
1777         (JSC::Heap::forEachCell):
1778         (JSC::Heap::forEachBlock): Use MarkedBlockSet since that's what
1779         ConservativeRoots relies on.
1780         
1781         Nixed contains(), since nobody uses it anymore.
1782
1783         * heap/MarkedBlock.h:
1784         (WTF::MarkedBlockHash::hash): Added a faster hash taking advantage of
1785         the VM layout properties of MarkedBlocks.
1786
1787         * heap/MarkedBlockSet.h: Added.
1788         (JSC::MarkedBlockSet::add):
1789         (JSC::MarkedBlockSet::remove):
1790         (JSC::MarkedBlockSet::recomputeFilter):
1791         (JSC::MarkedBlockSet::filter):
1792         (JSC::MarkedBlockSet::set):
1793         * heap/TinyBloomFilter.h: Added.
1794         (JSC::TinyBloomFilter::TinyBloomFilter):
1795         (JSC::TinyBloomFilter::add):
1796         (JSC::TinyBloomFilter::ruleOut): New helper class, used above.
1797
1798         * interpreter/RegisterFile.cpp:
1799         (JSC::RegisterFile::gatherConservativeRoots): No need to specifically
1800         exclude values by tag -- the tiny bloom filter is already a register-register
1801         compare, so adding another "rule out" factor just slows things down.
1802
1803 2011-06-09  Gavin Barraclough  <barraclough@apple.com>
1804
1805         Reviewed by Oliver Hunt.
1806
1807         Bug 62405 - Fix integer overflow in Array.prototype.push
1808
1809         There are three integer overflows here, leading to safe (not a security risk)
1810         but incorrect (non-spec-compliant) behaviour.
1811
1812         Two overflows occur when calculating the new length after pushing (one in the
1813         fast version of push in JSArray, one in the generic version in ArrayPrototype).
1814         The other occurs calculating indices to write to when multiple items are pushed.
1815
1816         These errors result in three test-262 failures.
1817
1818         * runtime/ArrayPrototype.cpp:
1819         (JSC::arrayProtoFuncPush):
1820         * runtime/JSArray.cpp:
1821         (JSC::JSArray::put):
1822         (JSC::JSArray::push):
1823
1824 2011-06-09  Dan Bernstein  <mitz@apple.com>
1825
1826         Reviewed by Anders Carlsson.
1827
1828         Add Vector::reverse()
1829         https://bugs.webkit.org/show_bug.cgi?id=62393
1830
1831         * wtf/Vector.h:
1832         (WTF::Vector::reverse): Added
1833
1834 2011-06-08  Geoffrey Garen  <ggaren@apple.com>
1835
1836         Reviewed by Oliver Hunt.
1837
1838         Factored a bunch of Heap functionality into stand-alone functors
1839         https://bugs.webkit.org/show_bug.cgi?id=62337
1840         
1841         This is in preparation for making these functors operate on arbitrary
1842         sets of MarkedBlocks.
1843
1844         * JavaScriptCore.exp: This file is a small tragedy.
1845
1846         * debugger/Debugger.cpp:
1847         (JSC::Debugger::recompileAllJSFunctions): Updated for type change and rename.
1848
1849         * heap/HandleHeap.h:
1850         (JSC::HandleHeap::forEachStrongHandle): New function for iterating all
1851         strong handles, so we can play along in the functor game.
1852
1853         * heap/Heap.cpp:
1854         (JSC::CountFunctor::CountFunctor::CountFunctor):
1855         (JSC::CountFunctor::CountFunctor::count):
1856         (JSC::CountFunctor::CountFunctor::returnValue):
1857         (JSC::CountFunctor::ClearMarks::operator()):
1858         (JSC::CountFunctor::ResetAllocator::operator()):
1859         (JSC::CountFunctor::Sweep::operator()):
1860         (JSC::CountFunctor::MarkCount::operator()):
1861         (JSC::CountFunctor::Size::operator()):
1862         (JSC::CountFunctor::Capacity::operator()):
1863         (JSC::CountFunctor::Count::operator()):
1864         (JSC::CountFunctor::CountIfGlobalObject::operator()):
1865         (JSC::CountFunctor::TakeIfEmpty::TakeIfEmpty):
1866         (JSC::CountFunctor::TakeIfEmpty::operator()):
1867         (JSC::CountFunctor::TakeIfEmpty::returnValue):
1868         (JSC::CountFunctor::RecordType::RecordType):
1869         (JSC::CountFunctor::RecordType::typeName):
1870         (JSC::CountFunctor::RecordType::operator()):
1871         (JSC::CountFunctor::RecordType::returnValue): These functors factor out
1872         behavior that used to be in the functions below.
1873
1874         (JSC::Heap::clearMarks):
1875         (JSC::Heap::sweep):
1876         (JSC::Heap::objectCount):
1877         (JSC::Heap::size):
1878         (JSC::Heap::capacity):
1879         (JSC::Heap::protectedGlobalObjectCount):
1880         (JSC::Heap::protectedObjectCount):
1881         (JSC::Heap::protectedObjectTypeCounts):
1882         (JSC::Heap::objectTypeCounts):
1883         (JSC::Heap::resetAllocator):
1884         (JSC::Heap::freeBlocks):
1885         (JSC::Heap::shrink): Factored out behavior into the functors above.
1886
1887         * heap/Heap.h:
1888         (JSC::Heap::forEachProtectedCell):
1889         (JSC::Heap::forEachCell):
1890         (JSC::Heap::forEachBlock): Added forEach* iteration templates. I chose
1891         functor-based templates instead of plain iterators because they're simpler
1892         to implement in this case and they require a lot less code at the call site.
1893
1894         * heap/MarkedBlock.h:
1895         (JSC::MarkedBlock::VoidFunctor::returnValue): Default parent class for
1896         trivial functors.
1897
1898         (JSC::MarkedBlock::forEachCell): Renamed forEach to forEachCell because
1899         we have a few different kind of "for each" now.
1900
1901         * runtime/JSGlobalData.cpp:
1902         (WTF::Recompile::operator()):
1903         (JSC::JSGlobalData::JSGlobalData):
1904         (JSC::JSGlobalData::recompileAllJSFunctions): Updated for type change and rename.
1905
1906         * runtime/JSGlobalData.h: Removed globalObjectCount because it was unused.
1907
1908 2011-06-08  Mikołaj Małecki  <m.malecki@samsung.com>
1909
1910         Reviewed by Pavel Feldman.
1911
1912         Web Inspector: Crash by buffer overrun crash when serializing inspector object tree.
1913         https://bugs.webkit.org/show_bug.cgi?id=52791
1914
1915         No new tests. The problem can be reproduced by trying to create InspectorValue
1916         from 1.0e-100 and call ->toJSONString() on this.
1917
1918         * JavaScriptCore.exp:
1919         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1920         export 2 functions DecimalNumber::bufferLengthForStringExponential and
1921         DecimalNumber::toStringExponential.
1922
1923 2011-06-08  Sheriff Bot  <webkit.review.bot@gmail.com>
1924
1925         Unreviewed, rolling out r88404.
1926         http://trac.webkit.org/changeset/88404
1927         https://bugs.webkit.org/show_bug.cgi?id=62342
1928
1929         broke win and mac build (Requested by tony^work on #webkit).
1930
1931         * JavaScriptCore.gyp/JavaScriptCore.gyp:
1932
1933 2011-06-08  Evan Martin  <evan@chromium.org>
1934
1935         Reviewed by Adam Barth.
1936
1937         [chromium] use gyp 'settings' type for settings target
1938         https://bugs.webkit.org/show_bug.cgi?id=62323
1939
1940         The 'settings' gyp target type is for targets that exist solely
1941         for their settings (no build rules).  The comment above this target
1942         says it's for this, but it incorrectly uses 'none'.
1943
1944         * JavaScriptCore.gyp/JavaScriptCore.gyp:
1945
1946 2011-06-08  Sailesh Agrawal  <sail@chromium.org>
1947
1948         Reviewed by Mihai Parparita.
1949
1950         Chromium Mac: Enable overlay scrollbars
1951         https://bugs.webkit.org/show_bug.cgi?id=59756
1952
1953         Enable WTF_USE_WK_SCROLLBAR_PAINTER for Chromium Mac. This allows us to use overlay scrollbars on future versions of Mac OS X.
1954
1955         * wtf/Platform.h:
1956
1957 2011-06-08  Oliver Hunt  <oliver@apple.com>
1958
1959         Reviewed by Geoffrey Garen.
1960
1961         Add faster lookup cache for multi character identifiers
1962         https://bugs.webkit.org/show_bug.cgi?id=62327
1963
1964         Add a non-hash lookup for mutiple character identifiers.  This saves us from
1965         adding repeated identifiers to the ParserArena's identifier list as people
1966         tend to not start all their variables and properties with the same character
1967         and happily identifier locality works in our favour.
1968
1969         * parser/ParserArena.h:
1970         (JSC::IdentifierArena::isEmpty):
1971         (JSC::IdentifierArena::clear):
1972         (JSC::IdentifierArena::makeIdentifier):
1973
1974 2011-06-08  Geoffrey Garen  <ggaren@apple.com>
1975
1976         Reviewed by Oliver Hunt.
1977
1978         Took some responsibilities away from NewSpace
1979         https://bugs.webkit.org/show_bug.cgi?id=62325
1980         
1981         NewSpace is basically just an allocator now.
1982         
1983         Heap acts as a controller, responsible for managing the set of all
1984         MarkedBlocks.
1985         
1986         This is in preparation for moving parts of the controller logic into
1987         separate helper classes that can act on arbitrary sets of MarkedBlocks
1988         that may or may not be in NewSpace.
1989
1990         * heap/Heap.cpp:
1991         (JSC::Heap::Heap):
1992         (JSC::Heap::destroy):
1993         (JSC::Heap::allocate):
1994         (JSC::Heap::markRoots):
1995         (JSC::Heap::clearMarks):
1996         (JSC::Heap::sweep):
1997         (JSC::Heap::objectCount):
1998         (JSC::Heap::size):
1999         (JSC::Heap::capacity):
2000         (JSC::Heap::collect):
2001         (JSC::Heap::resetAllocator):
2002         (JSC::Heap::allocateBlock):
2003         (JSC::Heap::freeBlocks):
2004         (JSC::Heap::shrink): Moved the set of MarkedBlocks from NewSpace to Heap,
2005         along with all functions that operate on the set of MarkedBlocks. Also
2006         moved responsibility for deciding whether to allocate a new MarkedBlock,
2007         and for allocating it.
2008
2009         * heap/Heap.h:
2010         (JSC::Heap::contains):
2011         (JSC::Heap::forEach): Ditto.
2012
2013         * heap/NewSpace.cpp:
2014         (JSC::NewSpace::addBlock):
2015         (JSC::NewSpace::removeBlock):
2016         (JSC::NewSpace::resetAllocator):
2017         * heap/NewSpace.h:
2018         (JSC::NewSpace::waterMark):
2019         (JSC::NewSpace::allocate): Ditto.
2020
2021 2011-06-08  Geoffrey Garen  <ggaren@apple.com>
2022
2023         Reviewed by Oliver Hunt.
2024
2025         Some more MarkedSpace => NewSpace renaming
2026         https://bugs.webkit.org/show_bug.cgi?id=62305
2027
2028         * JavaScriptCore.exp:
2029         * JavaScriptCore.order:
2030         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2031         * heap/Heap.cpp:
2032         (JSC::Heap::Heap):
2033         (JSC::Heap::destroy):
2034         (JSC::Heap::reportExtraMemoryCostSlowCase):
2035         (JSC::Heap::allocate):
2036         (JSC::Heap::markRoots):
2037         (JSC::Heap::objectCount):
2038         (JSC::Heap::size):
2039         (JSC::Heap::capacity):
2040         (JSC::Heap::collect):
2041         (JSC::Heap::isValidAllocation):
2042         * heap/Heap.h:
2043         (JSC::Heap::markedSpace):
2044         (JSC::Heap::contains):
2045         (JSC::Heap::forEach):
2046         (JSC::Heap::allocate):
2047         * runtime/JSCell.h:
2048
2049 2011-06-08  Kevin Ollivier  <kevino@theolliviers.com>
2050
2051         Reviewed by Eric Seidel.
2052
2053         Add export macros to profiler headers.
2054         https://bugs.webkit.org/show_bug.cgi?id=27551
2055
2056         * profiler/Profiler.h:
2057
2058 2011-06-08  Kevin Ollivier  <kevino@theolliviers.com>
2059
2060         Reviewed by Eric Seidel.
2061
2062         Add export symbols to parser headers.
2063         https://bugs.webkit.org/show_bug.cgi?id=27551
2064
2065         * parser/SourceProviderCache.h:
2066
2067 2011-06-08  Kevin Ollivier  <kevino@theolliviers.com>
2068
2069         Reviewed by Eric Seidel.
2070
2071         Add export symbols to interpreter headers.
2072         https://bugs.webkit.org/show_bug.cgi?id=27551
2073
2074         * interpreter/Interpreter.h:
2075
2076 2011-06-08  Kevin Ollivier  <kevino@theolliviers.com>
2077
2078         Reviewed by Eric Seidel.
2079
2080         Add export symbols to debugger headers.
2081         https://bugs.webkit.org/show_bug.cgi?id=27551
2082
2083         * debugger/Debugger.h:
2084         * debugger/DebuggerCallFrame.h:
2085
2086 2011-06-08  Geoffrey Garen  <ggaren@apple.com>
2087
2088         Reviewed by Darin Adler.
2089
2090         Moved MarkedSpace.* to NewSpace.* in preparation for more renaming
2091         https://bugs.webkit.org/show_bug.cgi?id=62268
2092
2093         * CMakeLists.txt:
2094         * GNUmakefile.list.am:
2095         * JavaScriptCore.gypi:
2096         * JavaScriptCore.pro:
2097         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
2098         * JavaScriptCore.xcodeproj/project.pbxproj:
2099         * heap/Heap.h:
2100         * heap/MarkedBlock.h:
2101         * heap/MarkedSpace.cpp: Removed.
2102         * heap/MarkedSpace.h: Removed.
2103         * heap/NewSpace.cpp: Copied from Source/JavaScriptCore/heap/MarkedSpace.cpp.
2104         * heap/NewSpace.h: Copied from Source/JavaScriptCore/heap/MarkedSpace.h.
2105
2106 2011-06-08  Sheriff Bot  <webkit.review.bot@gmail.com>
2107
2108         Unreviewed, rolling out r88365.
2109         http://trac.webkit.org/changeset/88365
2110         https://bugs.webkit.org/show_bug.cgi?id=62301
2111
2112         windows bots broken (Requested by loislo_ on #webkit).
2113
2114         * JavaScriptCore.exp:
2115
2116 2011-06-08  Ryan Sleevi  <rsleevi@chromium.org>
2117
2118         Reviewed by Tony Chang.
2119
2120         Suppress C++0x compat warnings when compiling Chromium port with GCC 4.6
2121
2122         Compiling Chromium port under GCC 4.6 produces warnings about nullptr
2123         https://bugs.webkit.org/show_bug.cgi?id=62242
2124
2125         * JavaScriptCore.gyp/JavaScriptCore.gyp:
2126
2127 2011-06-08  Ademar de Souza Reis Jr.  <ademar.reis@openbossa.org>
2128
2129         Reviewed by Andreas Kling.
2130
2131         Webkit on SPARC Solaris has wrong endian
2132         https://bugs.webkit.org/show_bug.cgi?id=29407
2133
2134         Bug 57256 fixed one crash on misaligned reads on sparc/solaris, but
2135         there are more ocurrences of the same code pattern in webkit.
2136
2137         This patch includes the check on these other parts of the code.
2138
2139         This is a speculative fix, I don't have a sparc machine to test and
2140         don't know which kind of test would trigger a crash (but it's quite
2141         obvious that it's the same code duplicated in different files).
2142
2143         * runtime/UString.h:
2144         (JSC::UStringHash::equal):
2145         * wtf/text/StringHash.h:
2146         (WTF::StringHash::equal):
2147
2148 2011-06-08  Yael Aharon  <yael.aharon@nokia.com>
2149
2150         Reviewed by Andreas Kling.
2151
2152         [Qt] Build fix for building QtWebKit inside of Qt.
2153         https://bugs.webkit.org/show_bug.cgi?id=62280
2154
2155         Remove CONFIG=staticlib, because it causes the configure script to add -ljavascriptcore
2156         into QtWebKit.prl.
2157
2158         No new tests, as this is just a build fix.
2159
2160         * JavaScriptCore.pri:
2161
2162 2011-06-07  Geoffrey Garen  <ggaren@apple.com>
2163
2164         Reviewed by Oliver Hunt.
2165
2166         Split 'reset' into 'collect' and 'resetAllocator'
2167         https://bugs.webkit.org/show_bug.cgi?id=62267
2168
2169         * heap/Heap.cpp:
2170         (JSC::Heap::allocate):
2171         (JSC::Heap::collectAllGarbage):
2172         (JSC::Heap::collect):
2173         * heap/Heap.h:
2174         * heap/MarkedBlock.h:
2175         (JSC::MarkedBlock::resetAllocator):
2176         * heap/MarkedSpace.cpp:
2177         (JSC::MarkedSpace::resetAllocator):
2178         * heap/MarkedSpace.h:
2179         (JSC::MarkedSpace::SizeClass::resetAllocator):
2180
2181 2011-06-07  Geoffrey Garen  <ggaren@apple.com>
2182
2183         Reviewed by Sam Weinig.
2184
2185         Renamed some more marks to visits
2186         https://bugs.webkit.org/show_bug.cgi?id=62254
2187
2188         * heap/HandleHeap.cpp:
2189         (JSC::HandleHeap::visitStrongHandles):
2190         (JSC::HandleHeap::visitWeakHandles):
2191         * heap/HandleHeap.h:
2192         * heap/HandleStack.cpp:
2193         (JSC::HandleStack::visit):
2194         * heap/HandleStack.h:
2195         * heap/Heap.cpp:
2196         (JSC::Heap::markProtectedObjects):
2197         (JSC::Heap::markTempSortVectors):
2198         (JSC::Heap::markRoots):
2199         * heap/HeapRootVisitor.h:
2200         (JSC::HeapRootVisitor::visit):
2201         * runtime/ArgList.cpp:
2202         (JSC::MarkedArgumentBuffer::markLists):
2203
2204 2011-06-07  Gavin Barraclough  <barraclough@apple.com>
2205
2206         Reviewed by Sam Weinig
2207
2208         https://bugs.webkit.org/show_bug.cgi?id=55537
2209         Functions claim to have 'callee' which they actually don't (and shouldn't)
2210
2211         * JavaScriptCore.xcodeproj/project.pbxproj:
2212         * runtime/JSFunction.cpp:
2213         (JSC::JSFunction::getOwnPropertyNames):
2214
2215 2011-06-07  Juan C. Montemayor  <jmont@apple.com>
2216
2217         Reviewed by Darin Adler.
2218
2219         Make JSStaticFunction and JSStaticValue less "const"
2220         https://bugs.webkit.org/show_bug.cgi?id=62222
2221
2222         * API/JSObjectRef.h:
2223         * API/tests/testapi.c:
2224         (checkConstnessInJSObjectNames):
2225         (main):
2226         * JavaScriptCore.xcodeproj/project.pbxproj:
2227
2228 2011-06-07  Gavin Barraclough  <barraclough@apple.com>
2229
2230         Reviewed by Sam Weinig.
2231
2232         https://bugs.webkit.org/show_bug.cgi?id=62240
2233         DFG JIT - add support for for-loop array initialization.
2234
2235         Support put by val beyond vector length.
2236         Add a operationPutByValBeyondArrayBounds operation, make
2237         PutValVal call this if the vector length check fails.
2238
2239         * dfg/DFGJITCodeGenerator.h:
2240         (JSC::DFG::JITCodeGenerator::silentSpillGPR):
2241         (JSC::DFG::JITCodeGenerator::silentFillGPR):
2242         (JSC::DFG::JITCodeGenerator::silentSpillAllRegisters):
2243         (JSC::DFG::JITCodeGenerator::isDoubleConstantWithInt32Value):
2244         (JSC::DFG::JITCodeGenerator::isJSConstantWithInt32Value):
2245         (JSC::DFG::JITCodeGenerator::isIntegerConstant):
2246         (JSC::DFG::JITCodeGenerator::valueOfIntegerConstant):
2247         * dfg/DFGOperations.cpp:
2248         (JSC::DFG::operationPutByValInternal):
2249         * dfg/DFGOperations.h:
2250         * dfg/DFGSpeculativeJIT.cpp:
2251         (JSC::DFG::SpeculativeJIT::compile):
2252         * dfg/DFGSpeculativeJIT.h:
2253
2254 2011-06-06  James Simonsen  <simonjam@chromium.org>
2255
2256         Reviewed by James Robinson.
2257
2258         Add monotonicallyIncreasingTime() to get monotonically increasing time
2259         https://bugs.webkit.org/show_bug.cgi?id=37743
2260
2261         * wtf/CurrentTime.cpp: Add monotonicallyIncreasingTime() for mac and a fallback implementation that just wraps currentTime().
2262         (WTF::monotonicallyIncreasingTime):
2263         * wtf/CurrentTime.h: Add monotonicallyIncreasingTime().
2264
2265 2011-06-06  Alexandru Chiculita  <achicu@adobe.com>
2266
2267         Reviewed by Kent Tamura.
2268
2269         Add ENABLE_CSS_EXCLUSIONS support for build-webkit script
2270         https://bugs.webkit.org/show_bug.cgi?id=61628
2271
2272         * Configurations/FeatureDefines.xcconfig:
2273
2274 2011-06-06  Mihnea Ovidenie  <mihnea@adobe.com>
2275
2276         Reviewed by Kent Tamura.
2277
2278         Add ENABLE(CSS_REGIONS) guard for CSS Regions support
2279         https://bugs.webkit.org/show_bug.cgi?id=61631
2280
2281         * Configurations/FeatureDefines.xcconfig:
2282
2283 2011-06-06  Carlos Garcia Campos  <cgarcia@igalia.com>
2284
2285         Unreviewed. Fix the GTK+ build.
2286
2287         * GNUmakefile.am: Add javascriptcore_cflags variable.
2288
2289 2011-06-04  Kevin Ollivier  <kevino@theolliviers.com>
2290
2291         [wx] Unreviewed build fix. Restore the PPC build and allow users to specify architectures
2292         to build on Mac.
2293
2294         * wtf/Platform.h:
2295
2296 2011-06-04  Gustavo Noronha Silva  <gns@gnome.org>
2297
2298         Unreviewed, MIPS build fix.
2299
2300         WebKitGTK+ tarball fails to build on MIPS.
2301         https://buildd.debian.org/status/fetch.php?pkg=webkitgtk%2B&arch=mips&ver=1.4.0-1&stamp=1304786691
2302
2303         * GNUmakefile.list.am: Add missing MIPS-related file to the list
2304         of files that are added to the tarball on make dist, and fix
2305         sorting.
2306
2307 2011-06-04  Sam Weinig  <sam@webkit.org>
2308
2309         Reviewed by Darin Adler.
2310
2311         Fix formatting of the output generated by KeywordLookupGenerator.py
2312         https://bugs.webkit.org/show_bug.cgi?id=62083
2313
2314         - Uses correct year for copyright.
2315         - Puts ending brace on same line as "else if"
2316         - Puts starting brace of function on its own line.
2317         - Adds some tasteful whitespace.
2318         - Adds comments to make clear that scopes are ending
2319         - Make macros actually split on two lines.
2320
2321         * KeywordLookupGenerator.py:
2322
2323 2011-06-04  Adam Barth  <abarth@webkit.org>
2324
2325         Reviewed by Eric Seidel.
2326
2327         KeywordLookupGenerator.py spams stdout in Chromium Linux build
2328         https://bugs.webkit.org/show_bug.cgi?id=62087
2329
2330         This action does not appear to be needed.
2331
2332         * JavaScriptCore.gyp/JavaScriptCore.gyp:
2333
2334 2011-06-03  Oliver Hunt  <oliver@apple.com>
2335
2336         Reviewed by Maciej Stachowiak.
2337
2338         Lexer needs to provide Identifier for reserved words
2339         https://bugs.webkit.org/show_bug.cgi?id=62086
2340
2341         Alas it is necessary to provide an Identifier reference for keywords
2342         so that we can do the right thing when they're used in object literals.
2343         We now keep Identifiers for all reserved words in the CommonIdentifiers
2344         structure so that we can access them without a hash lookup.
2345
2346         * KeywordLookupGenerator.py:
2347         * parser/Lexer.cpp:
2348         (JSC::Lexer::parseIdentifier):
2349         * parser/Lexer.h:
2350         * runtime/CommonIdentifiers.cpp:
2351         (JSC::CommonIdentifiers::CommonIdentifiers):
2352         * runtime/CommonIdentifiers.h:
2353
2354 2011-06-03  Gavin Barraclough  <barraclough@apple.com>
2355
2356         Reviewed by Sam Weinig.
2357
2358         Add debug code to break on speculation failures.
2359
2360         * dfg/DFGJITCompiler.cpp:
2361         (JSC::DFG::JITCompiler::jumpFromSpeculativeToNonSpeculative):
2362         (JSC::DFG::JITCompiler::compileFunction):
2363         * dfg/DFGNode.h:
2364
2365 2011-06-03  Gavin Barraclough  <barraclough@apple.com>
2366
2367         Reviewed by Sam Weinig.
2368
2369         https://bugs.webkit.org/show_bug.cgi?id=62082
2370         DFG JIT - bug passing arguments that need swap
2371
2372         This is really just a typo.
2373         When setting up the arguments for a call out to a C operation, we'll
2374         fail to swap arguments where this is necessary. For example, in the
2375         case of 2 arg calls, where the first argument is in %rdx & the second
2376         is in %rsi we should swap (exec will be passed in %rdi), but we don't.
2377
2378         This can also affect function calls passing three arguments.
2379
2380         * dfg/DFGJITCodeGenerator.h:
2381         (JSC::DFG::JITCodeGenerator::setupTwoStubArgs):
2382             - Call swap with the correct arguments.
2383
2384 2011-06-03  Oliver Hunt  <oliver@apple.com>
2385
2386         Reviewed by Gavin Barraclough.
2387
2388         Force inlining of some hot lexer functions
2389         https://bugs.webkit.org/show_bug.cgi?id=62079
2390
2391         Fix more GCC stupidity
2392
2393         * parser/Lexer.h:
2394         (JSC::Lexer::isWhiteSpace):
2395         (JSC::Lexer::isLineTerminator):
2396
2397 2011-06-03  Oliver Hunt  <oliver@apple.com>
2398
2399         Reviewed by Gavin Barraclough.
2400
2401         GCC not inlining some functions that it really should be
2402         https://bugs.webkit.org/show_bug.cgi?id=62075
2403
2404         Add ALWAYS_INLINE to a number of parsing and lexing functions
2405         that should always be inlined.  This gets us ~1.4% on my ad hoc
2406         parser test.
2407
2408         * KeywordLookupGenerator.py:
2409         * parser/JSParser.cpp:
2410         (JSC::JSParser::next):
2411         (JSC::JSParser::nextTokenIsColon):
2412         (JSC::JSParser::consume):
2413         (JSC::JSParser::match):
2414         (JSC::JSParser::tokenStart):
2415         (JSC::JSParser::tokenLine):
2416         (JSC::JSParser::tokenEnd):
2417         * parser/Lexer.cpp:
2418         (JSC::isIdentPart):
2419
2420 2011-06-03  Oliver Hunt  <oliver@apple.com>
2421
2422         Whoops, fix last minute bug.
2423
2424         * parser/Lexer.cpp:
2425         (JSC::Lexer::parseIdentifier):
2426
2427 2011-06-03  Martin Robinson  <mrobinson@igalia.com>
2428
2429         Try to fix the GTK+ build.
2430
2431         * GNUmakefile.am: Clean up some spaces that should be tabs.
2432         * GNUmakefile.list.am: Add KeywordLookup.h to the source list
2433         and clean up some spaces that should be tabs.
2434
2435 2011-06-03  Oliver Hunt  <oliver@apple.com>
2436
2437         Reviewed by Geoffrey Garen.
2438
2439         Improve keyword lookup
2440         https://bugs.webkit.org/show_bug.cgi?id=61913
2441
2442         Rather than doing multiple hash lookups as we currently
2443         do when trying to identify keywords we now use an 
2444         automatically generated decision tree (essentially it's
2445         a hard coded patricia trie).  We still use the regular
2446         lookup table for the last few characters of an input as
2447         this allows us to completely skip all bounds checks.
2448
2449         * CMakeLists.txt:
2450         * DerivedSources.make:
2451         * DerivedSources.pro:
2452         * GNUmakefile.am:
2453         * JavaScriptCore.gyp/JavaScriptCore.gyp:
2454         * JavaScriptCore.xcodeproj/project.pbxproj:
2455         * KeywordLookupGenerator.py: Added.
2456         * make-generated-sources.sh:
2457         * parser/Lexer.cpp:
2458         (JSC::Lexer::internalShift):
2459         (JSC::Lexer::shift):
2460         (JSC::Lexer::parseIdentifier):
2461         * parser/Lexer.h:
2462
2463 2011-06-03  Siddharth Mathur  <siddharth.mathur@nokia.com>
2464
2465         Reviewed by Benjamin Poulain.
2466
2467         [Qt] Build flag for experimental ICU library support
2468         https://bugs.webkit.org/show_bug.cgi?id=60786
2469
2470         Adds a build-time flag (CONFIG+=use_system_icu) that enables experimental 
2471         ICU powered Unicode support. 
2472
2473         * JavaScriptCore.pri: Support for use_system_icu CONFIG flag.
2474         * wtf/unicode/qt4/UnicodeQt4.h: Guard an include file with USE(ICU_UNICODE). 
2475
2476 2011-06-03  Alexis Menard  <alexis.menard@openbossa.org>
2477
2478         Reviewed by Benjamin Poulain.
2479
2480         [Qt] Build fix of QtWebKit 2.2 when inside Qt tree with GCC 4.6.
2481         https://bugs.webkit.org/show_bug.cgi?id=61957
2482
2483         When building inside the Qt source tree, qmake always append the mkspecs
2484         defines after ours. We have to workaround and make sure that we append 
2485         our flags after the qmake variable used inside Qt. This workaround was provided 
2486         by our qmake folks. We need to append in both case because qmake behave differently
2487         when called with -spec or via SUBDIR+=. This patch unbreak r87950 on Mac for Qt port.
2488
2489         * JavaScriptCore.pro:
2490
2491 2011-06-02  Jay Civelli  <jcivelli@chromium.org>
2492
2493         Reviewed by Adam Barth.
2494
2495         Added a method to generate RFC 2822 compliant date strings.
2496         https://bugs.webkit.org/show_bug.cgi?id=7169
2497
2498         * wtf/DateMath.cpp:
2499         (WTF::twoDigitStringFromNumber):
2500         (WTF::makeRFC2822DateString):
2501         * wtf/DateMath.h:
2502
2503 2011-06-02  Alexis Menard  <alexis.menard@openbossa.org>
2504
2505         Reviewed by Andreas Kling.
2506
2507         [Qt] Build fix of QtWebKit 2.2 when inside Qt tree with GCC 4.6.
2508         https://bugs.webkit.org/show_bug.cgi?id=61957
2509
2510         When building inside the Qt source tree, qmake always append the mkspecs
2511         defines after ours. We have to workaround and make sure that we append  
2512         our flags after the qmake variable used inside Qt. This workaround was provided
2513         by our qmake folks.
2514
2515         * JavaScriptCore.pro:
2516
2517 2011-06-01  Oliver Hunt  <oliver@apple.com>
2518
2519         Reviewed by Geoffrey Garen.
2520
2521         Add single character lookup cache to IdentifierArena
2522         https://bugs.webkit.org/show_bug.cgi?id=61879
2523
2524         Add a simple lookup cache for single ascii character
2525         identifiers.  Produces around a 2% improvement in parse
2526         time for my adhoc parser test.
2527
2528         * parser/ParserArena.h:
2529         (JSC::IdentifierArena::IdentifierArena):
2530         (JSC::IdentifierArena::clear):
2531         (JSC::IdentifierArena::makeIdentifier):
2532
2533 2011-05-31  Oliver Hunt  <oliver@apple.com>
2534
2535         Reviewed by Geoffrey Garen.
2536
2537         Freezing a function and its prototype causes browser to crash.
2538         https://bugs.webkit.org/show_bug.cgi?id=61758
2539
2540         Make JSObject::preventExtensions virtual so that we can override it
2541         and instantiate all lazy
2542
2543         * JavaScriptCore.exp:
2544         * runtime/JSFunction.cpp:
2545         (JSC::createPrototypeProperty):
2546         (JSC::JSFunction::preventExtensions):
2547         (JSC::JSFunction::getOwnPropertySlot):
2548         * runtime/JSFunction.h:
2549         * runtime/JSObject.h:
2550         * runtime/JSObject.cpp:
2551         (JSC::JSObject::seal):
2552         (JSC::JSObject::seal):
2553
2554 2011-06-01  Sheriff Bot  <webkit.review.bot@gmail.com>
2555
2556         Unreviewed, rolling out r87788.
2557         http://trac.webkit.org/changeset/87788
2558         https://bugs.webkit.org/show_bug.cgi?id=61856
2559
2560         breaks windows chromium canary (Requested by jknotten on
2561         #webkit).
2562
2563         * wtf/DateMath.cpp:
2564         (WTF::timeClip):
2565         * wtf/DateMath.h:
2566
2567 2011-06-01  Jay Civelli  <jcivelli@chromium.org>
2568
2569         Reviewed by Adam Barth.
2570
2571         Added a method to generate RFC 2822 compliant date strings.
2572         https://bugs.webkit.org/show_bug.cgi?id=7169
2573
2574         * wtf/DateMath.cpp:
2575         (WTF::twoDigitStringFromNumber):
2576         (WTF::makeRFC2822DateString):
2577         * wtf/DateMath.h:
2578
2579 2011-05-31  Yong Li  <yoli@rim.com>
2580
2581         Reviewed by Eric Seidel.
2582
2583         https://bugs.webkit.org/show_bug.cgi?id=54807
2584         We have been assuming plain bitfields (like "int a : 31") are always signed integers.
2585         However some compilers can treat them as unsigned. For example, RVCT 4.0 states plain
2586         bitfields (declared without either signed or unsigned qualifiers) are treats as unsigned.
2587         http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0348c/Babjddhe.html
2588         Although we can use "--signed-bitfields" flag to make RVCT 4.0 behave as most other compilers,
2589         always using "signed"/"unsigned" qualifier to declare integral type bitfields is still a good
2590         rule we should have in order to make our code independent from compilers and compiler flags.
2591
2592         No new test added because this change is not known to fix any issue.
2593
2594         * bytecode/StructureStubInfo.h:
2595
2596 2011-05-30  Hojong Han  <hojong.han@samsung.com>
2597
2598         Reviewed by Geoffrey Garen.
2599
2600         [JSC] malfunction during arithmetic condition check with negative number (-2147483648)
2601         https://bugs.webkit.org/show_bug.cgi?id=61416
2602
2603         * assembler/MacroAssemblerARM.h:
2604         (JSC::MacroAssemblerARM::branch32):
2605         * tests/mozilla/ecma/Expressions/11.12-1.js:
2606         (getTestCases):
2607
2608 2011-05-29  Geoffrey Garen  <ggaren@apple.com>
2609
2610         Reviewed by Sam Weinig.
2611
2612         Some heap refactoring
2613         https://bugs.webkit.org/show_bug.cgi?id=61704
2614         
2615         SunSpider says no change.
2616
2617         * JavaScriptCore.exp: Export!
2618
2619         * heap/Heap.cpp: COLLECT_ON_EVERY_ALLOCATION can actually do so now.
2620
2621         (JSC::Heap::Heap): Changed Heap sub-objects to point to the heap.
2622
2623         (JSC::Heap::allocate): Changed inline allocation code to only select the
2624         size class, since this can be optimized out at compile time -- everything
2625         else is now inlined into this out-of-line function.
2626         
2627         No need to duplicate ASSERTs made in our caller.
2628
2629         * heap/Heap.h:
2630         (JSC::Heap::heap):
2631         (JSC::Heap::isMarked):
2632         (JSC::Heap::testAndSetMarked):
2633         (JSC::Heap::testAndClearMarked):
2634         (JSC::Heap::setMarked): Call directly into MarkedBlock instead of adding
2635         a layer of indirection through MarkedSpace.
2636
2637         (JSC::Heap::allocate): See above.
2638
2639         * heap/MarkedBlock.cpp:
2640         (JSC::MarkedBlock::create):
2641         (JSC::MarkedBlock::MarkedBlock):
2642         * heap/MarkedBlock.h: Changed Heap sub-objects to point to the heap.
2643
2644         * heap/MarkedSpace.cpp:
2645         (JSC::MarkedSpace::MarkedSpace):
2646         (JSC::MarkedSpace::allocateBlock):
2647         * heap/MarkedSpace.h:
2648         (JSC::MarkedSpace::allocate): Updated to match changes above.
2649
2650 2011-05-28  David Kilzer  <ddkilzer@apple.com>
2651
2652         BUILD FIX when building only the interpreter
2653
2654         Fixes the following compiler warning:
2655
2656             JavaScriptCore/runtime/JSGlobalData.cpp:462:6: error: no previous prototype for function 'releaseExecutableMemory' [-Werror,-Wmissing-prototypes,3]
2657              void releaseExecutableMemory(JSGlobalData& globalData)
2658                   ^
2659
2660         * jit/ExecutableAllocator.h: Moved declaration of
2661         JSC::releaseExecutableMemory().
2662
2663 2011-05-28  David Kilzer  <ddkilzer@apple.com>
2664
2665         BUILD FIX after r87527 with ENABLE(BRANCH_COMPACTION)
2666
2667         * assembler/LinkBuffer.h:
2668         (JSC::LinkBuffer::linkCode): Added missing argument.
2669
2670 2011-05-27  Geoffrey Garen  <ggaren@apple.com>
2671
2672         Reviewed by Oliver Hunt.
2673
2674         JS API is too aggressive about throwing exceptions for NULL get or set operations
2675         https://bugs.webkit.org/show_bug.cgi?id=61678
2676
2677         * API/JSCallbackObject.h: Changed our staticValueGetter to a regular
2678         function that returns a JSValue, so it can fail and still forward to
2679         normal property lookup.
2680
2681         * API/JSCallbackObjectFunctions.h:
2682         (JSC::::getOwnPropertySlot): Don't throw an exception when failing to
2683         access a static property -- just forward the access. This allows objects
2684         to observe get/set operations but still let the JS object manage lifetime.
2685
2686         (JSC::::put): Ditto.
2687
2688         (JSC::::getStaticValue): Same as JSCallbackObject.h.
2689
2690         * API/tests/testapi.c:
2691         (MyObject_set_nullGetForwardSet):
2692         * API/tests/testapi.js: Updated tests to reflect slightly less strict
2693         behavior, which matches headerdoc claims.
2694
2695 2011-05-27  Geoffrey Garen  <ggaren@apple.com>
2696
2697         Reviewed by Oliver Hunt.
2698
2699         Property caching is too aggressive for API objects
2700         https://bugs.webkit.org/show_bug.cgi?id=61677
2701
2702         * API/JSCallbackObject.h: Opt in to ProhibitsPropertyCaching, since our
2703         callback APIs allow the client to change its mind about our propertis at
2704         any time.
2705
2706         * API/tests/testapi.c:
2707         (PropertyCatchalls_getProperty):
2708         (PropertyCatchalls_setProperty):
2709         (PropertyCatchalls_getPropertyNames):
2710         (PropertyCatchalls_class):
2711         (main):
2712         * API/tests/testapi.js: Some tests for dynamic API objects.
2713
2714         * interpreter/Interpreter.cpp:
2715         (JSC::Interpreter::tryCachePutByID):
2716         (JSC::Interpreter::tryCacheGetByID):
2717         * jit/JITStubs.cpp:
2718         (JSC::JITThunks::tryCachePutByID):
2719         (JSC::JITThunks::tryCacheGetByID):
2720         (JSC::DEFINE_STUB_FUNCTION): Opt out of property caching if the client
2721         requires it.
2722
2723         * runtime/JSTypeInfo.h:
2724         (JSC::TypeInfo::TypeInfo):
2725         (JSC::TypeInfo::isFinal):
2726         (JSC::TypeInfo::prohibitsPropertyCaching):
2727         (JSC::TypeInfo::flags): Added a flag to track opting out of property
2728         caching. Fixed an "&&" vs "&" typo that was previously harmless, but
2729         is now harmful since m_flags2 can have more than one bit set.
2730
2731 2011-05-27  Stephanie Lewis  <slewis@apple.com>
2732
2733         Unreviewed.
2734
2735         Fix a typo in the order_file flag.
2736
2737         * Configurations/Base.xcconfig:
2738
2739 2011-05-27  Patrick Gansterer  <paroga@webkit.org>
2740
2741         Unreviewed. Build fix for !ENABLE(ASSEMBLER) after r87527.
2742
2743         * runtime/JSGlobalData.cpp:
2744         (JSGlobalData::JSGlobalData):
2745
2746 2011-05-27  Oliver Hunt  <oliver@apple.com>
2747
2748         Reviewed by Geoffrey Garen.
2749
2750         Add a few validity assertions to JSCallbackObject
2751         https://bugs.webkit.org/show_bug.cgi?id=61659
2752
2753         * API/JSCallbackObject.h:
2754         (JSC::JSCallbackObject::visitChildren):
2755
2756 2011-05-27  Oliver Hunt  <oliver@apple.com>
2757
2758         Build fix
2759
2760         * runtime/RegExpCache.cpp:
2761         (JSC::RegExpCache::invalidateCode):
2762
2763 2011-05-27  Oliver Hunt  <oliver@apple.com>
2764
2765         Reviewed by Geoffrey Garen.
2766
2767         Try to release unused executable memory when the FixedVMPool allocator is under pressure
2768         https://bugs.webkit.org/show_bug.cgi?id=61651
2769
2770         Rather than crashing when full the FixedVMPool allocator now returns a null
2771         allocation.  We replace the code that used to CRASH() on null allocations
2772         with logic that asks the provided globalData to release any executable memory
2773         that it can.  Currently this just means throwing away all regexp code, but
2774         in future we'll try to be more aggressive.
2775
2776         * assembler/ARMAssembler.cpp:
2777         (JSC::ARMAssembler::executableCopy):
2778         * assembler/ARMAssembler.h:
2779         * assembler/AssemblerBuffer.h:
2780         (JSC::AssemblerBuffer::executableCopy):
2781         * assembler/AssemblerBufferWithConstantPool.h:
2782         * assembler/LinkBuffer.h:
2783         (JSC::LinkBuffer::LinkBuffer):
2784         (JSC::LinkBuffer::linkCode):
2785         * assembler/MIPSAssembler.h:
2786         (JSC::MIPSAssembler::executableCopy):
2787         * assembler/SH4Assembler.h:
2788         (JSC::SH4Assembler::executableCopy):
2789         * assembler/X86Assembler.h:
2790         (JSC::X86Assembler::executableCopy):
2791         (JSC::X86Assembler::X86InstructionFormatter::executableCopy):
2792         * dfg/DFGJITCompiler.cpp:
2793         (JSC::DFG::JITCompiler::compileFunction):
2794         * jit/ExecutableAllocator.h:
2795         (JSC::ExecutablePool::create):
2796         (JSC::ExecutablePool::alloc):
2797         (JSC::ExecutableAllocator::ExecutableAllocator):
2798         (JSC::ExecutableAllocator::poolForSize):
2799         (JSC::ExecutablePool::ExecutablePool):
2800         (JSC::ExecutablePool::poolAllocate):
2801         * jit/ExecutableAllocatorFixedVMPool.cpp:
2802         (JSC::FixedVMPoolAllocator::alloc):
2803         * jit/JIT.cpp:
2804         (JSC::JIT::privateCompile):
2805         * jit/JITOpcodes.cpp:
2806         (JSC::JIT::privateCompileCTIMachineTrampolines):
2807         * jit/JITOpcodes32_64.cpp:
2808         (JSC::JIT::privateCompileCTIMachineTrampolines):
2809         (JSC::JIT::privateCompileCTINativeCall):
2810         * jit/JITPropertyAccess.cpp:
2811         (JSC::JIT::stringGetByValStubGenerator):
2812         (JSC::JIT::privateCompilePutByIdTransition):
2813         (JSC::JIT::privateCompilePatchGetArrayLength):
2814         (JSC::JIT::privateCompileGetByIdProto):
2815         (JSC::JIT::privateCompileGetByIdSelfList):
2816         (JSC::JIT::privateCompileGetByIdProtoList):
2817         (JSC::JIT::privateCompileGetByIdChainList):
2818         (JSC::JIT::privateCompileGetByIdChain):
2819         * jit/JITPropertyAccess32_64.cpp:
2820         (JSC::JIT::stringGetByValStubGenerator):
2821         (JSC::JIT::privateCompilePutByIdTransition):
2822         (JSC::JIT::privateCompilePatchGetArrayLength):
2823         (JSC::JIT::privateCompileGetByIdProto):
2824         (JSC::JIT::privateCompileGetByIdSelfList):
2825         (JSC::JIT::privateCompileGetByIdProtoList):
2826         (JSC::JIT::privateCompileGetByIdChainList):
2827         (JSC::JIT::privateCompileGetByIdChain):
2828         * jit/SpecializedThunkJIT.h:
2829         (JSC::SpecializedThunkJIT::finalize):
2830         * jit/ThunkGenerators.cpp:
2831         (JSC::charCodeAtThunkGenerator):
2832         (JSC::charAtThunkGenerator):
2833         (JSC::fromCharCodeThunkGenerator):
2834         (JSC::sqrtThunkGenerator):
2835         (JSC::powThunkGenerator):
2836         * runtime/JSGlobalData.cpp:
2837         (JSC::JSGlobalData::JSGlobalData):
2838         (JSC::JSGlobalData::releaseExecutableMemory):
2839         (JSC::releaseExecutableMemory):
2840         * runtime/JSGlobalData.h:
2841         * runtime/RegExpCache.cpp:
2842         (JSC::RegExpCache::invalidateCode):
2843         * runtime/RegExpCache.h:
2844         * yarr/YarrJIT.cpp:
2845         (JSC::Yarr::YarrGenerator::compile):
2846
2847 2011-05-26  Geoffrey Garen  <ggaren@apple.com>
2848
2849         Reviewed by Oliver Hunt.
2850
2851         Optimized ConservativeSet to avoid double-visiting objects
2852         https://bugs.webkit.org/show_bug.cgi?id=61592
2853         
2854         SunSpider thinks this might be a 1% speedup
2855
2856         * heap/ConservativeRoots.h:
2857         (JSC::ConservativeRoots::add): Use testAndClearMarked to avoid double-visiting
2858         an object.
2859
2860         * heap/Heap.h:
2861         (JSC::Heap::isMarked):
2862         (JSC::Heap::testAndSetMarked):
2863         (JSC::Heap::testAndClearMarked):
2864         (JSC::Heap::setMarked): Added testAndClearMarked. Changed argument type
2865         to void*, since clients want to ask questions about arbitrary pointers
2866         into the heap, even when they aren't known to be JSCells.
2867
2868         * heap/MarkedBlock.h:
2869         (JSC::MarkedBlock::testAndClearMarked):
2870         * heap/MarkedSpace.h:
2871         (JSC::MarkedSpace::isMarked):
2872         (JSC::MarkedSpace::testAndSetMarked):
2873         (JSC::MarkedSpace::testAndClearMarked):
2874         (JSC::MarkedSpace::setMarked):
2875         (JSC::MarkedSpace::contains): Ditto.
2876
2877         * wtf/Bitmap.h:
2878         (WTF::::testAndClear): New function for ConservativeRoots's inverted
2879         marking pass.
2880
2881 2011-05-27  Stephanie Lewis  <slewis@apple.com>
2882
2883         Rubber Stamped by Adam Roben.
2884
2885         Update Order Files.  Use -order_file flag since it can order more of the binary.
2886
2887         * Configurations/Base.xcconfig:
2888         * JavaScriptCore.order:
2889
2890 2011-05-26  Geoffrey Garen  <ggaren@apple.com>
2891
2892         Reviewed by Oliver Hunt.
2893
2894         Renamed heapRootMarker to heapRootVisitor to match its class name
2895         https://bugs.webkit.org/show_bug.cgi?id=61584
2896
2897         * heap/Heap.cpp:
2898         (JSC::Heap::markProtectedObjects):
2899         (JSC::Heap::markTempSortVectors):
2900         (JSC::Heap::markRoots):
2901
2902 2011-05-26  Geoffrey Garen  <ggaren@apple.com>
2903
2904         Reviewed by Oliver Hunt.
2905
2906         Removed some interdependency between Heap and SmallStrings by simplifying
2907         the SmallStrings lifetime model
2908         https://bugs.webkit.org/show_bug.cgi?id=61579
2909         
2910         SunSpider reports no change.
2911         
2912         Using Weak<T> could accomplish this too, but we're not sure it will give
2913         us the performance we need. This is a first step, and it accomplishes
2914         most of the value of using Weak<T>.
2915
2916         * heap/Heap.cpp:
2917         (JSC::Heap::destroy):
2918         (JSC::Heap::markRoots):
2919         (JSC::Heap::reset): Finalize small strings just like other weak handles.
2920
2921         * runtime/SmallStrings.cpp:
2922         (JSC::finalize):
2923         (JSC::SmallStrings::finalizeSmallStrings):
2924         * runtime/SmallStrings.h: Make all small strings trivially weak, instead
2925         of having an "all for one, one for all" memory model.
2926
2927 2011-05-26  Oliver Hunt  <oliver@apple.com>
2928
2929         Reviewed by Geoffrey Garen.
2930
2931         Make RegExpCache a weak map
2932         https://bugs.webkit.org/show_bug.cgi?id=61554
2933
2934         Switch to a weak map for the regexp cache, and hide that
2935         behaviour behind RegExp::create.
2936
2937         When a RegExp is compiled it attempts to add itself to
2938         the "strong" cache.  This cache is a simple round-robin
2939         buffer as was the old strong cache.  Happily this can
2940         be smaller than the old strong cache as RegExps are only
2941         added when they're compiled so it is under less pressure
2942         to evict.
2943
2944         * bytecompiler/NodesCodegen.cpp:
2945         (JSC::RegExpNode::emitBytecode):
2946         * runtime/RegExp.cpp:
2947         (JSC::RegExp::RegExp):
2948         (JSC::RegExp::create):
2949         (JSC::RegExp::match):
2950         * runtime/RegExp.h:
2951         (JSC::RegExp::gcShouldInvalidateCode):
2952         (JSC::RegExp::hasCode):
2953         (JSC::RegExp::key):
2954         * runtime/RegExpCache.cpp:
2955         (JSC::RegExpCache::lookupOrCreate):
2956         (JSC::RegExpCache::RegExpCache):
2957         (JSC::RegExpCache::isReachableFromOpaqueRoots):
2958         (JSC::RegExpCache::finalize):
2959         * runtime/RegExpCache.h:
2960         * runtime/RegExpConstructor.cpp:
2961         (JSC::constructRegExp):
2962         * runtime/RegExpPrototype.cpp:
2963         (JSC::regExpProtoFuncCompile):
2964         * runtime/StringPrototype.cpp:
2965         (JSC::stringProtoFuncMatch):
2966         (JSC::stringProtoFuncSearch):
2967
2968 2011-05-26  Geoffrey Garen  <ggaren@apple.com>
2969
2970         Reviewed by Oliver Hunt.
2971
2972         Moved Heap-related functions out of JSCell.h and into respective header files
2973         https://bugs.webkit.org/show_bug.cgi?id=61567
2974
2975         * heap/Heap.h:
2976         (JSC::Heap::allocate):
2977         (JSC::Heap::heap):
2978         * heap/MarkedBlock.h:
2979         (JSC::MarkedBlock::allocate):
2980         * heap/MarkedSpace.h:
2981         (JSC::MarkedSpace::sizeClassFor):
2982         (JSC::MarkedSpace::allocate):
2983         * runtime/JSCell.h:
2984         (JSC::JSCell::destructor):
2985
2986 2011-05-26  Geoffrey Garen  <ggaren@apple.com>
2987
2988         Try to fix Windows build.
2989
2990         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2991
2992 2011-05-26  Ryosuke Niwa  <rniwa@webkit.org>
2993
2994         Reviewed by Eric Seidel.
2995
2996         [debug feature] WTFString should have show() method
2997         https://bugs.webkit.org/show_bug.cgi?id=61149
2998
2999         Added String::show and AtomicString::show in NDEBUG.
3000
3001         * wtf/text/AtomicString.cpp:
3002         (WTF::AtomicString::show):
3003         * wtf/text/AtomicString.h:
3004         * wtf/text/WTFString.cpp:
3005         (String::show):
3006         * wtf/text/WTFString.h:
3007
3008 2011-05-26  Geoffrey Garen  <ggaren@apple.com>
3009
3010         Reviewed by Geoffrey Garen.
3011
3012         Factored out some Heap ASSERTs
3013         https://bugs.webkit.org/show_bug.cgi?id=61565
3014
3015         * JavaScriptCore.exp:
3016         * heap/Heap.cpp:
3017         (JSC::isValidSharedInstanceThreadState):
3018         (JSC::isValidThreadState):
3019         (JSC::Heap::markRoots):
3020         (JSC::Heap::isValidAllocation):
3021         * heap/Heap.h:
3022         * runtime/JSCell.h:
3023         (JSC::JSCell::Heap::allocate):
3024
3025 2011-05-26  Gavin Barraclough  <barraclough@apple.com>
3026
3027         Reviewed by Geoff Garen.
3028
3029         https://bugs.webkit.org/show_bug.cgi?id=61508
3030         DFG JIT - Add support for get by id self caching.
3031
3032         Change the call out to be an unexpected call (using silent spill/fill functions),
3033         add a structure check & compact load to the JIT code, and add repatching mechanisms.
3034         Since DFGOperations may want to be be implemented in asm, make these symbols be extern
3035         "C". Add an asm wrapper to pass the return address to the optimizing get-by-id operation,
3036         so that it can look up its StructureStubInfo.
3037
3038         * JavaScriptCore.xcodeproj/project.pbxproj:
3039             - Added new files.
3040         * bytecode/StructureStubInfo.h:
3041             - Added 'unset' entries to union.
3042         * dfg/DFGJITCodeGenerator.h:
3043         (JSC::DFG::JITCodeGenerator::appendCallWithExceptionCheck):
3044             - Return the call, we need this to populate the StructureStubInfo.
3045         * dfg/DFGJITCompiler.cpp:
3046         (JSC::DFG::JITCompiler::compileFunction):
3047             - Populate the CodebBlock's StructureStubInfo Vector.
3048         * dfg/DFGJITCompiler.h:
3049         (JSC::DFG::JITCompiler::appendCallWithExceptionCheck):
3050             - Return the call, we need this to populate the StructureStubInfo.
3051         (JSC::DFG::JITCompiler::addPropertyAccess):
3052         (JSC::DFG::JITCompiler::PropertyAccessRecord::PropertyAccessRecord):
3053             - Add structures to record property access info during compilation.
3054         * dfg/DFGOperations.cpp:
3055             - Made all external methods extern "C".
3056         (JSC::DFG::operationPutByValInternal):
3057             - Moved outside of the extern "C" block.
3058         * dfg/DFGOperations.h:
3059             - Made all external methods extern "C".
3060         * dfg/DFGRepatch.cpp: Added.
3061         (JSC::DFG::dfgRepatchCall):
3062             - repatch a call to link to a new callee function.
3063         (JSC::DFG::dfgRepatchGetByIdSelf):
3064             - Modify the JIT code to optimize self accesses.
3065         (JSC::DFG::tryCacheGetByID):
3066             - Internal implementation of dfgRepatchGetByID (factor out failing cases).
3067         (JSC::DFG::dfgRepatchGetByID):
3068             - Used to optimize 'operationGetByIdOptimize' - repatches to 'operationGetById', and tries to optimize self accesses!
3069         * dfg/DFGRepatch.h: Added.
3070             - Expose dfgRepatchGetByID.
3071         * dfg/DFGSpeculativeJIT.cpp:
3072         (JSC::DFG::SpeculativeJIT::compile):
3073             - Changed implementation of GetById ops.
3074
3075 2011-05-26  Geoffrey Garen  <ggaren@apple.com>
3076
3077         Rolled back in http://trac.webkit.org/changeset/87408 with Windows build fixed.
3078
3079         * heap/MarkedBlock.cpp:
3080         (JSC::MarkedBlock::MarkedBlock):
3081         * heap/MarkedBlock.h:
3082         * wtf/DoublyLinkedList.h:
3083         (WTF::::DoublyLinkedListNode):
3084         (WTF::::setPrev):
3085         (WTF::::setNext):
3086         (WTF::::prev):
3087         (WTF::::next):
3088         (WTF::::DoublyLinkedList):
3089         (WTF::::isEmpty):
3090         (WTF::::size):
3091         (WTF::::clear):
3092         (WTF::::head):
3093         (WTF::::append):
3094         (WTF::::remove):
3095         (WTF::::removeHead):
3096
3097 2011-05-26  Geoffrey Garen  <ggaren@apple.com>
3098
3099         Rolled out http://trac.webkit.org/changeset/87408 because it broke the
3100         Windows build.
3101
3102         * heap/MarkedBlock.cpp:
3103         (JSC::MarkedBlock::MarkedBlock):
3104         * heap/MarkedBlock.h:
3105         (JSC::MarkedBlock::setPrev):
3106         (JSC::MarkedBlock::setNext):
3107         (JSC::MarkedBlock::prev):
3108         (JSC::MarkedBlock::next):
3109         * wtf/DoublyLinkedList.h:
3110         (WTF::::DoublyLinkedList):
3111         (WTF::::isEmpty):
3112         (WTF::::head):
3113         (WTF::::append):
3114         (WTF::::remove):
3115
3116 2011-05-26  Geoffrey Garen  <ggaren@apple.com>
3117
3118         Reviewed by Oliver Hunt.
3119
3120         Provide a real owner when copying a property table, for the sake of
3121         write barriers.
3122         https://bugs.webkit.org/show_bug.cgi?id=61547
3123         
3124         No test because we can't enable the writeBarrier() ASSERT just yet.
3125
3126         * runtime/Structure.cpp:
3127         (JSC::Structure::addPropertyTransition):
3128
3129 2011-05-26  Adam Roben  <aroben@apple.com>
3130
3131         Windows build fix after r87346
3132
3133         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Fixed up exports to match
3134         reality.
3135
3136 2011-05-26  Patrick Gansterer  <paroga@webkit.org>
3137
3138         Reviewed by Adam Barth.
3139
3140         ASSERT(isMainThread()) when using single threaded jsc executable
3141         https://bugs.webkit.org/show_bug.cgi?id=60846
3142
3143         Remove the ASSERT since we do not have the concept of MainThread in JSC.
3144
3145         * wtf/CryptographicallyRandomNumber.cpp:
3146         (WTF::ARC4Stream::ARC4RandomNumberGenerator::randomNumber):
3147         (WTF::ARC4Stream::ARC4RandomNumberGenerator::randomValues):
3148
3149 2011-05-25  Gavin Barraclough  <barraclough@apple.com>
3150
3151         Reviewed by Sam Weinig.
3152
3153         https://bugs.webkit.org/show_bug.cgi?id=61506
3154
3155         Move the silent spill/fill methods in the DFG JIT to the JITCodeGenerator
3156         so that they are available to the SpeculativeJIT.
3157
3158         * dfg/DFGJITCodeGenerator.h:
3159         (JSC::DFG::JITCodeGenerator::silentSpillGPR):
3160         (JSC::DFG::JITCodeGenerator::silentSpillFPR):
3161         (JSC::DFG::JITCodeGenerator::silentFillGPR):
3162         (JSC::DFG::JITCodeGenerator::silentFillFPR):
3163         (JSC::DFG::JITCodeGenerator::silentSpillAllRegisters):
3164         (JSC::DFG::JITCodeGenerator::silentFillAllRegisters):
3165         * dfg/DFGNonSpeculativeJIT.h:
3166
3167 2011-05-25  Ryosuke Niwa  <rniwa@webkit.org>
3168
3169         An attempt to revive Windows bots.
3170
3171         * runtime/RegExp.cpp:
3172         * runtime/RegExp.h:
3173
3174 2011-05-25  Gavin Barraclough  <barraclough@apple.com>
3175
3176         Reviewed by Sam Weinig.
3177
3178         Bug 61503 - Move population of CodeBlock::m_structureStubInfos into JIT
3179
3180         This data structure, used at runtime by the JIT, is currently unnecessarily populated
3181         with default entries during byte compilation.
3182
3183         Aside from meaning that there is JIT specific code in the bytecompiler, this also ties
3184         us to one entry per corresponding bytecode op, which may be undesirable. Instead,
3185         populate this array from the JIT.
3186
3187         The type StructureStubInfo has two unused states, one for gets & one for puts. Unify
3188         these, so that the class can have a default constructor (and to simply switch statements
3189         in code walking over the table).
3190
3191         This change has ramification for the DFG JIT, in that the DFG JIT used this datastructure
3192         to check for functions containing property access. Instead do so in the DFGByteCodeParser.
3193
3194         * bytecode/CodeBlock.cpp:
3195         (JSC::printStructureStubInfo):
3196         * bytecode/CodeBlock.h:
3197         (JSC::CodeBlock::setNumberOfStructureStubInfos):
3198         (JSC::CodeBlock::numberOfStructureStubInfos):
3199         * bytecode/StructureStubInfo.cpp:
3200         (JSC::StructureStubInfo::deref):
3201         (JSC::StructureStubInfo::visitAggregate):
3202         * bytecode/StructureStubInfo.h:
3203         (JSC::StructureStubInfo::StructureStubInfo):
3204         * bytecompiler/BytecodeGenerator.cpp:
3205         (JSC::BytecodeGenerator::emitGetById):
3206         (JSC::BytecodeGenerator::emitPutById):
3207         (JSC::BytecodeGenerator::emitDirectPutById):
3208         * dfg/DFGByteCodeParser.cpp:
3209         (JSC::DFG::ByteCodeParser::parseBlock):
3210         * jit/JIT.cpp:
3211         (JSC::JIT::JIT):
3212         (JSC::JIT::privateCompileMainPass):
3213         (JSC::JIT::privateCompileSlowCases):
3214         (JSC::JIT::privateCompile):
3215         * jit/JIT.h:
3216         * jit/JITPropertyAccess.cpp:
3217         (JSC::JIT::emit_op_get_by_id):
3218         (JSC::JIT::emit_op_put_by_id):
3219         (JSC::JIT::emit_op_method_check):
3220         (JSC::JIT::compileGetByIdHotPath):
3221         (JSC::JIT::compileGetByIdSlowCase):
3222         (JSC::JIT::emitSlow_op_put_by_id):
3223         * jit/JITPropertyAccess32_64.cpp:
3224         (JSC::JIT::emit_op_get_by_id):
3225         (JSC::JIT::emitSlow_op_get_by_id):
3226         (JSC::JIT::emit_op_put_by_id):
3227         (JSC::JIT::emitSlow_op_put_by_id):
3228         (JSC::JIT::emit_op_method_check):
3229         (JSC::JIT::compileGetByIdHotPath):
3230         (JSC::JIT::compileGetByIdSlowCase):
3231         * runtime/Executable.cpp:
3232         (JSC::tryDFGCompile):
3233
3234 2011-05-25  Gavin Barraclough  <barraclough@apple.com>
3235
3236         Reviewed by Sam Weinig.
3237
3238         Bug 61501 - Unify AbstractMacroAssembler::differenceBetween methods.
3239
3240         * assembler/AbstractMacroAssembler.h:
3241         (JSC::AbstractMacroAssembler::Call::Call):
3242         (JSC::AbstractMacroAssembler::Call::fromTailJump):
3243         (JSC::AbstractMacroAssembler::Jump::Jump):
3244         (JSC::AbstractMacroAssembler::Jump::link):
3245         (JSC::AbstractMacroAssembler::Jump::linkTo):
3246         (JSC::AbstractMacroAssembler::Jump::isSet):
3247         (JSC::AbstractMacroAssembler::differenceBetween):
3248         (JSC::AbstractMacroAssembler::linkJump):
3249         (JSC::AbstractMacroAssembler::getLinkerCallReturnOffset):
3250         * assembler/LinkBuffer.h:
3251         (JSC::LinkBuffer::link):
3252         (JSC::LinkBuffer::locationOf):
3253         (JSC::LinkBuffer::locationOfNearCall):
3254         (JSC::LinkBuffer::returnAddressOffset):
3255         * assembler/MacroAssemblerARM.h:
3256         (JSC::MacroAssemblerARM::linkCall):
3257         * assembler/MacroAssemblerARMv7.h:
3258         (JSC::MacroAssemblerARMv7::linkCall):
3259         * assembler/MacroAssemblerMIPS.h:
3260         (JSC::MacroAssemblerMIPS::linkCall):
3261         * assembler/MacroAssemblerSH4.cpp:
3262         (JSC::MacroAssemblerSH4::linkCall):
3263         * assembler/MacroAssemblerX86.h:
3264         (JSC::MacroAssemblerX86::linkCall):
3265         * assembler/MacroAssemblerX86_64.h:
3266         (JSC::MacroAssemblerX86_64::linkCall):
3267
3268 2011-05-25  Gavin Barraclough  <barraclough@apple.com>
3269
3270         Reviewed by Sam Weinig.
3271
3272         https://bugs.webkit.org/show_bug.cgi?id=61500
3273         Add JSObject::offsetOfPropertyStorage
3274
3275         * jit/JITPropertyAccess.cpp:
3276         (JSC::JIT::compileGetDirectOffset):
3277         (JSC::JIT::compileGetByIdHotPath):
3278         (JSC::JIT::emit_op_put_by_id):
3279         (JSC::JIT::compilePutDirectOffset):
3280         * jit/JITPropertyAccess32_64.cpp:
3281         (JSC::JIT::compileGetByIdHotPath):
3282         (JSC::JIT::emit_op_put_by_id):
3283         (JSC::JIT::compilePutDirectOffset):
3284         (JSC::JIT::compileGetDirectOffset):
3285         * runtime/JSObject.h:
3286         (JSC::JSObject::offsetOfPropertyStorage):
3287
3288 2011-05-25  Oliver Hunt  <oliver@apple.com>
3289
3290         Reviewed by Geoffrey Garen.
3291
3292         Make RegExp GC allocated
3293         https://bugs.webkit.org/show_bug.cgi?id=61490
3294
3295         Make RegExp GC allocated.  Basically mechanical change to replace
3296         most use of [Pass]RefPtr<RegExp> with RegExp* or WriteBarrier<RegExp>
3297         where actual ownership happens.
3298
3299         Made the RegExpCache use Strong<> references currently to avoid any
3300         changes in behaviour.
3301
3302         * JavaScriptCore.exp:
3303         * bytecode/CodeBlock.cpp:
3304         (JSC::CodeBlock::visitAggregate):
3305         * bytecode/CodeBlock.h:
3306         (JSC::CodeBlock::addRegExp):
3307         * bytecompiler/BytecodeGenerator.cpp:
3308         (JSC::BytecodeGenerator::addRegExp):
3309         (JSC::BytecodeGenerator::emitNewRegExp):
3310         * bytecompiler/BytecodeGenerator.h:
3311         * runtime/JSCell.h:
3312         * runtime/JSGlobalData.cpp:
3313         (JSC::JSGlobalData::JSGlobalData):
3314         (JSC::JSGlobalData::clearBuiltinStructures):
3315         (JSC::JSGlobalData::addRegExpToTrace):
3316         * runtime/JSGlobalData.h:
3317         * runtime/JSGlobalObject.cpp:
3318         (JSC::JSGlobalObject::reset):
3319         * runtime/RegExp.cpp:
3320         (JSC::RegExp::RegExp):
3321         (JSC::RegExp::create):
3322         (JSC::RegExp::invalidateCode):
3323         * runtime/RegExp.h:
3324         (JSC::RegExp::createStructure):
3325         * runtime/RegExpCache.cpp:
3326         (JSC::RegExpCache::lookupOrCreate):
3327         (JSC::RegExpCache::create):
3328         * runtime/RegExpCache.h:
3329         * runtime/RegExpConstructor.cpp:
3330         (JSC::constructRegExp):
3331         * runtime/RegExpObject.cpp:
3332         (JSC::RegExpObject::RegExpObject):
3333         (JSC::RegExpObject::visitChildren):
3334         * runtime/RegExpObject.h:
3335         (JSC::RegExpObject::setRegExp):
3336         (JSC::RegExpObject::RegExpObjectData::RegExpObjectData):
3337         * runtime/RegExpPrototype.cpp:
3338         (JSC::RegExpPrototype::RegExpPrototype):
3339         (JSC::regExpProtoFuncCompile):
3340         * runtime/RegExpPrototype.h:
3341         * runtime/StringPrototype.cpp:
3342         (JSC::stringProtoFuncMatch):
3343         (JSC::stringProtoFuncSearch):
3344
3345 2011-05-25  Oliver Hunt  <oliver@apple.com>
3346
3347         Reviewed by Geoffrey Garen.
3348
3349         Generate regexp code lazily
3350         https://bugs.webkit.org/show_bug.cgi?id=61476
3351
3352         RegExp construction now simply validates the RegExp, it does
3353         not perform actual codegen.
3354
3355         * runtime/RegExp.cpp:
3356         (JSC::RegExp::RegExp):
3357         (JSC::RegExp::recompile):
3358         (JSC::RegExp::compile):
3359         (JSC::RegExp::match):
3360         * runtime/RegExp.h:
3361         (JSC::RegExp::recompileIfNecessary):
3362         * runtime/RegExpConstructor.h:
3363         (JSC::RegExpConstructor::performMatch):
3364         * runtime/RegExpObject.cpp:
3365         (JSC::RegExpObject::match):
3366         * runtime/StringPrototype.cpp:
3367         (JSC::stringProtoFuncReplace):
3368         (JSC::stringProtoFuncMatch):
3369         (JSC::stringProtoFuncSearch):
3370         (JSC::stringProtoFuncSplit):
3371
3372 2011-05-24  Geoffrey Garen  <ggaren@apple.com>
3373
3374         Reviewed by Geoffrey Garen.
3375
3376         Removed MarkSetProperties because it was unused
3377         https://bugs.webkit.org/show_bug.cgi?id=61418
3378
3379         * heap/MarkStack.h:
3380         (JSC::MarkSet::MarkSet):
3381         (JSC::MarkStack::append):
3382         * runtime/JSActivation.cpp:
3383         (JSC::JSActivation::visitChildren):
3384         * runtime/JSArray.h:
3385         (JSC::JSArray::visitChildrenDirect):
3386         * runtime/JSPropertyNameIterator.cpp:
3387         (JSC::JSPropertyNameIterator::visitChildren):
3388         * runtime/WriteBarrier.h:
3389         (JSC::MarkStack::appendValues):
3390
3391 2011-05-25  Oliver Hunt  <oliver@apple.com>
3392
3393         Reviewed by Geoffrey Garen.
3394
3395         Make allocations with guard pages ensure that the allocation succeeded
3396         https://bugs.webkit.org/show_bug.cgi?id=61453
3397
3398         Add null checks, and make PageBlock's operator bool() use
3399         the realbase, rather than the start of usable memory.
3400
3401         * wtf/OSAllocatorPosix.cpp:
3402         (WTF::OSAllocator::reserveAndCommit):
3403         * wtf/PageBlock.h:
3404         (WTF::PageBlock::operator bool):
3405         (WTF::PageBlock::PageBlock):
3406
3407 2011-04-10  Kevin Ollivier  <kevino@theolliviers.com>
3408
3409         Reviewed by Eric Seidel.
3410
3411         Add JS_EXPORT_PRIVATE macro for exported methods in bytecompiler headers.
3412         
3413         https://bugs.webkit.org/show_bug.cgi?id=27551
3414
3415         * bytecompiler/BytecodeGenerator.h:
3416
3417 2011-05-24  Keishi Hattori  <keishi@webkit.org>
3418
3419         Reviewed by Kent Tamura.
3420
3421         Disable textfield implementation of <input type=color>. Add INPUT_COLOR feature flag. Add input color sanitizer.
3422         https://bugs.webkit.org/show_bug.cgi?id=61273
3423
3424         * Configurations/FeatureDefines.xcconfig: Added COLOR_INPUT feature flag.
3425
3426 2011-05-24  Kevin Ollivier  <kevino@theolliviers.com>
3427
3428         Reviewed by Eric Seidel.
3429
3430         Add export macros to WTFString.h.
3431         
3432         https://bugs.webkit.org/show_bug.cgi?id=27551
3433
3434         * wtf/text/WTFString.h:
3435         (WTF::String::String):
3436         (WTF::String::findIgnoringCase):
3437         (WTF::String::isHashTableDeletedValue):
3438
3439 2011-05-24  Geoffrey Garen  <ggaren@apple.com>
3440
3441         Maybe fix the Mac build now?
3442
3443         * JavaScriptCore.xcodeproj/project.pbxproj:
3444
3445 2011-05-24  Geoffrey Garen  <ggaren@apple.com>
3446
3447         Maybe fix the Mac build?
3448         
3449         * JavaScriptCore.xcodeproj/project.pbxproj:
3450
3451 2011-05-24  Geoffrey Garen  <ggaren@apple.com>
3452
3453         Reviewed by Oliver Hunt.
3454
3455         Split HeapRootVisitor into its own class
3456         https://bugs.webkit.org/show_bug.cgi?id=61399
3457
3458         * GNUmakefile.list.am:
3459         * JavaScriptCore.gypi:
3460         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
3461         * JavaScriptCore.xcodeproj/project.pbxproj:
3462         * heap/HandleHeap.cpp:
3463         * heap/HandleStack.cpp:
3464         * heap/Heap.cpp:
3465         * heap/HeapRootVisitor.h: Copied from Source/JavaScriptCore/heap/MarkStack.h.
3466         * heap/MarkStack.h:
3467         * runtime/ArgList.cpp:
3468         * runtime/SmallStrings.cpp:
3469
3470 2011-05-24  Jay Civelli  <jcivelli@chromium.org>
3471
3472         Rubberstamped by David Kilzer.
3473
3474         Updated some files that I forgot in my previous MHTML CL.
3475
3476         * Configurations/FeatureDefines.xcconfig:
3477
3478 2011-05-24  Geoffrey Garen  <ggaren@apple.com>
3479
3480         Fix the Mac build: Yes, please do remove these files, svn.
3481
3482         * JavaScriptCore.xcodeproj/project.pbxproj:
3483
3484 2011-05-24  Geoffrey Garen  <ggaren@apple.com>
3485
3486         Reviewed by Oliver Hunt.
3487
3488         Let's just have one way to get the system page size, bokay?
3489         https://bugs.webkit.org/show_bug.cgi?id=61384
3490
3491         * CMakeListsEfl.txt:
3492         * CMakeListsWinCE.txt:
3493         * GNUmakefile.list.am:
3494         * JavaScriptCore.exp:
3495         * JavaScriptCore.gypi:
3496         * JavaScriptCore.pro:
3497         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: MarkStack[Platform].cpp
3498         is gone completely now, since it only existed to provide a duplicate way