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