a3a33b539aa72af2561756e260996f4309a0293f
[WebKit-https.git] / JavaScriptCore / ChangeLog
1 2010-10-22  Zoltan Herczeg  <zherczeg@webkit.org>
2
3         Reviewed by Csaba Osztrogonác.
4
5         JSC interpreter regressions after r69940
6         https://bugs.webkit.org/show_bug.cgi?id=47839
7
8         Wrong "if": It should test whether the result exists,
9         and not the opposite. It is an interpreter bug, hence
10         the bots does not capture it.
11
12         * interpreter/Interpreter.cpp:
13         (JSC::Interpreter::resolveBase):
14
15 2010-10-21  Adam Barth  <abarth@webkit.org>
16
17         Reviewed by David Levin.
18
19         Remove Android build system
20         https://bugs.webkit.org/show_bug.cgi?id=48111
21
22         * Android.mk: Removed.
23
24 2010-10-21  Kwang Yul Seo  <skyul@company100.net>
25
26         Reviewed by Kent Tamura.
27
28         [BREWMP] Add a String constructor which takes AECHAR*
29         https://bugs.webkit.org/show_bug.cgi?id=45043
30
31         Add String(const AECHAR*) constructor for convenience.
32
33         * wtf/text/WTFString.h:
34
35 2010-10-21  Carlos Garcia Campos  <cgarcia@igalia.com>
36
37         Reviewed by Martin Robinson.
38
39         [GTK] Use GCharsetConverter instead of g_iconv in TextCodecGtk
40         https://bugs.webkit.org/show_bug.cgi?id=47896
41
42         * wtf/gobject/GTypedefs.h:
43
44 2010-10-21  Adam Barth  <abarth@webkit.org>
45
46         Unreviewed, rolling out r70174.
47         http://trac.webkit.org/changeset/70174
48         https://bugs.webkit.org/show_bug.cgi?id=41948
49
50         This patch reverts a change that causes
51         http/tests/xmlhttprequest/origin-whitelisting-removal.html to crash.
52
53         * interpreter/Interpreter.cpp:
54         (JSC::Interpreter::throwException):
55
56 2010-10-20  Simon Fraser  <simon.fraser@apple.com>
57
58         Fix the EFL build.
59
60         * wtf/CMakeLists.txt:
61
62 2010-10-20  Simon Fraser  <simon.fraser@apple.com>
63
64         Fix Windows build: export needed symbols.
65
66         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
67
68 2010-10-19  Simon Fraser  <simon.fraser@apple.com>
69
70         Reviewed by Gavin Barraclough.
71
72         https://bugs.webkit.org/show_bug.cgi?id=47851
73         
74         Add methods to DecimalNumber to return the buffer length
75         required for decimal and exponential output.
76         
77         Make some of the DecimalNumber code non-inline (no
78         effect on Sunspider), adding DecimalNumber.cpp to various
79         build systems.
80         
81         Make some DecimalNumber methods 'const'.
82
83         * Android.mk:
84         * Android.v8.wtf.mk:
85         * GNUmakefile.am:
86         * JavaScriptCore.exp:
87         * JavaScriptCore.gypi:
88         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
89         * JavaScriptCore.xcodeproj/project.pbxproj:
90         * runtime/NumberPrototype.cpp:
91         (JSC::numberProtoFuncToExponential):
92         (JSC::numberProtoFuncToFixed):
93         (JSC::numberProtoFuncToPrecision):
94         * wtf/DecimalNumber.cpp: Added.
95         (WTF::DecimalNumber::bufferLengthForStringDecimal):
96         (WTF::DecimalNumber::bufferLengthForStringExponential):
97         (WTF::DecimalNumber::toStringDecimal):
98         (WTF::DecimalNumber::toStringExponential):
99         * wtf/DecimalNumber.h:
100         (WTF::DecimalNumber::sign):
101         (WTF::DecimalNumber::exponent):
102         (WTF::DecimalNumber::significand):
103         (WTF::DecimalNumber::precision):
104         * wtf/dtoa.cpp:
105         (WTF::dtoa):
106         * wtf/dtoa.h:
107         * wtf/wtf.pri:
108
109 2010-10-20  Sheriff Bot  <webkit.review.bot@gmail.com>
110
111         Unreviewed, rolling out r70165.
112         http://trac.webkit.org/changeset/70165
113         https://bugs.webkit.org/show_bug.cgi?id=48007
114
115         It broke tests on Qt bot (Requested by Ossy on #webkit).
116
117         * GNUmakefile.am:
118         * JavaScriptCore.gypi:
119         * JavaScriptCore.xcodeproj/project.pbxproj:
120         * wtf/text/TextPosition.h: Removed.
121
122 2010-10-20  Brian Weinstein  <bweinstein@apple.com>
123
124         Reviewed by Adam Roben.
125
126         Fix the Windows build after r70165. Move the copying of JavaScript headers from JavaScriptCore's post-build
127         step to JavaScriptCoreGenerated, so the copying is done even when a cpp file in JavaScriptCore is changed.
128
129         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
130         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
131
132 2010-10-20  Dumitru Daniliuc  <dumi@chromium.org>
133
134         Unreviewed, fixing the Win build.
135
136         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
137
138 2010-10-20  Geoffrey Garen  <ggaren@apple.com>
139
140         Reviewed by Darin Adler.
141         
142         https://bugs.webkit.org/show_bug.cgi?id=41948
143         REGRESSION(r60392): Registerfile can be unwound too far following an exception
144
145         * interpreter/Interpreter.cpp:
146         (JSC::Interpreter::throwException): Walk the stack to calculate the high
147         water mark currently in use. It's not safe to assume that the current
148         CallFrame's high water mark is the highest high water mark because
149         calls do not always set up at the end of a CallFrame. A large caller
150         CallFrame can encompass a small callee CallFrame.
151
152 2010-10-20  Peter Rybin  <peter.rybin@gmail.com>
153
154         Reviewed by Adam Barth.
155
156         HTML parser should provide script column position within HTML document to JavaScript engine
157         https://bugs.webkit.org/show_bug.cgi?id=45271
158
159         Adds TextPosition* classes -- a structure that stores line/column/generation
160         level coordinates inside text document. Adds *BasedNumber classes -- typesafe int
161         wrappers that emphasize whether int number is used as zero-based or
162         one-based.
163
164         * GNUmakefile.am:
165         * JavaScriptCore.gypi:
166         * JavaScriptCore.xcodeproj/project.pbxproj:
167         * wtf/text/TextPosition.h: Added.
168         (WTF::TextPosition::TextPosition):
169         (WTF::TextPosition::minimumPosition):
170         (WTF::TextPosition::belowRangePosition):
171         (WTF::ZeroBasedNumber::fromZeroBasedInt):
172         (WTF::ZeroBasedNumber::ZeroBasedNumber):
173         (WTF::ZeroBasedNumber::zeroBasedInt):
174         (WTF::ZeroBasedNumber::base):
175         (WTF::ZeroBasedNumber::belowBase):
176         (WTF::OneBasedNumber::fromOneBasedInt):
177         (WTF::OneBasedNumber::OneBasedNumber):
178         (WTF::OneBasedNumber::oneBasedInt):
179         (WTF::OneBasedNumber::convertAsZeroBasedInt):
180         (WTF::OneBasedNumber::convertToZeroBased):
181         (WTF::OneBasedNumber::base):
182         (WTF::OneBasedNumber::belowBase):
183         (WTF::toZeroBasedTextPosition):
184         (WTF::toOneBasedTextPosition):
185         (WTF::ZeroBasedNumber::convertToOneBased):
186
187 2010-10-19  Kwang Yul Seo  <skyul@company100.net>
188
189         Reviewed by David Kilzer.
190
191         [BREWMP] Turn off JIT for simulator build
192         https://bugs.webkit.org/show_bug.cgi?id=47937
193
194         We don't need to test x86 JIT.
195
196         * wtf/Platform.h:
197
198 2010-10-19  Oliver Hunt  <oliver@apple.com>
199
200         Reviewed by Geoffrey Garen.
201
202         Remove support for JSVALUE32 from JSC
203         https://bugs.webkit.org/show_bug.cgi?id=47948
204
205         Remove all the code for supporting JSVALUE32 from JSC.
206
207         * jit/JIT.cpp:
208         (JSC::JIT::privateCompileMainPass):
209         (JSC::JIT::privateCompileSlowCases):
210         * jit/JIT.h:
211         * jit/JITArithmetic.cpp:
212         (JSC::JIT::emit_op_lshift):
213         (JSC::JIT::emitSlow_op_lshift):
214         (JSC::JIT::emit_op_rshift):
215         (JSC::JIT::emitSlow_op_rshift):
216         (JSC::JIT::emit_op_urshift):
217         (JSC::JIT::emitSlow_op_urshift):
218         (JSC::JIT::emit_op_jnless):
219         (JSC::JIT::emitSlow_op_jnless):
220         (JSC::JIT::emit_op_jless):
221         (JSC::JIT::emitSlow_op_jless):
222         (JSC::JIT::emit_op_jlesseq):
223         (JSC::JIT::emitSlow_op_jlesseq):
224         (JSC::JIT::emit_op_bitand):
225         (JSC::JIT::emit_op_post_inc):
226         (JSC::JIT::emit_op_post_dec):
227         (JSC::JIT::emit_op_pre_inc):
228         (JSC::JIT::emit_op_pre_dec):
229         (JSC::JIT::emit_op_mod):
230         (JSC::JIT::emitSlow_op_mod):
231         * jit/JITCall.cpp:
232         * jit/JITInlineMethods.h:
233         (JSC::JIT::emitGetFromCallFrameHeaderPtr):
234         (JSC::JIT::emitGetFromCallFrameHeader32):
235         * jit/JITOpcodes.cpp:
236         (JSC::JIT::emit_op_loop_if_lesseq):
237         (JSC::JIT::emit_op_bitnot):
238         (JSC::JIT::emit_op_next_pname):
239         * jit/JITPropertyAccess.cpp:
240         (JSC::JIT::emit_op_get_by_val):
241         (JSC::JIT::emit_op_put_by_val):
242         * jit/JITStubs.h:
243         * jit/JSInterfaceJIT.h:
244         * jit/SpecializedThunkJIT.h:
245         (JSC::SpecializedThunkJIT::returnDouble):
246         (JSC::SpecializedThunkJIT::tagReturnAsInt32):
247         * jit/ThunkGenerators.cpp:
248         (JSC::sqrtThunkGenerator):
249         (JSC::powThunkGenerator):
250         * runtime/Collector.cpp:
251         (JSC::isPossibleCell):
252         (JSC::typeName):
253         * runtime/JSCell.h:
254         * runtime/JSGlobalData.cpp:
255         (JSC::JSGlobalData::JSGlobalData):
256         * runtime/JSGlobalData.h:
257         * runtime/JSGlobalObject.h:
258         (JSC::Structure::prototypeForLookup):
259         * runtime/JSImmediate.h:
260         (JSC::reinterpretIntptrToDouble):
261         (JSC::JSImmediate::isIntegerNumber):
262         (JSC::JSImmediate::isDouble):
263         (JSC::JSImmediate::areBothImmediateIntegerNumbers):
264         (JSC::JSImmediate::makeDouble):
265         (JSC::JSImmediate::doubleValue):
266         (JSC::JSImmediate::toBoolean):
267         (JSC::JSImmediate::fromNumberOutsideIntegerRange):
268         (JSC::JSImmediate::from):
269         (JSC::JSImmediate::toDouble):
270         (JSC::JSFastMath::rightShiftImmediateNumbers):
271         * runtime/JSNumberCell.cpp:
272         * runtime/JSNumberCell.h:
273         * runtime/JSObject.h:
274         (JSC::JSObject::JSObject):
275         * runtime/JSValue.h:
276         * runtime/NumberObject.h:
277         * wtf/Platform.h:
278
279 2010-10-19  Csaba Osztrogonác  <ossy@webkit.org>
280
281         Reviewed by Geoffrey Garen.
282
283         BytecodeGenerator::m_lastOpcodePosition must be initialized in all constructors
284         https://bugs.webkit.org/show_bug.cgi?id=47920
285
286         * bytecompiler/BytecodeGenerator.cpp:
287         (JSC::BytecodeGenerator::BytecodeGenerator): Add missing member initialization.
288
289 2010-10-19  Kwang Yul Seo  <skyul@company100.net>
290
291         Reviewed by David Kilzer.
292
293         RVCT fails to compile DateMath.cpp due to overloaded function pow
294         https://bugs.webkit.org/show_bug.cgi?id=47844
295
296         Choose std::pow(double, double) among multiple overloaded pow functions
297         to fix build for RVCT.
298
299         * wtf/DateMath.cpp:
300         (WTF::parseES5DateFromNullTerminatedCharacters):
301
302 2010-10-19  Patrick Gansterer  <paroga@webkit.org>
303
304         Reviewed by David Kilzer.
305
306         Use UChar instead of wchar_t in UnicodeWinCE
307         https://bugs.webkit.org/show_bug.cgi?id=47904
308
309         Make UnicodeWinCE more portable, so we can use it for other ports too.
310
311         * wtf/unicode/wince/UnicodeWinCE.cpp:
312         (WTF::Unicode::toLower):
313         (WTF::Unicode::toUpper):
314         (WTF::Unicode::foldCase):
315         (WTF::Unicode::isPrintableChar):
316         (WTF::Unicode::isSpace):
317         (WTF::Unicode::isLetter):
318         (WTF::Unicode::isUpper):
319         (WTF::Unicode::isLower):
320         (WTF::Unicode::isDigit):
321         (WTF::Unicode::isPunct):
322         (WTF::Unicode::isAlphanumeric):
323         (WTF::Unicode::toTitleCase):
324         (WTF::Unicode::mirroredChar):
325         (WTF::Unicode::digitValue):
326         * wtf/unicode/wince/UnicodeWinCE.h:
327         (WTF::Unicode::isSeparatorSpace):
328         (WTF::Unicode::isHighSurrogate):
329         (WTF::Unicode::isLowSurrogate):
330         (WTF::Unicode::umemcasecmp):
331         (WTF::Unicode::surrogateToUcs4):
332
333 2010-10-19  Patrick Gansterer  <paroga@webkit.org>
334
335         Reviewed by Andreas Kling.
336
337         Fix style of UnicodeWinCE
338         https://bugs.webkit.org/show_bug.cgi?id=47818
339
340         * wtf/unicode/wince/UnicodeWinCE.cpp:
341         (WTF::Unicode::toLower):
342         (WTF::Unicode::toUpper):
343         * wtf/unicode/wince/UnicodeWinCE.h:
344
345 2010-10-18  Xan Lopez  <xlopez@igalia.com>
346
347         Reviewed by Martin Robinson.
348
349         * GNUmakefile.am: add missing file.
350
351 2010-10-18  Oliver Hunt  <oliver@apple.com>
352
353         Reviewed by Sam Weinig.
354
355         Strict mode: Functions created with the function constructor don't implement strict mode semantics
356         https://bugs.webkit.org/show_bug.cgi?id=47860
357
358         When creating the FunctionExecutable for a new function the function constructor
359         was always passing false for whether or not a function was strict, rather than
360         using the information from the freshly parsed function itself.
361
362         * runtime/Executable.cpp:
363         (JSC::FunctionExecutable::fromGlobalCode):
364
365 2010-10-18  Oliver Hunt  <oliver@apple.com>
366
367         Reviewed by Darin Adler.
368
369         Strict mode: |this| should be undefined if it is not explicitly provided
370         https://bugs.webkit.org/show_bug.cgi?id=47833
371
372         To make strict mode behave correctly we want to pass undefined instead of null
373         as the default this value.  This has no impact on behaviour outside of strict
374         mode as both values are replaced with the global object if necessary.
375
376         * bytecompiler/NodesCodegen.cpp:
377         (JSC::FunctionCallValueNode::emitBytecode):
378         (JSC::FunctionCallResolveNode::emitBytecode):
379         (JSC::CallFunctionCallDotNode::emitBytecode):
380         (JSC::ApplyFunctionCallDotNode::emitBytecode):
381
382
383 2010-10-18  Darin Adler  <darin@apple.com>
384
385         Reviewed by Anders Carlsson.
386
387         Make a nullptr that works with OwnPtr and RefPtr
388         https://bugs.webkit.org/show_bug.cgi?id=47756
389
390         * JavaScriptCore.xcodeproj/project.pbxproj: Added NullPtr.h.
391
392         * wtf/NullPtr.h: Added.
393
394         * wtf/OwnArrayPtr.h: Add an overload of = taking nullptr.
395         * wtf/OwnPtr.h: Ditto.
396         * wtf/PassOwnArrayPtr.h: Ditto.
397         * wtf/PassOwnPtr.h: Ditto.
398         * wtf/PassRefPtr.h: Ditto.
399         * wtf/RefPtr.h: Ditto.
400         * wtf/RetainPtr.h: Ditto.
401
402 2010-10-18  Oliver Hunt  <oliver@apple.com>
403
404         Reviewed by Sam Weinig.
405
406         Strict mode: JIT doesn't check for |this| being an immediate before dereferencing
407         https://bugs.webkit.org/show_bug.cgi?id=47826
408
409         There's no guarantee that |this| will be a cell in a strict mode function, so
410         don't claim that it is.
411
412         * bytecode/CodeBlock.h:
413         (JSC::CodeBlock::isKnownNotImmediate):
414
415 2010-10-18  Zoltan Herczeg  <zherczeg@webkit.org>
416
417         Reviewed by Oliver Hunt.
418
419         if (0) throw "x" ; else { } throws parse error after r69906
420         https://bugs.webkit.org/show_bug.cgi?id=47807
421
422         r69906 introduced a bug: the semicolon is not parsed after a throw
423         expression anymore. Thus, the semicolon terminates the "if" parsing
424         in the example above, and the else token results a parse error.
425
426         * parser/JSParser.cpp:
427         (JSC::JSParser::parseThrowStatement):
428
429 2010-10-18  Peter Varga  <pvarga@inf.u-szeged.hu>
430
431         Reviewed by Andreas Kling.
432
433         Remove some unnecessary lines of code from Parser.cpp
434         https://bugs.webkit.org/show_bug.cgi?id=47816
435
436         * parser/Parser.cpp:
437
438 2010-10-18  Xan Lopez  <xlopez@igalia.com>
439
440         Reviewed by Csaba Osztrogonác.
441
442         Build broken with JIT disabled
443         https://bugs.webkit.org/show_bug.cgi?id=47801
444
445         This is a regression caused by r69940.
446
447         * interpreter/Interpreter.cpp:
448         (JSC::Interpreter::resolveBase):
449
450 2010-10-18  Zoltan Horvath  <zoltan@webkit.org>
451
452         Reviewed by Darin Adler.
453
454         Change FastAllocBase implementation into a macro
455         https://bugs.webkit.org/show_bug.cgi?id=42998
456
457         It was investigated in bug #33896 that inheriting classes from FastAllocBase 
458         can result in objects getting larger which leads to memory regressions. 
459         Using a macro instead of inheriting classes from FastAllocBase would solve the issue. 
460
461         * wtf/FastAllocBase.h: Add a WTF_MAKE_FAST_ALLOCATED macro
462
463 2010-10-17  Oliver Hunt  <oliver@apple.com>
464
465         Reviewed by Sam Weinig.
466
467         Strict mode: arguments is not valid as the base expression for pre- or post-fix expressions
468         https://bugs.webkit.org/show_bug.cgi?id=47791
469
470         Simple fix, check for arguments in addition to eval.
471
472         * parser/JSParser.cpp:
473         (JSC::JSParser::parseUnaryExpression):
474
475 2010-10-17  Oliver Hunt  <oliver@apple.com>
476
477         Reviewed by Sam Weinig.
478
479         Strict mode: Assignment that would create a global should be a late ReferenceError, not a syntax failure
480         https://bugs.webkit.org/show_bug.cgi?id=47788
481
482         Fixing this required a couple of changes:
483          * resolve_base now has a flag to indicate whether it is being used for a put in strict mode.
484            this allows us to throw an exception when we're doing a completely generic resolve for
485            assignment, and that assignment would create a new global.
486          * There is a new opcode 'op_ensure_property_exists' that is used to determine whether
487            the property being assigned to already exists on the global object.  This currently
488            has no caching, but such caching could be added relatively trivially.  It is only used
489            in the case where we know that a property will be placed on the global object, and
490            we cannot verify that the property already exists.
491
492         In the jit we plant a call to cti_op_resolve_base_strict_put in the effected case rather
493         than making op_resolve_base have an additional runtime branch.
494
495         There's also a new helper function to create the exception for the invalid assignment.
496
497         * bytecode/CodeBlock.cpp:
498         (JSC::CodeBlock::dump):
499         * bytecode/Opcode.h:
500         * bytecompiler/BytecodeGenerator.cpp:
501         (JSC::BytecodeGenerator::emitResolveBase):
502         (JSC::BytecodeGenerator::emitResolveBaseForPut):
503         * bytecompiler/BytecodeGenerator.h:
504         * bytecompiler/NodesCodegen.cpp:
505         (JSC::AssignResolveNode::emitBytecode):
506         (JSC::ForInNode::emitBytecode):
507         * interpreter/Interpreter.cpp:
508         (JSC::Interpreter::resolveBase):
509         (JSC::Interpreter::privateExecute):
510         * jit/JIT.cpp:
511         (JSC::JIT::privateCompileMainPass):
512         * jit/JIT.h:
513         * jit/JITOpcodes.cpp:
514         (JSC::JIT::emit_op_resolve_base):
515         (JSC::JIT::emit_op_ensure_property_exists):
516         * jit/JITOpcodes32_64.cpp:
517         (JSC::JIT::emit_op_resolve_base):
518         (JSC::JIT::emit_op_ensure_property_exists):
519         * jit/JITStubs.cpp:
520         (JSC::DEFINE_STUB_FUNCTION):
521         * jit/JITStubs.h:
522         * parser/JSParser.cpp:
523         (JSC::JSParser::parseProgram):
524         * runtime/ExceptionHelpers.cpp:
525         (JSC::createErrorForInvalidGlobalAssignment):
526         * runtime/ExceptionHelpers.h:
527         * runtime/Operations.h:
528         (JSC::resolveBase):
529
530 2010-10-17  Simon Fraser  <simon.fraser@apple.com>
531
532         First part of fix for Windows build failure. Will wait for the
533         next set of link errors to determine the mangled forms for dtoaRoundSF
534         and dtoaRoundDP.
535
536         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
537
538 2010-10-17  Simon Fraser  <simon.fraser@apple.com>
539
540         Reviewed by Nikolas Zimmermann.
541
542         Very large and small numbers fail to round-trip through CSS
543         https://bugs.webkit.org/show_bug.cgi?id=20674
544         
545         New exports required to use DecimalNumber in WebCore.
546
547         * JavaScriptCore.exp:
548         * JavaScriptCore.xcodeproj/project.pbxproj:
549
550 2010-10-16  Kyusun Kim  <maniagoon@company100.net>
551
552         Reviewed by Alexey Proskuryakov.
553
554         Add using declarations for currentTimeMS() and parseDateFromNullTerminatedCharacters()
555         https://bugs.webkit.org/show_bug.cgi?id=47758
556
557         * wtf/CurrentTime.h:
558         * wtf/DateMath.h:
559
560 2010-10-16  Patrick Gansterer  <paroga@webkit.org>
561
562         Reviewed by Adam Barth.
563
564         Rename StringHasherFunctions.h to StringHasher.h
565         https://bugs.webkit.org/show_bug.cgi?id=47200
566
567         Now StringHasherFunctions.h only contains the StringHasher class, so rename it to the correct name.
568
569         * GNUmakefile.am:
570         * JavaScriptCore.gypi:
571         * JavaScriptCore.xcodeproj/project.pbxproj:
572         * wtf/StringHashFunctions.h: Removed.
573         * wtf/StringHasher.h: Copied from JavaScriptCore/wtf/StringHashFunctions.h.
574         * wtf/text/StringHash.h:
575         * wtf/text/StringImpl.h:
576
577 2010-10-15  Oliver Hunt  <oliver@apple.com>
578
579         Reviewed by Sam Weinig.
580
581         Automatic Semicolon Insertion incorrectly inserts semicolon after break, continue, and return followed by a newline
582         https://bugs.webkit.org/show_bug.cgi?id=47762
583
584         The old YACC parser depended on the lexer for some classes of semicolon insertion.
585         The new parser handles ASI entirely on its own so when the lexer inserts a semicolon
586         on its own the net result is a spurious semicolon in the input stream.  This can result
587         in incorrect parsing in some cases:
588
589         if (0)
590             break
591         ;else {}
592
593         Would result in a parse failure as the output from the lexer is essentially
594
595         if (0)
596              break
597         ;;else
598
599         So the second semicolon is interpreted as a empty statement, which terminates the if,
600         making the else an error.
601
602
603         * parser/JSParser.cpp:
604         (JSC::JSParser::parseThrowStatement):
605           Parsing of throw statement was wrong, and only worked due to the weird behaviour
606           in the lexer
607         * parser/Lexer.cpp:
608         (JSC::Lexer::lex):
609           Remove bogus semicolon insertion from the newline handling
610
611 2010-10-15  Nikolas Zimmermann  <nzimmermann@rim.com>
612
613         Reviewed by Dirk Schulze.
614
615         Replace some String::format() usages by StringConcatenate in WebKit
616         https://bugs.webkit.org/show_bug.cgi?id=47714
617
618         * wtf/text/StringConcatenate.h: Add UChar specific StringTypeAdapter, to accept single UChars in makeString().
619
620 2010-10-15  Ilya Tikhonovsky  <loislo@chromium.org>
621
622         Unreviewed build fix for Debug Leopard which is failng to compile after r69842.
623
624         * yarr/RegexInterpreter.cpp:
625         (JSC::Yarr::ByteCompiler::emitDisjunction):
626
627 2010-10-15  Peter Varga  <pvarga@inf.u-szeged.hu>
628
629         Reviewed by Gavin Barraclough.
630
631         The parenthetical assertion checking isn't working in some cases with YARR
632         Interpreter
633         https://bugs.webkit.org/show_bug.cgi?id=46893
634
635         Calculate the countToCheck value of a TypeParentheticalAssertion by
636         subtracting the number of characters which follows
637         a TypeParentheticalAssertion term with the number of characters which should
638         be matched by terms which are contained
639         in the TypeParentheticalAssertion term (minimumSize).
640
641         * yarr/RegexInterpreter.cpp:
642         (JSC::Yarr::ByteCompiler::emitDisjunction):
643
644 2010-10-14  Nathan Vander Wilt  <nate@andyet.net>
645
646         Reviewed by Darin Adler.
647
648         Added parser for ECMAScript 5 standard date format, so Date.parse can handle RFC 3339 timestamps: https://bugs.webkit.org/show_bug.cgi?id=44632
649
650         * runtime/DateConversion.cpp:
651         (JSC::parseDate):
652         * wtf/DateMath.cpp:
653         (WTF::ymdhmsToSeconds):
654         (WTF::parseES5DateFromNullTerminatedCharacters):
655         * wtf/DateMath.h:
656
657 2010-10-14  Nikolas Zimmermann  <nzimmermann@rim.com>
658
659         Reviewed by Gavin Barraclough.
660
661         Replace lots of String::format() usages by StringConcatenate
662         https://bugs.webkit.org/show_bug.cgi?id=47664
663
664         Add StringTypeAdapter<char> to accept single characters for makeString().
665
666         * wtf/text/StringConcatenate.h:
667         (WTF::makeString):
668
669 2010-10-14  David Goodwin  <david_goodwin@apple.com>
670
671         Reviewed by Darin Adler.
672
673         need way to measure size of JITed ARM code
674         https://bugs.webkit.org/show_bug.cgi?id=47121
675
676         * assembler/LinkBuffer.h:
677         (JSC::LinkBuffer::linkCode):
678         (JSC::LinkBuffer::dumpLinkStats):
679         (JSC::LinkBuffer::dumpCode):
680
681 2010-10-14  Peter Varga  <pvarga@inf.u-szeged.hu>
682
683         Reviewed by Gavin Barraclough.
684
685         The backreference checking isn't working in some cases with YARR Interpreter
686         https://bugs.webkit.org/show_bug.cgi?id=46904
687
688         The Interpreter::matchBackReference() function returns true without matching
689         when a backreference points to the same parentheses where it is.
690
691         * yarr/RegexInterpreter.cpp:
692         (JSC::Yarr::Interpreter::matchBackReference):
693
694 2010-10-14  No'am Rosenthal  <noam.rosenthal@nokia.com>
695
696         Reviewed by Andreas Kling.
697
698         [Qt] Text breaking is slow: enable ICU as an opt-in
699         https://bugs.webkit.org/show_bug.cgi?id=40332
700
701         Added a config flag that enables ICU as an opt-in instead of the Qt specific code.
702         Because of the inclusion of ICU headers, some explicit casting was necessary in UnicodeQt4.h
703
704         * JavaScriptCore.pri:
705         * wtf/unicode/qt4/UnicodeQt4.h:
706         (WTF::Unicode::toLower):
707         (WTF::Unicode::toUpper):
708         (WTF::Unicode::toTitleCase):
709         (WTF::Unicode::foldCase):
710         (WTF::Unicode::isPrintableChar):
711         (WTF::Unicode::isSeparatorSpace):
712         (WTF::Unicode::isPunct):
713         (WTF::Unicode::isLower):
714         (WTF::Unicode::mirroredChar):
715         (WTF::Unicode::combiningClass):
716         (WTF::Unicode::direction):
717         (WTF::Unicode::category):
718
719 2010-10-14  Anton Faern  <anton@bladehawke.com>
720
721         Reviewed by Csaba Osztrogonác.
722
723         https://bugs.webkit.org/show_bug.cgi?id=47658
724         NetBSD was not included in the WTF_PLATFORM_FOO to WTF_OS_FOO
725         change.  This means that OS(NETBSD) is also undefined.
726
727         * wtf/Platform.h: s/_PLATFORM_/_OS_/ for NetBSD
728
729 2010-10-13  David Goodwin  <david_goodwin@apple.com>
730
731         Reviewed by Oliver Hunt.
732
733         ARMv7 JIT should generated conditional branches when possible
734         https://bugs.webkit.org/show_bug.cgi?id=47384
735
736         Use different jump padding sizes for conditional and unconditional
737         jumps (12 bytes and 10 bytes respectively). This allows the JIT to
738         include the IT instruction as part of the conditional jump sequence
739         which in turn allows it to optimize away the IT using an ARMv7 
740         conditional branch instruction. Use 2-byte B(T1) and 4-byte B(T3) for
741         conditional branches when displacement is in range. Also use IT/B(T4)
742         for conditional branch when displacement does not fit in B(T3).
743
744         For unconditional jump, instruction selection options are:
745         B(T2), B(T4), MOVW/MOVT/BX. For conditional jump, instruction selection
746         options are: B(T1), B(T3), IT/B(T4), ITTT/MOVW/MOVT/BX.
747
748         * assembler/ARMv7Assembler.cpp:
749         * assembler/ARMv7Assembler.h:
750         (JSC::ARMv7Assembler::JmpSrc::JmpSrc):
751         (JSC::ARMv7Assembler::ifThenElse):
752         (JSC::ARMv7Assembler::jumpSizeDelta):
753         (JSC::ARMv7Assembler::canCompact):
754         (JSC::ARMv7Assembler::computeJumpType):
755         (JSC::ARMv7Assembler::link):
756         (JSC::ARMv7Assembler::canBeJumpT1):
757         (JSC::ARMv7Assembler::canBeJumpT3):
758         (JSC::ARMv7Assembler::canBeJumpT4):
759         (JSC::ARMv7Assembler::linkJumpT1):
760         (JSC::ARMv7Assembler::linkJumpT3):
761         (JSC::ARMv7Assembler::linkJumpT4):
762         (JSC::ARMv7Assembler::linkConditionalJumpT4):
763         (JSC::ARMv7Assembler::linkBX):
764         (JSC::ARMv7Assembler::linkConditionalBX):
765         (JSC::ARMv7Assembler::linkJumpAbsolute):
766         * assembler/LinkBuffer.h:
767         (JSC::LinkBuffer::linkCode):
768         * assembler/MacroAssemblerARMv7.h:
769         (JSC::MacroAssemblerARMv7::canCompact):
770         (JSC::MacroAssemblerARMv7::computeJumpType):
771         (JSC::MacroAssemblerARMv7::jumpSizeDelta):
772         (JSC::MacroAssemblerARMv7::jump):
773         (JSC::MacroAssemblerARMv7::nearCall):
774         (JSC::MacroAssemblerARMv7::call):
775         (JSC::MacroAssemblerARMv7::ret):
776         (JSC::MacroAssemblerARMv7::tailRecursiveCall):
777         (JSC::MacroAssemblerARMv7::makeJump):
778         (JSC::MacroAssemblerARMv7::makeBranch):
779
780 2010-10-13  Fridrich Strba  <fridrich.strba@bluewin.ch>
781
782         Reviewed by Darin Adler.
783
784         Don't depend on Windows on sched_yield and sched.h
785         https://bugs.webkit.org/show_bug.cgi?id=45543
786
787         sched.h is part of pthreads and sched_yield is implemented
788         in pthreads-win32 as Sleep(0). This patch avoids a gratuitous
789         dependency on pthreads-win32 in this file.
790
791         * wtf/TCSpinLock.h:
792         (TCMalloc_SlowLock):
793
794 2010-10-13  Kwang Yul Seo  <skyul@company100.net>
795
796         Reviewed by Kent Tamura.
797
798         [BREWMP] Port unicode
799         https://bugs.webkit.org/show_bug.cgi?id=45716
800
801         Brew MP port uses only the subset of ICU library to reduce the binary size.
802         Follow the WinCE's implementation.
803
804         * wtf/Platform.h:
805         * wtf/unicode/Unicode.h:
806         * wtf/unicode/brew/UnicodeBrew.cpp: Added.
807         (WTF::Unicode::toLower):
808         (WTF::Unicode::toUpper):
809         (WTF::Unicode::foldCase):
810         (WTF::Unicode::isPrintableChar):
811         (WTF::Unicode::isUpper):
812         (WTF::Unicode::isLower):
813         (WTF::Unicode::isDigit):
814         (WTF::Unicode::isPunct):
815         (WTF::Unicode::isAlphanumeric):
816         (WTF::Unicode::toTitleCase):
817         (WTF::Unicode::direction):
818         (WTF::Unicode::category):
819         (WTF::Unicode::decompositionType):
820         (WTF::Unicode::combiningClass):
821         (WTF::Unicode::mirroredChar):
822         (WTF::Unicode::digitValue):
823         (WTF::Unicode::isSpace):
824         (WTF::Unicode::isLetter):
825         * wtf/unicode/brew/UnicodeBrew.h: Added.
826         (WTF::Unicode::isArabicChar):
827         (WTF::Unicode::isSeparatorSpace):
828         (WTF::Unicode::hasLineBreakingPropertyComplexContext):
829         (WTF::Unicode::hasLineBreakingPropertyComplexContextOrIdeographic):
830         (WTF::Unicode::umemcasecmp):
831
832 2010-10-13  Gavin Barraclough  <barraclough@apple.com>
833
834         Windows build fix.
835
836         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
837
838 2010-10-13  Adam Barth  <abarth@webkit.org>
839
840         Reviewed by Maciej Stachowiak.
841
842         [WTFURL] Add URLQueryCanonicalizer
843         https://bugs.webkit.org/show_bug.cgi?id=45088
844
845         This class canonicalizes the query component of URLs.  The main tricky
846         bit there is the convertCharset function, which I've moved to a
847         templated dependency.  There'll likely be more about that in future
848         patches.
849
850         * JavaScriptCore.xcodeproj/project.pbxproj:
851         * wtf/url/src/URLEscape.cpp: Added.
852         * wtf/url/src/URLEscape.h: Added.
853         (WTF::appendEscapedCharacter):
854         * wtf/url/src/URLQueryCanonicalizer.h: Added.
855         (WTF::URLQueryCanonicalizer::canonicalize):
856         (WTF::URLQueryCanonicalizer::isAllASCII):
857         (WTF::URLQueryCanonicalizer::appendRaw8BitQueryString):
858         (WTF::URLQueryCanonicalizer::convertToQueryEncoding):
859
860 2010-10-13  Gavin Barraclough  <barraclough@apple.com>
861
862         Reviewed by Oliver Hunt.
863
864         Bug 43987 - Downloading using XHR is much slower than before
865         Change StringBuilder to use overcapacity in a StringImpl, rather than a Vector.
866         Fundamentally this should be the same (copies current contents to expand capacity,
867         rather than using a rope), but this approach allows the intermadiate state of the
868         String to be inspected in the buffer without copying to resolve.
869
870         * runtime/JSONObject.cpp:
871         (JSC::Stringifier::appendQuotedString):
872         (JSC::Stringifier::Holder::appendNextProperty):
873             Renamed StringBuilder::size() -> length() (to match other String types).
874
875         * runtime/UStringBuilder.h:
876         (JSC::UStringBuilder::append):
877         (JSC::UStringBuilder::toUString):
878             Update for changes in parent class, can just 'using' the append methods.
879
880         * wtf/text/StringBuilder.cpp: Added.
881         (WTF::StringBuilder::reifyString):
882         (WTF::StringBuilder::resize):
883         (WTF::StringBuilder::reserveCapacity):
884         (WTF::StringBuilder::allocateBuffer):
885         (WTF::StringBuilder::appendUninitialized):
886         (WTF::StringBuilder::append):
887         (WTF::StringBuilder::shrinkToFit):
888         * wtf/text/StringBuilder.h:
889         (WTF::StringBuilder::StringBuilder):
890         (WTF::StringBuilder::append):
891         (WTF::StringBuilder::toString):
892         (WTF::StringBuilder::toStringPreserveCapacity):
893         (WTF::StringBuilder::length):
894         (WTF::StringBuilder::isEmpty):
895         (WTF::StringBuilder::operator[]):
896         (WTF::StringBuilder::clear):
897             Class updated to use overcapacity in a StringImpl, rather than a Vector.
898
899         * Android.mk:
900         * Android.v8.wtf.mk:
901         * GNUmakefile.am:
902         * JavaScriptCore.exp:
903         * JavaScriptCore.gypi:
904         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
905         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
906         * JavaScriptCore.vcproj/jsc/jsc.vcproj:
907         * JavaScriptCore.xcodeproj/project.pbxproj:
908         * wtf/CMakeLists.txt:
909         * wtf/wtf.pri:
910
911 2010-10-13  Adam Roben  <aroben@apple.com>
912
913         Export tryFastRealloc for WebKit2's benefit
914
915         Rubber-stamped by Anders Carlsson.
916
917         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Added
918         tryFastRealloc. Removed RegExpObject::info, which is now exported via
919         JS_EXPORTDATA.
920
921 2010-10-13  Adam Barth  <abarth@webkit.org>
922
923         Reviewed by Maciej Stachowiak.
924
925         [WTFURL] Add a mechanism for classifying types of characters
926         https://bugs.webkit.org/show_bug.cgi?id=45085
927
928         Various characters have different escaping rules depending on where
929         they are in URLs.  This patch adds a table containing that information.
930
931         * JavaScriptCore.xcodeproj/project.pbxproj:
932         * wtf/url/src/URLCharacterTypes.cpp: Added.
933         * wtf/url/src/URLCharacterTypes.h: Added.
934         (WTF::URLCharacterTypes::isQueryChar):
935         (WTF::URLCharacterTypes::isIPv4Char):
936         (WTF::URLCharacterTypes::isHexChar):
937         (WTF::URLCharacterTypes::isCharOfType):
938
939 2010-10-13  Xan Lopez  <xlopez@igalia.com>
940
941         Reviewed by Csaba Osztrogonác.
942
943         Missing parameters for bytecode dump of next_pname
944         https://bugs.webkit.org/show_bug.cgi?id=47590
945
946         * bytecode/CodeBlock.cpp:
947         (JSC::CodeBlock::dump): add missing parameters to the dump.
948
949 2010-10-13  Nikolas Zimmermann  <nzimmermann@rim.com>
950
951         Reviewed by Dirk Schulze.
952
953         Add wtf/text/StringConcatenate
954         https://bugs.webkit.org/show_bug.cgi?id=47584
955
956         Move runtime/StringConcatenate.h to wtf/text, make it work for Strings too.
957         Add a special runtime/UStringConcatenate.h class that inherits from StringConcatenate, and extends it for use with UString.
958         Exactly the same design that has been followed while refactoring StringBuilder.
959
960         The UString variants can all be removed as soon as WTF::String & JSC::UString converge.
961
962         * GNUmakefile.am: Add wtf/text/StringConcatenate.h and runtime/UStringConcatenate.h.
963         * JavaScriptCore.gypi: Ditto.
964         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Ditto.
965         * JavaScriptCore.vcproj/WTF/WTF.vcproj: Ditto.
966         * JavaScriptCore.xcodeproj/project.pbxproj: Ditto.
967         * bytecode/CodeBlock.cpp: s/makeString/makeUString/
968         (JSC::escapeQuotes):
969         (JSC::valueToSourceString):
970         (JSC::constantName):
971         (JSC::idName):
972         (JSC::CodeBlock::registerName):
973         (JSC::regexpToSourceString):
974         (JSC::regexpName):
975         * bytecompiler/NodesCodegen.cpp: Ditto.
976         (JSC::substitute):
977         * profiler/Profiler.cpp: Ditto.
978         (JSC::Profiler::createCallIdentifier):
979         * runtime/ExceptionHelpers.cpp: Ditto.
980         (JSC::createUndefinedVariableError):
981         (JSC::createErrorMessage):
982         (JSC::createInvalidParamError):
983         * runtime/FunctionConstructor.cpp: Ditto.
984         (JSC::constructFunction):
985         * runtime/FunctionPrototype.cpp: Ditto.
986         (JSC::insertSemicolonIfNeeded):
987         * runtime/JSONObject.cpp: Ditto.
988         (JSC::Stringifier::indent):
989         * runtime/JSStringBuilder.h:
990         (JSC::jsMakeNontrivialString):
991         * runtime/RegExpConstructor.cpp: Ditto.
992         (JSC::constructRegExp):
993         * runtime/RegExpObject.cpp: Ditto.
994         (JSC::RegExpObject::match):
995         * runtime/RegExpPrototype.cpp: Ditto.
996         (JSC::regExpProtoFuncCompile):
997         * runtime/StringConcatenate.h: Removed.
998         * runtime/UStringConcatenate.h: Added. Only contains the StringTypeAdapter<JSC::UString> code and the makeUString variants, the rest lives in wtf/text/StringConcatenate.h
999         (JSC::makeUString):
1000         * wtf/text/StringConcatenate.h: Copied from runtime/StringConcatenate.h.
1001         (WTF::makeString):
1002
1003 2010-10-12  Gavin Barraclough  <barraclough@apple.com>
1004
1005         Windows build fix.
1006
1007         * wtf/text/StringBuilder.h:
1008         (WTF::StringBuilder::length):
1009
1010 2010-10-12  Nikolas Zimmermann  <nzimmermann@rim.com>
1011
1012         Reviewed by Gavin Barraclough.
1013
1014         Unify JSC::StringBuilder & WebCore::StringBuilder
1015         https://bugs.webkit.org/show_bug.cgi?id=47538
1016
1017         Move runtime/StringBuilder.h to wtf/text/StringBuilder.h. Rename build() to toString() and return a WTF::String().
1018         Move the append(const JSC::UString&) method into runtime/UStringBuilder.h.
1019         UStringBuilder inherits from StringBuilder.h and adds append(const JSC::UString&) and UString toUString() functionality.
1020
1021         No new code, just move code around.
1022
1023         * GNUmakefile.am: Add wtf/text/StringBuilder.h / runtime/UStringBuilder.h. Remove runtime/StringBuilder.h.
1024         * JavaScriptCore.gypi: Ditto.
1025         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Ditto.
1026         * JavaScriptCore.vcproj/WTF/WTF.vcproj: Ditto.
1027         * JavaScriptCore.xcodeproj/project.pbxproj: Ditto.
1028         * runtime/Executable.cpp:
1029         (JSC::FunctionExecutable::paramString): Use UStringBuilder, instead of StringBuilder. Rename build() -> toUString().
1030         * runtime/FunctionConstructor.cpp:
1031         (JSC::constructFunction): Ditto.
1032         * runtime/JSGlobalObjectFunctions.cpp:
1033         (JSC::globalFuncUnescape): Ditto.
1034         * runtime/JSONObject.cpp:
1035         (JSC::Stringifier::stringify): Ditto.
1036         (JSC::Stringifier::appendQuotedString): Ditto.
1037         (JSC::Stringifier::appendStringifiedValue): Ditto.
1038         (JSC::Stringifier::startNewLine): Ditto.
1039         (JSC::Stringifier::Holder::appendNextProperty): Ditto.
1040         * runtime/LiteralParser.cpp:
1041         (JSC::LiteralParser::Lexer::lexString): Ditto.
1042         * runtime/NumberPrototype.cpp: Remove unneeded JSStringBuilder.h / StringBuilder.h include.
1043         * runtime/StringBuilder.h: Removed.
1044         * runtime/UStringBuilder.h: Added. Inherits from WTF::StringBuilder, extending it by two methods.
1045         (JSC::UStringBuilder::append): append(const JSC::UString&)
1046         (JSC::UStringBuilder::toUString):
1047         * wtf/text/StringBuilder.h: Copied from runtime/StringBuilder.h. Move JSC::UString parts into runtime/UStringBuilder.h
1048         (WTF::StringBuilder::append): Renamed m_buffer to buffer everywhere.
1049         (WTF::StringBuilder::isEmpty): Ditto (+ constify method). 
1050         (WTF::StringBuilder::reserveCapacity): Ditto.
1051         (WTF::StringBuilder::resize): Ditto.
1052         (WTF::StringBuilder::size): Ditto.
1053         (WTF::StringBuilder::operator[]): Ditto.
1054         (WTF::StringBuilder::toString): Ditto (+ renamed from build()). Returns a String, not an UString. The old build() method is now named toUString() and lives in UStringBuilder.
1055
1056 2010-10-12  Michael Saboff  <msaboff@apple.com>
1057
1058         Reviewed by Oliver Hunt.
1059
1060         Cleaned up the processing of replacements after regular expression
1061         processing, especially the case where there wasn't a match.
1062         Changed to use empty strings instead of computing a zero length sub
1063         string.
1064         https://bugs.webkit.org/show_bug.cgi?id=47506
1065
1066         * runtime/StringPrototype.cpp:
1067         (JSC::jsSpliceSubstringsWithSeparators):
1068         (JSC::stringProtoFuncReplace):
1069
1070 2010-10-11  Patrick Gansterer  <paroga@webkit.org>
1071
1072         Unreviewed.
1073
1074         Clang build fix after r69472.
1075         https://bugs.webkit.org/show_bug.cgi?id=46523
1076
1077         * wtf/text/StringHash.h:
1078
1079 2010-10-11  Oliver Hunt  <oliver@apple.com>
1080
1081         Undo last minute change to 32bit build.
1082
1083         * jit/JITOpcodes32_64.cpp:
1084         (JSC::JIT::emit_op_convert_this_strict):
1085
1086 2010-10-11  Brian Weinstein  <bweinstein@apple.com>
1087
1088         Build fix for Windows. Add a necessary export from r69516.
1089
1090         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1091
1092 2010-10-11  Oliver Hunt  <oliver@apple.com>
1093
1094         Fix interpreter build -- was broken by incorrect merge.
1095
1096         * interpreter/Interpreter.cpp:
1097         (JSC::Interpreter::privateExecute):
1098
1099 2010-10-01  Oliver Hunt  <oliver@apple.com>
1100
1101         Reviewed by Gavin Barraclough.
1102
1103         [ES5] Implement strict mode
1104         https://bugs.webkit.org/show_bug.cgi?id=10701
1105
1106         Initial strict mode implementation.  This is the simplest
1107         implementation that could possibly work and adds (hopefully)
1108         all of the restrictions required by strict mode.  There are
1109         a number of inefficiencies, especially in the handling of
1110         arguments and eval as smart implementations would make this
1111         patch more complicated.  
1112
1113         The SyntaxChecker AST builder has become somewhat more complex
1114         as strict mode does require more parse tree information to
1115         validate the syntax.
1116
1117         Summary of major changes to the parser:
1118             * We track when we enter strict mode (this may come as a surprise)
1119             * Strict mode actually requires a degree of AST knowledge to validate
1120               so the SyntaxChecker now produces values that can be used to distinguish
1121               "node" types.
1122             * We now track variables that are written to.  We do this to
1123               statically identify writes to global properties that don't exist
1124               and abort at that point.  This should actually make it possible
1125               to optimise some other cases in the future but for now it's
1126               purely for validity checking.  Currently writes are only tracked
1127               in strict mode code.
1128             * Labels are now tracked as it is now a syntax error to jump to a label
1129               that does not exist (or to use break, continue, or return in a context
1130               where they would be invalid).
1131
1132         Runtime changes:
1133             * In order to get correct hanlding of the Arguments object all
1134               strict mode functions that reference arguments create and tearoff
1135               the arguments object on entry.  This is not strictly necessary
1136               but was the least work necessary to get the correct behaviour.
1137             * PutPropertySlot now tracks whether it is being used for a strict
1138               mode write, and if so Object::put will throw when a write can't be
1139               completed.
1140             * StrictEvalActivation was added as an "activation" object for strict
1141               mode eval (so that strict eval does not introduce new variables into
1142               the containing scope).
1143
1144         * CMakeLists.txt:
1145         * GNUmakefile.am:
1146         * JavaScriptCore.exp:
1147         * JavaScriptCore.pro:
1148         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
1149         * JavaScriptCore.xcodeproj/project.pbxproj:
1150         * bytecode/CodeBlock.cpp:
1151         (JSC::CodeBlock::dump):
1152         (JSC::CodeBlock::CodeBlock):
1153         (JSC::CodeBlock::reparseForExceptionInfoIfNecessary):
1154         * bytecode/CodeBlock.h:
1155         (JSC::CodeBlock::isStrictMode):
1156         * bytecode/EvalCodeCache.h:
1157         (JSC::EvalCodeCache::get):
1158         * bytecode/Opcode.h:
1159         * bytecompiler/BytecodeGenerator.cpp:
1160         (JSC::BytecodeGenerator::BytecodeGenerator):
1161         (JSC::BytecodeGenerator::createArgumentsIfNecessary):
1162         (JSC::BytecodeGenerator::emitReturn):
1163         * bytecompiler/BytecodeGenerator.h:
1164         (JSC::BytecodeGenerator::isStrictMode):
1165         (JSC::BytecodeGenerator::makeFunction):
1166         * debugger/Debugger.cpp:
1167         (JSC::evaluateInGlobalCallFrame):
1168         * debugger/DebuggerCallFrame.cpp:
1169         (JSC::DebuggerCallFrame::evaluate):
1170         * interpreter/Interpreter.cpp:
1171         (JSC::Interpreter::callEval):
1172         (JSC::Interpreter::unwindCallFrame):
1173         (JSC::Interpreter::execute):
1174         (JSC::Interpreter::privateExecute):
1175         * jit/JIT.cpp:
1176         (JSC::JIT::privateCompileMainPass):
1177         (JSC::JIT::privateCompileSlowCases):
1178         * jit/JIT.h:
1179         * jit/JITOpcodes.cpp:
1180         (JSC::JIT::emit_op_get_pnames):
1181         (JSC::JIT::emit_op_convert_this_strict):
1182         (JSC::JIT::emitSlow_op_convert_this_strict):
1183         * jit/JITOpcodes32_64.cpp:
1184         (JSC::JIT::emit_op_get_pnames):
1185         * jit/JITStubs.cpp:
1186         (JSC::DEFINE_STUB_FUNCTION):
1187         * jit/JITStubs.h:
1188         * parser/ASTBuilder.h:
1189         (JSC::ASTBuilder::createFunctionBody):
1190         (JSC::ASTBuilder::isResolve):
1191         * parser/JSParser.cpp:
1192         (JSC::JSParser::next):
1193         (JSC::JSParser::startLoop):
1194         (JSC::JSParser::endLoop):
1195         (JSC::JSParser::startSwitch):
1196         (JSC::JSParser::endSwitch):
1197         (JSC::JSParser::setStrictMode):
1198         (JSC::JSParser::strictMode):
1199         (JSC::JSParser::isValidStrictMode):
1200         (JSC::JSParser::declareParameter):
1201         (JSC::JSParser::breakIsValid):
1202         (JSC::JSParser::pushLabel):
1203         (JSC::JSParser::popLabel):
1204         (JSC::JSParser::hasLabel):
1205         (JSC::JSParser::DepthManager::DepthManager):
1206         (JSC::JSParser::DepthManager::~DepthManager):
1207         (JSC::JSParser::Scope::Scope):
1208         (JSC::JSParser::Scope::startSwitch):
1209         (JSC::JSParser::Scope::endSwitch):
1210         (JSC::JSParser::Scope::startLoop):
1211         (JSC::JSParser::Scope::endLoop):
1212         (JSC::JSParser::Scope::inLoop):
1213         (JSC::JSParser::Scope::breakIsValid):
1214         (JSC::JSParser::Scope::pushLabel):
1215         (JSC::JSParser::Scope::popLabel):
1216         (JSC::JSParser::Scope::hasLabel):
1217         (JSC::JSParser::Scope::isFunction):
1218         (JSC::JSParser::Scope::declareVariable):
1219         (JSC::JSParser::Scope::declareWrite):
1220         (JSC::JSParser::Scope::deleteProperty):
1221         (JSC::JSParser::Scope::declareParameter):
1222         (JSC::JSParser::Scope::setNeedsFullActivation):
1223         (JSC::JSParser::Scope::collectFreeVariables):
1224         (JSC::JSParser::Scope::getUncapturedWrittenVariables):
1225         (JSC::JSParser::Scope::getDeletedVariables):
1226         (JSC::JSParser::Scope::setStrictMode):
1227         (JSC::JSParser::Scope::strictMode):
1228         (JSC::JSParser::Scope::isValidStrictMode):
1229         (JSC::JSParser::pushScope):
1230         (JSC::JSParser::popScope):
1231         (JSC::JSParser::declareVariable):
1232         (JSC::JSParser::declareWrite):
1233         (JSC::JSParser::deleteProperty):
1234         (JSC::jsParse):
1235         (JSC::JSParser::JSParser):
1236         (JSC::JSParser::parseProgram):
1237         (JSC::JSParser::parseSourceElements):
1238         (JSC::JSParser::parseDoWhileStatement):
1239         (JSC::JSParser::parseWhileStatement):
1240         (JSC::JSParser::parseVarDeclarationList):
1241         (JSC::JSParser::parseConstDeclarationList):
1242         (JSC::JSParser::parseForStatement):
1243         (JSC::JSParser::parseBreakStatement):
1244         (JSC::JSParser::parseContinueStatement):
1245         (JSC::JSParser::parseReturnStatement):
1246         (JSC::JSParser::parseWithStatement):
1247         (JSC::JSParser::parseSwitchStatement):
1248         (JSC::JSParser::parseSwitchClauses):
1249         (JSC::JSParser::parseSwitchDefaultClause):
1250         (JSC::JSParser::parseTryStatement):
1251         (JSC::JSParser::parseBlockStatement):
1252         (JSC::JSParser::parseStatement):
1253         (JSC::JSParser::parseFormalParameters):
1254         (JSC::JSParser::parseFunctionBody):
1255         (JSC::JSParser::parseFunctionInfo):
1256         (JSC::JSParser::parseFunctionDeclaration):
1257         (JSC::JSParser::parseExpressionOrLabelStatement):
1258         (JSC::JSParser::parseIfStatement):
1259         (JSC::JSParser::parseExpression):
1260         (JSC::JSParser::parseAssignmentExpression):
1261         (JSC::JSParser::parseConditionalExpression):
1262         (JSC::JSParser::parseBinaryExpression):
1263         (JSC::JSParser::parseStrictObjectLiteral):
1264         (JSC::JSParser::parsePrimaryExpression):
1265         (JSC::JSParser::parseMemberExpression):
1266         (JSC::JSParser::parseUnaryExpression):
1267         * parser/JSParser.h:
1268         * parser/Lexer.cpp:
1269         (JSC::Lexer::parseString):
1270         (JSC::Lexer::lex):
1271         * parser/Lexer.h:
1272         (JSC::Lexer::isReparsing):
1273         * parser/Nodes.cpp:
1274         (JSC::ScopeNode::ScopeNode):
1275         (JSC::FunctionBodyNode::FunctionBodyNode):
1276         (JSC::FunctionBodyNode::create):
1277         * parser/Nodes.h:
1278         (JSC::ScopeNode::isStrictMode):
1279         * parser/Parser.cpp:
1280         (JSC::Parser::parse):
1281         * parser/Parser.h:
1282         (JSC::Parser::parse):
1283         * parser/SyntaxChecker.h:
1284         (JSC::SyntaxChecker::SyntaxChecker):
1285         (JSC::SyntaxChecker::makeFunctionCallNode):
1286         (JSC::SyntaxChecker::appendToComma):
1287         (JSC::SyntaxChecker::createCommaExpr):
1288         (JSC::SyntaxChecker::makeAssignNode):
1289         (JSC::SyntaxChecker::makePrefixNode):
1290         (JSC::SyntaxChecker::makePostfixNode):
1291         (JSC::SyntaxChecker::makeTypeOfNode):
1292         (JSC::SyntaxChecker::makeDeleteNode):
1293         (JSC::SyntaxChecker::makeNegateNode):
1294         (JSC::SyntaxChecker::makeBitwiseNotNode):
1295         (JSC::SyntaxChecker::createLogicalNot):
1296         (JSC::SyntaxChecker::createUnaryPlus):
1297         (JSC::SyntaxChecker::createVoid):
1298         (JSC::SyntaxChecker::thisExpr):
1299         (JSC::SyntaxChecker::createResolve):
1300         (JSC::SyntaxChecker::createObjectLiteral):
1301         (JSC::SyntaxChecker::createArray):
1302         (JSC::SyntaxChecker::createNumberExpr):
1303         (JSC::SyntaxChecker::createString):
1304         (JSC::SyntaxChecker::createBoolean):
1305         (JSC::SyntaxChecker::createNull):
1306         (JSC::SyntaxChecker::createBracketAccess):
1307         (JSC::SyntaxChecker::createDotAccess):
1308         (JSC::SyntaxChecker::createRegex):
1309         (JSC::SyntaxChecker::createNewExpr):
1310         (JSC::SyntaxChecker::createConditionalExpr):
1311         (JSC::SyntaxChecker::createAssignResolve):
1312         (JSC::SyntaxChecker::createFunctionExpr):
1313         (JSC::SyntaxChecker::createFunctionBody):
1314         (JSC::SyntaxChecker::appendBinaryExpressionInfo):
1315         (JSC::SyntaxChecker::operatorStackPop):
1316         * runtime/Arguments.cpp:
1317         (JSC::Arguments::createStrictModeCallerIfNecessary):
1318         (JSC::Arguments::createStrictModeCalleeIfNecessary):
1319         (JSC::Arguments::getOwnPropertySlot):
1320         (JSC::Arguments::getOwnPropertyDescriptor):
1321         (JSC::Arguments::put):
1322         (JSC::Arguments::deleteProperty):
1323         * runtime/Arguments.h:
1324         (JSC::Arguments::Arguments):
1325         * runtime/CommonIdentifiers.cpp:
1326         (JSC::CommonIdentifiers::CommonIdentifiers):
1327         * runtime/CommonIdentifiers.h:
1328         * runtime/Error.cpp:
1329         (JSC::StrictModeTypeErrorFunction::StrictModeTypeErrorFunction):
1330         (JSC::StrictModeTypeErrorFunction::constructThrowTypeError):
1331         (JSC::StrictModeTypeErrorFunction::getConstructData):
1332         (JSC::StrictModeTypeErrorFunction::callThrowTypeError):
1333         (JSC::StrictModeTypeErrorFunction::getCallData):
1334         (JSC::createTypeErrorFunction):
1335         * runtime/Error.h:
1336         * runtime/Executable.cpp:
1337         (JSC::EvalExecutable::EvalExecutable):
1338         (JSC::ProgramExecutable::ProgramExecutable):
1339         (JSC::FunctionExecutable::FunctionExecutable):
1340         (JSC::EvalExecutable::compileInternal):
1341         (JSC::ProgramExecutable::checkSyntax):
1342         (JSC::ProgramExecutable::compileInternal):
1343         (JSC::FunctionExecutable::compileForCallInternal):
1344         (JSC::FunctionExecutable::compileForConstructInternal):
1345         (JSC::FunctionExecutable::reparseExceptionInfo):
1346         (JSC::EvalExecutable::reparseExceptionInfo):
1347         (JSC::FunctionExecutable::fromGlobalCode):
1348         (JSC::ProgramExecutable::reparseExceptionInfo):
1349         * runtime/Executable.h:
1350         (JSC::ScriptExecutable::ScriptExecutable):
1351         (JSC::ScriptExecutable::isStrictMode):
1352         (JSC::EvalExecutable::create):
1353         (JSC::FunctionExecutable::create):
1354         * runtime/JSActivation.cpp:
1355         (JSC::JSActivation::toStrictThisObject):
1356         * runtime/JSActivation.h:
1357         * runtime/JSFunction.cpp:
1358         (JSC::createDescriptorForThrowingProperty):
1359         (JSC::JSFunction::getOwnPropertySlot):
1360         (JSC::JSFunction::getOwnPropertyDescriptor):
1361         (JSC::JSFunction::put):
1362         * runtime/JSGlobalData.cpp:
1363         (JSC::JSGlobalData::JSGlobalData):
1364         * runtime/JSGlobalData.h:
1365         * runtime/JSGlobalObject.cpp:
1366         (JSC::JSGlobalObject::reset):
1367         * runtime/JSGlobalObject.h:
1368         (JSC::JSGlobalObject::internalFunctionStructure):
1369         * runtime/JSGlobalObjectFunctions.cpp:
1370         (JSC::globalFuncEval):
1371         * runtime/JSObject.cpp:
1372         (JSC::JSObject::put):
1373         (JSC::JSObject::toStrictThisObject):
1374         (JSC::throwTypeError):
1375         * runtime/JSObject.h:
1376         (JSC::JSObject::isStrictModeFunction):
1377         (JSC::JSObject::putDirectInternal):
1378         (JSC::JSObject::putDirect):
1379         (JSC::JSValue::putDirect):
1380         (JSC::JSValue::toStrictThisObject):
1381         * runtime/JSStaticScopeObject.cpp:
1382         (JSC::JSStaticScopeObject::toStrictThisObject):
1383         * runtime/JSStaticScopeObject.h:
1384         * runtime/JSValue.h:
1385         * runtime/JSZombie.h:
1386         (JSC::JSZombie::toStrictThisObject):
1387         * runtime/PutPropertySlot.h:
1388         (JSC::PutPropertySlot::PutPropertySlot):
1389         (JSC::PutPropertySlot::isStrictMode):
1390         * runtime/StrictEvalActivation.cpp: Added.
1391         (JSC::StrictEvalActivation::StrictEvalActivation):
1392         (JSC::StrictEvalActivation::deleteProperty):
1393         (JSC::StrictEvalActivation::toThisObject):
1394         (JSC::StrictEvalActivation::toStrictThisObject):
1395         * runtime/StrictEvalActivation.h: Added.
1396
1397 2010-10-10  Patrick Gansterer  <paroga@webkit.org>
1398
1399         Unreviewed.
1400
1401         Windows build fix after r69472.
1402
1403         * wtf/text/StringHash.h:
1404         (WTF::CaseFoldingHash::hash):
1405
1406 2010-10-10  Patrick Gansterer  <paroga@webkit.org>
1407
1408         Reviewed by Adam Barth.
1409
1410         Use WTF::StringHasher in WTF::CaseFoldingHash
1411         https://bugs.webkit.org/show_bug.cgi?id=46523
1412
1413         * wtf/text/StringHash.h:
1414         (WTF::CaseFoldingHash::foldCase):
1415         (WTF::CaseFoldingHash::hash):
1416
1417 2010-10-09  Pratik Solanki  <psolanki@apple.com>
1418
1419         Reviewed by Xan Lopez.
1420
1421         https://bugs.webkit.org/show_bug.cgi?id=47445
1422         Remove unused function WTFThreadData::initializeIdentifierTable()
1423
1424         * wtf/WTFThreadData.h:
1425
1426 2010-10-08  Michael Saboff  <msaboff@apple.com>
1427
1428         Reviewed by Darin Adler.
1429
1430         Added check to start of subexpression being positive before using
1431         subexpression in replacement.
1432         https://bugs.webkit.org/show_bug.cgi?id=47324
1433
1434         * runtime/StringPrototype.cpp:
1435         (JSC::substituteBackreferencesSlow):
1436
1437 2010-10-08  Chris Evans  <cevans@google.com>
1438
1439         Reviewed by David Levin.
1440
1441         https://bugs.webkit.org/show_bug.cgi?id=47393
1442
1443         Use unsigned consistently to check for max StringImpl length.
1444         Add a few integer overflow checks.
1445         Uses the existing paradigm of CRASH() when we can't reasonably handle a crazily large request.
1446
1447         * wtf/text/WTFString.cpp:
1448         * wtf/text/StringImpl.h:
1449         * wtf/text/StringImpl.cpp:
1450         Better use of size_t vs. unsigned; check for integer overflows.
1451
1452 2010-10-07  David Goodwin  <david_goodwin@apple.com>
1453
1454         Reviewed by Oliver Hunt.
1455
1456         ARM JIT generates undefined operations due to partially uninitialized ShiftTypeAndAmount
1457         https://bugs.webkit.org/show_bug.cgi?id=47356
1458
1459         * assembler/ARMv7Assembler.h:
1460
1461 2010-10-06  Chris Evans  <cevans@google.com>
1462
1463         Reviewed by David Levin.
1464
1465         https://bugs.webkit.org/show_bug.cgi?id=47248
1466
1467         Use size_t consistently in CString, to prevent theoretical trouble
1468         with > 4GB strings on 64-bit platforms.
1469
1470         * wtf/text/CString.h:
1471         * wtf/text/CString.cpp:
1472         Use size_t for string lengths.
1473         * wtf/MD5.cpp:
1474         (WTF::expectMD5): use suitable format string + cast for size_t.
1475         * JavaScriptCore.exp:
1476         Update symbol name.
1477
1478 2010-10-06  Anders Carlsson  <andersca@apple.com>
1479
1480         Reviewed by Sam Weinig.
1481
1482         Start cleaning up Arguments.h
1483         https://bugs.webkit.org/show_bug.cgi?id=47304
1484
1485         * wtf/TypeTraits.h:
1486         * wtf/TypeTraits.cpp:
1487         Add RemoveReference type trait.
1488
1489 2010-10-06  Rafael Antognolli  <antognolli@profusion.mobi>
1490
1491         Unreviewed build fix.
1492
1493         [EFL] Build fix for glib support.
1494         https://bugs.webkit.org/show_bug.cgi?id=47221
1495
1496         If compiling with GLib support enabled, we also need to link wtf against
1497         glib library.
1498
1499         * wtf/CMakeListsEfl.txt:
1500
1501 2010-10-05  Kwang Yul Seo  <skyul@company100.net>
1502
1503         Reviewed by Gavin Barraclough.
1504
1505         [BREWMP] Port ExecutableAllocator::cacheFlush to enable ARM JIT
1506         https://bugs.webkit.org/show_bug.cgi?id=47117
1507
1508         Use IMemCache1 to flush data cache and invalidate instruction cache.
1509
1510         * jit/ExecutableAllocator.h:
1511         (JSC::ExecutableAllocator::cacheFlush):
1512
1513 2010-10-05  Leandro Pereira  <leandro@profusion.mobi>
1514
1515         Unreviewed. Build fix.
1516
1517         Moved "jsc" directory to "shell", so that the name does not clash with the
1518         JavaScriptCore shell in some build systems.
1519         http://webkit.org/b/47049
1520
1521         * CMakeLists.txt: Changed reference from "jsc" to "shell".
1522         * jsc: Removed.
1523         * jsc/CMakeLists.txt: Removed.
1524         * jsc/CMakeListsEfl.txt: Removed.
1525         * shell: Copied from JavaScriptCore/jsc.
1526
1527 2010-10-05  Kwang Yul Seo  <skyul@company100.net>
1528
1529         Reviewed by Kent Tamura.
1530
1531         [BREWMP] Use PlatformRefPtr in randomNumber
1532         https://bugs.webkit.org/show_bug.cgi?id=46989
1533
1534         Use PlatformRefPtr to free memory automatically.
1535
1536         * wtf/RandomNumber.cpp:
1537         (WTF::randomNumber):
1538
1539 2010-10-05  Oliver Hunt  <oliver@apple.com>
1540
1541         Reviewed by Darin Adler.
1542
1543         REGRESSION(r68338): JavaScript error on PowerPC only (crashes on Interpreter built for x86_64)
1544         https://bugs.webkit.org/show_bug.cgi?id=46690
1545
1546         Use the correct register value when initialising the arguments
1547         object in the interpreter.  This is covered by existing tests.
1548
1549         * interpreter/Interpreter.cpp:
1550         (JSC::Interpreter::privateExecute):
1551
1552 2010-10-04  David Goodwin  <david_goodwin@apple.com>
1553
1554         Reviewed by Oliver Hunt.
1555
1556         ARMv7 JIT should take advantage of 2-byte branches to reduce code size
1557         https://bugs.webkit.org/show_bug.cgi?id=47007
1558
1559         * assembler/ARMv7Assembler.cpp:
1560         * assembler/ARMv7Assembler.h:
1561         (JSC::ARMv7Assembler::computeJumpType):
1562         (JSC::ARMv7Assembler::link):
1563         (JSC::ARMv7Assembler::canBeJumpT2):
1564         (JSC::ARMv7Assembler::canBeJumpT4):
1565         (JSC::ARMv7Assembler::linkBX):
1566         (JSC::ARMv7Assembler::linkJumpT4):
1567         (JSC::ARMv7Assembler::linkJumpT2):
1568         (JSC::ARMv7Assembler::linkJumpAbsolute):
1569
1570 2010-10-04  Gyuyoung Kim  <gyuyoung.kim@samsung.com>
1571
1572         Reviewed by Antonio Gomes.
1573
1574         [EFL] Use fast malloc for WebKit EFL
1575         https://bugs.webkit.org/show_bug.cgi?id=46691
1576
1577         Use fast malloc for WebKit EFL because the fast malloc is to allocate
1578         memory quickly.
1579
1580         * wtf/CMakeListsEfl.txt:
1581
1582 2010-10-04  Oliver Hunt  <oliver@apple.com>
1583
1584         Reviewed by Geoff Garen.
1585
1586         Lazily create activation objects
1587         https://bugs.webkit.org/show_bug.cgi?id=47107
1588
1589         Make it possible to lazily create the activation object
1590         for a function that needs one.  This allows us to reduce
1591         the overhead of entering a function that may require
1592         an activation in some cases, but not always.
1593
1594         This does make exception handling a little more complex as
1595         it's now necessary to verify that a callframes activation
1596         has been created, and create it if not, in all of the
1597         paths used in exception handling.
1598
1599         We also need to add logic to check for the existence of
1600         the activation in the scoped_var opcodes, as well as
1601         op_ret, op_ret_object_or_this and op_tearoff_activation
1602         so that we can avoid creating an activation unnecesarily
1603         on function exit. 
1604
1605         * bytecode/CodeBlock.cpp:
1606         (JSC::CodeBlock::dump):
1607         (JSC::CodeBlock::reparseForExceptionInfoIfNecessary):
1608         (JSC::CodeBlock::createActivation):
1609         * bytecode/CodeBlock.h:
1610         (JSC::CodeBlock::setActivationRegister):
1611         (JSC::CodeBlock::activationRegister):
1612         * bytecode/Opcode.h:
1613         * bytecompiler/BytecodeGenerator.cpp:
1614         (JSC::BytecodeGenerator::BytecodeGenerator):
1615         (JSC::BytecodeGenerator::emitNewFunctionInternal):
1616         (JSC::BytecodeGenerator::emitNewFunctionExpression):
1617         (JSC::BytecodeGenerator::createActivationIfNecessary):
1618         * bytecompiler/BytecodeGenerator.h:
1619         * interpreter/Interpreter.cpp:
1620         (JSC::Interpreter::resolveSkip):
1621         (JSC::Interpreter::resolveGlobalDynamic):
1622         (JSC::Interpreter::resolveBase):
1623         (JSC::Interpreter::unwindCallFrame):
1624         (JSC::Interpreter::throwException):
1625         (JSC::Interpreter::privateExecute):
1626         * jit/JIT.cpp:
1627         (JSC::JIT::privateCompileMainPass):
1628         * jit/JIT.h:
1629         * jit/JITCall32_64.cpp:
1630         (JSC::JIT::emit_op_ret):
1631         (JSC::JIT::emit_op_ret_object_or_this):
1632         * jit/JITOpcodes.cpp:
1633         (JSC::JIT::emit_op_end):
1634         (JSC::JIT::emit_op_get_scoped_var):
1635         (JSC::JIT::emit_op_put_scoped_var):
1636         (JSC::JIT::emit_op_tear_off_activation):
1637         (JSC::JIT::emit_op_ret):
1638         (JSC::JIT::emit_op_ret_object_or_this):
1639         (JSC::JIT::emit_op_create_activation):
1640         (JSC::JIT::emit_op_resolve_global_dynamic):
1641         * jit/JITOpcodes32_64.cpp:
1642         (JSC::JIT::emit_op_get_scoped_var):
1643         (JSC::JIT::emit_op_put_scoped_var):
1644         (JSC::JIT::emit_op_tear_off_activation):
1645         (JSC::JIT::emit_op_create_activation):
1646         * jit/JITStubs.cpp:
1647         (JSC::DEFINE_STUB_FUNCTION):
1648
1649 2010-10-04  Adam Barth  <abarth@webkit.org>
1650
1651         Reviewed by Sam Weinig.
1652
1653         Remove ENABLE_SANDBOX
1654         https://bugs.webkit.org/show_bug.cgi?id=47032
1655
1656         * Configurations/FeatureDefines.xcconfig:
1657
1658 2010-10-01  Pratik Solanki  <psolanki@apple.com>
1659
1660         Reviewed by Geoffrey Garen.
1661         Specify ALWAYS_INLINE at function declaration not function definition
1662         https://bugs.webkit.org/show_bug.cgi?id=46960
1663
1664         For functions defined with ALWAYS_INLINE, add the attribute to the declaration as well.
1665
1666         * bytecompiler/BytecodeGenerator.h:
1667         * wtf/FastMalloc.cpp:
1668
1669 2010-10-01  Kwang Yul Seo  <skyul@company100.net>
1670
1671         Unreviewed.
1672
1673         [BREWMP] Change Collector BLOCK_SIZE to 64KB
1674         https://bugs.webkit.org/show_bug.cgi?id=46436
1675
1676         Lower BLOCK_SIZE to 64KB because Brew MP runs on low end devices.
1677
1678         * runtime/Collector.h:
1679
1680 2010-10-01  Viatcheslav Ostapenko  <ostapenko.viatcheslav@nokia.com>
1681
1682         Reviewed by Andreas Kling.
1683
1684         [Qt] Stack overflow on symbian platform.
1685         https://bugs.webkit.org/show_bug.cgi?id=40598
1686         
1687         Move big allocation in arrayProtoFuncToString from stack to heap.
1688         JSC::arrayProtoFuncToString function can be called recursivly and
1689         1K allocation on stack cahse stack overflow.
1690         Can be useful for other platforms with limited stack size.
1691
1692         * runtime/ArrayPrototype.cpp:
1693         (JSC::arrayProtoFuncToString):
1694
1695 2010-09-30  Kwang Yul Seo  <skyul@company100.net>
1696
1697         Reviewed by Kent Tamura.
1698
1699         [BREWMP] Add a factory function which returns an instance wrapped in PlatformRefPtr.
1700         https://bugs.webkit.org/show_bug.cgi?id=46373
1701
1702         A Brew MP instance has reference count 1 when it is created, so call adoptPlatformRef
1703         to wrap the instance in PlatformRefPtr.
1704
1705         * wtf/brew/ShellBrew.h:
1706         (WTF::createRefPtrInstance):
1707
1708 2010-09-30  Kwang Yul Seo  <skyul@company100.net>
1709
1710         Reviewed by Kent Tamura.
1711
1712         [BREWMP] Port PlatformRefPtr
1713         https://bugs.webkit.org/show_bug.cgi?id=46370
1714
1715         Implement refPlatformPtr and derefPlatformPtr to use PlatformRefPtr in Brew MP.
1716
1717         * wtf/brew/RefPtrBrew.h: Added.
1718         (WTF::refPlatformPtr):
1719         (WTF::derefPlatformPtr):
1720
1721 2010-09-29  Sam Weinig  <sam@webkit.org>
1722
1723         Reviewed by Darin Adler.
1724
1725         Add additional checks to StringBuffer.
1726         <rdar://problem/7756381>
1727
1728         * wtf/text/StringBuffer.h:
1729         (WTF::StringBuffer::StringBuffer):
1730         (WTF::StringBuffer::resize):
1731
1732 2010-09-30  Chris Marrin  <cmarrin@apple.com>
1733
1734         Reviewed by Simon Fraser.
1735
1736         Make 2D accelerated canvas rendering build on Mac
1737         https://bugs.webkit.org/show_bug.cgi?id=46007
1738         
1739         Added ACCELERATED_2D_CANVAS to FeatureDefines
1740
1741         * Configurations/FeatureDefines.xcconfig:
1742
1743 2010-09-30  Kevin Ollivier  <kevino@theolliviers.com>
1744
1745         [wx] wxMSW build fix. Make sure we copy the compiler flags and remove exception handling from
1746         the copy so as not to alter global settings.
1747
1748         * wscript:
1749
1750 2010-09-30  Peter Varga  <pvarga@inf.u-szeged.hu>
1751
1752         Reviewed by Gavin Barraclough.
1753
1754         The case-insensitivity backreference checking isn't working with YARR
1755         Interpreter
1756         https://bugs.webkit.org/show_bug.cgi?id=46882
1757
1758         Add ignorecase checking to the Interpreter::tryConsumeBackReference() function.
1759
1760         * yarr/RegexInterpreter.cpp:
1761         (JSC::Yarr::Interpreter::tryConsumeBackReference):
1762
1763 2010-09-30  Kwang Yul Seo  <skyul@company100.net>
1764
1765         Reviewed by Andreas Kling.
1766
1767         [BREWMP] Leave initializeRandomNumberGenerator empty.
1768         https://bugs.webkit.org/show_bug.cgi?id=46851
1769
1770         On Brew MP, AEECLSID_RANDOM initializes itself.
1771
1772         * wtf/RandomNumberSeed.h:
1773         (WTF::initializeRandomNumberGenerator):
1774
1775 2010-09-30  Gabor Loki  <loki@webkit.org>
1776
1777         Reviewed by Csaba Osztrogonác.
1778
1779         Remove unnecessary cacheFlush calls from Thumb-2
1780         https://bugs.webkit.org/show_bug.cgi?id=46702
1781
1782         * assembler/ARMv7Assembler.h:
1783         (JSC::ARMv7Assembler::relinkCall):
1784         (JSC::ARMv7Assembler::repatchInt32):
1785         (JSC::ARMv7Assembler::repatchPointer):
1786
1787 2010-09-29  Patrick Gansterer  <paroga@webkit.org>
1788
1789         Unreviewed.
1790
1791         Next try to fix cygwin build.
1792
1793         * wtf/Assertions.cpp:
1794
1795 2010-09-29  Patrick Gansterer  <paroga@webkit.org>
1796
1797         Unreviewed.
1798
1799         Build fix for cygwin #2. It's OS(WINDOWS), not OS(WIN).
1800
1801         * wtf/Assertions.cpp:
1802
1803 2010-09-29  Patrick Gansterer  <paroga@webkit.org>
1804
1805         Unreviewed.
1806
1807         Build fix for cygwin.
1808
1809         * wtf/Assertions.cpp:
1810
1811 2010-09-29  Patrick Gansterer  <paroga@webkit.org>
1812
1813         Reviewed by Andreas Kling.
1814
1815         [WINCE] Buildfix for Assertions.cpp after r68511.
1816         https://bugs.webkit.org/show_bug.cgi?id=46807
1817
1818         Some, but not all WinCE environments have support for IsDebuggerPresent().
1819         Add HAVE(ISDEBUGGERPRESENT) to make this a build option.
1820         HAVE(ISDEBUGGERPRESENT) will be 1 for all OS(WIN) by default.
1821
1822         * wtf/Assertions.cpp:
1823         * wtf/Platform.h:
1824
1825 2010-09-29  Peter Varga  <pvarga@inf.u-szeged.hu>
1826
1827         Reviewed by Csaba Osztrogonác.
1828
1829         JSC compile fails on 32bit platform when Regexp Tracing is enabled
1830         https://bugs.webkit.org/show_bug.cgi?id=46713
1831
1832         Fix the cast of pointer in regexp tracing to avoid the warning.
1833
1834         * runtime/RegExp.cpp:
1835         (JSC::RegExp::match):
1836
1837 2010-09-28  Anders Carlsson  <andersca@apple.com>
1838
1839         Reviewed by Sam Weinig.
1840
1841         Begin hooking up painting in the plug-in process
1842         https://bugs.webkit.org/show_bug.cgi?id=46766
1843
1844         * JavaScriptCore.exp:
1845         Add tryFastRealloc, used by WebKit2.
1846
1847 2010-09-28  Philippe Normand  <pnormand@igalia.com>
1848
1849         Reviewed by Martin Robinson.
1850
1851         Guard GRefPtr/GOwnPtr files with ENABLE(GLIB_SUPPORT)
1852         https://bugs.webkit.org/show_bug.cgi?id=46721
1853
1854         Enable GOwnPtr/GRefPtr build only if glib support has been
1855         explicitly enabled using the WTF_ENABLE_GLIB_SUPPORT macro.
1856
1857         * wtf/gobject/GOwnPtr.cpp:
1858         * wtf/gobject/GOwnPtr.h:
1859         * wtf/gobject/GRefPtr.cpp:
1860         * wtf/gobject/GRefPtr.h:
1861
1862 2010-09-28  İsmail Dönmez  <ismail@namtrac.org>
1863
1864         Reviewed by Andreas Kling.
1865
1866         Test for WINCE instead of WINCEBASIC, compiler always defines WINCE.
1867         Remove reference to unexisting path JavaScriptCore/os-wince.
1868
1869         * JavaScriptCore.pri:
1870         * wtf/Assertions.cpp:
1871
1872 2010-09-27  Michael Saboff  <msaboff@apple.com>
1873
1874         Reviewed by Geoffrey Garen.
1875
1876         Changed the initialization of JSArray objects to have space for 
1877         3 elements for the constructor that takes a ArgList argument.
1878         This improves v8-deltablue performance by about 2.8% by reducing 
1879         the number of realloc() calls.
1880         https://bugs.webkit.org/show_bug.cgi?id=46664
1881
1882         * runtime/JSArray.cpp:
1883         (JSC::JSArray::JSArray):
1884
1885 2010-09-27  Gavin Barraclough  <barraclough@apple.com>
1886
1887         Reviewed by Darin Adler.
1888
1889         Bug 46680 - Inlining string concatenation can regress interpreter performance
1890         <rdar://problem/8362752> REGRESSION: ~6.4% sunspider regression in interpreter
1891         Do not inline calls to string concatenation in the interpret loop.
1892
1893         * interpreter/Interpreter.cpp:
1894         (JSC::concatenateStrings):
1895         (JSC::Interpreter::privateExecute):
1896
1897 2010-09-27  Anders Carlsson  <andersca@apple.com>
1898
1899         Fix thinko.
1900
1901         * runtime/JSCell.h:
1902
1903 2010-09-27  Anders Carlsson  <andersca@apple.com>
1904
1905         Reviewed by Adam Roben.
1906
1907         Try to fix Windows build.
1908
1909         * runtime/JSCell.h:
1910         (JSC::MSVCBugWorkaround::MSVCBugWorkaround):
1911         (JSC::MSVCBugWorkaround::~MSVCBugWorkaround):
1912
1913 2010-09-27  Erik Arvidsson  <arv@chromium.org>
1914
1915         Reviewed by Darin Adler.
1916
1917         Add operator == for AtomicString and Vector<Uchar>
1918         https://bugs.webkit.org/show_bug.cgi?id=46509
1919
1920         * JavaScriptCore.exp:
1921         * wtf/text/AtomicString.cpp:
1922         (WTF::operator==):
1923         * wtf/text/AtomicString.h:
1924         (WTF::operator==):
1925         (WTF::operator!=):
1926
1927 2010-09-27  Anders Carlsson  <andersca@apple.com>
1928
1929         Try to fix the Windows build.
1930
1931         * wtf/Noncopyable.h:
1932
1933 2010-09-26  Anders Carlsson  <andersca@apple.com>
1934
1935         Reviewed by Alexey Proskuryakov and Adam Barth.
1936
1937         Add WTF_MAKE_NONCOPYABLE macro
1938         https://bugs.webkit.org/show_bug.cgi?id=46589
1939
1940         Going forward, we'd like to get rid of the Noncopyable and FastAllocBase classes. The
1941         reason for this is that the Itanium C++ ABI states that no empty classes of the same type
1942         can be laid out at the same offset in the class. This can result in objects getting larger
1943         which leads to memory regressions. (One example of this is the String class which grew by
1944         sizeof(void*) when both its base class and its first member variable inherited indirectly
1945         from FastAllocBase).
1946
1947         * wtf/Noncopyable.h:
1948         Add a WTF_MAKE_NONCOPYABLE macro and get rid of NoncopyableCustomAllocated.
1949         
1950         * runtime/JSCell.h:
1951         * wtf/RefCounted.h:
1952         Don't inherit from NoncopyableCustomAllocated. Instead, use WTF_MAKE_NONCOPYABLE.
1953
1954 2010-09-27  Philippe Normand  <pnormand@igalia.com>
1955
1956         Reviewed by Martin Robinson.
1957
1958         [GTK] use ENABLE(GLIB_SUPPORT)
1959         https://bugs.webkit.org/show_bug.cgi?id=46630
1960
1961         * wtf/Platform.h: Include GTypedefs.h only if glib support
1962         is explicitly enabled.
1963
1964 2010-09-25  Holger Hans Peter Freyther  <holger@moiji-mobile.com>
1965
1966         Reviewed by Adam Barth.
1967
1968         jsc: Document the strcat opcode.
1969         https://bugs.webkit.org/show_bug.cgi?id=46571
1970
1971         * interpreter/Interpreter.cpp:
1972         (JSC::Interpreter::privateExecute):
1973
1974 2010-09-21  Holger Hans Peter Freyther  <holger@moiji-mobile.com>
1975
1976         Reviewed by Adam Barth.
1977
1978         make-bytecode-docs.pl: Add a comment to the generated HTML
1979         https://bugs.webkit.org/show_bug.cgi?id=46570
1980
1981         Generate an HTML Comment that this file was generated from
1982         Interpreter.cpp with the make-bytecode-docs.pl script.
1983
1984         * docs/make-bytecode-docs.pl:
1985
1986 2010-09-27  Patrick Gansterer  <paroga@webkit.org>
1987
1988         Reviewed by Adam Barth.
1989
1990         Remove WTF::stringHash functions
1991         https://bugs.webkit.org/show_bug.cgi?id=46520
1992
1993         Since r68289 the stringHash functions are only wrappers around StringHasher::createHash.
1994         So use StringHasher::createHash directly and remove stringHash.
1995
1996         * wtf/StringHashFunctions.h:
1997         * wtf/text/StringImpl.h:
1998         (WTF::StringImpl::computeHash): Use WTF::StringHasher::createHash directly.
1999
2000 2010-09-26  Patrick Gansterer  <paroga@webkit.org>
2001
2002         Reviewed by Adam Barth.
2003
2004         Add WTF::StringHasher::createBlobHash
2005         https://bugs.webkit.org/show_bug.cgi?id=46514
2006
2007         Add this function for hashing FormElementKey and QualifiedNameComponents.
2008
2009         * wtf/StringHashFunctions.h:
2010         (WTF::StringHasher::createBlobHash):
2011
2012 2010-09-26  Patrick Gansterer  <paroga@webkit.org>
2013
2014         Reviewed by Adam Barth.
2015
2016         REGRESSION (r68289): Assertion failure in StringHasher::addCharacter() (ch != invalidCharacterValue)
2017         running websocket/tests/bad-sub-protocol-non-ascii.html
2018         https://bugs.webkit.org/show_bug.cgi?id=46553
2019
2020         Because we use StringHasher for binary data too, so the check for invalid unicode input is wrong.
2021         Add an additional member variable to indicate if we have an pending character
2022         instead of only using an invalid character for this purpose.
2023
2024         * wtf/StringHashFunctions.h:
2025         (WTF::StringHasher::StringHasher):
2026         (WTF::StringHasher::addCharacters):
2027         (WTF::StringHasher::addCharacter):
2028         (WTF::StringHasher::hash):
2029
2030 2010-09-26  Mark Hahnenberg  <mhahnenb@gmail.com>
2031
2032         Reviewed by Oliver Hunt.
2033
2034         valueOf called in wrong order in atan2 and date constructors.
2035         https://bugs.webkit.org/show_bug.cgi?id=26978
2036
2037         Fixed the bug where the arguments to atan2 were being evaluated 
2038         out of order.
2039
2040         * runtime/MathObject.cpp:
2041         (JSC::mathProtoFuncATan2):
2042
2043 2010-09-26  Mark Hahnenberg  <mhahnenb@gmail.com>
2044
2045         Reviewed by Oliver Hunt.
2046
2047         valueOf called in wrong order in atan2 and date constructors.
2048         https://bugs.webkit.org/show_bug.cgi?id=26978
2049
2050         Fixed the issue where the parameters to the Date constructor
2051         were being evaluated to numbers more than once.
2052
2053         * runtime/DateConstructor.cpp:
2054         (JSC::constructDate):
2055         (JSC::dateUTC):
2056
2057 2010-09-25  Oliver Hunt  <oliver@apple.com>
2058
2059         Fix various builds
2060
2061         Relearning the lesson that last minute changes are bad.
2062
2063         * bytecode/CodeBlock.cpp:
2064         (JSC::CodeBlock::dump):
2065         * bytecompiler/BytecodeGenerator.cpp:
2066         (JSC::BytecodeGenerator::emitGetArgumentsLength):
2067         * jit/JITOpcodes.cpp:
2068         (JSC::JIT::emitSlow_op_get_argument_by_val):
2069
2070 2010-09-25  Oliver Hunt  <oliver@apple.com>
2071
2072         Reviewed by Cameron Zwarich.
2073
2074         Avoid constructing arguments object when accessing length and index properties
2075         https://bugs.webkit.org/show_bug.cgi?id=46572
2076
2077         Add opcodes to read argument length and properties, and then implement them.
2078         Much like other lazy opcodes these opcodes take a fast path when the arguments
2079         object has not been instantiated, and fall back on generic access mechanisms
2080         if they are acting on an instantiated object.
2081
2082         3% win on v8-earleyboyer, no change elsewhere.
2083
2084         * bytecode/CodeBlock.cpp:
2085         (JSC::CodeBlock::dump):
2086         * bytecode/Opcode.h:
2087         * bytecompiler/BytecodeGenerator.cpp:
2088         (JSC::BytecodeGenerator::emitGetArgumentsLength):
2089         (JSC::BytecodeGenerator::emitGetArgumentByVal):
2090         * bytecompiler/BytecodeGenerator.h:
2091         * bytecompiler/NodesCodegen.cpp:
2092         (JSC::BracketAccessorNode::emitBytecode):
2093         (JSC::DotAccessorNode::emitBytecode):
2094         * interpreter/Interpreter.cpp:
2095         (JSC::Interpreter::privateExecute):
2096         * jit/JIT.cpp:
2097         (JSC::JIT::privateCompileMainPass):
2098         (JSC::JIT::privateCompileSlowCases):
2099         * jit/JIT.h:
2100         * jit/JITOpcodes.cpp:
2101         (JSC::JIT::emit_op_get_arguments_length):
2102         (JSC::JIT::emitSlow_op_get_arguments_length):
2103         (JSC::JIT::emit_op_get_argument_by_val):
2104         (JSC::JIT::emitSlow_op_get_argument_by_val):
2105         * jit/JITOpcodes32_64.cpp:
2106         (JSC::JIT::emit_op_get_arguments_length):
2107         (JSC::JIT::emitSlow_op_get_arguments_length):
2108         (JSC::JIT::emit_op_get_argument_by_val):
2109         (JSC::JIT::emitSlow_op_get_argument_by_val):
2110
2111 2010-09-25  Patrick Gansterer  <paroga@webkit.org>
2112
2113         Unreviewed.
2114
2115         Fix typo in StringHasher class
2116         https://bugs.webkit.org/show_bug.cgi?id=45970
2117
2118         * wtf/StringHashFunctions.h:
2119         (WTF::StringHasher::createHash):
2120
2121 2010-09-24  Patrick Gansterer  <paroga@paroga.com>
2122
2123         Reviewed by Gavin Barraclough.
2124
2125         Add WTF::StringHasher
2126         https://bugs.webkit.org/show_bug.cgi?id=45970
2127
2128         StringHasher is a class for calculation stringHash out of character string.
2129         This class will unify the different usages of the same algorithm.
2130
2131         * wtf/StringHashFunctions.h:
2132         (WTF::StringHasher::StringHasher):
2133         (WTF::StringHasher::addCharacters):
2134         (WTF::StringHasher::addCharacter):
2135         (WTF::StringHasher::hash):
2136         (WTF::StringHasher::createHash):
2137         (WTF::StringHasher::defaultCoverter):
2138         (WTF::StringHasher::addCharactersToHash):
2139         (WTF::stringHash):
2140
2141 2010-09-24  Oliver Hunt  <oliver@apple.com>
2142
2143         Reviewed by Geoffrey Garen.
2144
2145         Variable declarations inside a catch scope don't get propogated to the parent scope
2146         https://bugs.webkit.org/show_bug.cgi?id=46501
2147
2148         Add logic to make variable declaration look for a scope for the
2149         new variable.  This allows us to create a scope (eg. for catch)
2150         and then seal it, so that additional variable declarations
2151         contained are propogated to the correct target.  Strangely this
2152         comes out as a performance win, but I think it's mostly cache
2153         effects.
2154
2155         * parser/JSParser.cpp:
2156         (JSC::JSParser::Scope::Scope):
2157         (JSC::JSParser::Scope::preventNewDecls):
2158         (JSC::JSParser::Scope::allowsNewDecls):
2159         (JSC::JSParser::declareVariable):
2160         (JSC::JSParser::parseVarDeclarationList):
2161         (JSC::JSParser::parseConstDeclarationList):
2162         (JSC::JSParser::parseTryStatement):
2163         (JSC::JSParser::parseFormalParameters):
2164         (JSC::JSParser::parseFunctionDeclaration):
2165
2166 2010-09-24  İsmail Dönmez  <ismail@namtrac.org>
2167
2168        Reviewed by Csaba Osztrogonác.
2169
2170        Add a Windows compatible inttypes.h header to fix WinCE build.
2171        https://bugs.webkit.org/show_bug.cgi?id=46463
2172
2173        * os-win32/inttypes.h: Added.
2174
2175 2010-09-24  Oliver Hunt  <oliver@apple.com>
2176
2177         Reviewed by Gavin Barraclough.
2178
2179         REGRESSION(r68223): It broke 2-3 tests on bots (Requested by Ossy on #webkit).
2180         https://bugs.webkit.org/show_bug.cgi?id=46448
2181
2182         Roll this back in, with additional logic to prevent us from delaying construction
2183         of functions named "arguments"
2184
2185         * bytecode/CodeBlock.cpp:
2186         (JSC::CodeBlock::dump):
2187         * bytecode/Opcode.h:
2188         * bytecompiler/BytecodeGenerator.cpp:
2189         (JSC::BytecodeGenerator::BytecodeGenerator):
2190         (JSC::BytecodeGenerator::emitInitLazyRegister):
2191         (JSC::BytecodeGenerator::registerFor):
2192         (JSC::BytecodeGenerator::createLazyRegisterIfNecessary):
2193         (JSC::BytecodeGenerator::constRegisterFor):
2194         (JSC::BytecodeGenerator::emitNewFunction):
2195         (JSC::BytecodeGenerator::emitLazyNewFunction):
2196         (JSC::BytecodeGenerator::emitNewFunctionInternal):
2197         * bytecompiler/BytecodeGenerator.h:
2198         * interpreter/Interpreter.cpp:
2199         (JSC::Interpreter::privateExecute):
2200         * jit/JIT.cpp:
2201         (JSC::JIT::privateCompileMainPass):
2202         * jit/JIT.h:
2203         * jit/JITOpcodes.cpp:
2204         (JSC::JIT::emit_op_init_lazy_reg):
2205         (JSC::JIT::emit_op_new_func):
2206         * jit/JITOpcodes32_64.cpp:
2207         (JSC::JIT::emit_op_init_lazy_reg):
2208         * parser/Nodes.h:
2209         (JSC::ScopeNode::needsActivationForMoreThanVariables):
2210
2211 2010-09-23  Sheriff Bot  <webkit.review.bot@gmail.com>
2212
2213         Unreviewed, rolling out r68223.
2214         http://trac.webkit.org/changeset/68223
2215         https://bugs.webkit.org/show_bug.cgi?id=46448
2216
2217         It broke 2-3 tests on bots (Requested by Ossy on #webkit).
2218
2219         * bytecode/CodeBlock.cpp:
2220         (JSC::CodeBlock::dump):
2221         * bytecode/Opcode.h:
2222         * bytecompiler/BytecodeGenerator.cpp:
2223         (JSC::BytecodeGenerator::BytecodeGenerator):
2224         (JSC::BytecodeGenerator::registerFor):
2225         (JSC::BytecodeGenerator::constRegisterFor):
2226         (JSC::BytecodeGenerator::emitNewFunction):
2227         * bytecompiler/BytecodeGenerator.h:
2228         * interpreter/Interpreter.cpp:
2229         (JSC::Interpreter::privateExecute):
2230         * jit/JIT.cpp:
2231         (JSC::JIT::privateCompileMainPass):
2232         * jit/JIT.h:
2233         * jit/JITOpcodes.cpp:
2234         (JSC::JIT::emit_op_new_func):
2235         (JSC::JIT::emit_op_init_arguments):
2236         * jit/JITOpcodes32_64.cpp:
2237         (JSC::JIT::emit_op_new_func):
2238         (JSC::JIT::emit_op_init_arguments):
2239         * parser/Nodes.h:
2240
2241 2010-09-23  Oliver Hunt  <oliver@apple.com>
2242
2243         Reviewed by Geoffrey Garen.
2244
2245         Delay construction of functions that aren't captured
2246         https://bugs.webkit.org/show_bug.cgi?id=46433
2247
2248         If a function isn't captured by an activation there's no
2249         way it can be accessed indirectly, so we can delay the
2250         construction until it's used (similar to what we do with
2251         arguments).  We rename the existing op_init_arguments to
2252         op_init_lazy_reg and removed its implicit handling of
2253         the anonymous argument register, and make op_new_function
2254         take a parameter to indicate whether it should null check
2255         the target slot before creating the function object.
2256
2257         * bytecode/CodeBlock.cpp:
2258         (JSC::CodeBlock::dump):
2259         * bytecode/Opcode.h:
2260         * bytecompiler/BytecodeGenerator.cpp:
2261         (JSC::BytecodeGenerator::BytecodeGenerator):
2262         (JSC::BytecodeGenerator::emitInitLazyRegister):
2263         (JSC::BytecodeGenerator::registerFor):
2264         (JSC::BytecodeGenerator::createLazyRegisterIfNecessary):
2265         (JSC::BytecodeGenerator::constRegisterFor):
2266         (JSC::BytecodeGenerator::emitNewFunction):
2267         (JSC::BytecodeGenerator::emitLazyNewFunction):
2268         (JSC::BytecodeGenerator::emitNewFunctionInternal):
2269         * bytecompiler/BytecodeGenerator.h:
2270         * interpreter/Interpreter.cpp:
2271         (JSC::Interpreter::privateExecute):
2272         * jit/JIT.cpp:
2273         (JSC::JIT::privateCompileMainPass):
2274         * jit/JIT.h:
2275         * jit/JITOpcodes.cpp:
2276         (JSC::JIT::emit_op_init_lazy_reg):
2277         (JSC::JIT::emit_op_new_func):
2278         * jit/JITOpcodes32_64.cpp:
2279         (JSC::JIT::emit_op_init_lazy_reg):
2280         * parser/Nodes.h:
2281         (JSC::ScopeNode::needsActivationForMoreThanVariables):
2282
2283 2010-09-23  David Kilzer  <ddkilzer@apple.com>
2284
2285         <rdar://problem/8460731> ~9.9% speedup when compiling interpreter with llvm-gcc-4.2
2286         https://bugs.webkit.org/show_bug.cgi?id=46423
2287
2288         Reviewed by Oliver Hunt.
2289
2290         * interpreter/Interpreter.cpp:
2291         (JSC::Interpreter::privateExecute): Disable the gcc computed
2292         goto hacks added in r55564 when compiling with llvm-gcc-4.2.
2293
2294 2010-09-23  Lucas De Marchi  <lucas.demarchi@profusion.mobi>
2295
2296         Reviewed by Darin Adler.
2297
2298         Fix usage of enum as if it was a define
2299         https://bugs.webkit.org/show_bug.cgi?id=46355
2300
2301         pthread.h defines PTHREAD_MUTEX_DEFAULT and PTHREAD_MUTEX_NORMAL as an
2302         enum.  Hence, it cannot be used by the preprocessor which always
2303         evaluates that condition as true. This was giving a warning when
2304         compiling with gcc and "-Wundef" flag.
2305
2306         The second path, when PTHREAD_MUTEX_DEFAULT is not the same of
2307         PTHREAD_MUTEX_NORMAL, is not slow. So, let's eliminate the first path
2308         and get rid of that #if.
2309
2310         * wtf/ThreadingPthreads.cpp: Always call pthread_mutexattr_init() to
2311         set mutex type to PTHREAD_MUTEX_NORMAL.
2312         (WTF::Mutex::Mutex):
2313
2314 2010-09-23  Michael Saboff  <msaboff@apple.com>
2315
2316         Reviewed by Geoffrey Garen.
2317
2318         Removed extraneous truncation of ovector on entry and error exit.
2319         Changed the initialization to -1 of vector to only initialize
2320         the start indecies, which is sufficient for the pattern/subpatterns.
2321         Changed the JIT code to not clear the end index for subpatterns
2322         as it isn't needed.  These changes are worth ~2.7% on v8-regexp.
2323         https://bugs.webkit.org/show_bug.cgi?id=46404
2324
2325         * runtime/RegExp.cpp:
2326         (JSC::RegExp::match):
2327         * yarr/RegexJIT.cpp:
2328         (JSC::Yarr::RegexGenerator::generateParenthesesSingle):
2329
2330 2010-09-22  Oliver Hunt  <oliver@apple.com>
2331
2332         Reviewed by Geoff Garen.
2333
2334         Only copy captured variables into activation
2335         https://bugs.webkit.org/show_bug.cgi?id=46330
2336
2337         We now track free variable information which means that
2338         we no longer need to copy every variable defined in a
2339         function.  With this patch activations only retain those
2340         variables needed for correctness.  In order to interact
2341         safely with the inspector this means that JSActivation
2342         now provides its own lookup functions so it can avoid 
2343         trying to read or write to variables that have been
2344         optimised out.
2345
2346         * bytecode/CodeBlock.h:
2347         * bytecompiler/BytecodeGenerator.cpp:
2348         (JSC::BytecodeGenerator::BytecodeGenerator):
2349         * parser/Nodes.h:
2350         (JSC::ScopeNode::capturedVariableCount):
2351         (JSC::ScopeNode::captures):
2352         * runtime/Arguments.h:
2353         (JSC::JSActivation::copyRegisters):
2354         * runtime/Executable.cpp:
2355         (JSC::FunctionExecutable::FunctionExecutable):
2356         (JSC::FunctionExecutable::compileForCallInternal):
2357         (JSC::FunctionExecutable::compileForConstructInternal):
2358         * runtime/Executable.h:
2359         (JSC::FunctionExecutable::capturedVariableCount):
2360         * runtime/JSActivation.cpp:
2361         (JSC::JSActivation::markChildren):
2362         (JSC::JSActivation::symbolTableGet):
2363         (JSC::JSActivation::symbolTablePut):
2364         (JSC::JSActivation::getOwnPropertyNames):
2365         (JSC::JSActivation::symbolTablePutWithAttributes):
2366         * runtime/JSActivation.h:
2367
2368 2010-09-23  Ismail Donmez  <ismail@namtrac.org>
2369
2370         Reviewed by Andreas Kling.
2371
2372         Fix jsc.exe build for Windows CE
2373
2374         * jsc.pro: Add mmtimer.lib for Windows CE.
2375
2376 2010-09-23  Ismail Donmez  <ismail@namtrac.org>
2377
2378         Unreviewed.
2379
2380         JIT should be disabled on Windows CE. Broken in r64176.
2381
2382         * wtf/Platform.h:
2383
2384 2010-09-23  Peter Varga  <pvarga@inf.u-szeged.hu>
2385
2386         Reviewed by Gavin Barraclough.
2387
2388         Reduce the number of BOL checks in YARR Interpreter
2389         https://bugs.webkit.org/show_bug.cgi?id=46260
2390
2391         Extend the YARR Interpreter with an optimization which reduces the number of
2392         BOL assertion checks. If a "TypeBodyAlternative" byteTerm is followed by a
2393         "TypeAssertionBOL" byteTerm it will be checked just one time.
2394
2395         * yarr/RegexInterpreter.cpp:
2396         (JSC::Yarr::Interpreter::matchDisjunction):
2397         (JSC::Yarr::ByteCompiler::compile):
2398         (JSC::Yarr::ByteCompiler::regexBegin):
2399         (JSC::Yarr::ByteCompiler::alternativeBodyDisjunction):
2400         (JSC::Yarr::ByteCompiler::emitDisjunction):
2401         * yarr/RegexInterpreter.h:
2402         (JSC::Yarr::ByteTerm::BodyAlternativeBegin):
2403         (JSC::Yarr::ByteTerm::BodyAlternativeDisjunction):
2404         (JSC::Yarr::ByteTerm::BodyAlternativeEnd):
2405         (JSC::Yarr::ByteTerm::AlternativeBegin):
2406         (JSC::Yarr::ByteTerm::AlternativeDisjunction):
2407         (JSC::Yarr::ByteTerm::AlternativeEnd):
2408
2409 2010-09-22  Michael Saboff  <msaboff@apple.com>
2410
2411         Reviewed by Gavin Barraclough.
2412
2413         Fixed the cross over from alternatives executed once and
2414         those that loop.  This fixed the problem where the index
2415         was getting messed up for looping alternatives causing an
2416         infinite loop.
2417         https://bugs.webkit.org/show_bug.cgi?id=46189
2418
2419         * yarr/RegexJIT.cpp:
2420         (JSC::Yarr::RegexGenerator::generateDisjunction):
2421
2422 2010-09-22  Steve Falkenburg  <sfalken@apple.com>
2423
2424         Rubber stamped by Jon Honeycutt.
2425
2426         Allow jsc.exe to be run against unversioned ICU.
2427
2428         * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
2429
2430 2010-09-22  Kwang Yul Seo  <skyul@company100.net>
2431
2432         Reviewed by Laszlo Gombos.
2433
2434         Use "typedef wchar_t JSChar" when compiled with RVCT
2435         https://bugs.webkit.org/show_bug.cgi?id=40651
2436
2437         Use wchar_t for JSChar and UChar when compiled with RVCT.
2438         Linux is the exception for this rule.
2439
2440         * API/JSStringRef.h:
2441         * wtf/unicode/qt4/UnicodeQt4.h:
2442
2443 2010-09-22  Oliver Hunt  <oliver@apple.com>
2444
2445         Reviewed by Gavin Barraclough.
2446
2447         [INTERPRETER] Two tests fail with SputnikError: #1.1: if argArray is neither an array nor an arguments object (see 10.1.8), a TypeError exception is thrown
2448         https://bugs.webkit.org/show_bug.cgi?id=44245
2449
2450         Remove incorrect code from op_load_varargs in the interpreter.
2451
2452         * interpreter/Interpreter.cpp:
2453         (JSC::Interpreter::privateExecute):
2454
2455 2010-09-22  Oliver Hunt  <oliver@apple.com>
2456
2457         Reviewed by Gavin Barraclough.
2458
2459         [JIT] fast/js/sputnik/Conformance/15_Native_Objects/15.3_Function/15.3.5/S15.3.5.3_A2_T6.html fails
2460         https://bugs.webkit.org/show_bug.cgi?id=44246
2461
2462         JIT code generated for instanceof was not checking to ensure that the prototype property was
2463         an object, this patch ensures that it does.
2464
2465         * jit/JITOpcodes.cpp:
2466         (JSC::JIT::emit_op_instanceof):
2467         (JSC::JIT::emitSlow_op_instanceof):
2468         * jit/JITOpcodes32_64.cpp:
2469         (JSC::JIT::emit_op_instanceof):
2470         (JSC::JIT::emitSlow_op_instanceof):
2471
2472 2010-09-22  Patrick Gansterer  <paroga@webkit.org>
2473
2474         Reviewed by Darin Adler.
2475
2476         Inline UTF8SequenceLength
2477         https://bugs.webkit.org/show_bug.cgi?id=45589
2478
2479         * wtf/unicode/UTF8.cpp:
2480         (WTF::Unicode::convertUTF8ToUTF16): Use inline version of UTF8SequenceLength to improve performance.
2481
2482 2010-09-21  Oliver Hunt  <oliver@apple.com>
2483
2484         RS=Gavin Barraclough.
2485
2486         Fix codeblock dumping
2487
2488         * bytecode/CodeBlock.cpp:
2489         (JSC::CodeBlock::dump):
2490         * runtime/Executable.h:
2491         (JSC::ScriptExecutable::ScriptExecutable):
2492
2493 2010-09-21  Oliver Hunt  <oliver@apple.com>
2494
2495         Reviewed by Geoffrey Garen.
2496
2497         Speed up function.apply(..., arguments)
2498         https://bugs.webkit.org/show_bug.cgi?id=46207
2499
2500         Add code to do argument copying inline in the case
2501         where we're using Function.apply to forward our arguments
2502         directly.
2503
2504         * jit/JIT.cpp:
2505         (JSC::JIT::privateCompileSlowCases):
2506            Splitted op_load_varargs into fast and slow paths, so add the call
2507            to the slow path generator.
2508         * jit/JIT.h:
2509         * jit/JITCall32_64.cpp:
2510           Remove 32bit specific emit_op_load_varargs as the logic is the
2511           same for all value representations
2512         * jit/JITOpcodes.cpp:
2513         (JSC::JIT::emit_op_load_varargs):
2514           Copy arguments inline
2515         (JSC::JIT::emitSlow_op_load_varargs):
2516
2517 2010-09-21  Geoffrey Garen  <ggaren@apple.com>
2518
2519         Reviewed by Oliver Hunt.
2520
2521         <rdar://problem/8363003> REGRESSION: ~1.4% sunspider regression in
2522         interpreter due to 54724 and 54596
2523         
2524         Fixed a typo (using "UNLIKELY" instead of "LIKELY").
2525         
2526         * wtf/PassRefPtr.h:
2527         (WTF::refIfNotNull):
2528         (WTF::derefIfNotNull): It is likely that m_ptr != 0 because most RefPtrs
2529         hold real data. Also, in cases where they do not hold real data, the
2530         compiler usually sees a call to release() right before the call to the
2531         destructor, so it can probably optimize out the test completely.
2532
2533 2010-09-21  Fridrich Strba  <fridrich.strba@bluewin.ch>
2534
2535         Reviewed by Martin Robinson.
2536
2537         Build issues with Windows versions of the GTK+ port
2538         https://bugs.webkit.org/show_bug.cgi?id=45844
2539
2540         Link with winmm.dll when necessary and specify the executable extension
2541         explicitely so that the Programs/jsc-@WEBKITGTK_API_MAJOR_VERSION@
2542         rule actually works.
2543
2544         Don't try to build the ThreadSpecificWin.cpp since GTK+ port uses
2545         a section in ThreadSpecific.cpp
2546
2547         * GNUmakefile.am:
2548
2549 2010-09-21  Martin Robinson  <mrobinson@igalia.com>
2550
2551         Reviewed by Xan Lopez.
2552
2553         [GTK] 'make dist' should be fixed in preparation for the next release
2554         https://bugs.webkit.org/show_bug.cgi?id=46129
2555
2556         * GNUmakefile.am: Update the sources list to include missing headers.
2557
2558 2010-09-21  Dave Tapuska  <dtapuska@rim.com>
2559
2560         Reviewed by Csaba Osztrogonác.
2561
2562         https://bugs.webkit.org/show_bug.cgi?id=45673
2563
2564         r65596 caused ENABLE_PROFILER_REFERENCE_OFFSET to not be
2565         8 byte aligned. A non 8 byte divisible value for this will
2566         cause the sp to become non 8 byte aligned.
2567
2568         Verify and correct offset values that r65596 effected that
2569         weren't updated.
2570
2571         * jit/JITStubs.cpp:
2572         * jit/JITStubs.h:
2573
2574 2010-09-21  Xan Lopez  <xlopez@igalia.com>
2575
2576         Reviewed by Martin Robinson.
2577
2578         Fix Opcode stats compilation
2579         https://bugs.webkit.org/show_bug.cgi?id=46079
2580
2581         The FixedArray API had changed, and <stdio.h> was not included for
2582         printf.
2583
2584         * bytecode/Opcode.cpp:
2585         (JSC::OpcodeStats::~OpcodeStats):
2586
2587 2010-09-20  Michael Saboff  <msaboff@apple.com>
2588
2589         Reviewed by Gavin Barraclough.
2590
2591         Fixed detection of alternative smaller than the first alternative
2592         to only check looping alternatives.
2593         https://bugs.webkit.org/show_bug.cgi?id=46049
2594
2595         * yarr/RegexJIT.cpp:
2596         (JSC::Yarr::RegexGenerator::generateDisjunction):
2597
2598 2010-09-20  Peter Varga  <pvarga@inf.u-szeged.hu>
2599
2600         Reviewed by Geoffrey Garen.
2601
2602         REGRESSION(67790): jsc tests are failed with YARR interpreter
2603         https://bugs.webkit.org/show_bug.cgi?id=46083
2604
2605         Fix the initializing of the lastSubpatternId member of
2606         parentheses.
2607
2608         * yarr/RegexCompiler.cpp:
2609         (JSC::Yarr::RegexPatternConstructor::atomParenthesesEnd):
2610
2611 2010-09-20  Gavin Barraclough  <barraclough@apple.com>
2612
2613         Reviewed by Oliver Hunt.
2614
2615         Bug 46077 - ASSERT failure in YARR JIT
2616
2617         We will currently attempt to loop if there are multiple alternatives, they are all
2618         BOL predicated, and the last alternative is longer then the first - however if all
2619         alternatives are BOL predicated the head of loop label will not have been set, and
2620         we'll try to link a jump to an undefined label. Stop doing so.
2621
2622         * yarr/RegexJIT.cpp:
2623         (JSC::Yarr::RegexGenerator::generateDisjunction):
2624
2625 2010-09-20  Adam Roben  <aroben@apple.com>
2626
2627         Export RegExpObject::info from JavaScriptCore
2628
2629         This allows obj->inherits(&RegExpObject::info) to work correctly from
2630         outside JavaScriptCore.dll on Windows.
2631
2632         Fixes <http://webkit.org/b/46098>
2633         fast/loader/stateobjects/pushstate-object-types.html fails on Windows
2634
2635         Reviewed by John Sullivan.
2636
2637         * runtime/RegExpObject.h: Added JS_EXPORTDATA to the info member, as
2638         we already have for some other classes whose info members have to be
2639         used from outside the DLL.
2640
2641 2010-09-19  Gavin Barraclough  <barraclough@apple.com>
2642
2643         Windows build fix pt 2.
2644
2645         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2646
2647 2010-09-19  Gavin Barraclough  <barraclough@apple.com>
2648
2649         Windows build fix pt 1.
2650
2651         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2652
2653 2010-09-19  Gavin Barraclough  <barraclough@apple.com>
2654
2655         Build fix - implicit double-to-int conversion invalid on 32-bit.
2656
2657         * runtime/DatePrototype.cpp:
2658         (JSC::fillStructuresUsingDateArgs):
2659         (JSC::dateProtoFuncSetYear):
2660
2661 2010-09-19  Gavin Barraclough  <barraclough@apple.com>
2662
2663         Reviewed by Oliver Hunt.
2664
2665         Bug 46065 - Unify implementation of ToInt32 and ToUInt32, don't use fmod.
2666
2667         These methods implement the same conversion (see discussion in the notes
2668         of sections of 9.5 and 9.6 of the spec), only differing in how the result
2669         is interpretted.
2670
2671         Date prototype is incorrectly using toInt32, and this is causing us to
2672         provide an output value indicating whether the input to ToInt32 was finite
2673         (the corresponding methods on Date are actually spec'ed to use ToInteger,
2674         not ToInt32).  This patch partially fixes this in order to remove this
2675         bogus output value, hoewever more work will be require to bring Date
2676         fully up to spec compliance (the constructor is still performing ToInt32
2677         conversions).
2678
2679         * JavaScriptCore.exp:
2680         * runtime/DatePrototype.cpp:
2681         (JSC::fillStructuresUsingTimeArgs):
2682         (JSC::fillStructuresUsingDateArgs):
2683         (JSC::dateProtoFuncSetYear):
2684         * runtime/JSValue.cpp:
2685         (JSC::toInt32):
2686         * runtime/JSValue.h:
2687         (JSC::toUInt32):
2688         (JSC::JSValue::toInt32):
2689         (JSC::JSValue::toUInt32):
2690
2691 2010-09-18  Darin Adler  <darin@apple.com>
2692
2693         First step in fixing Windows build.
2694
2695         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2696         Removed incorrect symbol. The build will probably still fail,
2697         but the failure will tell us what symbol to add.
2698
2699 2010-09-18  Michael Saboff  <msaboff@apple.com>
2700
2701         Reviewed by Gavin Barraclough.
2702
2703         Added code to unroll regular expressions containing ^.
2704         Alternatives that begin with ^ are tagged during parsing
2705         and rolled up in containing sub expression structs.
2706         After parsing, a regular expression flagged as containing
2707         a ^ (a.k.a. BOL) is processed further in optimizeBOL().
2708         A copy of the disjunction is made excluding alternatives that
2709         are rooted with BOL.  The original alternatives are flagged
2710         to only be executed once.  The copy of the other alternatives are
2711         added to the original expression.
2712         In the case that all original alternatives are flagged, there
2713         won't be any looping alternatives.
2714         The JIT generator will emit code accordingly, executing the
2715         original alternatives once and then looping over the
2716         alternatives that aren't anchored with a BOL (if any).
2717         https://bugs.webkit.org/show_bug.cgi?id=45787
2718
2719         * yarr/RegexCompiler.cpp:
2720         (JSC::Yarr::RegexPatternConstructor::assertionBOL):
2721         (JSC::Yarr::RegexPatternConstructor::atomParenthesesEnd):
2722         (JSC::Yarr::RegexPatternConstructor::copyDisjunction):
2723         (JSC::Yarr::RegexPatternConstructor::copyTerm):
2724         (JSC::Yarr::RegexPatternConstructor::optimizeBOL):
2725         (JSC::Yarr::compileRegex):
2726         * yarr/RegexJIT.cpp:
2727         (JSC::Yarr::RegexGenerator::generateDisjunction):
2728         * yarr/RegexPattern.h:
2729         (JSC::Yarr::PatternAlternative::PatternAlternative):
2730         (JSC::Yarr::PatternAlternative::setOnceThrough):
2731         (JSC::Yarr::PatternAlternative::onceThrough):
2732         (JSC::Yarr::PatternDisjunction::PatternDisjunction):
2733         (JSC::Yarr::RegexPattern::RegexPattern):
2734         (JSC::Yarr::RegexPattern::reset):
2735
2736 2010-09-18  Patrick Gansterer  <paroga@paroga.com>
2737
2738         Reviewed by Darin Adler.
2739
2740         Rename Wince files to WinCE
2741         https://bugs.webkit.org/show_bug.cgi?id=37287
2742
2743         * wtf/unicode/Unicode.h:
2744         * wtf/unicode/wince/UnicodeWinCE.cpp: Copied from JavaScriptCore/wtf/unicode/wince/UnicodeWince.cpp.
2745         * wtf/unicode/wince/UnicodeWinCE.h: Copied from JavaScriptCore/wtf/unicode/wince/UnicodeWince.h.
2746         * wtf/unicode/wince/UnicodeWince.cpp: Removed.
2747         * wtf/unicode/wince/UnicodeWince.h: Removed.
2748         * wtf/wince/FastMallocWinCE.h: Copied from JavaScriptCore/wtf/wince/FastMallocWince.h.
2749         * wtf/wince/FastMallocWince.h: Removed.
2750
2751 2010-09-18  Ademar de Souza Reis Jr  <ademar.reis@openbossa.org>
2752
2753         Reviewed by Kenneth Rohde Christiansen.
2754
2755         Enable Platform Strategies on Qt
2756
2757         [Qt] Turn on PLATFORM_STRATEGIES
2758         https://bugs.webkit.org/show_bug.cgi?id=45831
2759
2760         * wtf/Platform.h: Enable Platform Strategies when building QtWebkit
2761
2762 2010-09-17  Oliver Hunt  <oliver@apple.com>
2763
2764         Reviewed by Gavin Barraclough.
2765
2766         Imprecise tracking of variable capture leads to overly pessimistic creation of activations
2767         https://bugs.webkit.org/show_bug.cgi?id=46020
2768
2769         The old logic for track free and captured variables would cause us
2770         to decide we needed an activation in every function along the scope
2771         chain between a variable capture and its declaration.  We now track
2772         captured variables precisely which requires a bit of additional work
2773
2774         The most substantial change is that the parsing routine needs to
2775         be passed the list of function parameters when reparsing a function
2776         as when reparsing we don't parse the function declaration itself only
2777         its body.
2778
2779         * JavaScriptCore.exp:
2780         * parser/JSParser.cpp:
2781         (JSC::JSParser::Scope::Scope):
2782         (JSC::JSParser::Scope::needsFullActivation):
2783            We need to distinguish between use of a feature that requires
2784            an activation and eval so we now get this additional flag.
2785         (JSC::JSParser::Scope::collectFreeVariables):
2786         (JSC::JSParser::Scope::getCapturedVariables):
2787            We can't simply return the list of "capturedVariables" now as
2788            is insufficiently precise, so we compute them instead.
2789         (JSC::JSParser::popScope):
2790         (JSC::jsParse):
2791         (JSC::JSParser::JSParser):
2792         (JSC::JSParser::parseProgram):
2793         (JSC::JSParser::parseWithStatement):
2794         (JSC::JSParser::parseTryStatement):
2795         (JSC::JSParser::parseFunctionInfo):
2796         (JSC::JSParser::parseFunctionDeclaration):
2797         (JSC::JSParser::parseProperty):
2798         (JSC::JSParser::parseMemberExpression):
2799         * parser/JSParser.h:
2800         * parser/Parser.cpp:
2801         (JSC::Parser::parse):
2802         * parser/Parser.h:
2803         (JSC::Parser::parse):
2804         * runtime/Executable.cpp:
2805         (JSC::EvalExecutable::compileInternal):
2806         (JSC::ProgramExecutable::checkSyntax):
2807         (JSC::ProgramExecutable::compileInternal):
2808         (JSC::FunctionExecutable::compileForCallInternal):
2809         (JSC::FunctionExecutable::compileForConstructInternal):
2810         (JSC::FunctionExecutable::reparseExceptionInfo):
2811         (JSC::EvalExecutable::reparseExceptionInfo):
2812         (JSC::FunctionExecutable::fromGlobalCode):
2813            Pass function parameters (if available) to the parser.
2814
2815 2010-09-17  Anders Carlsson  <andersca@apple.com>
2816
2817         Reviewed by Sam Weinig.
2818
2819         Add IsFloatingPoint and IsArithmetic type traits
2820         https://bugs.webkit.org/show_bug.cgi?id=46018
2821
2822         * wtf/TypeTraits.h:
2823         * wtf/TypeTraits.cpp:
2824
2825 2010-09-17  Martin Robinson  <mrobinson@igalia.com>
2826
2827         Reviewed by Oliver Hunt.
2828
2829         [GTK] FontPlatformDataFreeType should use smart pointers to hold its members
2830         https://bugs.webkit.org/show_bug.cgi?id=45917
2831
2832         Added support to PlatformRefPtr for handling HashTableDeletedValue.
2833
2834         * wtf/PlatformRefPtr.h:
2835         (WTF::PlatformRefPtr::PlatformRefPtr): Added a constructor that takes HashTableDeletedValue.
2836         (WTF::PlatformRefPtr::isHashTableDeletedValue): Added.
2837
2838 2010-09-16  Oliver Hunt  <oliver@apple.com>
2839
2840         Reviewed by Geoffrey Garen.
2841
2842         Crash due to timer triggered GC on one heap while another heap is active
2843         https://bugs.webkit.org/show_bug.cgi?id=45932
2844         <rdar://problem/8318446>
2845
2846         The GC timer may trigger for one heap while another heap is active.  This
2847         is safe, but requires us to ensure that we have temporarily associated the
2848         thread's identifierTable with the heap we're collecting on.  Otherwise we
2849         may end up with the identifier tables in an inconsistent state leading to
2850         an eventual crash.
2851
2852         * runtime/Collector.cpp:
2853         (JSC::Heap::allocate):
2854         (JSC::Heap::reset):
2855         (JSC::Heap::collectAllGarbage):
2856            Add assertions to ensure we have the correct identifierTable active
2857            while collecting.
2858         * runtime/GCActivityCallbackCF.cpp:
2859         (JSC::DefaultGCActivityCallbackPlatformData::trigger):
2860            Temporarily make the expected IdentifierTable active
2861         * wtf/WTFThreadData.h:
2862         (JSC::IdentifierTable::remove):
2863            Make it possible to see when IdentifierTable::remove has succeeded
2864         * wtf/text/StringImpl.cpp:
2865         (WTF::StringImpl::~StringImpl):
2866            CRASH if an StringImpl is an Identifier but isn't present in the
2867            active IdentifierTable.  If we get to this state something has
2868            gone wrong and we should just crash immediately.
2869
2870 2010-09-16  Martin Robinson  <mrobinson@igalia.com>
2871
2872         Reviewed by Xan Lopez.
2873
2874         [GTK] Implement dissolveDragImageToFraction
2875         https://bugs.webkit.org/show_bug.cgi?id=45826
2876
2877         * wtf/gobject/GTypedefs.h: Added forward declarations for GtkWindow and GdkEventExpose.
2878
2879 2010-09-16  Eric Uhrhane  <ericu@chromium.org>
2880
2881         Reviewed by Jian Li.
2882
2883         Unify FILE_SYSTEM and FILE_WRITER enables under the name FILE_SYSTEM.
2884         https://bugs.webkit.org/show_bug.cgi?id=45798
2885
2886         * Configurations/FeatureDefines.xcconfig:
2887
2888 2010-09-15  Oliver Hunt  <oliver@apple.com>
2889
2890         Reviewed by Geoffrey Garen.
2891
2892         Use free variable analysis to improve activation performance
2893         https://bugs.webkit.org/show_bug.cgi?id=45837
2894
2895         Adds free and captured variable tracking to the JS parser.  This
2896         allows us to avoid construction of an activation object in some
2897         cases.  Future patches will make more use of this information to
2898         improve those cases where activations are still needed.
2899
2900         * parser/ASTBuilder.h:
2901         * parser/JSParser.cpp:
2902         (JSC::JSParser::Scope::Scope):
2903         (JSC::JSParser::Scope::declareVariable):
2904         (JSC::JSParser::Scope::useVariable):
2905         (JSC::JSParser::Scope::collectFreeVariables):
2906         (JSC::JSParser::Scope::capturedVariables):
2907         (JSC::JSParser::ScopeRef::ScopeRef):
2908         (JSC::JSParser::ScopeRef::operator->):
2909         (JSC::JSParser::ScopeRef::index):
2910         (JSC::JSParser::currentScope):
2911         (JSC::JSParser::pushScope):
2912         (JSC::JSParser::popScope):
2913         (JSC::JSParser::parseProgram):
2914         (JSC::JSParser::parseVarDeclarationList):
2915         (JSC::JSParser::parseConstDeclarationList):
2916         (JSC::JSParser::parseTryStatement):
2917         (JSC::JSParser::parseFormalParameters):
2918         (JSC::JSParser::parseFunctionInfo):
2919         (JSC::JSParser::parseFunctionDeclaration):
2920         (JSC::JSParser::parsePrimaryExpression):
2921         * parser/Nodes.cpp:
2922         (JSC::ScopeNodeData::ScopeNodeData):
2923         (JSC::ScopeNode::ScopeNode):
2924         (JSC::ProgramNode::ProgramNode):
2925         (JSC::ProgramNode::create):
2926         (JSC::EvalNode::EvalNode):
2927         (JSC::EvalNode::create):
2928         (JSC::FunctionBodyNode::FunctionBodyNode):
2929         (JSC::FunctionBodyNode::create):
2930         * parser/Nodes.h:
2931         (JSC::ScopeNode::needsActivation):
2932         (JSC::ScopeNode::hasCapturedVariables):
2933         * parser/Parser.cpp:
2934         (JSC::Parser::didFinishParsing):
2935         * parser/Parser.h:
2936         (JSC::Parser::parse):
2937         * parser/SyntaxChecker.h:
2938         * runtime/Executable.cpp:
2939         (JSC::EvalExecutable::compileInternal):
2940         (JSC::ProgramExecutable::compileInternal):
2941         (JSC::FunctionExecutable::compileForCallInternal):
2942         (JSC::FunctionExecutable::compileForConstructInternal):
2943         * runtime/Executable.h:
2944         (JSC::ScriptExecutable::needsActivation):
2945         (JSC::ScriptExecutable::recordParse):
2946
2947 2010-09-14  Hyung Song  <beergun@company100.net>
2948
2949         Reviewed by Kent Tamura.
2950
2951         [BREWMP] Add IMemGroup and IMemSpace to OwnPtr type.
2952         https://bugs.webkit.org/show_bug.cgi?id=44764
2953
2954         * wtf/OwnPtrCommon.h:
2955         * wtf/brew/OwnPtrBrew.cpp:
2956         (WTF::deleteOwnedPtr):
2957
2958 2010-09-14  Darin Adler  <darin@apple.com>
2959
2960         Reviewed by Geoffrey Garen.
2961
2962         Sort with non-numeric custom sort function fails on array with length but no values
2963         https://bugs.webkit.org/show_bug.cgi?id=45781
2964
2965         * runtime/JSArray.cpp:
2966         (JSC::JSArray::sort): Replaced early exit for an array of length zero to instead
2967         exit for any array without values, even if it has a non-0 length.
2968
2969 2010-09-14  Steve Falkenburg  <sfalken@apple.com>
2970
2971         Windows production build fix.
2972         Roll out r65143.
2973
2974         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
2975
2976 2010-09-14  Kwang Yul Seo  <skyul@company100.net>
2977
2978         Reviewed by Darin Adler.
2979
2980         Share UnicodeMacrosFromICU.h
2981         https://bugs.webkit.org/show_bug.cgi?id=45710
2982
2983         glib, qt4 and wince use the same macros from ICU.
2984         Remove the code duplication and use the same header file.
2985
2986         * wtf/unicode/UnicodeMacrosFromICU.h: Copied from JavaScriptCore/wtf/unicode/glib/UnicodeMacrosFromICU.h.
2987         * wtf/unicode/glib/UnicodeMacrosFromICU.h: Removed.
2988         * wtf/unicode/qt4/UnicodeQt4.h:
2989         * wtf/unicode/wince/UnicodeWince.h:
2990
2991 2010-09-13  Darin Adler  <darin@apple.com>
2992
2993         Reviewed by Adam Barth.
2994
2995         Preparation for eliminating deprecatedParseURL
2996         https://bugs.webkit.org/show_bug.cgi?id=45695
2997
2998         * wtf/text/WTFString.h: Added isAllSpecialCharacters, moved here from
2999         the HTML tree builder.
3000
3001 2010-09-13  Darin Fisher  <darin@chromium.org>
3002
3003         Reviewed by David Levin.
3004
3005         Add option to conditionally compile smooth scrolling support.
3006         https://bugs.webkit.org/show_bug.cgi?id=45689
3007
3008         ENABLE(SMOOTH_SCROLLING) is disabled by default for all platforms.
3009
3010         * wtf/Platform.h:
3011
3012 2010-09-13  Adam Roben  <aroben@apple.com>
3013
3014         Copy JavaScriptCore's generated sources to the right directory
3015
3016         * JavaScriptCore.vcproj/JavaScriptCore.make: Fixed typo.
3017
3018 2010-09-13  Kwang Yul Seo  <skyul@company100.net>
3019
3020         Reviewed by Kent Tamura.
3021
3022         [BREWMP] Don't call _msize
3023         https://bugs.webkit.org/show_bug.cgi?id=45556
3024
3025         Because Brew MP uses its own memory allocator, it is not correct to use
3026         _msize in fastMallocSize. Add !PLATFORM(BREWMP) guard.
3027
3028         * wtf/FastMalloc.cpp:
3029         (WTF::fastMallocSize):
3030
3031 2010-09-11  Simon Hausmann  <simon.hausmann@nokia.com>
3032
3033         Reviewed by Andreas Kling.
3034
3035         [Qt] V8 port: webcore project files changes
3036         https://bugs.webkit.org/show_bug.cgi?id=45141
3037
3038         * JavaScriptCore.pro: Moved wtf specific files to wtf.pri,
3039         so that they can also be used from WebCore.pro for v8 builds.
3040         * wtf/wtf.pri: Added.
3041
3042 2010-09-10  Fridrich Strba  <fridrich.strba@bluewin.ch>
3043
3044         Reviewed by Andreas Kling.
3045
3046         Add a define missing when building with glib unicode backend
3047         https://bugs.webkit.org/show_bug.cgi?id=45544
3048
3049         * wtf/unicode/glib/UnicodeMacrosFromICU.h:
3050
3051 2010-09-10  Stephanie Lewis  <slewis@apple.com>
3052
3053         Reviewed by Alexey Proskuryakov.
3054         
3055         Refactor JavaScriptCore memory statistics so that WebKit doesn't need to know 
3056         about the JIT and other implementation details of JavaScriptCore.  Necessary 
3057         to fix PPC build.
3058         
3059         https://bugs.webkit.org/show_bug.cgi?id=45528
3060
3061         * JavaScriptCore.exp:
3062         * JavaScriptCore.xcodeproj/project.pbxproj:
3063         * runtime/MemoryStatistics.cpp: Added.
3064         (JSC::memoryStatistics):
3065         * runtime/MemoryStatistics.h: Added.
3066
3067 2010-09-09  Michael Saboff  <msaboff@apple.com>
3068
3069         Reviewed by Gavin Barraclough.
3070
3071         Added a regular expression tracing facility.  This tracing is connected
3072         to jsc.  Every compiled regular expression object is added to a list.
3073         When the process exits, each regular expression dumps its pattern,
3074         JIT address, number of times it was executed and the number of matches.
3075         This tracing is controlled by the macro ENABLE_REGEXP_TRACING in
3076         wtf/Platform.h.
3077         https://bugs.webkit.org/show_bug.cgi?id=45401
3078
3079         * JavaScriptCore.exp:
3080         * jsc.cpp:
3081         (runWithScripts):
3082         * runtime/JSGlobalData.cpp:
3083         (JSC::JSGlobalData::JSGlobalData):
3084         (JSC::JSGlobalData::~JSGlobalData):
3085         (JSC::JSGlobalData::addRegExpToTrace):
3086         (JSC::JSGlobalData::dumpRegExpTrace):
3087         * runtime/JSGlobalData.h:
3088         * runtime/RegExp.cpp:
3089         (JSC::RegExp::RegExp):
3090         (JSC::RegExp::create):
3091         (JSC::RegExp::match):
3092         * runtime/RegExp.h:
3093         * wtf/Platform.h:
3094         * yarr/RegexJIT.h:
3095         (JSC::Yarr::RegexCodeBlock::getAddr):
3096
3097 2010-09-09  John Therrell  <jtherrell@apple.com>
3098
3099         32-bit build fix.
3100
3101         * jit/ExecutableAllocator.cpp:
3102         (JSC::ExecutableAllocator::committedByteCount):
3103
3104 2010-09-09  John Therrell  <jtherrell@apple.com>
3105
3106         Reviewed by Alexey Proskuryakov.
3107
3108         Added statistics sampling and reporting for JavaScriptCore's RegisterFile and ExecutableAllocator classes
3109         https://bugs.webkit.org/show_bug.cgi?id=45134
3110
3111         Added thread-safe committed byte counting and reporting functionality to RegisterFile and 
3112         ExecutableAllocator.
3113
3114         * JavaScriptCore.exp:
3115         Exported new symbols to allow for WebKit to get statistics from JavaScriptCore classes.
3116         
3117         * interpreter/RegisterFile.cpp:
3118         (JSC::registerFileStatisticsMutex):
3119         Added function which returns a static Mutex used for locking during read/write access to
3120         static committed byte count variable.
3121         (JSC::RegisterFile::~RegisterFile):
3122         Added call to addToStatistics since memory is decommitted here.
3123         (JSC::RegisterFile::releaseExcessCapacity):
3124         Added call to addToStatistics since memory is decommitted here.
3125         (JSC::RegisterFile::initializeThreading):
3126         Added function which calls registerFileStatisticsMutex().
3127         (JSC::RegisterFile::committedByteCount):
3128         Added function which returns the current committed byte count for RegisterFile.
3129         (JSC::RegisterFile::addToCommittedByteCount):
3130         Added function which updates committed byte count.
3131         
3132         * interpreter/RegisterFile.h:
3133         (JSC::RegisterFile::RegisterFile):
3134         Added call to addToStatistics since memory is committed here.
3135         (JSC::RegisterFile::grow):
3136         Added call to addToStatistics since memory is committed here.
3137         
3138         * jit/ExecutableAllocator.h:
3139         Added function prototype for public static function committedByteCount().
3140         
3141         * jit/ExecutableAllocatorFixedVMPool.cpp:
3142         (JSC::FixedVMPoolAllocator::release):
3143         Added call to addToStatistics since memory is decommitted here.
3144         (JSC::FixedVMPoolAllocator::reuse):
3145         Added call to addToStatistics since memory is committed here.
3146         (JSC::FixedVMPoolAllocator::addToCommittedByteCount):
3147         Added function which updates committed byte count.
3148         (JSC::ExecutableAllocator::committedByteCount):
3149         Added function which returns the current committed byte count for ExecutableAllocator.
3150         
3151         * runtime/InitializeThreading.cpp:
3152         (JSC::initializeThreadingOnce):
3153         Added call to RegisterFile::initializeThreading.
3154
3155 2010-09-09  Mark Rowe  <mrowe@apple.com>
3156
3157         Reviewed by Oliver Hunt.
3158
3159         <http://webkit.org/b/45502> JSObjectSetPrivateProperty does not handle NULL values as it claims
3160
3161         * API/JSObjectRef.cpp:
3162         (JSObjectSetPrivateProperty): Don't call toJS if we have a NULL value as that will cause an assertion
3163         failure. Instead map NULL directly to the null JSValue.
3164         * API/tests/testapi.c:
3165         (main): Add test coverage for the NULL value case.
3166
3167 2010-09-09  Csaba Osztrogonác  <ossy@webkit.org>
3168
3169         Reviewed by Gavin Barraclough.
3170
3171         [Qt] JSVALUE32_64 not works on Windows platform with MinGW compiler
3172         https://bugs.webkit.org/show_bug.cgi?id=29268
3173
3174         * wtf/Platform.h: Enable JSVALUE32_64 for Qt/Windows/MinGW, because it works now.
3175
3176 2010-09-08  Zoltan Herczeg  <zherczeg@webkit.org>
3177
3178         Reviewed by Darin Adler.
3179
3180         Removing doneSemicolon label in the lexer
3181         https://bugs.webkit.org/show_bug.cgi?id=45289
3182
3183         As a side effect of moving the multiline comment parsing
3184         to a separate function, an opportunity raised to simplify
3185         the single line comment parsing, and removing doneSemicolon
3186         label. Slight performance increase on --parse-only
3187         tests (from 32.8ms to 31.5ms)
3188
3189         * parser/Lexer.cpp:
3190         (JSC::Lexer::lex):
3191
3192 2010-09-08  Xan Lopez  <xlopez@igalia.com>
3193
3194         Reviewed by Alexey Proskuryakov.
3195
3196         Remove accessor for private member variable in JSParser
3197         https://bugs.webkit.org/show_bug.cgi?id=45378
3198
3199         m_token is private to JSParser, so it does not seem to be useful
3200         to have an accessor for it. On top of that, the file was both
3201         using the accessor and directly accessing the member variable,
3202         only one style should be used.
3203
3204 2010-09-08  Csaba Osztrogonác  <ossy@webkit.org>
3205
3206         Reviewed by Oliver Hunt.
3207
3208         [Qt] REGRESSION(63348): jsc is broken
3209         https://bugs.webkit.org/show_bug.cgi?id=42818
3210
3211         Need fastcall conventions on Qt/Win/MinGW.
3212         Based on patches of Gavin Barraclough: r63947 and r63948.
3213
3214         * jit/JITStubs.cpp:
3215         * jit/JITStubs.h:
3216
3217 2010-09-08  Robert Hogan  <robert@webkit.org>
3218
3219         Reviewed by Antonio Gomes.
3220
3221         Remove some unnecessary duplicate calls to string functions
3222
3223         https://bugs.webkit.org/show_bug.cgi?id=45314
3224
3225         * wtf/text/WTFString.cpp:
3226         (WTF::String::format):
3227
3228 2010-09-08  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
3229
3230         Reviewed by Andreas Kling.
3231
3232         Re-Disable JIT for MSVC 64bit to fix the build on this compiler.
3233         https://bugs.webkit.org/show_bug.cgi?id=45382
3234
3235         It was enabled in the cleanup made in r64176, though it is still
3236         not implemented.
3237
3238         * wtf/Platform.h:
3239
3240 2010-09-08  Martin Robinson  <mrobinson@igalia.com>
3241
3242         Reviewed by Xan Lopez.
3243
3244         [GTK] Need a WebSocket implementation
3245         https://bugs.webkit.org/show_bug.cgi?id=45197
3246
3247         Add a GIO-based WebSocket implementation.
3248
3249         * wtf/gobject/GRefPtr.cpp: Added PlatformRefPtr support for GSource.
3250         (WTF::refPlatformPtr):
3251         (WTF::derefPlatformPtr):
3252         * wtf/gobject/GRefPtr.h: Added new template specialization declarations.
3253         * wtf/gobject/GTypedefs.h: Add some more GLib/GIO forward declarations.
3254
3255 2010-08-30  Maciej Stachowiak  <mjs@apple.com>
3256
3257         Reviewed by Darin Adler.
3258
3259         Handle MediaQueryExp memory management exclusively with smart pointers
3260         https://bugs.webkit.org/show_bug.cgi?id=44874
3261         
3262         Implemented a non-copying sort function to make it possible to sort a Vector
3263         of OwnPtrs (which cannot be copied). This is required for the above.
3264
3265         * wtf/NonCopyingSort.h: Added.
3266         (WTF::nonCopyingSort): It's secretly heapsort.
3267         (WTF::heapSort): heapsort implementation.
3268         (WTF::siftDown): Helper function for heapsort.
3269         (WTF::heapify): ditto
3270
3271         Adjust build systems.
3272         
3273         * GNUmakefile.am:
3274         * JavaScriptCore.gypi:
3275         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
3276         * JavaScriptCore.xcodeproj/project.pbxproj:
3277
3278 2010-09-08  Zoltan Herczeg  <zherczeg@webkit.org>
3279
3280         Reviewed by Darin Adler.
3281
3282         Refactoring multiline comments in the lexer
3283         https://bugs.webkit.org/show_bug.cgi?id=45289
3284
3285         MultiLine comment parsing is moved to a separate function.
3286
3287         Slight performance increase on --parse-only tests (from 33.6ms to 32.8ms)
3288         SunSpider reports no change (from 523.1ms to 521.2ms).
3289
3290         * parser/Lexer.cpp:
3291         (JSC::Lexer::parseMultilineComment):
3292         (JSC::Lexer::lex):
3293         * parser/Lexer.h:
3294
3295 2010-09-07  James Robinson  <jamesr@chromium.org>
3296
3297         Compile fix attempt for windows.
3298
3299         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3300
3301 2010-09-07  Mihai Parparita  <mihaip@chromium.org>
3302
3303         Reviewed by James Robinson.
3304
3305         Fix Windows build after r66936
3306         https://bugs.webkit.org/show_bug.cgi?id=45348
3307
3308         Add symbol names that were missing from r66936.
3309
3310         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3311
3312 2010-09-07  Mihai Parparita  <mihaip@chromium.org>
3313
3314         Reviewed by Oliver Hunt.
3315
3316         pushState and replaceState do not clone RegExp objects correctly
3317         https://bugs.webkit.org/show_bug.cgi?id=44718
3318         
3319         Move internal representation of JSC::RegExp (which depends on wether
3320         YARR and YARR_JIT is enabled) into RegExpRepresentation which can live
3321         in the implementation only. This makes it feasible to use RegExp in
3322         WebCore without bringing in all of YARR.
3323
3324         * JavaScriptCore.exp: Export RegExp and RegExpObject functions that are
3325         needed inside WebCore's JSC bindings.
3326         * runtime/RegExp.cpp:
3327         (JSC::RegExpRepresentation::~RegExpRepresentation):
3328         (JSC::RegExp::RegExp):
3329         (JSC::RegExp::~RegExp):
3330         (JSC::RegExp::compile):
3331         (JSC::RegExp::match):
3332         * runtime/RegExp.h:
3333
3334 2010-09-07  Anders Carlsson  <andersca@apple.com>
3335
3336         Reviewed by Darin Adler.
3337
3338         <rdar://problem/8381749> -Wcast-align warning emitted when building with clang
3339
3340         Remove the -Wcast-align-warning since it isn't really useful, and clang is more aggressive about warning than gcc.
3341
3342         * Configurations/Base.xcconfig:
3343
3344 2010-09-07  Zoltan Horvath  <zoltan@webkit.org>
3345
3346         Reviewed by Darin Adler.
3347
3348         REGRESSION(66741): Undefined pthread macros
3349         https://bugs.webkit.org/show_bug.cgi?id=45246
3350
3351         PTHREAD_MUTEX_NORMAL and PTHREAD_MUTEX_DEFAULT (introduced in r60487) are not defined on Linux, 
3352         but used in a statement. Add an additional check to test this.
3353
3354         * wtf/FastMalloc.cpp:
3355         (WTF::TCMalloc_PageHeap::initializeScavenger):
3356
3357 2010-09-06  Oliver Hunt  <oliver@apple.com>
3358
3359         Windows build fix
3360
3361 2010-09-05  Oliver Hunt  <oliver@apple.com>
3362
3363         Reviewed by Sam Weinig.
3364
3365         SerializedScriptValue needs to use a flat storage mechanism
3366         https://bugs.webkit.org/show_bug.cgi?id=45244
3367
3368         Export JSArray::put
3369
3370         * JavaScriptCore.exp:
3371
3372 2010-09-06  Chao-ying Fu  <fu@mips.com>
3373
3374         Reviewed by Oliver Hunt.
3375
3376         Support JSVALUE32_64 on MIPS
3377         https://bugs.webkit.org/show_bug.cgi?id=43999
3378
3379         Add missing functions to support JSVALUE32_64 on MIPS.
3380         Remove JSVALUE32 as the default for MIPS.
3381
3382         * assembler/MIPSAssembler.h:
3383         (JSC::MIPSAssembler::divd):
3384         (JSC::MIPSAssembler::mthc1):
3385         (JSC::MIPSAssembler::cvtwd):
3386         * assembler/MacroAssemblerMIPS.h:
3387         (JSC::MacroAssemblerMIPS::neg32):
3388         (JSC::MacroAssemblerMIPS::branchOr32):
3389         (JSC::MacroAssemblerMIPS::set8):
3390         (JSC::MacroAssemblerMIPS::loadDouble):
3391         (JSC::MacroAssemblerMIPS::divDouble):
3392         (JSC::MacroAssemblerMIPS::convertInt32ToDouble):
3393         (JSC::MacroAssemblerMIPS::branchDouble):
3394         (JSC::MacroAssemblerMIPS::branchConvertDoubleToInt32):
3395         (JSC::MacroAssemblerMIPS::zeroDouble):
3396         * jit/JIT.h:
3397         * jit/JITOpcodes32_64.cpp:
3398         (JSC::JIT::privateCompileCTINativeCall):
3399         * jit/JITPropertyAccess32_64.cpp:
3400         (JSC::JIT::privateCompilePutByIdTransition):
3401         * jit/JITStubs.cpp:
3402         (JSC::JITThunks::JITThunks):
3403         * jit/JITStubs.h:
3404         * wtf/Platform.h:
3405
3406 2010-09-06  Robert Hogan  <robert@webkit.org>
3407
3408         Unreviewed, compile fix.
3409
3410         Fix compile failure in r66843
3411
3412         Revert to original patch in bugzilla. Leave bug open for
3413         discussion on potential removal of double utf8 conversion.
3414
3415         https://bugs.webkit.org/show_bug.cgi?id=45240
3416
3417         * wtf/text/WTFString.cpp:
3418         (WTF::String::format):
3419
3420 2010-09-06  Robert Hogan  <robert@webkit.org>
3421
3422         Reviewed by Andreas Kling.
3423
3424         [Qt] utf8 encoding of console() messages
3425
3426         Unskip:
3427         http/tests/security/xssAuditor/embed-tag-null-char.html
3428         http/tests/security/xssAuditor/object-embed-tag-null-char.html
3429
3430         Both tests failed because Qt's implementation of String::format()
3431         is casting a utf8 result to String, which assumes latin1 in
3432         its constructor. So instead of casting a QString to a String, use
3433         StringImpl::create() instead. Unfortunately, this involves a lot
3434         of extra casts but the end result is correct.
3435
3436         https://bugs.webkit.org/show_bug.cgi?id=45240
3437
3438         * wtf/text/WTFString.cpp:
3439         (WTF::String::format):
3440
3441 2010-09-03  Alexey Proskuryakov  <ap@apple.com>
3442
3443         Reviewed by Darin Adler.
3444
3445         https://bugs.webkit.org/show_bug.cgi?id=45135
3446         <rdar://problem/7823714> TCMalloc_PageHeap doesn't hold a mutex while manipulating shared data
3447
3448         * wtf/FastMalloc.cpp:
3449         (WTF::TCMalloc_PageHeap::initializeScavenger): Make sure to create a non-recursive mutex
3450         regardless of platform default, so that we can assert that it's held (this is for platforms
3451         that don't have libdispatch).
3452         (WTF::TCMalloc_PageHeap::signalScavenger): Assert that the mutex is held, so we can look
3453         at m_scavengeThreadActive. For platforms that have libdispatch, assert that pageheap_lock
3454         is held.
3455         (WTF::TCMalloc_PageHeap::periodicScavenge): Make sure that pageheap_lock is held before
3456         manipulating m_scavengeThreadActive. Otherwise, there is an obvious race condition, and we
3457         can make unbalanced calls to dispatch_resume().
3458
3459 2010-09-03  Lucas De Marchi  <lucas.demarchi@profusion.mobi>
3460
3461         Reviewed by Martin Robinson.
3462
3463         [EFL] Regression (66531) Build break with Glib Support
3464         https://bugs.webkit.org/show_bug.cgi?id=45011
3465
3466         Move GtkTypedefs.h to GTypedefs.h and let it inside gobject directory
3467         since when glib is enabled, EFL port needs it, too.
3468
3469         * CMakeListsEfl.txt: Include gobject directory to find new header
3470         file.
3471         * GNUmakefile.am: Ditto.
3472         * wtf/CMakeListsEfl.txt: Ditto.
3473         * wtf/Platform.h: Include header if port is EFL and glib support is
3474         enabled.
3475         * wtf/gtk/GtkTypedefs.h: Removed.
3476         * wtf/gobject/GTypedefs.h: Added. Sections specific to GTK are now
3477         guarded by PLATFORM(GTK).
3478
3479 2010-09-03  Csaba Osztrogonác  <ossy@webkit.org>
3480
3481         Reviewed by Simon Hausmann.
3482
3483         Fix warning in wtf/ByteArray.h
3484         https://bugs.webkit.org/show_bug.cgi?id=44672
3485
3486         * wtf/ByteArray.h: Use maximal sized array for MSVC and unsized array for other compilers.
3487
3488 2010-09-02  Adam Barth  <abarth@webkit.org>
3489
3490         Reviewed by Eric Seidel.
3491
3492         Actually parse a URL from ParsedURL
3493         https://bugs.webkit.org/show_bug.cgi?id=45080
3494
3495         This patch only handles standard URLs.  At some point we'll need to
3496         distinguish between standard URLs and other kinds of URLs.
3497
3498         * wtf/url/api/ParsedURL.cpp:
3499         (WTF::ParsedURL::ParsedURL):
3500
3501 2010-09-02  Adam Barth  <abarth@webkit.org>
3502
3503         Reviewed by Eric Seidel.
3504
3505         Add ParsedURL and URLString to WTFURL API
3506         https://bugs.webkit.org/show_bug.cgi?id=45078
3507
3508         Currently there's no actual URL parsing going on, but this patch is a
3509         start to sketching out the API.
3510
3511         * JavaScriptCore.xcodeproj/project.pbxproj:
3512         * wtf/url/api/ParsedURL.cpp: Added.
3513         (WTF::ParsedURL::ParsedURL):
3514         (WTF::ParsedURL::scheme):
3515         (WTF::ParsedURL::username):
3516         (WTF::ParsedURL::password):
3517         (WTF::ParsedURL::host):
3518         (WTF::ParsedURL::port):
3519         (WTF::ParsedURL::path):
3520         (WTF::ParsedURL::query):
3521         (WTF::ParsedURL::fragment):
3522         (WTF::ParsedURL::segment):
3523         * wtf/url/api/ParsedURL.h: Added.
3524         (WTF::ParsedURL::spec):
3525         * wtf/url/api/URLString.h: Added.
3526         (WTF::URLString::URLString):
3527         (WTF::URLString::string):
3528
3529 2010-09-02  Adam Barth  <abarth@webkit.org>
3530
3531         Reviewed by Eric Seidel.
3532
3533         Add WTFURL to the JavaScriptCore build on Mac
3534         https://bugs.webkit.org/show_bug.cgi?id=45075
3535
3536         Building code is good.
3537
3538         * JavaScriptCore.xcodeproj/project.pbxproj:
3539
3540 2010-09-02  Alexey Proskuryakov  <ap@apple.com>
3541
3542         Reviewed by Oliver Hunt.
3543
3544         https://bugs.webkit.org/show_bug.cgi?id=43230
3545         <rdar://problem/8254215> REGRESSION: Memory leak within JSParser::JSParser
3546
3547         One can't delete a ThreadSpecific object that has data in it. It's not even possible to
3548         enumerate data objects in all threads, much less destroy them from a thread that's destroying
3549         the ThreadSpecific.
3550
3551         * parser/JSParser.cpp:
3552         (JSC::JSParser::JSParser):
3553         * runtime/JSGlobalData.h: 
3554         * wtf/WTFThreadData.cpp:
3555         (WTF::WTFThreadData::WTFThreadData):
3556         * wtf/WTFThreadData.h:
3557         (WTF::WTFThreadData::approximatedStackStart):
3558         Moved stack guard tracking from JSGlobalData to WTFThreadData.
3559
3560         * wtf/ThreadSpecific.h: Made destructor unimplemented. It's dangerous, and we probably won't
3561         ever face a situation where we'd want to delete a ThreadSpecific object.
3562
3563 2010-09-01  Gavin Barraclough  <barraclough@apple.com>
3564
3565         Rubber stamped by Oliver Hunt.
3566
3567         Ecma-262 15.11.1.1 states that if the argument is undefined then an
3568         Error object's message property should be set to the empty string.
3569
3570         * runtime/ErrorInstance.cpp:
3571         (JSC::ErrorInstance::ErrorInstance):
3572         (JSC::ErrorInstance::create):
3573         * runtime/ErrorInstance.h:
3574         * runtime/ErrorPrototype.cpp:
3575         (JSC::ErrorPrototype::ErrorPrototype):
3576
3577 2010-08-31  Darin Adler  <darin@apple.com>
3578
3579         Reviewed by Anders Carlsson.
3580
3581         * wtf/FastMalloc.cpp:
3582         (WTF::TCMalloc_PageHeap::scavenge): Replaced somewhat-quirky code that
3583         mixed types with code that uses size_t.
3584
3585         * wtf/TCPageMap.h: Removed names of unused arguments to avoid warning.
3586
3587 2010-08-31  Martin Robinson  <mrobinson@igalia.com>
3588
3589         Reviewed by Gustavo Noronha Silva.
3590
3591         [GTK] Isolate all GTK+ typedefs into one file
3592         https://bugs.webkit.org/show_bug.cgi?id=44900
3593
3594         * GNUmakefile.am: Add GtkTypedefs.h to the source lists.
3595         * wtf/Platform.h: #include GtkTypedefs.h for the GTK+ build.
3596         * wtf/ThreadingPrimitives.h: Remove GTK+ typedefs.
3597         * wtf/gobject/GOwnPtr.h: Ditto.
3598         * wtf/gobject/GRefPtr.h: Ditto.
3599         * wtf/gtk/GtkTypedefs.h: Added.
3600
3601 2010-08-31  Martin Robinson  <mrobinson@igalia.com>
3602
3603         Reviewed by Gustavo Noronha Silva.
3604
3605         [GTK] Fix 'make dist' in preparation of the 1.3.3 release
3606         https://bugs.webkit.org/show_bug.cgi?id=44978
3607
3608         * GNUmakefile.am: Adding missing headers to the sources list.
3609
3610 2010-08-31  Chao-ying Fu  <fu@mips.com>
3611
3612         Reviewed by Oliver Hunt.
3613
3614         Support emit_op_mod() for MIPS
3615         https://bugs.webkit.org/show_bug.cgi?id=42855
3616
3617         This patch uses MIPS div instructions for op_mod to improve performance.
3618
3619         * assembler/MIPSAssembler.h:
3620         (JSC::MIPSAssembler::div):
3621         * jit/JITArithmetic.cpp:
3622         (JSC::JIT::emit_op_mod):
3623         (JSC::JIT::emitSlow_op_mod):
3624
3625 2010-08-31  Csaba Osztrogonác  <ossy@webkit.org>
3626
3627         Reviewed by Darin Adler.
3628
3629         Modify ASSERT_UNUSED and UNUSED_PARAM similar to Qt's Q_UNUSED.
3630         https://bugs.webkit.org/show_bug.cgi?id=44870
3631
3632         * wtf/Assertions.h:
3633         * wtf/UnusedParam.h:
3634
3635 2010-08-31  Benjamin Poulain  <benjamin.poulain@nokia.com>
3636
3637         Reviewed by Kenneth Rohde Christiansen.
3638
3639         JSC TimeoutChecker::didTimeOut overflows on ARM
3640         https://bugs.webkit.org/show_bug.cgi?id=38538
3641
3642         Make getCPUTime() return values relative to the first call.
3643         The previous implementation relied on simply on currentTime(), which
3644         return a time since epoch and not a time since the thread started. This
3645         made the return value of getCPUTime() overflow on 32 bits.
3646
3647         * runtime/TimeoutChecker.cpp:
3648         (JSC::getCPUTime):
3649
3650 2010-08-30  Mihai Parparita  <mihaip@chromium.org>
3651
3652         Reviewed by Adam Barth.
3653
3654         HISTORY_ALWAYS_ASYNC should be removed (history should always be async)
3655         https://bugs.webkit.org/show_bug.cgi?id=44315
3656
3657         Remove ENABLE_HISTORY_ALWAYS_ASYNC #define.
3658
3659         * wtf/Platform.h: 
3660
3661 2010-08-30  Chris Rogers  <crogers@google.com>
3662
3663         Reviewed by Kenneth Russell.
3664
3665         Fix namespace for wtf/Complex.h and wtf/Vector3.h
3666         https://bugs.webkit.org/show_bug.cgi?id=44892
3667
3668         * wtf/Complex.h:
3669         * wtf/Vector3.h:
3670
3671 2010-08-30  Andy Estes  <aestes@apple.com>
3672
3673         Reviewed by Eric Carlson.
3674
3675         Strings returned by asciiDebug() should be NULL-terminated.
3676         https://bugs.webkit.org/show_bug.cgi?id=44866
3677
3678         * wtf/text/WTFString.cpp:
3679         (asciiDebug):
3680
3681 2010-08-30  Zoltan Herczeg  <zherczeg@webkit.org>
3682
3683         Reviewed by Darin Adler.
3684
3685         Refactor number parsing in the lexer
3686         https://bugs.webkit.org/show_bug.cgi?id=44104
3687
3688         Number parsing was full of gotos, and needed a complete
3689         redesign to remove them (Only one remained). Furthermore
3690         integer arithmetic is empolyed for fast cases (= small
3691         integer numbers).
3692
3693         * parser/Lexer.cpp:
3694         (JSC::Lexer::parseHex):
3695         (JSC::Lexer::parseOctal):
3696         (JSC::Lexer::parseDecimal):
3697         (JSC::Lexer::parseNumberAfterDecimalPoint):
3698         (JSC::Lexer::parseNumberAfterExponentIndicator):
3699         (JSC::Lexer::lex):
3700         * parser/Lexer.h:
3701
3702 2010-08-29  Darin Adler  <darin@apple.com>
3703
3704         Fix Qt build.
3705
3706         * wtf/unicode/glib/UnicodeMacrosFromICU.h: Added U_IS_BMP.
3707         * wtf/unicode/qt4/UnicodeQt4.h: Ditto.
3708         * wtf/unicode/wince/UnicodeWince.h: Ditto.
3709
3710 2010-08-29  Kwang Yul Seo  <skyul@company100.net>
3711
3712         Reviewed by Kent Tamura.
3713
3714         [BREWMP] Port vprintf_stderr_common
3715         https://bugs.webkit.org/show_bug.cgi?id=33568
3716
3717         Use BREW's DBGPRINTF to output debug messages.
3718
3719         * wtf/Assertions.cpp:
3720
3721 2010-08-28  Gavin Barraclough  <barraclough@apple.com>
3722
3723         Reviewed by Oliver Hunt.
3724
3725         Bug 44830 - In Array's prototype functyions we're incorrectly handing large index values
3726
3727         We are in places casting doubles to unsigneds, and unsigneds to ints, without always check
3728         that the result is within bounds. This is problematic in the case of double-to-unsigned
3729         conversion because we should be saturating to array length.
3730
3731         Also, the error return value from Array.splice should be [], not undefined.
3732
3733         I don't see any security concerns here. These methods are spec'ed in such a way that they
3734         can be applied to non Array objects, so in all cases the (potentially bogus) indices are
3735         being passed to functions that will safely check accesses are within bounds.
3736
3737         * runtime/ArrayPrototype.cpp:
3738         (JSC::argumentClampedIndexFromStartOrEnd):
3739         (JSC::arrayProtoFuncJoin):
3740         (JSC::arrayProtoFuncConcat):
3741         (JSC::arrayProtoFuncReverse):
3742         (JSC::arrayProtoFuncShift):
3743         (JSC::arrayProtoFuncSlice):
3744         (JSC::arrayProtoFuncSort):
3745         (JSC::arrayProtoFuncSplice):
3746         (JSC::arrayProtoFuncUnShift):
3747         (JSC::arrayProtoFuncFilter):
3748         (JSC::arrayProtoFuncMap):
3749         (JSC::arrayProtoFuncEvery):
3750         (JSC::arrayProtoFuncForEach):
3751         (JSC::arrayProtoFuncSome):
3752         (JSC::arrayProtoFuncReduce):
3753         (JSC::arrayProtoFuncReduceRight):
3754         (JSC::arrayProtoFuncIndexOf):
3755         (JSC::arrayProtoFuncLastIndexOf):
3756         * runtime/JSValue.h:
3757         (JSC::JSValue::toUInt32):
3758
3759 2010-08-28  Pratik Solanki  <psolanki@apple.com>
3760
3761         Reviewed by Dan Bernstein.
3762
3763         Add an ENABLE define for purgeable memory support
3764         https://bugs.webkit.org/show_bug.cgi?id=44777
3765
3766         * wtf/Platform.h:
3767
3768 2010-08-27  Kimmo Kinnunen  <kimmo.t.kinnunen@nokia.com>
3769
3770         Reviewed by Kenneth Rohde Christiansen.
3771
3772         [Qt] NPAPI Plugin metadata should be cached, and loading a plugin should not require loading every plugin
3773         https://bugs.webkit.org/show_bug.cgi?id=43179
3774
3775         Add ENABLE_NETSCAPE_PLUGIN_METADATA_CACHE flag to enable persistent
3776         NPAPI Plugin Cache. The flag is enabled by default.
3777
3778         * wtf/Platform.h: Add ENABLE_NETSCAPE_PLUGIN_METADATA_CACHE
3779
3780 2010-07-27  Jer Noble  <jer.noble@apple.com>
3781
3782         Reviewed by Eric Carlson.
3783
3784         Add JavaScript API to allow a page to go fullscreen.
3785         rdar://problem/6867795
3786         https://bugs.webkit.org/show_bug.cgi?id=43099
3787
3788         * wtf/Platform.h: Enable FULLSCREEN_API mode for the Mac (except iOS).
3789
3790 2010-08-27  Gavin Barraclough  <barraclough@apple.com>
3791
3792         Windows build fix pt 2.
3793
3794         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3795
3796 2010-08-27  Gavin Barraclough  <barraclough@apple.com>
3797
3798         Windows build fix pt 1.
3799
3800         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3801
3802 2010-08-27  Gavin Barraclough  <barraclough@apple.com>
3803
3804         Reviewed by Oliver Hunt.
3805
3806         Bug 44745 - Number.toFixed/toExponential/toPrecision are inaccurate.
3807
3808         These methods should be using a version of dtoa that can generate results accurate
3809         to the requested precision, whereas our version of dtoa is only currently able to
3810         support producing results sufficiently accurate to distinguish the value from any
3811         other IEEE-754 double precision number.
3812
3813         This change has no impact on benchmarks we track.
3814
3815         On microbenchmarks for these functions, this is a slight regression where a high
3816         precision is requested (dtoa now need to iterate further to generate a a greater
3817         number of digits), but with smaller precision values (hopefully more common) this
3818         improves performance, since it reduced the accurate of result dtoa is required,
3819         to produce, and removes the need to pre-round values before calling dtoa. 
3820
3821         * JavaScriptCore.exp:
3822             doubleToStringInJavaScriptFormat renamed to numberToString
3823
3824         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3825             doubleToStringInJavaScriptFormat renamed to numberToString
3826
3827         * runtime/UString.cpp:
3828         (JSC::UString::number):
3829             doubleToStringInJavaScriptFormat renamed to numberToString
3830
3831         * wtf/DecimalNumber.h:
3832         (WTF::DecimalNumber::DecimalNumber):
3833         (WTF::DecimalNumber::toStringDecimal):
3834         (WTF::DecimalNumber::toStringExponential):
3835             Remove all pre-rounding of values, instead call dtoa correctly.
3836
3837         * wtf/dtoa.cpp:
3838         (WTF::dtoa):
3839         * wtf/dtoa.h:
3840             Reenable support for rounding to specific-figures/decimal-places in dtoa.
3841             Modify to remove unbiased rounding, provide ECMA required away-from-zero.
3842             Rewrite doubleToStringInJavaScriptFormat to use DecimalNumber, rename to
3843             numberToString.
3844
3845 2010-08-27  Chao-ying Fu  <fu@mips.com>
3846
3847         Reviewed by Oliver Hunt.
3848
3849         Byte alignment issue on MIPS
3850         https://bugs.webkit.org/show_bug.cgi?id=29415
3851
3852         MIPS accesses one byte at a time for now to avoid the help from the
3853         kernel to fix unaligned accesses.
3854
3855         * wtf/text/AtomicString.cpp:
3856         (WebCore::equal):
3857         * wtf/text/StringHash.h:
3858         (WebCore::StringHash::equal):
3859
3860 2010-08-27  Xan Lopez  <xlopez@igalia.com>
3861
3862         Reviewed by Tor Arne Vestbø.
3863
3864         Fix a couple of typos in comment.
3865
3866         * bytecode/CodeBlock.h:
3867
3868 2010-08-26  Gavin Barraclough  <barraclough@apple.com>
3869
3870         Windows build fix.
3871
3872         * wtf/dtoa.cpp:
3873
3874 2010-08-26  Gavin Barraclough  <baraclough@apple.com>
3875
3876         Reviewed by Sam Weinig.
3877
3878         Bug 44735 - Clean up dtoa.cpp
3879         Remove unused & unmaintained code paths, reformat code to match
3880         coding standard & use platform #defines from Platform.h directly.
3881
3882         * wtf/dtoa.cpp:
3883         (WTF::storeInc):
3884         (WTF::multadd):
3885         (WTF::s2b):
3886         (WTF::lo0bits):
3887         (WTF::mult):
3888         (WTF::pow5mult):
3889         (WTF::lshift):
3890         (WTF::diff):
3891         (WTF::ulp):
3892         (WTF::b2d):
3893         (WTF::d2b):
3894         (WTF::ratio):
3895         (WTF::):
3896         (WTF::strtod):
3897         (WTF::quorem):
3898         (WTF::dtoa):
3899
3900 2010-08-26  Gavin Barraclough  <barraclough@apple.com>
3901
3902         Rubber Stamped by Oliver Hunt.
3903
3904         Partially revert r65959. The toString changes regressed the v8 tests,
3905         but keep the toFixed/toExponential/toPrecision changes.
3906
3907         * JavaScriptCore.exp:
3908         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3909         * runtime/NumberPrototype.cpp:
3910         * runtime/UString.cpp:
3911         (JSC::UString::number):
3912         * wtf/DecimalNumber.h:
3913         * wtf/dtoa.cpp:
3914         (WTF::append):
3915         (WTF::doubleToStringInJavaScriptFormat):
3916         * wtf/dtoa.h:
3917         * wtf/text/WTFString.cpp:
3918         * wtf/text/WTFString.h:
3919
3920 2010-08-26  James Robinson  <jamesr@chromium.org>
3921
3922         Reviewed by Darin Fisher.
3923
3924         [chromium] Remove the USE(GLES2_RENDERING) define and associated code
3925         https://bugs.webkit.org/show_bug.cgi?id=43761
3926
3927         Remove WTF_USE_GLES2_RENDERING from the list of defines in chromium, it's unused.
3928
3929         * wtf/Platform.h:
3930
3931 2010-08-26  Gavin Barraclough  <barraclough@apple.com>
3932
3933         Rolling out r64608, this regressed performance.
3934
3935         * JavaScriptCore.xcodeproj/project.pbxproj:
3936         * assembler/ARMAssembler.cpp:
3937         (JSC::ARMAssembler::executableCopy):
3938         * assembler/LinkBuffer.h:
3939         (JSC::LinkBuffer::LinkBuffer):
3940         (JSC::LinkBuffer::~LinkBuffer):
3941         (JSC::LinkBuffer::performFinalization):
3942         * assembler/MIPSAssembler.h:
3943         (JSC::MIPSAssembler::executableCopy):
3944         * assembler/X86Assembler.h:
3945         (JSC::X86Assembler::executableCopy):
3946         * bytecode/StructureStubInfo.h:
3947         (JSC::StructureStubInfo::initGetByIdProto):
3948         (JSC::StructureStubInfo::initGetByIdChain):
3949         (JSC::StructureStubInfo::initGetByIdSelfList):
3950         (JSC::StructureStubInfo::initGetByIdProtoList):
3951         (JSC::StructureStubInfo::initPutByIdTransition):
3952         * jit/ExecutableAllocator.cpp:
3953         (JSC::ExecutablePool::systemAlloc):
3954         * jit/ExecutableAllocator.h:
3955         (JSC::ExecutablePool::create):
3956         (JSC::ExecutableAllocator::ExecutableAllocator):
3957         (JSC::ExecutableAllocator::poolForSize):
3958         (JSC::ExecutablePool::ExecutablePool):
3959         (JSC::ExecutablePool::poolAllocate):
3960         * jit/ExecutableAllocatorFixedVMPool.cpp:
3961         (JSC::FixedVMPoolAllocator::allocInternal):
3962         * jit/JIT.cpp:
3963         (JSC::JIT::privateCompile):
3964         * jit/JIT.h:
3965         (JSC::JIT::compileGetByIdProto):
3966         (JSC::JIT::compileGetByIdSelfList):
3967         (JSC::JIT::compileGetByIdProtoList):
3968         (JSC::JIT::compileGetByIdChainList):
3969         (JSC::JIT::compileGetByIdChain):
3970         (JSC::JIT::compilePutByIdTransition):
3971         (JSC::JIT::compilePatchGetArrayLength):
3972         * jit/JITOpcodes.cpp:
3973         (JSC::JIT::privateCompileCTIMachineTrampolines):
3974         * jit/JITOpcodes32_64.cpp:
3975         (JSC::JIT::privateCompileCTIMachineTrampolines):
3976         (JSC::JIT::privateCompileCTINativeCall):
3977         * jit/JITPropertyAccess.cpp:
3978         (JSC::JIT::stringGetByValStubGenerator):
3979         (JSC::JIT::privateCompilePutByIdTransition):
3980         (JSC::JIT::privateCompilePatchGetArrayLength):
3981         (JSC::JIT::privateCompileGetByIdProto):
3982         (JSC::JIT::privateCompileGetByIdSelfList):
3983         (JSC::JIT::privateCompileGetByIdProtoList):
3984         (JSC::JIT::privateCompileGetByIdChainList):
3985         (JSC::JIT::privateCompileGetByIdChain):
3986         * jit/JITPropertyAccess32_64.cpp:
3987         (JSC::JIT::stringGetByValStubGenerator):
3988         (JSC::JIT::privateCompilePutByIdTransition):
3989         (JSC::JIT::privateCompilePatchGetArrayLength):
3990         (JSC::JIT::privateCompileGetByIdProto):
3991         (JSC::JIT::privateCompileGetByIdSelfList):
3992         (JSC::JIT::privateCompileGetByIdProtoList):
3993         (JSC::JIT::privateCompileGetByIdChainList):
3994         (JSC::JIT::privateCompileGetByIdChain):
3995         * jit/JITStubs.cpp:
3996         (JSC::JITThunks::tryCachePutByID):
3997         (JSC::JITThunks::tryCacheGetByID):
3998         (JSC::DEFINE_STUB_FUNCTION):
3999         (JSC::getPolymorphicAccessStructureListSlot):
4000         * jit/JITStubs.h:
4001         * jit/SpecializedThunkJIT.h:
4002         (JSC::SpecializedThunkJIT::finalize):
4003         * runtime/ExceptionHelpers.cpp:
4004         * runtime/ExceptionHelpers.h:
4005         * runtime/Executable.cpp:
4006         (JSC::EvalExecutable::compileInternal):
4007         (JSC::ProgramExecutable::compileInternal):
4008         (JSC::FunctionExecutable::compileForCallInternal):
4009         (JSC::FunctionExecutable::compileForConstructInternal):
4010         (JSC::FunctionExecutable::reparseExceptionInfo):
4011         (JSC::EvalExecutable::reparseExceptionInfo):
4012         * yarr/RegexJIT.cpp:
4013         (JSC::Yarr::RegexGenerator::compile):
4014
4015 2010-08-26  Gavin Barraclough  <barraclough@apple.com>
4016
4017         Reviewed by Brady Eidson.
4018
4019         Bug 44655 - Add debug only convenience methods to obtain a Vector<char> from a String/StringImpl.
4020
4021         * wtf/text/WTFString.cpp:
4022         (asciiDebug):
4023             Return a Vector<char> containing the contents of a string as ASCII.
4024
4025 2010-08-26  Sam Weinig  <sam@webkit.org>
4026
4027         Reviewed by Darin Adler.
4028
4029         Add PassOwnArrayPtr
4030         https://bugs.webkit.org/show_bug.cgi?id=44627
4031
4032         * GNUmakefile.am:
4033         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
4034         * JavaScriptCore.xcodeproj/project.pbxproj:
4035         Add the new files.
4036
4037         * wtf/Forward.h:
4038         Forward declare PassOwnArrayPtr.
4039         
4040         * wtf/OwnArrayPtr.h:
4041         Mimic the OwnPtr interface.
4042
4043         * wtf/OwnArrayPtrCommon.h: Added.
4044         (WTF::deleteOwnedArrayPtr):
4045         Move delete function here so it can be shared by OwnArrayPtr and
4046         PassOwnArrayPtr.
4047
4048         * wtf/PassOwnArrayPtr.h: Added.
4049         Mimic the PassOwnPtr interface.
4050
4051 2010-08-26  Oliver Hunt  <oliver@apple.com>
4052
4053         Reviewed by Gavin Barraclough.
4054
4055         [JSC] JavaScript parsing error when loading Equifax web page
4056         https://bugs.webkit.org/show_bug.cgi?id=42900
4057
4058         '-->' is ostensibly only meant to occur when there is only
4059         whitespace preceeding it on the line.  However firefox treats
4060         multiline comments as a space character, so they are allowed.
4061         One side effect of the firefox model is that any line terminators
4062         inside the multiline comment are ignored, so
4063
4064             foo/*
4065             */-->
4066
4067         is treated as
4068
4069             foo -->
4070
4071         and so '-->' will not be a comment in this case.  Happily this simply
4072         means that to fix this issue all we need to do is stop updating
4073         m_atLineStart when handling multiline comments.
4074
4075         * parser/Lexer.cpp:
4076         (JSC::Lexer::lex):
4077
4078 2010-08-25  Oliver Hunt  <oliver@apple.com>
4079
4080         Reviewed by Geoffrey Garen.
4081
4082         Improve overflow handling in StringImpl::Replace
4083         https://bugs.webkit.org/show_bug.cgi?id=42502
4084         <rdar://problem/8203794>
4085
4086         Harden StringImpl::replace against overflow -- I can't see how this
4087         could be abused, but it's better to be safe than sorry.
4088
4089         * wtf/text/StringImpl.cpp:
4090         (WTF::StringImpl::replace):
4091
4092 2010-08-26  Martin Robinson  <mrobinson@igalia.com>
4093
4094         Reviewed by Xan Lopez.
4095
4096         [GTK] The GNUmakefile.am files contain a myriad of confusing preprocessor and compiler flag definitions
4097         https://bugs.webkit.org/show_bug.cgi?id=44624
4098
4099         Clean up GNUmakefile.am.
4100
4101         * GNUmakefile.am: Alphabetize the include order in javascriptcore_cppflags. Move
4102         a couple include lines from the top-level GNUmakefile.am.
4103
4104 2010-08-25  Xan Lopez  <xlopez@igalia.com>
4105
4106         Reviewed by Kent Tamura.
4107
4108         Local variables 'k' and 'y' in s2b() in dtoa.cpp are computed but not used
4109         https://bugs.webkit.org/show_bug.cgi?id=29259
4110
4111         Remove unused code in dtoa.cpp, spotted by Wan-Teh Chang.
4112
4113         * wtf/dtoa.cpp:
4114         (WTF::s2b):
4115
4116 2010-08-25  Kwang Yul Seo  <skyul@company100.net>
4117
4118         Reviewed by Kevin Ollivier.
4119
4120         [BREWMP] Add build system
4121         https://bugs.webkit.org/show_bug.cgi?id=44645
4122
4123         Make waf script portable so that we can add more ports.
4124
4125         * wscript:
4126
4127 2010-08-25  Michael Saboff  <msaboff@apple.com>
4128
4129         Reviewed by Sam Weinig.
4130
4131         Remove the single entry regular expression cache introduced as part of
4132         the fix for https://bugs.webkit.org/show_bug.cgi?id=41238.
4133         The performance problem in Dromaeo that initiated that bug is no 
4134         longer present. Dromaeo has been modified so that the regular
4135         expression tests are somewhat random and don't benefit from a
4136         single entry cache.
4137
4138         * runtime/RegExp.cpp:
4139         (JSC::RegExp::RegExp):
4140         (JSC::RegExp::match):
4141         * runtime/RegExp.h:
4142
4143 2010-08-25  Martin Robinson  <mrobinson@igalia.com>
4144
4145         Reviewed by Gustavo Noronha Silva.
4146
4147         Cairo and EFL port shouldn't depend on glib.
4148         https://bugs.webkit.org/show_bug.cgi?id=44354
4149
4150         Replace GRefPtr with PlatformRefPtr. Keep GLib specific bits in
4151         GRefPtr.h.
4152
4153         * GNUmakefile.am: Add PlatformRefPtr.h to the source list.
4154         * wtf/PlatformRefPtr.h: Migrated from GRefPtr.h.
4155         (WTF::PlatformRefPtr::PlatformRefPtr): Ditto.
4156         (WTF::PlatformRefPtr::~PlatformRefPtr): Ditto.
4157         (WTF::PlatformRefPtr::clear): Ditto.
4158         (WTF::PlatformRefPtr::get): Ditto.
4159         (WTF::PlatformRefPtr::operator*): Ditto.
4160         (WTF::PlatformRefPtr::operator->): Ditto.
4161         (WTF::PlatformRefPtr::operator!): Ditto.
4162         (WTF::PlatformRefPtr::operator UnspecifiedBoolType): Ditto.
4163         (WTF::PlatformRefPtr::hashTableDeletedValue): Ditto.
4164         (WTF::::operator): Ditto.
4165         (WTF::::swap): Ditto.
4166         (WTF::swap): Ditto.
4167         (WTF::operator==): Ditto.
4168         (WTF::operator!=): Ditto.
4169         (WTF::static_pointer_cast): Ditto.
4170         (WTF::const_pointer_cast): Ditto.
4171         (WTF::getPtr): Ditto.
4172         (WTF::adoptPlatformRef): Ditto.
4173         * wtf/gobject/GRefPtr.cpp: Changes to reflect new names.
4174         (WTF::refPlatformPtr):
4175         (WTF::derefPlatformPtr):
4176         * wtf/gobject/GRefPtr.h: Ditto.
4177         (WTF::refPlatformPtr):
4178         (WTF::derefPlatformPtr):
4179
4180 2010-08-25  Xan Lopez  <xlopez@igalia.com>
4181
4182         Reviewed by Alexey Proskuryakov.
4183
4184         Remove dead code in JSGlobalObject
4185         https://bugs.webkit.org/show_bug.cgi?id=44615
4186
4187         The recursion data member in the JSGlobalObject and its getter
4188         plus inc/dec methods seems to be unused, remove them.
4189
4190         * runtime/JSGlobalObject.cpp:
4191         (JSC::JSGlobalObject::init):
4192         * runtime/JSGlobalObject.h:
4193
4194 2010-08-25  Michael Saboff  <msaboff@apple.com>
4195
4196         Reviewed by Geoffrey Garen.
4197
4198         Changed the initial and subsequent allocation of vector storage to
4199         Array()s. The changes are to limit sparse arrays to 100000 entries
4200         and fixed the sparse map to vector storage conversion to use the 
4201         minimum amount of memory needed to store the current number of entries.
4202         These changes address https://bugs.webkit.org/show_bug.cgi?id=43707
4203
4204         * runtime/JSArray.cpp:
4205         (JSC::JSArray::putSlowCase):
4206         (JSC::JSArray::getNewVectorLength):
4207
4208 2010-08-16  Gabor Loki  <loki@webkit.org>
4209
4210         Reviewed by Gavin Barraclough.
4211
4212         Avoid increasing required alignment of target type warning
4213         https://bugs.webkit.org/show_bug.cgi?id=43963
4214
4215         Fix platform independent alignment warnings.
4216
4217         * wtf/ListHashSet.h:
4218         (WTF::ListHashSetNodeAllocator::pool):
4219
4220 2010-08-19  Gabor Loki  <loki@webkit.org>
4221
4222         Reviewed by Gavin Barraclough.
4223
4224         Enable truncated floating point feature on ARM
4225         https://bugs.webkit.org/show_bug.cgi?id=44233
4226
4227         Enable truncated floating point feature with the help of VCVTR.S32.F64
4228         instruction. If VCVTR.S32.F64 can't fit the result into a 32-bit
4229         integer/register, it saturates at INT_MAX or INT_MIN. Testing this
4230         looks quicker than testing FPSCR for exception.
4231
4232         Inspired by Jacob Bramley's patch from JaegerMonkey
4233
4234         * assembler/ARMAssembler.h:
4235         (JSC::ARMAssembler::):
4236         (JSC::ARMAssembler::cmn_r):
4237         (JSC::ARMAssembler