cbf783e9351000c0b5e96940f921b5207aa2a5c4
[WebKit.git] / JavaScriptCore / ChangeLog
1 2010-07-12  Anders Carlsson  <andersca@apple.com>
2
3         Reviewed by Dan Bernstein.
4
5         Add WARN_UNUSED_RETURN to the smart pointer "leak" member functions
6         https://bugs.webkit.org/show_bug.cgi?id=42086
7
8         * wtf/OwnPtr.h:
9         * wtf/PassOwnPtr.h:
10         * wtf/PassRefPtr.h:
11         (WTF::PassRefPtr::releaseRef):
12         (WTF::NonNullPassRefPtr::leakRef):
13         (WTF::NonNullPassRefPtr::releaseRef):
14         * wtf/RetainPtr.h:
15         (WTF::RetainPtr::releaseRef):
16
17 2010-07-10  Oliver Hunt  <oliver@apple.com>
18
19         Reviewed by Maciej Stachowiak.
20
21         HAVE_COMPUTED_GOTO is dependent on the interpreter being enabled
22         https://bugs.webkit.org/show_bug.cgi?id=42039
23
24         Separate the existence of computed goto support in the compiler
25         from whether or not we are using the interpreter.  All the current
26         HAVE(COMPUTED_GOTO) guards are for the interpreter, but I'd like
27         the option of using it elsewhere.  The interpreter now uses
28         ENABLE(COMPUTED_GOTO_INTERPRETER) 
29
30         * bytecode/Instruction.h:
31         (JSC::Instruction::Instruction):
32         * bytecode/Opcode.h:
33         * interpreter/Interpreter.cpp:
34         (JSC::Interpreter::Interpreter):
35         (JSC::Interpreter::isOpcode):
36         (JSC::Interpreter::privateExecute):
37         * interpreter/Interpreter.h:
38         (JSC::Interpreter::getOpcode):
39         (JSC::Interpreter::getOpcodeID):
40         * wtf/Platform.h:
41
42 2010-07-10  Oliver Hunt  <oliver@apple.com>
43
44         Reviewed by Gavin Barraclough.
45
46         Remove switches from inner expression loops in the parser
47         https://bugs.webkit.org/show_bug.cgi?id=42035
48
49         Use bitmasks and flags on the token types to identify unary and
50         binary operators, rather than switching on the token type to
51         identify them.
52
53         * parser/JSParser.cpp:
54         (JSC::isUnaryOp):
55         (JSC::JSParser::isBinaryOperator):
56         * parser/JSParser.h:
57         (JSC::):
58
59 2010-07-09  Leon Clarke  <leonclarke@google.com>
60
61         Reviewed by Adam Barth.
62
63         add support for link prefetching
64         https://bugs.webkit.org/show_bug.cgi?id=3652
65
66         * Configurations/FeatureDefines.xcconfig:
67
68 2010-07-09  Oliver Hunt  <oliver@apple.com>
69
70         Reviewed by Darin Adler.
71
72         Tidy up lexer token ids
73         https://bugs.webkit.org/show_bug.cgi?id=42014
74
75         Stop using character literals to identify single character tokens
76         and instead use symbolic names for all tokens.
77
78         * parser/ASTBuilder.h:
79         (JSC::ASTBuilder::makeBinaryNode):
80         * parser/JSParser.cpp:
81         (JSC::JSParser::consume):
82         (JSC::JSParser::match):
83         (JSC::JSParser::autoSemiColon):
84         (JSC::JSParser::JSParser):
85         (JSC::JSParser::parseProgram):
86         (JSC::JSParser::allowAutomaticSemicolon):
87         (JSC::JSParser::parseDoWhileStatement):
88         (JSC::JSParser::parseWhileStatement):
89         (JSC::JSParser::parseVarDeclarationList):
90         (JSC::JSParser::parseConstDeclarationList):
91         (JSC::JSParser::parseForStatement):
92         (JSC::JSParser::parseReturnStatement):
93         (JSC::JSParser::parseWithStatement):
94         (JSC::JSParser::parseSwitchStatement):
95         (JSC::JSParser::parseSwitchClauses):
96         (JSC::JSParser::parseSwitchDefaultClause):
97         (JSC::JSParser::parseTryStatement):
98         (JSC::JSParser::parseDebuggerStatement):
99         (JSC::JSParser::parseStatement):
100         (JSC::JSParser::parseFormalParameters):
101         (JSC::JSParser::parseFunctionInfo):
102         (JSC::JSParser::parseExpressionOrLabelStatement):
103         (JSC::JSParser::parseIfStatement):
104         (JSC::JSParser::parseExpression):
105         (JSC::JSParser::parseAssignmentExpression):
106         (JSC::JSParser::parseConditionalExpression):
107         (JSC::isUnaryOp):
108         (JSC::JSParser::isBinaryOperator):
109         (JSC::JSParser::parseBinaryExpression):
110         (JSC::JSParser::parseProperty):
111         (JSC::JSParser::parseObjectLiteral):
112         (JSC::JSParser::parseStrictObjectLiteral):
113         (JSC::JSParser::parseArrayLiteral):
114         (JSC::JSParser::parsePrimaryExpression):
115         (JSC::JSParser::parseArguments):
116         (JSC::JSParser::parseMemberExpression):
117         (JSC::JSParser::parseUnaryExpression):
118         * parser/JSParser.h:
119         (JSC::):
120         * parser/Lexer.cpp:
121         (JSC::):
122         (JSC::Lexer::lex):
123         * parser/Lexer.h:
124
125 2010-07-09  Gavin Barraclough  <barraclough@apple.com>
126
127         Reviewed by Oliver Hunt.
128
129         Bug 42015 - Enable JSValue32_64 on ARMv7
130
131         * Configurations/JavaScriptCore.xcconfig:
132         * jit/JIT.h:
133         * jit/JITStubs.cpp:
134         * wtf/Platform.h:
135
136 2010-07-09  Kenneth Russell  <kbr@google.com>
137
138         Reviewed by Dimitri Glazkov.
139
140         Assertion failure in String::utf8() for certain invalid UTF16 inputs
141         https://bugs.webkit.org/show_bug.cgi?id=41983
142
143         * wtf/text/WTFString.cpp:
144         (WebCore::String::utf8):
145          - Fixed assertion when sourceExhausted is returned from convertUTF16ToUTF8.
146
147 2010-07-09  Oliver Hunt  <oliver@apple.com>
148
149         Reviewed by Geoffrey Garen.
150
151         Remove a couple of excess writes from the lexer
152         https://bugs.webkit.org/show_bug.cgi?id=41981
153
154         Remove a couple of fields from JSTokenInfo, and rename the remaining ones
155         to something more accurate
156
157         * parser/JSParser.cpp:
158         (JSC::JSParser::next):
159         (JSC::JSParser::tokenStart):
160         (JSC::JSParser::tokenLine):
161         (JSC::JSParser::tokenEnd):
162         * parser/JSParser.h:
163         (JSC::JSTokenInfo::JSTokenInfo):
164         * parser/Lexer.cpp:
165         (JSC::Lexer::lex):
166
167 2010-07-08  Oliver Hunt  <oliver@apple.com>
168
169         Reviewed by Sam Weinig.
170
171         Property declarations in an object literal should not consider the prototype chain when being added to the new object
172         https://bugs.webkit.org/show_bug.cgi?id=41929
173
174         To fix this all we need to do is ensure that all new properties are
175         added with putDirect rather than a fully generic call to put.  This
176         is safe as an object literal is by definition going to produce a
177         completely normal object.
178
179         Rather than duplicating all the put_by_id logic we add an additional
180         flag to op_put_by_id to indicate it should be using putDirect.  In
181         the interpreter this adds a runtime branch, but in the jit this is
182         essentially free as the branch is taken at compile time.  This does
183         actually improve object literal creation time even in the interpreter
184         as we no longer need to walk the prototype chain to verify that the
185         cached put is safe.
186
187         We still emit normal put_by_id code when emitting __proto__ as we want
188         to get the correct handling for changing the prototype.
189
190         Sunspider claims this is a 0.7% speedup which is conceivably real due
191         to the performance improvement in object literals, but I suspect its
192         really just the result of code motion.
193
194         * bytecode/Opcode.h:
195         * bytecompiler/BytecodeGenerator.cpp:
196         (JSC::BytecodeGenerator::emitPutById):
197         (JSC::BytecodeGenerator::emitDirectPutById):
198         * bytecompiler/BytecodeGenerator.h:
199         * bytecompiler/NodesCodegen.cpp:
200         (JSC::PropertyListNode::emitBytecode):
201         * interpreter/Interpreter.cpp:
202         (JSC::Interpreter::privateExecute):
203         * jit/JIT.h:
204         (JSC::JIT::compilePutByIdTransition):
205         * jit/JITPropertyAccess.cpp:
206         (JSC::JIT::emit_op_put_by_id):
207         (JSC::JIT::emitSlow_op_put_by_id):
208         (JSC::JIT::privateCompilePutByIdTransition):
209         (JSC::JIT::patchPutByIdReplace):
210         * jit/JITPropertyAccess32_64.cpp:
211         (JSC::JIT::emitSlow_op_put_by_id):
212         (JSC::JIT::privateCompilePutByIdTransition):
213         (JSC::JIT::patchPutByIdReplace):
214         * jit/JITStubs.cpp:
215         (JSC::JITThunks::tryCachePutByID):
216         (JSC::DEFINE_STUB_FUNCTION):
217         * jit/JITStubs.h:
218         (JSC::):
219         * runtime/JSGlobalData.cpp:
220         (JSC::JSGlobalData::JSGlobalData):
221         * runtime/JSObject.h:
222         (JSC::JSObject::putDirect):
223         (JSC::JSValue::putDirect):
224         * runtime/JSValue.h:
225
226 2010-07-08  Gavin Barraclough  <barraclough@apple.com>
227
228         Reviewed by Sam Weinig.
229
230         String.prototype methods should CheckObjectCoercible (test this is not null or undefined).
231
232         * runtime/StringPrototype.cpp:
233         (JSC::stringProtoFuncCharAt):
234         (JSC::stringProtoFuncCharCodeAt):
235         (JSC::stringProtoFuncConcat):
236         (JSC::stringProtoFuncIndexOf):
237         (JSC::stringProtoFuncLastIndexOf):
238         (JSC::stringProtoFuncMatch):
239         (JSC::stringProtoFuncSearch):
240         (JSC::stringProtoFuncSlice):
241         (JSC::stringProtoFuncSplit):
242         (JSC::stringProtoFuncSubstr):
243         (JSC::stringProtoFuncSubstring):
244         (JSC::stringProtoFuncToLowerCase):
245         (JSC::stringProtoFuncToUpperCase):
246         (JSC::stringProtoFuncLocaleCompare):
247         (JSC::trimString):
248
249 2010-07-08  Gavin Barraclough  <barraclough@apple.com>
250
251         Reviewed by Sam Weinig.
252
253         Date.prototype.toJSON takes one argument, report this correctly.
254
255         * runtime/DatePrototype.cpp:
256
257 2010-07-08  Gavin Barraclough  <barraclough@apple.com>
258
259         Reviewed by Sam Weinig.
260
261         RegExp's prototype should be an object of type RegExp.
262
263         * runtime/RegExpPrototype.cpp:
264         (JSC::RegExpPrototype::RegExpPrototype):
265         * runtime/RegExpPrototype.h:
266
267 2010-07-08  Oliver Hunt  <oliver@apple.com>
268
269         Reviewed by Gavin Barraclough.
270
271         JavaScript parser violates ECMA automatic semicolon insertion rule
272         https://bugs.webkit.org/show_bug.cgi?id=41844
273
274         Remove (very) old and bogus logic that automatically inserted a semicolon
275         at the end of a script's source.
276
277         * parser/Lexer.cpp:
278         (JSC::Lexer::lex):
279
280 2010-07-08  Oliver Hunt  <oliver@apple.com>
281
282         Reviewed by Anders Carlson.
283
284         Tidy up the lexer
285
286         Remove some of the old yacc/lex-isms still present in the lexer
287
288         * parser/JSParser.h:
289         (JSC::):
290         * parser/Lexer.cpp:
291         (JSC::Lexer::parseString):
292         (JSC::Lexer::lex):
293         * parser/Lexer.h:
294
295 2010-07-08  Oliver Hunt  <oliver@apple.com>
296
297         Reviewed by Gavin Barraclough.
298
299         Make object-literal parsing conformant with the spec.
300         https://bugs.webkit.org/show_bug.cgi?id=41892
301
302         Bring our parsing of object literals into conformance with the ES5 spec.
303         Basically disallow conflicting accessor vs. normal property definitions
304         The bulk of this patch is just fiddling to maintain performance.
305
306         * parser/ASTBuilder.h:
307         (JSC::ASTBuilder::createGetterOrSetterProperty):
308         (JSC::ASTBuilder::createProperty):
309         (JSC::ASTBuilder::getName):
310         (JSC::ASTBuilder::getType):
311         * parser/JSParser.cpp:
312         (JSC::jsParse):
313         (JSC::JSParser::JSParser):
314         (JSC::JSParser::parseProperty):
315         (JSC::JSParser::parseObjectLiteral):
316         (JSC::JSParser::parseStrictObjectLiteral):
317         * parser/JSParser.h:
318         * parser/Lexer.cpp:
319         (JSC::Lexer::clear):
320         * parser/Lexer.h:
321         (JSC::Lexer::currentOffset):
322         (JSC::Lexer::setOffset):
323           Add logic to allow us to roll the lexer back in the input stream.
324         * parser/Nodes.h:
325         (JSC::PropertyNode::):
326         (JSC::PropertyNode::type):
327         * parser/Parser.cpp:
328         (JSC::Parser::parse):
329         * parser/SourceProvider.h:
330         (JSC::SourceProvider::SourceProvider):
331         (JSC::SourceProvider::isValid):
332         (JSC::SourceProvider::setValid):
333           SourceProvider now records whether the input text
334           has already been validated.
335         * parser/SyntaxChecker.h:
336         (JSC::SyntaxChecker::SyntaxChecker):
337         (JSC::SyntaxChecker::Property::Property):
338         (JSC::SyntaxChecker::Property::operator!):
339         (JSC::SyntaxChecker::createProperty):
340         (JSC::SyntaxChecker::createPropertyList):
341         (JSC::SyntaxChecker::createGetterOrSetterProperty):
342           The SyntaxChecker mode now needs to maintain a bit more information
343           to ensure that we can validate object literals correctly.
344
345 2010-07-08  Darin Adler  <darin@apple.com>
346
347         * runtime/JSGlobalData.cpp:
348         (JSC::JSGlobalData::sharedInstance): Fix typo.
349
350 2010-07-08  Darin Adler  <darin@apple.com>
351
352         Reviewed by Oliver Hunt.
353
354         Fix assertion seen on the Leopard buildbot.
355         The single shared instance of JSGlobalData was not being
356         adopted after creation.
357
358         * runtime/JSGlobalData.cpp:
359         (JSC::JSGlobalData::sharedInstance): Do adoptRef and then leakRef.
360
361 2010-07-08  Gavin Barraclough  <barraclough@apple.com>
362
363         Reviewed by Sam Weinig.
364
365         BOMs are whitespace.
366
367         * runtime/JSGlobalObjectFunctions.cpp:
368         (JSC::isStrWhiteSpace):
369
370 2010-07-08  Martin Robinson  <mrobinson@igalia.com>
371
372         Unreviewed.
373
374         Try fix the GTK+ build by touching this file.
375
376         * jit/ExecutableAllocatorFixedVMPool.cpp:
377
378 2010-07-08  Gavin Barraclough  <barraclough@apple.com>
379
380         GTK build fix take two.
381
382         * GNUmakefile.am:
383
384 2010-07-08  Gavin Barraclough  <barraclough@apple.com>
385
386         GTK build fix.
387
388         * GNUmakefile.am:
389
390 2010-07-08  Gavin Barraclough  <barraclough@apple.com>
391
392         Reviewed by Sam Weinig.
393
394         https://bugs.webkit.org/show_bug.cgi?id=41641
395
396         Update compile flags to allow use of ExecutableAllocatorFixedVMPool on platforms
397         other than x86-64 (this may be useful on 32-bit platforms, too).
398
399         Simplify ifdefs by dividing into thwo broad allocation strategies
400         (ENABLE_EXECUTABLE_ALLOCATOR_FIXED & ENABLE_EXECUTABLE_ALLOCATOR_DEMAND).
401
402         Rename constant used in the code to have names descriptive of their purpose,
403         rather than their specific value on a given platform.
404
405         * jit/ExecutableAllocator.cpp:
406         (JSC::ExecutableAllocator::reprotectRegion):
407         (JSC::ExecutableAllocator::cacheFlush):
408         * jit/ExecutableAllocatorFixedVMPool.cpp:
409         (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
410         (JSC::FixedVMPoolAllocator::free):
411         (JSC::ExecutablePool::systemAlloc):
412         * jit/ExecutableAllocatorPosix.cpp:
413         * jit/ExecutableAllocatorSymbian.cpp:
414         * jit/ExecutableAllocatorWin.cpp:
415         * wtf/Platform.h:
416
417 2010-07-08  Xan Lopez  <xlopez@igalia.com>
418
419         Reviewed by Gustavo Noronha.
420
421         Silence a few noisy build rules.
422
423         * GNUmakefile.am:
424
425 2010-07-08  Sheriff Bot  <webkit.review.bot@gmail.com>
426
427         Unreviewed, rolling out r62765.
428         http://trac.webkit.org/changeset/62765
429         https://bugs.webkit.org/show_bug.cgi?id=41840
430
431         All jscore and layout tests crash on Qt bot (Requested by Ossy
432         on #webkit).
433
434         * wtf/FastMalloc.cpp:
435         (WTF::TCMalloc_PageHeap::initializeScavenger):
436         (WTF::TCMalloc_PageHeap::signalScavenger):
437         (WTF::TCMalloc_PageHeap::scavengerThread):
438
439 2010-07-08  Andreas Kling  <andreas.kling@nokia.com>
440
441         Reviewed by Oliver Hunt.
442
443         Interpreter: Crash in op_load_varargs on 64-bit
444         https://bugs.webkit.org/show_bug.cgi?id=41795
445
446         Added missing cast of argCount to int32_t in op_load_varargs.
447
448         * interpreter/Interpreter.cpp:
449         (JSC::Interpreter::privateExecute):
450
451 2010-07-08  Patrick Gansterer  <paroga@paroga.com>
452
453         Reviewed by Geoffrey Garen.
454
455         Make FastMalloc more portable.
456         https://bugs.webkit.org/show_bug.cgi?id=41790
457
458         Use WTF::Mutex instead of pthread_mutex_t and
459         replace pthread_cond_t with WTF::ThreadCondition.
460
461         * wtf/FastMalloc.cpp:
462         (WTF::TCMalloc_PageHeap::initializeScavenger):
463         (WTF::TCMalloc_PageHeap::signalScavenger):
464         (WTF::TCMalloc_PageHeap::scavengerThread):
465
466 2010-07-08  Patrick Gansterer  <paroga@paroga.com>
467
468         Reviewed by Darin Adler.
469
470         Remove needless #include <fcntl.h> from TCSystemAlloc.cpp.
471         https://bugs.webkit.org/show_bug.cgi?id=41777
472
473         * wtf/TCSystemAlloc.cpp:
474
475 2010-07-07  Darin Adler  <darin@apple.com>
476
477         Fixed build in configurations like PowerPC.
478
479         * runtime/RegExpConstructor.cpp: Added include of PassOwnPtr.h.
480         * runtime/RegExpObject.cpp: Ditto.
481         * wtf/SizeLimits.cpp: Changed compile time assertion to work
482         even on platforms where two bool members do not end up taking
483         the same size as one int member!
484
485 2010-07-07  Oliver Hunt  <oliver@apple.com>
486
487         Reviewed by Geoffrey Garen.
488
489         Lazy mode of parser allows invalid syntax in object literals.
490         https://bugs.webkit.org/show_bug.cgi?id=41809
491
492         Make the parser itself validate getter and setter syntax rather
493         than offloading it to the AST builder.
494
495         * parser/ASTBuilder.h:
496         (JSC::ASTBuilder::createGetterOrSetterProperty):
497         * parser/JSParser.cpp:
498         (JSC::JSParser::parseProperty):
499
500 2010-07-07  Dumitru Daniliuc  <dumi@chromium.org>
501
502         Reviewed by Adam Roben.
503
504         Revert r62689.
505         https://bugs.webkit.org/show_bug.cgi?id=41804
506
507         * runtime/Collector.cpp:
508         (JSC::Heap::freeBlocks):
509
510 2010-07-07  Adam Barth  <abarth@webkit.org>
511
512         Reviewed by Sam Weinig.
513
514         Add reverseFind to Vector and deploy in HTML5 parser
515         https://bugs.webkit.org/show_bug.cgi?id=41778
516
517         This method seems generally useful.  I'm slightly surprised we don't
518         have it already.
519
520         * wtf/Vector.h:
521         (WTF::::reverseFind):
522
523 2010-07-07  Darin Adler  <darin@apple.com>
524
525         Reviewed by Adam Barth.
526
527         Turn on adoptRef assertion for RefCounted
528         https://bugs.webkit.org/show_bug.cgi?id=41547
529
530         * wtf/CrossThreadRefCounted.h: Fixed include style. Includes of other
531         WTF headers should use "" includes; consistent in most WTF headers.
532         Added a call to relaxAdoptionRequirement.
533
534         * wtf/RefCounted.h: Fixed include style. Removed LOOSE_REF_COUNTED.
535         Added relaxAdoptionRequirement.
536
537 2010-07-07  Anders Carlsson  <andersca@apple.com>
538
539         Try to fix the Windows build.
540
541         * runtime/Collector.cpp:
542         (JSC::Heap::freeBlocks):
543
544 2010-07-07  Darin Adler  <darin@apple.com>
545
546         Reviewed by Adam Barth.
547
548         More OwnPtr work
549         https://bugs.webkit.org/show_bug.cgi?id=41727
550
551         * API/JSCallbackObject.h:
552         (JSC::JSCallbackObjectData::setPrivateProperty): Use adoptPtr.
553         * API/JSCallbackObjectFunctions.h:
554         (JSC::JSCallbackObject::JSCallbackObject): Ditto.
555         * bytecode/CodeBlock.cpp:
556         (JSC::CodeBlock::CodeBlock): Ditto.
557         * bytecode/CodeBlock.h:
558         (JSC::CodeBlock::createRareDataIfNecessary): Ditto.
559         * parser/Nodes.cpp:
560         (JSC::ScopeNode::ScopeNode): Ditto.
561         * parser/ParserArena.cpp:
562         (JSC::ParserArena::ParserArena): Ditto.
563         * runtime/Arguments.h:
564         (JSC::Arguments::Arguments): Ditto.
565         * runtime/Executable.cpp:
566         (JSC::EvalExecutable::compile): Ditto.
567         (JSC::ProgramExecutable::compile): Ditto.
568         (JSC::FunctionExecutable::compileForCall): Ditto.
569         (JSC::FunctionExecutable::compileForConstruct): Ditto.
570         (JSC::FunctionExecutable::reparseExceptionInfo): Ditto.
571         (JSC::EvalExecutable::reparseExceptionInfo): Ditto.
572         * runtime/JSArray.cpp:
573         (JSC::JSArray::sort): Ditto.
574         * runtime/RegExpConstructor.cpp:
575         (JSC::RegExpConstructor::RegExpConstructor): Ditto.
576         * runtime/RegExpObject.cpp:
577         (JSC::RegExpObject::RegExpObject): Ditto.
578         * runtime/SmallStrings.cpp:
579         (JSC::SmallStrings::createSingleCharacterString): Ditto.
580         (JSC::SmallStrings::singleCharacterStringRep): Ditto.
581
582         * wtf/unicode/icu/CollatorICU.cpp:
583         (WTF::Collator::userDefault): Use adoptPtr.
584         * yarr/RegexInterpreter.cpp:
585         (JSC::Yarr::ByteCompiler::ByteCompiler): Ditto.
586         (JSC::Yarr::ByteCompiler::compile): Ditto.
587         (JSC::Yarr::ByteCompiler::regexBegin): Ditto.
588         (JSC::Yarr::byteCompileRegex): Ditto.
589         * yarr/RegexInterpreter.h:
590         (JSC::Yarr::BytecodePattern::BytecodePattern): Ditto.
591
592 2010-07-07  Darin Adler  <darin@apple.com>
593
594         Reviewed by Adam Barth.
595
596         Make clear set the pointer to 0 before deletion
597         https://bugs.webkit.org/show_bug.cgi?id=41727
598
599         * wtf/OwnArrayPtr.h: Changed code so we always set the pointer to its new
600         value before deleting the old one, including in the set function and the
601         clear function. This required changing safeDelete.
602         * wtf/OwnPtr.h: Ditto. Also removed some extra null checks.
603         * wtf/PassOwnPtr.h: Ditto.
604
605         * wtf/PassRefPtr.h: Changed code so we always set the pointer to its new
606         value before deref'ing the old one in the clear function. Also added a
607         leakRef function for NonNullPassRefPtr.
608         * wtf/RefPtr.h: Ditto.
609
610         * wtf/gobject/GOwnPtr.h: More of the same.
611         * wtf/gobject/GRefPtr.h: Ditto.
612
613 2010-07-07  Zoltan Herczeg  <zherczeg@webkit.org>
614
615         Reviewed by Oliver Hunt.
616
617         Refactored string parsing inside the lexer
618         https://bugs.webkit.org/show_bug.cgi?id=41606
619
620         Does not use goto. Although the last sunspider
621         parse-only tests yields 1.044x speedup, I think the
622         patch can have a slight improvement at most.
623
624         * parser/Lexer.cpp:
625         (JSC::singleEscape):
626         (JSC::Lexer::parseString):
627         (JSC::Lexer::lex):
628         * parser/Lexer.h:
629
630 2010-07-06  Oliver Hunt  <oliver@apple.com>
631
632         Reviewed by Maciej Stachowiak.
633
634         Make it possible to have both the JIT and Interpreter available in a single build
635         https://bugs.webkit.org/show_bug.cgi?id=41722
636
637         Separate the concept of !ENABLE(JIT) and ENABLE(INTERPRETER) and make it possible
638         to have both JIT and INTERPRETER enabled at the same time.  This doesn't add
639         support for mix mode execution, but it does allow a single build to contain all
640         the code needed to use either the interpreter or the jit.
641
642         If both ENABLE(INTERPRETER) and ENABLE(JIT) are true then setting the environment
643         variable JSC_FORCE_INTERPRETER will force JSC to use the interpreter.
644
645         This patch basically consists of replacing !ENABLE(JIT) with ENABLE(INTERPRETER),
646         or converting #if ENABLE(JIT) ... #else ... into #if ENABLE(JIT) ... #endif
647         #if ENABLE(INTERPRETER), etc.  There are also a few functions that need to be
648         renamed to resolve return type ambiguity.
649
650         * bytecode/CodeBlock.cpp:
651         (JSC::CodeBlock::~CodeBlock):
652         (JSC::CodeBlock::shrinkToFit):
653         * bytecode/CodeBlock.h:
654         * interpreter/CallFrame.h:
655         (JSC::ExecState::returnVPC):
656         * interpreter/Interpreter.cpp:
657         (JSC::Interpreter::unwindCallFrame):
658         (JSC::Interpreter::throwException):
659         (JSC::Interpreter::execute):
660         (JSC::Interpreter::executeCall):
661         (JSC::Interpreter::executeConstruct):
662         (JSC::Interpreter::prepareForRepeatCall):
663         (JSC::Interpreter::privateExecute):
664         (JSC::Interpreter::retrieveLastCaller):
665         * interpreter/Interpreter.h:
666         * runtime/ArrayPrototype.cpp:
667         (JSC::isNumericCompareFunction):
668         * runtime/Executable.cpp:
669         (JSC::EvalExecutable::generateJITCode):
670         (JSC::ProgramExecutable::generateJITCode):
671         (JSC::FunctionExecutable::generateJITCodeForCall):
672         (JSC::FunctionExecutable::generateJITCodeForConstruct):
673         (JSC::FunctionExecutable::reparseExceptionInfo):
674         (JSC::EvalExecutable::reparseExceptionInfo):
675         * runtime/JSFunction.cpp:
676         * runtime/JSGlobalData.cpp:
677         (JSC::JSGlobalData::JSGlobalData):
678         * runtime/JSGlobalData.h:
679         (JSC::JSGlobalData::canUseJIT):
680         * wtf/Platform.h:
681
682 2010-07-06  Darin Adler  <darin@apple.com>
683
684         Reviewed by Adam Barth.
685
686         Add adoptPtr and leakPtr functions for OwnPtr and PassOwnPtr
687         https://bugs.webkit.org/show_bug.cgi?id=41320
688
689         * bytecode/CodeBlock.cpp:
690         (JSC::CodeBlock::reparseForExceptionInfoIfNecessary): Use assignment
691         instead of set since the result of reparseExceptionInfo is now a
692         PassOwnPtr.
693
694         * bytecode/CodeBlock.h: Change extractExceptionInfo to return a
695         PassOwnPtr instead of a raw pointer.
696
697         * runtime/Executable.cpp:
698         (JSC::FunctionExecutable::reparseExceptionInfo): Return a PassOwnPtr.
699         (JSC::EvalExecutable::reparseExceptionInfo): Ditto.
700         (JSC::ProgramExecutable::reparseExceptionInfo): Added. This was
701         in the header before, but it's better to not have it there to reduce
702         header dependencies. Return a PassOwnPtr.
703
704         * runtime/Executable.h: Made reparseExceptionInfo return a PassOwnPtr,
705         and put it in the private sections of classes other than the base class.
706
707         * wtf/MessageQueue.h:
708         (WTF::MessageQueue::append): Use leakPtr instead of release.
709         (WTF::MessageQueue::appendAndCheckEmpty): Ditto.
710         (WTF::MessageQueue::prepend): Ditto.
711
712         * wtf/OwnPtr.h: Tweaked formatting. Changed the release function to return
713         a PassOwnPtr rather than a raw pointer. Added a leakPtr function that
714         returns a raw pointer. Put the constructor that takes a raw pointer and
715         the set function into a section guarded by LOOSE_OWN_PTR. Adapted to the
716         new adoptPtr function from PassOwnPtr.h.
717
718         * wtf/PassOwnPtr.h: Tweaked formatting. Renamed the release function
719         to leakPtr. Added an adoptPtr function that creates a new PassOwnPtr.
720         Put the constructor and assignment operators that take a raw pointer
721         into a section guarded by LOOSE_PASS_OWN_PTR.
722
723 2010-07-06  Sam Weinig  <sam@webkit.org>
724
725         Reviewed by Darin Adler
726
727         Update comment in StringExtras.h to be more accurate.
728
729         * wtf/StringExtras.h:
730
731 2010-07-06  Sheriff Bot  <webkit.review.bot@gmail.com>
732
733         Unreviewed, rolling out r62511.
734         http://trac.webkit.org/changeset/62511
735         https://bugs.webkit.org/show_bug.cgi?id=41686
736
737         Breaks Linux/64bit compilation (Requested by xan_ on #webkit).
738
739         * jit/ExecutableAllocator.cpp:
740         * jit/ExecutableAllocatorFixedVMPool.cpp:
741         (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
742         (JSC::FixedVMPoolAllocator::free):
743         (JSC::ExecutablePool::systemAlloc):
744         * jit/ExecutableAllocatorPosix.cpp:
745         (JSC::ExecutableAllocator::reprotectRegion):
746         (JSC::ExecutableAllocator::cacheFlush):
747         * jit/ExecutableAllocatorSymbian.cpp:
748         * jit/ExecutableAllocatorWin.cpp:
749         * wtf/Platform.h:
750
751 2010-07-05  Gavin Barraclough  <barraclough@apple.com>
752
753         Reviewed by Sam Weinig.
754
755         https://bugs.webkit.org/show_bug.cgi?id=41641
756
757         Update compile flags to allow use of ExecutableAllocatorFixedVMPool on platforms
758         other than x86-64 (this may be useful on 32-bit platforms, too).
759
760         Simplify ifdefs by dividing into thwo broad allocation strategies
761         (ENABLE_EXECUTABLE_ALLOCATOR_FIXED & ENABLE_EXECUTABLE_ALLOCATOR_DEMAND).
762
763         Rename constant used in the code to have names descriptive of their purpose,
764         rather than their specific value on a given platform.
765
766         * jit/ExecutableAllocator.cpp:
767         (JSC::ExecutableAllocator::reprotectRegion):
768         (JSC::ExecutableAllocator::cacheFlush):
769         * jit/ExecutableAllocatorFixedVMPool.cpp:
770         (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
771         (JSC::FixedVMPoolAllocator::free):
772         (JSC::ExecutablePool::systemAlloc):
773         * jit/ExecutableAllocatorPosix.cpp:
774         * jit/ExecutableAllocatorSymbian.cpp:
775         * jit/ExecutableAllocatorWin.cpp:
776         * wtf/Platform.h:
777
778 2010-07-05  Steve Block  <steveblock@google.com>
779
780         Reviewed by Darin Adler.
781
782         ThreadingPthreads.cpp should use JNIUtility.h on Android, not outdated jni_utility.h
783         https://bugs.webkit.org/show_bug.cgi?id=41594
784
785         * wtf/ThreadingPthreads.cpp:
786
787 2010-07-04  Mark Rowe  <mrowe@apple.com>
788
789         Build fix after r62456.
790
791         * interpreter/Interpreter.cpp:
792         (JSC::Interpreter::privateExecute): Be slightly more consistent in using uint32_t to prevent
793         warnings about comparisons between signed and unsigned types, and attempts to call an overload
794         of std::min that doesn't exist.
795
796 2010-07-02  Sam Weinig  <sam@webkit.org>
797
798         Reviewed by Darin Adler.
799
800         Patch for https://bugs.webkit.org/show_bug.cgi?id=41553
801         Make StringExtras.h versions of snprintf and vsnprintf match the unix versions.
802
803         - MSVC does not ensure the buffers are null terminated as the unix versions do.
804
805         * runtime/JSGlobalObjectFunctions.cpp: Cleanup includes.
806         * runtime/UString.cpp: Clean up includes.
807         (JSC::UString::from): Don't pass sizeof(buf) - 1, that is wrong.
808         * wtf/StringExtras.h:
809         (snprintf): Ensure null termination of buffer.
810         (vsnprintf): Ditto.
811
812 2010-07-03  Yong Li  <yoli@rim.com>
813
814         Reviewed by Darin Adler.
815
816         Make Arguments::MaxArguments clamping work for numbers >= 0x80000000 in
817         the interpreter as well as the JIT.
818
819         https://bugs.webkit.org/show_bug.cgi?id=41351
820         rdar://problem/8142141
821
822         * interpreter/Interpreter.cpp:
823         (JSC::Interpreter::privateExecute): Fix signed integer overflow problem
824         in op_load_varargs handling. 0xFFFFFFFF was read as -1.
825
826 2010-06-26  Jeremy Orlow  <jorlow@chromium.org>
827
828         Reviewed by Dumitru Daniliuc.
829
830         Support for keys and in-memory storage for IndexedDB
831         https://bugs.webkit.org/show_bug.cgi?id=41252
832
833         Set the role to Private.
834
835         * JavaScriptCore.xcodeproj/project.pbxproj:
836
837 2010-07-02  Oliver Hunt  <oliver@apple.com>
838
839         Reviewed by Geoffrey Garen.
840
841         Move BOM handling out of the lexer and parser
842         https://bugs.webkit.org/show_bug.cgi?id=41539
843
844         Doing the BOM stripping in the lexer meant that we could
845         end up having to strip the BOMs from a source multiple times.
846         To deal with this we now require all strings provided by
847         a SourceProvider to already have had the BOMs stripped.
848         This also simplifies some of the lexer logic.
849
850         * parser/Lexer.cpp:
851         (JSC::Lexer::setCode):
852         (JSC::Lexer::sourceCode):
853         * parser/SourceProvider.h:
854         (JSC::SourceProvider::SourceProvider):
855         (JSC::UStringSourceProvider::create):
856         (JSC::UStringSourceProvider::getRange):
857         (JSC::UStringSourceProvider::UStringSourceProvider):
858         * wtf/text/StringImpl.h:
859         (WebCore::StringImpl::copyStringWithoutBOMs):
860
861 2010-07-03  Patrick Gansterer  <paroga@paroga.com>
862
863         Reviewed by Kent Tamura.
864
865         [WINCE] Implement Unicode::isAlphanumeric and Unicode::isArabicChar.
866         https://bugs.webkit.org/show_bug.cgi?id=41411
867
868         * wtf/unicode/wince/UnicodeWince.cpp:
869         (WTF::Unicode::isAlphanumeric):
870         * wtf/unicode/wince/UnicodeWince.h:
871         (WTF::Unicode::isArabicChar):
872
873 2010-07-03  Kwang Yul Seo  <skyul@company100.net>
874
875         Reviewed by Kent Tamura.
876
877         [BREWMP] Change the CRASH() macro to print "WebKit CRASH" log.
878         https://bugs.webkit.org/show_bug.cgi?id=41524
879
880         Print "WebKit CRASH" before crashing.
881
882         * wtf/Assertions.h:
883
884 2010-07-02  Gavin Barraclough  <barraclough@apple.com>
885
886         Reviewed by Oliver Hunt.
887
888         Bug 41565 - Repatching in ARMv7Assembler::repatchLoadPtrToLEA is broken
889
890         This method tried to repatch a LDR (T2) into an ADD (T3) - but it only
891         repatches the first instruction word.  The layout of the fields in the
892         second word is different, and also needs repatching.
893
894         * assembler/ARMv7Assembler.h:
895         (JSC::ARMv7Assembler::repatchLoadPtrToLEA):
896
897 2010-07-02  Oliver Hunt  <oliver@apple.com>
898
899         Reviewed by Gavin Barraclough.
900
901         Clamp the number of arguments supported by function.apply
902         https://bugs.webkit.org/show_bug.cgi?id=41351
903         <rdar://problem/8142141>
904
905         Add clamping logic to function.apply similar to that
906         enforced by firefox.  We have a smaller clamp than
907         firefox as our calling convention means that stack
908         usage is proportional to argument count -- the firefox
909         limit is larger than you could actually call.
910
911         * interpreter/Interpreter.cpp:
912         (JSC::Interpreter::privateExecute):
913         * jit/JITStubs.cpp:
914         (JSC::DEFINE_STUB_FUNCTION):
915         * runtime/Arguments.h:
916         (JSC::Arguments::):
917
918 2010-07-02  Chao-ying Fu  <fu@mips.com>
919
920         Reviewed by Oliver Hunt.
921
922         Re-enable JIT_OPTIMIZE_NATIVE_CALL on MIPS
923         https://bugs.webkit.org/show_bug.cgi?id=40179
924
925         Add the MIPS part to re-enable JIT_OPTIMIZE_NATIVE_CALL.
926
927         * jit/JITOpcodes.cpp:
928         (JSC::JIT::privateCompileCTINativeCall):
929         * wtf/Platform.h:
930
931 2010-07-02  Gavin Barraclough  <barraclough@apple.com>
932
933         Reviewed by Oliver Hunt.
934
935         Bug 41552 - Clean up ARMv7 vfp code generation
936         Emit separate opcode individually, remove magic numbers.
937
938         Also remove invalid assert from JSImmediate (number cells are not CELL_MASK aligned).
939
940         * assembler/ARMv7Assembler.h:
941         (JSC::ARMv7Assembler::):
942         (JSC::ARMv7Assembler::vadd_F64):
943         (JSC::ARMv7Assembler::vcmp_F64):
944         (JSC::ARMv7Assembler::vcvt_F64_S32):
945         (JSC::ARMv7Assembler::vcvtr_S32_F64):
946         (JSC::ARMv7Assembler::vdiv_F64):
947         (JSC::ARMv7Assembler::vldr):
948         (JSC::ARMv7Assembler::vmov_F64_0):
949         (JSC::ARMv7Assembler::vmov):
950         (JSC::ARMv7Assembler::vmrs):
951         (JSC::ARMv7Assembler::vmul_F64):
952         (JSC::ARMv7Assembler::vstr):
953         (JSC::ARMv7Assembler::vsub_F64):
954         (JSC::ARMv7Assembler::VFPOperand::VFPOperand):
955         (JSC::ARMv7Assembler::VFPOperand::bits1):
956         (JSC::ARMv7Assembler::VFPOperand::bits4):
957         (JSC::ARMv7Assembler::vcvtOp):
958         (JSC::ARMv7Assembler::ARMInstructionFormatter::vfpOp):
959         (JSC::ARMv7Assembler::ARMInstructionFormatter::vfpMemOp):
960         * assembler/MacroAssemblerARMv7.h:
961         (JSC::MacroAssemblerARMv7::branchDouble):
962         * runtime/JSImmediate.h:
963         (JSC::JSValue::isCell):
964
965 2010-07-02  Sheriff Bot  <webkit.review.bot@gmail.com>
966
967         Unreviewed, rolling out r62410.
968         http://trac.webkit.org/changeset/62410
969         https://bugs.webkit.org/show_bug.cgi?id=41549
970
971         accursed last minute changes (Requested by olliej on #webkit).
972
973         * parser/Lexer.cpp:
974         (JSC::Lexer::setCode):
975         (JSC::Lexer::copyCodeWithoutBOMs):
976         (JSC::Lexer::sourceCode):
977         * parser/SourceProvider.h:
978         (JSC::):
979         (JSC::SourceProvider::SourceProvider):
980         (JSC::SourceProvider::hasBOMs):
981         (JSC::UStringSourceProvider::create):
982         (JSC::UStringSourceProvider::getRange):
983         (JSC::UStringSourceProvider::UStringSourceProvider):
984         * wtf/text/StringImpl.h:
985
986 2010-07-02  Sam Weinig  <sam@webkit.org>
987
988         Reviewed by Geoffrey Garen.
989
990         Patch for https://bugs.webkit.org/show_bug.cgi?id=41548
991         Use snprintf instead of sprintf everywhere in JavaScriptCore
992
993         * runtime/JSGlobalObjectFunctions.cpp:
994         (JSC::encode):
995         (JSC::globalFuncEscape):
996         * runtime/UString.cpp:
997         (JSC::UString::from):
998
999 2010-07-02  Oliver Hunt  <oliver@apple.com>
1000
1001         Reviewed by Geoffrey Garen.
1002
1003         Move BOM handling out of the lexer and parser
1004         https://bugs.webkit.org/show_bug.cgi?id=41539
1005
1006         Doing the BOM stripping in the lexer meant that we could
1007         end up having to strip the BOMs from a source multiple times.
1008         To deal with this we now require all strings provided by
1009         a SourceProvider to already have had the BOMs stripped.
1010         This also simplifies some of the lexer logic.
1011
1012         * parser/Lexer.cpp:
1013         (JSC::Lexer::setCode):
1014         (JSC::Lexer::sourceCode):
1015         * parser/SourceProvider.h:
1016         (JSC::SourceProvider::SourceProvider):
1017         (JSC::UStringSourceProvider::create):
1018         (JSC::UStringSourceProvider::getRange):
1019         (JSC::UStringSourceProvider::UStringSourceProvider):
1020         * wtf/text/StringImpl.h:
1021         (WebCore::StringImpl::copyStringWithoutBOMs):
1022
1023 2010-07-02  Renata Hodovan  <reni@inf.u-szeged.hu>
1024
1025         Reviewed by Oliver Hunt.
1026         
1027         [ Updated after rollout. ]
1028
1029         Merged RegExp constructor and RegExp::create methods.
1030         Both functions are called with three parameters and check whether 
1031         flags (the third param) is given or not.
1032         Avoid extra hash lookups in RegExpCache::create by passing a pre-computed
1033         iterator parameter.
1034         https://bugs.webkit.org/show_bug.cgi?id=41055
1035
1036         * runtime/RegExp.cpp:
1037         (JSC::RegExp::RegExp):
1038         * runtime/RegExp.h:
1039         * runtime/RegExpCache.cpp:
1040         (JSC::RegExpCache::lookupOrCreate):
1041         (JSC::RegExpCache::create):
1042         * runtime/RegExpCache.h:
1043
1044 2010-07-02  Martin Robinson  <mrobinson@igalia.com>
1045
1046         Unreviewed. Build fix for GTK+.
1047
1048         Build Lexer.lut.h with the rest of the .lut.h files. Later these should
1049         all probably be moved to DerivedSources.
1050
1051         * GNUmakefile.am:
1052
1053 2010-06-23  Martin Robinson  <mrobinson@igalia.com>
1054
1055         Reviewed by Gustavo Noronha Silva.
1056
1057         [GTK] Separate DerivedSources per-project
1058         https://bugs.webkit.org/show_bug.cgi?id=41109
1059
1060         Generate JavaScriptCore derived sources in <builddir>/DerivedSources/JavaScriptCore.
1061
1062         * GNUmakefile.am:
1063
1064 2010-07-02  Peter Varga  <pvarga@inf.u-szeged.hu>
1065
1066         Reviewed by Oliver Hunt.
1067
1068         The alternativeFrameLocation value is wrong in the emitDisjunction function in
1069         case of PatternTerm::TypeParentheticalAssertion. This value needs to be
1070         computed from term.frameLocation instead of term.inputPosition. This mistake caused glibc
1071         memory corruption in some cases.
1072         Layout test added for checking of TypeParentheticalAssertion case.
1073         https://bugs.webkit.org/show_bug.cgi?id=41458
1074
1075         * yarr/RegexInterpreter.cpp:
1076         (JSC::Yarr::ByteCompiler::emitDisjunction):
1077
1078 2010-07-01  Oliver Hunt  <oliver@apple.com>
1079
1080         Reviewed by Maciej Stachowiak.
1081
1082         Add a FixedArray template to encapsulate fixed length arrays
1083         https://bugs.webkit.org/show_bug.cgi?id=41506
1084
1085         This new type is used in place of fixed length C arrays so
1086         that debug builds can guard against attempts to go beyond
1087         the end of the array.
1088
1089         * JavaScriptCore.xcodeproj/project.pbxproj:
1090         * bytecode/Opcode.cpp:
1091         (JSC::OpcodeStats::~OpcodeStats):
1092         * pcre/pcre_compile.cpp:
1093         (calculateCompiledPatternLength):
1094         * runtime/Collector.cpp:
1095         (JSC::Heap::allocateBlock):
1096         (JSC::Heap::allocate):
1097         * runtime/Collector.h:
1098         (JSC::CollectorBitmap::clearAll):
1099         * runtime/CollectorHeapIterator.h:
1100         (JSC::CollectorHeapIterator::operator*):
1101         * runtime/DateInstanceCache.h:
1102         * runtime/JSString.cpp:
1103         (JSC::JSString::replaceCharacter):
1104         * runtime/JSString.h:
1105         (JSC::RopeBuilder::JSStringFinalizerStruct::):
1106         * runtime/NumericStrings.h:
1107         * runtime/RegExpCache.h:
1108         * runtime/SmallStrings.h:
1109         (JSC::SmallStrings::singleCharacterStrings):
1110         * wtf/AVLTree.h:
1111         * wtf/FixedArray.h: Added.
1112         (WTF::FixedArray::operator[]):
1113         (WTF::FixedArray::data):
1114
1115 2010-07-01  Zoltan Herczeg  <zherczeg@webkit.org>
1116
1117         Reviewed by Oliver Hunt.
1118
1119         Improve the main lexer switch by mapping input characters to their type
1120         https://bugs.webkit.org/show_bug.cgi?id=41459
1121
1122         Sunsipder: no change (from 532.9ms to 531.5ms)
1123         SunSpider --parse-only: 1.025x as fast (from 33.1ms to 32.3ms)
1124
1125         * parser/Lexer.cpp:
1126         (JSC::):
1127         (JSC::Lexer::lex):
1128
1129 2010-07-01  Sam Weinig  <sam@webkit.org>
1130
1131         Rubber-stamped by Ander Carlsson.
1132
1133         Define HAVE_HOSTED_CORE_ANIMATION on Snow Leopard.
1134
1135         * wtf/Platform.h:
1136
1137 2010-07-01  Gavin Barraclough  <barraclough@apple.com>
1138
1139         Reviewed by Oliver Hunt.
1140
1141         Bug 41490 - Add missing operations to MacroAssemblerARMv7
1142         Also, make single, double, quad register numbers in ARMv7Assembler distinct & strongly typed.
1143
1144         * assembler/ARMv7Assembler.h:
1145         (JSC::ARMRegisters::):
1146         (JSC::ARMRegisters::asSingle):
1147         (JSC::ARMRegisters::asDouble):
1148         (JSC::VFPImmediate::VFPImmediate):
1149         (JSC::VFPImmediate::isValid):
1150         (JSC::VFPImmediate::value):
1151         (JSC::ARMv7Assembler::singleRegisterMask):
1152         (JSC::ARMv7Assembler::doubleRegisterMask):
1153         (JSC::ARMv7Assembler::):
1154         (JSC::ARMv7Assembler::add_S):
1155         (JSC::ARMv7Assembler::neg):
1156         (JSC::ARMv7Assembler::orr_S):
1157         (JSC::ARMv7Assembler::sub):
1158         (JSC::ARMv7Assembler::sub_S):
1159         (JSC::ARMv7Assembler::vadd_F64):
1160         (JSC::ARMv7Assembler::vcmp_F64):
1161         (JSC::ARMv7Assembler::vcvt_F64_S32):
1162         (JSC::ARMv7Assembler::vcvtr_S32_F64):
1163         (JSC::ARMv7Assembler::vdiv_F64):
1164         (JSC::ARMv7Assembler::vldr):
1165         (JSC::ARMv7Assembler::vmov_F64_0):
1166         (JSC::ARMv7Assembler::vmov):
1167         (JSC::ARMv7Assembler::vmul_F64):
1168         (JSC::ARMv7Assembler::vstr):
1169         (JSC::ARMv7Assembler::vsub_F64):
1170         (JSC::ARMv7Assembler::vcvt):
1171         (JSC::ARMv7Assembler::vmem):
1172         * assembler/AbstractMacroAssembler.h:
1173         * assembler/MacroAssemblerARM.h:
1174         * assembler/MacroAssemblerARMv7.h:
1175         (JSC::MacroAssemblerARMv7::fpTempRegisterAsSingle):
1176         (JSC::MacroAssemblerARMv7::neg32):
1177         (JSC::MacroAssemblerARMv7::loadDouble):
1178         (JSC::MacroAssemblerARMv7::divDouble):
1179         (JSC::MacroAssemblerARMv7::convertInt32ToDouble):
1180         (JSC::MacroAssemblerARMv7::branchConvertDoubleToInt32):
1181         (JSC::MacroAssemblerARMv7::zeroDouble):
1182         (JSC::MacroAssemblerARMv7::branchOr32):
1183         (JSC::MacroAssemblerARMv7::set32):
1184         (JSC::MacroAssemblerARMv7::set8):
1185         * assembler/MacroAssemblerMIPS.h:
1186         * assembler/MacroAssemblerX86Common.h:
1187
1188 2010-07-01  Oliver Hunt  <oliver@apple.com>
1189
1190         Reviewed by Geoff Garen.
1191
1192         Improve reentrancy logic in polymorphic cache stubs
1193         <https://bugs.webkit.org/show_bug.cgi?id=41482>
1194         <rdar://problem/8094380>
1195
1196         Make the polymorphic cache stubs handle reentrancy
1197         better.
1198
1199         * jit/JITStubs.cpp:
1200         (JSC::DEFINE_STUB_FUNCTION):
1201         (JSC::getPolymorphicAccessStructureListSlot):
1202
1203 2010-07-01  Antti Koivisto  <koivisto@iki.fi>
1204
1205         Revert accidental commit.
1206
1207         * runtime/Collector.cpp:
1208         (JSC::Heap::allocateBlock):
1209
1210 2010-06-30  Darin Adler  <darin@apple.com>
1211
1212         Reviewed by Adam Barth.
1213
1214         Add assertion, off by default, for when you forget to do adoptRef
1215         https://bugs.webkit.org/show_bug.cgi?id=41422
1216
1217         * wtf/PassRefPtr.h: Tweaked formatting. Added a new adopted
1218         function, called on the pointer by adoptRef, with an empty inline
1219         default version, meant to be overloaded. Unified the inlining
1220         with a macro named REF_DEREF_INLINE to make it clearer what's
1221         going on in the refIfNotNull/derefIfNotNull functions. Renamed
1222         releaseRef to leakRef, but left the old name in for compatibility
1223         for now.
1224
1225         * wtf/RefCounted.h: Added code to require adoption and assert if
1226         you don't call adoptRef. For now, it is turned off because of the
1227         LOOSE_REF_COUNTED define in this header. Later we can turn it on
1228         once we get everything working without asserting.
1229
1230 2010-06-29  Michael Saboff  <msaboff@apple.com>
1231
1232         Reviewed by Darin Adler.
1233
1234         Bug 41238 - RegExp performance slow on Dromaeo benchmark
1235
1236         Other javascript engines appear to cache prior results of regular 
1237         expression operations.
1238
1239         Suggest adding some sort of caching mechanism to regular expression 
1240         processing.
1241
1242         Added a single entry cache of match() results to RegExp class.
1243
1244         Also added performance improvements to UString == operator.
1245         First check the impls for equality.  Then get the length of
1246         each of the non-null impls.  Next check the sizes for equality.
1247         Then check the data for the case of different impls that point 
1248         to the same data (most likely due to substrings from the beginning of
1249         another string).  Lastly we check the underlying data for equality.
1250
1251         * runtime/RegExp.cpp:
1252         (JSC::RegExp::RegExp):
1253         (JSC::RegExp::match):
1254         * runtime/RegExp.h:
1255         * runtime/UString.h:
1256         (JSC::operator==):
1257
1258 2010-06-29  Nathan Lawrence  <nlawrence@apple.com>
1259
1260         Reviewed by Geoffrey Garen.
1261
1262         WTF::HashSet iterators are quasi-mutable.  Changing the value through
1263         dereferencing an iterator will not change the behavior of methods like
1264         contains or find, but will change the behavior of iterating.
1265
1266         * wtf/HashSet.h:
1267         (WTF::::begin):
1268         (WTF::::end):
1269         (WTF::::find):
1270         (WTF::::remove):
1271         * wtf/HashTable.h:
1272
1273 2010-06-29  Martin Robinson  <mrobinson@igalia.com>
1274
1275         Reviewed by Xan Lopez.
1276
1277         [GTK] Clean up the source lists in the GNUMakefile.am files
1278         https://bugs.webkit.org/show_bug.cgi?id=41229
1279
1280         Clean up the GNUMakefile.am a little bit. Alphabetize and conglomerate
1281         the source lists.
1282
1283         * GNUmakefile.am:
1284
1285 2010-06-29  Caio Marcelo de Oliveira Filho  <caio.oliveira@openbossa.org>
1286
1287         Reviewed by Kenneth Rohde Christiansen.
1288
1289         [Qt] Fix QtScript build after QScriptValuePrivate ctor changes
1290         https://bugs.webkit.org/show_bug.cgi?id=41307
1291
1292         * qt/api/qscriptvalue_p.h:
1293         (QScriptValuePrivate::prototype):
1294         * qt/benchmarks/qscriptengine/qscriptengine.pro:
1295
1296 2010-06-28  Caio Marcelo de Oliveira Filho  <caio.oliveira@openbossa.org>
1297
1298         Reviewed by Kenneth Rohde Christiansen.
1299
1300         [Qt] QScriptEngine API should contain a newArray function
1301         https://bugs.webkit.org/show_bug.cgi?id=39115
1302
1303         * qt/api/qscriptengine.cpp:
1304         (QScriptEngine::newArray):
1305         * qt/api/qscriptengine.h:
1306         * qt/api/qscriptengine_p.cpp:
1307         (QScriptEnginePrivate::newArray):
1308         * qt/api/qscriptengine_p.h:
1309         * qt/tests/qscriptengine/tst_qscriptengine.cpp:
1310         (tst_QScriptEngine::newArray):
1311
1312 2010-06-28  Xan Lopez  <xlopez@igalia.com>
1313
1314         Reviewed by Gustavo Noronha.
1315
1316         Install jsc as jsc-X where X is the major API version to allow
1317         parallel installation of both GTK+ 2.x and 3.x versions.
1318
1319         * GNUmakefile.am:
1320
1321 2010-06-28  John Gregg  <johnnyg@google.com>
1322
1323         Reviewed by Kent Tamura.
1324
1325         add ENABLE_DIRECTORY_UPLOAD build support
1326         https://bugs.webkit.org/show_bug.cgi?id=41100
1327
1328         * Configurations/FeatureDefines.xcconfig:
1329
1330 2010-06-28  Xan Lopez  <xlopez@igalia.com>
1331
1332         Revert to build jsc, since the tests expect this.
1333
1334         * GNUmakefile.am:
1335
1336 2010-06-28  Zoltan Herczeg  <zherczeg@webkit.org>
1337
1338         Reviewed by Oliver Hunt.
1339
1340         Only one character lookahead should be enough for the lexer
1341         https://bugs.webkit.org/show_bug.cgi?id=41213
1342
1343         The lexer had 4 character lookahead before, which required
1344         a complex shifting mechanism. This can be improved by using
1345         only one character lookahead for most decisions, and a
1346         peek() function as a fallback when it is absolutely necessary.
1347
1348         * parser/Lexer.cpp:
1349         (JSC::Lexer::currentCharacter):
1350         (JSC::Lexer::currentOffset):
1351         (JSC::Lexer::setCode):
1352         (JSC::Lexer::shift):
1353         (JSC::Lexer::peek):
1354         (JSC::Lexer::getUnicodeCharacter):
1355         (JSC::Lexer::shiftLineTerminator):
1356         (JSC::Lexer::lastTokenWasRestrKeyword):
1357         (JSC::Lexer::lex):
1358         (JSC::Lexer::scanRegExp):
1359         (JSC::Lexer::skipRegExp):
1360         * parser/Lexer.h:
1361
1362 2010-06-28  Lucas De Marchi  <lucas.demarchi@profusion.mobi>
1363
1364         Unreviewed build fix.
1365
1366         [EFL] Build fix for latest version of Ecore library.
1367         Ecore recently changed return type of callbacks from int to Eina_Bool.
1368
1369         * wtf/efl/MainThreadEfl.cpp:
1370         (WTF::timeoutFired): Return Eina_Bool instead of int.
1371
1372 2010-06-28  Caio Marcelo de Oliveira Filho  <caio.oliveira@openbossa.org>
1373
1374         Reviewed by Kenneth Rohde Christiansen.
1375
1376         [Qt] QScriptValue should have API for accessing object properties
1377         https://bugs.webkit.org/show_bug.cgi?id=40903
1378
1379         Make possible to access properties inside QScriptValues. While this
1380         still doesn't support the ResolveLocal parameter, it is already useful
1381         for testing the API.
1382
1383         The tests from upstream QtScript weren't imported since most of them
1384         depend on the setProperty() function as well. A simple test was created.
1385
1386         * qt/api/qscriptvalue.cpp:
1387         (QScriptValue::property):
1388         * qt/api/qscriptvalue.h:
1389         (QScriptValue::):
1390         * qt/api/qscriptvalue_p.h:
1391         (QScriptValuePrivate::property):
1392         * qt/tests/qscriptvalue/tst_qscriptvalue.cpp:
1393         (tst_QScriptValue::propertySimple):
1394         * qt/tests/qscriptvalue/tst_qscriptvalue.h:
1395
1396 2010-06-28  Xan Lopez  <xlopez@igalia.com>
1397
1398         Reviewed by Gustavo Noronha.
1399
1400         [GTK] Add support for GTK+3
1401         https://bugs.webkit.org/show_bug.cgi?id=41253
1402
1403         Suffix jsc with the API version of the library, so that
1404         libwebkitgtk 1.x and 3.x can install jsc.
1405
1406         * GNUmakefile.am:
1407
1408 2010-06-27  Kwang Yul Seo  <skyul@company100.net>
1409
1410         Reviewed by Kent Tamura.
1411
1412         [BREWMP] Turn ENABLE(SINGLE_THREADED) on.
1413         https://bugs.webkit.org/show_bug.cgi?id=41135
1414
1415         Brew MP does not support preemptive multi-threading.
1416         Disable threading for Brew MP.
1417
1418         * wtf/Platform.h:
1419
1420 2010-06-26  Tony Gentilcore  <tonyg@chromium.org>
1421
1422         Reviewed by Dimitri Glazkov.
1423
1424         Add an ENABLE_WEB_TIMING option for enabling Web Timing support.
1425         https://bugs.webkit.org/show_bug.cgi?id=38924
1426
1427         * Configurations/FeatureDefines.xcconfig:
1428
1429 2010-06-25  Nathan Lawrence  <nlawrence@apple.com>
1430
1431         Reviewed by Geoffrey Garen.
1432
1433         We assume in testapi.c that the value aHeapRef refers to will not be
1434         moved.  When we have movable objects, this will not be the case.
1435
1436         * API/tests/testapi.c:
1437         (main):
1438
1439 2010-06-25  Sheriff Bot  <webkit.review.bot@gmail.com>
1440
1441         Unreviewed, rolling out r61924.
1442         http://trac.webkit.org/changeset/61924
1443         https://bugs.webkit.org/show_bug.cgi?id=41240
1444
1445         It was rolled out, but cq+ wasn't removed (Requested by Ossy_
1446         on #webkit).
1447
1448         * runtime/RegExp.cpp:
1449         (JSC::RegExp::RegExp):
1450         (JSC::RegExp::create):
1451         * runtime/RegExp.h:
1452         * runtime/RegExpCache.cpp:
1453         (JSC::RegExpCache::lookupOrCreate):
1454         (JSC::RegExpCache::create):
1455         * runtime/RegExpCache.h:
1456
1457 2010-06-25  Renata Hodovan  <reni@inf.u-szeged.hu>
1458
1459         Reviewed by Geoffrey Garen.
1460
1461         Merge RegExp constructor and RegExp::create methods into one.
1462         Both of function are called with tree parameters and check whether 
1463         flags (the third param) is given or not.
1464         Simplify hash lookups in RegExpCache::create with giving them an extra 
1465         iterator parameter.
1466         https://bugs.webkit.org/show_bug.cgi?id=41055
1467
1468         * runtime/RegExp.cpp:
1469         (JSC::RegExp::RegExp):
1470         * runtime/RegExp.h:
1471         * runtime/RegExpCache.cpp:
1472         (JSC::RegExpCache::lookupOrCreate):
1473         (JSC::RegExpCache::create):
1474         * runtime/RegExpCache.h:
1475
1476 2010-06-25  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
1477
1478         Reviewed by Simon Hausmann.
1479
1480         Introduce QtScript benchmarks.
1481
1482         The QtScript performance should be tested regularly. The patch introduces
1483         micro benchmarks for existing API.
1484
1485         [Qt] Performance of the QtScript API is not tested.
1486         https://bugs.webkit.org/show_bug.cgi?id=40911
1487
1488         * qt/benchmarks/benchmarks.pri: Copied from JavaScriptCore/qt/tests/tests.pri.
1489         * qt/benchmarks/benchmarks.pro: Added.
1490         * qt/benchmarks/qscriptengine/qscriptengine.pro: Added.
1491         * qt/benchmarks/qscriptengine/tst_qscriptengine.cpp: Added.
1492         (tst_QScriptEngine::checkSyntax_data):
1493         (tst_QScriptEngine::checkSyntax):
1494         (tst_QScriptEngine::constructor):
1495         (tst_QScriptEngine::evaluateString_data):
1496         (tst_QScriptEngine::evaluateString):
1497         (tst_QScriptEngine::evaluateProgram_data):
1498         (tst_QScriptEngine::evaluateProgram):
1499         (tst_QScriptEngine::newObject):
1500         (tst_QScriptEngine::nullValue):
1501         (tst_QScriptEngine::undefinedValue):
1502         (tst_QScriptEngine::globalObject):
1503         (tst_QScriptEngine::toStringHandle):
1504         * qt/benchmarks/qscriptvalue/qscriptvalue.pro: Added.
1505         * qt/benchmarks/qscriptvalue/tst_qscriptvalue.cpp: Added.
1506         (tst_QScriptValue::tst_QScriptValue):
1507         (tst_QScriptValue::~tst_QScriptValue):
1508         (tst_QScriptValue::values_data):
1509         (tst_QScriptValue::ctorBool):
1510         (tst_QScriptValue::ctorReal):
1511         (tst_QScriptValue::ctorNumber):
1512         (tst_QScriptValue::ctorQString):
1513         (tst_QScriptValue::ctorCString):
1514         (tst_QScriptValue::ctorSpecial):
1515         (tst_QScriptValue::ctorQScriptValue):
1516         (tst_QScriptValue::isValid_data):
1517         (tst_QScriptValue::isValid):
1518         (tst_QScriptValue::isBool_data):
1519         (tst_QScriptValue::isBool):
1520         (tst_QScriptValue::isNumber_data):
1521         (tst_QScriptValue::isNumber):
1522         (tst_QScriptValue::isFunction_data):
1523         (tst_QScriptValue::isFunction):
1524         (tst_QScriptValue::isNull_data):
1525         (tst_QScriptValue::isNull):
1526         (tst_QScriptValue::isString_data):
1527         (tst_QScriptValue::isString):
1528         (tst_QScriptValue::isUndefined_data):
1529         (tst_QScriptValue::isUndefined):
1530         (tst_QScriptValue::isObject_data):
1531         (tst_QScriptValue::isObject):
1532         (tst_QScriptValue::isError_data):
1533         (tst_QScriptValue::isError):
1534         (tst_QScriptValue::toString_data):
1535         (tst_QScriptValue::toString):
1536         (tst_QScriptValue::toNumber_data):
1537         (tst_QScriptValue::toNumber):
1538         (tst_QScriptValue::toBool_data):
1539         (tst_QScriptValue::toBool):
1540         (tst_QScriptValue::toInteger_data):
1541         (tst_QScriptValue::toInteger):
1542         (tst_QScriptValue::toInt32_data):
1543         (tst_QScriptValue::toInt32):
1544         (tst_QScriptValue::toUInt32_data):
1545         (tst_QScriptValue::toUInt32):
1546         (tst_QScriptValue::toUInt16_data):
1547         (tst_QScriptValue::toUInt16):
1548         (tst_QScriptValue::toObject_data):
1549         (tst_QScriptValue::toObject):
1550         (tst_QScriptValue::equals_data):
1551         (tst_QScriptValue::equals):
1552         (tst_QScriptValue::strictlyEquals_data):
1553         (tst_QScriptValue::strictlyEquals):
1554         (tst_QScriptValue::instanceOf_data):
1555         (tst_QScriptValue::instanceOf):
1556
1557 2010-06-25  Oliver Hunt  <oliver@apple.com>
1558
1559         Reviewed by Geoffrey Garen.
1560
1561         Remove old js parser
1562         https://bugs.webkit.org/show_bug.cgi?id=41222
1563
1564         Remove the old yacc parser, this also solves the tiger problem.  Which
1565         was a conflict between yacc generated token values and those in the
1566         custom parser
1567
1568         * Android.mk:
1569         * CMakeLists.txt:
1570         * DerivedSources.make:
1571         * DerivedSources.pro:
1572         * GNUmakefile.am:
1573         * JavaScriptCore.pro:
1574         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
1575         * JavaScriptCore.xcodeproj/project.pbxproj:
1576         * parser/Grammar.y: Removed.
1577         * parser/JSParser.cpp:
1578         * parser/JSParser.h:
1579         * parser/Lexer.cpp:
1580         * parser/NodeConstructors.h:
1581         (JSC::Node::Node):
1582         * parser/Parser.cpp:
1583         (JSC::Parser::parse):
1584         * wtf/Platform.h:
1585
1586 2010-06-25  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
1587
1588         Reviewed by Simon Hausmann.
1589
1590         New QtScript API; setPrototype() and prototype().
1591
1592         This patch implements QScriptValue's prototype accessors.
1593
1594         [Qt] QScriptValue should have accessors to a prototype.
1595         https://bugs.webkit.org/show_bug.cgi?id=39356
1596
1597         * qt/api/qscriptvalue.cpp:
1598         (QScriptValue::prototype):
1599         (QScriptValue::setPrototype):
1600         * qt/api/qscriptvalue.h:
1601         * qt/api/qscriptvalue_p.h:
1602         (QScriptValuePrivate::prototype):
1603         (QScriptValuePrivate::setPrototype):
1604         * qt/tests/qscriptvalue/tst_qscriptvalue.cpp:
1605         (tst_QScriptValue::getSetPrototype):
1606         * qt/tests/qscriptvalue/tst_qscriptvalue.h:
1607
1608 2010-06-25  Lucas De Marchi  <lucas.demarchi@profusion.mobi>
1609
1610         Reviewed by Kenneth Rohde Christiansen.
1611
1612         [CMake] Add option to enable JIT.
1613         JIT is disabled by default, but now it's possible to enable it through
1614         an option to CMake: -DENABLE_JIT will enable it.
1615         https://bugs.webkit.org/show_bug.cgi?id=40936
1616
1617         * CMakeLists.txt: Add missing files and re-sort.
1618
1619 2010-06-25  Lucas De Marchi  <lucas.demarchi@profusion.mobi>
1620
1621         Reviewed by Gustavo Noronha Silva.
1622
1623         [CMake] Remove unused variable in EFL build system. It was previously
1624         being used to set the flags of each port but it was superseded by
1625         other flags.
1626         https://bugs.webkit.org/show_bug.cgi?id=40931
1627
1628         * jsc/CMakeLists.txt:
1629
1630 2010-06-25  Nathan Lawrence  <nlawrence@apple.com>
1631
1632         Reviewed by Geoffrey Garen.
1633
1634         Aligning AssemblerBuffer to 128 bytes gives a 0.4% speedup on
1635         sunspider.
1636
1637         * assembler/AssemblerBuffer.h:
1638         (JSC::AssemblerBuffer::AssemblerBuffer):
1639
1640 2010-06-25  Sheriff Bot  <webkit.review.bot@gmail.com>
1641
1642         Unreviewed, rolling out r61842.
1643         http://trac.webkit.org/changeset/61842
1644         https://bugs.webkit.org/show_bug.cgi?id=41208
1645
1646         It broke Windows build (Requested by Ossy_ on #webkit).
1647
1648         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
1649         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
1650         * wtf/OwnPtrCommon.h:
1651         * wtf/brew/OwnPtrBrew.h: Removed.
1652         * wtf/win/OwnPtrWin.h: Removed.
1653
1654 2010-06-25  Sheriff Bot  <webkit.review.bot@gmail.com>
1655
1656         Unreviewed, rolling out r61833.
1657         http://trac.webkit.org/changeset/61833
1658         https://bugs.webkit.org/show_bug.cgi?id=41205
1659
1660         It broke Leopard and GTK (Requested by Ossy_ on #webkit).
1661
1662         * runtime/RegExp.cpp:
1663         (JSC::RegExp::RegExp):
1664         (JSC::RegExp::create):
1665         * runtime/RegExp.h:
1666         * runtime/RegExpCache.cpp:
1667         (JSC::RegExpCache::lookupOrCreate):
1668         (JSC::RegExpCache::create):
1669         * runtime/RegExpCache.h:
1670
1671 2010-06-25  Kwang Yul Seo  <skyul@company100.net>
1672
1673         Reviewed by Adam Barth.
1674
1675         Change OwnPtrCommon to include platform-specific headers
1676         https://bugs.webkit.org/show_bug.cgi?id=40279
1677
1678         Adding new type to OwnPtrCommon needlessly causes all ports to do full rebuilds.
1679         Change OwnPtrCommon to include platform-specific headers to avoid all ports rebuilds.
1680
1681         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
1682         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
1683         * wtf/OwnPtrCommon.h:
1684         * wtf/brew/OwnPtrBrew.h: Added.
1685         * wtf/win/OwnPtrWin.h: Added.
1686
1687 2010-06-25  Patrick Gansterer  <paroga@paroga.com>
1688
1689         Reviewed by Darin Adler.
1690
1691         Add the possibility for a head and footer section to create_jit_stubs.
1692         https://bugs.webkit.org/show_bug.cgi?id=36050
1693
1694         * create_jit_stubs:
1695
1696 2010-06-24  Renata Hodovan  <reni@inf.u-szeged.hu>
1697
1698         Reviewed by Geoffrey Garen.
1699
1700         Merge RegExp constructor and RegExp::create methods into one.
1701         Both of function are called with tree parameters and check whether 
1702         flags (the third param) is given or not.
1703         Simplify hash lookups in RegExpCache::create with giving them an extra 
1704         iterator parameter.
1705         https://bugs.webkit.org/show_bug.cgi?id=41055
1706
1707         * runtime/RegExp.cpp:
1708         (JSC::RegExp::RegExp):
1709         * runtime/RegExp.h:
1710         * runtime/RegExpCache.cpp:
1711         (JSC::RegExpCache::lookupOrCreate):
1712         (JSC::RegExpCache::create):
1713         * runtime/RegExpCache.h:
1714
1715 2010-06-24  Oliver Hunt  <oliver@apple.com>
1716
1717         Reviewed by Maciej Stachowiak.
1718
1719         Incorrect use of '+ 4' and 0 instead of tag and payload offsets in JSValue32_64
1720         https://bugs.webkit.org/show_bug.cgi?id=41193
1721
1722         I noticed a use of '+ 4' in some of the 32_64 code paths and realised there
1723         were a few places where endianness was being hardcoded.  This patch fixes
1724         the errors i could find through code inspection.
1725
1726         * jit/JITOpcodes32_64.cpp:
1727         (JSC::JIT::emit_op_resolve_global):
1728         * jit/JITPropertyAccess32_64.cpp:
1729         (JSC::JIT::emit_op_get_by_val):
1730         (JSC::JIT::emit_op_put_by_val):
1731         (JSC::JIT::compileGetDirectOffset):
1732         (JSC::JIT::privateCompilePutByIdTransition):
1733         (JSC::JIT::patchGetByIdSelf):
1734         (JSC::JIT::patchPutByIdReplace):
1735
1736 2010-06-24  Oliver Hunt  <oliver@apple.com>
1737
1738         Build fix
1739
1740         Temporarily get the tiger bot working again by disabling the
1741         new JS parser.  GCC on tiger is miscompiling the parser and
1742         I don't have access to a tiger machine right now.
1743
1744         * wtf/Platform.h:
1745
1746  2010-06-21  Nathan Lawrence  <nlawrence@apple.com>
1747
1748          Reviewed by Geoff Garen.
1749
1750          https://bugs.webkit.org/show_bug.cgi?id=40128
1751          Fixed broken debug functionality.
1752
1753          * interpreter/Interpreter.cpp:
1754          (JSC::Interpreter::dumpRegisters):
1755              Fixed to work with updated call frame.
1756          * runtime/JSImmediate.h:
1757          (JSC::JSValue::isCell):
1758              Added assert for aligned cell.
1759          * runtime/JSValue.cpp:
1760          (JSC::JSValue::description):
1761              Fixed to work with current JSValue implementation.
1762          * runtime/JSZombie.cpp:
1763          (JSC::JSZombie::leakedZombieStructure):
1764              JSombies compile again.
1765
1766 2010-06-24  Leandro Pereira  <leandro@profusion.mobi>
1767
1768         Unreviewed build fix.
1769
1770         * CMakeLists.txt: Add JSParser.cpp.
1771
1772 2010-06-24  Oliver Hunt  <oliver@apple.com>
1773
1774         Reviewed by Maciej Stachowiak.
1775
1776         Single character string replacement may replace too many characters
1777         https://bugs.webkit.org/show_bug.cgi?id=41138
1778         <rdar://problem/8097496>
1779
1780         Simple fix to stop the rope path of single character replacement
1781         once the first replacement occurs.
1782
1783         * runtime/JSString.cpp:
1784         (JSC::JSString::replaceCharacter):
1785
1786 2010-06-24  Gabor Loki  <loki@webkit.org>
1787
1788         Reviewed by Gavin Barraclough.
1789
1790         Fix the length of instruction stream controlled by constant pool
1791         https://bugs.webkit.org/show_bug.cgi?id=40293
1792
1793         The initial/maximum length of instruction stream (m_maxDistance) should
1794         be set when the first constant arrives to the constant pool. Otherwise
1795         the constant pool could be placed into an uninterrupted sequence.
1796
1797         * assembler/AssemblerBufferWithConstantPool.h:
1798         (JSC::):
1799
1800 2010-06-24  Oliver Hunt  <oliver@apple.com>
1801
1802         Reviewed by Gavin Barraclough.
1803
1804         We assume bytecodeOffset will always return a value > 1,
1805         so we adjust the failure case to return 1 instead of 0.
1806
1807         * bytecode/CodeBlock.h:
1808         (JSC::CodeBlock::bytecodeOffset):
1809
1810 2010-06-23  Oliver Hunt  <oliver@apple.com>
1811
1812         Reviewed by Gavin Barraclough.
1813
1814         Custom-written JavaScript parser
1815         https://bugs.webkit.org/show_bug.cgi?id=34019
1816
1817         Implement a recursive descent parser similar to that used by V8 and
1818         SpiderMonkey.  Greater than 2x improvement in SunSpider parsing tests.
1819
1820         The parser consists of a JSParser class that uses a TreeBuilder to actually
1821         build the AST.  There are currently two builders -- the ASTBuilder and
1822         SyntaxChecker which separate the job of building an AST for code generation
1823         and simply checking syntactic correctness.
1824
1825         There's still some less than ideal code remaining in the parser to allow
1826         us to retain the existing lexing code with minimal changes.  We'll tidy
1827         this up at a later date.
1828
1829         * GNUmakefile.am:
1830         * JavaScriptCore.gypi:
1831         * JavaScriptCore.pro:
1832         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
1833         * JavaScriptCore.xcodeproj/project.pbxproj:
1834         * parser/ASTBuilder.h: Added.
1835         (JSC::ASTBuilder::BinaryOpInfo::BinaryOpInfo):
1836         (JSC::ASTBuilder::AssignmentInfo::AssignmentInfo):
1837         (JSC::ASTBuilder::ASTBuilder):
1838         (JSC::ASTBuilder::createSourceElements):
1839         (JSC::ASTBuilder::varDeclarations):
1840         (JSC::ASTBuilder::funcDeclarations):
1841         (JSC::ASTBuilder::features):
1842         (JSC::ASTBuilder::numConstants):
1843         (JSC::ASTBuilder::appendToComma):
1844         (JSC::ASTBuilder::createCommaExpr):
1845         (JSC::ASTBuilder::createLogicalNot):
1846         (JSC::ASTBuilder::createUnaryPlus):
1847         (JSC::ASTBuilder::createVoid):
1848         (JSC::ASTBuilder::thisExpr):
1849         (JSC::ASTBuilder::createResolve):
1850         (JSC::ASTBuilder::createObjectLiteral):
1851         (JSC::ASTBuilder::createArray):
1852         (JSC::ASTBuilder::createNumberExpr):
1853         (JSC::ASTBuilder::createString):
1854         (JSC::ASTBuilder::createBoolean):
1855         (JSC::ASTBuilder::createNull):
1856         (JSC::ASTBuilder::createBracketAccess):
1857         (JSC::ASTBuilder::createDotAccess):
1858         (JSC::ASTBuilder::createRegex):
1859         (JSC::ASTBuilder::createNewExpr):
1860         (JSC::ASTBuilder::createConditionalExpr):
1861         (JSC::ASTBuilder::createAssignResolve):
1862         (JSC::ASTBuilder::createFunctionExpr):
1863         (JSC::ASTBuilder::createFunctionBody):
1864         (JSC::ASTBuilder::createGetterOrSetterProperty):
1865         (JSC::ASTBuilder::createArguments):
1866         (JSC::ASTBuilder::createArgumentsList):
1867         (JSC::ASTBuilder::createProperty):
1868         (JSC::ASTBuilder::createPropertyList):
1869         (JSC::ASTBuilder::createElementList):
1870         (JSC::ASTBuilder::createFormalParameterList):
1871         (JSC::ASTBuilder::createClause):
1872         (JSC::ASTBuilder::createClauseList):
1873         (JSC::ASTBuilder::setUsesArguments):
1874         (JSC::ASTBuilder::createFuncDeclStatement):
1875         (JSC::ASTBuilder::createBlockStatement):
1876         (JSC::ASTBuilder::createExprStatement):
1877         (JSC::ASTBuilder::createIfStatement):
1878         (JSC::ASTBuilder::createForLoop):
1879         (JSC::ASTBuilder::createForInLoop):
1880         (JSC::ASTBuilder::createEmptyStatement):
1881         (JSC::ASTBuilder::createVarStatement):
1882         (JSC::ASTBuilder::createReturnStatement):
1883         (JSC::ASTBuilder::createBreakStatement):
1884         (JSC::ASTBuilder::createContinueStatement):
1885         (JSC::ASTBuilder::createTryStatement):
1886         (JSC::ASTBuilder::createSwitchStatement):
1887         (JSC::ASTBuilder::createWhileStatement):
1888         (JSC::ASTBuilder::createDoWhileStatement):
1889         (JSC::ASTBuilder::createLabelStatement):
1890         (JSC::ASTBuilder::createWithStatement):
1891         (JSC::ASTBuilder::createThrowStatement):
1892         (JSC::ASTBuilder::createDebugger):
1893         (JSC::ASTBuilder::createConstStatement):
1894         (JSC::ASTBuilder::appendConstDecl):
1895         (JSC::ASTBuilder::appendStatement):
1896         (JSC::ASTBuilder::addVar):
1897         (JSC::ASTBuilder::combineCommaNodes):
1898         (JSC::ASTBuilder::evalCount):
1899         (JSC::ASTBuilder::appendBinaryExpressionInfo):
1900         (JSC::ASTBuilder::operatorStackPop):
1901         (JSC::ASTBuilder::operatorStackHasHigherPrecedence):
1902         (JSC::ASTBuilder::getFromOperandStack):
1903         (JSC::ASTBuilder::shrinkOperandStackBy):
1904         (JSC::ASTBuilder::appendBinaryOperation):
1905         (JSC::ASTBuilder::operatorStackAppend):
1906         (JSC::ASTBuilder::popOperandStack):
1907         (JSC::ASTBuilder::appendUnaryToken):
1908         (JSC::ASTBuilder::unaryTokenStackLastType):
1909         (JSC::ASTBuilder::unaryTokenStackLastStart):
1910         (JSC::ASTBuilder::unaryTokenStackRemoveLast):
1911         (JSC::ASTBuilder::assignmentStackAppend):
1912         (JSC::ASTBuilder::createAssignment):
1913         (JSC::ASTBuilder::Scope::Scope):
1914         (JSC::ASTBuilder::setExceptionLocation):
1915         (JSC::ASTBuilder::incConstants):
1916         (JSC::ASTBuilder::usesThis):
1917         (JSC::ASTBuilder::usesCatch):
1918         (JSC::ASTBuilder::usesClosures):
1919         (JSC::ASTBuilder::usesArguments):
1920         (JSC::ASTBuilder::usesAssignment):
1921         (JSC::ASTBuilder::usesWith):
1922         (JSC::ASTBuilder::usesEval):
1923         (JSC::ASTBuilder::createNumber):
1924         (JSC::ASTBuilder::makeTypeOfNode):
1925         (JSC::ASTBuilder::makeDeleteNode):
1926         (JSC::ASTBuilder::makeNegateNode):
1927         (JSC::ASTBuilder::makeBitwiseNotNode):
1928         (JSC::ASTBuilder::makeMultNode):
1929         (JSC::ASTBuilder::makeDivNode):
1930         (JSC::ASTBuilder::makeAddNode):
1931         (JSC::ASTBuilder::makeSubNode):
1932         (JSC::ASTBuilder::makeLeftShiftNode):
1933         (JSC::ASTBuilder::makeRightShiftNode):
1934         (JSC::ASTBuilder::makeFunctionCallNode):
1935         (JSC::ASTBuilder::makeBinaryNode):
1936         (JSC::ASTBuilder::makeAssignNode):
1937         (JSC::ASTBuilder::makePrefixNode):
1938         (JSC::ASTBuilder::makePostfixNode):
1939         * parser/JSParser.cpp: Added.
1940         (JSC::JSParser::AllowInOverride::AllowInOverride):
1941         (JSC::JSParser::AllowInOverride::~AllowInOverride):
1942         (JSC::JSParser::token):
1943         (JSC::JSParser::next):
1944         (JSC::JSParser::consume):
1945         (JSC::JSParser::match):
1946         (JSC::JSParser::tokenStart):
1947         (JSC::JSParser::tokenLine):
1948         (JSC::JSParser::tokenEnd):
1949         (JSC::JSParser::):
1950         (JSC::JSParser::autoSemiColon):
1951         (JSC::JSParser::canRecurse):
1952         (JSC::JSParser::lastTokenEnd):
1953         (JSC::jsParse):
1954         (JSC::JSParser::JSParser):
1955         (JSC::JSParser::parseProgram):
1956         (JSC::JSParser::allowAutomaticSemicolon):
1957         (JSC::JSParser::parseSourceElements):
1958         (JSC::JSParser::parseVarDeclaration):
1959         (JSC::JSParser::parseConstDeclaration):
1960         (JSC::JSParser::parseDoWhileStatement):
1961         (JSC::JSParser::parseWhileStatement):
1962         (JSC::JSParser::parseVarDeclarationList):
1963         (JSC::JSParser::parseConstDeclarationList):
1964         (JSC::JSParser::parseForStatement):
1965         (JSC::JSParser::parseBreakStatement):
1966         (JSC::JSParser::parseContinueStatement):
1967         (JSC::JSParser::parseReturnStatement):
1968         (JSC::JSParser::parseThrowStatement):
1969         (JSC::JSParser::parseWithStatement):
1970         (JSC::JSParser::parseSwitchStatement):
1971         (JSC::JSParser::parseSwitchClauses):
1972         (JSC::JSParser::parseSwitchDefaultClause):
1973         (JSC::JSParser::parseTryStatement):
1974         (JSC::JSParser::parseDebuggerStatement):
1975         (JSC::JSParser::parseBlockStatement):
1976         (JSC::JSParser::parseStatement):
1977         (JSC::JSParser::parseFormalParameters):
1978         (JSC::JSParser::parseFunctionBody):
1979         (JSC::JSParser::parseFunctionInfo):
1980         (JSC::JSParser::parseFunctionDeclaration):
1981         (JSC::JSParser::parseExpressionOrLabelStatement):
1982         (JSC::JSParser::parseExpressionStatement):
1983         (JSC::JSParser::parseIfStatement):
1984         (JSC::JSParser::parseExpression):
1985         (JSC::JSParser::parseAssignmentExpression):
1986         (JSC::JSParser::parseConditionalExpression):
1987         (JSC::isUnaryOp):
1988         (JSC::JSParser::isBinaryOperator):
1989         (JSC::JSParser::parseBinaryExpression):
1990         (JSC::JSParser::parseProperty):
1991         (JSC::JSParser::parseObjectLiteral):
1992         (JSC::JSParser::parseArrayLiteral):
1993         (JSC::JSParser::parsePrimaryExpression):
1994         (JSC::JSParser::parseArguments):
1995         (JSC::JSParser::parseMemberExpression):
1996         (JSC::JSParser::parseUnaryExpression):
1997         * parser/JSParser.h: Added.
1998         (JSC::):
1999         (JSC::JSTokenInfo::JSTokenInfo):
2000         * parser/Lexer.cpp:
2001         (JSC::Lexer::lex):
2002         * parser/Lexer.h:
2003         (JSC::Lexer::setLastLineNumber):
2004         (JSC::Lexer::lastLineNumber):
2005         * parser/NodeConstructors.h:
2006         (JSC::Node::Node):
2007         * parser/Parser.cpp:
2008         (JSC::Parser::parse):
2009         * parser/SyntaxChecker.h: Added.
2010         (JSC::SyntaxChecker::SyntaxChecker):
2011         (JSC::SyntaxChecker::createSourceElements):
2012         (JSC::SyntaxChecker::makeFunctionCallNode):
2013         (JSC::SyntaxChecker::appendToComma):
2014         (JSC::SyntaxChecker::createCommaExpr):
2015         (JSC::SyntaxChecker::makeAssignNode):
2016         (JSC::SyntaxChecker::makePrefixNode):
2017         (JSC::SyntaxChecker::makePostfixNode):
2018         (JSC::SyntaxChecker::makeTypeOfNode):
2019         (JSC::SyntaxChecker::makeDeleteNode):
2020         (JSC::SyntaxChecker::makeNegateNode):
2021         (JSC::SyntaxChecker::makeBitwiseNotNode):
2022         (JSC::SyntaxChecker::createLogicalNot):
2023         (JSC::SyntaxChecker::createUnaryPlus):
2024         (JSC::SyntaxChecker::createVoid):
2025         (JSC::SyntaxChecker::thisExpr):
2026         (JSC::SyntaxChecker::createResolve):
2027         (JSC::SyntaxChecker::createObjectLiteral):
2028         (JSC::SyntaxChecker::createArray):
2029         (JSC::SyntaxChecker::createNumberExpr):
2030         (JSC::SyntaxChecker::createString):
2031         (JSC::SyntaxChecker::createBoolean):
2032         (JSC::SyntaxChecker::createNull):
2033         (JSC::SyntaxChecker::createBracketAccess):
2034         (JSC::SyntaxChecker::createDotAccess):
2035         (JSC::SyntaxChecker::createRegex):
2036         (JSC::SyntaxChecker::createNewExpr):
2037         (JSC::SyntaxChecker::createConditionalExpr):
2038         (JSC::SyntaxChecker::createAssignResolve):
2039         (JSC::SyntaxChecker::createFunctionExpr):
2040         (JSC::SyntaxChecker::createFunctionBody):
2041         (JSC::SyntaxChecker::createArguments):
2042         (JSC::SyntaxChecker::createArgumentsList):
2043         (JSC::SyntaxChecker::createProperty):
2044         (JSC::SyntaxChecker::createPropertyList):
2045         (JSC::SyntaxChecker::createElementList):
2046         (JSC::SyntaxChecker::createFormalParameterList):
2047         (JSC::SyntaxChecker::createClause):
2048         (JSC::SyntaxChecker::createClauseList):
2049         (JSC::SyntaxChecker::setUsesArguments):
2050         (JSC::SyntaxChecker::createFuncDeclStatement):
2051         (JSC::SyntaxChecker::createBlockStatement):
2052         (JSC::SyntaxChecker::createExprStatement):
2053         (JSC::SyntaxChecker::createIfStatement):
2054         (JSC::SyntaxChecker::createForLoop):
2055         (JSC::SyntaxChecker::createForInLoop):
2056         (JSC::SyntaxChecker::createEmptyStatement):
2057         (JSC::SyntaxChecker::createVarStatement):
2058         (JSC::SyntaxChecker::createReturnStatement):
2059         (JSC::SyntaxChecker::createBreakStatement):
2060         (JSC::SyntaxChecker::createContinueStatement):
2061         (JSC::SyntaxChecker::createTryStatement):
2062         (JSC::SyntaxChecker::createSwitchStatement):
2063         (JSC::SyntaxChecker::createWhileStatement):
2064         (JSC::SyntaxChecker::createWithStatement):
2065         (JSC::SyntaxChecker::createDoWhileStatement):
2066         (JSC::SyntaxChecker::createLabelStatement):
2067         (JSC::SyntaxChecker::createThrowStatement):
2068         (JSC::SyntaxChecker::createDebugger):
2069         (JSC::SyntaxChecker::createConstStatement):
2070         (JSC::SyntaxChecker::appendConstDecl):
2071         (JSC::SyntaxChecker::createGetterOrSetterProperty):
2072         (JSC::SyntaxChecker::appendStatement):
2073         (JSC::SyntaxChecker::addVar):
2074         (JSC::SyntaxChecker::combineCommaNodes):
2075         (JSC::SyntaxChecker::evalCount):
2076         (JSC::SyntaxChecker::appendBinaryExpressionInfo):
2077         (JSC::SyntaxChecker::operatorStackPop):
2078         * runtime/JSGlobalData.h:
2079         * wtf/Platform.h:
2080         * wtf/ThreadSpecific.h:
2081         (WTF::T):
2082
2083 2010-06-23  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
2084
2085         Reviewed by Simon Hausmann.
2086
2087         Optimization of the QScriptValuePrivate.
2088
2089         Patch change only internals of the QScriptValuePrivate.
2090         Most of the QScriptValuePrivate's attributes were moved
2091         into an union.
2092
2093         [Qt] Optimization of the QScriptVAluePrivate.
2094         https://bugs.webkit.org/show_bug.cgi?id=40415
2095
2096         * qt/api/qscriptengine_p.cpp:
2097         (QScriptEnginePrivate::globalObject):
2098         * qt/api/qscriptvalue_p.h:
2099         (QScriptValuePrivate::):
2100         (QScriptValuePrivate::~QScriptValuePrivate):
2101         (QScriptValuePrivate::QScriptValuePrivate):
2102         (QScriptValuePrivate::toString):
2103         (QScriptValuePrivate::toNumber):
2104         (QScriptValuePrivate::toBool):
2105         (QScriptValuePrivate::toObject):
2106         (QScriptValuePrivate::equals):
2107         (QScriptValuePrivate::strictlyEquals):
2108         (QScriptValuePrivate::assignEngine):
2109         (QScriptValuePrivate::operator JSValueRef):
2110         (QScriptValuePrivate::operator JSObjectRef):
2111         (QScriptValuePrivate::refinedJSValue):
2112
2113 2010-06-23  Kwang Yul Seo  <skyul@company100.net>
2114
2115         Reviewed by Oliver Hunt.
2116
2117         [GTK] Implement ThreadSpecific with glib
2118         https://bugs.webkit.org/show_bug.cgi?id=39829
2119
2120         Implement ThreadSpecific with glib's GStaticPrivate.
2121         This patch makes it possible to build GTK port without pthread.
2122
2123         * wtf/ThreadSpecific.h:
2124         (WTF::::ThreadSpecific):
2125         (WTF::::~ThreadSpecific):
2126         (WTF::::get):
2127         (WTF::::set):
2128         (WTF::::destroy):
2129
2130 2010-06-23  Leandro Pereira  <leandro@profusion.mobi>
2131
2132         Unreviewed build fix.
2133
2134         * CMakeLists.txt: Add runtime/RegExpCache.cpp.
2135
2136 2010-06-22  Renata Hodovan  <hodovan@inf.u-szeged.hu>
2137
2138         Reviewed by Geoffrey Garen.
2139
2140         Adding regular expression caching to JavaScriptCore
2141         https://bugs.webkit.org/show_bug.cgi?id=38142
2142
2143         The cache is based on Round Robin eviction policy, and
2144         can cache at most 256 character long regular expressions,
2145         and at most 256 of them. These values can be changed at compile time.
2146
2147         * GNUmakefile.am:
2148         * JavaScriptCore.gypi:
2149         * JavaScriptCore.pro:
2150         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
2151         * JavaScriptCore.xcodeproj/project.pbxproj:
2152         * bytecompiler/NodesCodegen.cpp:
2153         (JSC::RegExpNode::emitBytecode):
2154         * runtime/JSGlobalData.cpp:
2155         (JSC::JSGlobalData::JSGlobalData):
2156         (JSC::JSGlobalData::~JSGlobalData):
2157         * runtime/JSGlobalData.h:
2158         (JSC::JSGlobalData::regExpCache):
2159         * runtime/RegExpCache.cpp: Added.
2160         (JSC::RegExpCache::lookupOrCreate):
2161         (JSC::RegExpCache::create):
2162         (JSC::RegExpCache::RegExpCache):
2163         * runtime/RegExpCache.h: Added.
2164         * runtime/RegExpConstructor.cpp:
2165         (JSC::constructRegExp):
2166         * runtime/RegExpKey.h: Added.
2167         (JSC::RegExpKey::RegExpKey):
2168         (JSC::RegExpKey::getFlagsValue):
2169         (WTF::operator==):
2170         (WTF::):
2171         * runtime/RegExpPrototype.cpp:
2172         (JSC::regExpProtoFuncCompile):
2173         * runtime/StringPrototype.cpp:
2174         (JSC::stringProtoFuncMatch):
2175         (JSC::stringProtoFuncSearch):
2176
2177 2010-06-22  Gabor Loki  <loki@webkit.org>
2178
2179         Reviewed by Geoffrey Garen.
2180
2181         Add native call support for ARM and Thumb-2 JIT.
2182         https://bugs.webkit.org/show_bug.cgi?id=40231
2183
2184         * jit/JITOpcodes.cpp:
2185         (JSC::JIT::privateCompileCTINativeCall):
2186         * jit/JITOpcodes32_64.cpp:
2187         (JSC::JIT::privateCompileCTINativeCall):
2188         * wtf/Platform.h:
2189
2190 2010-06-21  Oliver Hunt  <oliver@apple.com>
2191
2192         Reviewed by Geoffrey Garen.
2193
2194         Make JSC more resilient in the face of parse failures
2195         https://bugs.webkit.org/show_bug.cgi?id=40951
2196
2197         A number of recent bugs have occurred due to issues like miscounting
2198         BOMs, etc which lead to interesting crashes later on.  Adding this
2199         logic hardens JSC in the face of these errors, and has no impact on
2200         performance (32bit jit actually gets 0.7% faster but I put that down
2201         to cache effects).
2202
2203         * bytecode/CodeBlock.cpp:
2204         (JSC::CodeBlock::reparseForExceptionInfoIfNecessary):
2205         (JSC::CodeBlock::lineNumberForBytecodeOffset):
2206         (JSC::CodeBlock::expressionRangeForBytecodeOffset):
2207         (JSC::CodeBlock::getByIdExceptionInfoForBytecodeOffset):
2208         * bytecode/CodeBlock.h:
2209         (JSC::CodeBlock::bytecodeOffset):
2210         * interpreter/Interpreter.cpp:
2211         (JSC::Interpreter::execute):
2212         (JSC::Interpreter::executeCall):
2213         (JSC::Interpreter::executeConstruct):
2214         (JSC::Interpreter::prepareForRepeatCall):
2215         (JSC::Interpreter::privateExecute):
2216         * jit/JITOpcodes.cpp:
2217         (JSC::JIT::privateCompileCTIMachineTrampolines):
2218         * jit/JITOpcodes32_64.cpp:
2219         (JSC::JIT::privateCompileCTIMachineTrampolines):
2220         * jit/JITStubs.cpp:
2221         (JSC::DEFINE_STUB_FUNCTION):
2222         * runtime/ArrayPrototype.cpp:
2223         (JSC::isNumericCompareFunction):
2224         * runtime/Executable.cpp:
2225         (JSC::FunctionExecutable::compileForCall):
2226         (JSC::FunctionExecutable::compileForConstruct):
2227         (JSC::FunctionExecutable::generateJITCodeForCall):
2228         (JSC::FunctionExecutable::generateJITCodeForConstruct):
2229         (JSC::FunctionExecutable::reparseExceptionInfo):
2230         (JSC::EvalExecutable::reparseExceptionInfo):
2231         * runtime/Executable.h:
2232         (JSC::FunctionExecutable::bytecodeForCall):
2233         (JSC::FunctionExecutable::bytecodeForConstruct):
2234         * runtime/JSGlobalData.cpp:
2235         (JSC::JSGlobalData::numericCompareFunction):
2236
2237 2010-06-21  John Sullivan  <sullivan@apple.com>
2238
2239         Reviewed by Adam Roben.
2240
2241         RetainPtr can't be used in HashMaps or HashSets
2242         <https://bugs.webkit.org/show_bug.cgi?id=40938>
2243         
2244         Added hashing knowledge similar to that in COMPtr.h.
2245
2246         * wtf/RetainPtr.h:
2247         (WTF::RetainPtr::RetainPtr):
2248         New function, copied from COMPtr.h but for the type change.
2249         (WTF::RetainPtr::isHashTableDeletedValue):
2250         Ditto.
2251         (WTF::RetainPtr::hashTableDeletedValue):
2252         Ditto.
2253         Added template code for HashTraits and PtrHash copied from COMPtr.h but for the type change.
2254         The only difference is that constructDeletedValue() matches the RefPtr implementation (in HashTraits.h)
2255         rather than the COMPtr implementation.
2256
2257 2010-06-19  Oliver Hunt  <oliver@apple.com>
2258
2259         Reviewed by Geoffrey Garen.
2260
2261         Need to ensure that we grow the RegisterFile when creating a callframe for host code
2262         https://bugs.webkit.org/show_bug.cgi?id=40858
2263         <rdar://problem/8108986>
2264
2265         In the past the use of the callframe in hostcode was much more
2266         limited.  Now that we expect the callframe to always be valid
2267         we need to grow the RegisterFile so that this is actually the
2268         case.  In this particular case the problem was failing to grow
2269         the registerfile could lead to a callframe that extended beyond
2270         RegisterFiler::end(), so vm re-entry would clobber the callframe
2271         other scenarios could also lead to badness.
2272
2273         I was unable to construct a simple testcase to trigger badness,
2274         and any such testcase would be so dependent on exact vm stack
2275         layout that it would be unlikely to work as a testcase following
2276         any callframe or register allocation changes anyway.
2277
2278         Thankfully the new assertion I added should help to catch these
2279         failures in future, and triggers on a couple of tests currently.
2280
2281         * interpreter/CallFrame.cpp:
2282         (JSC::CallFrame::registerFile):
2283         * interpreter/CallFrame.h:
2284         (JSC::ExecState::init):
2285         * interpreter/Interpreter.cpp:
2286         (JSC::Interpreter::privateExecute):
2287         * jit/JITStubs.cpp:
2288         (JSC::DEFINE_STUB_FUNCTION):
2289
2290 2010-06-21  Satish Sampath  <satish@chromium.org>
2291
2292         Reviewed by Steve Block.
2293
2294         Speech Input Patch 0: Added compilation argument to conditionally compile pending patches.
2295         https://bugs.webkit.org/show_bug.cgi?id=40878
2296
2297         * Configurations/FeatureDefines.xcconfig:
2298
2299 2010-06-21  Kwang Yul Seo  <skyul@company100.net>
2300
2301         Reviewed by Kent Tamura.
2302
2303         [BREWMP] Use global new/delete operator overloading with USE_SYSTEM_MALLOC=1
2304         https://bugs.webkit.org/show_bug.cgi?id=40653
2305
2306         Currently, other ports do not use global new/delete operator overloading
2307         when USE_SYSTEM_MALLOC=1. Brew MP uses system malloc, but it needs to enable
2308         "global fastMalloc new" because the default new/delete causes crash on device.
2309         We need to replace them with Brew MP's MALLOC/FREE.
2310
2311         * wtf/FastMalloc.h:
2312
2313 2010-06-18  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
2314
2315         Reviewed by Simon Hausmann.
2316
2317         [Qt] Work around a build problem with libjscore on Symbian.
2318         https://bugs.webkit.org/show_bug.cgi?id=40840
2319
2320         Sbsv2 sometimes have problems with debug/release configuration
2321         determination causing QtWebKit in release to try linking with the debug
2322         JavaScriptCore static library. This patch limit the jscore/jscored
2323         r58306 fix necessary for mac builds only to the mac platform to prevent the
2324         different name problem.
2325
2326         The real fix would be to fix qmake or the toolchain, this patch might
2327         help meanwhile.
2328
2329         * JavaScriptCore.pri:
2330
2331 2010-06-21  Patrick Gansterer  <paroga@paroga.com>
2332
2333         Reviewed by Kent Tamura.
2334
2335         Buildfix after r61338.
2336         https://bugs.webkit.org/show_bug.cgi?id=40888
2337
2338         roundUpAllocationSize is needed in RegisterFile.h.
2339
2340         * jit/ExecutableAllocator.h:
2341
2342 2010-06-19  Kwang Yul Seo  <skyul@company100.net>
2343
2344         Reviewed by Darin Adler.
2345
2346         Include <string.h> in StringExtras.h
2347         https://bugs.webkit.org/show_bug.cgi?id=40808
2348
2349         Without string.h, RVCT 2.2 can't compile StringExtras.h.
2350         It can't find strlen and strncmp.
2351
2352         * wtf/StringExtras.h:
2353
2354 2010-06-19  Thiago Macieira <thiago.macieira@nokia.com>
2355
2356         Reviewed by Kenneth Rohde Christiansen.
2357
2358         Don't use __attribute__((may_alias)) with the Intel compiler,
2359         as it doesn't understand it.
2360
2361         * wtf/Vector.h:
2362
2363 2010-06-19  Thiago Macieira <thiago.macieira@nokia.com>
2364
2365         Reviewed by Kenneth Rohde Christiansen.
2366
2367         Fix compilation with the Intel C++ compiler (11.1.072).
2368
2369         Like RVCT, label pointers must be void*, not const void*.
2370
2371         * bytecode/Opcode.h:
2372
2373 2010-06-19  Thiago Macieira <thiago.macieira@nokia.com>
2374
2375         Reviewed by Kenneth Rohde Christiansen.
2376
2377         Add the WTF_COMPILER_INTEL for when the Intel compiler is used
2378         for building. Usually, the Intel compiler masquerades as
2379         another compiler in the system and gets away with it, but some
2380         times specific fixes are required (such as when using language
2381         extensions).
2382
2383         * wtf/Platform.h:
2384
2385 2010-06-18  Oliver Hunt  <oliver@apple.com>
2386
2387         Reviewed by Geoffrey Garen.
2388
2389         Incorrect handling of multiple BOMs scattered through a file.
2390         https://bugs.webkit.org/show_bug.cgi?id=40865
2391
2392         When determining the offset of open and close braces in a source
2393         with BOMs we were finishing our count early as we failed to account
2394         for BOMs prior to the open/close brace positions effecting those
2395         positions.
2396
2397         * parser/Lexer.cpp:
2398         (JSC::Lexer::sourceCode):
2399
2400 2010-06-17  Oliver Hunt  <oliver@apple.com>
2401
2402         Reviewed by Sam Weinig.
2403
2404         Don't throw away exception information for functions that use exceptions
2405         https://bugs.webkit.org/show_bug.cgi?id=40786
2406
2407         Simple patch to stop JSC from throwing away the exception information
2408         of a function that uses "exceptiony" features like try and throw.  This
2409         is a speed up for catching expressions but it's difficult to quantify as
2410         the old cost of reparsing is amortised over all exceptions caught in the
2411         effected function.
2412
2413         * bytecode/CodeBlock.cpp:
2414         (JSC::CodeBlock::reparseForExceptionInfoIfNecessary):
2415         * bytecompiler/BytecodeGenerator.cpp:
2416         (JSC::BytecodeGenerator::generate):
2417         (JSC::BytecodeGenerator::emitCatch):
2418         * bytecompiler/BytecodeGenerator.h:
2419         (JSC::BytecodeGenerator::emitThrow):
2420
2421 2010-06-18  Anders Carlsson  <andersca@apple.com>
2422
2423         Reviewed by Sam Weinig.
2424
2425         Add PlatformStrategies and PluginStrategy classes.
2426         https://bugs.webkit.org/show_bug.cgi?id=40850
2427
2428         * wtf/Platform.h:
2429
2430 2010-06-18  Leandro Pereira  <leandro@profusion.mobi>
2431
2432         [EFL] Unreviewed build fix.
2433
2434         * wtf/CMakeLists.txt: Add MD5.cpp.
2435
2436 2010-06-17  Shu Chang  <chang.shu@nokia.com>
2437
2438         Reviewed by Kenneth Rohde Christiansen.
2439
2440         [Qt] Fix the link error on symbian with ENABLE_JIT=0.
2441         1. Add "#if ENABLE(JIT)" in the header file;
2442         2. Put feature enable/disable logic to a common.pri so
2443         that both JavaScriptCore.pri and WebCore.pri can share.
2444
2445         https://bugs.webkit.org/show_bug.cgi?id=40780
2446
2447         * JavaScriptCore.pri:
2448         * jit/ExecutableAllocator.h:
2449
2450 2010-06-17  Darin Adler  <darin@apple.com>
2451
2452         Reviewed by Sam Weinig.
2453
2454         Use adoptRef and create functions in more code paths
2455         https://bugs.webkit.org/show_bug.cgi?id=40760
2456
2457         * API/JSClassRef.h: Removed unneeded include of RefCounted.h.
2458         * API/JSWeakObjectMapRefPrivate.cpp: Ditto.
2459
2460         * bytecode/CodeBlock.h:
2461         (JSC::FunctionCodeBlock::FunctionCodeBlock): Use the
2462         SharedSymbolTable::create function instead of calling new directly.
2463
2464         * runtime/SymbolTable.h: Added a create function to the SharedSymbolTable
2465         class and made the constructor private.
2466
2467 2010-06-17  Mark Brand  <mabrand@mabrand.nl>
2468
2469         Reviewed by Simon Hausmann.
2470
2471         [Qt] use "win32-g++*" scope to match all MinGW makespecs
2472
2473         The scope "win32-g++" comes from the name of the makespec. However, it
2474         is frequently used to check for MinGW. This works fine as long as
2475         win32-g++ is the only makespec for MinGW. Now we need the wildcard
2476         to cover "win32-g++-cross" as well.
2477
2478         * JavaScriptCore.pro:
2479
2480 2010-06-16  Darin Adler  <darin@apple.com>
2481
2482         Reviewed by David Levin.
2483
2484         Deploy adoptRef in more places, including all HTML and MathML elements
2485         https://bugs.webkit.org/show_bug.cgi?id=39941
2486
2487         * wtf/ThreadSafeShared.h: Made the constructor protected and removed the
2488         unneeded support for initial reference counts other than 1.
2489
2490 2010-06-16  Peter Varga  <pvarga@inf.u-szeged.hu>
2491
2492         Reviewed by Geoffrey Garen.
2493
2494         Store matchBegin directly in the array of output instead of the stack.
2495         https://bugs.webkit.org/show_bug.cgi?id=38988
2496
2497         * yarr/RegexJIT.cpp:
2498         (JSC::Yarr::RegexGenerator::generateDisjunction):
2499         (JSC::Yarr::RegexGenerator::generate):
2500
2501 2010-06-15  Anders Carlsson  <andersca@apple.com>
2502
2503         Reviewed by Sam Weinig.
2504
2505         Make JavaScriptCore build with clang++.
2506
2507         * jit/JITInlineMethods.h:
2508         (JSC::JIT::emitPutVirtualRegister):
2509         Explicitly cast to an int.
2510
2511         * yarr/RegexCompiler.cpp:
2512         (JSC::Yarr::compileRegex):
2513         Return 0 instead of false.
2514
2515 2010-06-15  Adam Roben  <aroben@apple.com>
2516
2517         Make WebCore's and JavaScriptCore's DerivedSources available for debugging in production builds
2518
2519         Fixes <http://webkit.org/b/40626> <rdar://problem/8094205>.
2520
2521         Reviewed by Sam Weinig.
2522
2523         * JavaScriptCore.vcproj/JavaScriptCore.make: Copy the contents of
2524         JavaScriptCore's DerivedSources directory to
2525         AppleInternal/Sources/JavaScriptCore.
2526
2527 2010-06-15  Gabor Loki  <loki@webkit.org>
2528
2529         Rubber-stamped by Eric Seidel.
2530
2531         Fix invalid access to non-static data member warning in JITPropertyAccess32_64 on ARM
2532         https://bugs.webkit.org/show_bug.cgi?id=40423
2533
2534         Using OBJECT_OFFSETOF macro instead of objectof to bypass access to
2535         non-static data member warning.
2536
2537         * jit/JITPropertyAccess32_64.cpp:
2538         (JSC::JIT::privateCompilePutByIdTransition):
2539
2540 2010-06-11  Eric Seidel  <eric@webkit.org>
2541
2542         Reviewed by Adam Barth.
2543
2544         Rename the rest of the *Tokenizer classes to *DocumentParser
2545         https://bugs.webkit.org/show_bug.cgi?id=40507
2546
2547         * wtf/Platform.h:
2548          - fixed a comment to match new names.
2549
2550 2010-06-11  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
2551
2552         Reviewed by Simon Hausmann.
2553
2554         [Qt] Explicit conversions from QtScript types to JSC opaque types were removed.
2555         https://bugs.webkit.org/show_bug.cgi?id=40412
2556
2557         Conversion between a JSC C types and a QtScript private types, takes
2558         main part of the source code. In most cases a mapping between the types
2559         is one to one. New cast operators were added to simplify the code.
2560
2561         The QScriptValuePrivate could be casted to the JSValueRef and the JSObjectRef.
2562         The QScriptEnginePrivate could be casted to the JSGlobalContext.
2563         The QScriptProgramPrivate could be casted to the JSStringRef.
2564
2565         * qt/api/qscriptengine_p.cpp:
2566         (QScriptEnginePrivate::evaluate):
2567         (QScriptEnginePrivate::newObject):
2568         (QScriptEnginePrivate::globalObject):
2569         * qt/api/qscriptengine_p.h:
2570         (QScriptEnginePrivate::operator JSGlobalContextRef):
2571         * qt/api/qscriptprogram_p.h:
2572         (QScriptProgramPrivate::operator JSStringRef):
2573         * qt/api/qscriptsyntaxcheckresult.cpp:
2574         (QScriptSyntaxCheckResultPrivate::~QScriptSyntaxCheckResultPrivate):
2575         (QScriptSyntaxCheckResultPrivate::errorMessage):
2576         (QScriptSyntaxCheckResultPrivate::errorLineNumber):
2577         * qt/api/qscriptvalue_p.h:
2578         (QScriptValuePrivate::~QScriptValuePrivate):
2579         (QScriptValuePrivate::QScriptValuePrivate):
2580         (QScriptValuePrivate::isBool):
2581         (QScriptValuePrivate::isNumber):
2582         (QScriptValuePrivate::isNull):
2583         (QScriptValuePrivate::isString):
2584         (QScriptValuePrivate::isUndefined):
2585         (QScriptValuePrivate::isFunction):
2586         (QScriptValuePrivate::toString):
2587         (QScriptValuePrivate::toNumber):
2588         (QScriptValuePrivate::toBool):
2589         (QScriptValuePrivate::toObject):
2590         (QScriptValuePrivate::equals):
2591         (QScriptValuePrivate::strictlyEquals):
2592         (QScriptValuePrivate::instanceOf):
2593         (QScriptValuePrivate::call):
2594         (QScriptValuePrivate::operator JSValueRef):
2595         (QScriptValuePrivate::operator JSObjectRef):
2596         (QScriptValuePrivate::setValue):
2597         (QScriptValuePrivate::inherits):
2598         (QScriptValuePrivate::refinedJSValue):
2599
2600 2010-05-31  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
2601
2602         Reviewed by Simon Hausmann.
2603
2604         [Qt] Implement the simple text code path.
2605         https://bugs.webkit.org/show_bug.cgi?id=40077
2606
2607         Remove the FONT_FAST_PATH macro and use the Qt's
2608         fast text implementation instead of the one of WebKit.
2609
2610         The Qt::TextBypassShaping flag is used to tell Qt to
2611         only use the glyph advances.
2612
2613         Qt 4.7 is needed to get this flag thus the complex path is always
2614         used if QtWebKit is compiled against an earlier version.
2615
2616         Contrary to the WebKit's implementation, the complex code path
2617         is taken if the text is RightToLeft, justified or is formatted
2618         with non-zero letter or word spacing.
2619
2620         * wtf/Platform.h:
2621
2622 2010-06-11  Luiz Agostini  <luiz.agostini@openbossa.org>
2623
2624         Reviewed by Kenneth Rohde Christiansen.
2625
2626         add codePointCompare to JavaScriptCore.exp
2627         https://bugs.webkit.org/show_bug.cgi?id=40426
2628
2629         * JavaScriptCore.exp:
2630
2631 2010-06-10  Oliver Hunt  <oliver@apple.com>
2632
2633         Reviewed by Maciej Stachowiak.
2634
2635         Math Javascript Bug on Safari 5 (webkit 533.16) under "32bit" mode
2636         https://bugs.webkit.org/show_bug.cgi?id=40367
2637
2638         If we're in the slow case of right shift we must write the type tag as
2639         the only reason we hit this code path is because we know we're working
2640         with a double.  eg. we are guaranteed that the tag cannot be reused.
2641
2642         * jit/JITArithmetic32_64.cpp:
2643         (JSC::JIT::emitRightShiftSlowCase):
2644
2645 2010-06-10  Kwang Yul Seo  <skyul@company100.net>
2646
2647         Reviewed by Eric Seidel.
2648
2649         Remove weakRandomNumber
2650         https://bugs.webkit.org/show_bug.cgi?id=40291
2651
2652         weakRandomNumber is used nowhere. Currently, WeakRandom is used instead.
2653
2654         * wtf/RandomNumber.cpp:
2655         * wtf/RandomNumber.h:
2656
2657 2010-06-09  Alexey Proskuryakov  <ap@apple.com>
2658
2659         Reviewed by Brady Eidson.
2660
2661         Export StringImpl::ascii(). It might be not very useful, but it's a public function.
2662
2663         * JavaScriptCore.exp:
2664
2665 2010-06-09  Leandro Pereira  <leandro@profusion.mobi>
2666
2667         Reviewed by Adam Treat.
2668
2669         [EFL] Allow building core libraries as shared objects to speed up
2670         linking time on machines with small amounts of memory.
2671         http://webkit.org/b/39899
2672
2673         * CMakeLists.txt: If building with shared core, install the lib.
2674         * jsc/CMakeListsEfl.txt: Needs Glib and Ecore to link dynamically.
2675         * wtf/CMakeLists.txt: If building with shared core, install the lib.
2676
2677 2010-06-09  Gabor Loki  <loki@webkit.org>
2678
2679         Reviewed by David Levin.
2680
2681         Remove some unused variable warnings from JITOpcodes
2682         https://bugs.webkit.org/show_bug.cgi?id=40298
2683
2684         * jit/JITOpcodes.cpp:
2685         (JSC::JIT::privateCompileCTINativeCall):
2686         * jit/JITOpcodes32_64.cpp:
2687         (JSC::JIT::privateCompileCTINativeCall):
2688
2689 2010-05-18  Yuzo Fujishima  <yuzo@google.com>
2690
2691         Reviewed by Shinichiro Hamaji.
2692
2693         Fix for Bug 34529 -  [CSSOM] issues with cssText and selectorText
2694         Add U16_LENGTH that is needed to implement CSS character serialization.
2695         https://bugs.webkit.org/show_bug.cgi?id=34529
2696
2697         * wtf/unicode/qt4/UnicodeQt4.h:
2698         * wtf/unicode/wince/UnicodeWince.h:
2699
2700 2010-06-08  Sheriff Bot  <webkit.review.bot@gmail.com>
2701
2702         Unreviewed, rolling out r60830.
2703         http://trac.webkit.org/changeset/60830
2704         https://bugs.webkit.org/show_bug.cgi?id=40305
2705
2706         Broke the Windows build (Requested by abarth on #webkit).
2707
2708         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
2709         * wtf/OwnPtrCommon.h:
2710         * wtf/brew/OwnPtrBrew.h: Removed.
2711         * wtf/win/OwnPtrWin.h: Removed.
2712
2713 2010-06-08  MORITA Hajime  <morrita@google.com>
2714
2715         Unreviewed. An attempt to fix test break.
2716
2717         * Configurations/FeatureDefines.xcconfig:
2718
2719 2010-06-08  Kwang Yul Seo  <skyul@company100.net>
2720
2721         Reviewed by Adam Barth.
2722
2723         Change OwnPtrCommon to include platform-specific headers
2724         https://bugs.webkit.org/show_bug.cgi?id=40279
2725
2726         Adding new type to OwnPtrCommon needlessly causes all ports to do full rebuilds.
2727         Change OwnPtrCommon to include platform-specific headers to avoid all ports rebuilds.
2728
2729         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
2730         * wtf/OwnPtrCommon.h:
2731         * wtf/brew/OwnPtrBrew.h: Added.
2732         * wtf/win/OwnPtrWin.h: Added.
2733
2734 2010-06-07  MORITA Hajime  <morrita@google.com>
2735         
2736         Reviewed by Kent Tamura.
2737
2738         https://bugs.webkit.org/show_bug.cgi?id=40219
2739         [Mac] ENABLE_METER_TAG should be enabled
2740         
2741         Added ENABLE_METER_TAG.
2742
2743         * Configurations/FeatureDefines.xcconfig:
2744
2745 2010-06-07  Kwang Yul Seo  <skyul@company100.net>
2746
2747         Reviewed by Eric Seidel.
2748
2749         [BREWMP] Add more types to OwnPtr
2750         https://bugs.webkit.org/show_bug.cgi?id=39667
2751
2752         Add ISSL and ISocket to the list of OwnPtr-ed type.
2753
2754         * wtf/OwnPtrCommon.h:
2755         * wtf/brew/OwnPtrBrew.cpp:
2756         (WTF::deleteOwnedPtr):
2757
2758 2010-06-07  Benjamin Poulain  <benjamin.poulain@nokia.com>
2759
2760         Reviewed by Simon Hausmann.
2761
2762         [Qt] Crash when compiling on Snow Leopard and running on Leopard
2763         https://bugs.webkit.org/show_bug.cgi?id=31403
2764
2765         Disable the use of pthread_setname_np and other symbols
2766         when targetting Leopard.
2767
2768         Use the defines TARGETING_XX instead of BUILDING_ON_XX 
2769         for features that cannot be used before Snow Leopard.
2770
2771         * wtf/Platform.h:
2772
2773 2010-06-07  Gabor Loki  <loki@webkit.org>
2774
2775         Reviewed by NOBODY (JSVALUE32_64 build fix).
2776
2777         * jit/JITOpcodes32_64.cpp:
2778         (JSC::JIT::privateCompileCTINativeCall):
2779
2780 2010-06-06  Gavin Barraclough  <barraclough@apple.com>
2781
2782         Reviewed by NOBODY (windows build fix pt 2).
2783
2784         * JavaScriptCore.exp:
2785         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2786
2787 2010-06-06  Gavin Barraclough  <barraclough@apple.com>
2788
2789         Reviewed by NOBODY (windows build fix pt 1).
2790
2791         * JavaScriptCore.exp:
2792         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2793
2794 2010-06-06  Gavin Barraclough  <barraclough@apple.com>
2795
2796         Reviewed by Sam Weinig.
2797
2798         Bug 40214 - Clean up error construction / throwing in JSC.
2799         
2800         The one egregious insanity here is that creating an error requires
2801         a VM-entry-esqe-host call (the string argument is wrapped as a JS
2802         object & pushed on the RegisterFile, then unwrapped back to a
2803         UString).  Changing this also means you only require a global
2804         object, not an ExecState, to create an error.
2805
2806         The methods to create error objects are also parameterized
2807         requiring a switch on the type, which can be made cleaner and
2808         faster by moving to a separate method per error type.  Code to add
2809         divot information to error had been duplicated, and is coalesced
2810         back into a single function.
2811
2812         Convenience methods added to create & throw type & syntax error
2813         with a default error message, since this is a common case.
2814
2815         Also, errors are currently thrown either using
2816         "throwError(exec, error)" or "exec->setException(error)" - unify
2817         on the former, since this is more commonly used.  Add
2818         "throwVMError(exec, error)" equivalents, as a convenience for
2819         cases where the result was being wrapped in "JSValue::encode(...)".
2820
2821         * API/JSCallbackConstructor.cpp:
2822         (JSC::constructJSCallback):
2823         * API/JSCallbackFunction.cpp:
2824         (JSC::JSCallbackFunction::call):
2825         * API/JSCallbackObjectFunctions.h:
2826         (JSC::::getOwnPropertySlot):
2827         (JSC::::put):
2828         (JSC::::deleteProperty):
2829         (JSC::::construct):
2830         (JSC::::hasInstance):
2831         (JSC::::call):
2832         (JSC::::toNumber):
2833         (JSC::::toString):
2834         (JSC::::staticValueGetter):
2835         (JSC::::staticFunctionGetter):
2836         (JSC::::callbackGetter):
2837         * API/JSObjectRef.cpp:
2838         (JSObjectMakeError):
2839         * JavaScriptCore.exp:
2840         * bytecompiler/BytecodeGenerator.cpp:
2841         (JSC::BytecodeGenerator::emitNewError):
2842         (JSC::BytecodeGenerator::emitThrowExpressionTooDeepException):
2843         * bytecompiler/BytecodeGenerator.h:
2844         * bytecompiler/NodesCodegen.cpp:
2845         (JSC::ThrowableExpressionData::emitThrowError):
2846         (JSC::RegExpNode::emitBytecode):
2847         (JSC::PostfixErrorNode::emitBytecode):
2848         (JSC::PrefixErrorNode::emitBytecode):
2849         (JSC::AssignErrorNode::emitBytecode):
2850         (JSC::ForInNode::emitBytecode):
2851         (JSC::ContinueNode::emitBytecode):
2852         (JSC::BreakNode::emitBytecode):
2853         (JSC::ReturnNode::emitBytecode):
2854         (JSC::LabelNode::emitBytecode):
2855         * interpreter/CallFrame.h:
2856         * interpreter/Interpreter.cpp:
2857         (JSC::Interpreter::throwException):
2858         (JSC::Interpreter::privateExecute):
2859         * jit/JITStubs.cpp:
2860         (JSC::DEFINE_STUB_FUNCTION):
2861         * jsc.cpp:
2862         (functionRun):
2863         (functionLoad):
2864         (functionCheckSyntax):
2865         * parser/Nodes.h:
2866         * runtime/ArrayConstructor.cpp:
2867         (JSC::constructArrayWithSizeQuirk):
2868         * runtime/ArrayPrototype.cpp:
2869         (JSC::arrayProtoFuncToString):
2870         (JSC::arrayProtoFuncToLocaleString):
2871         (JSC::arrayProtoFuncJoin):
2872         (JSC::arrayProtoFuncFilter):
2873         (JSC::arrayProtoFuncMap):
2874         (JSC::arrayProtoFuncEvery):
2875         (JSC::arrayProtoFuncForEach):
2876         (JSC::arrayProtoFuncSome):
2877         (JSC::arrayProtoFuncReduce):
2878         (JSC::arrayProtoFuncReduceRight):
2879         * runtime/BooleanPrototype.cpp:
2880         (JSC::booleanProtoFuncToString):
2881         (JSC::booleanProtoFuncValueOf):
2882         * runtime/DatePrototype.cpp:
2883         (JSC::dateProtoFuncToString):
2884         (JSC::dateProtoFuncToUTCString):
2885         (JSC::dateProtoFuncToISOString):
2886         (JSC::dateProtoFuncToDateString):
2887         (JSC::dateProtoFuncToTimeString):
2888         (JSC::dateProtoFuncToLocaleString):
2889         (JSC::dateProtoFuncToLocaleDateString):
2890         (JSC::dateProtoFuncToLocaleTimeString):
2891         (JSC::dateProtoFuncGetTime):
2892         (JSC::dateProtoFuncGetFullYear):
2893         (JSC::dateProtoFuncGetUTCFullYear):
2894         (JSC::dateProtoFuncToGMTString):
2895         (JSC::dateProtoFuncGetMonth):
2896         (JSC::dateProtoFuncGetUTCMonth):
2897         (JSC::dateProtoFuncGetDate):
2898         (JSC::dateProtoFuncGetUTCDate):
2899         (JSC::dateProtoFuncGetDay):
2900         (JSC::dateProtoFuncGetUTCDay):
2901         (JSC::dateProtoFuncGetHours):
2902         (JSC::dateProtoFuncGetUTCHours):
2903         (JSC::dateProtoFuncGetMinutes):
2904         (JSC::dateProtoFuncGetUTCMinutes):
2905         (JSC::dateProtoFuncGetSeconds):
2906         (JSC::dateProtoFuncGetUTCSeconds):
2907         (JSC::dateProtoFuncGetMilliSeconds):
2908         (JSC::dateProtoFuncGetUTCMilliseconds):
2909         (JSC::dateProtoFuncGetTimezoneOffset):
2910         (JSC::dateProtoFuncSetTime):
2911         (JSC::setNewValueFromTimeArgs):
2912         (JSC::setNewValueFromDateArgs):
2913         (JSC::dateProtoFuncSetMilliSeconds):
2914         (JSC::dateProtoFuncSetUTCMilliseconds):
2915         (JSC::dateProtoFuncSetSeconds):
2916         (JSC::dateProtoFuncSetUTCSeconds):
2917         (JSC::dateProtoFuncSetMinutes):
2918         (JSC::dateProtoFuncSetUTCMinutes):
2919         (JSC::dateProtoFuncSetHours):
2920         (JSC::dateProtoFuncSetUTCHours):
2921         (JSC::dateProtoFuncSetDate):
2922         (JSC::dateProtoFuncSetUTCDate):
2923         (JSC::dateProtoFuncSetMonth):
2924         (JSC::dateProtoFuncSetUTCMonth):
2925         (JSC::dateProtoFuncSetFullYear):
2926         (JSC::dateProtoFuncSetUTCFullYear):
2927         (JSC::dateProtoFuncSetYear):
2928         (JSC::dateProtoFuncGetYear):
2929         (JSC::dateProtoFuncToJSON):
2930         * runtime/Error.cpp:
2931         (JSC::createError):
2932         (JSC::createEvalError):
2933         (JSC::createRangeError):
2934         (JSC::createReferenceError):
2935         (JSC::createSyntaxError):
2936         (JSC::createTypeError):
2937         (JSC::createURIError):
2938         (JSC::addErrorSourceInfo):
2939         (JSC::addErrorDivotInfo):
2940         (JSC::addErrorInfo):
2941         (JSC::hasErrorInfo):
2942         (JSC::throwError):
2943         (JSC::throwTypeError):
2944         (JSC::throwSyntaxError):
2945         * runtime/Error.h:
2946         (JSC::throwVMError):
2947         (JSC::throwVMTypeError):
2948         * runtime/ErrorConstructor.cpp:
2949         (JSC::constructWithErrorConstructor):
2950         (JSC::callErrorConstructor):
2951         * runtime/ErrorConstructor.h:
2952         * runtime/ErrorInstance.cpp:
2953         (JSC::ErrorInstance::ErrorInstance):
2954         (JSC::ErrorInstance::create):
2955         * runtime/ErrorInstance.h:
2956         * runtime/ErrorPrototype.cpp:
2957         (JSC::ErrorPrototype::ErrorPrototype):
2958         * runtime/ExceptionHelpers.cpp:
2959         (JSC::createStackOverflowError):
2960         (JSC::createUndefinedVariableError):
2961         (JSC::createInvalidParamError):
2962         (JSC::createNotAConstructorError):
2963         (JSC::createNotAFunctionError):
2964         (JSC::createNotAnObjectError):
2965         (JSC::throwOutOfMemoryError):
2966         * runtime/ExceptionHelpers.h:
2967         * runtime/Executable.cpp:
2968         (JSC::EvalExecutable::compile):
2969         (JSC::ProgramExecutable::checkSyntax):
2970         (JSC::ProgramExecutable::compile):
2971         * runtime/FunctionConstructor.cpp:
2972         (JSC::constructFunction):
2973         * runtime/FunctionPrototype.cpp:
2974         (JSC::functionProtoFuncToString):
2975         (JSC::functionProtoFuncApply):
2976         (JSC::functionProtoFuncCall):
2977         * runtime/Identifier.cpp:
2978         (JSC::Identifier::from):
2979         * runtime/Identifier.h:
2980         * runtime/JSArray.cpp:
2981         (JSC::JSArray::put):
2982         * runtime/JSFunction.cpp:
2983         (JSC::callHostFunctionAsConstructor):
2984         * runtime/JSGlobalObjectFunctions.cpp:
2985         (JSC::encode):
2986         (JSC::decode):
2987         (JSC::globalFuncEval):
2988         * runtime/JSONObject.cpp:
2989         (JSC::Stringifier::appendStringifiedValue):
2990         (JSC::Walker::walk):
2991         (JSC::JSONProtoFuncParse):
2992         (JSC::JSONProtoFuncStringify):
2993         * runtime/JSObject.cpp:
2994         (JSC::throwSetterError):
2995         (JSC::JSObject::put):
2996         (JSC::JSObject::putWithAttributes):
2997         (JSC::JSObject::defaultValue):
2998         (JSC::JSObject::hasInstance):
2999         (JSC::JSObject::defineOwnProperty):
3000         * runtime/JSObject.h:
3001         * runtime/JSValue.cpp:
3002         (JSC::JSValue::toObjectSlowCase):
3003         (JSC::JSValue::synthesizeObject):
3004         (JSC::JSValue::synthesizePrototype):
3005         * runtime/NativeErrorConstructor.cpp:
3006         (JSC::constructWithNativeErrorConstructor):
3007         (JSC::callNativeErrorConstructor):
3008         * runtime/NativeErrorConstructor.h:
3009         * runtime/NumberPrototype.cpp:
3010         (JSC::numberProtoFuncToString):
3011         (JSC::numberProtoFuncToLocaleString):
3012         (JSC::numberProtoFuncValueOf):
3013         (JSC::numberProtoFuncToFixed):
3014         (JSC::numberProtoFuncToExponential):
3015         (JSC::numberProtoFuncToPrecision):
3016         * runtime/ObjectConstructor.cpp:
3017         (JSC::objectConstructorGetPrototypeOf):
3018         (JSC::objectConstructorGetOwnPropertyDescriptor):
3019         (JSC::objectConstructorGetOwnPropertyNames):
3020         (JSC::objectConstructorKeys):
3021         (JSC::toPropertyDescriptor):
3022         (JSC::objectConstructorDefineProperty):
3023         (JSC::objectConstructorDefineProperties):
3024         (JSC::objectConstructorCreate):
3025         * runtime/ObjectPrototype.cpp:
3026         (JSC::objectProtoFuncDefineGetter):
3027         (JSC::objectProtoFuncDefineSetter):
3028         * runtime/RegExpConstructor.cpp:
3029         (JSC::constructRegExp):
3030         * runtime/RegExpObject.cpp:
3031         (JSC::RegExpObject::match):
3032         * runtime/RegExpPrototype.cpp:
3033         (JSC::regExpProtoFuncTest):
3034         (JSC::regExpProtoFuncExec):
3035         (JSC::regExpProtoFuncCompile):
3036         (JSC::regExpProtoFuncToString):
3037         * runtime/StringPrototype.cpp:
3038         (JSC::stringProtoFuncToString):
3039
3040 2010-06-05  Kwang Yul Seo  <skyul@company100.net>
3041
3042         Reviewed by Eric Seidel.
3043
3044         [BREWMP] Add PLATFORM(BREWMP) guard for using std::xxx
3045         https://bugs.webkit.org/show_bug.cgi?id=39710
3046
3047         Build fix for BREW MP.
3048
3049         * wtf/MathExtras.h:
3050
3051 2010-06-04  Adam Barth  <abarth@webkit.org>
3052
3053         Reviewed by Darin Adler.
3054
3055         HTML5 parser should be within 1% of old parser performance
3056         https://bugs.webkit.org/show_bug.cgi?id=40172
3057
3058         Fix cast in this operator= to allow for assignment between vectors with
3059         different inline capacities (as clearly intended by its author).
3060
3061         * wtf/Vector.h:
3062         (WTF::::operator):
3063
3064 2010-06-04  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
3065
3066         Reviewed by Kenneth Rohde Christiansen.
3067
3068         New QtScript API; QScriptValue::instanceOf.
3069
3070         New function create an easy way to check value's prototype hierarchy.
3071
3072         [Qt] QScriptValue should have an instanceOf method
3073         https://bugs.webkit.org/show_bug.cgi?id=40120
3074
3075         * qt/api/qscriptvalue.cpp:
3076         (QScriptValue::instanceOf):
3077         * qt/api/qscriptvalue.h:
3078         * qt/api/qscriptvalue_p.h:
3079         (QScriptValuePrivate::instanceOf):
3080         * qt/tests/qscriptvalue/tst_qscriptvalue.h:
3081         * qt/tests/qscriptvalue/tst_qscriptvalue_generated_comparison.cpp:
3082         (tst_QScriptValue::instanceOf_initData):
3083         (tst_QScriptValue::instanceOf_makeData):
3084         (tst_QScriptValue::instanceOf_test):
3085
3086 2010-06-04  Gavin Barraclough  <barraclough@apple.com>
3087
3088         Reviewed by NOBODY (interpreter build fix).
3089
3090         * interpreter/Interpreter.cpp:
3091         (JSC::Interpreter::privateExecute):
3092
3093 2010-06-04  Mark Rowe  <mrowe@apple.com>
3094
3095         Silence some warnings seen on the build bot.
3096
3097         * JavaScriptCore.JSVALUE32_64only.exp: Add a trailing newline.
3098         * JavaScriptCore.JSVALUE32only.exp: Ditto.
3099         * JavaScriptCore.JSVALUE64only.exp: Ditto.
3100         * JavaScriptCore.xcodeproj/project.pbxproj: Remove the .exp files from all targets so that Xcode doesn't
3101         complain about not knowing how to compile them.
3102
3103 2010-06-04  Gavin Barraclough  <barraclough@apple.com>
3104
3105         Reviewed by Oliver Hunt.
3106
3107         Bug 40187 - Change function signature of NativeConstructor to match NativeFunction
3108
3109         Mostly for consistency, but constructor & args arguments are redundant,
3110         and this will help if we wish to be able to JIT calls to more constructors.
3111
3112         * API/JSCallbackConstructor.cpp:
3113         (JSC::constructJSCallback):
3114         * API/JSCallbackObject.h:
3115         * API/JSCallbackObjectFunctions.h:
3116         (JSC::::construct):
3117         * interpreter/Interpreter.cpp:
3118         (JSC::Interpreter::executeConstruct):
3119         * interpreter/Interpreter.h:
3120         * jit/JITStubs.cpp:
3121         (JSC::DEFINE_STUB_FUNCTION):
3122         * runtime/ArrayConstructor.cpp:
3123         (JSC::constructWithArrayConstructor):
3124         * runtime/BooleanConstructor.cpp:
3125         (JSC::constructWithBooleanConstructor):
3126         * runtime/ConstructData.cpp:
3127         (JSC::construct):
3128         * runtime/ConstructData.h:
3129         * runtime/DateConstructor.cpp:
3130         (JSC::constructWithDateConstructor):
3131         * runtime/Error.cpp:
3132         (JSC::constructNativeError):
3133         (JSC::Error::create):
3134         * runtime/ErrorConstructor.cpp:
3135         (JSC::constructWithErrorConstructor):
3136         * runtime/FunctionConstructor.cpp:
3137         (JSC::constructWithFunctionConstructor):
3138         * runtime/NativeErrorConstructor.cpp:
3139         (JSC::constructWithNativeErrorConstructor):
3140         * runtime/NativeErrorConstructor.h:
3141         (JSC::NativeErrorConstructor::errorStructure):
3142         * runtime/NumberConstructor.cpp:
3143         (JSC::constructWithNumberConstructor):
3144         * runtime/ObjectConstructor.cpp:
3145         (JSC::constructWithObjectConstructor):
3146         * runtime/RegExpConstructor.cpp:
3147         (JSC::constructWithRegExpConstructor):
3148         * runtime/StringConstructor.cpp:
3149         (JSC::constructWithStringConstructor):
3150
3151 2010-06-04  Tony Gentilcore  <tonyg@chromium.org>
3152
3153         Reviewed by Adam Barth.
3154
3155         Add a takeFirst() method to Deque and use it where appropriate.
3156         https://bugs.webkit.org/show_bug.cgi?id=40089
3157
3158         * wtf/Deque.h:
3159         (WTF::::takeFirst):
3160         * wtf/MainThread.cpp:
3161         (WTF::dispatchFunctionsFromMainThread):
3162         * wtf/MessageQueue.h:
3163         (WTF::::tryGetMessage):
3164
3165 2010-06-04  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
3166
3167         Reviewed by Kenneth Rohde Christiansen.
3168
3169         Remove a QEXPECT_FAIL flag from an autotest.
3170
3171         Test tst_QScriptEngine::globalObject pass after 36600 bug
3172         fix have been applied.
3173
3174         [Qt] Expected fail in the tst_QScriptEngine::globalObject should be removed.
3175         https://bugs.webkit.org/show_bug.cgi?id=40114
3176
3177         * qt/tests/qscriptengine/tst_qscriptengine.cpp:
3178         (tst_QScriptEngine::globalObject):
3179
3180 2010-06-04  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
3181
3182         Reviewed by Kenneth Rohde Christiansen.
3183
3184         Fix QScriptValue::equals.
3185
3186         Handling for a few edge cases were added. Now comparison between
3187         NaN, an invalid objects should works as supposed.
3188
3189         [Qt] QScriptValue::equals problems
3190         https://bugs.webkit.org/show_bug.cgi?id=40110
3191
3192         * qt/api/qscriptvalue.cpp:
3193         (QScriptValue::equals):
3194         * qt/api/qscriptvalue_p.h:
3195         (QScriptValuePrivate::equals):
3196         * qt/tests/qscriptvalue/tst_qscriptvalue.h:
3197         * qt/tests/qscriptvalue/tst_qscriptvalue_generated_comparison.cpp:
3198         (tst_QScriptValue::equals_initData):
3199         (tst_QScriptValue::equals_makeData):
3200         (tst_QScriptValue::equals_test):
3201
3202 2010-06-03  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
3203
3204         Reviewed by Kenneth Rohde Christiansen.
3205
3206         New states in QScriptValuePrivate.
3207
3208         The CSpecial state was divided into CNull and CUndefined. It simplify
3209         the QScriptValue code by avoiding a few "cast" and "if".
3210         Moreover the MSVS compiler didn't like casting between a double and an
3211         enum which is avoided now.
3212
3213         [Qt] The QScriptValuePrivate::CSpecial is too generic.
3214         https://bugs.webkit.org/show_bug.cgi?id=40067
3215
3216         * qt/api/qscriptvalue_p.h:
3217         (QScriptValuePrivate::):
3218         (QScriptValuePrivate::QScriptValuePrivate):
3219         (QScriptValuePrivate::isNull):
3220         (QScriptValuePrivate::isUndefined):
3221         (QScriptValuePrivate::toString):
3222         (QScriptValuePrivate::toNumber):
3223         (QScriptValuePrivate::toBool):
3224         (QScriptValuePrivate::toObject):
3225         (QScriptValuePrivate::assignEngine):
3226         (QScriptValuePrivate::isNumberBased):
3227
3228 2010-06-03  Gavin Barraclough  <barraclough@apple.com>
3229
3230         Reviewed by NOBODY (Qt build fix).
3231
3232         * wtf/Platform.h:
3233
3234 2010-06-03  Gavin Barraclough  <barraclough@apple.com>
3235
3236         Reviewed by Mark Rowe.
3237
3238         Bug 40150 - ENABLE_JIT_OPTIMIZE_NATIVE_CALL on all x86/x86_64 platforms
3239         This was fixed in bug #40094.
3240
3241         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3242         * wtf/Platform.h:
3243
3244 2010-06-03  Gavin Barraclough  <barraclough@apple.com>
3245
3246         Reviewed by NOBODY (Interpreter build fix).
3247
3248         * JavaScriptCore.JSVALUE32_64only.exp:
3249         * JavaScriptCore.JSVALUE32only.exp:
3250         * JavaScriptCore.JSVALUE64only.exp:
3251         * interpreter/Interpreter.cpp:
3252         (JSC::Interpreter::privateExecute):
3253
3254 2010-06-03  Gavin Barraclough  <barraclough@apple.com>
3255
3256         Reviewed by NOBODY (windows build fix II).
3257
3258         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3259
3260 2010-06-03  Gavin Barraclough  <barraclough@apple.com>
3261
3262         Reviewed by NOBODY (windows build fix).
3263
3264         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3265
3266 2010-06-02  Gavin Barraclough  <barraclough@apple.com>
3267
3268         Reviewed by Oliver Hunt.
3269
3270         Bug 40094 - The return type of NativeFunction should be EncodedJSValue
3271         On Windows & Linux, using JSVALUE32_64, EncodedJSValue is returned in registers, but JSValue is not.
3272
3273         * API/JSCallbackFunction.cpp:
3274         (JSC::JSCallbackFunction::call):
3275         * API/JSCallbackFunction.h:
3276         * API/JSCallbackObject.h:
3277         * API/JSCallbackObjectFunctions.h:
3278         (JSC::::call):
3279         * JavaScriptCore.exp:
3280         * interpreter/Interpreter.cpp:
3281         (JSC::Interpreter::executeCall):
3282         * jit/JITStubs.cpp:
3283         (JSC::DEFINE_STUB_FUNCTION):
3284         * jit/JITStubs.h:
3285         * jsc.cpp:
3286         (functionPrint):
3287         (functionDebug):
3288         (functionGC):
3289         (functionVersion):
3290         (functionRun):
3291         (functionLoad):
3292         (functionCheckSyntax):
3293         (functionSetSamplingFlags):
3294         (functionClearSamplingFlags):
3295         (functionReadline):
3296         (functionQuit):
3297         * runtime/ArrayConstructor.cpp:
3298         (JSC::callArrayConstructor):
3299         (JSC::arrayConstructorIsArray):
3300         * runtime/ArrayPrototype.cpp:
3301         (JSC::arrayProtoFuncToString):
3302         (JSC::arrayProtoFuncToLocaleString):
3303         (JSC::arrayProtoFuncJoin):
3304         (JSC::arrayProtoFuncConcat):
3305         (JSC::arrayProtoFuncPop):
3306         (JSC::arrayProtoFuncPush):
3307         (JSC::arrayProtoFuncReverse):
3308         (JSC::arrayProtoFuncShift):
3309         (JSC::arrayProtoFuncSlice):
3310         (JSC::arrayProtoFuncSort):
3311         (JSC::arrayProtoFuncSplice):
3312         (JSC::arrayProtoFuncUnShift):
3313         (JSC::arrayProtoFuncFilter):
3314         (JSC::arrayProtoFuncMap):
3315         (JSC::arrayProtoFuncEvery):
3316         (JSC::arrayProtoFuncForEach):
3317         (JSC::arrayProtoFuncSome):
3318         (JSC::arrayProtoFuncReduce):
3319         (JSC::arrayProtoFuncReduceRight):
3320         (JSC::arrayProtoFuncIndexOf):
3321         (JSC::arrayProtoFuncLastIndexOf):
3322         * runtime/BooleanConstructor.cpp:
3323         (JSC::callBooleanConstructor):
3324         * runtime/BooleanPrototype.cpp:
3325         (JSC::booleanProtoFuncToString):
3326         (JSC::booleanProtoFuncValueOf):
3327         * runtime/CallData.h:
3328         * runtime/DateConstructor.cpp:
3329         (JSC::callDate):
3330         (JSC::dateParse):
3331         (JSC::dateNow):
3332         (JSC::dateUTC):
3333         * runtime/DatePrototype.cpp:
3334         (JSC::dateProtoFuncToString):
3335         (JSC::dateProtoFuncToUTCString):
3336         (JSC::dateProtoFuncToISOString):
3337         (JSC::dateProtoFuncToDateString):
3338         (JSC::dateProtoFuncToTimeString):
3339         (JSC::dateProtoFuncToLocaleString):
3340         (JSC::dateProtoFuncToLocaleDateString):
3341         (JSC::dateProtoFuncToLocaleTimeString):
3342         (JSC::dateProtoFuncGetTime):
3343         (JSC::dateProtoFuncGetFullYear):
3344         (JSC::dateProtoFuncGetUTCFullYear):
3345         (JSC::dateProtoFuncToGMTString):
3346         (JSC::dateProtoFuncGetMonth):
3347         (JSC::dateProtoFuncGetUTCMonth):
3348         (JSC::dateProtoFuncGetDate):
3349         (JSC::dateProtoFuncGetUTCDate):
3350         (JSC::dateProtoFuncGetDay):
3351         (JSC::dateProtoFuncGetUTCDay):
3352         (JSC::dateProtoFuncGetHours):
3353         (JSC::dateProtoFuncGetUTCHours):
3354         (JSC::dateProtoFuncGetMinutes):
3355         (JSC::dateProtoFuncGetUTCMinutes):
3356         (JSC::dateProtoFuncGetSeconds):
3357         (JSC::dateProtoFuncGetUTCSeconds):
3358         (JSC::dateProtoFuncGetMilliSeconds):
3359         (JSC::dateProtoFuncGetUTCMilliseconds):
3360         (JSC::dateProtoFuncGetTimezoneOffset):
3361         (JSC::dateProtoFuncSetTime):
3362         (JSC::dateProtoFuncSetMilliSeconds):
3363         (JSC::dateProtoFuncSetUTCMilliseconds):
3364         (JSC::dateProtoFuncSetSeconds):
3365         (JSC::dateProtoFuncSetUTCSeconds):
3366         (JSC::dateProtoFuncSetMinutes):
3367         (JSC::dateProtoFuncSetUTCMinutes):
3368         (JSC::dateProtoFuncSetHours):
3369         (JSC::dateProtoFuncSetUTCHours):
3370         (JSC::dateProtoFuncSetDate):
3371         (JSC::dateProtoFuncSetUTCDate):
3372         (JSC::dateProtoFuncSetMonth):
3373         (JSC::dateProtoFuncSetUTCMonth):
3374         (JSC::dateProtoFuncSetFullYear):
3375         (JSC::dateProtoFuncSetUTCFullYear):
3376         (JSC::dateProtoFuncSetYear):
3377         (JSC::dateProtoFuncGetYear):
3378         (JSC::dateProtoFuncToJSON):
3379         * runtime/ErrorConstructor.cpp:
3380         (JSC::callErrorConstructor):
3381         * runtime/ErrorPrototype.cpp:
3382         (JSC::errorProtoFuncToString):
3383         * runtime/FunctionConstructor.cpp:
3384         (JSC::callFunctionConstructor):
3385         * runtime/FunctionPrototype.cpp:
3386         (JSC::callFunctionPrototype):
3387         (JSC::functionProtoFuncToString):
3388         (JSC::functionProtoFuncApply):
3389         (JSC::functionProtoFuncCall):
3390         * runtime/JSCell.h:
3391         (JSC::getCallData):
3392         (JSC::getConstructData):
3393         * runtime/JSFunction.cpp:
3394         (JSC::callHostFunctionAsConstructor):
3395         * runtime/JSFunction.h:
3396         * runtime/JSGlobalObjectFunctions.cpp:
3397         (JSC::globalFuncEval):
3398         (JSC::globalFuncParseInt):
3399         (JSC::globalFuncParseFloat):
3400         (JSC::globalFuncIsNaN):
3401         (JSC::globalFuncIsFinite):
3402         (JSC::globalFuncDecodeURI):
3403         (JSC::globalFuncDecodeURIComponent):
3404         (JSC::globalFuncEncodeURI):
3405         (JSC::globalFuncEncodeURIComponent):
3406         (JSC::globalFuncEscape):
3407         (JSC::globalFuncUnescape):
3408         (JSC::globalFuncJSCPrint):
3409         * runtime/JSGlobalObjectFunctions.h:
3410         * runtime/JSONObject.cpp:
3411         (JSC::JSONProtoFuncParse):
3412         (JSC::JSONProtoFuncStringify):
3413         * runtime/JSObject.cpp:
3414         (JSC::callDefaultValueFunction):
3415         * runtime/JSValue.h:
3416         * runtime/MathObject.cpp:
3417         (JSC::mathProtoFuncAbs):
3418         (JSC::mathProtoFuncACos):
3419         (JSC::mathProtoFuncASin):
3420         (JSC::mathProtoFuncATan):
3421         (JSC::mathProtoFuncATan2):
3422         (JSC::mathProtoFuncCeil):
3423         (JSC::mathProtoFuncCos):
3424         (JSC::mathProtoFuncExp):
3425         (JSC::mathProtoFuncFloor):
3426         (JSC::mathProtoFuncLog):
3427         (JSC::mathProtoFuncMax):
3428         (JSC::mathProtoFuncMin):
3429         (JSC::mathProtoFuncPow):
3430         (JSC::mathProtoFuncRandom):
3431         (JSC::mathProtoFuncRound):
3432         (JSC::mathProtoFuncSin):
3433         (JSC::mathProtoFuncSqrt):
3434         (JSC::mathProtoFuncTan):
3435         * runtime/NativeErrorConstructor.cpp:
3436         (JSC::callNativeErrorConstructor):
3437         * runtime/NumberConstructor.cpp:
3438         (JSC::callNumberConstructor):
3439         * runtime/NumberPrototype.cpp:
3440         (JSC::numberProtoFuncToString):
3441         (JSC::numberProtoFuncToLocaleString):
3442         (JSC::numberProtoFuncValueOf):
3443         (JSC::numberProtoFuncToFixed):
3444         (JSC::numberProtoFuncToExponential):
3445         (JSC::numberProtoFuncToPrecision):
3446         * runtime/ObjectConstructor.cpp:
3447         (JSC::callObjectConstructor):
3448         (JSC::objectConstructorGetPrototypeOf):
3449         (JSC::objectConstructorGetOwnPropertyDescriptor):
3450         (JSC::objectConstructorGetOwnPropertyNames):
3451         (JSC::objectConstructorKeys):
3452         (JSC::toPropertyDescriptor):
3453         (JSC::objectConstructorDefineProperty):
3454         (JSC::objectConstructorDefineProperties):
3455         (JSC::objectConstructorCreate):
3456         * runtime/ObjectPrototype.cpp:
3457         (JSC::objectProtoFuncValueOf):
3458         (JSC::objectProtoFuncHasOwnProperty):
3459         (JSC::objectProtoFuncIsPrototypeOf):
3460         (JSC::objectProtoFuncDefineGetter):
3461         (JSC::objectProtoFuncDefineSetter):
3462         (JSC::objectProtoFuncLookupGetter):
3463         (JSC::objectProtoFuncLookupSetter):
3464         (JSC::objectProtoFuncPropertyIsEnumerable):
3465         (JSC::objectProtoFuncToLocaleString):
3466         (JSC::objectProtoFuncToString):
3467         * runtime/ObjectPrototype.h:
3468         * runtime/RegExpConstructor.cpp:
3469         (JSC::callRegExpConstructor):
3470         * runtime/RegExpObject.cpp:
3471         (JSC::callRegExpObject):
3472         * runtime/RegExpPrototype.cpp:
3473         (JSC::regExpProtoFuncTest):
3474         (JSC::regExpProtoFuncExec):
3475         (JSC::regExpProtoFuncCompile):
3476         (JSC::regExpProtoFuncToString):
3477         * runtime/StringConstructor.cpp:
3478         (JSC::stringFromCharCode):
3479         (JSC::callStringConstructor):
3480         * runtime/StringPrototype.cpp:
3481         (JSC::stringProtoFuncReplace):
3482         (JSC::stringProtoFuncToString):
3483         (JSC::stringProtoFuncCharAt):
3484         (JSC::stringProtoFuncCharCodeAt):
3485         (JSC::stringProtoFuncConcat):
3486         (JSC::stringProtoFuncIndexOf):
3487         (JSC::stringProtoFuncLastIndexOf):
3488         (JSC::stringProtoFuncMatch):
3489         (JSC::stringProtoFuncSearch):
3490         (JSC::stringProtoFuncSlice):
3491         (JSC::stringProtoFuncSplit):
3492         (JSC::stringProtoFuncSubstr):
3493         (JSC::stringProtoFuncSubstring):
3494         (JSC::stringProtoFuncToLowerCase):
3495         (JSC::stringProtoFuncToUpperCase):
3496         (JSC::stringProtoFuncLocaleCompare):
3497         (JSC::stringProtoFuncBig):
3498         (JSC::stringProtoFuncSmall):
3499         (JSC::stringProtoFuncBlink):
3500         (JSC::stringProtoFuncBold):
3501         (JSC::stringProtoFuncFixed):
3502         (JSC::stringProtoFuncItalics):
3503         (JSC::stringProtoFuncStrike):
3504         (JSC::stringProtoFuncSub):
3505         (JSC::stringProtoFuncSup):
3506         (JSC::stringProtoFuncFontcolor):
3507         (JSC::stringProtoFuncFontsize):
3508         (JSC::stringProtoFuncAnchor):
3509         (JSC::stringProtoFuncLink):
3510         (JSC::stringProtoFuncTrim):
3511         (JSC::stringProtoFuncTrimLeft):
3512         (JSC::stringProtoFuncTrimRight):
3513
3514 2010-06-02  Mark Rowe  <mrowe@apple.com>
3515
3516         Reviewed by Gavin Barraclough.
3517
3518         Add value-representation specific sections to the mac export file.
3519
3520         * Configurations/JavaScriptCore.xcconfig:
3521         * DerivedSources.make:
3522         * JavaScriptCore.JSVALUE32_64only.exp: Added.
3523         * JavaScriptCore.JSVALUE32only.exp: Added.
3524         * JavaScriptCore.JSVALUE64only.exp: Added.
3525         * JavaScriptCore.xcodeproj/project.pbxproj:
3526
3527 2010-06-02  Mark Rowe  <mrowe@apple.com>
3528
3529         Reviewed by Gavin Barraclough.
3530
3531         <rdar://problem/8054988> Work around an LLVM GCC code generation bug that results in crashes inside PCRE.
3532
3533         * pcre/pcre_exec.cpp:
3534         (repeatInformationFromInstructionOffset): Change the type of instructionOffset to int.  There's no good
3535         reason for it to be a short, and using int prevents this code from triggering the LLVM GCC bug.
3536
3537 2010-06-02  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
3538
3539         Reviewed by Kenneth Rohde Christiansen.
3540
3541         Fix the QScriptValue::strictlyEquals function.
3542
3543         Handling for a few edge cases was added.
3544
3545         New autotest that covers the QScriptValue::strictlyEquals function.
3546
3547         [Qt] QScriptValue::strictlyEquals is broken
3548         https://bugs.webkit.org/show_bug.cgi?id=36600
3549
3550         * qt/api/qscriptvalue.cpp:
3551         (QScriptValue::strictlyEquals):
3552         * qt/api/qscriptvalue_p.h:
3553         (QScriptValuePrivate::strictlyEquals):
3554         * qt/tests/qscriptvalue/qscriptvalue.pro:
3555         * qt/tests/qscriptvalue/tst_qscriptvalue.h:
3556         * qt/tests/qscriptvalue/tst_qscriptvalue_generated_comparison.cpp: Added.
3557         (tst_QScriptValue::strictlyEquals_initData):
3558         (tst_QScriptValue::strictlyEquals_makeData):
3559         (tst_QScriptValue::strictlyEquals_test):
3560
3561 2010-06-02  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
3562
3563         Reviewed by Kenneth Rohde Christiansen.
3564
3565         New function QScriptEngine::newObject.
3566
3567         The function creates a object of class Object and returns it
3568         as a QScriptValue.
3569
3570         [Qt] QScriptEngine API should contain a newObject function
3571         https://bugs.webkit.org/show_bug.cgi?id=39114
3572
3573         * qt/api/qscriptengine.cpp:
3574         (QScriptEngine::newObject):
3575         * qt/api/qscriptengine.h:
3576         * qt/api/qscriptengine_p.cpp:
3577         (QScriptEnginePrivate::newObject):
3578         * qt/api/qscriptengine_p.h:
3579         * qt/tests/qscriptengine/tst_qscriptengine.cpp:
3580         (tst_QScriptEngine::newObject):
3581
3582 2010-06-02  Gabor Loki  <loki@webkit.org>
3583
3584         Reviewed by Gavin Barraclough.
3585         https://bugs.webkit.org/show_bug.cgi?id=40011
3586
3587         Thumb-2 build fix: The offset parameter of ldrh should be encoded as an
3588         imm12 immediate constant in load16. If it is not fit in the instruction
3589         a temporary register has to be used.
3590
3591         * assembler/MacroAssemblerARMv7.h:
3592         (JSC::MacroAssemblerARMv7::load16):
3593
3594 2010-06-02  Sterling Swigart  <sswigart@google.com>
3595
3596         Reviewed by David Levin.
3597
3598         Image Resizer Patch 0: Added compilation argument to conditionally compile pending patches.
3599         https://bugs.webkit.org/show_bug.cgi?id=39906
3600
3601         * Configurations/FeatureDefines.xcconfig:
3602
3603 2010-06-01  Gavin Barraclough  <barraclough@apple.com>
3604
3605         Reviewed by Sam Weinig.
3606
3607         Bug 40021 - Refactor bytecode generation for calls so that register for this & args are allocated together
3608
3609         This is a useful stepping stone towards reversing argument order.
3610
3611         * bytecompiler/BytecodeGenerator.cpp:
3612         (JSC::BytecodeGenerator::BytecodeGenerator):
3613         (JSC::BytecodeGenerator::addParameter):
3614         (JSC::BytecodeGenerator::emitCall):
3615         (JSC::BytecodeGenerator::emitCallEval):
3616         (JSC::BytecodeGenerator::emitConstruct):
3617         * bytecompiler/BytecodeGenerator.h:
3618         (JSC::CallArguments::thisRegister):
3619         (JSC::CallArguments::argumentRegister):
3620         (JSC::CallArguments::callFrame):
3621         (JSC::CallArguments::count):
3622         (JSC::BytecodeGenerator::shouldEmitProfileHooks):
3623         * bytecompiler/NodesCodegen.cpp:
3624         (JSC::NewExprNode::emitBytecode):
3625         (JSC::CallArguments::CallArguments):
3626         (JSC::EvalFunctionCallNode::emitBytecode):
3627         (JSC::FunctionCallValueNode::emitBytecode):
3628         (JSC::FunctionCallResolveNode::emitBytecode):
3629         (JSC::FunctionCallBracketNode::emitBytecode):
3630         (JSC::FunctionCallDotNode::emitBytecode):
3631         (JSC::CallFunctionCallDotNode::emitBytecode):
3632         (JSC::ApplyFunctionCallDotNode::emitBytecode):
3633
3634 2010-06-01  Yong Li  <yoli@rim.com>
3635
3636         Reviewed by Darin Adler.
3637
3638         Explicitly use PTHREAD_MUTEX_NORMAL to create pthread mutex.
3639         https://bugs.webkit.org/show_bug.cgi?id=39893
3640
3641         * wtf/ThreadingPthreads.cpp:
3642         (WTF::Mutex::Mutex):
3643
3644 2010-06-01  Kwang Yul Seo  <skyul@company100.net>
3645
3646         Reviewed by Xan Lopez.
3647
3648         [GTK] Use DEFINE_STATIC_LOCAL for threadMapMutex and threadMap
3649         https://bugs.webkit.org/show_bug.cgi?id=39831
3650
3651         Use DEFINE_STATIC_LOCAL for static local variables.
3652
3653         * wtf/gtk/ThreadingGtk.cpp:
3654         (WTF::threadMapMutex):
3655         (WTF::threadMap):
3656         (WTF::identifierByGthreadHandle):
3657
3658 2010-06-01  Kent Tamura  <tkent@chromium.org>
3659
3660         Reviewed by Shinichiro Hamaji.
3661
3662         Fix style errors of dtoa
3663         https://bugs.webkit.org/show_bug.cgi?id=39972
3664
3665         Fix all errors reported by check-webkit-style.
3666
3667         * wtf/dtoa.cpp:
3668         * wtf/dtoa.h:
3669
3670 2010-05-30  Darin Adler  <darin@apple.com>
3671
3672         Reviewed by Sam Weinig.
3673
3674         * wtf/OwnArrayPtr.h:
3675         (WTF::OwnArrayPtr::set): Fix the assertion in here to match the one in OwnPtr.
3676         At some point someone fixed the "asserts when assigning to 0 and the pointer is