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