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