1 2009-11-13 Oliver Hunt <oliver@apple.com>
3 Reviewed by Geoff Garen.
5 JSValueProtect and JSValueUnprotect don't protect API wrapper values
6 https://bugs.webkit.org/show_bug.cgi?id=31485
8 Make JSValueProtect/Unprotect use a new 'toJS' function, 'toJSForGC' that
9 does not attempt to to strip out API wrapper objects.
16 * API/tests/testapi.c:
17 (makeGlobalNumberValue):
20 2009-11-13 İsmail Dönmez <ismail@namtrac.org>
22 Reviewed by Antti Koivisto.
24 Fix typo, ce_time.cpp should be ce_time.c
28 2009-11-12 Steve VanDeBogart <vandebo@chromium.org>
30 Reviewed by Adam Barth.
32 Calculate the time offset only if we were able to parse
33 the date string. This saves an IPC in Chromium for
35 https://bugs.webkit.org/show_bug.cgi?id=31416
38 (WTF::parseDateFromNullTerminatedCharacters):
39 (JSC::parseDateFromNullTerminatedCharacters):
41 2009-11-12 Oliver Hunt <oliver@apple.com>
43 Rollout r50896 until i can work out why it causes failures.
45 * bytecompiler/BytecodeGenerator.cpp:
46 (JSC::BytecodeGenerator::emitReturn):
47 * interpreter/Interpreter.cpp:
48 (JSC::Interpreter::execute):
50 (JSC::EvalNode::emitBytecode):
52 2009-11-12 Steve Falkenburg <sfalken@apple.com>
54 Reviewed by Stephanie Lewis.
56 Remove LIBRARY directive from def file to fix Debug_All target.
58 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
60 2009-11-12 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
62 Rubber-stamped by Holger Freyther.
64 Revert r50204, since it makes DRT crash on 32 bits release builds
69 2009-11-12 Oliver Hunt <oliver@apple.com>
71 Reviewed by Gavin Barraclough.
73 Start unifying entry logic for function and eval code.
75 Eval now uses a ret instruction to end execution, and sets up
76 a callframe more in line with what we do for function entry.
78 * bytecompiler/BytecodeGenerator.cpp:
79 (JSC::BytecodeGenerator::emitReturn):
80 * interpreter/Interpreter.cpp:
81 (JSC::Interpreter::execute):
83 (JSC::EvalNode::emitBytecode):
85 2009-11-12 Richard Moe Gustavsen <richard.gustavsen@nokia.com>
87 Reviewed by Kenneth Rohde Christiansen.
89 [Qt] Disable pthread_setname_np.
91 This allows Qt builds on Mac from 10.6 to run on earlier version
92 where this symbol is not present.
93 https://bugs.webkit.org/show_bug.cgi?id=31403
97 2009-11-12 Thiago Macieira <thiago.macieira@nokia.com>
99 Reviewed by Kenneth Rohde Christiansen.
101 [Qt] Fix linking on Linux 32-bit.
103 It was missing the ".text" directive at the top of the file,
104 indicating that code would follow. Without it, the assembler created
105 "NOTYPE" symbols, which would result in linker errors.
106 https://bugs.webkit.org/show_bug.cgi?id=30863
110 2009-11-11 Laszlo Gombos <laszlo.1.gombos@nokia.com>
112 Reviewed by Alexey Proskuryakov.
114 Refactor multiple JavaScriptCore threads
115 https://bugs.webkit.org/show_bug.cgi?id=31328
117 Remove the id field from the PlatformThread structure
120 * runtime/Collector.cpp:
121 (JSC::getCurrentPlatformThread):
122 (JSC::suspendThread):
124 (JSC::getPlatformThreadRegisters):
126 2009-11-10 Geoffrey Garen <ggaren@apple.com>
128 Linux build fix: Added an #include for UINT_MAX.
130 * runtime/WeakRandom.h:
132 2009-11-10 Geoffrey Garen <ggaren@apple.com>
134 JavaScriptGlue build fix: Marked a file 'private' instead of 'project'.
136 * JavaScriptCore.xcodeproj/project.pbxproj:
138 2009-11-10 Geoffrey Garen <ggaren@apple.com>
140 Reviewed by Gavin "avGni arBalroguch" Barraclough.
142 Faster Math.random, based on GameRand.
144 SunSpider says 1.4% faster.
147 * JavaScriptCore.gypi:
148 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
149 * JavaScriptCore.xcodeproj/project.pbxproj: Added the header to the project.
151 * runtime/JSGlobalData.cpp:
152 (JSC::JSGlobalData::JSGlobalData):
153 * runtime/JSGlobalData.h: Use an object to track random number generation
154 state, initialized to the current time.
156 * runtime/MathObject.cpp:
157 (JSC::MathObject::MathObject):
158 (JSC::mathProtoFuncRandom): Use the new hotness.
160 * runtime/WeakRandom.h: Added.
161 (JSC::WeakRandom::WeakRandom):
162 (JSC::WeakRandom::get):
163 (JSC::WeakRandom::advance): The new hotness.
165 2009-11-09 Geoffrey Garen <ggaren@apple.com>
167 Reviewed by Oliver Hunt.
169 Imported the v8 DST cache.
171 SunSpider says 1.5% faster.
173 * runtime/JSGlobalData.cpp:
174 (JSC::JSGlobalData::resetDateCache): Reset the DST cache when resetting
177 * runtime/JSGlobalData.h:
178 (JSC::DSTOffsetCache::DSTOffsetCache):
179 (JSC::DSTOffsetCache::reset): Added a struct for the DST cache.
182 (WTF::calculateDSTOffsetSimple):
183 (WTF::calculateDSTOffset):
184 (WTF::parseDateFromNullTerminatedCharacters):
186 (JSC::gregorianDateTimeToMS):
187 (JSC::msToGregorianDateTime):
188 (JSC::parseDateFromNullTerminatedCharacters):
189 * wtf/DateMath.h: The imported code for probing and updating the cache.
191 2009-11-09 Geoffrey Garen <ggaren@apple.com>
193 Reviewed by Oliver Hunt.
195 Fixed an edge case that could cause the engine not to notice a timezone
198 No test because this case would require manual intervention to change
199 the timezone during the test.
201 SunSpider reports no change.
203 * runtime/DateInstanceCache.h:
204 (JSC::DateInstanceCache::DateInstanceCache):
205 (JSC::DateInstanceCache::reset): Added a helper function for resetting
206 this cache. Also, shrank the cache, since we'll be resetting it often.
208 * runtime/JSGlobalData.cpp:
209 (JSC::JSGlobalData::resetDateCache): Include resetting the DateInstanceCache
210 in resetting Date data. (Otherwise, a cache hit could bypass a necessary
211 timezone update check.)
213 2009-11-09 Geoffrey Garen <ggaren@apple.com>
215 Reviewed by Sam Weinig.
217 Some manual inlining and constant propogation in Date code.
219 SunSpider reports a 0.4% speedup on date-*, no overall speedup. Shark
220 says some previously evident stalls are now gone.
222 * runtime/DateConstructor.cpp:
224 * runtime/DateConversion.cpp:
226 (JSC::formatTimeUTC): Split formatTime into UTC and non-UTC variants.
228 * runtime/DateConversion.h:
229 * runtime/DateInstance.cpp:
230 (JSC::DateInstance::calculateGregorianDateTime):
231 (JSC::DateInstance::calculateGregorianDateTimeUTC):
232 * runtime/DateInstance.h:
233 (JSC::DateInstance::gregorianDateTime):
234 (JSC::DateInstance::gregorianDateTimeUTC): Split gregorianDateTime into
235 a UTC and non-UTC variant, and split each variant into a fast inline
236 case and a slow out-of-line case.
238 * runtime/DatePrototype.cpp:
239 (JSC::formatLocaleDate):
240 (JSC::dateProtoFuncToString):
241 (JSC::dateProtoFuncToUTCString):
242 (JSC::dateProtoFuncToISOString):
243 (JSC::dateProtoFuncToDateString):
244 (JSC::dateProtoFuncToTimeString):
245 (JSC::dateProtoFuncGetFullYear):
246 (JSC::dateProtoFuncGetUTCFullYear):
247 (JSC::dateProtoFuncToGMTString):
248 (JSC::dateProtoFuncGetMonth):
249 (JSC::dateProtoFuncGetUTCMonth):
250 (JSC::dateProtoFuncGetDate):
251 (JSC::dateProtoFuncGetUTCDate):
252 (JSC::dateProtoFuncGetDay):
253 (JSC::dateProtoFuncGetUTCDay):
254 (JSC::dateProtoFuncGetHours):
255 (JSC::dateProtoFuncGetUTCHours):
256 (JSC::dateProtoFuncGetMinutes):
257 (JSC::dateProtoFuncGetUTCMinutes):
258 (JSC::dateProtoFuncGetSeconds):
259 (JSC::dateProtoFuncGetUTCSeconds):
260 (JSC::dateProtoFuncGetTimezoneOffset):
261 (JSC::setNewValueFromTimeArgs):
262 (JSC::setNewValueFromDateArgs):
263 (JSC::dateProtoFuncSetYear):
264 (JSC::dateProtoFuncGetYear): Updated for the gregorianDateTime change above.
266 2009-11-09 Geoffrey Garen <ggaren@apple.com>
268 Build fix: export a new symbol.
270 * JavaScriptCore.exp:
271 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
273 2009-11-09 Geoffrey Garen <ggaren@apple.com>
275 Reviewed by Sam "Home Wrecker" Weinig.
277 Added a tiny cache for Date parsing.
279 SunSpider says 1.2% faster.
281 * runtime/DateConversion.cpp:
282 (JSC::parseDate): Try to reuse the last parsed Date, if present.
284 * runtime/JSGlobalData.cpp:
285 (JSC::JSGlobalData::resetDateCache):
286 * runtime/JSGlobalData.h: Added storage for last parsed Date. Refactored
287 this code to make resetting the date cache easier.
289 * runtime/JSGlobalObject.h:
290 (JSC::DynamicGlobalObjectScope::DynamicGlobalObjectScope): Updated for
294 (JSC::parseDateFromNullTerminatedCharacters):
295 * wtf/DateMath.h: Changed ExecState to be first parameter, as is the JSC custom.
297 2009-11-09 Oliver Hunt <oliver@apple.com>
299 Reviewed by Gavin Barraclough.
301 Can cache prototype lookups on uncacheable dictionaries.
302 https://bugs.webkit.org/show_bug.cgi?id=31198
304 Replace fromDictionaryTransition with flattenDictionaryObject and
305 flattenDictionaryStructure. This change is necessary as we need to
306 guarantee that our attempt to convert away from a dictionary structure
307 will definitely succeed, and in some cases this requires mutating the
308 object storage itself.
310 * interpreter/Interpreter.cpp:
311 (JSC::Interpreter::tryCacheGetByID):
313 (JSC::JITThunks::tryCacheGetByID):
314 (JSC::DEFINE_STUB_FUNCTION):
315 * runtime/BatchedTransitionOptimizer.h:
316 (JSC::BatchedTransitionOptimizer::~BatchedTransitionOptimizer):
317 * runtime/JSObject.h:
318 (JSC::JSObject::flattenDictionaryObject):
319 * runtime/Operations.h:
320 (JSC::normalizePrototypeChain):
321 * runtime/Structure.cpp:
322 (JSC::Structure::flattenDictionaryStructure):
323 (JSC::comparePropertyMapEntryIndices):
324 * runtime/Structure.h:
326 2009-11-09 Laszlo Gombos <laszlo.1.gombos@nokia.com>
328 Not reviewed, build fix.
330 Remove extra character from r50701.
332 * JavaScriptCore.pri:
334 2009-11-09 Laszlo Gombos <laszlo.1.gombos@nokia.com>
336 Not reviewed, build fix.
338 Revert r50695 because it broke QtWebKit (clean builds).
340 * JavaScriptCore.pri:
342 2009-11-09 Norbert Leser <norbert.leser@nokia.com>
344 Reviewed by Kenneth Rohde Christiansen.
346 Prepended $$PWD to GENERATED_SOURCES_DIR to avoid potential ambiguities when included from WebCore.pro.
347 Some preprocessors consider this GENERATED_SOURCES_DIR relative to current invoking dir (e.g., ./WebCore),
348 and not the working dir of JavaCriptCore.pri (i.e., ../JavaScriptCore/).
350 * JavaScriptCore.pri:
352 2009-11-09 Laszlo Gombos <laszlo.1.gombos@nokia.com>
354 Reviewed by Kenneth Rohde Christiansen.
356 Use explicit parentheses to silence gcc 4.4 -Wparentheses warnings
357 https://bugs.webkit.org/show_bug.cgi?id=31040
359 * interpreter/Interpreter.cpp:
360 (JSC::Interpreter::privateExecute):
362 2009-11-08 David Levin <levin@chromium.org>
364 Reviewed by NOBODY (speculative snow leopard and windows build fixes).
367 (WTF::parseDateFromNullTerminatedCharacters):
368 (JSC::gregorianDateTimeToMS):
369 (JSC::msToGregorianDateTime):
370 (JSC::parseDateFromNullTerminatedCharacters):
372 (JSC::GregorianDateTime::GregorianDateTime):
374 2009-11-08 David Levin <levin@chromium.org>
376 Reviewed by NOBODY (chromium build fix).
378 Hopefully, the last build fix.
380 Create better separation in DateMath about the JSC
381 and non-JSC portions. Also, only expose the non-JSC
382 version in the exports.
384 * JavaScriptCore.exp:
385 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
387 (WTF::parseDateFromNullTerminatedCharacters):
389 (JSC::gregorianDateTimeToMS):
390 (JSC::msToGregorianDateTime):
391 (JSC::parseDateFromNullTerminatedCharacters):
395 2009-11-08 David Levin <levin@chromium.org>
397 Reviewed by NOBODY (chromium build fix).
399 For the change in DateMath.
404 2009-11-06 Geoffrey Garen <ggaren@apple.com>
406 Windows build fix: export some symbols.
408 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
410 2009-11-06 Geoffrey Garen <ggaren@apple.com>
412 Build fix: updated export file.
414 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
416 2009-11-06 Geoffrey Garen <ggaren@apple.com>
418 Build fix: added some #includes.
423 2009-11-06 Geoffrey Garen <ggaren@apple.com>
425 Reviewed by Oliver Hunt.
427 https://bugs.webkit.org/show_bug.cgi?id=31197
428 Implemented a timezone cache not based on Mac OS X's notify_check API.
430 If the VM calculates the local timezone offset from UTC, it caches the
431 result until the end of the current VM invocation. (We don't want to cache
432 forever, because the user's timezone may change over time.)
434 This removes notify_* overhead on Mac, and, more significantly, removes
435 OS time and date call overhead on non-Mac platforms.
437 ~8% speedup on Date microbenchmark on Mac. SunSpider reports maybe a tiny
438 speedup on Mac. (Speedup on non-Mac platforms should be even more noticeable.)
440 * JavaScriptCore.exp:
442 * interpreter/CachedCall.h:
443 (JSC::CachedCall::CachedCall):
444 * interpreter/Interpreter.cpp:
445 (JSC::Interpreter::execute):
446 * runtime/JSGlobalObject.h:
447 (JSC::DynamicGlobalObjectScope::DynamicGlobalObjectScope): Made the
448 DynamicGlobalObjectScope constructor responsible for checking whether a
449 dynamicGlobalObject has already been set. This eliminated some duplicate
450 client code, and allowed me to avoid adding even more duplicate client
451 code. Made DynamicGlobalObjectScope responsible for resetting the
452 local timezone cache upon first entry to the VM.
454 * runtime/DateConstructor.cpp:
455 (JSC::constructDate):
459 * runtime/DateConversion.cpp:
461 * runtime/DateConversion.h:
462 * runtime/DateInstance.cpp:
463 (JSC::DateInstance::gregorianDateTime):
464 * runtime/DateInstance.h:
465 * runtime/DateInstanceCache.h:
466 * runtime/DatePrototype.cpp:
467 (JSC::setNewValueFromTimeArgs):
468 (JSC::setNewValueFromDateArgs):
469 (JSC::dateProtoFuncSetYear):
470 * runtime/InitializeThreading.cpp:
471 (JSC::initializeThreadingOnce):
472 * runtime/JSGlobalData.cpp:
473 (JSC::JSGlobalData::JSGlobalData):
474 * runtime/JSGlobalData.h:
476 (WTF::getCurrentUTCTime):
477 (WTF::getCurrentUTCTimeWithMicroseconds):
479 (JSC::getUTCOffset): Use the new cache. Also, see below.
480 (JSC::gregorianDateTimeToMS):
481 (JSC::msToGregorianDateTime):
482 (JSC::initializeDates):
483 (JSC::parseDateFromNullTerminatedCharacters): Simplified the way this function
484 accounts for the local timezone offset, to accomodate our new caching API,
485 and a (possibly misguided) caller in WebCore. Also, see below.
487 (JSC::GregorianDateTime::GregorianDateTime): Moved most of the code in
488 DateMath.* into the JSC namespace. The code needed to move so it could
489 naturally interact with ExecState and JSGlobalData to support caching.
490 Logically, it seemed right to move it, too, since this code is not really
491 as low-level as the WTF namespace might imply -- it implements a set of
492 date parsing and conversion quirks that are finely tuned to the JavaScript
493 language. Also removed the Mac OS X notify_* infrastructure.
496 (WTF::currentTimeMS):
497 (WTF::getLocalTime): Moved the rest of the DateMath code here, and renamed
498 it to make it consistent with WTF's currentTime function.
500 2009-11-06 Gabor Loki <loki@inf.u-szeged.hu>
502 Unreviewed trivial buildfix after r50595.
504 Rename the remaining rshiftPtr calls to rshift32
506 * jit/JITArithmetic.cpp:
507 (JSC::JIT::emit_op_rshift):
508 * jit/JITInlineMethods.h:
509 (JSC::JIT::emitFastArithImmToInt):
511 2009-11-06 Gavin Barraclough <barraclough@apple.com>
513 Reviewed by Oliver Hunt.
515 Tidy up the shift methods on the macro-assembler interface.
517 Currently behaviour of shifts of a magnitude > 0x1f is undefined.
518 Instead defined that all shifts are masked to this range. This makes a lot of
519 practical sense, both since having undefined behaviour is not particularly
520 desirable, and because this behaviour is commonly required (particularly since
521 it is required bt ECMA-262 for shifts).
523 Update the ARM assemblers to provide this behaviour. Remove (now) redundant
524 masks from JITArithmetic, and remove rshiftPtr (this was used in case that
525 could be rewritten in a simpler form using rshift32, only optimized JSVALUE32
526 on x86-64, which uses JSVALUE64!)
528 * assembler/MacroAssembler.h:
529 * assembler/MacroAssemblerARM.h:
530 (JSC::MacroAssemblerARM::lshift32):
531 (JSC::MacroAssemblerARM::rshift32):
532 * assembler/MacroAssemblerARMv7.h:
533 (JSC::MacroAssemblerARMv7::lshift32):
534 (JSC::MacroAssemblerARMv7::rshift32):
535 * assembler/MacroAssemblerX86_64.h:
536 * jit/JITArithmetic.cpp:
537 (JSC::JIT::emit_op_lshift):
538 (JSC::JIT::emit_op_rshift):
540 2009-11-05 Gavin Barraclough <barraclough@apple.com>
542 Rubber Stamped by Oliver Hunt.
544 Remove a magic number (1) from the JIT, instead compute the value with OBJECT_OFFSET.
546 * jit/JITInlineMethods.h:
547 (JSC::JIT::emitPutJITStubArg):
548 (JSC::JIT::emitPutJITStubArgConstant):
549 (JSC::JIT::emitGetJITStubArg):
550 (JSC::JIT::emitPutJITStubArgFromVirtualRegister):
552 (JSC::JITStubCall::JITStubCall):
553 (JSC::JITStubCall::getArgument):
556 2009-11-05 Zoltan Herczeg <zherczeg@inf.u-szeged.hu>
558 Reviewed by Gavin Barraclough.
560 https://bugs.webkit.org/show_bug.cgi?id=31159
561 Fix branchDouble behaviour on ARM THUMB2 JIT.
563 The x86 branchDouble behaviour is reworked, and all JIT
564 ports should follow the x86 port. See bug 31104 and 31151
566 This patch contains a fix for the traditional ARM port
568 * assembler/ARMAssembler.h:
569 (JSC::ARMAssembler::):
570 (JSC::ARMAssembler::fmrs_r):
571 (JSC::ARMAssembler::ftosid_r):
572 * assembler/MacroAssemblerARM.h:
573 (JSC::MacroAssemblerARM::):
574 (JSC::MacroAssemblerARM::branchDouble):
575 (JSC::MacroAssemblerARM::branchConvertDoubleToInt32):
577 2009-11-05 Chris Jerdonek <chris.jerdonek@gmail.com>
579 Reviewed by Eric Seidel.
581 Removed the "this is part of the KDE project" comments from
582 all *.h, *.cpp, *.idl, and *.pm files.
584 https://bugs.webkit.org/show_bug.cgi?id=31167
586 The maintenance and architecture page in the project wiki lists
589 This change includes no changes or additions to test cases
590 since the change affects only comments.
592 * wtf/wince/FastMallocWince.h:
594 2009-11-05 Gabor Loki <loki@inf.u-szeged.hu>
596 Reviewed by Gavin Barraclough.
598 Use ARMv7 specific encoding for immediate constants on ARMv7 target
599 https://bugs.webkit.org/show_bug.cgi?id=31060
601 * assembler/ARMAssembler.cpp:
602 (JSC::ARMAssembler::getOp2): Use INVALID_IMM
603 (JSC::ARMAssembler::getImm): Use encodeComplexImm for complex immediate
604 (JSC::ARMAssembler::moveImm): Ditto.
605 (JSC::ARMAssembler::encodeComplexImm): Encode a constant by one or two
606 instructions or a PC relative load.
607 * assembler/ARMAssembler.h: Use INVALID_IMM if a constant cannot be
608 encoded as an immediate constant.
609 (JSC::ARMAssembler::):
610 (JSC::ARMAssembler::movw_r): 16-bit immediate load
611 (JSC::ARMAssembler::movt_r): High halfword 16-bit immediate load
612 (JSC::ARMAssembler::getImm16Op2): Encode immediate constant for
615 2009-11-04 Mark Mentovai <mark@chromium.org>
617 Reviewed by Mark Rowe.
619 Provide TARGETING_TIGER and TARGETING_LEOPARD as analogues to
620 BUILDING_ON_TIGER and BUILDING_ON_LEOPARD. The TARGETING_ macros
621 consider the deployment target; the BUILDING_ON_ macros consider the
622 headers being built against.
626 2009-11-04 Gavin Barraclough <barraclough@apple.com>
628 Reviewed by Oliver Hunt.
630 https://bugs.webkit.org/show_bug.cgi?id=31151
631 Fix branchDouble behaviour on ARM THUMB2 JIT.
633 The ARMv7 JIT is currently using ARMv7Assembler::ConditionEQ to branch
634 for DoubleEqualOrUnordered, however this is incorrect – ConditionEQ won't
635 branch on unordered operands. Similarly, DoubleLessThanOrUnordered &
636 DoubleLessThanOrEqualOrUnordered use ARMv7Assembler::ConditionLO &
637 ARMv7Assembler::ConditionLS, whereas they should be using
638 ARMv7Assembler::ConditionLT & ARMv7Assembler::ConditionLE.
640 Fix these, and fill out the missing DoubleConditions.
642 * assembler/MacroAssemblerARMv7.h:
643 (JSC::MacroAssemblerARMv7::):
644 (JSC::MacroAssemblerARMv7::branchDouble):
646 2009-11-04 Gavin Barraclough <barraclough@apple.com>
648 Rubber Stamped by Oliver Hunt.
650 Enable native call optimizations on ARMv7. (Existing ARM_TRADITIONAL
651 implementation was generic, worked perfectly, just needed turning on).
653 * jit/JITOpcodes.cpp:
656 2009-11-04 Gavin Barraclough <barraclough@apple.com>
658 Rubber Stamped by Mark Rowe, Oliver Hunt, and Sam Weinig.
660 Add a missing assert to the ARMv7 JIT.
662 * assembler/ARMv7Assembler.h:
663 (JSC::ARMThumbImmediate::ARMThumbImmediate):
665 2009-11-04 Mark Rowe <mrowe@apple.com>
667 Rubber-stamped by Oliver Hunt.
669 Remove bogus op_ prefix on dumped version of three opcodes.
671 * bytecode/CodeBlock.cpp:
672 (JSC::CodeBlock::dump):
674 2009-11-04 Mark Rowe <mrowe@apple.com>
676 Reviewed by Sam Weinig.
678 Fix dumping of constants in bytecode so that they aren't printed as large positive register numbers.
680 We do this by having the registerName function return information about the constant if the register
681 number corresponds to a constant. This requires that registerName, and several functions that call it,
682 be converted to member functions of CodeBlock so that the constant value can be retrieved. The
683 ExecState also needs to be threaded down through these functions so that it can be passed on to
684 constantName when needed.
686 * bytecode/CodeBlock.cpp:
688 (JSC::CodeBlock::registerName):
689 (JSC::CodeBlock::printUnaryOp):
690 (JSC::CodeBlock::printBinaryOp):
691 (JSC::CodeBlock::printConditionalJump):
692 (JSC::CodeBlock::printGetByIdOp):
693 (JSC::CodeBlock::printPutByIdOp):
694 (JSC::CodeBlock::dump):
695 * bytecode/CodeBlock.h:
696 (JSC::CodeBlock::isConstantRegisterIndex):
698 2009-11-04 Pavel Heimlich <tropikhajma@gmail.com>
700 Reviewed by Alexey Proskuryakov.
702 https://bugs.webkit.org/show_bug.cgi?id=30647
703 Solaris build failure due to strnstr.
705 * wtf/StringExtras.h: Enable strnstr on Solaris, too.
707 2009-11-04 Gavin Barraclough <barraclough@apple.com>
709 Reviewed by Oliver Hunt.
711 https://bugs.webkit.org/show_bug.cgi?id=31104
712 Refactor x86-specific behaviour out of the JIT.
714 - Add explicit double branch conditions for ordered and unordered comparisons (presently the brehaviour is a mix).
715 - Refactor double to int conversion out into the MacroAssembler.
716 - Remove broken double to int conversion for !JSVALUE32_64 builds - this code was broken and slowing us down, fixing it showed it not to be an improvement.
717 - Remove exclusion of double to int conversion from (1 % X) cases in JSVALUE32_64 builds - if this was of benefit this is no longer the case; simplify.
719 * assembler/MacroAssemblerARM.h:
720 (JSC::MacroAssemblerARM::):
721 * assembler/MacroAssemblerARMv7.h:
722 (JSC::MacroAssemblerARMv7::):
723 * assembler/MacroAssemblerX86Common.h:
724 (JSC::MacroAssemblerX86Common::):
725 (JSC::MacroAssemblerX86Common::convertInt32ToDouble):
726 (JSC::MacroAssemblerX86Common::branchDouble):
727 (JSC::MacroAssemblerX86Common::branchConvertDoubleToInt32):
728 * jit/JITArithmetic.cpp:
729 (JSC::JIT::emitBinaryDoubleOp):
730 (JSC::JIT::emit_op_div):
731 (JSC::JIT::emitSlow_op_jnless):
732 (JSC::JIT::emitSlow_op_jnlesseq):
733 * jit/JITOpcodes.cpp:
734 (JSC::JIT::emit_op_jfalse):
736 2009-11-04 Mark Mentovai <mark@chromium.org>
738 Reviewed by Eric Seidel.
740 Remove BUILDING_ON_LEOPARD from JavaScriptCore.gyp. This is supposed
741 to be set as needed only in wtf/Platform.h.
743 * JavaScriptCore.gyp/JavaScriptCore.gyp:
745 2009-11-02 Oliver Hunt <oliver@apple.com>
747 Reviewed by Gavin Barraclough.
749 REGRESSION (r48573): JSC may incorrectly cache chain lookups with a dictionary at the head of the chain
750 https://bugs.webkit.org/show_bug.cgi?id=31045
752 Add guards to prevent caching of prototype chain lookups with dictionaries at the
753 head of the chain. Also add a few tighter assertions to cached prototype lookups
754 to catch this in future.
756 * interpreter/Interpreter.cpp:
757 (JSC::Interpreter::tryCacheGetByID):
758 (JSC::Interpreter::privateExecute):
760 (JSC::JITThunks::tryCacheGetByID):
762 2009-11-02 Laszlo Gombos <laszlo.1.gombos@nokia.com>
764 Reviewed by Darin Adler.
766 PLATFORM(CF) should be set when building for Qt on Darwin
767 https://bugs.webkit.org/show_bug.cgi?id=23671
769 * wtf/Platform.h: Turn on CF support if both QT and DARWIN
770 platforms are defined.
772 2009-11-02 Dmitry Titov <dimich@chromium.org>
774 Reviewed by David Levin.
776 Remove threadsafe refcounting from tasks used with WTF::MessageQueue.
777 https://bugs.webkit.org/show_bug.cgi?id=30612
779 * wtf/MessageQueue.h:
780 (WTF::MessageQueue::alwaysTruePredicate):
781 (WTF::MessageQueue::~MessageQueue):
782 (WTF::MessageQueue::append):
783 (WTF::MessageQueue::appendAndCheckEmpty):
784 (WTF::MessageQueue::prepend):
785 (WTF::MessageQueue::waitForMessage):
786 (WTF::MessageQueue::waitForMessageFilteredWithTimeout):
787 (WTF::MessageQueue::tryGetMessage):
788 (WTF::MessageQueue::removeIf):
789 The MessageQueue is changed to act as a queue of OwnPtr<DataType>. It takes ownership
790 of posted tasks and passes it to the new owner (in another thread) when the task is fetched.
791 All methods have arguments of type PassOwnPtr<DataType> and return the same type.
795 Superficial change to trigger rebuild of JSC project on Windows,
796 workaround for https://bugs.webkit.org/show_bug.cgi?id=30890
798 2009-10-30 Geoffrey Garen <ggaren@apple.com>
800 Reviewed by Oliver Hunt.
802 Fixed failing layout test: restore a special case I accidentally deleted.
804 * runtime/DatePrototype.cpp:
805 (JSC::setNewValueFromDateArgs): In the case of applying a change to a date
806 that is NaN, reset the date to 0 *and* then apply the change; don't just
809 2009-10-30 Geoffrey Garen <ggaren@apple.com>
811 Windows build fix: update for object-to-pointer change.
813 * runtime/DatePrototype.cpp:
814 (JSC::formatLocaleDate):
816 2009-10-29 Geoffrey Garen <ggaren@apple.com>
818 Reviewed by Darin Adler.
820 https://bugs.webkit.org/show_bug.cgi?id=30942
821 Use pointers instead of copies to pass GregorianDateTime objects around.
823 SunSpider reports a shocking 4.5% speedup on date-format-xparb, and 1.3%
824 speedup on date-format-tofte.
826 * runtime/DateInstance.cpp:
827 (JSC::DateInstance::gregorianDateTime):
828 * runtime/DateInstance.h:
829 * runtime/DatePrototype.cpp:
830 (JSC::formatLocaleDate):
831 (JSC::dateProtoFuncToString):
832 (JSC::dateProtoFuncToUTCString):
833 (JSC::dateProtoFuncToISOString):
834 (JSC::dateProtoFuncToDateString):
835 (JSC::dateProtoFuncToTimeString):
836 (JSC::dateProtoFuncGetFullYear):
837 (JSC::dateProtoFuncGetUTCFullYear):
838 (JSC::dateProtoFuncToGMTString):
839 (JSC::dateProtoFuncGetMonth):
840 (JSC::dateProtoFuncGetUTCMonth):
841 (JSC::dateProtoFuncGetDate):
842 (JSC::dateProtoFuncGetUTCDate):
843 (JSC::dateProtoFuncGetDay):
844 (JSC::dateProtoFuncGetUTCDay):
845 (JSC::dateProtoFuncGetHours):
846 (JSC::dateProtoFuncGetUTCHours):
847 (JSC::dateProtoFuncGetMinutes):
848 (JSC::dateProtoFuncGetUTCMinutes):
849 (JSC::dateProtoFuncGetSeconds):
850 (JSC::dateProtoFuncGetUTCSeconds):
851 (JSC::dateProtoFuncGetTimezoneOffset):
852 (JSC::setNewValueFromTimeArgs):
853 (JSC::setNewValueFromDateArgs):
854 (JSC::dateProtoFuncSetYear):
855 (JSC::dateProtoFuncGetYear): Renamed getGregorianDateTime to gregorianDateTime,
856 since it no longer has an out parameter. Uses 0 to indicate invalid dates.
858 2009-10-30 Zoltan Horvath <zoltan@webkit.org>
860 Reviewed by Darin Adler.
862 Allow custom memory allocation control for JavaScriptCore's ListHashSet
863 https://bugs.webkit.org/show_bug.cgi?id=30853
865 Inherits ListHashSet class from FastAllocBase because it is
866 instantiated by 'new' in WebCore/rendering/RenderBlock.cpp:1813.
870 2009-10-30 Oliver Hunt <oliver@apple.com>
872 Reviewed by Gavin Barraclough.
874 Regression: crash enumerating properties of an object with getters or setters
875 https://bugs.webkit.org/show_bug.cgi?id=30948
877 Add a guard to prevent us trying to cache property enumeration on
878 objects with getters or setters.
880 * runtime/JSPropertyNameIterator.cpp:
881 (JSC::JSPropertyNameIterator::create):
883 2009-10-30 Roland Steiner <rolandsteiner@chromium.org>
885 Reviewed by Eric Seidel.
887 Remove ENABLE_RUBY guards as discussed with Dave Hyatt and Maciej Stachowiak.
889 Bug 28420 - Implement HTML5 <ruby> rendering
890 (https://bugs.webkit.org/show_bug.cgi?id=28420)
892 No new tests (no functional change).
894 * Configurations/FeatureDefines.xcconfig:
896 2009-10-29 Oliver Hunt <oliver@apple.com>
898 Reviewed by Maciej Stachowiak.
900 REGRESSION (r50218-r50262): E*TRADE accounts page is missing content
901 https://bugs.webkit.org/show_bug.cgi?id=30947
902 <rdar://problem/7348833>
904 The logic for flagging that a structure has non-enumerable properties
905 was in addPropertyWithoutTransition, rather than in the core Structure::put
906 method. Despite this I was unable to produce a testcase that caused
907 the failure that etrade was experiencing, but the new assertion in
908 getEnumerablePropertyNames triggers on numerous layout tests without
909 the fix, so in effecti all for..in enumeration in any test ends up
910 doing the required consistency check.
912 * runtime/Structure.cpp:
913 (JSC::Structure::addPropertyWithoutTransition):
914 (JSC::Structure::put):
915 (JSC::Structure::getEnumerablePropertyNames):
916 (JSC::Structure::checkConsistency):
918 2009-10-29 Gabor Loki <loki@inf.u-szeged.hu>
920 Reviewed by Gavin Barraclough.
922 Add cacheFlush support for Thumb-2 on Linux
923 https://bugs.webkit.org/show_bug.cgi?id=30865
925 * jit/ExecutableAllocator.h:
926 (JSC::ExecutableAllocator::cacheFlush):
928 2009-10-28 Gavin Barraclough <barraclough@apple.com>
930 Reviewed by Oliver Hunt.
932 JSC JIT on ARMv7 cannot link jumps >16Mb range
933 https://bugs.webkit.org/show_bug.cgi?id=30891
935 Start planing all relative jumps as move-32-bit-immediate-to-register-BX.
936 In the cases where the jump would fall within a relative jump range, use a relative jump.
938 * JavaScriptCore.xcodeproj/project.pbxproj:
939 * assembler/ARMv7Assembler.h:
940 (JSC::ARMv7Assembler::~ARMv7Assembler):
941 (JSC::ARMv7Assembler::LinkRecord::LinkRecord):
942 (JSC::ARMv7Assembler::):
943 (JSC::ARMv7Assembler::executableCopy):
944 (JSC::ARMv7Assembler::linkJump):
945 (JSC::ARMv7Assembler::relinkJump):
946 (JSC::ARMv7Assembler::setInt32):
947 (JSC::ARMv7Assembler::isB):
948 (JSC::ARMv7Assembler::isBX):
949 (JSC::ARMv7Assembler::isMOV_imm_T3):
950 (JSC::ARMv7Assembler::isMOVT):
951 (JSC::ARMv7Assembler::isNOP_T1):
952 (JSC::ARMv7Assembler::isNOP_T2):
953 (JSC::ARMv7Assembler::linkJumpAbsolute):
954 (JSC::ARMv7Assembler::twoWordOp5i6Imm4Reg4EncodedImmFirst):
955 (JSC::ARMv7Assembler::twoWordOp5i6Imm4Reg4EncodedImmSecond):
956 (JSC::ARMv7Assembler::ARMInstructionFormatter::twoWordOp5i6Imm4Reg4EncodedImm):
957 * assembler/MacroAssemblerARMv7.h:
958 (JSC::MacroAssemblerARMv7::makeJump):
959 (JSC::MacroAssemblerARMv7::makeBranch):
963 2009-10-28 Oliver Hunt <oliver@apple.com>
965 Reviewed by Geoff Garen.
967 Improve for..in enumeration performance
968 https://bugs.webkit.org/show_bug.cgi?id=30887
970 Improve indexing of an object with a for..in iterator by
971 identifying cases where get_by_val is being used with a iterator
972 as the subscript and replace it with a new get_by_pname
973 bytecode. get_by_pname then optimizes lookups that directly access
976 * bytecode/CodeBlock.cpp:
977 (JSC::CodeBlock::dump):
979 * bytecompiler/BytecodeGenerator.cpp:
980 (JSC::BytecodeGenerator::emitGetByVal):
981 * bytecompiler/BytecodeGenerator.h:
982 (JSC::BytecodeGenerator::pushOptimisedForIn):
983 (JSC::BytecodeGenerator::popOptimisedForIn):
984 * interpreter/Interpreter.cpp:
985 (JSC::Interpreter::privateExecute):
987 (JSC::JIT::privateCompileMainPass):
988 (JSC::JIT::privateCompileSlowCases):
990 * jit/JITPropertyAccess.cpp:
991 (JSC::JIT::compileGetDirectOffset):
992 (JSC::JIT::emit_op_get_by_pname):
993 (JSC::JIT::emitSlow_op_get_by_pname):
995 (JSC::ForInNode::emitBytecode):
996 * runtime/JSObject.h:
997 * runtime/JSPropertyNameIterator.cpp:
998 (JSC::JSPropertyNameIterator::create):
999 * runtime/JSPropertyNameIterator.h:
1000 (JSC::JSPropertyNameIterator::getOffset):
1001 (JSC::JSPropertyNameIterator::JSPropertyNameIterator):
1002 * runtime/JSValue.h:
1004 * runtime/Structure.cpp:
1005 (JSC::Structure::addPropertyTransition):
1006 (JSC::Structure::changePrototypeTransition):
1007 (JSC::Structure::despecifyFunctionTransition):
1008 (JSC::Structure::addAnonymousSlotsTransition):
1009 (JSC::Structure::getterSetterTransition):
1010 (JSC::Structure::toDictionaryTransition):
1011 (JSC::Structure::addPropertyWithoutTransition):
1012 Track the existence (or not) of non-enumerable properties.
1013 * runtime/Structure.h:
1014 (JSC::Structure::propertyStorageCapacity):
1015 (JSC::Structure::propertyStorageSize):
1016 (JSC::Structure::hasNonEnumerableProperties):
1017 (JSC::Structure::hasAnonymousSlots):
1019 2009-10-28 Dmitry Titov <dimich@chromium.org>
1021 Not reviewed, attemp to fix Windows build.
1023 Touch the cpp file to cause recompile.
1025 * wtf/Threading.cpp:
1026 (WTF::threadEntryPoint):
1028 2009-10-28 Dmitry Titov <dimich@chromium.org>
1030 Reviewed by David Levin.
1032 https://bugs.webkit.org/show_bug.cgi?id=30805
1033 Add MessageQueue::removeIf(Predicate&) to remove certain tasks without pulling them from the queue.
1034 Existing Database tests cover this since Database removes tasks when it is stopped.
1036 * wtf/MessageQueue.h:
1039 2009-10-28 Afonso R. Costa Jr. <afonso.costa@openbossa.org>
1041 Reviewed by Oliver Hunt.
1043 [Qt] Enable YARR when YARR_JIT is enabled
1044 https://bugs.webkit.org/show_bug.cgi?id=30730
1046 When enabling or disabling JIT using JAVASCRIPTCORE_JIT, the ENABLE_YARR should
1049 * JavaScriptCore.pri:
1051 2009-10-24 Martin Robinson <martin.james.robinson@gmail.com>
1053 Reviewed by Oliver Hunt.
1055 Fix strict aliasing warning by switching reinterpret_cast to bitwise_cast.
1057 strict-aliasing warnings in JSFunction.h
1058 https://bugs.webkit.org/show_bug.cgi?id=27869
1060 * runtime/JSFunction.h:
1061 (JSC::JSFunction::nativeFunction):
1062 (JSC::JSFunction::scopeChain):
1063 (JSC::JSFunction::setScopeChain):
1064 (JSC::JSFunction::setNativeFunction):
1066 2009-10-28 Jan-Arve Sæther <jan-arve.saether@nokia.com>
1068 Reviewed by Tor Arne Vestbø.
1070 Build-fix for 64-bit Windows
1072 * wtf/Platform.h: Make sure to use WTF_USE_JSVALUE64
1074 2009-10-28 Gavin Barraclough <barraclough@apple.com>
1076 Reviewed by NOBODY (build fix!).
1080 2009-10-26 Holger Hans Peter Freyther <zecke@selfish.org>
1082 Rubber-stamped by Darin Adler.
1084 Export fastMalloc, fastCalloc, fastRealloc and fastFree on GCC/Unix
1085 https://bugs.webkit.org/show_bug.cgi?id=30769
1087 When using -fvisibility=hidden to hide all internal symbols by default
1088 the malloc symbols will be hidden as well. For memory instrumentation
1089 it is needed to provide an instrumented version of these symbols and
1090 override the normal routines and by changing the visibility back to
1091 default this becomes possible.
1093 The only other solution would be to use system malloc instead of the
1094 TCmalloc implementation but this will not allow to analyze memory
1095 behavior with the default allocator.
1097 * wtf/FastMalloc.h: Define WTF_FAST_MALLOC_EXPORT for GCC and !darwin
1099 2009-10-27 Gavin Barraclough <barraclough@apple.com>
1101 Rubber Stamped by Samuel Q. Weinig.
1103 Make the asserts protecting the offsets in the JIT more descriptive.
1107 (JSC::JIT::compileOpCall):
1108 * jit/JITPropertyAccess.cpp:
1109 (JSC::JIT::emit_op_method_check):
1110 (JSC::JIT::compileGetByIdHotPath):
1111 (JSC::JIT::compileGetByIdSlowCase):
1112 (JSC::JIT::emit_op_put_by_id):
1114 2009-10-27 Geoffrey Garen <ggaren@apple.com>
1116 Reviewed by Sam Weinig.
1118 A little bit of refactoring in the date code.
1120 * JavaScriptCore.exp: Don't export this unused symbol.
1122 * runtime/DateConstructor.cpp:
1123 (JSC::constructDate):
1125 * runtime/DateInstance.cpp:
1126 (JSC::DateInstance::DateInstance):
1127 * runtime/DateInstance.h: Removed some unused functions. Changed the default
1128 constructor to ensure that a DateInstance is always initialized.
1130 * runtime/DatePrototype.cpp:
1131 (JSC::DatePrototype::DatePrototype): Pass an initializer to our constructor,
1132 since it now requires one.
1135 (WTF::msToGregorianDateTime): Only compute our offset from UTC if our
1136 output will require it. Otherwise, our offset is 0.
1138 2009-10-27 Geoffrey Garen <ggaren@apple.com>
1140 Build fix: Mark DateInstaceCache.h private, so other frameworks can see it.
1142 * JavaScriptCore.xcodeproj/project.pbxproj:
1144 2009-10-27 Geoffrey Garen <ggaren@apple.com>
1146 Build fix: re-readded this file.
1148 * runtime/DateInstanceCache.h: Added.
1149 (JSC::DateInstanceData::create):
1150 (JSC::DateInstanceData::DateInstanceData):
1151 (JSC::DateInstanceCache::DateInstanceCache):
1152 (JSC::DateInstanceCache::add):
1153 (JSC::DateInstanceCache::lookup):
1155 2009-10-27 Geoffrey Garen <ggaren@apple.com>
1157 Reviewed by Darin Adler and Oliver Hunt.
1159 https://bugs.webkit.org/show_bug.cgi?id=30800
1160 Cache recently computed date data.
1162 SunSpider reports a ~0.5% speedup, mostly from date-format-tofte.js.
1165 * JavaScriptCore.gypi:
1166 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
1167 * JavaScriptCore.xcodeproj/project.pbxproj: Added new file.
1169 * runtime/DateInstance.cpp:
1170 (JSC::DateInstance::DateInstance):
1171 (JSC::DateInstance::getGregorianDateTime): Use the shared cache.
1173 * runtime/DateInstance.h: Renamed m_cache to m_data, to avoid the confusion
1176 * runtime/DatePrototype.cpp:
1177 (JSC::formatLocaleDate):
1178 (JSC::dateProtoFuncToString):
1179 (JSC::dateProtoFuncToUTCString):
1180 (JSC::dateProtoFuncToISOString):
1181 (JSC::dateProtoFuncToDateString):
1182 (JSC::dateProtoFuncToTimeString):
1183 (JSC::dateProtoFuncGetFullYear):
1184 (JSC::dateProtoFuncGetUTCFullYear):
1185 (JSC::dateProtoFuncToGMTString):
1186 (JSC::dateProtoFuncGetMonth):
1187 (JSC::dateProtoFuncGetUTCMonth):
1188 (JSC::dateProtoFuncGetDate):
1189 (JSC::dateProtoFuncGetUTCDate):
1190 (JSC::dateProtoFuncGetDay):
1191 (JSC::dateProtoFuncGetUTCDay):
1192 (JSC::dateProtoFuncGetHours):
1193 (JSC::dateProtoFuncGetUTCHours):
1194 (JSC::dateProtoFuncGetMinutes):
1195 (JSC::dateProtoFuncGetUTCMinutes):
1196 (JSC::dateProtoFuncGetSeconds):
1197 (JSC::dateProtoFuncGetUTCSeconds):
1198 (JSC::dateProtoFuncGetTimezoneOffset):
1199 (JSC::setNewValueFromTimeArgs):
1200 (JSC::setNewValueFromDateArgs):
1201 (JSC::dateProtoFuncSetYear):
1202 (JSC::dateProtoFuncGetYear): Pass an ExecState to these functions, so they
1203 can access the DateInstanceCache.
1205 * runtime/JSGlobalData.h: Keep a DateInstanceCache.
1207 2009-10-27 James Robinson <jamesr@chromium.org>
1209 Reviewed by Darin Fisher.
1211 Ensures that JavaScriptCore/wtf/CurrentTime.cpp is not built in PLATFORM(CHROMIUM) builds.
1213 Chromium uses a different method to calculate the current time than is used in
1214 JavaScriptCore/wtf/CurrentTime.cpp. This can lead to time skew when calls to currentTime() and Chromium's time
1215 function are mixed. In particular, timers can get scheduled in the past which leads to 100% CPU use.
1216 See http://code.google.com/p/chromium/issues/detail?id=25892 for an example.
1218 https://bugs.webkit.org/show_bug.cgi?id=30833
1220 * JavaScriptCore.gyp/JavaScriptCore.gyp:
1221 * wtf/CurrentTime.cpp:
1223 2009-10-27 Peter Varga <pvarga@inf.u-szeged.hu>
1225 Rubber-stamped by Tor Arne Vestbø.
1227 Fix typo in RegexInterpreter.cpp and RegexJIT.cpp alterantive to
1230 * yarr/RegexInterpreter.cpp:
1231 (JSC::Yarr::ByteCompiler::alternativeBodyDisjunction):
1232 (JSC::Yarr::ByteCompiler::alternativeDisjunction):
1233 (JSC::Yarr::ByteCompiler::emitDisjunction):
1234 * yarr/RegexJIT.cpp:
1235 (JSC::Yarr::RegexGenerator::generateDisjunction):
1237 2009-10-26 Laszlo Gombos <laszlo.1.gombos@nokia.com>
1239 Reviewed by Darin Adler.
1241 Make .rc files compile on Windows without depending on MFC headers
1242 https://bugs.webkit.org/show_bug.cgi?id=30750
1244 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.rc: Use
1245 winresrc.h because it exists even when MFC is not installed, and is
1246 all that's needed here.
1248 2009-10-26 Gabor Loki <loki@inf.u-szeged.hu>
1250 Reviewed by Gavin Barraclough.
1252 The thunkReturnAddress is on JITStackFrame on ARM JIT as well
1253 https://bugs.webkit.org/show_bug.cgi?id=30782
1255 Move the thunkReturnAddress from top of the stack into the JITStackFrame
1256 structure. This is a requirement for JSValue32_64 support on ARM.
1258 * assembler/MacroAssemblerARM.h:
1259 (JSC::MacroAssemblerARM::ret): Return with link register
1260 (JSC::MacroAssemblerARM::prepareCall): Store the return address in link register
1261 * jit/JIT.h: Remove unused ctiReturnRegister
1262 * jit/JITInlineMethods.h: Same as ARMv7
1263 (JSC::JIT::restoreArgumentReference): Ditto.
1264 (JSC::JIT::restoreArgumentReferenceForTrampoline): Ditto.
1265 * jit/JITOpcodes.cpp: Remove ctiReturnRegister related instruction
1266 * jit/JITStubs.cpp: Store thunkReturnAddress on JITStackFrame. Use
1267 small trampoline functions which handle return addresses for each
1269 * jit/JITStubs.h: Store thunkReturnAddress on JITStackFrame
1270 (JSC::JITStackFrame::returnAddressSlot): Return with the address of thunkReturnAddress
1271 * yarr/RegexJIT.cpp:
1272 (JSC::Yarr::RegexGenerator::generateEnter): Remove the unnecessary instruction
1274 2009-10-26 Steve Block <steveblock@google.com>
1276 Reviewed by Darin Adler.
1278 Adds ability to disable ReadWriteLock on platforms (eg Android) that use pthreads but do not support pthread_rwlock.
1279 https://bugs.webkit.org/show_bug.cgi?id=30713
1281 * wtf/Platform.h: Modified. Defines HAVE_PTHREAD_RWLOCK for all platforms currently using pthreads.
1282 * wtf/Threading.h: Modified. Use pthread_rwlock_t only when HAVE_PTHREAD_RWLOCK is defined.
1283 * wtf/ThreadingPthreads.cpp: Modified. Build ReadWriteLock methods only when HAVE_PTHREAD_RWLOCK is defined.
1285 2009-10-24 Laszlo Gombos <laszlo.1.gombos@nokia.com>
1287 Reviewed by Holger Freyther.
1289 [Qt] [Symbian] Set the capability and memory required to run QtWebKit for Symbian
1290 https://bugs.webkit.org/show_bug.cgi?id=30476
1292 Assign ReadUserData WriteUserData NetworkServices Symbian capabilities
1297 2009-10-23 Steve Block <steveblock@google.com>
1299 Reviewed by Dmitry Titov.
1301 Fixes a leak in createThreadInternal on Android.
1302 https://bugs.webkit.org/show_bug.cgi?id=30698
1304 * wtf/ThreadingPthreads.cpp: Modified.
1305 (WTF::createThreadInternal): Avoid leaking a ThreadData object on failure.
1307 2009-10-22 Geoffrey Garen <ggaren@apple.com>
1309 Reviewed by Alexey Proskuryakov.
1311 Fixed ASSERT when opening Safari's Caches window while the Web Inspector
1314 * runtime/Collector.cpp:
1315 (JSC::typeName): Added two new types to the type name list in the Collector.
1316 These types have been around for a while, but nobody remembered to consider them here.
1319 (JSC::JSCell::isPropertyNameIterator):
1320 * runtime/JSPropertyNameIterator.h:
1321 (JSC::JSPropertyNameIterator::isPropertyNameIterator): Give the Collector
1322 a way to tell if a cell is a JSPropertyNameIterator.
1324 2009-10-22 Steve Falkenburg <sfalken@apple.com>
1326 Reviewed by Jon Honeycutt.
1328 https://bugs.webkit.org/show_bug.cgi?id=30686
1329 Remove debug-specific def file.
1330 Only Debug_All target uses JavaScriptCore_debug.dll naming, and since
1331 that target is only used internally, maintaining two files just to
1332 suppress a single link warning isn't worthwhile.
1334 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
1335 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Removed.
1337 2009-10-21 Jon Honeycutt <jhoneycutt@apple.com>
1339 <rdar://problem/7270320> Screenshots of off-screen plug-ins are blank
1340 <rdar://problem/7270314> After halting a transparent PluginView on
1341 Windows, the transparency is applied twice
1343 Reviewed by Dan Bernstein.
1345 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1346 Export WTF::deleteOwnedPtr(HDC).
1348 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
1351 2009-10-20 Geoffrey Garen <ggaren@apple.com>
1353 Windows build fix: updated variable name.
1355 * runtime/DatePrototype.cpp:
1356 (JSC::formatLocaleDate):
1358 2009-10-20 Geoffrey Garen <ggaren@apple.com>
1360 Reviewed by Mark Rowe.
1362 * jit/JITOpcodes.cpp:
1363 (JSC::JIT::emit_op_next_pname): Slightly tweaked this #ifdef to match the
1364 size of a JSValue because m_jsStrings is an array of JSValues.
1366 2009-10-20 Geoffrey Garen <ggaren@apple.com>
1368 Reviewed by Mark Rowe.
1370 Fixed a 64-bit regression caused by the fix for
1371 https://bugs.webkit.org/show_bug.cgi?id=30570.
1373 * jit/JITOpcodes.cpp:
1374 (JSC::JIT::emit_op_next_pname): Use TimesEight stepping on 64-bit, since
1375 64-bit pointers are eight bytes long.
1377 2009-10-20 Geoffrey Garen <ggaren@apple.com>
1379 Reviewed by Sam Weinig.
1381 Refactored DateInstance::msToGregorianDateTime so that a DateInstance's
1382 caller doesn't need to supply the DateInstance's own internal value to
1385 * runtime/DateInstance.cpp:
1386 (JSC::DateInstance::getGregorianDateTime): Renamed from "msToGregorianDateTime".
1388 * runtime/DateInstance.h:
1389 * runtime/DatePrototype.cpp:
1390 (JSC::formatLocaleDate):
1391 (JSC::dateProtoFuncToString):
1392 (JSC::dateProtoFuncToUTCString):
1393 (JSC::dateProtoFuncToISOString):
1394 (JSC::dateProtoFuncToDateString):
1395 (JSC::dateProtoFuncToTimeString):
1396 (JSC::dateProtoFuncToLocaleString):
1397 (JSC::dateProtoFuncToLocaleDateString):
1398 (JSC::dateProtoFuncToLocaleTimeString):
1399 (JSC::dateProtoFuncGetTime):
1400 (JSC::dateProtoFuncGetFullYear):
1401 (JSC::dateProtoFuncGetUTCFullYear):
1402 (JSC::dateProtoFuncToGMTString):
1403 (JSC::dateProtoFuncGetMonth):
1404 (JSC::dateProtoFuncGetUTCMonth):
1405 (JSC::dateProtoFuncGetDate):
1406 (JSC::dateProtoFuncGetUTCDate):
1407 (JSC::dateProtoFuncGetDay):
1408 (JSC::dateProtoFuncGetUTCDay):
1409 (JSC::dateProtoFuncGetHours):
1410 (JSC::dateProtoFuncGetUTCHours):
1411 (JSC::dateProtoFuncGetMinutes):
1412 (JSC::dateProtoFuncGetUTCMinutes):
1413 (JSC::dateProtoFuncGetSeconds):
1414 (JSC::dateProtoFuncGetUTCSeconds):
1415 (JSC::dateProtoFuncGetTimezoneOffset):
1416 (JSC::setNewValueFromTimeArgs):
1417 (JSC::setNewValueFromDateArgs):
1418 (JSC::dateProtoFuncSetYear):
1419 (JSC::dateProtoFuncGetYear): Also renamed "utc" to "outputIsUTC", for clarity.
1421 2009-10-20 Gabor Loki <loki@inf.u-szeged.hu>
1423 Reviewed by Geoffrey Garen.
1425 The op_next_pname should use 4 bytes addressing mode in case of JSValue32
1426 https://bugs.webkit.org/show_bug.cgi?id=30570
1428 * jit/JITOpcodes.cpp:
1429 (JSC::JIT::emit_op_next_pname):
1431 2009-10-20 Gabor Loki <loki@inf.u-szeged.hu>
1433 Reviewed by Oliver Hunt.
1435 Move OverridesMarkChildren flag from DatePrototype to its parent class
1436 https://bugs.webkit.org/show_bug.cgi?id=30372
1438 * runtime/DateInstance.h:
1439 (JSC::DateInstance::createStructure):
1440 * runtime/DatePrototype.h:
1442 2009-10-19 Geoffrey Garen <ggaren@apple.com>
1444 Reviewed by Oliver Hunt.
1446 Tightened up some put_by_id_transition code generation.
1447 https://bugs.webkit.org/show_bug.cgi?id=30539
1450 * jit/JITPropertyAccess.cpp:
1451 (JSC::JIT::testPrototype):
1452 (JSC::JIT::privateCompilePutByIdTransition): No need to do object type
1453 checks or read Structures and prototypes from objects: they're all known
1454 constants at compile time.
1456 2009-10-19 Geoffrey Garen <ggaren@apple.com>
1458 Reviewed by Sam Weinig.
1460 Added a private API for getting a global context from a context, for
1461 clients who want to preserve a context for a later callback.
1464 (toGlobalRef): Added an ASSERT, since this function is used more often
1467 * API/JSContextRef.cpp:
1468 * API/JSContextRefPrivate.h: Added. The new API.
1470 * API/tests/testapi.c:
1471 (print_callAsFunction):
1472 (main): Test the new API.
1474 * JavaScriptCore.exp:
1475 * JavaScriptCore.xcodeproj/project.pbxproj: Build and export the new API.
1477 2009-10-17 Geoffrey Garen <ggaren@apple.com>
1479 Reviewed by Oliver Hunt.
1481 Tightened up some instanceof code generation.
1482 https://bugs.webkit.org/show_bug.cgi?id=30488
1484 * jit/JITOpcodes.cpp:
1485 (JSC::JIT::emit_op_instanceof):
1486 (JSC::JIT::emitSlow_op_instanceof): No need to do object type checks -
1487 cell type checks and ImplementsDefaultHasIntance checks implicitly
1488 supersede object type checks.
1490 2009-10-18 Kwang Yul Seo <skyul@company100.net>
1492 Reviewed by Darin Adler.
1494 Use _stricmp and _strnicmp instead of deprecated stricmp and strnicmp.
1495 https://bugs.webkit.org/show_bug.cgi?id=30474
1497 stricmp and strnicmp are deprecated beginning in Visual
1498 C++ 2005. Use _stricmp and _strnicmp instead in StringExtras.h.
1500 * wtf/StringExtras.h:
1504 2009-10-16 Geoffrey Garen <ggaren@apple.com>
1506 Build fix: apparently we shouldn't export those symbols?
1508 * JavaScriptCore.exp:
1510 2009-10-16 Geoffrey Garen <ggaren@apple.com>
1512 Build fix: export some symbols.
1514 * JavaScriptCore.exp:
1516 2009-10-16 Oliver Hunt <oliver@apple.com>
1518 Reviewed by Gavin Barraclough.
1520 structure typeinfo flags should be inherited.
1521 https://bugs.webkit.org/show_bug.cgi?id=30468
1523 Add StructureFlag constant to the various JSC classes and use
1524 it for the TypeInfo construction. This allows us to simply
1525 accumulate flags by basing each classes StructureInfo on its parents.
1527 * API/JSCallbackConstructor.h:
1528 (JSC::JSCallbackConstructor::createStructure):
1529 * API/JSCallbackFunction.h:
1530 (JSC::JSCallbackFunction::createStructure):
1531 * API/JSCallbackObject.h:
1532 (JSC::JSCallbackObject::createStructure):
1533 * debugger/DebuggerActivation.h:
1534 (JSC::DebuggerActivation::createStructure):
1535 * runtime/Arguments.h:
1536 (JSC::Arguments::createStructure):
1537 * runtime/BooleanObject.h:
1538 (JSC::BooleanObject::createStructure):
1539 * runtime/DatePrototype.h:
1540 (JSC::DatePrototype::createStructure):
1541 * runtime/FunctionPrototype.h:
1542 (JSC::FunctionPrototype::createStructure):
1543 * runtime/GlobalEvalFunction.h:
1544 (JSC::GlobalEvalFunction::createStructure):
1545 * runtime/InternalFunction.h:
1546 (JSC::InternalFunction::createStructure):
1547 * runtime/JSActivation.h:
1548 (JSC::JSActivation::createStructure):
1549 * runtime/JSArray.h:
1550 (JSC::JSArray::createStructure):
1551 * runtime/JSByteArray.cpp:
1552 (JSC::JSByteArray::createStructure):
1553 * runtime/JSByteArray.h:
1554 * runtime/JSFunction.h:
1555 (JSC::JSFunction::createStructure):
1556 * runtime/JSGlobalObject.h:
1557 (JSC::JSGlobalObject::createStructure):
1558 * runtime/JSNotAnObject.h:
1559 (JSC::JSNotAnObject::createStructure):
1560 * runtime/JSONObject.h:
1561 (JSC::JSONObject::createStructure):
1562 * runtime/JSObject.h:
1563 (JSC::JSObject::createStructure):
1564 * runtime/JSStaticScopeObject.h:
1565 (JSC::JSStaticScopeObject::createStructure):
1566 * runtime/JSVariableObject.h:
1567 (JSC::JSVariableObject::createStructure):
1568 * runtime/JSWrapperObject.h:
1569 (JSC::JSWrapperObject::createStructure):
1570 * runtime/MathObject.h:
1571 (JSC::MathObject::createStructure):
1572 * runtime/NumberConstructor.h:
1573 (JSC::NumberConstructor::createStructure):
1574 * runtime/NumberObject.h:
1575 (JSC::NumberObject::createStructure):
1576 * runtime/RegExpConstructor.h:
1577 (JSC::RegExpConstructor::createStructure):
1578 * runtime/RegExpObject.h:
1579 (JSC::RegExpObject::createStructure):
1580 * runtime/StringObject.h:
1581 (JSC::StringObject::createStructure):
1582 * runtime/StringObjectThatMasqueradesAsUndefined.h:
1583 (JSC::StringObjectThatMasqueradesAsUndefined::createStructure):
1585 2009-10-16 Geoffrey Garen <ggaren@apple.com>
1587 Reviewed by Oliver Hunt.
1589 Fast for-in enumeration: Cache JSPropertyNameIterator; cache JSStrings
1590 in JSPropertyNameIterator; inline more code.
1592 1.024x as fast on SunSpider (fasta: 1.43x as fast).
1594 * bytecode/CodeBlock.cpp:
1595 (JSC::CodeBlock::dump):
1596 * bytecode/Opcode.h:
1597 * bytecompiler/BytecodeGenerator.cpp:
1598 (JSC::BytecodeGenerator::emitGetPropertyNames):
1599 (JSC::BytecodeGenerator::emitNextPropertyName):
1600 * bytecompiler/BytecodeGenerator.h: Added a few extra operands to
1601 op_get_pnames and op_next_pname so that we can track iteration state
1602 in the register file instead of in the JSPropertyNameIterator. (To be
1603 cacheable, the JSPropertyNameIterator must be stateless.)
1605 * interpreter/Interpreter.cpp:
1606 (JSC::Interpreter::tryCachePutByID):
1607 (JSC::Interpreter::tryCacheGetByID): Updated for rename to
1608 "normalizePrototypeChain" and removal of "isCacheable".
1610 (JSC::Interpreter::privateExecute): Updated for in-RegisterFile
1611 iteration state tracking.
1614 (JSC::JIT::privateCompileMainPass):
1616 * jit/JITOpcodes.cpp:
1617 (JSC::JIT::emit_op_get_pnames): Updated for in-RegisterFile
1618 iteration state tracking.
1620 (JSC::JIT::emit_op_next_pname): Inlined code generation for op_next_pname.
1623 (JSC::JITThunks::tryCachePutByID):
1624 (JSC::JITThunks::tryCacheGetByID): Updated for rename to
1625 "normalizePrototypeChain" and removal of "isCacheable".
1627 (JSC::DEFINE_STUB_FUNCTION):
1629 (JSC::): Added has_property and to_object stubs. Removed op_next_pname
1630 stub, since has_property is all we need anymore.
1633 (JSC::ForInNode::emitBytecode): Updated for in-RegisterFile
1634 iteration state tracking.
1637 * runtime/JSObject.cpp:
1638 (JSC::JSObject::getPropertyNames): Don't do caching at this layer
1639 anymore, since we don't create a JSPropertyNameIterator at this layer.
1641 * runtime/JSPropertyNameIterator.cpp:
1642 (JSC::JSPropertyNameIterator::create): Do do caching at this layer.
1643 (JSC::JSPropertyNameIterator::get): Updated for in-RegisterFile
1644 iteration state tracking.
1645 (JSC::JSPropertyNameIterator::markChildren): Mark our JSStrings.
1647 * runtime/JSPropertyNameIterator.h:
1648 (JSC::JSPropertyNameIterator::size):
1649 (JSC::JSPropertyNameIterator::setCachedStructure):
1650 (JSC::JSPropertyNameIterator::cachedStructure):
1651 (JSC::JSPropertyNameIterator::setCachedPrototypeChain):
1652 (JSC::JSPropertyNameIterator::cachedPrototypeChain):
1653 (JSC::JSPropertyNameIterator::JSPropertyNameIterator):
1654 (JSC::Structure::setEnumerationCache): Don't store iteration state in
1655 a JSPropertyNameIterator. Do cache a JSPropertyNameIterator in a
1658 * runtime/JSValue.h:
1660 * runtime/MarkStack.h: Make those mischievous #include gods happy.
1662 * runtime/ObjectConstructor.cpp:
1664 * runtime/Operations.h:
1665 (JSC::normalizePrototypeChain): Renamed countPrototypeChainEntriesAndCheckForProxies
1666 to normalizePrototypeChain, since it changes dictionary prototypes to
1667 non-dictionary objects.
1669 * runtime/PropertyNameArray.cpp:
1670 (JSC::PropertyNameArray::add):
1671 * runtime/PropertyNameArray.h:
1672 (JSC::PropertyNameArrayData::PropertyNameArrayData):
1673 (JSC::PropertyNameArray::data):
1674 (JSC::PropertyNameArray::size):
1675 (JSC::PropertyNameArray::begin):
1676 (JSC::PropertyNameArray::end): Simplified some code here to help with
1677 current and future refactoring.
1679 * runtime/Protect.h:
1680 * runtime/Structure.cpp:
1681 (JSC::Structure::~Structure):
1682 (JSC::Structure::addPropertyWithoutTransition):
1683 (JSC::Structure::removePropertyWithoutTransition): No need to clear
1684 the enumeration cache with adding / removing properties without
1685 transition. It is an error to add / remove properties without transition
1686 once an object has been observed, and we can ASSERT to catch that.
1688 * runtime/Structure.h:
1689 (JSC::Structure::enumerationCache): Changed the enumeration cache to
1690 hold a JSPropertyNameIterator.
1692 * runtime/StructureChain.cpp:
1693 * runtime/StructureChain.h:
1694 (JSC::StructureChain::head): Removed StructureChain::isCacheable because
1695 it was wrong-headed in two ways: (1) It gave up when a prototype was a
1696 dictionary, but instead we want un-dictionary heavily accessed
1697 prototypes; (2) It folded a test for hasDefaultGetPropertyNames() into
1698 a generic test for "cacheable-ness", but hasDefaultGetPropertyNames()
1699 is only releavant to for-in caching.
1701 2009-10-16 Steve Falkenburg <sfalken@apple.com>
1703 Reviewed by Adam Roben.
1705 Add a Debug_All configuration to build entire stack as debug.
1706 Change Debug_Internal to:
1707 - stop using _debug suffix for all WebKit/Safari binaries
1708 - not use _debug as a DLL naming suffix
1709 - use non-debug C runtime lib.
1711 * JavaScriptCore.vcproj/JavaScriptCore.make: Debug build in makefile should build Debug_All.
1712 * JavaScriptCore.vcproj/JavaScriptCore.sln: Add Debug_All configuration.
1713 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Add Debug_All configuration.
1714 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: Renamed single configuration from "Release" to "all".
1715 * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln: Add Debug_All configuration.
1716 * JavaScriptCore.vcproj/WTF/WTF.vcproj: Add Debug_All configuration.
1717 * JavaScriptCore.vcproj/jsc/jsc.vcproj: Add Debug_All configuration.
1718 * JavaScriptCore.vcproj/testapi/testapi.vcproj: Add Debug_All configuration.
1720 2009-10-16 Oliver Hunt <oliver@apple.com>
1722 Reviewed by Gavin Barraclough.
1724 Make typeinfo flags default to false
1725 https://bugs.webkit.org/show_bug.cgi?id=30372
1727 Last part -- replace HasDefaultGetPropertyNames with OverridesGetPropertyNames
1730 * API/JSCallbackConstructor.h:
1731 (JSC::JSCallbackConstructor::createStructure):
1732 * API/JSCallbackObject.h:
1733 (JSC::JSCallbackObject::createStructure):
1734 * debugger/DebuggerActivation.h:
1735 (JSC::DebuggerActivation::createStructure):
1736 * runtime/Arguments.h:
1737 (JSC::Arguments::createStructure):
1738 * runtime/BooleanObject.h:
1739 (JSC::BooleanObject::createStructure):
1740 * runtime/DatePrototype.h:
1741 (JSC::DatePrototype::createStructure):
1742 * runtime/FunctionPrototype.h:
1743 (JSC::FunctionPrototype::createStructure):
1744 * runtime/GlobalEvalFunction.h:
1745 (JSC::GlobalEvalFunction::createStructure):
1746 * runtime/JSAPIValueWrapper.h:
1747 (JSC::JSAPIValueWrapper::createStructure):
1748 * runtime/JSActivation.h:
1749 (JSC::JSActivation::createStructure):
1750 * runtime/JSArray.h:
1751 (JSC::JSArray::createStructure):
1752 * runtime/JSByteArray.cpp:
1753 (JSC::JSByteArray::createStructure):
1754 * runtime/JSFunction.h:
1755 (JSC::JSFunction::createStructure):
1756 * runtime/JSGlobalObject.h:
1757 (JSC::JSGlobalObject::createStructure):
1758 * runtime/JSNotAnObject.h:
1759 (JSC::JSNotAnObject::createStructure):
1760 * runtime/JSONObject.h:
1761 (JSC::JSONObject::createStructure):
1762 * runtime/JSObject.cpp:
1763 (JSC::JSObject::getPropertyNames):
1764 * runtime/JSObject.h:
1765 (JSC::JSObject::createStructure):
1766 * runtime/JSStaticScopeObject.h:
1767 (JSC::JSStaticScopeObject::createStructure):
1768 * runtime/JSTypeInfo.h:
1769 (JSC::TypeInfo::overridesGetPropertyNames):
1770 * runtime/JSVariableObject.h:
1771 (JSC::JSVariableObject::createStructure):
1772 * runtime/JSWrapperObject.h:
1773 (JSC::JSWrapperObject::createStructure):
1774 * runtime/MathObject.h:
1775 (JSC::MathObject::createStructure):
1776 * runtime/NumberConstructor.h:
1777 (JSC::NumberConstructor::createStructure):
1778 * runtime/NumberObject.h:
1779 (JSC::NumberObject::createStructure):
1780 * runtime/RegExpConstructor.h:
1781 (JSC::RegExpConstructor::createStructure):
1782 * runtime/RegExpObject.h:
1783 (JSC::RegExpObject::createStructure):
1784 * runtime/StringObject.h:
1785 (JSC::StringObject::createStructure):
1786 * runtime/StringObjectThatMasqueradesAsUndefined.h:
1787 (JSC::StringObjectThatMasqueradesAsUndefined::createStructure):
1788 * runtime/StructureChain.cpp:
1789 (JSC::StructureChain::isCacheable):
1791 2009-10-16 Kevin Ollivier <kevino@theolliviers.com>
1793 wxMSW build fix, we can't use the simple hash there because the PlatformModuleVersion
1798 2009-10-16 Laszlo Gombos <laszlo.1.gombos@nokia.com>
1800 Reviewed by Simon Hausmann.
1802 [Qt] Implement ExecutableAllocator for Symbian
1803 https://bugs.webkit.org/show_bug.cgi?id=29946
1805 Tested with YARR JIT enabled for Symbian;
1806 This patch does not (yet) enable YARR JIT by default.
1808 * JavaScriptCore.pri:
1809 * jit/ExecutableAllocator.h:
1810 * jit/ExecutableAllocatorSymbian.cpp: Added.
1811 (JSC::ExecutableAllocator::intializePageSize):
1812 (JSC::ExecutablePool::systemAlloc):
1813 (JSC::ExecutablePool::systemRelease):
1815 2009-10-15 Oliver Hunt <oliver@apple.com>
1817 Reviewed by Darin Adler.
1819 Make typeinfo flags default to false
1820 https://bugs.webkit.org/show_bug.cgi?id=30372
1822 Part 2 -- Reverse the TypeInfo HasDefaultMark flag to OverridesMarkChildren, etc
1824 * API/JSCallbackConstructor.h:
1825 (JSC::JSCallbackConstructor::createStructure):
1826 * API/JSCallbackFunction.h:
1827 (JSC::JSCallbackFunction::createStructure):
1828 * API/JSCallbackObject.h:
1829 (JSC::JSCallbackObject::createStructure):
1830 * debugger/DebuggerActivation.h:
1831 (JSC::DebuggerActivation::createStructure):
1832 * runtime/Arguments.h:
1833 (JSC::Arguments::createStructure):
1834 * runtime/BooleanObject.h:
1835 (JSC::BooleanObject::createStructure):
1836 * runtime/DatePrototype.h:
1837 (JSC::DatePrototype::createStructure):
1838 * runtime/FunctionPrototype.h:
1839 (JSC::FunctionPrototype::createStructure):
1840 * runtime/GetterSetter.h:
1841 (JSC::GetterSetter::createStructure):
1842 * runtime/GlobalEvalFunction.h:
1843 (JSC::GlobalEvalFunction::createStructure):
1844 * runtime/InternalFunction.h:
1845 (JSC::InternalFunction::createStructure):
1846 * runtime/JSAPIValueWrapper.h:
1847 (JSC::JSAPIValueWrapper::createStructure):
1848 * runtime/JSActivation.h:
1849 (JSC::JSActivation::createStructure):
1850 * runtime/JSArray.h:
1851 (JSC::JSArray::createStructure):
1852 (JSC::MarkStack::markChildren):
1853 * runtime/JSByteArray.cpp:
1854 (JSC::JSByteArray::createStructure):
1855 * runtime/JSFunction.h:
1856 (JSC::JSFunction::createStructure):
1857 * runtime/JSGlobalObject.h:
1858 (JSC::JSGlobalObject::createStructure):
1859 * runtime/JSNotAnObject.h:
1860 (JSC::JSNotAnObject::createStructure):
1861 * runtime/JSNumberCell.h:
1862 (JSC::JSNumberCell::createStructure):
1863 * runtime/JSONObject.h:
1864 (JSC::JSONObject::createStructure):
1865 * runtime/JSObject.h:
1866 (JSC::JSObject::createStructure):
1867 * runtime/JSPropertyNameIterator.h:
1868 (JSC::JSPropertyNameIterator::createStructure):
1869 * runtime/JSStaticScopeObject.h:
1870 (JSC::JSStaticScopeObject::createStructure):
1871 * runtime/JSString.h:
1872 (JSC::JSString::createStructure):
1873 * runtime/JSTypeInfo.h:
1874 (JSC::TypeInfo::overridesMarkChildren):
1875 * runtime/JSVariableObject.h:
1876 (JSC::JSVariableObject::createStructure):
1877 * runtime/JSWrapperObject.h:
1878 (JSC::JSWrapperObject::createStructure):
1879 * runtime/MathObject.h:
1880 (JSC::MathObject::createStructure):
1881 * runtime/NumberConstructor.h:
1882 (JSC::NumberConstructor::createStructure):
1883 * runtime/NumberObject.h:
1884 (JSC::NumberObject::createStructure):
1885 * runtime/RegExpConstructor.h:
1886 (JSC::RegExpConstructor::createStructure):
1887 * runtime/RegExpObject.h:
1888 (JSC::RegExpObject::createStructure):
1889 * runtime/StringObject.h:
1890 (JSC::StringObject::createStructure):
1891 * runtime/StringObjectThatMasqueradesAsUndefined.h:
1892 (JSC::StringObjectThatMasqueradesAsUndefined::createStructure):
1894 2009-10-14 Oliver Hunt <oliver@apple.com>
1896 Reviewed by Geoff Garen.
1898 Make typeinfo flags default to false
1899 https://bugs.webkit.org/show_bug.cgi?id=30372
1901 Part 1. Reverse the HasStandardGetOwnPropertySlot flag.
1903 * API/JSCallbackConstructor.h:
1904 (JSC::JSCallbackConstructor::createStructure):
1905 * API/JSCallbackFunction.h:
1906 (JSC::JSCallbackFunction::createStructure):
1907 * API/JSCallbackObject.h:
1908 (JSC::JSCallbackObject::createStructure):
1909 * debugger/DebuggerActivation.h:
1910 (JSC::DebuggerActivation::createStructure):
1912 (JSC::DEFINE_STUB_FUNCTION):
1913 * runtime/Arguments.h:
1914 (JSC::Arguments::createStructure):
1915 * runtime/BooleanObject.h:
1916 (JSC::BooleanObject::createStructure):
1917 * runtime/DatePrototype.h:
1918 (JSC::DatePrototype::createStructure):
1919 * runtime/FunctionPrototype.h:
1920 (JSC::FunctionPrototype::createStructure):
1921 * runtime/GlobalEvalFunction.h:
1922 (JSC::GlobalEvalFunction::createStructure):
1923 * runtime/InternalFunction.h:
1924 (JSC::InternalFunction::createStructure):
1925 * runtime/JSActivation.h:
1926 (JSC::JSActivation::createStructure):
1927 * runtime/JSArray.h:
1928 (JSC::JSArray::createStructure):
1929 * runtime/JSByteArray.cpp:
1930 (JSC::JSByteArray::createStructure):
1931 * runtime/JSFunction.h:
1932 (JSC::JSFunction::createStructure):
1933 * runtime/JSGlobalObject.h:
1934 (JSC::JSGlobalObject::createStructure):
1935 * runtime/JSNumberCell.h:
1936 (JSC::JSNumberCell::createStructure):
1937 * runtime/JSONObject.h:
1938 (JSC::JSONObject::createStructure):
1939 * runtime/JSObject.h:
1940 (JSC::JSObject::createStructure):
1941 (JSC::JSCell::fastGetOwnPropertySlot):
1942 * runtime/JSStaticScopeObject.h:
1943 (JSC::JSStaticScopeObject::createStructure):
1944 * runtime/JSString.h:
1945 (JSC::JSString::createStructure):
1946 * runtime/JSTypeInfo.h:
1947 (JSC::TypeInfo::overridesGetOwnPropertySlot):
1948 * runtime/JSVariableObject.h:
1949 (JSC::JSVariableObject::createStructure):
1950 * runtime/JSWrapperObject.h:
1951 (JSC::JSWrapperObject::createStructure):
1952 * runtime/MathObject.h:
1953 (JSC::MathObject::createStructure):
1954 * runtime/NumberConstructor.h:
1955 (JSC::NumberConstructor::createStructure):
1956 * runtime/NumberObject.h:
1957 (JSC::NumberObject::createStructure):
1958 * runtime/RegExpConstructor.h:
1959 (JSC::RegExpConstructor::createStructure):
1960 * runtime/RegExpObject.h:
1961 (JSC::RegExpObject::createStructure):
1962 * runtime/StringObject.h:
1963 (JSC::StringObject::createStructure):
1964 * runtime/StringObjectThatMasqueradesAsUndefined.h:
1965 (JSC::StringObjectThatMasqueradesAsUndefined::createStructure):
1967 2009-10-14 Kevin Ollivier <kevino@theolliviers.com>
1968 2009-10-14 Darin Adler <darin@apple.com>
1970 Additions so fix for https://bugs.webkit.org/show_bug.cgi?id=18994
1971 can build on Windows.
1973 * wtf/MathExtras.h: Added llround and llroundf for Windows.
1975 2009-10-14 Kevin Ollivier <kevino@theolliviers.com>
1977 wx build fix. Set ENABLE_PLUGIN_PACKAGE_SIMPLE_HASH for plugins while we're still building stubs.
1981 2009-10-13 Laszlo Gombos <laszlo.1.gombos@nokia.com>
1983 Reviewed by Simon Hausmann.
1985 Refactor ENABLE_PLUGIN_PACKAGE_SIMPLE_HASH
1986 https://bugs.webkit.org/show_bug.cgi?id=30278
1988 Move the definition of ENABLE_PLUGIN_PACKAGE_SIMPLE_HASH
1989 from the make system into common code.
1993 2009-10-13 Laszlo Gombos <laszlo.1.gombos@nokia.com>
1995 Reviewed by Darin Adler.
1997 ARM compiler does not understand reinterpret_cast<void*>
1998 https://bugs.webkit.org/show_bug.cgi?id=29034
2000 Change reinterpret_cast<void*> to regular C style (void*) cast
2001 for the ARM RVCT compiler.
2003 * assembler/MacroAssemblerCodeRef.h:
2004 (JSC::FunctionPtr::FunctionPtr):
2005 * jit/JITOpcodes.cpp: Cast to FunctionPtr first
2006 instead of directly casting to reinterpret_cast
2007 * jit/JITStubCall.h: Ditto + change the type of m_stub
2008 from void* to FunctionPtr.
2009 (JSC::JITStubCall::JITStubCall):
2010 (JSC::JITStubCall::call):
2011 * jit/JITStubs.cpp: Ditto.
2012 (JSC::DEFINE_STUB_FUNCTION(EncodedJSValue, op_throw)):
2014 2009-10-11 Oliver Hunt <oliver@apple.com>
2020 2009-10-10 Oliver Hunt <oliver@apple.com>
2022 Reviewed by Maciej Stachowiak.
2024 Support for String.trim(), String.trimLeft() and String.trimRight() methods
2025 https://bugs.webkit.org/show_bug.cgi?id=26590
2027 Implement trim, trimLeft, and trimRight
2029 * runtime/StringPrototype.cpp:
2030 (JSC::isTrimWhitespace):
2031 Our normal string whitespace function does not include U+200B which
2032 is needed for compatibility with mozilla's implementation of trim.
2033 U+200B does not appear to be expected according to spec, however I am
2034 choosing to be lax, and match mozilla behavior so have added this
2038 2009-10-09 Geoffrey Garen <ggaren@apple.com>
2040 Reviewed by Oliver Hunt.
2042 Eliminated some legacy bytecode weirdness.
2044 Use vPC[x] subscripting instead of ++vPC to access instruction operands.
2045 This is simpler, and often more efficient.
2047 To support this, and to remove use of hard-coded offsets in bytecode and
2048 JIT code generation and dumping, calculate jump offsets from the beginning
2049 of an instruction, rather than the middle or end.
2051 Also, use OPCODE_LENGTH instead of hard-coded constants for the sizes of
2054 SunSpider reports no change in JIT mode, and a 1.01x speedup in Interpreter
2057 * bytecode/CodeBlock.cpp:
2058 (JSC::printConditionalJump):
2059 (JSC::CodeBlock::dump):
2060 * bytecompiler/BytecodeGenerator.cpp:
2061 (JSC::BytecodeGenerator::emitJump):
2062 (JSC::BytecodeGenerator::emitJumpIfTrue):
2063 (JSC::BytecodeGenerator::emitJumpIfFalse):
2064 (JSC::BytecodeGenerator::emitJumpIfNotFunctionCall):
2065 (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply):
2066 (JSC::BytecodeGenerator::emitComplexJumpScopes):
2067 (JSC::BytecodeGenerator::emitJumpScopes):
2068 (JSC::BytecodeGenerator::emitNextPropertyName):
2069 (JSC::BytecodeGenerator::emitCatch):
2070 (JSC::BytecodeGenerator::emitJumpSubroutine):
2071 (JSC::prepareJumpTableForImmediateSwitch):
2072 (JSC::prepareJumpTableForCharacterSwitch):
2073 (JSC::prepareJumpTableForStringSwitch):
2074 (JSC::BytecodeGenerator::endSwitch):
2075 * bytecompiler/Label.h:
2076 (JSC::Label::setLocation):
2078 * interpreter/Interpreter.cpp:
2079 (JSC::Interpreter::resolve):
2080 (JSC::Interpreter::resolveSkip):
2081 (JSC::Interpreter::resolveGlobal):
2082 (JSC::Interpreter::resolveBase):
2083 (JSC::Interpreter::resolveBaseAndProperty):
2084 (JSC::Interpreter::createExceptionScope):
2085 (JSC::Interpreter::privateExecute):
2086 * interpreter/Interpreter.h:
2088 (JSC::JIT::privateCompile):
2089 * jit/JITArithmetic.cpp:
2090 (JSC::JIT::emit_op_jnless):
2091 (JSC::JIT::emitSlow_op_jnless):
2092 (JSC::JIT::emit_op_jnlesseq):
2093 (JSC::JIT::emitSlow_op_jnlesseq):
2094 (JSC::JIT::emitBinaryDoubleOp):
2095 * jit/JITOpcodes.cpp:
2096 (JSC::JIT::emit_op_jmp):
2097 (JSC::JIT::emit_op_loop):
2098 (JSC::JIT::emit_op_loop_if_less):
2099 (JSC::JIT::emitSlow_op_loop_if_less):
2100 (JSC::JIT::emit_op_loop_if_lesseq):
2101 (JSC::JIT::emitSlow_op_loop_if_lesseq):
2102 (JSC::JIT::emit_op_loop_if_true):
2103 (JSC::JIT::emitSlow_op_loop_if_true):
2104 (JSC::JIT::emit_op_jfalse):
2105 (JSC::JIT::emitSlow_op_jfalse):
2106 (JSC::JIT::emit_op_jtrue):
2107 (JSC::JIT::emitSlow_op_jtrue):
2108 (JSC::JIT::emit_op_jeq_null):
2109 (JSC::JIT::emit_op_jneq_null):
2110 (JSC::JIT::emit_op_jneq_ptr):
2111 (JSC::JIT::emit_op_jsr):
2112 (JSC::JIT::emit_op_next_pname):
2113 (JSC::JIT::emit_op_jmp_scopes):
2115 2009-10-09 Geoffrey Garen <ggaren@apple.com>
2117 Reviewed by Sam Weinig.
2119 Migrated some code that didn't belong out of Structure.
2121 SunSpider says maybe 1.03x faster.
2123 * runtime/JSCell.h: Nixed Structure::markAggregate, and made marking of
2124 a Structure's prototype the direct responsility of the object using it.
2125 (Giving Structure a mark function was misleading because it implied that
2126 all live structures get marked during GC, when they don't.)
2128 * runtime/JSGlobalObject.cpp:
2129 (JSC::markIfNeeded):
2130 (JSC::JSGlobalObject::markChildren): Added code to mark prototypes stored
2131 on the global object. Maybe this wasn't necessary, but now we don't have
2134 * runtime/JSObject.cpp:
2135 (JSC::JSObject::getPropertyNames):
2136 (JSC::JSObject::getOwnPropertyNames):
2137 (JSC::JSObject::getEnumerableNamesFromClassInfoTable):
2138 * runtime/JSObject.h:
2139 (JSC::JSObject::markChildrenDirect):
2140 * runtime/PropertyNameArray.h:
2141 * runtime/Structure.cpp:
2142 * runtime/Structure.h:
2143 (JSC::Structure::setEnumerationCache):
2144 (JSC::Structure::enumerationCache): Moved property name gathering code
2145 from Structure to JSObject because having a Structure iterate its JSObject
2146 was a layering violation. A JSObject is implemented using a Structure; not
2147 the other way around.
2149 2009-10-09 Mark Rowe <mrowe@apple.com>
2151 Attempt to fix the GTK release build.
2153 * GNUmakefile.am: Include Grammar.cpp in release builds now that
2154 AllInOneFile.cpp is gone.
2156 2009-10-09 Gabor Loki <loki@inf.u-szeged.hu>
2158 Rubber-stamped by Eric Seidel.
2160 Add ARM JIT support for Gtk port (disabled by default)
2161 https://bugs.webkit.org/show_bug.cgi?id=30228
2165 2009-10-08 Geoffrey Garen <ggaren@apple.com>
2167 Tiger build fix: added a few more variable initializations.
2169 * runtime/StringPrototype.cpp:
2170 (JSC::stringProtoFuncReplace):
2171 (JSC::stringProtoFuncSearch):
2173 2009-10-08 Geoffrey Garen <ggaren@apple.com>
2175 Qt build fix: added missing #include.
2179 2009-10-08 Geoffrey Garen <ggaren@apple.com>
2181 Tiger build fix: initialize variable whose initialization the compiler
2182 can't otherwise figure out.
2184 * runtime/RegExpObject.cpp:
2185 (JSC::RegExpObject::match):
2187 2009-10-08 Geoffrey Garen <ggaren@apple.com>
2189 Windows build fix: updated exports.
2191 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2192 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
2194 2009-10-08 Geoffrey Garen <ggaren@apple.com>
2196 Tiger build fix: fixed file name case.
2198 * JavaScriptCore.xcodeproj/project.pbxproj:
2200 2009-10-08 Geoffrey Garen <ggaren@apple.com>
2202 Reviewed by Maciej Stachowiak.
2204 At long last, I pronounce the death of AllInOneFile.cpp.
2206 SunSpider reports a 1.01x speedup.
2208 * AllInOneFile.cpp: Removed.
2210 * JavaScriptCore.exp:
2211 * JavaScriptCore.gypi:
2212 * JavaScriptCore.xcodeproj/project.pbxproj: Added missing project files
2213 to compilation stages.
2219 * runtime/ArrayConstructor.cpp:
2220 (JSC::constructArrayWithSizeQuirk):
2221 * runtime/Collector.h:
2222 * runtime/JSCell.cpp:
2223 (JSC::JSCell::operator new):
2225 (JSC::JSCell::operator new):
2226 * runtime/JSGlobalObject.cpp:
2227 (JSC::JSGlobalObject::operator new):
2228 * runtime/JSNumberCell.h:
2229 (JSC::JSNumberCell::operator new):
2230 * runtime/JSString.cpp:
2231 * runtime/JSString.h:
2234 (JSC::jsOwnedString):
2235 * runtime/RegExpConstructor.cpp:
2236 * runtime/RegExpConstructor.h:
2237 (JSC::RegExpConstructorPrivate::RegExpConstructorPrivate):
2238 (JSC::RegExpConstructorPrivate::lastOvector):
2239 (JSC::RegExpConstructorPrivate::tempOvector):
2240 (JSC::RegExpConstructorPrivate::changeLastOvector):
2241 (JSC::RegExpConstructor::performMatch):
2242 * runtime/StringPrototype.cpp:
2243 (JSC::stringProtoFuncMatch):
2244 * yarr/RegexJIT.cpp:
2246 (JSC::Yarr::executeRegex): Inlined a few things that Shark said
2247 were hot, on the presumption that AllInOneFile.cpp used to inline them
2250 2009-10-08 Zoltan Herczeg <zherczeg@inf.u-szeged.hu>
2252 Reviewed by Gavin Barraclough.
2254 Fix for JIT'ed op_call instructions (evals, constructs, etc.)
2255 when !ENABLE(JIT_OPTIMIZE_CALL) && USE(JSVALUE32_64)
2257 https://bugs.webkit.org/show_bug.cgi?id=30201
2260 (JSC::JIT::compileOpCall):
2262 2009-10-07 Geoffrey Garen <ggaren@apple.com>
2264 Windows build fix: removed no longer exported symbol.
2266 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2267 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
2269 2009-10-07 Geoffrey Garen <ggaren@apple.com>
2271 Reviewed by Oliver Hunt.
2273 Fixed <rdar://problem/5751979> Database code takes JSLock on secondary
2274 thread, permanently slowing down JavaScript
2276 Removed the optional lock from Heap::protect, Heap::unprotect, and friends,
2277 since WebCore no longer uses it.
2279 * JavaScriptCore.exp:
2280 * runtime/Collector.cpp:
2281 (JSC::Heap::protect):
2282 (JSC::Heap::unprotect):
2283 (JSC::Heap::markProtectedObjects):
2284 (JSC::Heap::protectedGlobalObjectCount):
2285 (JSC::Heap::protectedObjectCount):
2286 (JSC::Heap::protectedObjectTypeCounts):
2287 * runtime/Collector.h:
2289 2009-10-07 Zoltan Horvath <zoltan@webkit.org>
2291 Reviewed by Darin Adler.
2293 Allow custom memory allocation control for JavaScriptCore's IdentifierArena
2294 https://bugs.webkit.org/show_bug.cgi?id=30158
2296 Inherits IdentifierArena class from FastAllocBase because it has been
2297 instantiated by 'new' in JavaScriptCore/parser/ParserArena.cpp:36.
2299 * parser/ParserArena.h:
2301 2009-10-07 Adam Roben <aroben@apple.com>
2303 Export DateInstance::info in a way that works on Windows
2305 Fixes <http://webkit.org/b/30171>
2306 fast/dom/Window/window-postmessage-clone.html fails on Windows
2308 Reviewed by Anders Carlsson.
2310 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2311 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
2312 Removed the export of DateInstance::info from here.
2314 * runtime/DateInstance.h: Use JS_EXPORTDATA to export
2315 DateInstance::info, which is the required way of exporting data on
2318 2009-10-07 Jørgen Lind <jorgen.lind@nokia.com>
2320 Reviewed by Simon Hausmann.
2322 When enabling or disabling the JIT through .qmake.cache, make sure
2323 to also toggle ENABLE_YARR_JIT.
2325 * JavaScriptCore.pri:
2327 2009-10-06 Priit Laes <plaes@plaes.org>
2329 Reviewed by Gavin Barraclough.
2331 Linking fails with "relocation R_X86_64_PC32 against symbol
2333 https://bugs.webkit.org/show_bug.cgi?id=28422
2336 Mark cti_vm_throw symbol as PLT-indirect symbol, so it doesn't end up
2337 in text segment causing relocation errors on amd64 architecture.
2338 Introduced new define SYMBOL_STRING_RELOCATION for such symbols.
2340 2009-10-06 Oliver Hunt <oliver@apple.com>
2344 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2345 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
2347 2009-10-06 Oliver Hunt <oliver@apple.com>
2349 Reviewed by NOBODY (build fix).
2353 * runtime/DateInstance.cpp:
2355 2009-10-05 Oliver Hunt <oliver@apple.com>
2357 Reviewed by Gavin Barraclough.
2359 It should be possible to post (clone) built-in JS objects to Workers
2360 https://bugs.webkit.org/show_bug.cgi?id=22878
2362 Expose helpers to throw correct exceptions during object graph walk
2363 used for cloning and add a helper function to create Date instances
2364 without going through the JS Date constructor function.
2366 * JavaScriptCore.exp:
2367 * JavaScriptCore.xcodeproj/project.pbxproj:
2368 * runtime/DateInstance.cpp:
2369 (JSC::DateInstance::DateInstance):
2370 * runtime/DateInstance.h:
2371 * runtime/ExceptionHelpers.cpp:
2372 (JSC::createTypeError):
2373 * runtime/ExceptionHelpers.h:
2375 2009-10-06 David Levin <levin@chromium.org>
2377 Reviewed by Oliver Hunt.
2379 StringImpl needs a method to get an instance for another thread which doesn't copy the underlying buffer.
2380 https://bugs.webkit.org/show_bug.cgi?id=30095
2382 * wtf/CrossThreadRefCounted.h:
2383 Removed an unused function and assert improvement.
2384 (WTF::CrossThreadRefCounted::isOwnedByCurrentThread): Moved out common code from asserts.
2385 (WTF::CrossThreadRefCounted::ref): Changed assert to use the common method.
2386 (WTF::CrossThreadRefCounted::deref): Changed assert to use the common method.
2387 (WTF::CrossThreadRefCounted::crossThreadCopy): Since this includes a potentially
2388 non-threadsafe operation, add an assert that the class is owned by the current thread.
2390 2009-10-05 Kevin Ollivier <kevino@theolliviers.com>
2392 wx build fix. Add Symbian files to the list of excludes.
2396 2009-10-05 Jocelyn Turcotte <jocelyn.turcotte@nokia.com>
2398 Reviewed by Simon Hausmann.
2400 [Qt] Remove precompiled header from JavaScriptCore compilation to
2401 prevent qmake warning during autonomous compilation.
2402 https://bugs.webkit.org/show_bug.cgi?id=30069
2404 * JavaScriptCore.pro:
2406 2009-10-02 Geoffrey Garen <ggaren@apple.com>
2408 Reviewed by Sam Weinig.
2410 Removed the concept of a "fast access cutoff" in arrays, because it
2411 punished some patterns of array access too much, and made things too
2412 complex for inlining in some cases.
2414 1.3% speedup on SunSpider.
2416 * jit/JITOpcodes.cpp:
2417 (JSC::JIT::emitSlow_op_get_by_val):
2418 (JSC::JIT::emitSlow_op_put_by_val):
2419 * jit/JITPropertyAccess.cpp:
2420 (JSC::JIT::emit_op_get_by_val):
2421 (JSC::JIT::emitSlow_op_get_by_val):
2422 (JSC::JIT::emit_op_put_by_val):
2423 (JSC::JIT::emitSlow_op_put_by_val):
2426 (JSC::): Check m_vectorLength instead of m_fastAccessCutoff when
2427 getting / putting from / to an array. Inline putting past the end of
2430 * runtime/JSArray.cpp:
2431 (JSC::JSArray::JSArray):
2432 (JSC::JSArray::getOwnPropertySlot):
2433 (JSC::JSArray::getOwnPropertyDescriptor):
2434 (JSC::JSArray::put):
2435 (JSC::JSArray::putSlowCase):
2436 (JSC::JSArray::deleteProperty):
2437 (JSC::JSArray::getOwnPropertyNames):
2438 (JSC::JSArray::increaseVectorLength):
2439 (JSC::JSArray::setLength):
2440 (JSC::JSArray::pop):
2441 (JSC::JSArray::push):
2442 (JSC::JSArray::sort):
2443 (JSC::JSArray::fillArgList):
2444 (JSC::JSArray::copyToRegisters):
2445 (JSC::JSArray::compactForSorting):
2446 (JSC::JSArray::checkConsistency):
2447 * runtime/JSArray.h:
2448 (JSC::JSArray::canGetIndex):
2449 (JSC::JSArray::canSetIndex):
2450 (JSC::JSArray::setIndex):
2451 (JSC::JSArray::markChildrenDirect): Removed m_fastAccessCutoff, and
2452 replaced with checks for JSValue() to detect reads and writes from / to
2453 uninitialized parts of the array.
2455 2009-10-02 Jonni Rainisto <jonni.rainisto@nokia.com>
2457 Reviewed by Darin Adler.
2459 Math.random() gives too low values on Win32 when _CRT_RAND_S is not defined
2460 https://bugs.webkit.org/show_bug.cgi?id=29956
2462 * wtf/RandomNumber.cpp:
2463 (WTF::randomNumber): Added PLATFORM(WIN_OS) to handle 15bit rand()
2465 2009-10-02 Geoffrey Garen <ggaren@apple.com>
2467 Reviewed by Sam Weinig.
2469 Take one branch instead of two to test for JSValue().
2471 1.1% SunSpider speedup.
2474 (JSC::JIT::compileOpCall):
2475 * jit/JITOpcodes.cpp:
2476 (JSC::JIT::emit_op_to_jsnumber):
2477 (JSC::JIT::emit_op_create_arguments):
2478 * jit/JITPropertyAccess.cpp:
2479 (JSC::JIT::emitSlow_op_get_by_val):
2480 (JSC::JIT::emit_op_put_by_val): Test for the empty value tag, instead
2481 of testing for the cell tag with a 0 payload.
2483 * runtime/JSValue.cpp:
2484 (JSC::JSValue::description): Added support for dumping the new empty value,
2485 and deleted values, in debug builds.
2487 * runtime/JSValue.h:
2488 (JSC::JSValue::JSValue()): Construct JSValue() with the empty value tag.
2490 (JSC::JSValue::JSValue(JSCell*)): Convert null pointer to the empty value
2491 tag, to avoid having two different c++ versions of null / empty.
2493 (JSC::JSValue::operator bool): Test for the empty value tag, instead
2494 of testing for the cell tag with a 0 payload.
2496 2009-10-02 Steve Falkenburg <sfalken@apple.com>
2498 Reviewed by Mark Rowe.
2500 <https://bugs.webkit.org/show_bug.cgi?id=29989>
2501 Safari version number shouldn't be exposed in WebKit code
2503 For a WebKit version of 532.3.4:
2504 Product version is: 5.32.3.4 (was 4.0.3.0)
2505 File version is: 5.32.3.4 (was 4.532.3.4)
2507 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.rc:
2509 2009-10-02 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
2511 Rubber-stamped by Simon Hausmann.
2513 Fix the Qt on Mac OS X build.
2515 * wtf/FastMalloc.cpp:
2517 2009-10-02 Jørgen Lind <jorgen.lind@nokia.com>
2519 Reviewed by Simon Hausmann.
2521 Allow enabling and disabling of the JIT through a qmake variable.
2523 Qt's configure may set this variable through .qmake.cache if a
2524 commandline option is given and/or the compile test for hwcap.h
2527 * JavaScriptCore.pri:
2529 2009-10-01 Mark Rowe <mrowe@apple.com>
2531 Fix the Tiger build. Don't unconditionally enable 3D canvas as it is not supported on Tiger.
2533 * Configurations/FeatureDefines.xcconfig:
2535 2009-10-01 Yongjun Zhang <yongjun.zhang@nokia.com>
2537 Reviewed by Darin Adler.
2539 https://bugs.webkit.org/show_bug.cgi?id=29187
2541 Don't inline ~ListRefPtr() to work around winscw compiler forward declaration
2542 bug regarding templated classes.
2544 The compiler bug is reported at:
2545 https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=9812
2547 The change will be reverted when the above bug is fixed in winscw compiler.
2550 (WTF::::~ListRefPtr):
2552 2009-10-01 Zoltan Horvath <zoltan@webkit.org>
2554 Reviewed by Simon Hausmann.
2556 [Qt] Allow custom memory allocation control for the whole JavaScriptCore
2557 https://bugs.webkit.org/show_bug.cgi?id=27029
2559 Since in JavaScriptCore almost every class which has been instantiated by operator new is
2560 inherited from FastAllocBase (bug #20422), we disable customizing global operator new for the Qt-port
2561 when USE_SYSTEM_MALLOC=0.
2563 Add #include <unistd.h> to FastMalloc.cpp because it's used by TCMalloc_PageHeap::scavengerThread().
2564 (It's needed for the functionality of TCmalloc.)
2566 Add TCSystemAlloc.cpp to JavaScriptCore.pri if USE_SYSTEM_MALLOC is disabled.
2568 * JavaScriptCore.pri:
2569 * wtf/FastMalloc.cpp:
2573 2009-09-30 Gabor Loki <loki@inf.u-szeged.hu>
2575 Reviewed by George Staikos.
2577 Defines two pseudo-platforms for ARM and Thumb-2 instruction set.
2578 https://bugs.webkit.org/show_bug.cgi?id=29122
2580 Introduces WTF_PLATFORM_ARM_TRADITIONAL and WTF_PLATFORM_ARM_THUMB2
2581 macros on ARM platforms. The PLATFORM(ARM_THUMB2) should be used
2582 when Thumb-2 instruction set is the required target. The
2583 PLATFORM(ARM_TRADITIONAL) is for generic ARM instruction set. In
2584 case where the code is common the PLATFORM(ARM) have to be used.
2586 Modified by George Wright <gwright@rim.com> to correctly work
2587 with the RVCT-defined __TARGET_ARCH_ARM and __TARGET_ARCH_THUMB
2588 compiler macros, as well as adding readability changes.
2592 2009-09-30 Oliver Hunt <oliver@apple.com>
2594 Reviewed by Geoff Garen.
2596 Devirtualise array toString conversion
2598 Tweak the implementation of Array.prototype.toString to have a fast path
2599 when acting on a true JSArray.
2601 * runtime/ArrayPrototype.cpp:
2602 (JSC::arrayProtoFuncToString):
2604 2009-09-30 Csaba Osztrogonac <oszi@inf.u-szeged.hu>
2606 Reviewed by Geoffrey Garen.
2608 Buildfix for platforms using JSVALUE32.
2609 https://bugs.webkit.org/show_bug.cgi?id=29915
2611 After http://trac.webkit.org/changeset/48905 the build broke in JSVALUE32 case.
2612 Also removed unreachable code.
2614 * jit/JITArithmetic.cpp:
2615 (JSC::JIT::emit_op_add):
2616 - Declaration of "OperandTypes types" moved before first use.
2617 - Typos fixed: dst modified to result, regT2 added.
2618 - Unreachable code removed.
2619 (JSC::JIT::emitSlow_op_add):
2620 - Missing declaration of "OperandTypes types" added.
2622 2009-09-30 Janne Koskinen <janne.p.koskinen@digia.com>
2624 Reviewed by Simon Hausmann.
2626 Reduce heap size on Symbian from 64MB to 8MB.
2628 This is not a perfect fix, it requires more fine tuning.
2629 But this makes it possible again to debug in the emulator,
2630 which is more important in order to be able to fix other
2633 * runtime/Collector.h:
2635 2009-09-30 Janne Koskinen <janne.p.koskinen@digia.com>
2637 Reviewed by Simon Hausmann.
2639 Fix CRASH() macro for Symbian build.
2641 * wtf/Assertions.h: Added missing }
2643 2009-09-29 Geoffrey Garen <ggaren@apple.com>
2645 Reviewed by Gavin Barraclough.
2647 Inlined a few math operations.
2649 ~1% SunSpider speedup.
2652 * jit/JITArithmetic.cpp:
2653 (JSC::JIT::compileBinaryArithOpSlowCase):
2654 (JSC::JIT::emitSlow_op_add):
2655 (JSC::JIT::emitSlow_op_mul):
2656 (JSC::JIT::emit_op_sub):
2657 (JSC::JIT::emitSlow_op_sub): Don't take a stub call when operating on
2658 a constant int and a double.
2660 2009-09-28 Oliver Hunt <oliver@apple.com>
2662 Reviewed by Gavin Barraclough.
2664 Tidy up codeblock sampler
2665 https://bugs.webkit.org/show_bug.cgi?id=29836
2667 Some rather simple refactoring of codeblock sampler so that
2668 it's easier for us to use it to find problems in non-jsc
2671 * JavaScriptCore.exp:
2672 * bytecode/SamplingTool.h:
2673 * debugger/Debugger.cpp:
2674 (JSC::evaluateInGlobalCallFrame):
2675 * debugger/DebuggerCallFrame.cpp:
2676 (JSC::DebuggerCallFrame::evaluate):
2677 * interpreter/Interpreter.cpp:
2678 (JSC::Interpreter::Interpreter):
2679 (JSC::Interpreter::execute):
2680 (JSC::Interpreter::privateExecute):
2681 (JSC::Interpreter::enableSampler):
2682 (JSC::Interpreter::dumpSampleData):
2683 (JSC::Interpreter::startSampling):
2684 (JSC::Interpreter::stopSampling):
2685 * interpreter/Interpreter.h:
2686 (JSC::Interpreter::sampler):
2690 * runtime/Completion.cpp:
2693 * runtime/Executable.h:
2694 (JSC::EvalExecutable::EvalExecutable):
2695 (JSC::ProgramExecutable::create):
2696 (JSC::ProgramExecutable::ProgramExecutable):
2697 * runtime/JSGlobalData.cpp:
2698 (JSC::JSGlobalData::startSampling):
2699 (JSC::JSGlobalData::stopSampling):
2700 (JSC::JSGlobalData::dumpSampleData):
2701 * runtime/JSGlobalData.h:
2702 * runtime/JSGlobalObjectFunctions.cpp:
2703 (JSC::globalFuncEval):
2705 2009-09-29 Jeremy Orlow <jorlow@chromium.org>
2707 Reviewed by Dimitri Glazkov.
2709 Add GYP generated files to svn:ignore
2710 https://bugs.webkit.org/show_bug.cgi?id=29895
2712 The following files are generated by JavaScriptCore's GYP file and should be ignored:
2722 * JavaScriptCore.gyp: Changed property svn:ignore.
2724 2009-09-29 Geoffrey Garen <ggaren@apple.com>
2726 Reviewed by Sam Weinig.
2728 Standardized an optimization for adding non-numbers.
2730 SunSpider says maybe a tiny speedup.
2732 * jit/JITArithmetic.cpp:
2733 (JSC::JIT::emit_op_add):
2734 (JSC::JIT::emitSlow_op_add):
2736 2009-09-29 Geoffrey Garen <ggaren@apple.com>
2738 Windows build fix: export a new symbol.
2740 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2741 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
2743 2009-09-28 Geoffrey Garen <ggaren@apple.com>
2745 Reviewed by Sam Weinig.
2747 Removed virtual destructor from JSGlobalObjectData to eliminate pointer
2748 fix-ups when accessing JSGlobalObject::d.
2750 Replaced with an explicit destructor function pointer.
2752 6% speedup on bench-alloc-nonretained.js.
2754 * JavaScriptCore.exp:
2755 * runtime/JSGlobalObject.cpp:
2756 (JSC::JSGlobalObject::~JSGlobalObject):
2757 (JSC::JSGlobalObject::destroyJSGlobalObjectData):
2758 * runtime/JSGlobalObject.h:
2759 (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData):
2760 (JSC::JSGlobalObject::JSGlobalObject):
2762 2009-09-29 Janne Koskinen <janne.p.koskinen@digia.com>
2764 Reviewed by David Kilzer.
2766 [Qt] Assert messages prints visible in Symbian
2767 https://bugs.webkit.org/show_bug.cgi?id=29808
2769 Asserts use vprintf to print the messages to stderr.
2770 In Symbian Open C it is not possible to see stderr so
2771 I routed the messages to stdout instead.
2773 * wtf/Assertions.cpp:
2775 2009-09-29 Janne Koskinen <janne.p.koskinen@digia.com>
2777 Reviewed by Darin Adler.
2779 [Qt] Symbian CRASH macro implementation
2781 Added Symbian specific crash macro that
2782 stops to crash line if JIT debugging is used.
2783 Additional differentiation of access violation
2784 (KERN-EXEC 3) and CRASH panic.
2788 2009-09-28 Mark Rowe <mrowe@apple.com>
2790 Fix the PowerPC build.
2792 * JavaScriptCore.exp:
2794 2009-09-28 Mark Rowe <mrowe@apple.com>
2796 Reviewed by Gavin Barraclough.
2798 <rdar://problem/7195704> JavaScriptCore fails to mark registers when built for x86_64 using LLVM GCC.
2800 * runtime/Collector.cpp:
2801 (JSC::Heap::markCurrentThreadConservatively): Force jmp_buf to use the appropriate alignment for a pointer
2802 to ensure that we correctly interpret the contents of registers during marking.
2804 2009-09-28 Geoffrey Garen <ggaren@apple.com>
2806 Windows build fix: added new exports.
2808 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2809 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
2811 2009-09-28 Geoffrey Garen <ggaren@apple.com>
2813 Windows build fix: removed exports that no longer exist.
2815 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2816 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
2818 2009-09-28 Geoffrey Garen <ggaren@apple.com>
2820 Reviewed by Darin Adler.
2822 NotNullPassRefPtr: smart pointer optimized for passing references that are not null
2823 https://bugs.webkit.org/show_bug.cgi?id=29822
2825 Added NotNullPassRefPtr, and deployed it in all places that initialize
2828 2.2% speedup on bench-allocate-nonretained.js.
2830 * API/JSCallbackConstructor.cpp:
2831 (JSC::JSCallbackConstructor::JSCallbackConstructor):
2832 * API/JSCallbackConstructor.h:
2833 * API/JSCallbackObject.h:
2834 * API/JSCallbackObjectFunctions.h:
2835 (JSC::JSCallbackObject::JSCallbackObject):
2836 * JavaScriptCore.exp:
2837 * bytecode/CodeBlock.h:
2838 (JSC::CodeBlock::addFunctionDecl):
2839 (JSC::CodeBlock::addFunctionExpr):
2840 * runtime/ArrayConstructor.cpp:
2841 (JSC::ArrayConstructor::ArrayConstructor):
2842 * runtime/ArrayConstructor.h:
2843 * runtime/ArrayPrototype.cpp:
2844 (JSC::ArrayPrototype::ArrayPrototype):
2845 * runtime/ArrayPrototype.h:
2846 * runtime/BooleanConstructor.cpp:
2847 (JSC::BooleanConstructor::BooleanConstructor):
2848 * runtime/BooleanConstructor.h:
2849 * runtime/BooleanObject.cpp:
2850 (JSC::BooleanObject::BooleanObject):
2851 * runtime/BooleanObject.h:
2852 * runtime/BooleanPrototype.cpp:
2853 (JSC::BooleanPrototype::BooleanPrototype):
2854 * runtime/BooleanPrototype.h:
2855 * runtime/DateConstructor.cpp:
2856 (JSC::DateConstructor::DateConstructor):
2857 * runtime/DateConstructor.h:
2858 * runtime/DateInstance.cpp:
2859 (JSC::DateInstance::DateInstance):
2860 * runtime/DateInstance.h:
2861 * runtime/DatePrototype.cpp:
2862 (JSC::DatePrototype::DatePrototype):
2863 * runtime/DatePrototype.h:
2864 * runtime/ErrorConstructor.cpp:
2865 (JSC::ErrorConstructor::ErrorConstructor):
2866 * runtime/ErrorConstructor.h:
2867 * runtime/ErrorInstance.cpp:
2868 (JSC::ErrorInstance::ErrorInstance):
2869 * runtime/ErrorInstance.h:
2870 * runtime/ErrorPrototype.cpp:
2871 (JSC::ErrorPrototype::ErrorPrototype):
2872 * runtime/ErrorPrototype.h:
2873 * runtime/FunctionConstructor.cpp:
2874 (JSC::FunctionConstructor::FunctionConstructor):
2875 * runtime/FunctionConstructor.h:
2876 * runtime/FunctionPrototype.cpp:
2877 (JSC::FunctionPrototype::FunctionPrototype):
2878 * runtime/FunctionPrototype.h:
2879 * runtime/GlobalEvalFunction.cpp:
2880 (JSC::GlobalEvalFunction::GlobalEvalFunction):
2881 * runtime/GlobalEvalFunction.h:
2882 * runtime/InternalFunction.cpp:
2883 (JSC::InternalFunction::InternalFunction):
2884 * runtime/InternalFunction.h:
2885 (JSC::InternalFunction::InternalFunction):
2886 * runtime/JSActivation.cpp:
2887 (JSC::JSActivation::JSActivation):
2888 * runtime/JSActivation.h:
2889 (JSC::JSActivation::JSActivationData::JSActivationData):
2890 * runtime/JSArray.cpp:
2891 (JSC::JSArray::JSArray):
2892 * runtime/JSArray.h:
2893 * runtime/JSByteArray.cpp:
2894 (JSC::JSByteArray::JSByteArray):
2895 * runtime/JSByteArray.h:
2896 * runtime/JSFunction.cpp:
2897 (JSC::JSFunction::JSFunction):
2898 * runtime/JSFunction.h:
2899 * runtime/JSGlobalObject.h:
2900 (JSC::JSGlobalObject::JSGlobalObject):
2901 * runtime/JSONObject.h:
2902 (JSC::JSONObject::JSONObject):
2903 * runtime/JSObject.h:
2904 (JSC::JSObject::JSObject):
2905 (JSC::JSObject::setStructure):
2906 * runtime/JSVariableObject.h:
2907 (JSC::JSVariableObject::JSVariableObject):
2908 * runtime/JSWrapperObject.h:
2909 (JSC::JSWrapperObject::JSWrapperObject):
2910 * runtime/MathObject.cpp:
2911 (JSC::MathObject::MathObject):
2912 * runtime/MathObject.h:
2913 * runtime/NativeErrorConstructor.cpp:
2914 (JSC::NativeErrorConstructor::NativeErrorConstructor):
2915 * runtime/NativeErrorConstructor.h:
2916 * runtime/NativeErrorPrototype.cpp:
2917 (JSC::NativeErrorPrototype::NativeErrorPrototype):
2918 * runtime/NativeErrorPrototype.h:
2919 * runtime/NumberConstructor.cpp:
2920 (JSC::NumberConstructor::NumberConstructor):
2921 * runtime/NumberConstructor.h:
2922 * runtime/NumberObject.cpp:
2923 (JSC::NumberObject::NumberObject):
2924 * runtime/NumberObject.h:
2925 * runtime/NumberPrototype.cpp:
2926 (JSC::NumberPrototype::NumberPrototype):
2927 * runtime/NumberPrototype.h:
2928 * runtime/ObjectConstructor.cpp:
2929 (JSC::ObjectConstructor::ObjectConstructor):
2930 * runtime/ObjectConstructor.h:
2931 * runtime/ObjectPrototype.cpp:
2932 (JSC::ObjectPrototype::ObjectPrototype):
2933 * runtime/ObjectPrototype.h:
2934 * runtime/PropertyNameArray.h:
2935 (JSC::PropertyNameArrayData::setCachedPrototypeChain):
2936 * runtime/PrototypeFunction.cpp:
2937 (JSC::PrototypeFunction::PrototypeFunction):
2938 * runtime/PrototypeFunction.h:
2939 * runtime/RegExpConstructor.cpp:
2940 (JSC::RegExpConstructor::RegExpConstructor):
2941 * runtime/RegExpConstructor.h:
2942 * runtime/RegExpObject.cpp:
2943 (JSC::RegExpObject::RegExpObject):
2944 * runtime/RegExpObject.h:
2945 (JSC::RegExpObject::RegExpObjectData::RegExpObjectData):
2946 * runtime/RegExpPrototype.cpp:
2947 (JSC::RegExpPrototype::RegExpPrototype):
2948 * runtime/RegExpPrototype.h:
2949 * runtime/StringConstructor.cpp:
2950 (JSC::StringConstructor::StringConstructor):
2951 * runtime/StringConstructor.h:
2952 * runtime/StringObject.cpp:
2953 (JSC::StringObject::StringObject):
2954 * runtime/StringObject.h:
2955 * runtime/StringObjectThatMasqueradesAsUndefined.h:
2956 (JSC::StringObjectThatMasqueradesAsUndefined::StringObjectThatMasqueradesAsUndefined):
2957 * runtime/StringPrototype.cpp:
2958 (JSC::StringPrototype::StringPrototype):
2959 * runtime/StringPrototype.h:
2961 (WTF::NotNullPassRefPtr::NotNullPassRefPtr):
2962 (WTF::NotNullPassRefPtr::~NotNullPassRefPtr):
2963 (WTF::NotNullPassRefPtr::get):
2964 (WTF::NotNullPassRefPtr::clear):
2965 (WTF::NotNullPassRefPtr::releaseRef):
2966 (WTF::NotNullPassRefPtr::operator*):
2967 (WTF::NotNullPassRefPtr::operator->):
2968 (WTF::NotNullPassRefPtr::operator!):
2969 (WTF::NotNullPassRefPtr::operator UnspecifiedBoolType):
2971 (WTF::RefPtr::RefPtr):
2974 2009-09-28 Oliver Hunt <oliver@apple.com>
2976 Reviewed by Geoff Garen.
2978 Hard dependency on SSE2 instruction set with JIT
2979 https://bugs.webkit.org/show_bug.cgi?id=29779
2981 Add floating point support checks to op_jfalse and op_jtrue, and
2982 fix the logic for the slow case of op_add
2984 * jit/JITArithmetic.cpp:
2985 (JSC::JIT::emitSlow_op_add):
2986 * jit/JITOpcodes.cpp:
2987 (JSC::JIT::emit_op_jfalse):
2988 (JSC::JIT::emit_op_jtrue):
2990 2009-09-28 Yaar Schnitman <yaar@chromium.org>
2992 Reviewed by Dimitri Glazkov.
2994 Chromium port - recognize we are being built independently
2995 of chromium and look for dependencies under webkit/chromium rather
2998 https://bugs.webkit.org/show_bug.cgi?id=29722
3000 * JavaScriptCore.gyp/JavaScriptCore.gyp:
3002 2009-09-28 Jakub Wieczorek <faw217@gmail.com>
3004 Reviewed by Simon Hausmann.
3006 [Qt] Implement XSLT support with QtXmlPatterns.
3007 https://bugs.webkit.org/show_bug.cgi?id=28303
3009 * wtf/Platform.h: Add a WTF_USE_QXMLQUERY #define.
3011 2009-09-28 Gabor Loki <loki@inf.u-szeged.hu>
3013 Reviewed by Simon Hausmann.
3015 Remove __clear_cache which is an internal function of GCC
3016 https://bugs.webkit.org/show_bug.cgi?id=28886
3018 Although __clear_cache is exported from GCC, this is an internal
3019 function. GCC makes no promises about it.
3021 * jit/ExecutableAllocator.h:
3022 (JSC::ExecutableAllocator::cacheFlush):
3024 2009-09-28 Sam Weinig <sam@webkit.org>
3026 Reviewed by Oliver Hunt.
3028 Fix an absolute path to somewhere in Oliver's machine to a relative path
3029 for derived JSONObject.lut.h.
3031 * JavaScriptCore.xcodeproj/project.pbxproj:
3033 2009-09-28 Joerg Bornemann <joerg.bornemann@nokia.com>
3035 Reviewed by Simon Hausmann.
3037 Add ARM version detection for Windows CE.
3041 2009-09-26 Yongjun Zhang <yongjun.zhang@nokia.com>
3043 Reviewed by Simon Hausmann.
3045 Add MarkStackSymbian.cpp to build JavascriptCore for Symbian.
3047 Re-use Windows shrinkAllocation implementation because Symbian doesn't
3048 support releasing part of memory region.
3050 Use fastMalloc and fastFree to implement allocateStack and releaseStack
3053 * JavaScriptCore.pri:
3054 * runtime/MarkStack.h:
3055 (JSC::MarkStack::MarkStackArray::shrinkAllocation):
3056 * runtime/MarkStackSymbian.cpp: Added.
3057 (JSC::MarkStack::initializePagesize):
3058 (JSC::MarkStack::allocateStack):
3059 (JSC::MarkStack::releaseStack):
3061 2009-09-25 Gabor Loki <loki@inf.u-szeged.hu>
3063 Reviewed by Gavin Barraclough.
3065 Fix unaligned data access in YARR_JIT on ARMv5 and below.
3066 https://bugs.webkit.org/show_bug.cgi?id=29695
3068 On ARMv5 and below all data access should be naturally aligned.
3069 In the YARR_JIT there is a case when character pairs are
3070 loaded from the input string, but this data access is not
3071 naturally aligned. This fix introduces load32WithUnalignedHalfWords
3072 and branch32WithUnalignedHalfWords functions which contain
3073 naturally aligned memory loads - half word loads - on ARMv5 and below.
3075 * assembler/MacroAssemblerARM.cpp:
3076 (JSC::MacroAssemblerARM::load32WithUnalignedHalfWords):
3077 * assembler/MacroAssemblerARM.h:
3078 (JSC::MacroAssemblerARM::load32WithUnalignedHalfWords):
3079 (JSC::MacroAssemblerARM::branch32WithUnalignedHalfWords):
3080 * assembler/MacroAssemblerARMv7.h:
3081 (JSC::MacroAssemblerARMv7::load32WithUnalignedHalfWords):
3082 (JSC::MacroAssemblerARMv7::branch32):
3083 (JSC::MacroAssemblerARMv7::branch32WithUnalignedHalfWords):
3084 * assembler/MacroAssemblerX86Common.h:
3085 (JSC::MacroAssemblerX86Common::load32WithUnalignedHalfWords):
3086 (JSC::MacroAssemblerX86Common::branch32WithUnalignedHalfWords):
3088 * yarr/RegexJIT.cpp:
3089 (JSC::Yarr::RegexGenerator::generatePatternCharacterPair):
3091 2009-09-25 Jeremy Orlow <jorlow@chromium.org>
3093 This is breaking Chromium try bots, so I'm counting this as a build fix.
3095 Add more svn:ignore exceptions. On different platforms, these files are
3096 generated with different case for JavaScriptCore. Also there are some
3097 wtf project files that get built apparently.
3099 * JavaScriptCore.gyp: Changed property svn:ignore.
3101 2009-09-25 Ada Chan <adachan@apple.com>
3105 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3106 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
3108 2009-09-25 Geoffrey Garen <ggaren@apple.com>
3110 Reviewed by Darin Adler.
3112 Inlined some object creation code, including lexicalGlobalObject access
3113 https://bugs.webkit.org/show_bug.cgi?id=29750
3115 SunSpider says 0.5% faster.
3117 0.8% speedup on bench-alloc-nonretained.js.
3118 2.5% speedup on v8-splay.js.
3120 * interpreter/CachedCall.h:
3121 (JSC::CachedCall::CachedCall):
3122 * interpreter/CallFrame.h:
3123 (JSC::ExecState::lexicalGlobalObject):
3124 (JSC::ExecState::globalThisValue):
3125 * interpreter/Interpreter.cpp:
3126 (JSC::Interpreter::dumpRegisters):
3127 (JSC::Interpreter::execute):
3128 (JSC::Interpreter::privateExecute):
3130 (JSC::DEFINE_STUB_FUNCTION):
3131 * runtime/FunctionConstructor.cpp:
3132 (JSC::constructFunction):
3133 * runtime/ScopeChain.cpp:
3134 (JSC::ScopeChainNode::print):
3135 * runtime/ScopeChain.h:
3136 (JSC::ScopeChainNode::ScopeChainNode):
3137 (JSC::ScopeChainNode::~ScopeChainNode):
3138 (JSC::ScopeChainNode::push):
3139 (JSC::ScopeChain::ScopeChain):
3140 (JSC::ScopeChain::globalObject): Added a globalObject data member to ScopeChainNode.
3141 Replaced accessor function for globalObject() with data member. Replaced
3142 globalThisObject() accessor with direct access to globalThis, to match.
3144 * runtime/JSGlobalObject.cpp:
3145 (JSC::JSGlobalObject::init):
3146 * runtime/JSGlobalObject.h: Inlined array and object construction.
3148 2009-09-25 Laszlo Gombos <laszlo.1.gombos@nokia.com>
3150 Reviewed by Gavin Barraclough.
3152 Add ARM version detection rules for Symbian
3153 https://bugs.webkit.org/show_bug.cgi?id=29715
3157 2009-09-24 Xan Lopez <xlopez@igalia.com>
3159 Reviewed by Mark "Do It!" Rowe.
3161 Some GCC versions don't like C++-style comments in preprocessor
3162 directives, change to C-style to shut them up.
3166 2009-09-24 Oliver Hunt <oliver@apple.com>
3168 Reviewed by Gavin Barraclough.
3170 Division is needlessly slow in 64-bit
3171 https://bugs.webkit.org/show_bug.cgi?id=29723
3173 Add codegen for op_div on x86-64
3176 (JSC::JIT::privateCompileMainPass):
3177 (JSC::JIT::privateCompileSlowCases):
3179 * jit/JITArithmetic.cpp:
3180 (JSC::JIT::compileBinaryArithOpSlowCase):
3181 (JSC::JIT::emit_op_div):
3182 (JSC::JIT::emitSlow_op_div):
3183 * jit/JITInlineMethods.h:
3184 (JSC::JIT::isOperandConstantImmediateDouble):
3185 (JSC::JIT::addressFor):
3186 (JSC::JIT::emitLoadDouble):
3187 (JSC::JIT::emitLoadInt32ToDouble):
3188 (JSC::JIT::emitJumpSlowCaseIfNotImmediateNumber):
3190 2009-09-24 Jeremy Orlow <jorlow@chromium.org>
3192 Reviewed by Dimitri Glazkov.
3194 Add GYP generated files to svn:ignore
3195 https://bugs.webkit.org/show_bug.cgi?id=29724
3197 Adding the following files to the svn:ignore list (all in the
3198 JavaScriptCore/JavaScriptCore.gyp directory)
3200 JavaScriptCore.xcodeproj
3202 JavaScriptCore.vcproj
3203 JavaScriptCore_Debug.rules
3204 JavaScriptCore_Release.rules
3205 JavaScriptCore_Release - no tcmalloc.rules
3206 JavaScriptCore_Purify.rules
3208 JavaScriptCore_Debug_rules.mk
3209 JavaScriptCore_Release_rules.mk
3210 JavaScriptCore_Release - no tcmalloc_rules.mk
3211 JavaScriptCore_Purify_rules.mk
3212 JavaScriptCore.scons
3213 JavaScriptCore_main.scons
3215 * JavaScriptCore.gyp: Changed property svn:ignore.
3217 2009-09-24 Yong Li <yong.li@torchmobile.com>
3219 Reviewed by Adam Barth.
3221 Replace platform-dependent code with WTF::currentTime()
3222 https://bugs.webkit.org/show_bug.cgi?id=29148
3227 (StopWatch::getElapsedMS):
3228 * runtime/TimeoutChecker.cpp:
3231 2009-09-24 Mark Rowe <mrowe@apple.com>
3233 Reviewed by Sam Weinig.
3235 <rdar://problem/7215058> FastMalloc scavenging thread should be named
3237 * wtf/FastMalloc.cpp:
3238 (WTF::TCMalloc_PageHeap::scavengerThread): Set the thread name.
3239 * wtf/Platform.h: Move the knowledge of whether pthread_setname_np exists to here as HAVE(PTHREAD_SETNAME_NP).
3240 * wtf/ThreadingPthreads.cpp:
3241 (WTF::setThreadNameInternal): Use HAVE(PTHREAD_SETNAME_NP).
3243 2009-09-24 Geoffrey Garen <ggaren@apple.com>
3245 Reviewed by Sam Weinig.
3247 Renamed clear to removeAll, as suggested by Darin Adler.
3249 * wtf/HashCountedSet.h:
3252 2009-09-24 Mark Rowe <mrowe@apple.com>
3254 Reviewed by Gavin Barraclough.
3256 Fix FastMalloc to build with assertions enabled.
3258 * wtf/FastMalloc.cpp:
3259 (WTF::TCMalloc_Central_FreeList::ReleaseToSpans):
3261 (TCMalloc_SpinLock::IsHeld):
3263 2009-09-24 Geoffrey Garen <ggaren@apple.com>
3265 Suggested by Darin Adler.
3267 Removed some unnecessary parameter names.
3269 * wtf/HashCountedSet.h:
3271 2009-09-24 Janne Koskinen <janne.p.koskinen@digia.com>
3273 Reviewed by Simon Hausmann.
3275 On Windows JSChar is typedef'ed to wchar_t.
3277 When building with WINSCW for Symbian we need to do the
3280 * API/JSStringRef.h:
3282 2009-09-23 Geoffrey Garen <ggaren@apple.com>
3284 A piece of my last patch that I forgot.
3286 * wtf/HashCountedSet.h:
3287 (WTF::::clear): Added HashCountedSet::clear.
3289 2009-09-24 Gabor Loki <loki@inf.u-szeged.hu>
3291 Reviewed by Gavin Barraclough.
3293 Avoid __clear_cache built-in function if DISABLE_BUILTIN_CLEAR_CACHE define is set
3294 https://bugs.webkit.org/show_bug.cgi?id=28886
3296 There are some GCC packages (for example GCC-2006q3 from CodeSourcery)
3297 which contain __clear_cache built-in function only for C while the C++
3298 version of __clear_cache is missing on ARM architectures.
3300 Fixed a small bug in the inline assembly of cacheFlush function on
3303 * jit/ExecutableAllocator.h:
3304 (JSC::ExecutableAllocator::cacheFlush):
3306 2009-09-23 Geoffrey Garen <ggaren@apple.com>
3308 Reviewed by Sam Weinig.
3310 Added the ability to swap vectors with inline capacities, so you can
3311 store a vector with inline capacity in a hash table.
3315 (WTF::VectorBuffer::swap):
3317 2009-09-23 David Kilzer <ddkilzer@apple.com>
3319 Move definition of USE(PLUGIN_HOST_PROCESS) from WebKitPrefix.h to Platform.h
3321 Reviewed by Mark Rowe.
3323 * wtf/Platform.h: Define WTF_USE_PLUGIN_HOST_PROCESS to 1 when
3324 building on 64-bit SnowLeopard. Define to 0 elsewhere.
3326 2009-09-22 Oliver Hunt <oliver@apple.com>
3328 Reviewed by Geoff Garen.
3330 Code sampling builds are broken.
3331 https://bugs.webkit.org/show_bug.cgi?id=29662
3335 * bytecode/EvalCodeCache.h:
3336 (JSC::EvalCodeCache::get):
3337 * bytecode/SamplingTool.cpp:
3338 (JSC::ScriptSampleRecord::sample):
3339 (JSC::SamplingTool::doRun):
3340 (JSC::SamplingTool::notifyOfScope):
3341 (JSC::compareScriptSampleRecords):
3342 (JSC::SamplingTool::dump):
3343 * bytecode/SamplingTool.h:
3344 (JSC::ScriptSampleRecord::ScriptSampleRecord):
3345 (JSC::ScriptSampleRecord::~ScriptSampleRecord):
3346 (JSC::SamplingTool::SamplingTool):
3347 * bytecompiler/BytecodeGenerator.cpp:
3348 (JSC::BytecodeGenerator::BytecodeGenerator):
3349 (JSC::BytecodeGenerator::emitNewFunction):
3350 (JSC::BytecodeGenerator::emitNewFunctionExpression):
3351 * bytecompiler/BytecodeGenerator.h:
3352 (JSC::BytecodeGenerator::makeFunction):
3353 * debugger/Debugger.cpp:
3354 (JSC::evaluateInGlobalCallFrame):
3355 * debugger/DebuggerCallFrame.cpp:
3356 (JSC::DebuggerCallFrame::evaluate):
3358 (JSC::ScopeNode::ScopeNode):
3359 * runtime/Completion.cpp:
3362 * runtime/Executable.cpp:
3363 (JSC::FunctionExecutable::fromGlobalCode):
3364 * runtime/Executable.h:
3365 (JSC::ScriptExecutable::ScriptExecutable):
3366 (JSC::EvalExecutable::EvalExecutable):
3367 (JSC::EvalExecutable::create):
3368 (JSC::ProgramExecutable::ProgramExecutable):
3369 (JSC::FunctionExecutable::create):
3370 (JSC::FunctionExecutable::FunctionExecutable):
3371 * runtime/JSGlobalObjectFunctions.cpp:
3372 (JSC::globalFuncEval):
3374 2009-09-22 Darin Adler <darin@apple.com>
3376 Reviewed by Sam Weinig.
3378 * wtf/Forward.h: Added PassOwnPtr.
3380 2009-09-22 Yaar Schnitman <yaar@chromium.org>
3382 Reviewed by David Levin.
3384 Ported chromium.org's javascriptcore.gyp for the webkit chromium port.
3386 https://bugs.webkit.org/show_bug.cgi?id=29617
3388 * JavaScriptCore.gyp/JavaScriptCore.gyp: Added.
3390 2009-09-22 Thiago Macieira <thiago.macieira@nokia.com>
3392 Reviewed by Simon Hausmann.
3394 Fix compilation with WINSCW: no varargs macros
3396 Disable variadic arguments for WINSCW just like we do
3401 2009-09-22 Kent Hansen <khansen@trolltech.com>
3403 Reviewed by Simon Hausmann.
3405 Disable variadic macros on MSVC7.
3407 This was originally added in r26589 but not extended
3408 when LOG_DISABLED/ASSERT_DISABLED was introduced.
3412 2009-09-22 Simon Hausmann <simon.hausmann@nokia.com>
3414 Unreviewed build fix for Windows CE < 5
3416 Define WINCEBASIC to disable the IsDebuggerPresent() code in
3419 * JavaScriptCore.pri:
3421 2009-09-22 Joerg Bornemann <joerg.bornemann@nokia.com>
3423 Reviewed by Simon Hausmann.
3425 Fix major memory leak in JavaScriptCore RegisterFile on Windows CE
3427 https://bugs.webkit.org/show_bug.cgi?id=29367
3429 On Widows CE we must decommit all committed pages before we release
3430 them. See VirtualFree documentation.
3431 Desktop Windows behaves much smoother in this situation.
3433 * interpreter/RegisterFile.cpp:
3434 (JSC::RegisterFile::~RegisterFile):
3436 2009-09-21 Greg Bolsinga <bolsinga@apple.com>
3438 Reviewed by Simon Fraser & Sam Weinig.
3440 Add ENABLE(ORIENTATION_EVENTS)
3441 https://bugs.webkit.org/show_bug.cgi?id=29508
3443 * wtf/Platform.h: Also sort PLATFORM(IPHONE) #defines.
3445 2009-09-21 Jedrzej Nowacki <jedrzej.nowacki@nokia.com>
3447 Reviewed by Eric Seidel.
3449 [Fix] SourceCode's uninitialized member
3451 Potential source of crashes and bugs was fixed. Default constructor
3452 didn't initialized m_provider member.
3454 https://bugs.webkit.org/show_bug.cgi?id=29364
3456 * parser/SourceCode.h:
3457 (JSC::SourceCode::SourceCode):
3459 2009-09-21 Oliver Hunt <oliver@apple.com>
3461 Reviewed by Geoff Garen.
3463 REGRESSION (r48582): Crash in StructureStubInfo::initPutByIdTransition when reloading trac.webkit.org
3464 https://bugs.webkit.org/show_bug.cgi?id=29599
3466 It is unsafe to attempt to cache new property transitions on
3467 dictionaries of any type.
3469 * interpreter/Interpreter.cpp:
3470 (JSC::Interpreter::tryCachePutByID):
3472 (JSC::JITThunks::tryCachePutByID):
3474 2009-09-21 Oliver Hunt <oliver@apple.com>
3476 RS=Maciej Stachowiak.
3478 Re-land SNES fix with corrected assertion.
3480 * interpreter/Interpreter.cpp:
3481 (JSC::Interpreter::resolveGlobal):
3482 (JSC::Interpreter::tryCachePutByID):
3483 (JSC::Interpreter::tryCacheGetByID):
3485 (JSC::JITThunks::tryCachePutByID):
3486 (JSC::JITThunks::tryCacheGetByID):
3487 (JSC::DEFINE_STUB_FUNCTION):
3488 * runtime/BatchedTransitionOptimizer.h:
3489 (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer):
3490 * runtime/JSObject.cpp:
3491 (JSC::JSObject::removeDirect):
3492 * runtime/Structure.cpp:
3493 (JSC::Structure::Structure):
3494 (JSC::Structure::getEnumerablePropertyNames):
3495 (JSC::Structure::despecifyDictionaryFunction):
3496 (JSC::Structure::addPropertyTransitionToExistingStructure):
3497 (JSC::Structure::addPropertyTransition):
3498 (JSC::Structure::removePropertyTransition):
3499 (JSC::Structure::toDictionaryTransition):
3500 (JSC::Structure::toCacheableDictionaryTransition):
3501 (JSC::Structure::toUncacheableDictionaryTransition):
3502 (JSC::Structure::fromDictionaryTransition):
3503 (JSC::Structure::removePropertyWithoutTransition):
3504 * runtime/Structure.h:
3505 (JSC::Structure::isDictionary):
3506 (JSC::Structure::isUncacheableDictionary):
3508 * runtime/StructureChain.cpp:
3509 (JSC::StructureChain::isCacheable):
3511 2009-09-21 Adam Roben <aroben@apple.com>
3513 Revert r48573, as it caused many assertion failures
3515 * interpreter/Interpreter.cpp:
3517 * runtime/BatchedTransitionOptimizer.h:
3518 * runtime/JSObject.cpp:
3519 * runtime/Structure.cpp:
3520 * runtime/Structure.h:
3521 * runtime/StructureChain.cpp:
3523 2009-09-21 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
3525 Unreviewed make dist build fix. Missing files.
3529 2009-09-19 Gavin Barraclough <barraclough@apple.com>
3531 Reviewed by Sam 'Cabin Boy' Weinig.
3533 Fix stack alignment with ARM THUMB2 JIT.
3534 https://bugs.webkit.org/show_bug.cgi?id=29526
3536 Stack is currently being decremented by 0x3c, bump this to 0x40 to make this a
3537 multiple of 16 bytes.
3540 (JSC::JITThunks::JITThunks):
3543 2009-09-20 Oliver Hunt <oliver@apple.com>
3545 Reviewed by Maciej Stachowiak.
3548 https://bugs.webkit.org/show_bug.cgi?id=29534
3550 The problem was that the emulator used multiple classes with
3551 more properties than our dictionary cutoff allowed, this resulted
3552 in more or less all critical logic inside the emulator requiring
3553 uncached property access.
3555 Rather than simply bumping the dictionary cutoff, this patch
3556 recognises that there are two ways to create a "dictionary"
3557 structure. Either by adding a large number of properties, or
3558 by removing a property. In the case of adding properties we
3559 know all the existing properties will maintain their existing
3560 offsets, so we could cache access to those properties, if we
3561 know they won't be removed.
3563 To make this possible, this patch adds the logic required to
3564 distinguish a dictionary created by addition from one created
3565 by removal. With this logic in place we can now cache access
3566 to objects with large numbers of properties.
3568 SNES performance improved by more than 6x.
3570 * interpreter/Interpreter.cpp:
3571 (JSC::Interpreter::resolveGlobal):
3572 (JSC::Interpreter::tryCachePutByID):
3573 (JSC::Interpreter::tryCacheGetByID):
3575 (JSC::JITThunks::tryCachePutByID):
3576 (JSC::JITThunks::tryCacheGetByID):
3577 (JSC::DEFINE_STUB_FUNCTION):
3578 * runtime/BatchedTransitionOptimizer.h:
3579 (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer):
3580 * runtime/JSObject.cpp:
3581 (JSC::JSObject::removeDirect):
3582 * runtime/Structure.cpp:
3583 (JSC::Structure::Structure):
3584 (JSC::Structure::getEnumerablePropertyNames):
3585 (JSC::Structure::despecifyDictionaryFunction):
3586 (JSC::Structure::addPropertyTransitionToExistingStructure):
3587 (JSC::Structure::addPropertyTransition):
3588 (JSC::Structure::removePropertyTransition):
3589 (JSC::Structure::toDictionaryTransition):
3590 (JSC::Structure::toCacheableDictionaryTransition):
3591 (JSC::Structure::toUncacheableDictionaryTransition):
3592 (JSC::Structure::fromDictionaryTransition):
3593 (JSC::Structure::removePropertyWithoutTransition):
3594 * runtime/Structure.h:
3595 (JSC::Structure::isDictionary):
3596 (JSC::Structure::isUncacheableDictionary):
3598 * runtime/StructureChain.cpp:
3599 (JSC::StructureChain::isCacheable):
3601 2009-09-19 Oliver Hunt <oliver@apple.com>
3603 Reviewed by Maciej Stachowiak.
3605 Implement ES5 Object.create function
3606 https://bugs.webkit.org/show_bug.cgi?id=29524
3608 Implement Object.create. Very simple patch, effectively Object.defineProperties
3609 only creating the target object itself.
3611 * runtime/CommonIdentifiers.h:
3612 * runtime/ObjectConstructor.cpp:
3613 (JSC::ObjectConstructor::ObjectConstructor):
3614 (JSC::objectConstructorCreate):
3616 2009-09-19 Dan Bernstein <mitz@apple.com>
3618 Fix clean debug builds.
3620 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
3622 2009-09-19 Joerg Bornemann <joerg.bornemann@nokia.com>
3624 Reviewed by George Staikos.
3626 QtWebKit Windows CE compile fix
3628 https://bugs.webkit.org/show_bug.cgi?id=29379
3630 There is no _aligned_alloc or _aligned_free on Windows CE.
3631 We just use the Windows code that was there before and use VirtualAlloc.
3632 But that also means that the BLOCK_SIZE must be 64K as this function
3633 allocates on 64K boundaries.
3635 * runtime/Collector.cpp:
3636 (JSC::Heap::allocateBlock):
3637 (JSC::Heap::freeBlock):
3638 * runtime/Collector.h:
3640 2009-09-19 Oliver Hunt <oliver@apple.com>
3642 Reviewed by Sam Weinig.
3644 Implement ES5 Object.defineProperties function
3645 https://bugs.webkit.org/show_bug.cgi?id=29522
3647 Implement Object.defineProperties. Fairly simple patch, simply makes use of
3648 existing functionality used for defineProperty.
3650 * runtime/CommonIdentifiers.h:
3651 * runtime/ObjectConstructor.cpp:
3652 (JSC::ObjectConstructor::ObjectConstructor):
3653 (JSC::defineProperties):
3654 (JSC::objectConstructorDefineProperties):
3656 2009-09-19 Oliver Hunt <oliver@apple.com>
3658 Reviewed by NOBODY (Build fix).
3660 Windows build fix part2
3662 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3663 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
3665 2009-09-19 Oliver Hunt <oliver@apple.com>
3667 Reviewed by NOBODY (Buildfix).
3669 Windows build fix part 1.
3671 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3672 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
3674 2009-09-18 Oliver Hunt <oliver@apple.com>
3676 Reviewed by Geoff Garen.
3678 Implement ES5 Object.defineProperty function
3679 https://bugs.webkit.org/show_bug.cgi?id=29503
3681 Implement Object.defineProperty. This requires adding the API to
3682 ObjectConstructor, along with a helper function that implements the
3683 ES5 internal [[ToPropertyDescriptor]] function. It then adds
3684 JSObject::defineOwnProperty that implements the appropriate ES5 semantics.
3685 Currently defineOwnProperty uses a delete followed by a put to redefine
3686 attributes of a property, clearly this is less efficient than it could be
3687 but we can improve this if it needs to be possible in future.
3689 * JavaScriptCore.exp:
3690 * debugger/DebuggerActivation.cpp:
3691 (JSC::DebuggerActivation::defineGetter):
3692 (JSC::DebuggerActivation::defineSetter):
3693 * debugger/DebuggerActivation.h:
3694 * interpreter/Interpreter.cpp:
3695 (JSC::Interpreter::privateExecute):
3697 Update defineGetter/Setter calls
3698 * runtime/CommonIdentifiers.h:
3699 * runtime/JSArray.cpp:
3700 (JSC::JSArray::getOwnPropertySlot):
3701 * runtime/JSGlobalObject.cpp:
3702 (JSC::JSGlobalObject::defineGetter):
3703 (JSC::JSGlobalObject::defineSetter):
3704 * runtime/JSGlobalObject.h:
3705 * runtime/JSObject.cpp:
3706 (JSC::JSObject::defineGetter):
3707 (JSC::JSObject::defineSetter):
3708 (JSC::putDescriptor):
3709 (JSC::JSObject::defineOwnProperty):
3710 * runtime/JSObject.h:
3711 * runtime/ObjectConstructor.cpp:
3712 (JSC::ObjectConstructor::ObjectConstructor):
3713 (JSC::objectConstructorGetOwnPropertyDescriptor):
3714 (JSC::toPropertyDescriptor):
3715 (JSC::objectConstructorDefineProperty):
3716 * runtime/ObjectPrototype.cpp:
3717 (JSC::objectProtoFuncDefineGetter):
3718 (JSC::objectProtoFuncDefineSetter):
3719 * runtime/PropertyDescriptor.cpp:
3720 (JSC::PropertyDescriptor::writable):
3721 (JSC::PropertyDescriptor::enumerable):
3722 (JSC::PropertyDescriptor::configurable):
3723 (JSC::PropertyDescriptor::isDataDescriptor):
3724 (JSC::PropertyDescriptor::isGenericDescriptor):
3725 (JSC::PropertyDescriptor::isAccessorDescriptor):
3726 (JSC::PropertyDescriptor::getter):
3727 (JSC::PropertyDescriptor::setter):
3728 (JSC::PropertyDescriptor::setDescriptor):
3729 (JSC::PropertyDescriptor::setAccessorDescriptor):
3730 (JSC::PropertyDescriptor::setWritable):
3731 (JSC::PropertyDescriptor::setEnumerable):
3732 (JSC::PropertyDescriptor::setConfigurable):
3733 (JSC::PropertyDescriptor::setSetter):
3734 (JSC::PropertyDescriptor::setGetter):
3735 (JSC::PropertyDescriptor::equalTo):
3736 (JSC::PropertyDescriptor::attributesEqual):
3737 (JSC::PropertyDescriptor::attributesWithOverride):
3738 * runtime/PropertyDescriptor.h:
3739 (JSC::PropertyDescriptor::PropertyDescriptor):
3740 (JSC::PropertyDescriptor::value):
3741 (JSC::PropertyDescriptor::setValue):
3742 (JSC::PropertyDescriptor::isEmpty):
3743 (JSC::PropertyDescriptor::writablePresent):
3744 (JSC::PropertyDescriptor::enumerablePresent):
3745 (JSC::PropertyDescriptor::configurablePresent):
3746 (JSC::PropertyDescriptor::setterPresent):
3747 (JSC::PropertyDescriptor::getterPresent):
3748 (JSC::PropertyDescriptor::operator==):
3749 (JSC::PropertyDescriptor::):
3751 2009-09-18 Gabor Loki <loki@inf.u-szeged.hu>
3753 Reviewed by Gavin Barraclough.
3755 Build fix to enable ARM_THUMB2 on Linux
3756 https://bugs.webkit.org/show_bug.cgi?id=
3758 * jit/ExecutableAllocator.h:
3759 (JSC::ExecutableAllocator::cacheFlush):
3763 2009-09-18 Gabor Loki <loki@inf.u-szeged.hu>
3765 Reviewed by Gavin Barraclough.
3767 Defines two pseudo-platforms for ARM and Thumb-2 instruction set.
3768 https://bugs.webkit.org/show_bug.cgi?id=29122
3770 Introduces WTF_PLATFORM_ARM_TRADITIONAL and WTF_PLATFORM_ARM_THUMB2
3771 macros on ARM platforms. The PLATFORM(ARM_THUMB2) should be used
3772 when Thumb-2 instruction set is the required target. The
3773 PLATFORM(ARM_TRADITIONAL) is for generic ARM instruction set. In
3774 case where the code is common the PLATFORM(ARM) have to be used.
3776 * assembler/ARMAssembler.cpp:
3777 * assembler/ARMAssembler.h:
3778 * assembler/ARMv7Assembler.h:
3779 * assembler/MacroAssembler.h:
3780 * assembler/MacroAssemblerARM.cpp:
3781 * assembler/MacroAssemblerARM.h:
3782 * assembler/MacroAssemblerCodeRef.h:
3783 (JSC::MacroAssemblerCodePtr::MacroAssemblerCodePtr):
3784 * jit/ExecutableAllocator.h:
3786 * jit/JITInlineMethods.h:
3787 (JSC::JIT::beginUninterruptedSequence):
3788 (JSC::JIT::preserveReturnAddressAfterCall):
3789 (JSC::JIT::restoreReturnAddressBeforeReturn):
3790 (JSC::JIT::restoreArgumentReference):
3791 (JSC::JIT::restoreArgumentReferenceForTrampoline):
3792 * jit/JITOpcodes.cpp:
3794 (JSC::JITThunks::JITThunks):
3797 * yarr/RegexJIT.cpp:
3798 (JSC::Yarr::RegexGenerator::generateEnter):
3800 2009-09-18 Joerg Bornemann <joerg.bornemann@nokia.com>
3802 Reviewed by Simon Hausmann.
3804 Fix the Qt/Windows CE build.
3806 * JavaScriptCore.pri: Build the ce_time.cpp functions from
3807 within Qt externally.
3808 * wtf/DateMath.cpp: Removed unnecessary Qt #ifdef, for the
3809 Qt build these functions are no external, too.
3811 2009-09-17 Janne Koskinen <janne.p.koskinen@digia.com>
3813 Reviewed by Simon Hausmann.
3815 Symbian/WINSCW build fox.
3817 Repeat Q_OS_WIN wchar_t hack for WINSCW, similar to
3820 WINSCW defines wchar_t, thus UChar has to be wchar_t
3822 * wtf/unicode/qt4/UnicodeQt4.h:
3824 2009-09-17 Janne Koskinen <janne.p.koskinen@digia.com>
3826 Reviewed by Simon Hausmann.
3828 Symbian/WINSCW build fix.
3830 https://bugs.webkit.org/show_bug.cgi?id=29186
3832 WINSCW Template specialisation name in declaration must the be the same as in implementation.
3834 * runtime/LiteralParser.h:
3836 2009-09-15 Norbert Leser <norbert.leser@nokia.com>
3838 Reviewed by Darin Adler.
3840 https://bugs.webkit.org/show_bug.cgi?id=27060
3842 Symbian compiler for emulator target (WINSCW) fails with
3843 "illegal operand" for m_attributesInPrevious in structure.ccp
3844 (when calling make_pair functions).
3845 This error is apparently due to the compiler not properly
3846 resolving the unsigned type of the declared bitfield.
3848 Initial patch explicitly casted m_attributesInPrevious
3849 to unsigned, but since bitfield optimization is not critical for
3850 the emulator target, this conditional change in header file
3851 appears to be least intrusive.
3853 * runtime/Structure.h:
3855 2009-09-16 Gabor Loki <loki@inf.u-szeged.hu>
3857 Reviewed by Darin Adler.
3859 Fix GCC warnings on ARM_THUMB2 platform
3861 * assembler/ARMv7Assembler.h:
3862 (JSC::ARMThumbImmediate::countLeadingZerosPartial):
3863 * assembler/MacroAssemblerARMv7.h:
3864 (JSC::MacroAssemblerARMv7::branchTruncateDoubleToInt32):
3865 (JSC::MacroAssemblerARMv7::moveFixedWidthEncoding):
3867 2009-09-16 Greg Bolsinga <bolsinga@apple.com>
3869 Add ENABLE(INSPECTOR)
3870 https://bugs.webkit.org/show_bug.cgi?id=29260
3872 Reviewed by David Kilzer.
3876 2009-09-16 Greg Bolsinga <bolsinga@apple.com>
3878 Add ENABLE(CONTEXT_MENUS)
3879 https://bugs.webkit.org/show_bug.cgi?id=29225
3881 Reviewed by David Kilzer.
3885 2009-09-16 Benjamin C Meyer <benjamin.meyer@torchmobile.com>
3887 Reviewed by Eric Seidel.
3889 The webkit stdint and stdbool headers exists because
3890 the compiler MSVC doesn't include them. The check
3891 should not check for PLATFORM(WIN_OS) but for MSVC.
3893 * os-win32/stdbool.h:
3894 * os-win32/stdint.h:
3896 2009-09-16 Greg Bolsinga <bolsinga@apple.com>
3898 Add ENABLE(DRAG_SUPPORT)
3899 https://bugs.webkit.org/show_bug.cgi?id=29233
3901 Reviewed by David Kilzer.
3905 2009-09-16 Kevin Ollivier <kevino@theolliviers.com>
3907 waf build fix after flag was moved to correct place.
3911 2009-09-16 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
3913 Reviewed by Simon Hausmann.
3915 [Qt] Build fix for 64-bit Qt on Mac OS X
3917 * wtf/Platform.h: Use JSVALUE64 on DARWIN, not only on MAC
3919 2009-09-16 Zoltan Herczeg <zherczeg@inf.u-szeged.hu>
3921 Reviewed by Simon Hausmann.
3923 [Qt] Fix wtf/ThreadSpecific.h under Qt to free thread local objects.
3924 https://bugs.webkit.org/show_bug.cgi?id=29295
3926 This is an important fix when JavaScript workers are in use, since
3927 unfreed ThreadGlobalDatas leak a big amount of memory (50-100k each).
3928 QThreadStorage calls the destructor of a given object, which is the
3929 ThreadSpecific::Data. Unlike pthread, Qt is object oriented, and does
3930 not support the calling of a static utility function when the thread
3931 is about to close. In this patch we call the ThreadSpecific::destroy()
3932 utility function from the destructor of ThreadSpecific::Data. Moreover,
3933 since Qt resets all thread local values to 0 before the calling of the
3934 appropriate destructors, we set back the pointer to its original value.
3935 This is necessary because the get() method of the ThreadSpecific
3936 object may be called during the exuction of the destructor.
3938 * wtf/ThreadSpecific.h:
3939 (WTF::ThreadSpecific::Data::~Data):
3940 (WTF::::~ThreadSpecific):
3944 2009-09-10 Oliver Hunt <oliver@apple.com>
3946 Reviewed by Geoff Garen.
3948 Allow anonymous storage inside JSObject
3949 https://bugs.webkit.org/show_bug.cgi?id=29168
3951 Add the concept of anonymous slots to Structures so that it is
3952 possible to store references to values that need marking in the
3953 standard JSObject storage buffer. This allows us to reduce the
3954 malloc overhead of some objects (by allowing them to store JS
3955 values in the inline storage of the object) and reduce the
3956 dependence of custom mark functions (if all an objects children
3957 are in the standard object property storage there's no need to
3958 mark them manually).
3960 * JavaScriptCore.exp:
3961 * runtime/JSObject.h:
3962 (JSC::JSObject::putAnonymousValue):
3963 (JSC::JSObject::getAnonymousValue):
3964 (JSC::JSObject::addAnonymousSlots):
3965 * runtime/JSWrapperObject.h:
3966 (JSC::JSWrapperObject::createStructure):
3967 (JSC::JSWrapperObject::JSWrapperObject):
3968 (JSC::JSWrapperObject::setInternalValue):
3969 * runtime/PropertyMapHashTable.h:
3970 * runtime/Structure.cpp:
3971 (JSC::Structure::~Structure):
3972 (JSC::Structure::materializePropertyMap):
3973 (JSC::Structure::addAnonymousSlotsTransition):
3974 (JSC::Structure::copyPropertyTable):
3975 (JSC::Structure::put):
3976 (JSC::Structure::rehashPropertyMapHashTable):
3977 * runtime/Structure.h:
3978 (JSC::Structure::propertyStorageSize):
3979 (JSC::StructureTransitionTable::reifySingleTransition):
3980 * runtime/StructureTransitionTable.h:
3981 (JSC::StructureTransitionTable::TransitionTable::addSlotTransition):
3982 (JSC::StructureTransitionTable::TransitionTable::removeSlotTransition):
3983 (JSC::StructureTransitionTable::TransitionTable::getSlotTransition):
3984 (JSC::StructureTransitionTable::getAnonymousSlotTransition):
3985 (JSC::StructureTransitionTable::addAnonymousSlotTransition):
3986 (JSC::StructureTransitionTable::removeAnonymousSlotTransition):
3988 2009-09-15 Alex Milowski <alex@milowski.com>
3990 Reviewed by Tor Arne Vestbø.
3992 Added the ENABLE_MATHML define to the features
3994 * Configurations/FeatureDefines.xcconfig:
3996 2009-09-15 Csaba Osztrogonac <oszi@inf.u-szeged.hu>
3998 Reviewed by Tor Arne Vestbø.
4000 [Qt] Build fix for windows.
4002 After http://trac.webkit.org/changeset/47795 the MinGW build broke,
4003 because MinGW has __mingw_aligned_malloc instead of _aligned_malloc.
4005 * runtime/Collector.cpp:
4006 (JSC::Heap::allocateBlock): MinGW case added.
4007 (JSC::Heap::freeBlock): MinGW case added.
4009 2009-09-15 Csaba Osztrogonac <oszi@inf.u-szeged.hu>
4011 Reviewed by Tor Arne Vestbø.
4013 [Qt] Build fix for Windows/MinGW
4015 https://bugs.webkit.org/show_bug.cgi?id=29268
4017 * wtf/Platform.h: JSVALUE32_64 temporarily disabled on PLATFORM(WIN_OS) with COMPILER(MINGW)
4019 2009-09-14 Gabor Loki <loki@inf.u-szeged.hu>
4021 Reviewed by Gavin Barraclough.
4023 Detect VFP at runtime in generic ARM port on Linux platform.
4024 https://bugs.webkit.org/show_bug.cgi?id=29076
4026 * JavaScriptCore.pri:
4027 * assembler/MacroAssemblerARM.cpp: Added.
4028 (JSC::isVFPPresent):
4029 * assembler/MacroAssemblerARM.h:
4030 (JSC::MacroAssemblerARM::supportsFloatingPoint):
4032 2009-09-14 Csaba Osztrogonac <oszi@inf.u-szeged.hu>
4034 Reviewed by Tor Arne Vestbø.
4036 [Qt] Build fix for windows build.
4038 * JavaScriptCore.pri: Correct a logic error.
4039 * pcre/dftables: Add missing paranthesis for tmpdir function.
4041 2009-09-12 Oliver Hunt <oliver@apple.com>
4043 Reviewed by NOBODY (Build fix).
4045 Build fix for windows exports (again).
4047 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
4048 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
4050 2009-09-12 Oliver Hunt <oliver@apple.com>
4052 Reviewed by NOBODY (Build fix).
4054 Build fix for windows exports.
4056 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
4057 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
4059 2009-09-12 Oliver Hunt <oliver@apple.com>
4061 Reviewed by NOBODY (Build fix).
4063 Correct fix for non-allinonefile builds
4065 * runtime/ObjectConstructor.cpp:
4067 2009-09-12 Oliver Hunt <oliver@apple.com>
4069 Reviewed by NOBODY (Build fix).
4071 Fix non-allinonefile builds
4073 * runtime/ObjectConstructor.cpp:
4075 2009-09-12 Oliver Hunt <oliver@apple.com>
4077 Reviewed by Maciej Stachowiak.
4079 [ES5] Implement Object.keys
4080 https://bugs.webkit.org/show_bug.cgi?id=29170
4082 This patch basically requires two separate steps, the first is to split getPropertyNames
4083 into two functions -- getOwnPropertyNames and getPropertyNames, basically making them behave
4084 in the same way as getOwnPropertySlot and getPropertySlot. In essence getOwnPropertyNames
4085 produces the list of properties on an object excluding its prototype chain and getPropertyNames
4086 just iterates the the object and its prototype chain calling getOwnPropertyNames at each level.
4088 * API/JSCallbackObject.h:
4089 * API/JSCallbackObjectFunctions.h:
4090 (JSC::::getOwnPropertyNames):
4091 * JavaScriptCore.exp:
4092 * debugger/DebuggerActivation.cpp:
4093 (JSC::DebuggerActivation::getOwnPropertyNames):
4094 * debugger/DebuggerActivation.h:
4095 * runtime/CommonIdentifiers.h:
4096 * runtime/JSArray.cpp:
4097 (JSC::JSArray::getOwnPropertyNames):
4098 * runtime/JSArray.h:
4099 * runtime/JSByteArray.cpp:
4100 (JSC::JSByteArray::getOwnPropertyNames):
4101 * runtime/JSByteArray.h:
4102 * runtime/JSNotAnObject.cpp:
4103 (JSC::JSNotAnObject::getOwnPropertyNames):
4104 * runtime/JSNotAnObject.h:
4105 * runtime/JSObject.cpp:
4106 (JSC::JSObject::getOwnPropertyNames):
4107 * runtime/JSObject.h:
4108 * runtime/JSVariableObject.cpp:
4109 (JSC::JSVariableObject::getOwnPropertyNames):
4110 * runtime/JSVariableObject.h:
4111 * runtime/ObjectConstructor.cpp:
4112 (JSC::ObjectConstructor::ObjectConstructor):
4113 (JSC::objectConstructorKeys):
4114 * runtime/RegExpMatchesArray.h:
4115 (JSC::RegExpMatchesArray::getOwnPropertyNames):
4116 * runtime/StringObject.cpp:
4117 (JSC::StringObject::getOwnPropertyNames):
4118 * runtime/StringObject.h:
4119 * runtime/Structure.cpp:
4120 (JSC::Structure::getOwnEnumerablePropertyNames):
4121 (JSC::Structure::getEnumerablePropertyNames):
4122 * runtime/Structure.h:
4124 2009-09-11 Oliver Hunt <oliver@apple.com>
4126 Reviewed by Sam Weinig.
4128 getPropertyNames caching is invalid when the prototype chain contains objects with custom getPropertyNames
4129 https://bugs.webkit.org/show_bug.cgi?id=29214
4131 Add a flag to TypeInfo to indicate whether a type overrides getPropertyNames.
4132 This flag is used to make sure that caching of the property name data is safe.
4134 * API/JSCallbackConstructor.h:
4135 (JSC::JSCallbackConstructor::createStructure):
4136 * debugger/DebuggerActivation.h:
4137 (JSC::DebuggerActivation::createStructure):
4138 * runtime/BooleanObject.h:
4139 (JSC::BooleanObject::createStructure):
4140 * runtime/DatePrototype.h:
4141 (JSC::DatePrototype::createStructure):
4142 * runtime/FunctionPrototype.h:
4143 (JSC::FunctionPrototype::createStructure):
4144 * runtime/JSONObject.h:
4145 (JSC::JSONObject::createStructure):
4146 * runtime/JSObject.h:
4147 (JSC::JSObject::createStructure):
4148 * runtime/JSTypeInfo.h:
4149 (JSC::TypeInfo::hasDefaultGetPropertyNames):
4150 * runtime/JSVariableObject.h:
4151 (JSC::JSVariableObject::createStructure):
4152 * runtime/JSWrapperObject.h:
4153 (JSC::JSWrapperObject::createStructure):
4154 * runtime/MathObject.h:
4155 (JSC::MathObject::createStructure):
4156 * runtime/NumberConstructor.h:
4157 (JSC::NumberConstructor::createStructure):
4158 * runtime/NumberObject.h:
4159 (JSC::NumberObject::createStructure):
4160 * runtime/RegExpConstructor.h:
4161 (JSC::RegExpConstructor::createStructure):
4162 * runtime/RegExpObject.h:
4163 (JSC::RegExpObject::createStructure):
4164 * runtime/StructureChain.cpp:
4165 (JSC::StructureChain::isCacheable):
4167 2009-09-11 Alexey Proskuryakov <ap@webkit.org>
4169 Reviewed by Geoff Garen.
4171 https://bugs.webkit.org/show_bug.cgi?id=29207
4172 Add checks for using WebCore JS context on secondary threads
4174 * runtime/JSGlobalData.cpp: (JSC::JSGlobalData::JSGlobalData):
4175 * runtime/JSGlobalData.h:
4176 Added a new mainThreadOnly flag that WebCore would set.
4178 * runtime/Collector.cpp: (JSC::Heap::registerThread): JSC API methods always call this,
4179 so this is a good place to check that the API isn't used form a wrong thread.
4181 2009-09-11 Jocelyn Turcotte <jocelyn.turcotte@nokia.com>
4183 Reviewed by Simon Hausmann.
4185 Compiling JavaScriptCore on sparc 64 with gcc fails.
4187 ThreadSafeShared uses the atomic __gnu_cxx::__exchange_and_add with an int,
4188 however on sparc 64 the _Atomic_word argument is typedefed to long (8 bytes).
4190 The patch disables WTF_USE_LOCKFREE_THREADSAFESHARED in ThreadSafeShared to use
4191 a mutex instead when compiling for sparc 64 with gcc.
4193 https://bugs.webkit.org/show_bug.cgi?id=29175
4196 __sparc64__ is not defined on all OS.
4197 Uses instead: __sparc__ && __arch64__ || __sparcv9
4200 2009-09-11 Prasanth Ullattil <prasanth.ullattil@nokia.com>
4202 Reviewed by Simon Hausmann.
4204 Fix compile error on Windows7(64Bit) with latest SDK.
4206 Added the missing include file.
4208 * runtime/UString.cpp:
4210 2009-09-11 Joerg Bornemann <joerg.bornemann@trolltech.com>
4212 Reviewed by Simon Hausmann.
4214 Qt/Windows CE compile fix, include the executable allocator and
4215 markstack implementation in the windows build.
4217 * JavaScriptCore.pri:
4219 2009-09-08 John Abd-El-Malek <jam@chromium.org>
4221 Reviewed by Dimitri Glazkov.
4223 Remove unneeded define for ActiveX.
4224 https://bugs.webkit.org/show_bug.cgi?id=29054
4228 2009-09-10 Mark Rowe <mrowe@apple.com>
4230 Rubber-stamped by Sam Weinig.
4232 Update JavaScriptCore and WebKit's FeatureDefines.xcconfig so that they are in sync with WebCore as they need to be.
4234 * Configurations/FeatureDefines.xcconfig:
4236 2009-09-10 Fumitoshi Ukai <ukai@chromium.org>
4238 Reviewed by Alexey Proskuryakov.
4240 Export WTF::tryFastMalloc used in WebSocketChannel.
4241 https://bugs.webkit.org/show_bug.cgi?id=28038
4243 * JavaScriptCore.exp:
4244 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
4245 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: