Remove unused NonNullPassRefPtr from WTF
[WebKit-https.git] / Source / JavaScriptCore / ChangeLog
1 2012-04-10  Adam Klein  <adamk@chromium.org>
2
3         Remove unused NonNullPassRefPtr from WTF
4         https://bugs.webkit.org/show_bug.cgi?id=82389
5
6         Reviewed by Kentaro Hara.
7
8         * JavaScriptCore.order: Remove nonexistent symbols referencing NonNullPassRefPtr.
9
10 2012-04-10  Darin Adler  <darin@apple.com>
11
12         Remove unused data member from Lexer class
13         https://bugs.webkit.org/show_bug.cgi?id=83429
14
15         Reviewed by Kentaro Hara.
16
17         I noticed that m_delimited was "write-only", so I deleted it.
18
19         * parser/Lexer.cpp:
20         (JSC::Lexer::setCode): Removed code to set m_delimited.
21         (JSC::Lexer::parseIdentifier): Ditto.
22         (JSC::Lexer::parseIdentifierSlowCase): Ditto.
23         (JSC::Lexer::lex): Ditto.
24         * parser/Lexer.h: Deleted m_delimited.
25
26 2012-04-10  Patrick Gansterer  <paroga@webkit.org>
27
28         [CMake] Enable USE_FOLDERS property
29         https://bugs.webkit.org/show_bug.cgi?id=83571
30
31         Reviewed by Daniel Bates.
32
33         Setting the FOLDER property on targets gives more structure 
34         to the generated Visual Studio solutions.
35         This does not affect other CMake generators.
36
37         * CMakeLists.txt:
38         * shell/CMakeLists.txt:
39
40 2012-04-10  Filip Pizlo  <fpizlo@apple.com>
41
42         It should be possible to see why a code block was not compiled by the DFG
43         https://bugs.webkit.org/show_bug.cgi?id=83553
44
45         Reviewed by Geoff Garen.
46         
47         If DFG_ENABLE(DEBUG_VERBOSE) and a code block is rejected, then print the
48         opcode that caused the rejection.
49
50         * dfg/DFGCapabilities.cpp:
51         (JSC::DFG::debugFail):
52         (DFG):
53         (JSC::DFG::canHandleOpcodes):
54
55 2012-04-09  Gavin Barraclough  <barraclough@apple.com>
56
57         If a callback constructor returns a C++ null, throw a type error.
58         https://bugs.webkit.org/show_bug.cgi?id=83537
59
60         Rubber Stamped by Geoff Garen.
61
62         * API/JSCallbackConstructor.cpp:
63         (JSC::constructJSCallback):
64             - If a callback constructor returns a C++ null, throw a type error.
65         * API/tests/testapi.c:
66         (Base_returnHardNull):
67         * API/tests/testapi.js:
68             - Add a test case for callback constructors that return a C++ null.
69
70 2012-04-09  Gavin Barraclough  <barraclough@apple.com>
71
72         If a callback function returns a C++ null, convert to undefined.
73         https://bugs.webkit.org/show_bug.cgi?id=83534
74
75         Reviewed by Geoff Garen.
76
77         * API/JSCallbackFunction.cpp:
78             - If a callback function returns a C++ null, convert to undefined.
79         (JSC::JSCallbackFunction::call):
80         * API/tests/testapi.c:
81         (Base_returnHardNull):
82         * API/tests/testapi.js:
83             - Add a test case for callback functions that return a C++ null.
84
85 2012-04-09  Filip Pizlo  <fpizlo@apple.com>
86
87         Classic interpreter's GC hooks shouldn't attempt to scan instructions for code blocks that
88         are currently being generated
89         https://bugs.webkit.org/show_bug.cgi?id=83531
90         <rdar://problem/11215200>
91
92         Reviewed by Gavin Barraclough.
93
94         * bytecode/CodeBlock.cpp:
95         (JSC::CodeBlock::stronglyVisitStrongReferences):
96
97 2012-04-09  Filip Pizlo  <fpizlo@apple.com>
98
99         Unreviewed, modernize and clean up uses of ARM assembly mnemonics in inline asm blocks.
100
101         * dfg/DFGOperations.cpp:
102         (JSC):
103         * offlineasm/armv7.rb:
104
105 2012-04-09  Patrick Gansterer  <paroga@webkit.org>
106
107         Remove HAVE_STDINT_H
108         https://bugs.webkit.org/show_bug.cgi?id=83434
109
110         Reviewed by Kentaro Hara.
111
112         HAVE_STDINT_H is defined with 1 all the time and we us stdint.h without HAVE(STDINT_H) already.
113
114         * config.h:
115
116 2012-04-08  Filip Pizlo  <fpizlo@apple.com>
117
118         DFG should not load the property storage if it is inline.
119         https://bugs.webkit.org/show_bug.cgi?id=83455
120
121         Reviewed by Gavin Barraclough.
122         
123         We had previously decided to have all property storage accesses go through
124         the property storage pointer even if they don't "really" have to, because
125         we were thinking this would help GC barriers somehow. Well, we never ended
126         up doing anything with that. Hence, doing these wasted loads of the
127         property storage pointer when the storage is inline is just a waste of CPU
128         cycles.
129         
130         This change makes the DFG's inline property accesses (GetByOffset and
131         PutByOffset) go directly to the inline property storage if the structure(s)
132         tell us that it's OK.
133         
134         This looks like an across-the-board 1% win.
135
136         * bytecode/StructureSet.h:
137         (JSC):
138         (JSC::StructureSet::allAreUsingInlinePropertyStorage):
139         (StructureSet):
140         * dfg/DFGByteCodeParser.cpp:
141         (JSC::DFG::ByteCodeParser::parseBlock):
142         * dfg/DFGSpeculativeJIT.cpp:
143         (JSC::DFG::SpeculativeJIT::fillStorage):
144
145 2012-04-08  Filip Pizlo  <fpizlo@apple.com>
146
147         Command-line jsc's exception handling should be rationalized
148         https://bugs.webkit.org/show_bug.cgi?id=83437
149
150         Reviewed by Dan Bernstein.
151         
152         - If an exception is thrown during run() execution, it is now propagated,
153           so that it will terminate program execution unless it is caught.
154           
155         - If program execution terminates with an exception, the exception is now
156           always printed.
157           
158         - When printing the exception, the backtrace is now also printed if one is
159           available. It will only not be available if you use something akin to my
160           favorite line of code, 'throw "error"', since primitives don't have
161           properties and hence we cannot attach a "stack" property to them.
162
163         * jsc.cpp:
164         (functionRun):
165         (runWithScripts):
166
167 2012-04-04  Filip Pizlo  <fpizlo@apple.com>
168
169         Forced OSR exits should lead to recompilation based on count, not rate
170         https://bugs.webkit.org/show_bug.cgi?id=83247
171         <rdar://problem/10720925>
172
173         Reviewed by Geoff Garen.
174         
175         Track which OSR exits happen because of inadequate coverage. Count them
176         separately. If the count reaches a threshold, immediately trigger
177         reoptimization.
178         
179         This is in contrast to the recompilation trigger for all other OSR exits.
180         Normally recomp is triggered when the exit rate exceeds a certain ratio.
181         
182         Looks like a slight V8 speedup (sub 1%).
183
184         * bytecode/CodeBlock.cpp:
185         (JSC::CodeBlock::CodeBlock):
186         * bytecode/CodeBlock.h:
187         (JSC::CodeBlock::forcedOSRExitCounter):
188         (JSC::CodeBlock::addressOfForcedOSRExitCounter):
189         (JSC::CodeBlock::offsetOfForcedOSRExitCounter):
190         (JSC::CodeBlock::shouldReoptimizeNow):
191         (JSC::CodeBlock::shouldReoptimizeFromLoopNow):
192         (CodeBlock):
193         * bytecode/DFGExitProfile.h:
194         (JSC::DFG::exitKindToString):
195         * dfg/DFGOSRExitCompiler.cpp:
196         (JSC::DFG::OSRExitCompiler::handleExitCounts):
197         (DFG):
198         * dfg/DFGOSRExitCompiler.h:
199         (OSRExitCompiler):
200         * dfg/DFGOSRExitCompiler32_64.cpp:
201         (JSC::DFG::OSRExitCompiler::compileExit):
202         * dfg/DFGOSRExitCompiler64.cpp:
203         (JSC::DFG::OSRExitCompiler::compileExit):
204         * dfg/DFGOperations.cpp:
205         * dfg/DFGSpeculativeJIT.cpp:
206         (JSC::DFG::SpeculativeJIT::compileGetIndexedPropertyStorage):
207         * dfg/DFGSpeculativeJIT32_64.cpp:
208         (JSC::DFG::SpeculativeJIT::compile):
209         * dfg/DFGSpeculativeJIT64.cpp:
210         (JSC::DFG::SpeculativeJIT::compile):
211         * runtime/Options.cpp:
212         (Options):
213         (JSC::Options::initializeOptions):
214         * runtime/Options.h:
215         (Options):
216
217 2012-04-06  Benjamin Poulain  <bpoulain@apple.com>
218
219         Do not abuse ArrayStorage's m_length for testing array consistency
220         https://bugs.webkit.org/show_bug.cgi?id=83403
221
222         Reviewed by Geoffrey Garen.
223
224         Array creation from a list of values is a 3 steps process:
225         -JSArray::tryCreateUninitialized()
226         -JSArray::initializeIndex() for each values
227         -JSArray::completeInitialization()
228
229         Previously, the attribute m_length was not set to the final size
230         JSArray::tryCreateUninitialized() because it was used to test the array
231         consistency JSArray::initializeIndex().
232
233         This caused the initialization loop using JSArray::initializeIndex() maintain
234         two counters:
235         -index of the loop
236         -storage->m_length++
237
238         This patch fixes this by using the index of the initialization loop for the indinces of
239         JSArray::initializeIndex(). For testing consistency, the variable m_initializationIndex
240         is introduced if CHECK_ARRAY_CONSISTENCY is defined.
241
242         The patch also fixes minor unrelated build issue when CHECK_ARRAY_CONSISTENCY is defined.
243
244         This improves the performance of JSArray creation from literals by 8%.
245
246         * runtime/JSArray.cpp:
247         (JSC::JSArray::tryFinishCreationUninitialized):
248         (JSC::JSArray::checkConsistency):
249         * runtime/JSArray.h:
250         (ArrayStorage):
251         (JSC::JSArray::initializeIndex):
252         (JSC::JSArray::completeInitialization):
253
254 2012-04-06  Jon Lee  <jonlee@apple.com>
255
256         Build fix for Windows bots.
257
258         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: export missing symbol.
259
260 2012-04-06  Geoffrey Garen  <ggaren@apple.com>
261
262         Renamed
263
264                 WeakHeap => WeakSet
265                 HandleHeap => HandleSet
266
267         Reviewed by Sam Weinig.
268
269         These sets do have internal allocators, but it's confusing to call them
270         heaps because they're sub-objects of an object called "heap".
271
272         * heap/HandleHeap.cpp: Removed.
273         * heap/HandleHeap.h: Removed.
274         * heap/HandleSet.cpp: Copied from JavaScriptCore/heap/HandleHeap.cpp.
275         * heap/WeakHeap.cpp: Removed.
276         * heap/WeakHeap.h: Removed.
277         * heap/WeakSet.cpp: Copied from JavaScriptCore/heap/WeakHeap.cpp.
278         * heap/WeakSet.h: Copied from JavaScriptCore/heap/WeakHeap.h.
279
280         Plus global rename using grep.
281
282 2012-04-06  Dan Bernstein  <mitz@apple.com>
283
284         <rdar://problem/10912476> HiDPI: Have canvas use a hidpi backing store, but downsample upon access
285
286         Reviewed by Sam Weinig.
287
288         * Configurations/FeatureDefines.xcconfig: Added ENABLE_HIGH_DPI_CANVAS.
289
290 2012-04-06  Rob Buis  <rbuis@rim.com>
291
292         Fix cast-align warnings in JSC
293         https://bugs.webkit.org/show_bug.cgi?id=80790
294
295         Reviewed by George Staikos.
296
297         * assembler/ARMv7Assembler.h:
298         (JSC::ARMv7Assembler::computeJumpType):
299         (JSC::ARMv7Assembler::link):
300         * assembler/LinkBuffer.h:
301         (JSC::LinkBuffer::linkCode):
302         * heap/MarkStack.cpp:
303         (JSC::SlotVisitor::copyAndAppend):
304         * runtime/JSArray.cpp:
305         (JSC::JSArray::visitChildren):
306         * wtf/RefCountedArray.h:
307         (WTF::RefCountedArray::Header::payload):
308
309 2012-04-06  Darin Adler  <darin@apple.com>
310
311         Streamline strtod and fix some related problems
312         https://bugs.webkit.org/show_bug.cgi?id=82857
313
314         Reviewed by Geoffrey Garen.
315
316         * parser/Lexer.cpp:
317         (JSC::Lexer<>::lex): Use parseDouble. Since we have already scanned the number
318         and we know it has only correct characters, leading spaces, trailing junk, and
319         trailing spaces are not a possibility. No need to add a trailing null character.
320
321         * runtime/JSGlobalObjectFunctions.cpp:
322         (JSC::parseInt): Changed overflow based 10 case to use parseDouble. No need
323         to allow trailing junk since the code above already allows only numeric digits
324         in the string. This code path is used only in unusual cases, so it's not
325         optimized for 8-bit strings, but easily could be.
326         (JSC::jsStrDecimalLiteral): Removed the allow trailing junk argument to this
327         function template because all the callers are OK with trailing junk. Use the
328         parseDouble function. No need to copy the data into a byte buffer, because
329         parseDouble handles that.
330         (JSC::toDouble): Got rid of the DisallowTrailingJunk argument to the
331         jsStrDecimalLiteral function template. That's OK because this function
332         already checks for trailing junk and handles it appropriately. The old code
333         path was doing it twice.
334         (JSC::parseFloat): Got rid of the AllowTrailingJunk argument to the
335         jsStrDecimalLiteral function template; the template allows junk unconditionally.
336
337         * runtime/LiteralParser.cpp:
338         (JSC::::Lexer::lexNumber): Use parseDouble. Since we have already scanned the number
339         and we know it has only correct characters, leading spaces, trailing junk, and
340         trailing spaces are not a possibility. No need to add a trailing null character.
341         No need to copy the data into a byte buffer, because parseDouble handles that.
342         We could optimize the UChar case even more because we know all the characters
343         are ASCII, but not doing that at this time.
344
345         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Updated.
346
347 2012-04-06  Patrick Gansterer  <paroga@webkit.org>
348
349         Remove JSC dependency from GregorianDateTime
350         https://bugs.webkit.org/show_bug.cgi?id=83290
351
352         Reviewed by Geoffrey Garen.
353
354         This allows us to move it to WTF later.
355
356         * runtime/DateConstructor.cpp:
357         (JSC::callDate):
358         * runtime/JSDateMath.h:
359
360 2012-04-05  Michael Saboff  <msaboff@apple.com>
361
362         Call Heap::discardAllCompiledCode() in low memory situations
363         https://bugs.webkit.org/show_bug.cgi?id=83335
364
365         Reviewed by Geoffrey Garen.
366
367         Restructured Heap::discardAllCompiledCode() to do the "Is JavaScriptRunning?"
368         check inline so that it can be called directly without this check.
369
370         * heap/Heap.cpp:
371         (JSC::Heap::discardAllCompiledCode):
372         (JSC::Heap::collectAllGarbage):
373         * heap/Heap.h: Added JS_EXPORT_PRIVATE to discardAllCompiledCode() so it can be
374         called from WebCore.
375         (Heap):
376         * runtime/JSGlobalData.h: Removed unused " void discardAllCompiledCode()" declaration.
377         (JSGlobalData):
378
379 2012-04-05  Benjamin Poulain  <bpoulain@apple.com>
380
381         Speed up the conversion from JSValue to String for bulk operations
382         https://bugs.webkit.org/show_bug.cgi?id=83243
383
384         Reviewed by Geoffrey Garen.
385
386         When making operations on primitive types, we loose some time converting
387         values to JSString in order to extract the string.
388
389         This patch speeds up some basic Array operations by avoiding the creation
390         of intermediary JSString when possible.
391
392         For the cases where we need to convert a lot of JSValue in a tight loop,
393         an inline conversion is used.
394
395         * runtime/ArrayPrototype.cpp:
396         (JSC::arrayProtoFuncToString):
397         (JSC::arrayProtoFuncToLocaleString):
398         (JSC::arrayProtoFuncJoin):
399         (JSC::arrayProtoFuncPush):
400         (JSC::arrayProtoFuncSort):
401         * runtime/CommonIdentifiers.h:
402         * runtime/JSArray.cpp:
403         (JSC::JSArray::sort):
404         * runtime/JSString.h:
405         (JSC::JSValue::toUString):
406         (JSC):
407         (JSC::inlineJSValueNotStringtoUString):
408         (JSC::JSValue::toUStringInline):
409         * runtime/JSValue.cpp:
410         (JSC::JSValue::toUStringSlowCase):
411         (JSC):
412         * runtime/JSValue.h:
413         (JSValue):
414
415 2012-04-05  Benjamin Poulain  <bpoulain@apple.com>
416
417         Use QuickSort when sorting primitive values by string representation
418         https://bugs.webkit.org/show_bug.cgi?id=83312
419
420         Reviewed by Gavin Barraclough.
421
422         When the value we are sorting are all primitive values, we do not need to
423         ensure a stable sort as two values with equal string representation are
424         indistinguishable from JavaScript.
425
426         This gives about 16% performance increase when sorting primitive values.
427
428         * runtime/JSArray.cpp:
429         (JSC::JSArray::sort):
430
431 2012-04-05  Oliver Hunt  <oliver@apple.com>
432
433         SIGILL in JavaScriptCore on a Geode processor
434         https://bugs.webkit.org/show_bug.cgi?id=82496
435
436         Reviewed by Gavin Barraclough.
437
438         Don't attempt to use the DFG when SSE2 is not available.
439
440         * dfg/DFGCapabilities.cpp:
441         (JSC::DFG::canCompileOpcodes):
442
443 2012-04-05  Oliver Hunt  <oliver@apple.com>
444
445         Fix 32-bit build.
446
447         * API/APICast.h:
448         (toJS):
449
450 2012-04-05  Oliver Hunt  <oliver@apple.com>
451
452         Replace static_cast with jsCast when casting JSCell subclasses in JSC
453         https://bugs.webkit.org/show_bug.cgi?id=83307
454
455         Reviewed by Gavin Barraclough.
456
457         Replace all usage of static_cast<JSCell subtype*> with jsCast<> in JavaScriptCore.
458         This results in assertions when unsafe casts are performed, but simply leaves
459         a static_cast<> in release builds.
460
461         * API/APICast.h:
462         (toJS):
463         * API/JSCallbackConstructor.cpp:
464         (JSC::constructJSCallback):
465         * API/JSCallbackFunction.cpp:
466         (JSC::JSCallbackFunction::call):
467         * API/JSCallbackObjectFunctions.h:
468         (JSC::::asCallbackObject):
469         (JSC::::finishCreation):
470         (JSC::::construct):
471         (JSC::::call):
472         * API/JSObjectRef.cpp:
473         (JSObjectGetPrivate):
474         (JSObjectSetPrivate):
475         (JSObjectGetPrivateProperty):
476         (JSObjectSetPrivateProperty):
477         (JSObjectDeletePrivateProperty):
478         * API/JSValueRef.cpp:
479         (JSValueIsObjectOfClass):
480         * API/JSWeakObjectMapRefPrivate.cpp:
481         * bytecompiler/BytecodeGenerator.cpp:
482         (JSC::BytecodeGenerator::resolve):
483         (JSC::BytecodeGenerator::resolveConstDecl):
484         * debugger/DebuggerActivation.cpp:
485         (JSC::DebuggerActivation::finishCreation):
486         * dfg/DFGOperations.cpp:
487         * interpreter/Interpreter.cpp:
488         (JSC::Interpreter::execute):
489         (JSC::Interpreter::privateExecute):
490         * jit/JITStubs.cpp:
491         (JSC::DEFINE_STUB_FUNCTION):
492         * runtime/Executable.h:
493         (JSC::isHostFunction):
494         * runtime/JSActivation.h:
495         (JSC::asActivation):
496         * runtime/JSArray.cpp:
497         (JSC::JSArray::defineOwnProperty):
498         * runtime/JSArray.h:
499         (JSC::asArray):
500         * runtime/JSBoundFunction.cpp:
501         (JSC::boundFunctionCall):
502         (JSC::boundFunctionConstruct):
503         * runtime/JSByteArray.h:
504         (JSC::asByteArray):
505         * runtime/JSCell.cpp:
506         (JSC::JSCell::toObject):
507         * runtime/JSCell.h:
508         (JSC::jsCast):
509         * runtime/JSGlobalObject.h:
510         (JSC::asGlobalObject):
511         * runtime/JSGlobalObjectFunctions.cpp:
512         (JSC::globalFuncEval):
513         * runtime/JSObject.cpp:
514         (JSC::JSObject::setPrototypeWithCycleCheck):
515         (JSC::JSObject::allowsAccessFrom):
516         (JSC::JSObject::toThisObject):
517         (JSC::JSObject::unwrappedObject):
518         * runtime/JSObject.h:
519         (JSC::asObject):
520         * runtime/JSPropertyNameIterator.h:
521         (JSC::Register::propertyNameIterator):
522         * runtime/JSString.h:
523         (JSC::asString):
524         (JSC::JSValue::toString):
525         * runtime/StringPrototype.cpp:
526         (JSC::stringProtoFuncSubstr):
527
528 2012-04-05  Benjamin Poulain  <bpoulain@apple.com>
529
530         Make something faster than JSStringBuilder for joining an array of JSValue
531         https://bugs.webkit.org/show_bug.cgi?id=83180
532
533         Reviewed by Geoffrey Garen.
534
535         This patch add the class JSStringJoiner optimized for join() operations.
536
537         This class makes stricter constraints than JSStringBuilder in order avoid
538         memory allocations.
539
540         In the best case, the class allocate memory only twice:
541         -Allocate an array to keep a list of UString to join.
542         -Allocate the final string.
543
544         We also avoid the conversion from 8bits strings to 16bits strings since
545         they are costly and unlikly to help for subsequent calls.
546
547         * CMakeLists.txt:
548         * GNUmakefile.list.am:
549         * JavaScriptCore.gypi:
550         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
551         * JavaScriptCore.xcodeproj/project.pbxproj:
552         * Target.pri:
553         * runtime/ArrayPrototype.cpp:
554         (JSC::arrayProtoFuncToLocaleString):
555         (JSC::arrayProtoFuncJoin):
556         * runtime/JSStringJoiner.cpp: Added.
557         (JSC):
558         (JSC::appendStringToData):
559         (JSC::joinStrings):
560         (JSC::JSStringJoiner::build):
561         * runtime/JSStringJoiner.h: Added.
562         (JSC):
563         (JSStringJoiner):
564         (JSC::JSStringJoiner::JSStringJoiner):
565         (JSC::JSStringJoiner::append):
566
567 2012-04-05  Gavin Barraclough  <barraclough@apple.com>
568
569         https://bugs.webkit.org/show_bug.cgi?id=77293
570         [Un]Reserve 'let'
571
572         Rubber stamped by Oliver Hunt.
573
574         Revert r106198.
575         This does break the web - e.g. https://bvi.bnc.ca/index/bnc/indexen.html
576         If we're going to reserve let, we're going to have to do so in a more
577         circumspect fashion.
578
579         * parser/Keywords.table:
580
581 2012-04-05  Michael Saboff  <msaboff@apple.com>
582
583         Rolling out http://trac.webkit.org/changeset/113262.
584         Original code was fine.
585
586         Rubber-stamped by Oliver Hunt.
587
588         * assembler/MacroAssembler.h:
589         (JSC::MacroAssembler::additionBlindedConstant):
590
591 2012-04-05  Patrick Gansterer  <paroga@webkit.org>
592
593         [WinCE] Remove unnecessary function decleration
594         https://bugs.webkit.org/show_bug.cgi?id=83155
595
596         Reviewed by Kentaro Hara.
597
598         * runtime/JSDateMath.cpp:
599
600 2012-04-04  Patrick Gansterer  <paroga@webkit.org>
601
602         Add WTF::getCurrentLocalTime()
603         https://bugs.webkit.org/show_bug.cgi?id=83164
604
605         Reviewed by Alexey Proskuryakov.
606
607         Replace the calls to WTF::getLocalTime() with time(0) with the new function.
608         This allows us to use Win32 API on windows to get the same result in a next step.
609
610         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
611         * runtime/DateConstructor.cpp:
612         (JSC::callDate):
613
614 2012-04-04  Oliver Hunt  <oliver@apple.com>
615
616         Parser fails to revert some state after parsing expression and object literals.
617         https://bugs.webkit.org/show_bug.cgi?id=83236
618
619         Reviewed by Gavin Barraclough.
620
621         Reset left hand side counter after parsing the literals.
622
623         * parser/Parser.cpp:
624         (JSC::::parseObjectLiteral):
625         (JSC::::parseStrictObjectLiteral):
626         (JSC::::parseArrayLiteral):
627
628 2012-04-04  Filip Pizlo  <fpizlo@apple.com>
629
630         DFG InstanceOf should not uselessly speculate cell
631         https://bugs.webkit.org/show_bug.cgi?id=83234
632
633         Reviewed by Oliver Hunt.
634         
635         If InstanceOf is the only user of its child then don't speculate cell, since
636         the not-cell case is super easy to handle.
637
638         * dfg/DFGSpeculativeJIT.cpp:
639         (JSC::DFG::SpeculativeJIT::compileInstanceOf):
640
641 2012-04-04  Michael Saboff  <msaboff@apple.com>
642
643         Fixed minor error: "& 3" should be "& 2".
644
645         Rubber-stamped by Oliver Hunt.
646
647         * assembler/MacroAssembler.h:
648         (JSC::MacroAssembler::additionBlindedConstant):
649
650 2012-04-04  Michael Saboff  <msaboff@apple.com>
651
652         Constant Blinding for add/sub immediate crashes in ArmV7 when dest is SP
653         https://bugs.webkit.org/show_bug.cgi?id=83191
654
655         Reviewed by Oliver Hunt.
656
657         Make are that blinded constant pairs are similarly aligned to the
658         original immediate values so that instructions that expect that
659         alignment work correctly.  One example is ARMv7 add/sub imm to SP.
660
661         * assembler/ARMv7Assembler.h:
662         (JSC::ARMv7Assembler::add): Added ASSERT that immediate is word aligned.
663         (JSC::ARMv7Assembler::sub): Added ASSERT that immediate is word aligned.
664         (JSC::ARMv7Assembler::sub_S): Added ASSERT that immediate is word aligned.
665         * assembler/MacroAssembler.h:
666         (JSC::MacroAssembler::additionBlindedConstant):
667
668 2012-04-04  Filip Pizlo  <fpizlo@apple.com>
669
670         DFG should short-circuit Branch(LogicalNot(...))
671         https://bugs.webkit.org/show_bug.cgi?id=83181
672
673         Reviewed by Geoff Garen.
674         
675         Slight (sub 1%) speed-up on V8.
676
677         * dfg/DFGFixupPhase.cpp:
678         (JSC::DFG::FixupPhase::fixupNode):
679
680 2012-04-04  Geoffrey Garen  <ggaren@apple.com>
681
682         [Qt] REGRESSION(r113141): All tests assert on 32 bit debug mode
683         https://bugs.webkit.org/show_bug.cgi?id=83139
684
685         Reviewed by Sam Weinig.
686
687         * heap/PassWeak.h:
688         (JSC::::get): 32-bit JSValue treats JSValue(nullptr).asCell() as an error,
689         so work around that here. (Long-term, we should make 32-bit and 64-bit
690         agree on the right behavior.)
691
692 2012-04-03  Geoffrey Garen  <ggaren@apple.com>
693
694         Updated JSC expected test results to reflect recent bug fixes <disapproving look>.
695
696         Reviewed by Sam Weinig.
697
698         * tests/mozilla/expected.html:
699
700 2012-03-29  Geoffrey Garen  <ggaren@apple.com>
701
702         First step toward incremental Weak<T> finalization
703         https://bugs.webkit.org/show_bug.cgi?id=82670
704
705         Reviewed by Filip Pizlo.
706
707         This patch implements a Weak<T> heap that is compatible with incremental
708         finalization, while making as few behavior changes as possible. The behavior
709         changes it makes are:
710
711         (*) Weak<T>'s raw JSValue no longer reverts to JSValue() automatically --
712         instead, a separate flag indicates that the JSValue is no longer valid.
713         (This is required so that the JSValue can be preserved for later finalization.)
714         Objects dealing with WeakImpls directly must change to check the flag.
715
716         (*) Weak<T> is no longer a subclass of Handle<T>.
717
718         (*) DOM GC performance is different -- 9% faster in the geometric mean,
719         but 15% slower in one specific case:
720                 gc-dom1.html: 6%  faster
721                 gc-dom2.html: 23% faster
722                 gc-dom3.html: 17% faster
723                 gc-dom4.html: 15% *slower*
724
725         The key features of this new heap are:
726
727         (*) Each block knows its own state, independent of any other blocks.
728
729         (*) Each block caches its own sweep result.
730
731         (*) The heap visits dead Weak<T>s at the end of GC. (It doesn't
732         mark them yet, since that would be a behavior change.)
733
734         * API/JSCallbackObject.cpp:
735         (JSC::JSCallbackObjectData::finalize):
736         * API/JSCallbackObjectFunctions.h:
737         (JSC::::init): Updated to use the new WeakHeap API.
738
739         * CMakeLists.txt:
740         * GNUmakefile.list.am:
741         * JavaScriptCore.gypi:
742         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
743         * JavaScriptCore.xcodeproj/project.pbxproj:
744         * Target.pri: Paid the build system tax since I added some new files.
745
746         * heap/Handle.h: Made WeakBlock a friend and exposed slot() as public,
747         so we can keep passing a Handle<T> to finalizers, to avoid more surface
748         area change in this patch. A follow-up patch should change the type we
749         pass to finalizers.
750
751         * heap/HandleHeap.cpp:
752         (JSC):
753         (JSC::HandleHeap::writeBarrier):
754         (JSC::HandleHeap::isLiveNode):
755         * heap/HandleHeap.h:
756         (JSC):
757         (HandleHeap):
758         (Node):
759         (JSC::HandleHeap::Node::Node): Removed all code related to Weak<T>, since
760         we have a separate WeakHeap now.
761
762         * heap/Heap.cpp:
763         (JSC::Heap::Heap): Removed m_extraCost because extra cost is accounted
764         for through our watermark now. Removed m_waterMark because it was unused.
765
766         (JSC::Heap::destroy): Updated for addition of WeakHeap.
767
768         (JSC::Heap::reportExtraMemoryCostSlowCase): Changed from using its own
769         variable to participating in the watermark strategy. I wanted to standardize
770         WeakHeap and all other Heap clients on this strategy, to make sure it's
771         accurate.
772  
773         (JSC::Heap::markRoots): Updated for addition of WeakHeap. Added WeakHeap
774         dead visit pass, as explained above.
775
776         (JSC::Heap::collect):
777         (JSC::Heap::resetAllocators): Updated for addition of WeakHeap.
778
779         (JSC::Heap::addFinalizer):
780         (JSC::Heap::FinalizerOwner::finalize): Updated for new Weak<T> API.
781
782         * heap/Heap.h:
783         (JSC::Heap::weakHeap):
784         (Heap):
785         (JSC::Heap::addToWaterMark): Added a way to participate in the watermarking
786         strategy, since this is the best way for WeakHeap to report its memory
787         cost. (I plan to update this in a follow-up patch to make it more accurate,
788         but for now it is not less accurate than it used to be.)
789
790         * heap/MarkedSpace.cpp:
791         (JSC::MarkedSpace::MarkedSpace):
792         (JSC::MarkedSpace::resetAllocators):
793         * heap/MarkedSpace.h:
794         (MarkedSpace):
795         (JSC::MarkedSpace::addToWaterMark):
796         (JSC::MarkedSpace::didConsumeFreeList): Removed m_nurseryWaterMark because
797         it was unused, and I didn't want to update WeakHeap to keep an usused
798         variable working. Added API for above.
799
800         * heap/PassWeak.h:
801         (JSC):
802         (WeakImplAccessor):
803         (PassWeak):
804         (JSC::::operator):
805         (JSC::::get):
806         (JSC::::was):
807         (JSC::::PassWeak):
808         (JSC::::~PassWeak):
809         (JSC::UnspecifiedBoolType):
810         (JSC::::leakImpl):
811         (JSC::adoptWeak):
812         * heap/Strong.h:
813         (JSC::Strong::operator!):
814         (Strong):
815         (JSC::Strong::operator UnspecifiedBoolType*):
816         (JSC::Strong::get):
817         * heap/Weak.h:
818         (Weak):
819         (JSC::::Weak):
820         (JSC):
821         (JSC::::isHashTableDeletedValue):
822         (JSC::::~Weak):
823         (JSC::::swap):
824         (JSC::=):
825         (JSC::::operator):
826         (JSC::UnspecifiedBoolType):
827         (JSC::::release):
828         (JSC::::clear):
829         (JSC::::hashTableDeletedValue): Lots of code changes here, but they boil
830         down to two things:
831
832         (*) Allocate WeakImpls from the WeakHeap instead of Handles from the HandleHeap.
833
834         (*) Explicitly check WeakImpl::state() for non-liveness before returning
835         a value (explained above).
836
837         These files implement the new Weak<T> heap behavior described above:
838
839         * heap/WeakBlock.cpp: Added.
840         * heap/WeakBlock.h: Added.
841         * heap/WeakHandleOwner.cpp: Added.
842         * heap/WeakHandleOwner.h: Added.
843         * heap/WeakHeap.cpp: Added.
844         * heap/WeakHeap.h: Added.
845         * heap/WeakImpl.h: Added.
846
847         One interesting difference from the old heap is that we don't allow
848         clients to overwrite a WeakImpl after allocating it, and we don't recycle
849         WeakImpls prior to garbage collection. This is required for lazy finalization,
850         but it will also help us esablish a useful invariant in the future: allocating
851         a WeakImpl will be a binding contract to run a finalizer at some point in the
852         future, even if the WeakImpl is later deallocated.
853
854         * jit/JITStubs.cpp:
855         (JSC::JITThunks::hostFunctionStub): Check the Weak<T> for ! instead of
856         its JSValue, since that's our API contract now, and the JSValue might
857         be stale.
858
859         * runtime/JSCell.h:
860         (JSC::jsCast): Allow casting NULL pointers because it's useful and harmless.
861
862         * runtime/Structure.cpp:
863         (JSC::StructureTransitionTable::add): I can't remember why I did this.
864
865         * runtime/StructureTransitionTable.h:
866         * runtime/WeakGCMap.h: I had to update these classes because they allocate
867         and deallocate weak pointers manually. They should probably stop doing that.
868
869 2012-04-03  Keishi Hattori  <keishi@webkit.org>
870
871         Disable ENABLE_DATALIST for now
872         https://bugs.webkit.org/show_bug.cgi?id=82871
873
874         Reviewed by Kent Tamura.
875
876         * Configurations/FeatureDefines.xcconfig: Disabled ENABLE_DATALIST.
877
878 2012-04-02  Filip Pizlo  <fpizlo@apple.com>
879
880         jsr/sret should be removed
881         https://bugs.webkit.org/show_bug.cgi?id=82986
882         <rdar://problem/11017015>
883
884         Reviewed by Sam Weinig and Geoff Garen.
885         
886         Replaces jsr/sret with finally block inlining.
887
888         * bytecode/CodeBlock.cpp:
889         (JSC::CodeBlock::dump):
890         * bytecode/Opcode.h:
891         (JSC):
892         (JSC::padOpcodeName):
893         * bytecompiler/BytecodeGenerator.cpp:
894         (JSC::BytecodeGenerator::pushFinallyContext):
895         (JSC::BytecodeGenerator::emitComplexJumpScopes):
896         (JSC):
897         * bytecompiler/BytecodeGenerator.h:
898         (FinallyContext):
899         (BytecodeGenerator):
900         * bytecompiler/NodesCodegen.cpp:
901         (JSC::TryNode::emitBytecode):
902         * interpreter/Interpreter.cpp:
903         (JSC::Interpreter::privateExecute):
904         * jit/JIT.cpp:
905         (JSC::JIT::privateCompileMainPass):
906         (JSC::JIT::privateCompile):
907         * jit/JIT.h:
908         (JIT):
909         * jit/JITOpcodes.cpp:
910         (JSC):
911         * jit/JITOpcodes32_64.cpp:
912         (JSC):
913         * llint/LowLevelInterpreter32_64.asm:
914         * llint/LowLevelInterpreter64.asm:
915
916 2012-04-03  Mark Rowe  <mrowe@apple.com>
917
918         Make it possible to install the JavaScriptCore test tools.
919
920         Part of <rdar://problem/11158607>.
921         
922         Reviewed by Filip Pizlo.
923
924         * JavaScriptCore.xcodeproj/project.pbxproj: Introduce an aggregate target named
925         Test Tools that builds testapi, minidom and testRegExp. Switch All from depending on
926         those targets individually to depending on the new aggregate target.
927
928 2012-04-03  Filip Pizlo  <fpizlo@apple.com>
929
930         Offlineasm ARM backend has a very convoluted way of saying it wants to emit a
931         three-operand multiply instruction
932         https://bugs.webkit.org/show_bug.cgi?id=83100
933
934         Reviewed by Darin Adler.
935         
936         Changed the "muli"/"mulp" case to call emitArmV7() since that helper method was
937         already smart enough to do the Right Thing for multiply.
938
939         * offlineasm/armv7.rb:
940
941 2012-04-03  Filip Pizlo  <fpizlo@apple.com>
942
943         Offlineasm ARM backend uses the wrong mnemonic for multiply
944         https://bugs.webkit.org/show_bug.cgi?id=83098
945         <rdar://problem/11168744>
946
947         Reviewed by Gavin Barraclough.
948         
949         Use "mul" instead of "muls" since we're passing three operands, not two.
950
951         * offlineasm/armv7.rb:
952
953 2012-04-03  Gavin Barraclough  <barraclough@apple.com>
954
955         Linux crashes during boot
956         https://bugs.webkit.org/show_bug.cgi?id=83096
957
958         Reviewed by Filip Pizlo.
959
960         The bug here is that we add empty JSValues to the sparse map, and then set them
961         - but a GC may occur before doing so (due to a call to reportExtraMemory cost).
962         We may want to consider making it safe to mark empty JSValues, but the simple &
963         contained fix to this specific bug is to just initialize these values to
964         something other than JSValue().
965
966         * runtime/JSArray.cpp:
967         (JSC::SparseArrayValueMap::add):
968             - Initialize sparse map entries.
969
970 2012-04-02  Oliver Hunt  <oliver@apple.com>
971
972         Incorrect liveness information when inlining
973         https://bugs.webkit.org/show_bug.cgi?id=82985
974
975         Reviewed by Filip Pizlo.
976
977         Don't remap register numbers that have already been remapped.
978
979         * dfg/DFGByteCodeParser.cpp:
980         (JSC::DFG::ByteCodeParser::handleInlining):
981
982 2012-04-02  Filip Pizlo  <fpizlo@apple.com>
983
984         Activation tear-off neglects to copy the callee and scope chain, leading to crashes if we
985         try to create an arguments object from the activation
986         https://bugs.webkit.org/show_bug.cgi?id=82947
987         <rdar://problem/11058598>
988
989         Reviewed by Gavin Barraclough.
990         
991         We now copy the entire call frame header just to be sure. This is mostly perf-netural,
992         except for a 3.7% slow-down in V8/earley.
993
994         * runtime/JSActivation.cpp:
995         (JSC::JSActivation::visitChildren):
996         * runtime/JSActivation.h:
997         (JSC::JSActivation::tearOff):
998
999 2012-04-02  Daniel Bates  <dbates@webkit.org>
1000
1001         Remove Source/JavaScriptCore/wtf and its empty subdirectories
1002
1003         Rubber-stamped by Eric Seidel.
1004
1005         Following the move of WTF from Source/JavaScriptCore/wtf to Source/WTF
1006         (https://bugs.webkit.org/show_bug.cgi?id=75673), remove directory
1007         Source/JavaScriptCore/wtf and its empty subdirectories.
1008
1009         * wtf: Removed.
1010         * wtf/android: Removed.
1011         * wtf/blackberry: Removed.
1012         * wtf/chromium: Removed.
1013         * wtf/dtoa: Removed.
1014         * wtf/efl: Removed.
1015         * wtf/gobject: Removed.
1016         * wtf/gtk: Removed.
1017         * wtf/mac: Removed.
1018         * wtf/qt: Removed.
1019         * wtf/qt/compat: Removed.
1020         * wtf/tests: Removed.
1021         * wtf/text: Removed.
1022         * wtf/threads: Removed.
1023         * wtf/threads/win: Removed.
1024         * wtf/unicode: Removed.
1025         * wtf/unicode/glib: Removed.
1026         * wtf/unicode/icu: Removed.
1027         * wtf/unicode/qt4: Removed.
1028         * wtf/unicode/wince: Removed.
1029         * wtf/url: Removed.
1030         * wtf/url/api: Removed.
1031         * wtf/url/src: Removed.
1032         * wtf/win: Removed.
1033         * wtf/wince: Removed.
1034         * wtf/wx: Removed.
1035
1036 2012-04-02  Carlos Garcia Campos  <cgarcia@igalia.com>
1037
1038         Unreviewed. Fix make distcheck issues.
1039
1040         * GNUmakefile.list.am: Add missing file.
1041
1042 2012-04-01  Darin Adler  <darin@apple.com>
1043
1044         Fix incorrect path for libWTF.a in Mac project file.
1045
1046         * JavaScriptCore.xcodeproj/project.pbxproj: Removed the "../Release" prefix that
1047         would cause other configurations to try to link with the "Release" version of
1048         libWTF.a instead of the correct version.
1049
1050 2012-03-29  Filip Pizlo  <fpizlo@apple.com>
1051
1052         DFG should optimize a==b for a being an object and b being either an object or
1053         null/undefined, and vice versa
1054         https://bugs.webkit.org/show_bug.cgi?id=82656
1055
1056         Reviewed by Oliver Hunt.
1057         
1058         Implements additional object equality optimizations for the case that one
1059         operand is predicted to be an easily speculated object (like FinalObject or
1060         Array) and the other is either an easily speculated object or Other, i.e.
1061         Null or Undefined.
1062         
1063         2-5% speed-up on V8/raytrace, leading to a sub-1% progression on V8.
1064         
1065         I also took the opportunity to clean up the control flow for the speculation
1066         decisions in the various Compare opcodes. And to fix a build bug in SamplingTool.
1067         And to remove debug cruft I stupidly committed in my last patch.
1068         
1069         * bytecode/SamplingTool.h:
1070         (SamplingRegion):
1071         * dfg/DFGAbstractState.cpp:
1072         (JSC::DFG::AbstractState::execute):
1073         * dfg/DFGOperations.cpp:
1074         * dfg/DFGSpeculativeJIT.cpp:
1075         (JSC::DFG::SpeculativeJIT::compilePeepHoleBranch):
1076         (JSC::DFG::SpeculativeJIT::compare):
1077         * dfg/DFGSpeculativeJIT.h:
1078         (SpeculativeJIT):
1079         * dfg/DFGSpeculativeJIT32_64.cpp:
1080         (JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeBranch):
1081         (JSC::DFG::SpeculativeJIT::compileObjectToObjectOrOtherEquality):
1082         (DFG):
1083         (JSC::DFG::SpeculativeJIT::compilePeepHoleObjectToObjectOrOtherEquality):
1084         * dfg/DFGSpeculativeJIT64.cpp:
1085         (JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeBranch):
1086         (JSC::DFG::SpeculativeJIT::compileObjectToObjectOrOtherEquality):
1087         (DFG):
1088         (JSC::DFG::SpeculativeJIT::compilePeepHoleObjectToObjectOrOtherEquality):
1089
1090 2012-03-30  David Barr  <davidbarr@chromium.org>
1091
1092         Split up top-level .gitignore and .gitattributes
1093         https://bugs.webkit.org/show_bug.cgi?id=82687
1094
1095         Reviewed by Tor Arne Vestbø.
1096
1097         * JavaScriptCore.gyp/.gitignore: Added.
1098
1099 2012-03-30  Steve Falkenburg  <sfalken@apple.com>
1100
1101         Windows (make based) build fix.
1102
1103         * JavaScriptCore.vcproj/JavaScriptCore.make: Copy WTF header files into a place where JavaScriptCore build can see them.
1104
1105 2012-03-30  Keishi Hattori  <keishi@webkit.org>
1106
1107         Change ENABLE_INPUT_COLOR to ENABLE_INPUT_TYPE_COLOR and enable it for chromium
1108         https://bugs.webkit.org/show_bug.cgi?id=80972
1109
1110         Reviewed by Kent Tamura.
1111
1112         * Configurations/FeatureDefines.xcconfig:
1113
1114 2012-03-29  Mark Hahnenberg  <mhahnenberg@apple.com>
1115
1116         Refactor recompileAllJSFunctions() to be less expensive
1117         https://bugs.webkit.org/show_bug.cgi?id=80330
1118
1119         Reviewed by Filip Pizlo.
1120
1121         This change is performance neutral on the JS benchmarks we track. It's mostly to improve page 
1122         load performance, which currently does at least a couple full GCs per navigation.
1123
1124         * heap/Heap.cpp:
1125         (JSC::Heap::discardAllCompiledCode): Rename recompileAllJSFunctions to discardAllCompiledCode 
1126         because the function doesn't actually recompile anything (and never did); it simply throws code
1127         away for it to be recompiled later if we determine we should do so.
1128         (JSC):
1129         (JSC::Heap::collectAllGarbage):
1130         (JSC::Heap::addFunctionExecutable): Adds a newly created FunctionExecutable to the Heap's list.
1131         (JSC::Heap::removeFunctionExecutable): Removes the specified FunctionExecutable from the Heap's list.
1132         * heap/Heap.h:
1133         (JSC):
1134         (Heap):
1135         * runtime/Executable.cpp: Added next and prev fields to FunctionExecutables so that they can 
1136         be used in DoublyLinkedLists.
1137         (JSC::FunctionExecutable::FunctionExecutable):
1138         (JSC::FunctionExecutable::finalize): Removes the FunctionExecutable from the Heap's list.
1139         * runtime/Executable.h:
1140         (FunctionExecutable):
1141         (JSC::FunctionExecutable::create): Adds the FunctionExecutable to the Heap's list.
1142         * runtime/JSGlobalData.cpp: Remove recompileAllJSFunctions, as it's the Heap's job to own and manage 
1143         the list of FunctionExecutables.
1144         * runtime/JSGlobalData.h:
1145         (JSGlobalData):
1146         * runtime/JSGlobalObject.cpp:
1147         (JSC::DynamicGlobalObjectScope::DynamicGlobalObjectScope): Use the new discardAllCompiledCode.
1148
1149 2012-03-29  Filip Pizlo  <fpizlo@apple.com>
1150
1151         Unreviewed build fix for non-x86 platforms.
1152
1153         * dfg/DFGSpeculativeJIT.cpp:
1154         (JSC::DFG::SpeculativeJIT::compileSoftModulo):
1155         * dfg/DFGSpeculativeJIT.h:
1156         (JSC::DFG::SpeculativeJIT::callOperation):
1157         * jit/JITArithmetic32_64.cpp:
1158         (JSC::JIT::emitSlow_op_mod):
1159
1160 2012-03-29  Gavin Barraclough  <barraclough@apple.com>
1161
1162         Windows build fix p2.
1163
1164         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1165
1166 2012-03-29  Gavin Barraclough  <barraclough@apple.com>
1167
1168         Windows build fix p1.
1169
1170         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1171
1172 2012-03-29  Gavin Barraclough  <barraclough@apple.com>
1173
1174         Template the Yarr::Interpreter on the character type
1175         https://bugs.webkit.org/show_bug.cgi?id=82637
1176
1177         Reviewed by Sam Weinig.
1178
1179         We should be able to call to the interpreter after having already checked the character type,
1180         without having to re-package the character pointer back up into a string!
1181
1182         * runtime/RegExp.cpp:
1183         (JSC::RegExp::match):
1184         (JSC::RegExp::matchCompareWithInterpreter):
1185             - Don't pass length.
1186         * yarr/Yarr.h:
1187             - moved function declarations to YarrInterpreter.h.
1188         * yarr/YarrInterpreter.cpp:
1189         (Yarr):
1190         (Interpreter):
1191         (JSC::Yarr::Interpreter::InputStream::InputStream):
1192         (InputStream):
1193         (JSC::Yarr::Interpreter::Interpreter):
1194         (JSC::Yarr::interpret):
1195             - templated Interpreter class on CharType.
1196         * yarr/YarrInterpreter.h:
1197         (Yarr):
1198             - added function declarations.
1199
1200 2012-03-29  David Kilzer  <ddkilzer@apple.com>
1201
1202         Don't use a flattened framework path when building on OS X
1203
1204         Reviewed by Mark Rowe.
1205
1206         * Configurations/ToolExecutable.xcconfig: Use REAL_PLATFORM_NAME
1207         to select different INSTALL_PATH values.
1208
1209 2012-03-29  Kevin Ollivier  <kevino@theolliviers.com>
1210
1211         [wx] Unreviewed build fix, add Win-specific sources
1212         the wx port needs after WTF move.
1213
1214         * wscript:
1215
1216 2012-03-29  Andy Estes  <aestes@apple.com>
1217
1218         Remove an unused variable that breaks the build with newer versions of clang.
1219
1220         Rubber stamped by Gavin Barraclough.
1221
1222         * yarr/YarrJIT.cpp:
1223         (JSC::Yarr::YarrGenerator::backtrackCharacterClassNonGreedy):
1224
1225 2012-03-29  Caio Marcelo de Oliveira Filho  <caio.oliveira@openbossa.org>
1226
1227         HashMap<>::add should return a more descriptive object
1228         https://bugs.webkit.org/show_bug.cgi?id=71063
1229
1230         Reviewed by Ryosuke Niwa.
1231
1232         Update code to use AddResult instead of a pair. Note that since WeakGCMap wraps
1233         the iterator type, there's a need for its own AddResult type -- instantiated from
1234         HashTableAddResult template class.
1235
1236         * API/JSCallbackObject.h:
1237         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::setPrivateProperty):
1238         * API/JSClassRef.cpp:
1239         (OpaqueJSClass::contextData):
1240         * bytecompiler/BytecodeGenerator.cpp:
1241         (JSC::BytecodeGenerator::addVar):
1242         (JSC::BytecodeGenerator::addGlobalVar):
1243         (JSC::BytecodeGenerator::addConstant):
1244         (JSC::BytecodeGenerator::addConstantValue):
1245         (JSC::BytecodeGenerator::emitLoad):
1246         (JSC::BytecodeGenerator::addStringConstant):
1247         (JSC::BytecodeGenerator::emitLazyNewFunction):
1248         * bytecompiler/NodesCodegen.cpp:
1249         (JSC::PropertyListNode::emitBytecode):
1250         * debugger/Debugger.cpp:
1251         * dfg/DFGAssemblyHelpers.cpp:
1252         (JSC::DFG::AssemblyHelpers::decodedCodeMapFor):
1253         * dfg/DFGByteCodeParser.cpp:
1254         (JSC::DFG::ByteCodeParser::cellConstant):
1255         (JSC::DFG::ByteCodeParser::InlineStackEntry::InlineStackEntry):
1256         * jit/JITStubs.cpp:
1257         (JSC::JITThunks::ctiStub):
1258         (JSC::JITThunks::hostFunctionStub):
1259         * parser/Parser.cpp:
1260         (JSC::::parseStrictObjectLiteral):
1261         * parser/Parser.h:
1262         (JSC::Scope::declareParameter):
1263         * runtime/Identifier.cpp:
1264         (JSC::Identifier::add):
1265         (JSC::Identifier::add8):
1266         (JSC::Identifier::addSlowCase):
1267         * runtime/Identifier.h:
1268         (JSC::Identifier::add):
1269         (JSC::IdentifierTable::add):
1270         * runtime/JSArray.cpp:
1271         (JSC::SparseArrayValueMap::add):
1272         (JSC::SparseArrayValueMap::put):
1273         (JSC::SparseArrayValueMap::putDirect):
1274         (JSC::JSArray::enterDictionaryMode):
1275         (JSC::JSArray::defineOwnNumericProperty):
1276         * runtime/JSArray.h:
1277         (SparseArrayValueMap):
1278         * runtime/PropertyNameArray.cpp:
1279         (JSC::PropertyNameArray::add):
1280         * runtime/StringRecursionChecker.h:
1281         (JSC::StringRecursionChecker::performCheck):
1282         * runtime/Structure.cpp:
1283         (JSC::StructureTransitionTable::add):
1284         * runtime/WeakGCMap.h:
1285         (WeakGCMap):
1286         (JSC::WeakGCMap::add):
1287         (JSC::WeakGCMap::set):
1288         * tools/ProfileTreeNode.h:
1289         (JSC::ProfileTreeNode::sampleChild):
1290
1291 2012-03-29  Patrick Gansterer  <paroga@webkit.org>
1292
1293         Build fix for !ENABLE(YARR_JIT) after r112454.
1294
1295         * runtime/RegExp.cpp:
1296         (JSC::RegExp::invalidateCode):
1297
1298 2012-03-28  Filip Pizlo  <fpizlo@apple.com>
1299
1300         DFG object equality speculations should be simplified
1301         https://bugs.webkit.org/show_bug.cgi?id=82557
1302
1303         Reviewed by Gavin Barraclough.
1304
1305         * dfg/DFGNode.h:
1306         (JSC::DFG::Node::shouldSpeculateFinalObject):
1307         (JSC::DFG::Node::shouldSpeculateArray):
1308
1309 2012-03-28  David Kilzer  <ddkilzer@apple.com>
1310
1311         minidom configurations should be based on ToolExecutable.xcconfig
1312         <http://webkit.org/b/82513>
1313
1314         Reviewed by Mark Rowe.
1315
1316         Note that this patch changes minidom from being installed in
1317         /usr/local/bin to JavaScriptCore.framework/Resources.
1318
1319         * Configurations/ToolExecutable.xcconfig: Add semi-colon.
1320         * JavaScriptCore.xcodeproj/project.pbxproj: Base minidom
1321         configurations on ToolExecutable.xcconfig.  Remove redundant
1322         PRODUCT_NAME and SKIP_INSTALL variables.
1323
1324 2012-03-28  Gavin Barraclough  <barraclough@apple.com>
1325
1326         Build fix - some compiles generating NORETURN related warnings.
1327
1328         * yarr/YarrJIT.cpp:
1329         (JSC::Yarr::YarrGenerator::setSubpatternStart):
1330         (JSC::Yarr::YarrGenerator::setSubpatternEnd):
1331         (JSC::Yarr::YarrGenerator::clearSubpatternStart):
1332
1333 2012-03-28  Kevin Ollivier  <kevino@theolliviers.com>
1334
1335         [wx] Unreviewed. Build fix, move WTF back into JSCore target
1336         until issues with JSCore not linking in all WTF symbols are resolved.
1337         
1338         * wscript:
1339
1340 2012-03-28  Gavin Barraclough  <barraclough@apple.com>
1341
1342         Yarr: if we're not using the output array, don't populate it!
1343         https://bugs.webkit.org/show_bug.cgi?id=82519
1344
1345         Reviewed by Sam Weinig.
1346
1347         * runtime/RegExp.cpp:
1348         (JSC):
1349             - Missed review comment! - didn't fully remove RegExpRepresentation.
1350
1351 2012-03-28  Gavin Barraclough  <barraclough@apple.com>
1352
1353         Yarr: if we're not using the output array, don't populate it!
1354         https://bugs.webkit.org/show_bug.cgi?id=82519
1355
1356         Reviewed by Sam Weinig.
1357
1358         Add a new variant of the match method to RegExp that returns a MatchResult,
1359         and modify YarrJIT to be able to compile code that doesn't use an output vector.
1360
1361         This is a 3% progression on v8-regexp.
1362
1363         * JavaScriptCore.xcodeproj/project.pbxproj:
1364             - Moved MatchResult into its own header.
1365         * assembler/AbstractMacroAssembler.h:
1366             - Added missing include.
1367         * runtime/MatchResult.h: Added.
1368         (MatchResult::MatchResult):
1369         (MatchResult):
1370         (MatchResult::failed):
1371         (MatchResult::operator bool):
1372         (MatchResult::empty):
1373             - Moved MatchResult into its own header.
1374         * runtime/RegExp.cpp:
1375         (JSC::RegExp::compile):
1376         (JSC::RegExp::compileIfNecessary):
1377         (JSC::RegExp::match):
1378             - Changed due to execute & representation changes.
1379         (JSC::RegExp::compileMatchOnly):
1380         (JSC::RegExp::compileIfNecessaryMatchOnly):
1381             - Added helper to compile MatchOnly code.
1382         (JSC::RegExp::invalidateCode):
1383         (JSC::RegExp::matchCompareWithInterpreter):
1384         (JSC::RegExp::printTraceData):
1385             - Changed due representation changes.
1386         * runtime/RegExp.h:
1387         (RegExp):
1388         (JSC::RegExp::hasCode):
1389             - Made YarrCodeBlock a member.
1390         * runtime/RegExpConstructor.h:
1391         (RegExpConstructor):
1392         (JSC::RegExpConstructor::performMatch):
1393             - Added no-ovector form.
1394         * runtime/RegExpMatchesArray.cpp:
1395         (JSC::RegExpMatchesArray::reifyAllProperties):
1396             - Match now takes a reference to ovector, not a pointer.
1397         * runtime/RegExpObject.h:
1398         (JSC):
1399             - Moved MatchResult into its own header.
1400         * runtime/StringPrototype.cpp:
1401         (JSC::stringProtoFuncSplit):
1402             - Match now takes a reference to ovector, not a pointer.
1403         * testRegExp.cpp:
1404         (testOneRegExp):
1405             - Match now takes a reference to ovector, not a pointer.
1406         * yarr/YarrJIT.cpp:
1407         (Yarr):
1408         (YarrGenerator):
1409         (JSC::Yarr::YarrGenerator::initCallFrame):
1410         (JSC::Yarr::YarrGenerator::removeCallFrame):
1411         (JSC::Yarr::YarrGenerator::setSubpatternStart):
1412         (JSC::Yarr::YarrGenerator::setSubpatternEnd):
1413         (JSC::Yarr::YarrGenerator::clearSubpatternStart):
1414         (JSC::Yarr::YarrGenerator::setMatchStart):
1415         (JSC::Yarr::YarrGenerator::getMatchStart):
1416             - Added helper functions to intermediate access to output.
1417         (JSC::Yarr::YarrGenerator::generateDotStarEnclosure):
1418         (JSC::Yarr::YarrGenerator::generate):
1419         (JSC::Yarr::YarrGenerator::backtrack):
1420         (JSC::Yarr::YarrGenerator::generateEnter):
1421         (JSC::Yarr::YarrGenerator::compile):
1422             - Changed to use the new helpers, only generate subpatterns if IncludeSubpatterns.
1423         (JSC::Yarr::jitCompile):
1424             - Needs to template of MatchOnly or IncludeSubpatterns.
1425         * yarr/YarrJIT.h:
1426         (YarrCodeBlock):
1427         (JSC::Yarr::YarrCodeBlock::set8BitCode):
1428         (JSC::Yarr::YarrCodeBlock::set16BitCode):
1429         (JSC::Yarr::YarrCodeBlock::has8BitCodeMatchOnly):
1430         (JSC::Yarr::YarrCodeBlock::has16BitCodeMatchOnly):
1431         (JSC::Yarr::YarrCodeBlock::set8BitCodeMatchOnly):
1432         (JSC::Yarr::YarrCodeBlock::set16BitCodeMatchOnly):
1433         (JSC::Yarr::YarrCodeBlock::execute):
1434         (JSC::Yarr::YarrCodeBlock::clear):
1435             - Added a second set of CodeRefs, so that we can compile RexExps with/without subpattern matching.
1436
1437 2012-03-27  Filip Pizlo  <fpizlo@apple.com>
1438
1439         DFG OSR exit should not generate an exit for variables of inlinees if the
1440         inlinees are not in scope
1441         https://bugs.webkit.org/show_bug.cgi?id=82312
1442
1443         Reviewed by Oliver Hunt.
1444         
1445         * bytecode/CodeBlock.h:
1446         (JSC::baselineCodeBlockForInlineCallFrame):
1447         (JSC):
1448         (JSC::baselineCodeBlockForOriginAndBaselineCodeBlock):
1449         * dfg/DFGOSRExit.cpp:
1450         (JSC::DFG::computeNumVariablesForCodeOrigin):
1451         (DFG):
1452         (JSC::DFG::OSRExit::OSRExit):
1453
1454 2012-03-27  Matt Lilek  <mrl@apple.com>
1455
1456         Stop compiling Interpreter.cpp with -fno-var-tracking
1457         https://bugs.webkit.org/show_bug.cgi?id=82299
1458
1459         Reviewed by Anders Carlsson.
1460
1461         * JavaScriptCore.xcodeproj/project.pbxproj:
1462
1463 2012-03-27  Pratik Solanki  <psolanki@apple.com>
1464
1465         Compiler warning when JIT is not enabled
1466         https://bugs.webkit.org/show_bug.cgi?id=82352
1467
1468         Reviewed by Filip Pizlo.
1469
1470         * runtime/JSFunction.cpp:
1471         (JSC::JSFunction::create):
1472
1473 2012-03-26  Thouraya ANDOLSI  <thouraya.andolsi@st.com>
1474
1475         Unaligned userspace access for SH4 platforms
1476         https://bugs.webkit.org/show_bug.cgi?id=79104
1477
1478         Reviewed by Gavin Barraclough.
1479
1480         * assembler/AbstractMacroAssembler.h:
1481         (Jump):
1482         (JSC::AbstractMacroAssembler::Jump::Jump):
1483         (JSC::AbstractMacroAssembler::Jump::link):
1484         * assembler/MacroAssemblerSH4.h:
1485         (JSC::MacroAssemblerSH4::load16Unaligned):
1486         (JSC::MacroAssemblerSH4::load32WithUnalignedHalfWords):
1487         (JSC::MacroAssemblerSH4::branchDouble):
1488         (JSC::MacroAssemblerSH4::branchTrue):
1489         (JSC::MacroAssemblerSH4::branchFalse):
1490         * assembler/SH4Assembler.h:
1491         (JSC::SH4Assembler::extraInstrForBranch):
1492         (SH4Assembler):
1493         (JSC::SH4Assembler::bra):
1494         (JSC::SH4Assembler::linkJump):
1495         * jit/JIT.h:
1496         (JIT):
1497         * yarr/YarrJIT.cpp:
1498         (JSC::Yarr::YarrGenerator::generatePatternCharacterOnce):
1499
1500 2012-03-26  Ryosuke Niwa  <rniwa@webkit.org>
1501
1502         cssText should use shorthand notations
1503         https://bugs.webkit.org/show_bug.cgi?id=81737
1504
1505         Reviewed by Enrica Casucci.
1506
1507         Export symbols of BitVector on Windows.
1508
1509         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1510
1511 2012-03-26  Filip Pizlo  <fpizlo@apple.com>
1512
1513         DFG should assert that argument value recoveries can only be
1514         AlreadyInRegisterFile or Constant
1515         https://bugs.webkit.org/show_bug.cgi?id=82249
1516
1517         Reviewed by Michael Saboff.
1518         
1519         Made the assertions that the DFG makes for argument value recoveries match
1520         what Arguments expects.
1521
1522         * bytecode/ValueRecovery.h:
1523         (JSC::ValueRecovery::isConstant):
1524         (ValueRecovery):
1525         (JSC::ValueRecovery::isAlreadyInRegisterFile):
1526         * dfg/DFGSpeculativeJIT.cpp:
1527         (JSC::DFG::SpeculativeJIT::compile):
1528
1529 2012-03-26  Dan Bernstein  <mitz@apple.com>
1530
1531         Tried to fix the Windows build.
1532
1533         * yarr/YarrPattern.cpp:
1534         (JSC::Yarr::CharacterClassConstructor::putRange):
1535
1536 2012-03-26  Gavin Barraclough  <barraclough@apple.com>
1537
1538         Unreviewed - speculative Windows build fix.
1539
1540         * yarr/YarrCanonicalizeUCS2.h:
1541         (JSC::Yarr::getCanonicalPair):
1542
1543 2012-03-26  Dan Bernstein  <mitz@apple.com>
1544
1545         Fixed builds with assertions disabled.
1546
1547         * yarr/YarrCanonicalizeUCS2.h:
1548         (JSC::Yarr::areCanonicallyEquivalent):
1549
1550 2012-03-26  Gavin Barraclough  <barraclough@apple.com>
1551
1552         Unreviewed - errk! - accidentally the whole pbxproj.
1553
1554         * JavaScriptCore.xcodeproj/project.pbxproj:
1555
1556 2012-03-25  Gavin Barraclough  <barraclough@apple.com>
1557
1558         Greek sigma is handled wrong in case independent regexp.
1559         https://bugs.webkit.org/show_bug.cgi?id=82063
1560
1561         Reviewed by Oliver Hunt.
1562
1563         The bug here is that we assume that any given codepoint has at most one additional value it
1564         should match under a case insensitive match, and that the pair of codepoints that match (if
1565         a codepoint does not only match itself) can be determined by calling toUpper/toLower on the
1566         given codepoint). Life is not that simple.
1567
1568         Instead, pre-calculate a set of tables mapping from a UCS2 codepoint to the set of characters
1569         it may match, under the ES5.1 case-insensitive matching rules. Since unicode is fairly regular
1570         we can pack this table quite nicely, and get it down to 364 entries. This means we can use a
1571         simple binary search to find an entry in typically eight compares.
1572
1573         * CMakeLists.txt:
1574         * GNUmakefile.list.am:
1575         * JavaScriptCore.gypi:
1576         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
1577         * JavaScriptCore.xcodeproj/project.pbxproj:
1578         * yarr/yarr.pri:
1579             - Added new files to build systems.
1580         * yarr/YarrCanonicalizeUCS2.cpp: Added.
1581             - New - autogenerated, UCS2 canonicalized comparison tables.
1582         * yarr/YarrCanonicalizeUCS2.h: Added.
1583         (JSC::Yarr::rangeInfoFor):
1584             - Look up the canonicalization info for a UCS2 character.
1585         (JSC::Yarr::getCanonicalPair):
1586             - For a UCS2 character with a single equivalent value, look it up.
1587         (JSC::Yarr::isCanonicallyUnique):
1588             - Returns true if no other UCS2 code points are canonically equal.
1589         (JSC::Yarr::areCanonicallyEquivalent):
1590             - Compare two values, under canonicalization rules.
1591         * yarr/YarrCanonicalizeUCS2.js: Added.
1592             - script used to generate YarrCanonicalizeUCS2.cpp.
1593         * yarr/YarrInterpreter.cpp:
1594         (JSC::Yarr::Interpreter::tryConsumeBackReference):
1595             - Use isCanonicallyUnique, rather than Unicode toUpper/toLower.
1596         * yarr/YarrJIT.cpp:
1597         (JSC::Yarr::YarrGenerator::jumpIfCharNotEquals):
1598         (JSC::Yarr::YarrGenerator::generatePatternCharacterOnce):
1599         (JSC::Yarr::YarrGenerator::generatePatternCharacterFixed):
1600             - Use isCanonicallyUnique, rather than Unicode toUpper/toLower.
1601         * yarr/YarrPattern.cpp:
1602         (JSC::Yarr::CharacterClassConstructor::putChar):
1603             - Updated to determine canonical equivalents correctly.
1604         (JSC::Yarr::CharacterClassConstructor::putUnicodeIgnoreCase):
1605             - Added, used to put a non-ascii, non-unique character in a case-insensitive match.
1606         (JSC::Yarr::CharacterClassConstructor::putRange):
1607             - Updated to determine canonical equivalents correctly.
1608         (JSC::Yarr::YarrPatternConstructor::atomPatternCharacter):
1609             - Changed to call putUnicodeIgnoreCase, instead of putChar, avoid a double lookup of rangeInfo.
1610
1611 2012-03-26  Kevin Ollivier  <kevino@theolliviers.com>
1612
1613         [wx] Unreviewed build fix. Add the build outputs dir to the list of build dirs,
1614         so we make sure it finds the API headers on all platforms.
1615
1616         * wscript:
1617
1618 2012-03-26  Patrick Gansterer  <paroga@webkit.org>
1619
1620         Build fix for WinCE after r112039.
1621
1622         * interpreter/Register.h:
1623         (Register): Removed inline keyword from decleration since
1624                     there is an ALWAYS_INLINE at the definition anyway.
1625
1626 2012-03-26  Carlos Garcia Campos  <cgarcia@igalia.com>
1627
1628         Unreviewed. Fix make distcheck.
1629
1630         * GNUmakefile.list.am: Add missing files.
1631
1632 2012-03-25  Kevin Ollivier  <kevino@theolliviers.com>
1633
1634         [wx] Unreviewed build fix. Move WTF to its own static lib build.
1635
1636         * wscript:
1637
1638 2012-03-25  Filip Pizlo  <fpizlo@apple.com>
1639
1640         DFG int-to-double conversion should be revealed to CSE
1641         https://bugs.webkit.org/show_bug.cgi?id=82135
1642
1643         Reviewed by Oliver Hunt.
1644         
1645         This introduces the notion of an Int32ToDouble node, which is injected
1646         into the graph anytime we know that we have a double use of a node that
1647         was predicted integer. The Int32ToDouble simplifies double speculation
1648         on integers by skipping the path that would unbox doubles, if we know
1649         that the value is already proven to be an integer. It allows integer to
1650         double conversions to be subjected to common subexpression elimination
1651         (CSE) by allowing the CSE phase to see where these conversions are
1652         occurring. Finally, it allows us to see when a constant is being used
1653         as both a double and an integer. This is a bit odd, since it means that
1654         sometimes a double use of a constant will not refer directly to the
1655         constant. This should not cause problems, for now, but it may require
1656         some canonizalization in the future if we want to support strength
1657         reductions of double operations based on constants.
1658         
1659         To allow injection of nodes into the graph, this change introduces the
1660         DFG::InsertionSet, which is a way of lazily inserting elements into a
1661         list. This allows the FixupPhase to remain O(N) despite performing
1662         multiple injections in a single basic block. Without the InsertionSet,
1663         each injection would require performing an insertion into a vector,
1664         which is O(N), leading to O(N^2) performance overall. With the
1665         InsertionSet, each injection simply records what insertion would have
1666         been performed, and all insertions are performed at once (via
1667         InsertionSet::execute) after processing of a basic block is completed.
1668
1669         * JavaScriptCore.xcodeproj/project.pbxproj:
1670         * bytecode/PredictedType.h:
1671         (JSC::isActionableIntMutableArrayPrediction):
1672         (JSC):
1673         (JSC::isActionableFloatMutableArrayPrediction):
1674         (JSC::isActionableTypedMutableArrayPrediction):
1675         (JSC::isActionableMutableArrayPrediction):
1676         * dfg/DFGAbstractState.cpp:
1677         (JSC::DFG::AbstractState::execute):
1678         * dfg/DFGCSEPhase.cpp:
1679         (JSC::DFG::CSEPhase::performNodeCSE):
1680         * dfg/DFGCommon.h:
1681         (JSC::DFG::useKindToString):
1682         (DFG):
1683         * dfg/DFGFixupPhase.cpp:
1684         (JSC::DFG::FixupPhase::run):
1685         (JSC::DFG::FixupPhase::fixupBlock):
1686         (FixupPhase):
1687         (JSC::DFG::FixupPhase::fixupNode):
1688         (JSC::DFG::FixupPhase::fixDoubleEdge):
1689         * dfg/DFGGraph.cpp:
1690         (JSC::DFG::Graph::dump):
1691         * dfg/DFGInsertionSet.h: Added.
1692         (DFG):
1693         (Insertion):
1694         (JSC::DFG::Insertion::Insertion):
1695         (JSC::DFG::Insertion::index):
1696         (JSC::DFG::Insertion::element):
1697         (InsertionSet):
1698         (JSC::DFG::InsertionSet::InsertionSet):
1699         (JSC::DFG::InsertionSet::append):
1700         (JSC::DFG::InsertionSet::execute):
1701         * dfg/DFGNodeType.h:
1702         (DFG):
1703         * dfg/DFGPredictionPropagationPhase.cpp:
1704         (JSC::DFG::PredictionPropagationPhase::propagate):
1705         * dfg/DFGSpeculativeJIT.cpp:
1706         (JSC::DFG::SpeculativeJIT::computeValueRecoveryFor):
1707         (JSC::DFG::SpeculativeJIT::compileValueToInt32):
1708         (JSC::DFG::SpeculativeJIT::compileInt32ToDouble):
1709         (DFG):
1710         * dfg/DFGSpeculativeJIT.h:
1711         (SpeculativeJIT):
1712         (JSC::DFG::IntegerOperand::IntegerOperand):
1713         (JSC::DFG::DoubleOperand::DoubleOperand):
1714         (JSC::DFG::JSValueOperand::JSValueOperand):
1715         (JSC::DFG::StorageOperand::StorageOperand):
1716         (JSC::DFG::SpeculateIntegerOperand::SpeculateIntegerOperand):
1717         (JSC::DFG::SpeculateStrictInt32Operand::SpeculateStrictInt32Operand):
1718         (JSC::DFG::SpeculateDoubleOperand::SpeculateDoubleOperand):
1719         (JSC::DFG::SpeculateCellOperand::SpeculateCellOperand):
1720         (JSC::DFG::SpeculateBooleanOperand::SpeculateBooleanOperand):
1721         * dfg/DFGSpeculativeJIT32_64.cpp:
1722         (JSC::DFG::SpeculativeJIT::compile):
1723         * dfg/DFGSpeculativeJIT64.cpp:
1724         (JSC::DFG::SpeculativeJIT::compile):
1725
1726 2012-03-25  Filip Pizlo  <fpizlo@apple.com>
1727
1728         DFGOperands should be moved out of the DFG and into bytecode
1729         https://bugs.webkit.org/show_bug.cgi?id=82151
1730
1731         Reviewed by Dan Bernstein.
1732
1733         * GNUmakefile.list.am:
1734         * JavaScriptCore.xcodeproj/project.pbxproj:
1735         * bytecode/Operands.h: Copied from Source/JavaScriptCore/dfg/DFGOperands.h.
1736         * dfg/DFGBasicBlock.h:
1737         * dfg/DFGNode.h:
1738         * dfg/DFGOSREntry.h:
1739         * dfg/DFGOSRExit.h:
1740         * dfg/DFGOperands.h: Removed.
1741         * dfg/DFGVariableAccessData.h:
1742
1743 2012-03-24  Filip Pizlo  <fpizlo@apple.com>
1744
1745         DFG 64-bit Branch implementation should not be creating a JSValueOperand that
1746         it isn't going to use
1747         https://bugs.webkit.org/show_bug.cgi?id=82136
1748
1749         Reviewed by Geoff Garen.
1750
1751         * dfg/DFGSpeculativeJIT64.cpp:
1752         (JSC::DFG::SpeculativeJIT::emitBranch):
1753
1754 2012-03-24  Kevin Ollivier  <kevino@theolliviers.com>
1755
1756         [wx] Unreviewed. Fix the build after WTF move.
1757
1758         * wscript:
1759
1760 2012-03-23  Filip Pizlo  <fpizlo@apple.com>
1761
1762         DFG double voting may be overzealous in the case of variables that end up
1763         being used as integers
1764         https://bugs.webkit.org/show_bug.cgi?id=82008
1765
1766         Reviewed by Oliver Hunt.
1767         
1768         Cleaned up propagation, making the intent more explicit in most places.
1769         Back-propagate NodeUsedAsInt for cases where a node was used in a context
1770         that is known to strongly prefer integers.
1771
1772         * dfg/DFGByteCodeParser.cpp:
1773         (JSC::DFG::ByteCodeParser::handleCall):
1774         (JSC::DFG::ByteCodeParser::parseBlock):
1775         * dfg/DFGGraph.cpp:
1776         (JSC::DFG::Graph::dumpCodeOrigin):
1777         (JSC::DFG::Graph::dump):
1778         * dfg/DFGGraph.h:
1779         (Graph):
1780         * dfg/DFGNodeFlags.cpp:
1781         (JSC::DFG::nodeFlagsAsString):
1782         * dfg/DFGNodeFlags.h:
1783         (DFG):
1784         * dfg/DFGPredictionPropagationPhase.cpp:
1785         (JSC::DFG::PredictionPropagationPhase::run):
1786         (JSC::DFG::PredictionPropagationPhase::propagate):
1787         (PredictionPropagationPhase):
1788         (JSC::DFG::PredictionPropagationPhase::mergeDefaultFlags):
1789         (JSC::DFG::PredictionPropagationPhase::vote):
1790         (JSC::DFG::PredictionPropagationPhase::doRoundOfDoubleVoting):
1791         (JSC::DFG::PredictionPropagationPhase::fixupNode):
1792         * dfg/DFGVariableAccessData.h:
1793         (JSC::DFG::VariableAccessData::shouldUseDoubleFormatAccordingToVote):
1794
1795 2012-03-24  Filip Pizlo  <fpizlo@apple.com>
1796
1797         DFG::Node::shouldNotSpeculateInteger() should be eliminated
1798         https://bugs.webkit.org/show_bug.cgi?id=82123
1799
1800         Reviewed by Geoff Garen.
1801
1802         * dfg/DFGAbstractState.cpp:
1803         (JSC::DFG::AbstractState::execute):
1804         * dfg/DFGNode.h:
1805         (Node):
1806         * dfg/DFGSpeculativeJIT.cpp:
1807         (JSC::DFG::SpeculativeJIT::compilePutByValForByteArray):
1808         (JSC::DFG::SpeculativeJIT::compilePutByValForIntTypedArray):
1809
1810 2012-03-24  Yong Li  <yoli@rim.com>
1811
1812         Increase getByIdSlowCase ConstantSpace/InstructionSpace for CPU(ARM_TRADITIONAL)
1813         https://bugs.webkit.org/show_bug.cgi?id=81521
1814
1815         Increase sequenceGetByIdSlowCaseConstantSpace and sequenceGetByIdSlowCaseInstructionSpace
1816         for CPU(ARM_TRADITIONAL) to fit actual need.
1817
1818         Reviewed by Oliver Hunt.
1819
1820         * jit/JIT.h:
1821         (JIT):
1822
1823 2012-03-23  Filip Pizlo  <fpizlo@apple.com>
1824
1825         DFG Fixup should be able to short-circuit trivial ValueToInt32's
1826         https://bugs.webkit.org/show_bug.cgi?id=82030
1827
1828         Reviewed by Michael Saboff.
1829         
1830         Takes the fixup() method of the prediction propagation phase and makes it
1831         into its own phase. Adds the ability to short-circuit trivial ValueToInt32
1832         nodes, and mark pure ValueToInt32's as such.
1833
1834         * CMakeLists.txt:
1835         * GNUmakefile.list.am:
1836         * JavaScriptCore.xcodeproj/project.pbxproj:
1837         * Target.pri:
1838         * dfg/DFGByteCodeParser.cpp:
1839         (JSC::DFG::ByteCodeParser::makeSafe):
1840         (JSC::DFG::ByteCodeParser::handleCall):
1841         (JSC::DFG::ByteCodeParser::parseBlock):
1842         * dfg/DFGCommon.h:
1843         * dfg/DFGDriver.cpp:
1844         (JSC::DFG::compile):
1845         * dfg/DFGFixupPhase.cpp: Added.
1846         (DFG):
1847         (FixupPhase):
1848         (JSC::DFG::FixupPhase::FixupPhase):
1849         (JSC::DFG::FixupPhase::run):
1850         (JSC::DFG::FixupPhase::fixupNode):
1851         (JSC::DFG::FixupPhase::fixIntEdge):
1852         (JSC::DFG::performFixup):
1853         * dfg/DFGFixupPhase.h: Added.
1854         (DFG):
1855         * dfg/DFGPredictionPropagationPhase.cpp:
1856         (JSC::DFG::PredictionPropagationPhase::run):
1857         (PredictionPropagationPhase):
1858
1859 2012-03-23  Mark Hahnenberg  <mhahnenberg@apple.com>
1860
1861         tryReallocate could break the zero-ed memory invariant of CopiedBlocks
1862         https://bugs.webkit.org/show_bug.cgi?id=82087
1863
1864         Reviewed by Filip Pizlo.
1865
1866         Removing this optimization turned out to be ~1% regression on kraken, so I simply 
1867         undid the modification to the current block if we fail.
1868
1869         * heap/CopiedSpace.cpp:
1870         (JSC::CopiedSpace::tryReallocate): Undid the reset in the CopiedAllocator if we fail 
1871         to reallocate from the current block.
1872
1873 2012-03-23  Alexey Proskuryakov  <ap@apple.com>
1874
1875         [Mac] No need for platform-specific ENABLE_BLOB values
1876         https://bugs.webkit.org/show_bug.cgi?id=82102
1877
1878         Reviewed by David Kilzer.
1879
1880         * Configurations/FeatureDefines.xcconfig:
1881
1882 2012-03-23  Michael Saboff  <msaboff@apple.com>
1883
1884         DFG::compileValueToInt32 Sometime Generates GPR to FPR reg back to GPR
1885         https://bugs.webkit.org/show_bug.cgi?id=81805
1886
1887         Reviewed by Filip Pizlo.
1888
1889         Added SpeculativeJIT::checkGeneratedType() to determine the current format
1890         of an operand.  Used that information in SpeculativeJIT::compileValueToInt32
1891         to generate code that will use integer and JSValue types in integer
1892         format directly without a conversion to double.
1893
1894         * JavaScriptCore.xcodeproj/project.pbxproj:
1895         * dfg/DFGSpeculativeJIT.cpp:
1896         (JSC::DFG::SpeculativeJIT::checkGeneratedType):
1897         (DFG):
1898         (JSC::DFG::SpeculativeJIT::compileValueToInt32):
1899         * dfg/DFGSpeculativeJIT.h:
1900         (DFG):
1901         (SpeculativeJIT):
1902
1903 2012-03-23  Steve Falkenburg  <sfalken@apple.com>
1904
1905         Update Apple Windows build files for WTF move
1906         https://bugs.webkit.org/show_bug.cgi?id=82069
1907
1908         Reviewed by Jessie Berlin.
1909
1910         * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln: Removed WTF and WTFGenerated.
1911
1912 2012-03-23  Dean Jackson  <dino@apple.com>
1913
1914         Disable CSS_SHADERS in Apple builds
1915         https://bugs.webkit.org/show_bug.cgi?id=81996
1916
1917         Reviewed by Simon Fraser.
1918
1919         Remove ENABLE_CSS_SHADERS from FeatureDefines. It's now in Platform.h.
1920
1921         * Configurations/FeatureDefines.xcconfig:
1922
1923 2012-03-23  Gavin Barraclough  <barraclough@apple.com>
1924
1925         RexExp constructor last match properties should not rely on previous ovector
1926         https://bugs.webkit.org/show_bug.cgi?id=82077
1927
1928         Reviewed by Oliver Hunt.
1929
1930         This change simplifies matching, and will enable subpattern results to be fully lazily generated in the future.
1931
1932         This patch changes the scheme used to lazily generate the last match properties of the RegExp object.
1933         Instead of relying on the results in the ovector, we can instead lazily generate the subpatters using
1934         a RegExpMatchesArray. To do so we just need to store the input, the regexp matched, and the match
1935         location (the MatchResult). When the match is accessed or the input is set, we reify results. We use
1936         a special value of setting the saved result to MatchResult::failed() to indicated that we're in a
1937         reified state. This means that next time a match is performed, the store of the result will
1938         automatically blow away the reified value.
1939
1940         * JavaScriptCore.xcodeproj/project.pbxproj:
1941             - Added new files.
1942         * runtime/RegExp.cpp:
1943         (JSC::RegExpFunctionalTestCollector::outputOneTest):
1944             - changed 'subPattern' -> 'subpattern' (there was a mix in JSC, 'subpattern' was more common).
1945         * runtime/RegExpCachedResult.cpp: Added.
1946         (JSC::RegExpCachedResult::visitChildren):
1947         (JSC::RegExpCachedResult::lastResult):
1948         (JSC::RegExpCachedResult::setInput):
1949             - New methods, mark GC objects, lazily create the matches array, and record a user provided input (via assignment to RegExp.inupt).
1950         * runtime/RegExpCachedResult.h: Added.
1951         (RegExpCachedResult):
1952             - Added new class.
1953         (JSC::RegExpCachedResult::RegExpCachedResult):
1954         (JSC::RegExpCachedResult::record):
1955         (JSC::RegExpCachedResult::input):
1956             - Initialize the object, record the result of a RegExp match, access the stored input property.
1957         * runtime/RegExpConstructor.cpp:
1958         (JSC::RegExpConstructor::RegExpConstructor):
1959             - Initialize m_result/m_multiline properties.
1960         (JSC::RegExpConstructor::visitChildren):
1961             - Make sure the cached results (or lazy source for them) are marked.
1962         (JSC::RegExpConstructor::getBackref):
1963         (JSC::RegExpConstructor::getLastParen):
1964         (JSC::RegExpConstructor::getLeftContext):
1965         (JSC::RegExpConstructor::getRightContext):
1966             - Moved from RegExpConstructor, moved to RegExpCachedResult, and using new caching scheme.
1967         (JSC::regExpConstructorInput):
1968         (JSC::setRegExpConstructorInput):
1969             - Changed to use RegExpCachedResult.
1970         * runtime/RegExpConstructor.h:
1971         (JSC::RegExpConstructor::create):
1972         (RegExpConstructor):
1973         (JSC::RegExpConstructor::setMultiline):
1974         (JSC::RegExpConstructor::multiline):
1975             - Move multiline property onto the constructor object; it is not affected by the last match.
1976         (JSC::RegExpConstructor::setInput):
1977         (JSC::RegExpConstructor::input):
1978             - These defer to RegExpCachedResult.
1979         (JSC::RegExpConstructor::performMatch):
1980         * runtime/RegExpMatchesArray.cpp: Added.
1981         (JSC::RegExpMatchesArray::visitChildren):
1982             - Eeeep! added missing visitChildren!
1983         (JSC::RegExpMatchesArray::finishCreation):
1984         (JSC::RegExpMatchesArray::reifyAllProperties):
1985         (JSC::RegExpMatchesArray::reifyMatchProperty):
1986             - Moved from RegExpConstructor.cpp.
1987         (JSC::RegExpMatchesArray::leftContext):
1988         (JSC::RegExpMatchesArray::rightContext):
1989             - Since the match start/
1990         * runtime/RegExpMatchesArray.h:
1991         (RegExpMatchesArray):
1992             - Declare new methods & structure flags.
1993         * runtime/RegExpObject.cpp:
1994         (JSC::RegExpObject::match):
1995             - performMatch now requires the JSString input, to cache.
1996         * runtime/StringPrototype.cpp:
1997         (JSC::removeUsingRegExpSearch):
1998         (JSC::replaceUsingRegExpSearch):
1999         (JSC::stringProtoFuncMatch):
2000         (JSC::stringProtoFuncSearch):
2001             - performMatch now requires the JSString input, to cache.
2002
2003 2012-03-23  Tony Chang  <tony@chromium.org>
2004
2005         [chromium] rename newwtf target back to wtf
2006         https://bugs.webkit.org/show_bug.cgi?id=82064
2007
2008         Reviewed by Adam Barth.
2009
2010         * JavaScriptCore.gyp/JavaScriptCore.gyp:
2011
2012 2012-03-23  Mark Hahnenberg  <mhahnenberg@apple.com>
2013
2014         Simplify memory usage tracking in CopiedSpace
2015         https://bugs.webkit.org/show_bug.cgi?id=80705
2016
2017         Reviewed by Filip Pizlo.
2018
2019         * heap/CopiedAllocator.h:
2020         (CopiedAllocator): Rename currentUtilization to currentSize.
2021         (JSC::CopiedAllocator::currentCapacity):
2022         * heap/CopiedBlock.h:
2023         (CopiedBlock):
2024         (JSC::CopiedBlock::payload): Move the implementation of payload() out of the class
2025         declaration.
2026         (JSC):
2027         (JSC::CopiedBlock::size): Add new function to calculate the block's size.
2028         (JSC::CopiedBlock::capacity): Ditto for capacity.
2029         * heap/CopiedSpace.cpp:
2030         (JSC::CopiedSpace::CopiedSpace): Remove old bogus memory stats fields and add a new
2031         field for the water mark.
2032         (JSC::CopiedSpace::init):
2033         (JSC::CopiedSpace::tryAllocateSlowCase): When we fail to allocate from the current 
2034         block, we need to update our current water mark with the size of the block.
2035         (JSC::CopiedSpace::tryAllocateOversize): When we allocate a new oversize block, we 
2036         need to update our current water mark with the size of the used portion of the block.
2037         (JSC::CopiedSpace::tryReallocate): We don't need to update the water mark when 
2038         reallocating because it will either get accounted for when we fill up the block later 
2039         in the case of being able to reallocate in the current block or it will get picked up 
2040         immediately because we'll have to get a new block.
2041         (JSC::CopiedSpace::tryReallocateOversize): We do, however, need to update in when 
2042         realloc-ing an oversize block because we deallocate the old block and allocate a brand 
2043         new one.
2044         (JSC::CopiedSpace::doneFillingBlock): Update the water mark as blocks are returned to 
2045         the CopiedSpace by the SlotVisitors.
2046         (JSC::CopiedSpace::doneCopying): Add in any pinned blocks to the water mark.
2047         (JSC::CopiedSpace::getFreshBlock): We use the Heap's new function to tell us whether or 
2048         not we should collect now instead of doing the calculation ourself.
2049         (JSC::CopiedSpace::destroy):
2050         (JSC):
2051         (JSC::CopiedSpace::size): Manually calculate the size of the CopiedSpace, similar to how 
2052         MarkedSpace does.
2053         (JSC::CopiedSpace::capacity): Ditto for capacity.
2054         * heap/CopiedSpace.h:
2055         (JSC::CopiedSpace::waterMark):
2056         (CopiedSpace):
2057         * heap/CopiedSpaceInlineMethods.h:
2058         (JSC::CopiedSpace::startedCopying): Reset water mark to 0 when we start copying during a 
2059         collection.
2060         (JSC::CopiedSpace::allocateNewBlock):
2061         (JSC::CopiedSpace::fitsInBlock):
2062         (JSC::CopiedSpace::allocateFromBlock):
2063         * heap/Heap.cpp:
2064         (JSC::Heap::size): Incorporate size of CopiedSpace into the total size of the Heap.
2065         (JSC::Heap::capacity): Ditto for capacity.
2066         (JSC::Heap::collect):
2067         * heap/Heap.h:
2068         (Heap):
2069         (JSC::Heap::shouldCollect): New function for other sub-parts of the Heap to use to 
2070         determine whether they should initiate a collection or continue to allocate new blocks.
2071         (JSC):
2072         (JSC::Heap::waterMark): Now is the sum of the water marks of the two sub-parts of the
2073         Heap (MarkedSpace and CopiedSpace).
2074         * heap/MarkedAllocator.cpp:
2075         (JSC::MarkedAllocator::allocateSlowCase): Changed to use the Heap's new shouldCollect() function.
2076
2077 2012-03-23  Ryosuke Niwa  <rniwa@webkit.org>
2078
2079         BitVector::resizeOutOfLine doesn't memset when converting an inline buffer
2080         https://bugs.webkit.org/show_bug.cgi?id=82012
2081
2082         Reviewed by Filip Pizlo.
2083
2084         Initialize out-of-line buffers while extending an inline buffer. Also export symbols to be used in WebCore.
2085
2086         * wtf/BitVector.cpp:
2087         (WTF::BitVector::resizeOutOfLine):
2088         * wtf/BitVector.h:
2089         (BitVector):
2090         (OutOfLineBits):
2091
2092 2012-03-22  Michael Saboff  <msaboff@apple.com>
2093
2094         ExecutableAllocator::memoryPressureMultiplier() might can return NaN
2095         https://bugs.webkit.org/show_bug.cgi?id=82002
2096
2097         Reviewed by Filip Pizlo.
2098
2099         Guard against divide by zero and then make sure the return
2100         value is >= 1.0.
2101
2102         * jit/ExecutableAllocator.cpp:
2103         (JSC::ExecutableAllocator::memoryPressureMultiplier):
2104         * jit/ExecutableAllocatorFixedVMPool.cpp:
2105         (JSC::ExecutableAllocator::memoryPressureMultiplier):
2106
2107 2012-03-22  Jessie Berlin  <jberlin@apple.com>
2108
2109         Windows build fix after r111778.
2110
2111         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
2112         Don't include and try to build files owned by WTF.
2113         Also, let VS have its way with the vcproj in terms of file ordering.
2114
2115 2012-03-22  Raphael Kubo da Costa  <rakuco@FreeBSD.org>
2116
2117         [CMake] Unreviewed build fix after r111778.
2118
2119         * CMakeLists.txt: Move ${WTF_DIR} after ${JAVASCRIPTCORE_DIR} in
2120         the include paths so that the right config.h is used.
2121
2122 2012-03-22  Tony Chang  <tony@chromium.org>
2123
2124         Unreviewed, fix chromium build after wtf move.
2125
2126         Remove old wtf_config and wtf targets.
2127
2128         * JavaScriptCore.gyp/JavaScriptCore.gyp:
2129
2130 2012-03-22  Martin Robinson  <mrobinson@igalia.com>
2131
2132         Fixed the GTK+ WTF/JavaScriptCore build after r111778.
2133
2134         * GNUmakefile.list.am: Removed an extra trailing backslash.
2135
2136 2012-03-22  Mark Rowe  <mrowe@apple.com>
2137
2138         Fix the build.
2139
2140         * Configurations/JavaScriptCore.xcconfig: Tell the linker to pull in all members from static libraries
2141         rather than only those that contain symbols that JavaScriptCore itself uses.
2142         * JavaScriptCore.xcodeproj/project.pbxproj: Remove some bogus settings that crept in to the Xcode project.
2143
2144 2012-03-22  Filip Pizlo  <fpizlo@apple.com>
2145
2146         DFG NodeFlags has some duplicate code and naming issues
2147         https://bugs.webkit.org/show_bug.cgi?id=81975
2148
2149         Reviewed by Gavin Barraclough.
2150         
2151         Removed most references to "ArithNodeFlags" since those are now just part
2152         of the node flags. Fixed some renaming goofs (EdgedAsNum is once again
2153         NodeUsedAsNum). Got rid of setArithNodeFlags() and mergeArithNodeFlags()
2154         because the former was never called and the latter did the same things as
2155         mergeFlags().
2156
2157         * dfg/DFGByteCodeParser.cpp:
2158         (JSC::DFG::ByteCodeParser::makeSafe):
2159         (JSC::DFG::ByteCodeParser::makeDivSafe):
2160         (JSC::DFG::ByteCodeParser::handleIntrinsic):
2161         * dfg/DFGGraph.cpp:
2162         (JSC::DFG::Graph::dump):
2163         * dfg/DFGNode.h:
2164         (JSC::DFG::Node::arithNodeFlags):
2165         (Node):
2166         * dfg/DFGNodeFlags.cpp:
2167         (JSC::DFG::nodeFlagsAsString):
2168         * dfg/DFGNodeFlags.h:
2169         (DFG):
2170         (JSC::DFG::nodeUsedAsNumber):
2171         * dfg/DFGPredictionPropagationPhase.cpp:
2172         (JSC::DFG::PredictionPropagationPhase::propagate):
2173         (JSC::DFG::PredictionPropagationPhase::mergeDefaultArithFlags):
2174
2175 2012-03-22  Eric Seidel  <eric@webkit.org>
2176
2177         Actually move WTF files to their new home
2178         https://bugs.webkit.org/show_bug.cgi?id=81844
2179
2180         Unreviewed.  The details of the port-specific changes
2181         have been seen by contributors from those ports, but
2182         the whole 5MB change isn't very reviewable as-is.
2183
2184         * GNUmakefile.am:
2185         * GNUmakefile.list.am:
2186         * JSCTypedArrayStubs.h:
2187         * JavaScriptCore.gypi:
2188         * JavaScriptCore.xcodeproj/project.pbxproj:
2189         * jsc.cpp:
2190
2191 2012-03-22  Kevin Ollivier  <kevino@theolliviers.com>
2192
2193         [wx] Unreviewed. Adding Source/WTF to the build.
2194
2195         * wscript:
2196
2197 2012-03-22  Gavin Barraclough  <barraclough@apple.com>
2198
2199         Add JSValue::isFunction
2200         https://bugs.webkit.org/show_bug.cgi?id=81935
2201
2202         Reviewed by Geoff Garen.
2203
2204         This would be useful in the WebCore bindings code.
2205         Also, remove asFunction, replace with jsCast<JSFunction*>.
2206
2207         * API/JSContextRef.cpp:
2208         * debugger/Debugger.cpp:
2209         * debugger/DebuggerCallFrame.cpp:
2210         (JSC::DebuggerCallFrame::functionName):
2211         * dfg/DFGGraph.h:
2212         (JSC::DFG::Graph::valueOfFunctionConstant):
2213         * dfg/DFGOperations.cpp:
2214         * interpreter/CallFrame.cpp:
2215         (JSC::CallFrame::isInlineCallFrameSlow):
2216         * interpreter/Interpreter.cpp:
2217         (JSC::Interpreter::privateExecute):
2218         * jit/JITStubs.cpp:
2219         (JSC::DEFINE_STUB_FUNCTION):
2220         (JSC::jitCompileFor):
2221         (JSC::lazyLinkFor):
2222         * llint/LLIntSlowPaths.cpp:
2223         (JSC::LLInt::traceFunctionPrologue):
2224         (JSC::LLInt::LLINT_SLOW_PATH_DECL):
2225         (JSC::LLInt::setUpCall):
2226         * runtime/Arguments.h:
2227         (JSC::Arguments::finishCreation):
2228         * runtime/ArrayPrototype.cpp:
2229         (JSC::arrayProtoFuncFilter):
2230         (JSC::arrayProtoFuncMap):
2231         (JSC::arrayProtoFuncEvery):
2232         (JSC::arrayProtoFuncForEach):
2233         (JSC::arrayProtoFuncSome):
2234         (JSC::arrayProtoFuncReduce):
2235         (JSC::arrayProtoFuncReduceRight):
2236         * runtime/CommonSlowPaths.h:
2237         (JSC::CommonSlowPaths::arityCheckFor):
2238         * runtime/Executable.h:
2239         (JSC::FunctionExecutable::compileFor):
2240         (JSC::FunctionExecutable::compileOptimizedFor):
2241         * runtime/FunctionPrototype.cpp:
2242         (JSC::functionProtoFuncToString):
2243         * runtime/JSArray.cpp:
2244         (JSC::JSArray::sort):
2245         * runtime/JSFunction.cpp:
2246         (JSC::JSFunction::argumentsGetter):
2247         (JSC::JSFunction::callerGetter):
2248         (JSC::JSFunction::lengthGetter):
2249         * runtime/JSFunction.h:
2250         (JSC):
2251         (JSC::asJSFunction):
2252         (JSC::JSValue::isFunction):
2253         * runtime/JSGlobalData.cpp:
2254         (WTF::Recompiler::operator()):
2255         (JSC::JSGlobalData::releaseExecutableMemory):
2256         * runtime/JSValue.h:
2257         * runtime/StringPrototype.cpp:
2258         (JSC::replaceUsingRegExpSearch):
2259
2260 2012-03-21  Filip Pizlo  <fpizlo@apple.com>
2261
2262         DFG speculation on booleans should be rationalized
2263         https://bugs.webkit.org/show_bug.cgi?id=81840
2264
2265         Reviewed by Gavin Barraclough.
2266         
2267         This removes isKnownBoolean() and replaces it with AbstractState-based
2268         optimization, and cleans up the control flow in code gen methods for
2269         Branch and LogicalNot. Also fixes a goof in Node::shouldSpeculateNumber,
2270         and removes isKnownNotBoolean() since that method appeared to be a
2271         helper used solely by 32_64's speculateBooleanOperation().
2272         
2273         This is performance-neutral.
2274
2275         * dfg/DFGAbstractState.cpp:
2276         (JSC::DFG::AbstractState::execute):
2277         * dfg/DFGNode.h:
2278         (JSC::DFG::Node::shouldSpeculateNumber):
2279         * dfg/DFGSpeculativeJIT.cpp:
2280         (DFG):
2281         * dfg/DFGSpeculativeJIT.h:
2282         (SpeculativeJIT):
2283         * dfg/DFGSpeculativeJIT32_64.cpp:
2284         (JSC::DFG::SpeculativeJIT::fillSpeculateBoolean):
2285         (JSC::DFG::SpeculativeJIT::compileLogicalNot):
2286         (JSC::DFG::SpeculativeJIT::emitBranch):
2287         (JSC::DFG::SpeculativeJIT::compile):
2288         * dfg/DFGSpeculativeJIT64.cpp:
2289         (JSC::DFG::SpeculativeJIT::compileLogicalNot):
2290         (JSC::DFG::SpeculativeJIT::emitBranch):
2291         (JSC::DFG::SpeculativeJIT::compile):
2292
2293 2012-03-21  Mark Rowe  <mrowe@apple.com>
2294
2295         Fix the build.
2296
2297         * wtf/MetaAllocator.h:
2298         (MetaAllocator): Export the destructor.
2299
2300 2012-03-21  Eric Seidel  <eric@webkit.org>
2301
2302         Fix remaining WTF includes in JavaScriptCore in preparation for moving WTF headers out of JavaScriptCore
2303         https://bugs.webkit.org/show_bug.cgi?id=81834
2304
2305         Reviewed by Adam Barth.
2306
2307         * jsc.cpp:
2308         * os-win32/WinMain.cpp:
2309         * runtime/JSDateMath.cpp:
2310         * runtime/TimeoutChecker.cpp:
2311         * testRegExp.cpp:
2312         * tools/CodeProfiling.cpp:
2313
2314 2012-03-21  Eric Seidel  <eric@webkit.org>
2315
2316         WTF::MetaAllocator has a weak vtable (discovered when building wtf as a static library)
2317         https://bugs.webkit.org/show_bug.cgi?id=81838
2318
2319         Reviewed by Geoffrey Garen.
2320
2321         My understanding is that weak vtables happen when the compiler/linker cannot
2322         determine which compilation unit should constain the vtable.  In this case
2323         because there were only pure virtual functions as well as an "inline"
2324         virtual destructor (thus the virtual destructor was defined in many compilation
2325         units).  Since you can't actually "inline" a virtual function (it still has to
2326         bounce through the vtable), the "inline" on this virutal destructor doesn't
2327         actually help performance, and is only serving to confuse the compiler here.
2328         I've moved the destructor implementation to the .cpp file, thus making
2329         it clear to the compiler where the vtable should be stored, and solving the error.
2330
2331         * wtf/MetaAllocator.cpp:
2332         (WTF::MetaAllocator::~MetaAllocator):
2333         (WTF):
2334         * wtf/MetaAllocator.h:
2335
2336 2012-03-20  Gavin Barraclough  <barraclough@apple.com>
2337
2338         RegExpMatchesArray should not copy the ovector
2339         https://bugs.webkit.org/show_bug.cgi?id=81742
2340
2341         Reviewed by Michael Saboff.
2342
2343         Currently, all RegExpMatchesArray object contain Vector<int, 32>, used to hold any sub-pattern results.
2344         This makes allocation/construction/destruction of these objects more expensive. Instead, just store the
2345         main match, and recreate the sub-pattern ranges only if necessary (these are often only used for grouping,
2346         and the results never accessed).
2347         If the main match (index 0) of the RegExpMatchesArray is accessed, reify that value alone.
2348
2349         * dfg/DFGOperations.cpp:
2350             - RegExpObject match renamed back to test (test returns a bool).
2351         * runtime/RegExpConstructor.cpp:
2352         (JSC):
2353             - Removed RegExpResult, RegExpMatchesArray constructor, destroy method.
2354         (JSC::RegExpMatchesArray::finishCreation):
2355             - Removed RegExpConstructorPrivate parameter.
2356         (JSC::RegExpMatchesArray::reifyAllProperties):
2357             - (Was fillArrayInstance) Reify all properties of the RegExpMatchesArray.
2358             If there are sub-pattern properties, the RegExp is re-run to generate their values.
2359         (JSC::RegExpMatchesArray::reifyMatchProperty):
2360             - Reify just the match (index 0) property of the RegExpMatchesArray.
2361         * runtime/RegExpConstructor.h:
2362         (RegExpConstructor):
2363         (JSC::RegExpConstructor::performMatch):
2364             - performMatch now returns a MatchResult, rather than using out-parameters.
2365         * runtime/RegExpMatchesArray.h:
2366         (JSC::RegExpMatchesArray::RegExpMatchesArray):
2367             - Moved from .cpp, stores the input/regExp/result to use when lazily reifying properties.
2368         (RegExpMatchesArray):
2369         (JSC::RegExpMatchesArray::create):
2370             - Now passed the input string matched against, the RegExp, and the MatchResult.
2371         (JSC::RegExpMatchesArray::reifyAllPropertiesIfNecessary):
2372         (JSC::RegExpMatchesArray::reifyMatchPropertyIfNecessary):
2373             - Helpers to conditionally reify properties.
2374         (JSC::RegExpMatchesArray::getOwnPropertySlot):
2375         (JSC::RegExpMatchesArray::getOwnPropertySlotByIndex):
2376         (JSC::RegExpMatchesArray::getOwnPropertyDescriptor):
2377         (JSC::RegExpMatchesArray::put):
2378         (JSC::RegExpMatchesArray::putByIndex):
2379         (JSC::RegExpMatchesArray::deleteProperty):
2380         (JSC::RegExpMatchesArray::deletePropertyByIndex):
2381         (JSC::RegExpMatchesArray::getOwnPropertyNames):
2382         (JSC::RegExpMatchesArray::defineOwnProperty):
2383             - Changed to use reifyAllPropertiesIfNecessary/reifyMatchPropertyIfNecessary
2384             (getOwnPropertySlotByIndex calls reifyMatchPropertyIfNecessary if index is 0).
2385         * runtime/RegExpObject.cpp:
2386         (JSC::RegExpObject::exec):
2387         (JSC::RegExpObject::match):
2388             - match now returns a MatchResult.
2389         * runtime/RegExpObject.h:
2390         (JSC::MatchResult::MatchResult):
2391             - Added the result of a match is a start & end tuple.
2392         (JSC::MatchResult::failed):
2393             - A failure is indicated by (notFound, 0).
2394         (JSC::MatchResult::operator bool):
2395             - Evaluates to false if the match failed.
2396         (JSC::MatchResult::empty):
2397             - Evaluates to true if the match succeeded with length 0.
2398         (JSC::RegExpObject::test):
2399             - Now returns a bool.
2400         * runtime/RegExpPrototype.cpp:
2401         (JSC::regExpProtoFuncTest):
2402             - RegExpObject match renamed back to test (test returns a bool).
2403         * runtime/StringPrototype.cpp:
2404         (JSC::removeUsingRegExpSearch):
2405         (JSC::replaceUsingRegExpSearch):
2406         (JSC::stringProtoFuncMatch):
2407         (JSC::stringProtoFuncSearch):
2408             - performMatch now returns a MatchResult, rather than using out-parameters.
2409
2410 2012-03-21  Hojong Han  <hojong.han@samsung.com>
2411
2412         Fix out of memory by allowing overcommit
2413         https://bugs.webkit.org/show_bug.cgi?id=81743
2414
2415         Reviewed by Geoffrey Garen.
2416
2417         Garbage collection is not triggered and new blocks are added
2418         because overcommit is allowed by MAP_NORESERVE flag when high water mark is big enough.
2419
2420         * wtf/OSAllocatorPosix.cpp:
2421         (WTF::OSAllocator::reserveAndCommit):
2422
2423 2012-03-21  Jessie Berlin  <jberlin@apple.com>
2424
2425         More Windows build fixing.
2426
2427         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
2428         Fix the order of the include directories to look in include/private first before looking
2429         in include/private/JavaScriptCore.
2430         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleasePGO.vsprops:
2431         Look in the Production output directory (where the wtf headers will be). This is the same
2432         thing that is done for jsc and testRegExp in ReleasePGO.
2433
2434 2012-03-21  Jessie Berlin  <jberlin@apple.com>
2435
2436         WTF headers should be in $(ConfigurationBuildDir)\include\private\wtf, not
2437         $(ConfigurationBuildDir)\include\private\JavaScriptCore\wtf.
2438         https://bugs.webkit.org/show_bug.cgi?id=81739
2439
2440         Reviewed by Dan Bernstein.
2441
2442         * JavaScriptCore.vcproj/jsc/jsc.vcproj:
2443         Look for AtomicString.cpp, StringBuilder.cpp, StringImpl.cpp, and WTFString.cpp in the wtf
2444         subdirectory of the build output, not the JavaScriptCore/wtf subdirectory.
2445         * JavaScriptCore.vcproj/testRegExp/testRegExp.vcproj:
2446         Ditto.
2447
2448         * JavaScriptCore.vcproj/testRegExp/testRegExpReleasePGO.vsprops:
2449         Get the headers for those 4 files from the wtf subdirectory of the build output, not the
2450         JavaScriptCore/wtf subdirectory.
2451         * JavaScriptCore.vcproj/jsc/jscReleasePGO.vsprops:
2452         Ditto.
2453
2454 2012-03-20  Eric Seidel  <eric@webkit.org>
2455
2456         Move wtf/Platform.h from JavaScriptCore to Source/WTF/wtf
2457         https://bugs.webkit.org/show_bug.cgi?id=80911
2458
2459         Reviewed by Adam Barth.
2460
2461         Update the various build systems to depend on Source/WTF headers
2462         as well as remove references to Platform.h (since it's now moved).
2463
2464         * CMakeLists.txt:
2465         * JavaScriptCore.pri:
2466         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
2467         * JavaScriptCore.xcodeproj/project.pbxproj:
2468         * wtf/CMakeLists.txt:
2469
2470 2012-03-20  Filip Pizlo  <fpizlo@apple.com>
2471
2472         op_mod fails on many interesting corner cases
2473         https://bugs.webkit.org/show_bug.cgi?id=81648
2474
2475         Reviewed by Oliver Hunt.
2476         
2477         Removed most strength reduction for op_mod, and fixed the integer handling
2478         to do the right thing for corner cases. Oddly, this revealed bugs in OSR,
2479         which this patch also fixes.
2480         
2481         This patch is performance neutral on all of the major benchmarks we track.
2482
2483         * dfg/DFGOperations.cpp:
2484         * dfg/DFGOperations.h:
2485         * dfg/DFGSpeculativeJIT.cpp:
2486         (DFG):
2487         (JSC::DFG::SpeculativeJIT::compileSoftModulo):
2488         (JSC::DFG::SpeculativeJIT::compileArithMod):
2489         * jit/JIT.h:
2490         (JIT):
2491         * jit/JITArithmetic.cpp:
2492         (JSC):
2493         (JSC::JIT::emit_op_mod):
2494         (JSC::JIT::emitSlow_op_mod):
2495         * jit/JITArithmetic32_64.cpp:
2496         (JSC::JIT::emit_op_mod):
2497         (JSC::JIT::emitSlow_op_mod):
2498         * jit/JITOpcodes32_64.cpp:
2499         (JSC::JIT::privateCompileCTIMachineTrampolines):
2500         (JSC):
2501         * jit/JITStubs.h:
2502         (TrampolineStructure):
2503         (JSC::JITThunks::ctiNativeConstruct):
2504         * llint/LowLevelInterpreter64.asm:
2505         * wtf/Platform.h:
2506         * wtf/SimpleStats.h:
2507         (WTF::SimpleStats::variance):
2508
2509 2012-03-20  Steve Falkenburg  <sfalken@apple.com>
2510
2511         Windows (make based) build fix.
2512         <rdar://problem/11069015>
2513
2514         * JavaScriptCore.vcproj/JavaScriptCore.make: devenv /rebuild doesn't work with JavaScriptCore.vcproj. Use /clean and /build instead.
2515
2516 2012-03-20  Steve Falkenburg  <sfalken@apple.com>
2517
2518         Move WTF-related Windows project files out of JavaScriptCore
2519         https://bugs.webkit.org/show_bug.cgi?id=80680
2520
2521         This change only moves the vcproj and related files from JavaScriptCore/JavaScriptCore.vcproj/WTF.
2522         It does not move any source code. This is in preparation for the WTF source move out of
2523         JavaScriptCore.
2524
2525         Reviewed by Jessie Berlin.
2526
2527         * JavaScriptCore.vcproj/JavaScriptCore.sln:
2528         * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln:
2529         * JavaScriptCore.vcproj/WTF: Removed.
2530         * JavaScriptCore.vcproj/WTF/WTF.vcproj: Removed.
2531         * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops: Removed.
2532         * JavaScriptCore.vcproj/WTF/WTFDebug.vsprops: Removed.
2533         * JavaScriptCore.vcproj/WTF/WTFDebugAll.vsprops: Removed.
2534         * JavaScriptCore.vcproj/WTF/WTFDebugCairoCFLite.vsprops: Removed.
2535         * JavaScriptCore.vcproj/WTF/WTFGenerated.make: Removed.
2536         * JavaScriptCore.vcproj/WTF/WTFGenerated.vcproj: Removed.
2537         * JavaScriptCore.vcproj/WTF/WTFGeneratedCommon.vsprops: Removed.
2538         * JavaScriptCore.vcproj/WTF/WTFGeneratedDebug.vsprops: Removed.
2539         * JavaScriptCore.vcproj/WTF/WTFGeneratedDebugAll.vsprops: Removed.
2540         * JavaScriptCore.vcproj/WTF/WTFGeneratedDebugCairoCFLite.vsprops: Removed.
2541         * JavaScriptCore.vcproj/WTF/WTFGeneratedProduction.vsprops: Removed.
2542         * JavaScriptCore.vcproj/WTF/WTFGeneratedRelease.vsprops: Removed.
2543         * JavaScriptCore.vcproj/WTF/WTFGeneratedReleaseCairoCFLite.vsprops: Removed.
2544         * JavaScriptCore.vcproj/WTF/WTFPostBuild.cmd: Removed.
2545         * JavaScriptCore.vcproj/WTF/WTFPreBuild.cmd: Removed.
2546         * JavaScriptCore.vcproj/WTF/WTFProduction.vsprops: Removed.
2547         * JavaScriptCore.vcproj/WTF/WTFRelease.vsprops: Removed.
2548         * JavaScriptCore.vcproj/WTF/WTFReleaseCairoCFLite.vsprops: Removed.
2549         * JavaScriptCore.vcproj/WTF/build-generated-files.sh: Removed.
2550         * JavaScriptCore.vcproj/WTF/copy-files.cmd: Removed.
2551         * JavaScriptCore.vcproj/WTF/work-around-vs-dependency-tracking-bugs.py: Removed.
2552
2553 2012-03-20  Benjamin Poulain  <bpoulain@apple.com>
2554
2555         Cache the type string of JavaScript object
2556         https://bugs.webkit.org/show_bug.cgi?id=81446
2557
2558         Reviewed by Geoffrey Garen.
2559
2560         Instead of creating the JSString every time, we create
2561         lazily the strings in JSGlobalData.
2562
2563         This avoid the construction of the StringImpl and of the JSString,
2564         which gives some performance improvements.
2565
2566         * runtime/CommonIdentifiers.h:
2567         * runtime/JSValue.cpp:
2568         (JSC::JSValue::toStringSlowCase):
2569         * runtime/Operations.cpp:
2570         (JSC::jsTypeStringForValue):
2571         * runtime/SmallStrings.cpp:
2572         (JSC::SmallStrings::SmallStrings):
2573         (JSC::SmallStrings::finalizeSmallStrings):
2574         (JSC::SmallStrings::initialize):
2575         (JSC):
2576         * runtime/SmallStrings.h:
2577         (SmallStrings):
2578
2579 2012-03-20  Oliver Hunt  <oliver@apple.com>
2580
2581         Allow LLINT to work even when executable allocation fails.
2582         https://bugs.webkit.org/show_bug.cgi?id=81693
2583
2584         Reviewed by Gavin Barraclough.
2585
2586         Don't crash if executable allocation fails if we can fall back on LLINT
2587
2588         * jit/ExecutableAllocatorFixedVMPool.cpp:
2589         (JSC::FixedVMPoolExecutableAllocator::FixedVMPoolExecutableAllocator):
2590         * wtf/OSAllocatorPosix.cpp:
2591         (WTF::OSAllocator::reserveAndCommit):
2592
2593 2012-03-20  Csaba Osztrogonác  <ossy@webkit.org>
2594
2595         Division optimizations fail to infer cases of truncated division and mishandle -2147483648/-1
2596         https://bugs.webkit.org/show_bug.cgi?id=81428
2597
2598         32 bit buildfix after r111355.
2599
2600         2147483648 (2^31) isn't valid int literal in ISO C90, because 2147483647 (2^31-1) is the biggest int.
2601         The smallest int is -2147483648 (-2^31) == -2147483647 - 1  == -INT32_MAX-1 == INT32_MIN (stdint.h).
2602
2603         Reviewed by Zoltan Herczeg.
2604
2605         * dfg/DFGSpeculativeJIT.cpp:
2606         (JSC::DFG::SpeculativeJIT::compileIntegerArithDivForX86):
2607
2608 2012-03-19  Jochen Eisinger  <jochen@chromium.org>
2609
2610         Split WTFReportBacktrace into WTFReportBacktrace and WTFPrintBacktrace
2611         https://bugs.webkit.org/show_bug.cgi?id=80983
2612
2613         Reviewed by Darin Adler.
2614
2615         This allows printing a backtrace acquired by an earlier WTFGetBacktrace
2616         call which is useful for local debugging.
2617
2618         * wtf/Assertions.cpp:
2619         * wtf/Assertions.h:
2620
2621 2012-03-19  Benjamin Poulain  <benjamin@webkit.org>
2622
2623         Do not copy the script source in the SourceProvider, just reference the existing string
2624         https://bugs.webkit.org/show_bug.cgi?id=81466
2625
2626         Reviewed by Geoffrey Garen.
2627
2628         * parser/SourceCode.h: Remove the unused, and incorrect, function data().
2629         * parser/SourceProvider.h: Add OVERRIDE for clarity.
2630
2631 2012-03-19  Filip Pizlo  <fpizlo@apple.com>
2632
2633         Division optimizations fail to infer cases of truncated division and
2634         mishandle -2147483648/-1
2635         https://bugs.webkit.org/show_bug.cgi?id=81428
2636         <rdar://problem/11067382>
2637
2638         Reviewed by Oliver Hunt.
2639
2640         If you're a division over integers and you're only used as an integer, then you're
2641         an integer division and remainder checks become unnecessary. If you're dividing
2642         -2147483648 by -1, don't crash.
2643
2644         * assembler/MacroAssemblerX86Common.h:
2645         (MacroAssemblerX86Common):
2646         (JSC::MacroAssemblerX86Common::add32):
2647         * dfg/DFGSpeculativeJIT.cpp:
2648         (DFG):
2649         (JSC::DFG::SpeculativeJIT::compileIntegerArithDivForX86):
2650         * dfg/DFGSpeculativeJIT.h:
2651         (SpeculativeJIT):
2652         * dfg/DFGSpeculativeJIT32_64.cpp:
2653         (JSC::DFG::SpeculativeJIT::compile):
2654         * dfg/DFGSpeculativeJIT64.cpp:
2655         (JSC::DFG::SpeculativeJIT::compile):
2656         * llint/LowLevelInterpreter64.asm:
2657
2658 2012-03-19  Benjamin Poulain  <bpoulain@apple.com>
2659
2660         Simplify SmallStrings
2661         https://bugs.webkit.org/show_bug.cgi?id=81445
2662
2663         Reviewed by Gavin Barraclough.
2664
2665         SmallStrings had two methods that should not be public: count() and clear().
2666
2667         The method clear() is effectively replaced by finalizeSmallStrings(). The body
2668         of the method was moved to the constructor since the code is obvious.
2669
2670         The method count() is unused.
2671
2672         * runtime/SmallStrings.cpp:
2673         (JSC::SmallStrings::SmallStrings):
2674         * runtime/SmallStrings.h:
2675         (SmallStrings):
2676
2677 2012-03-19  Filip Pizlo  <fpizlo@apple.com>
2678
2679         DFG can no longer compile V8-v4/regexp in debug mode
2680         https://bugs.webkit.org/show_bug.cgi?id=81592
2681
2682         Reviewed by Gavin Barraclough.
2683
2684         * dfg/DFGSpeculativeJIT32_64.cpp:
2685         (JSC::DFG::SpeculativeJIT::compile):
2686         * dfg/DFGSpeculativeJIT64.cpp:
2687         (JSC::DFG::SpeculativeJIT::compile):
2688
2689 2012-03-19  Filip Pizlo  <fpizlo@apple.com>
2690
2691         Prediction propagation for UInt32ToNumber incorrectly assumes that outs outcome does not
2692         change throughout the fixpoint
2693         https://bugs.webkit.org/show_bug.cgi?id=81583
2694
2695         Reviewed by Michael Saboff.
2696
2697         * dfg/DFGPredictionPropagationPhase.cpp:
2698         (JSC::DFG::PredictionPropagationPhase::propagate):
2699
2700 2012-03-19  Filip Pizlo  <fpizlo@apple.com>
2701
2702         GC should not attempt to clear LLInt instruction inline caches for code blocks that are in
2703         the process of being generated
2704         https://bugs.webkit.org/show_bug.cgi?id=81565
2705
2706         Reviewed by Oliver Hunt.
2707
2708         * bytecode/CodeBlock.cpp:
2709         (JSC::CodeBlock::finalizeUnconditionally):
2710
2711 2012-03-19  Eric Seidel  <eric@webkit.org>
2712
2713         Fix WTF header include discipline in Chromium WebKit
2714         https://bugs.webkit.org/show_bug.cgi?id=81281
2715
2716         Reviewed by James Robinson.
2717
2718         * JavaScriptCore.gyp/JavaScriptCore.gyp:
2719         * wtf/unicode/icu/CollatorICU.cpp:
2720
2721 2012-03-19  Filip Pizlo  <fpizlo@apple.com>
2722
2723         DFG NodeUse should be called Edge and NodeReferenceBlob should be called AdjacencyList
2724         https://bugs.webkit.org/show_bug.cgi?id=81556
2725
2726         Rubber stamped by Gavin Barraclough.
2727
2728         * GNUmakefile.list.am:
2729         * JavaScriptCore.xcodeproj/project.pbxproj:
2730         * dfg/DFGAbstractState.h:
2731         (JSC::DFG::AbstractState::forNode):
2732         * dfg/DFGAdjacencyList.h: Copied from Source/JavaScriptCore/dfg/DFGNodeReferenceBlob.h.
2733         (JSC::DFG::AdjacencyList::AdjacencyList):
2734         (JSC::DFG::AdjacencyList::child):
2735         (JSC::DFG::AdjacencyList::setChild):
2736         (JSC::DFG::AdjacencyList::child1):
2737         (JSC::DFG::AdjacencyList::child2):
2738         (JSC::DFG::AdjacencyList::child3):
2739         (JSC::DFG::AdjacencyList::setChild1):
2740         (JSC::DFG::AdjacencyList::setChild2):
2741         (JSC::DFG::AdjacencyList::setChild3):
2742         (JSC::DFG::AdjacencyList::child1Unchecked):
2743         (JSC::DFG::AdjacencyList::initialize):
2744         (AdjacencyList):
2745         * dfg/DFGByteCodeParser.cpp:
2746         (JSC::DFG::ByteCodeParser::addVarArgChild):
2747         (JSC::DFG::ByteCodeParser::processPhiStack):
2748         * dfg/DFGCSEPhase.cpp:
2749         (JSC::DFG::CSEPhase::canonicalize):
2750         (JSC::DFG::CSEPhase::performSubstitution):
2751         * dfg/DFGEdge.h: Copied from Source/JavaScriptCore/dfg/DFGNodeUse.h.
2752         (DFG):
2753         (JSC::DFG::Edge::Edge):
2754         (JSC::DFG::Edge::operator==):
2755         (JSC::DFG::Edge::operator!=):
2756         (Edge):
2757         (JSC::DFG::operator==):
2758         (JSC::DFG::operator!=):
2759         * dfg/DFGGraph.h:
2760         (JSC::DFG::Graph::operator[]):
2761         (JSC::DFG::Graph::at):
2762         (JSC::DFG::Graph::ref):
2763         (JSC::DFG::Graph::deref):
2764         (JSC::DFG::Graph::clearAndDerefChild1):
2765         (JSC::DFG::Graph::clearAndDerefChild2):
2766         (JSC::DFG::Graph::clearAndDerefChild3):
2767         (Graph):
2768         * dfg/DFGJITCompiler.h:
2769         (JSC::DFG::JITCompiler::getPrediction):
2770         * dfg/DFGNode.h:
2771         (JSC::DFG::Node::Node):
2772         (JSC::DFG::Node::child1):
2773         (JSC::DFG::Node::child1Unchecked):
2774         (JSC::DFG::Node::child2):
2775         (JSC::DFG::Node::child3):
2776         (Node):
2777         * dfg/DFGNodeFlags.cpp:
2778         (JSC::DFG::arithNodeFlagsAsString):
2779         * dfg/DFGNodeFlags.h:
2780         (DFG):
2781         (JSC::DFG::nodeUsedAsNumber):
2782         * dfg/DFGNodeReferenceBlob.h: Removed.
2783         * dfg/DFGNodeUse.h: Removed.
2784         * dfg/DFGPredictionPropagationPhase.cpp:
2785         (JSC::DFG::PredictionPropagationPhase::propagate):
2786         (JSC::DFG::PredictionPropagationPhase::mergeDefaultArithFlags):
2787         (JSC::DFG::PredictionPropagationPhase::vote):
2788         (JSC::DFG::PredictionPropagationPhase::fixupNode):
2789         * dfg/DFGScoreBoard.h:
2790         (JSC::DFG::ScoreBoard::use):
2791         * dfg/DFGSpeculativeJIT.cpp:
2792         (JSC::DFG::SpeculativeJIT::useChildren):
2793         (JSC::DFG::SpeculativeJIT::writeBarrier):
2794         (JSC::DFG::SpeculativeJIT::compilePutByValForByteArray):
2795         (JSC::DFG::SpeculativeJIT::compilePutByValForIntTypedArray):
2796         (JSC::DFG::SpeculativeJIT::compilePutByValForFloatTypedArray):
2797         (JSC::DFG::SpeculativeJIT::compileStrictEqForConstant):
2798         * dfg/DFGSpeculativeJIT.h:
2799         (JSC::DFG::SpeculativeJIT::at):
2800         (JSC::DFG::SpeculativeJIT::canReuse):
2801         (JSC::DFG::SpeculativeJIT::use):
2802         (SpeculativeJIT):
2803         (JSC::DFG::SpeculativeJIT::speculationCheck):
2804         (JSC::DFG::SpeculativeJIT::terminateSpeculativeExecution):
2805         (JSC::DFG::IntegerOperand::IntegerOperand):
2806         (JSC::DFG::DoubleOperand::DoubleOperand):
2807         (JSC::DFG::JSValueOperand::JSValueOperand):
2808         (JSC::DFG::StorageOperand::StorageOperand):
2809         (JSC::DFG::SpeculateIntegerOperand::SpeculateIntegerOperand):
2810         (JSC::DFG::SpeculateStrictInt32Operand::SpeculateStrictInt32Operand):
2811         (JSC::DFG::SpeculateDoubleOperand::SpeculateDoubleOperand):
2812         (JSC::DFG::SpeculateCellOperand::SpeculateCellOperand):
2813         (JSC::DFG::SpeculateBooleanOperand::SpeculateBooleanOperand):
2814         * dfg/DFGSpeculativeJIT32_64.cpp:
2815         (JSC::DFG::SpeculativeJIT::cachedPutById):
2816         (JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeCompareNull):
2817         (JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeBranchNull):
2818         (JSC::DFG::SpeculativeJIT::nonSpeculativeCompareNull):
2819         (JSC::DFG::SpeculativeJIT::emitCall):
2820         (JSC::DFG::SpeculativeJIT::compileObjectOrOtherLogicalNot):
2821         (JSC::DFG::SpeculativeJIT::emitObjectOrOtherBranch):
2822         * dfg/DFGSpeculativeJIT64.cpp:
2823         (JSC::DFG::SpeculativeJIT::cachedPutById):
2824         (JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeCompareNull):
2825         (JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeBranchNull):
2826         (JSC::DFG::SpeculativeJIT::nonSpeculativeCompareNull):
2827         (JSC::DFG::SpeculativeJIT::emitCall):
2828         (JSC::DFG::SpeculativeJIT::compileObjectOrOtherLogicalNot):
2829         (JSC::DFG::SpeculativeJIT::emitObjectOrOtherBranch):
2830
2831 2012-03-19  Gavin Barraclough  <barraclough@apple.com>
2832
2833         Object.freeze broken on latest Nightly
2834         https://bugs.webkit.org/show_bug.cgi?id=80577
2835
2836         Reviewed by Oliver Hunt.
2837
2838         * runtime/Arguments.cpp:
2839         (JSC::Arguments::defineOwnProperty):
2840             - defineOwnProperty was checking for correct behaviour, provided that length/callee hadn't
2841             been overrridden. instead, just reify length/callee & rely on JSObject::defineOwnProperty.
2842         * runtime/JSFunction.cpp:
2843         (JSC::JSFunction::defineOwnProperty):
2844             - for arguments/caller/length properties, defineOwnProperty was incorrectly asserting that
2845             the object must be extensible; this is incorrect since these properties should already exist
2846             on the object. In addition, it was asserting that the arguments/caller values must match the
2847             corresponding magic data properties, but for strict mode function this is incorrect. Instead,
2848             just reify the arguments/caller accessor & defer to JSObject::defineOwnProperty.
2849
2850 2012-03-19  Filip Pizlo  <fpizlo@apple.com>
2851
2852         LLInt get_by_pname slow path incorrectly assumes that the operands are not constants
2853         https://bugs.webkit.org/show_bug.cgi?id=81559
2854
2855         Reviewed by Michael Saboff.
2856
2857         * llint/LLIntSlowPaths.cpp:
2858         (JSC::LLInt::LLINT_SLOW_PATH_DECL):
2859
2860 2012-03-19  Yong Li  <yoli@rim.com>
2861
2862         [BlackBerry] Implement OSAllocator::commit/decommit in the correct way
2863         https://bugs.webkit.org/show_bug.cgi?id=77013
2864
2865         We should use mmap(PROT_NONE, MAP_LAZY) instead of posix_madvise() to
2866         implement memory decommitting for QNX.
2867
2868         Reviewed by Rob Buis.
2869
2870         * wtf/OSAllocatorPosix.cpp:
2871         (WTF::OSAllocator::reserveUncommitted):
2872         (WTF::OSAllocator::commit):
2873         (WTF::OSAllocator::decommit):
2874
2875 2012-03-19  Gavin Barraclough  <barraclough@apple.com>
2876
2877         Unreviewed - revent a couple of files accidentally committed.
2878
2879         * runtime/Arguments.cpp:
2880         (JSC::Arguments::defineOwnProperty):
2881         * runtime/JSFunction.cpp:
2882         (JSC::JSFunction::defineOwnProperty):
2883
2884 2012-03-19  Jessie Berlin  <jberlin@apple.com>
2885
2886         Another Windows build fix after r111129.
2887
2888         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2889
2890 2012-03-19  Raphael Kubo da Costa  <rakuco@FreeBSD.org>
2891
2892         Cross-platform processor core counter: fix build on FreeBSD.
2893         https://bugs.webkit.org/show_bug.cgi?id=81482
2894
2895         Reviewed by Zoltan Herczeg.
2896
2897         The documentation of sysctl(3) shows that <sys/types.h> should be
2898         included before <sys/sysctl.h> (sys/types.h tends to be the first
2899         included header in general).
2900
2901         This should fix the build on FreeBSD and other systems where
2902         sysctl.h really depends on types defined in types.h.
2903
2904         * wtf/NumberOfCores.cpp:
2905
2906 2012-03-19  Jessie Berlin  <jberlin@apple.com>
2907
2908         Windows build fix after r111129.
2909
2910         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2911
2912 2012-03-19  Gavin Barraclough  <barraclough@apple.com>
2913
2914         JSCallbackFunction::toStringCallback/valueOfCallback do not handle 0 return value from convertToType
2915         https://bugs.webkit.org/show_bug.cgi?id=81468 <rdar://problem/11034745>
2916
2917         Reviewed by Oliver Hunt.
2918
2919         The API specifies that convertToType may opt not to handle a conversion:
2920             "@result The objects's converted value, or NULL if the object was not converted."
2921         In which case, it would propagate first up the JSClass hierarchy, calling its superclass's
2922         conversion functions, and failing that call the JSObject::defaultValue function.
2923
2924         Unfortunately this behaviour was removed in bug#69677/bug#69858, and instead we now rely on
2925         the toStringCallback/valueOfCallback function introduced in bug#69156. Even after a fix in
2926         bug#73368, these will return the result from the first convertToType they find, regardless
2927         of whether this result is null, and if no convertToType method is found in the api class
2928         hierarchy (possible if toStringCallback/valueOfCallback was accessed off the prototype
2929         chain), they will also return a null pointer. This is unsafe.
2930
2931         It would be easy to make the approach based around toStringCallback/valueOfCallback continue
2932         to walk the api class hierarchy, but making the fallback to defaultValue would be problematic
2933         (since defaultValue calls toStringCallback/valueOfCallback, this would infinitely recurse).
2934         Making the fallback work with toString/valueOf methods attached to api objects is probably
2935         not the right thing to do – instead, we should just implement the defaultValue trap for api
2936         objects.
2937
2938         In addition, this bug highlights that fact that JSCallbackFunction::call will allow a hard
2939         null to be returned from C to JavaScript - this is not okay. Handle with an exception.
2940
2941         * API/JSCallbackFunction.cpp:
2942         (JSC::JSCallbackFunction::call):
2943             - Should be null checking the return value.
2944         (JSC):
2945             - Remove toStringCallback/valueOfCallback.
2946         * API/JSCallbackFunction.h:
2947         (JSCallbackFunction):
2948             - Remove toStringCallback/valueOfCallback.
2949         * API/JSCallbackObject.h:
2950         (JSCallbackObject):
2951             - Add defaultValue mthods to JSCallbackObject.
2952         * API/JSCallbackObjectFunctions.h:
2953         (JSC::::defaultValue):
2954             - Add defaultValue mthods to JSCallbackObject.
2955         * API/JSClassRef.cpp:
2956         (OpaqueJSClass::prototype):
2957             - Remove toStringCallback/valueOfCallback.
2958         * API/tests/testapi.js:
2959             - Revert this test, now we no longer artificially introduce a toString method onto the api object.
2960
2961 2012-03-18  Raphael Kubo da Costa  <rakuco@FreeBSD.org>
2962
2963         [EFL] Include ICU_INCLUDE_DIRS when building.
2964         https://bugs.webkit.org/show_bug.cgi?id=81483
2965
2966         Reviewed by Daniel Bates.
2967
2968         So far, only the ICU libraries were being included when building
2969         JavaScriptCore, however the include path is also needed, otherwise the
2970         build will fail when ICU is installed into a non-standard location.
2971
2972         * PlatformEfl.cmake: Include ${ICU_INCLUDE_DIRS}.
2973
2974 2012-03-17  Gavin Barraclough  <barraclough@apple.com>
2975
2976         Strength reduction, RegExp.exec -> RegExp.test
2977         https://bugs.webkit.org/show_bug.cgi?id=81459
2978
2979         Reviewed by Sam Weinig.
2980
2981         RegExp.prototype.exec & RegExp.prototype.test can both be used to test a regular
2982         expression for a match against a string - however exec is more expensive, since
2983         it allocates a matches array object. In cases where the result is consumed in a
2984         boolean context the allocation of the matches array can be trivially elided.
2985
2986         For example:
2987             function f()
2988             {
2989                 for (i =0; i < 10000000; ++i)
2990                     if(!/a/.exec("a"))
2991                         err = true;
2992             }
2993
2994         This is a 2.5x speedup on this example microbenchmark loop.
2995
2996         In a more advanced form of this optimization, we may be able to avoid allocating
2997         the array where access to the array can be observed.
2998
2999         * create_hash_table:
3000         * dfg/DFGAbstractState.cpp:
3001         (JSC::DFG::AbstractState::execute):
3002         * dfg/DFGByteCodeParser.cpp:
3003         (JSC::DFG::ByteCodeParser::handleIntrinsic):
3004         * dfg/DFGNode.h:
3005         (JSC::DFG::Node::hasHeapPrediction):
3006         * dfg/DFGNodeType.h:
3007         (DFG):
3008         * dfg/DFGOperations.cpp:
3009         * dfg/DFGOperations.h:
3010         * dfg/DFGPredictionPropagationPhase.cpp:
3011         (JSC::DFG::PredictionPropagationPhase::propagate):
3012         * dfg/DFGSpeculativeJIT.cpp:
3013         (JSC::DFG::SpeculativeJIT::compileRegExpExec):
3014         (DFG):
3015         * dfg/DFGSpeculativeJIT.h:
3016         (JSC::DFG::SpeculativeJIT::callOperation):
3017         * dfg/DFGSpeculativeJIT32_64.cpp:
3018         (JSC::DFG::SpeculativeJIT::compile):
3019         * dfg/DFGSpeculativeJIT64.cpp:
3020         (JSC::DFG::SpeculativeJIT::compile):
3021         * jsc.cpp:
3022         (GlobalObject::addConstructableFunction):
3023         * runtime/Intrinsic.h:
3024         * runtime/JSFunction.cpp:
3025         (JSC::JSFunction::create):
3026         (JSC):
3027         * runtime/JSFunction.h:
3028         (JSFunction):
3029         * runtime/Lookup.cpp:
3030         (JSC::setUpStaticFunctionSlot):
3031         * runtime/RegExpObject.cpp:
3032         (JSC::RegExpObject::exec):
3033         (JSC::RegExpObject::match):
3034         * runtime/RegExpObject.h:
3035         (RegExpObject):
3036         * runtime/RegExpPrototype.cpp:
3037         (JSC::regExpProtoFuncTest):
3038         (JSC::regExpProtoFuncExec):
3039
3040 2012-03-16  Michael Saboff  <msaboff@apple.com>
3041
3042         Improve diagnostic benefit of JSGlobalData::m_isInitializingObject
3043         https://bugs.webkit.org/show_bug.cgi?id=81244
3044
3045         Rubber stamped by Filip Pizlo.
3046
3047         Changed type and name of JSGlobalData::m_isInitializingObject to
3048         ClassInfo* and m_initializingObjectClass.
3049         Changed JSGlobalData::setInitializingObject to
3050         JSGlobalData::setInitializingObjectClass.  This pointer can be used within 
3051         the debugger to determine what type of object is being initialized.
3052         
3053         * runtime/JSCell.h:
3054         (JSC::JSCell::finishCreation):
3055         (JSC::allocateCell):
3056         * runtime/JSGlobalData.cpp:
3057         (JSC::JSGlobalData::JSGlobalData):
3058         * runtime/JSGlobalData.h:
3059         (JSGlobalData):
3060         (JSC::JSGlobalData::isInitializingObject):
3061         (JSC::JSGlobalData::setInitializingObjectClass):
3062         * runtime/Structure.h:
3063         (JSC::JSCell::finishCreation):
3064
3065 2012-03-16  Mark Rowe  <mrowe@apple.com>
3066
3067         Build fix. Do not preserve owner and group information when installing the WTF headers.
3068
3069         * JavaScriptCore.xcodeproj/project.pbxproj:
3070
3071 2012-03-15  David Dorwin  <ddorwin@chromium.org>
3072
3073         Make the array pointer parameters in the Typed Array create() methods const.
3074         https://bugs.webkit.org/show_bug.cgi?id=81147
3075
3076         Reviewed by Kenneth Russell.
3077
3078         This allows const arrays to be passed to these methods.
3079         They use PassRefPtr<Subclass> create(), which already has a const parameter.
3080
3081         * wtf/Int16Array.h:
3082         (Int16Array):
3083         (WTF::Int16Array::create):
3084         * wtf/Int32Array.h:
3085         (Int32Array):
3086         (WTF::Int32Array::create):
3087         * wtf/Int8Array.h:
3088         (Int8Array):
3089         (WTF::Int8Array::create):
3090         * wtf/Uint16Array.h:
3091         (Uint16Array):
3092         (WTF::Uint16Array::create):
3093         * wtf/Uint32Array.h:
3094         (Uint32Array):
3095         (WTF::Uint32Array::create):
3096         * wtf/Uint8Array.h:
3097         (Uint8Array):
3098         (WTF::Uint8Array::create):
3099         * wtf/Uint8ClampedArray.h:
3100         (Uint8ClampedArray):
3101         (WTF::Uint8ClampedArray::create):
3102
3103 2012-03-15  Myles Maxfield  <mmaxfield@google.com>
3104
3105         CopiedSpace::tryAllocateOversize assumes system page size
3106         https://bugs.webkit.org/show_bug.cgi?id=80615
3107
3108         Reviewed by Geoffrey Garen.
3109
3110         * heap/CopiedSpace.cpp:
3111         (JSC::CopiedSpace::tryAllocateOversize):
3112         * heap/CopiedSpace.h:
3113         (CopiedSpace):
3114         * heap/CopiedSpaceInlineMethods.h:
3115         (JSC::CopiedSpace::oversizeBlockFor):
3116         * wtf/BumpPointerAllocator.h:
3117         (WTF::BumpPointerPool::create):
3118         * wtf/StdLibExtras.h:
3119         (WTF::roundUpToMultipleOf):
3120
3121 2012-03-15  Mark Hahnenberg  <mhahnenberg@apple.com>
3122
3123         Fixing Windows build breakage
3124
3125         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3126
3127 2012-03-15  Patrick Gansterer  <paroga@webkit.org>
3128
3129         [EFL] Make zlib a general build requirement
3130         https://bugs.webkit.org/show_bug.cgi?id=80153
3131
3132         Reviewed by Hajime Morita.
3133
3134         After r109538 WebSocket module needs zlib to support deflate-frame extension.
3135
3136         * wtf/Platform.h:
3137
3138 2012-03-15  Benjamin Poulain  <bpoulain@apple.com>
3139
3140         NumericStrings should be inlined
3141         https://bugs.webkit.org/show_bug.cgi?id=81183
3142
3143         Reviewed by Gavin Barraclough.
3144
3145         NumericStrings is not always inlined. When it is not, the class is not faster
3146         than using UString::number() directly.
3147
3148         * runtime/NumericStrings.h:
3149         (JSC::NumericStrings::add):
3150         (JSC::NumericStrings::lookupSmallString):
3151
3152 2012-03-15  Andras Becsi  <andras.becsi@nokia.com>
3153
3154         Fix ARM build after r110792.
3155
3156         Unreviewed build fix.
3157
3158         * jit/ExecutableAllocator.h:
3159         (JSC::ExecutableAllocator::cacheFlush):
3160         Remove superfluous curly brackets.
3161
3162 2012-03-15  Gavin Barraclough  <barraclough@apple.com>
3163
3164         ARMv7: prefer vmov(gpr,gpr->double) over vmov(gpr->single)
3165         https://bugs.webkit.org/show_bug.cgi?id=81256
3166
3167         Reviewed by Oliver Hunt.
3168
3169         This is a 0.5% sunspider progression.
3170
3171         * assembler/MacroAssemblerARMv7.h:
3172         (JSC::MacroAssemblerARMv7::convertInt32ToDouble):
3173             - switch which form of vmov we use.
3174
3175 2012-03-15  YoungTaeck Song  <youngtaeck.song@samsung.com>
3176
3177         [EFL] Add OwnPtr specialization for Ecore_Timer.
3178         https://bugs.webkit.org/show_bug.cgi?id=80119
3179
3180         Reviewed by Hajime Morita.
3181
3182         Add an overload for deleteOwnedPtr(Ecore_Timer*) on EFL port.
3183
3184         * wtf/OwnPtrCommon.h:
3185         (WTF):
3186         * wtf/efl/OwnPtrEfl.cpp:
3187         (WTF::deleteOwnedPtr):
3188         (WTF):
3189
3190 2012-03-15  Hojong Han  <hojong.han@samsung.com>
3191
3192         Linux has madvise enough to support OSAllocator::commit/decommit
3193         https://bugs.webkit.org/show_bug.cgi?id=80505
3194
3195         Reviewed by Geoffrey Garen.
3196
3197         * wtf/OSAllocatorPosix.cpp:
3198         (WTF::OSAllocator::reserveUncommitted):
3199         (WTF::OSAllocator::commit):
3200         (WTF::OSAllocator::decommit):
3201
3202 2012-03-15  Steve Falkenburg  <sfalken@apple.com>
3203
3204         Windows build fix.
3205
3206         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleasePGO.vsprops:
3207         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleasePGOOptimize.vsprops:
3208         * JavaScriptCore.vcproj/WTF/copy-files.cmd:
3209         * JavaScriptCore.vcproj/jsc/jscReleasePGO.vsprops:
3210
3211 2012-03-15  Steve Falkenburg  <sfalken@apple.com>
3212
3213         Windows build fix.
3214
3215         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj:
3216
3217 2012-03-15  Kevin Ollivier  <kevino@theolliviers.com>
3218
3219         Move wx port to using export macros
3220         https://bugs.webkit.org/show_bug.cgi?id=77279
3221
3222         Reviewed by Hajime Morita.
3223
3224         * wscript:
3225         * wtf/Platform.h:
3226
3227 2012-03-14  Benjamin Poulain  <bpoulain@apple.com>
3228
3229         Avoid StringImpl::getData16SlowCase() when sorting array
3230         https://bugs.webkit.org/show_bug.cgi?id=81070
3231
3232         Reviewed by Geoffrey Garen.
3233
3234         The function codePointCompare() is used intensively when sorting strings.
3235         This patch improves its performance by:
3236         -Avoiding character conversion.
3237         -Inlining the function.
3238
3239         This makes Peacekeeper's arrayCombined test 30% faster.
3240
3241         * wtf/text/StringImpl.cpp:
3242         * wtf/text/StringImpl.h:
3243         (WTF):
3244         (WTF::codePointCompare):
3245         (WTF::codePointCompare8):
3246         (WTF::codePointCompare16):
3247         (WTF::codePointCompare8To16):
3248
3249 2012-03-14  Hojong Han  <hojong.han@samsung.com>
3250
3251         Fix memory allocation failed by fastmalloc
3252         https://bugs.webkit.org/show_bug.cgi?id=79614
3253
3254         Reviewed by Geoffrey Garen.
3255
3256         Memory allocation failed even if the heap grows successfully.
3257         It is wrong to get the span only from the large list after the heap grows,
3258         because new span could be added in the normal list.
3259
3260         * wtf/FastMalloc.cpp:
3261         (WTF::TCMalloc_PageHeap::New):
3262
3263 2012-03-14  Hojong Han  <hojong.han@samsung.com>
3264
3265         Run cacheFlush page by page to assure of flushing all the requested ranges
3266         https://bugs.webkit.org/show_bug.cgi?id=77712
3267
3268         Reviewed by Geoffrey Garen.
3269
3270         Current MetaAllocator concept, always coalesces adjacent free spaces,
3271         doesn't meet memory management of Linux kernel.
3272         In a certain case Linux kernel doesn't regard contiguous virtual memory areas as one but two.
3273         Therefore cacheFlush page by page guarantees a flush-requested range.
3274
3275         * jit/ExecutableAllocator.h:
3276         (JSC::ExecutableAllocator::cacheFlush):
3277
3278 2012-03-14  Oliver Hunt  <oliver@apple.com>
3279
3280         Make ARMv7 work again
3281         https://bugs.webkit.org/show_bug.cgi?id=81157
3282
3283         Reviewed by Geoffrey Garen.
3284
3285         We were trying to use the ARMv7 dataRegister as a scratch register in a scenario
3286         where we the ARMv7MacroAssembler would also try to use dataRegister for its own
3287         nefarious purposes.
3288
3289         * assembler/MacroAssembler.h:
3290         (JSC::MacroAssembler::store32):
3291         * assembler/MacroAssemblerARMv7.h:
3292         (MacroAssemblerARMv7):
3293
3294 2012-03-14  Mark Hahnenberg  <mhahnenberg@apple.com>
3295
3296         Heap::destroy leaks CopiedSpace
3297         https://bugs.webkit.org/show_bug.cgi?id=81055
3298
3299         Reviewed by Geoffrey Garen.
3300
3301         Added a destroy() function to CopiedSpace that moves all normal size 
3302         CopiedBlocks from the CopiedSpace to the Heap's list of free blocks 
3303         as well as deallocates all of the oversize blocks in the CopiedSpace. 
3304         This function is now called in Heap::destroy().
3305
3306         * heap/CopiedSpace.cpp:
3307         (JSC::CopiedSpace::destroy):
3308         (JSC):
3309         * heap/CopiedSpace.h:
3310         (CopiedSpace):
3311         * heap/Heap.cpp:
3312         (JSC::Heap::destroy):
3313
3314 2012-03-14  Andrew Lo  <anlo@rim.com>
3315
3316         [BlackBerry] Implement REQUEST_ANIMATION_FRAME_DISPLAY_MONITOR using AnimationFrameRateController
3317         https://bugs.webkit.org/show_bug.cgi?id=81000
3318
3319         Enable WTF_USE_REQUEST_ANIMATION_FRAME_DISPLAY_MONITOR for BlackBerry.
3320
3321         Reviewed by Antonio Gomes.
3322
3323         * wtf/Platform.h:
3324
3325 2012-03-13  Filip Pizlo  <fpizlo@apple.com>
3326
3327         ValueToInt32 speculation will cause OSR exits even when it does not have to
3328         https://bugs.webkit.org/show_bug.cgi?id=81068
3329         <rdar://problem/11043926>
3330
3331         Reviewed by Anders Carlsson.
3332         
3333         Two related changes:
3334         1) ValueToInt32 will now always just defer to the non-speculative path, instead
3335            of exiting, if it doesn't know what speculations to perform.
3336         2) ValueToInt32 will speculate boolean if it sees this to be profitable.
3337
3338         * dfg/DFGAbstractState.cpp:
3339         (JSC::DFG::AbstractState::execute):
3340         * dfg/DFGNode.h:
3341         (JSC::DFG::Node::shouldSpeculateBoolean):
3342         (Node):
3343         * dfg/DFGSpeculativeJIT.cpp:
3344         (JSC::DFG::SpeculativeJIT::compileValueToInt32):
3345
3346 2012-03-13  Mark Hahnenberg  <mhahnenberg@apple.com>
3347
3348         More Windows build fixing
3349
3350         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3351
3352 2012-03-13  Mark Hahnenberg  <mhahnenberg@apple.com>
3353
3354         Windows build fix
3355
3356         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3357
3358 2012-03-13  Mark Hahnenberg  <mhahnenberg@apple.com>
3359
3360         Type conversion of exponential part failed
3361         https://bugs.webkit.org/show_bug.cgi?id=80673
3362
3363         Reviewed by Geoffrey Garen.
3364
3365         * parser/Lexer.cpp:
3366         (JSC::::lex):
3367         * runtime/JSGlobalObjectFunctions.cpp:
3368         (JSC::parseInt):
3369         (JSC):
3370         (JSC::jsStrDecimalLiteral): Added another template argument that exposes whether or not
3371         we accept trailing junk to clients of jsStrDecimalLiteral. Also added additional template 
3372         parameter for strtod to allow trailing spaces.
3373         (JSC::toDouble):
3374         (JSC::parseFloat): Accept trailing junk, as per the ECMA 262 spec (15.1.2.3).
3375         * runtime/LiteralParser.cpp:
3376         (JSC::::Lexer::lexNumber):
3377         * tests/mozilla/expected.html: Update the expected page for run-javascriptcore-tests so that 
3378         we will run ecma/TypeConversion/9.3.1-3.js as a regression test now.
3379         * wtf/dtoa.cpp:
3380         (WTF):
3381         (WTF::strtod): We also needed to sometimes accept trailing spaces to pass a few other tests that were 
3382         broken by changing the default allowance of trailing junk in jsStrDecimalLiteral.
3383         * wtf/dtoa.h:
3384         * wtf/dtoa/double-conversion.cc: When the AdvanceToNonspace function was lifted out of the 
3385         Chromium codebase, the person porting it only thought to check for spaces when skipping whitespace.
3386         A few of our JSC tests check for other types of trailing whitespace, so I've added checks for those 
3387         here to cover those cases (horizontal tab, vertical tab, carriage return, form feed, and line feed).
3388         * wtf/text/WTFString.cpp:
3389         (WTF::toDoubleType): Disallow trailing spaces, as this breaks form input verification stuff.
3390
3391 2012-03-13  Filip Pizlo  <fpizlo@apple.com>
3392
3393         Unreviewed, build fix since is_pod<> includes some header that I didn't know about.
3394         Removing the assert for now.
3395
3396         * dfg/DFGOperations.h:
3397         * llint/LLIntSlowPaths.h:
3398
3399 2012-03-13  Filip Pizlo  <fpizlo@apple.com>
3400
3401         Functions with C linkage should return POD types
3402         https://bugs.webkit.org/show_bug.cgi?id=81061
3403
3404         Reviewed by Mark Rowe.
3405
3406         * dfg/DFGOperations.h:
3407         * llint/LLIntSlowPaths.h:
3408         (LLInt):
3409         (SlowPathReturnType):
3410         (JSC::LLInt::encodeResult):
3411
3412 2012-03-13  Filip Pizlo  <fpizlo@apple.com>
3413
3414         Loads from UInt32Arrays should not result in a double up-convert if it isn't necessary
3415         https://bugs.webkit.org/show_bug.cgi?id=80979
3416         <rdar://problem/11036848>
3417
3418         Reviewed by Oliver Hunt.
3419         
3420         Also improved DFG IR dumping to include type information in a somewhat more
3421         intuitive way.
3422
3423         * bytecode/PredictedType.cpp:
3424         (JSC::predictionToAbbreviatedString):
3425         (JSC):
3426         * bytecode/PredictedType.h:
3427         (JSC):
3428         * dfg/DFGAbstractState.cpp:
3429         (JSC::DFG::AbstractState::execute):
3430         * dfg/DFGGraph.cpp:
3431         (JSC::DFG::Graph::dump):
3432         * dfg/DFGPredictionPropagationPhase.cpp:
3433         (JSC::DFG::PredictionPropagationPhase::propagate):
3434         * dfg/DFGSpeculativeJIT.cpp:
3435         (JSC::DFG::SpeculativeJIT::compileUInt32ToNumber):
3436         (JSC::DFG::SpeculativeJIT::compileGetByValOnIntTypedArray):
3437         * dfg/DFGSpeculativeJIT.h:
3438         (JSC::DFG::SpeculativeJIT::forwardSpeculationCheck):
3439
3440 2012-03-13  George Staikos  <staikos@webkit.org>
3441
3442 &nb