1 2011-02-15 Gavin Barraclough <barraclough@apple.com>
3 Reviewed by Geoff Garen.
5 Bug 54524 - Allow JSObject to fully utilize cell's capacity for inline storage.
7 Currently JSObject is both directly instantiated for regular JS objects, and
8 derived to implement subtypes. A consequence of this is that we need to ensure
9 that sufficient space from the cell is left unused and available for any data
10 members that will be introduced by subclasses of JSObject. By restructuring
11 the internal storage array out of JSObject we can increase the size in the
12 internal storage for regular objects.
14 Add classes JSFinalObject and JSNonFinalObject. JSNonFinalObject retains as
15 much additional capacity as is currently available to allow for data members
16 in subclasses. JSFinalObject utilizes all available space for internal storage,
17 and only allows construction through JSFinalObject::create().
19 The additional storage made available in the JSObject means that we need no
20 longer rely on a union of the internal storage with a pointer to storage that
21 is only valid for external storage. This means we can go back to always having
22 a valid pointer to property storage, regardless of whether this is internal or
23 external. This simplifies some cases of access to the array from C code, and
24 significantly simplifies JIT access, since repatching no longer needs to be
25 able to change between a load of the storage pointer / a LEA of the internal
28 * API/JSObjectRef.cpp:
30 * assembler/ARMAssembler.h:
31 * assembler/ARMv7Assembler.h:
32 * assembler/AbstractMacroAssembler.h:
33 (JSC::AbstractMacroAssembler::repatchPointer):
34 * assembler/MIPSAssembler.h:
35 * assembler/MacroAssemblerARM.h:
36 * assembler/MacroAssemblerARMv7.h:
37 * assembler/MacroAssemblerMIPS.h:
38 * assembler/MacroAssemblerX86.h:
39 * assembler/MacroAssemblerX86_64.h:
40 * assembler/RepatchBuffer.h:
41 * assembler/X86Assembler.h:
42 * debugger/DebuggerActivation.cpp:
43 (JSC::DebuggerActivation::DebuggerActivation):
44 * debugger/DebuggerActivation.h:
45 * interpreter/Interpreter.cpp:
46 (JSC::Interpreter::privateExecute):
49 (JSC::JIT::emit_op_resolve_global):
50 * jit/JITOpcodes32_64.cpp:
51 (JSC::JIT::emit_op_resolve_global):
52 * jit/JITPropertyAccess.cpp:
53 (JSC::JIT::compileGetDirectOffset):
54 (JSC::JIT::emit_op_get_by_pname):
55 (JSC::JIT::compileGetByIdHotPath):
56 (JSC::JIT::emit_op_put_by_id):
57 (JSC::JIT::compilePutDirectOffset):
58 (JSC::JIT::patchGetByIdSelf):
59 (JSC::JIT::patchPutByIdReplace):
60 (JSC::JIT::privateCompileGetByIdProto):
61 (JSC::JIT::privateCompileGetByIdSelfList):
62 (JSC::JIT::privateCompileGetByIdProtoList):
63 (JSC::JIT::privateCompileGetByIdChainList):
64 (JSC::JIT::privateCompileGetByIdChain):
65 * jit/JITPropertyAccess32_64.cpp:
66 (JSC::JIT::compileGetByIdHotPath):
67 (JSC::JIT::emit_op_put_by_id):
68 (JSC::JIT::compilePutDirectOffset):
69 (JSC::JIT::compileGetDirectOffset):
70 (JSC::JIT::patchGetByIdSelf):
71 (JSC::JIT::patchPutByIdReplace):
72 (JSC::JIT::privateCompileGetByIdProto):
73 (JSC::JIT::privateCompileGetByIdSelfList):
74 (JSC::JIT::privateCompileGetByIdProtoList):
75 (JSC::JIT::privateCompileGetByIdChainList):
76 (JSC::JIT::privateCompileGetByIdChain):
77 (JSC::JIT::emit_op_get_by_pname):
79 (JSC::DEFINE_STUB_FUNCTION):
80 * runtime/Arguments.h:
81 (JSC::Arguments::Arguments):
82 * runtime/ErrorInstance.cpp:
83 (JSC::ErrorInstance::ErrorInstance):
84 * runtime/ErrorInstance.h:
85 * runtime/ExceptionHelpers.cpp:
86 (JSC::InterruptedExecutionError::InterruptedExecutionError):
87 (JSC::TerminatedExecutionError::TerminatedExecutionError):
88 * runtime/JSArray.cpp:
89 (JSC::JSArray::JSArray):
91 * runtime/JSByteArray.cpp:
92 (JSC::JSByteArray::JSByteArray):
93 * runtime/JSByteArray.h:
94 (JSC::JSByteArray::JSByteArray):
95 * runtime/JSFunction.cpp:
96 (JSC::JSFunction::getOwnPropertySlot):
97 * runtime/JSGlobalData.cpp:
98 (JSC::JSGlobalData::JSGlobalData):
99 * runtime/JSGlobalObject.h:
100 (JSC::constructEmptyObject):
101 * runtime/JSNotAnObject.h:
102 (JSC::JSNotAnObject::JSNotAnObject):
103 * runtime/JSObject.cpp:
104 (JSC::JSObject::createInheritorID):
105 (JSC::JSObject::allocatePropertyStorage):
106 * runtime/JSObject.h:
107 (JSC::JSObject::propertyStorage):
108 (JSC::JSNonFinalObject::JSNonFinalObject):
109 (JSC::JSNonFinalObject::createStructure):
110 (JSC::JSFinalObject::create):
111 (JSC::JSFinalObject::createStructure):
112 (JSC::JSFinalObject::JSFinalObject):
113 (JSC::JSObject::offsetOfInlineStorage):
114 (JSC::constructEmptyObject):
115 (JSC::createEmptyObjectStructure):
116 (JSC::JSObject::JSObject):
117 (JSC::JSObject::~JSObject):
118 (JSC::Structure::isUsingInlineStorage):
119 * runtime/JSObjectWithGlobalObject.cpp:
120 (JSC::JSObjectWithGlobalObject::JSObjectWithGlobalObject):
121 * runtime/JSObjectWithGlobalObject.h:
122 (JSC::JSObjectWithGlobalObject::JSObjectWithGlobalObject):
123 * runtime/JSTypeInfo.h:
124 (JSC::TypeInfo::TypeInfo):
125 (JSC::TypeInfo::isVanilla):
126 * runtime/JSVariableObject.h:
127 (JSC::JSVariableObject::JSVariableObject):
128 * runtime/JSWrapperObject.h:
129 (JSC::JSWrapperObject::JSWrapperObject):
130 * runtime/ObjectConstructor.cpp:
131 (JSC::constructObject):
132 * runtime/ObjectPrototype.cpp:
133 (JSC::ObjectPrototype::ObjectPrototype):
134 * runtime/ObjectPrototype.h:
135 * runtime/StrictEvalActivation.cpp:
136 (JSC::StrictEvalActivation::StrictEvalActivation):
137 * runtime/StrictEvalActivation.h:
138 * runtime/Structure.cpp:
139 (JSC::Structure::Structure):
140 (JSC::Structure::growPropertyStorageCapacity):
142 2011-02-16 Oliver Hunt <oliver@apple.com>
144 Reviewed by Geoff Garen.
146 Incorrect handling of global writes in dynamic contexts
147 https://bugs.webkit.org/show_bug.cgi?id=49383
149 * interpreter/Interpreter.cpp:
150 (JSC::Interpreter::privateExecute):
151 Can't use the existing callframe to return an uncaught exception
152 as by definition that callframe has already been torn down.
153 * parser/ASTBuilder.h:
154 (JSC::ASTBuilder::ASTBuilder):
155 (JSC::ASTBuilder::varDeclarations):
156 (JSC::ASTBuilder::funcDeclarations):
157 (JSC::ASTBuilder::features):
158 (JSC::ASTBuilder::numConstants):
159 (JSC::ASTBuilder::createFuncDeclStatement):
160 (JSC::ASTBuilder::addVar):
161 (JSC::ASTBuilder::incConstants):
162 (JSC::ASTBuilder::usesThis):
163 (JSC::ASTBuilder::usesCatch):
164 (JSC::ASTBuilder::usesClosures):
165 (JSC::ASTBuilder::usesArguments):
166 (JSC::ASTBuilder::usesAssignment):
167 (JSC::ASTBuilder::usesWith):
168 (JSC::ASTBuilder::usesEval):
169 Don't need a vector of scopes in the ASTBuilder
170 * runtime/Operations.h:
172 In strict mode the optimisation that we use to skip a lookup
173 on the global object is incorrect and lead to us always
174 disallowing global writes when we needed to do a dynamic slot
175 lookup. Now the strict mode path actually checks for the
178 2011-02-15 Jon Honeycutt <jhoneycutt@apple.com>
180 Windows build fix for
181 https://bugs.webkit.org/show_bug.cgi?id=54415
183 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
184 Remove deleted files.
186 2011-02-15 Oliver Hunt <oliver@apple.com>
189 https://bugs.webkit.org/show_bug.cgi?id=54415
193 2011-02-14 Oliver Hunt <oliver@apple.com>
195 Reviewed by Gavin Barraclough and Geoff Garen.
197 Refactor handles and weak pointers to become nicer and more automatic
198 https://bugs.webkit.org/show_bug.cgi?id=54415
200 Move to a true handle based mechanism for GC value protection. This
201 also allows us to switch to a more sensible behaviour for weak pointers
202 in which weak pointers are automatically updated.
204 This allows us to remove the old (and convoluted) that required all
205 objects that may be held by a weak reference to be aware of the reference
206 and manually clear them in their destructors.
208 This also adds a few new data types to JSC that we use to efficiently
209 allocate and return the underlying handle storage.
211 This patch is largely renaming and removing now unnecessary destructors
214 * API/JSClassRef.cpp:
215 (OpaqueJSClass::create):
216 (OpaqueJSClassContextData::OpaqueJSClassContextData):
217 (OpaqueJSClass::contextData):
218 (OpaqueJSClass::prototype):
222 * JavaScriptCore.exp:
223 * JavaScriptCore.gypi:
224 * JavaScriptCore.pro:
225 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
226 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
227 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
228 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
229 * JavaScriptCore.vcproj/WTF/WTF.vcproj:
230 * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
231 * JavaScriptCore.xcodeproj/project.pbxproj:
232 * collector/handles/Global.h: Added.
233 New Global handle type used to keep gc objects live, even if they're not
235 (JSC::Global::Global):
236 (JSC::Global::~Global):
238 We can only assign directly to a global from another global.
239 In all other cases we need the JSGlobalData to be provided
240 explicitly so we use a set function.
241 (JSC::Global::operator=):
242 (JSC::Global::clear):
243 (JSC::Global::isHashTableDeletedValue):
244 (JSC::Global::internalSet):
245 * collector/handles/Handle.h: Added.
246 Root "Handle" type used for immutable handles and to provide the basic
247 APIs needed for pointer-like behaviour.
248 (JSC::HandleBase::operator!):
249 (JSC::HandleBase::operator UnspecifiedBoolType*):
250 (JSC::HandleBase::isEmpty):
251 (JSC::HandleBase::HandleBase):
252 (JSC::HandleBase::slot):
253 (JSC::HandleBase::invalidate):
254 (JSC::HandleBase::setSlot):
255 (JSC::HandleTypes::getFromSlot):
256 (JSC::HandleTypes::toJSValue):
257 (JSC::HandleTypes::validateUpcast):
258 (JSC::HandleConverter::operator->):
259 (JSC::HandleConverter::operator*):
260 (JSC::Handle::Handle):
262 (JSC::Handle::wrapSlot):
265 * collector/handles/HandleHeap.cpp: Added.
266 New heap for global handles.
267 (JSC::HandleHeap::HandleHeap):
268 (JSC::HandleHeap::grow):
269 (JSC::HandleHeap::markStrongHandles):
270 (JSC::HandleHeap::updateAfterMark):
271 (JSC::HandleHeap::clearWeakPointers):
272 (JSC::HandleHeap::writeBarrier):
273 * collector/handles/HandleHeap.h: Added.
274 (JSC::HandleHeap::heapFor):
275 (JSC::HandleHeap::toHandle):
276 (JSC::HandleHeap::toNode):
277 (JSC::HandleHeap::allocate):
278 (JSC::HandleHeap::deallocate):
279 (JSC::HandleHeap::makeWeak):
280 Convert a hard handle into weak handle that does not
281 protect the object it points to.
282 (JSC::HandleHeap::makeSelfDestroying):
283 Converts a handle to a weak handle that will be returned
284 to the free list when the referenced object dies.
285 (JSC::HandleHeap::Node::Node):
286 (JSC::HandleHeap::Node::slot):
287 (JSC::HandleHeap::Node::handleHeap):
288 (JSC::HandleHeap::Node::setFinalizer):
289 (JSC::HandleHeap::Node::makeWeak):
290 (JSC::HandleHeap::Node::isWeak):
291 (JSC::HandleHeap::Node::makeSelfDestroying):
292 (JSC::HandleHeap::Node::isSelfDestroying):
293 (JSC::HandleHeap::Node::finalizer):
294 (JSC::HandleHeap::Node::setPrev):
295 (JSC::HandleHeap::Node::prev):
296 (JSC::HandleHeap::Node::setNext):
297 (JSC::HandleHeap::Node::next):
298 * interpreter/Interpreter.cpp:
299 (JSC::Interpreter::Interpreter):
300 * interpreter/Interpreter.h:
301 * interpreter/RegisterFile.cpp:
302 (JSC::RegisterFile::globalObjectCollected):
303 * interpreter/RegisterFile.h:
304 (JSC::RegisterFile::RegisterFile):
305 * runtime/GCHandle.cpp: Removed.
306 * runtime/GCHandle.h: Removed.
309 (JSC::Heap::destroy):
310 (JSC::Heap::markRoots):
312 (JSC::Heap::allocateGlobalHandle):
313 (JSC::Heap::reportExtraMemoryCost):
314 * runtime/JSGlobalData.cpp:
315 (JSC::JSGlobalData::JSGlobalData):
316 * runtime/JSGlobalData.h:
317 (JSC::JSGlobalData::allocateGlobalHandle):
318 * runtime/JSGlobalObject.cpp:
319 (JSC::JSGlobalObject::~JSGlobalObject):
320 * runtime/JSPropertyNameIterator.cpp:
321 (JSC::JSPropertyNameIterator::create):
322 (JSC::JSPropertyNameIterator::~JSPropertyNameIterator):
323 * runtime/JSPropertyNameIterator.h:
324 (JSC::JSPropertyNameIterator::createStructure):
325 (JSC::Structure::setEnumerationCache):
326 (JSC::Structure::clearEnumerationCache):
328 * runtime/Structure.cpp:
329 (JSC::Structure::~Structure):
330 * runtime/Structure.h:
331 * runtime/WeakGCPtr.h:
332 (JSC::WeakGCPtrBase::get):
333 (JSC::WeakGCPtrBase::clear):
334 (JSC::WeakGCPtrBase::operator!):
335 (JSC::WeakGCPtrBase::operator UnspecifiedBoolType*):
336 (JSC::WeakGCPtrBase::~WeakGCPtrBase):
337 (JSC::WeakGCPtrBase::WeakGCPtrBase):
338 (JSC::WeakGCPtrBase::internalSet):
339 (JSC::LazyWeakGCPtr::LazyWeakGCPtr):
340 (JSC::LazyWeakGCPtr::set):
341 (JSC::WeakGCPtr::WeakGCPtr):
342 (JSC::WeakGCPtr::operator=):
343 * runtime/WriteBarrier.h:
344 * wtf/BlockStack.h: Added.
346 (WTF::::~BlockStack):
350 * wtf/SentinelLinkedList.h: Added.
351 (WTF::::SentinelLinkedList):
356 * wtf/SinglyLinkedList.h: Added.
357 (WTF::::SinglyLinkedList):
362 2011-02-15 Pratik Solanki <psolanki@apple.com>
364 Move WTF_USE_CFNETWORK to Platform.h
365 https://bugs.webkit.org/show_bug.cgi?id=54168
367 Reviewed by Darin Adler.
369 * wtf/Platform.h: Define WTF_USE_CFNETWORK for Windows builds.
371 2011-02-15 Geoffrey Garen <ggaren@apple.com>
373 Reviewed by Darin Adler.
375 Moved MarkedBlock data members to the head of the block
376 https://bugs.webkit.org/show_bug.cgi?id=54482
378 This allows for a variable-sized tail, to accommodate oversized blocks.
380 SunSpider reports no change.
383 (JSC::JSCell::MarkedBlock::allocate):
384 * runtime/MarkedBlock.cpp:
385 (JSC::MarkedBlock::destroy):
386 (JSC::MarkedBlock::MarkedBlock):
387 (JSC::MarkedBlock::sweep):
388 * runtime/MarkedBlock.h: Added missing element to the CELLS_PER_BLOCK
389 calculation. This kind of error is why we want to migrate to the system
392 (JSC::roundUpToMultipleOf):
393 (JSC::MarkedBlock::firstCell):
394 (JSC::MarkedBlock::cells):
395 (JSC::MarkedBlock::cellNumber): Use subtraction instead of masking to
396 calculate cell number. The mask is no longer correct because the first
397 cell is not at the head of the block.
399 (JSC::MarkedBlock::forEach): Replaced m_cells data member with a cells()
400 accessor. We want to use sizeof(MarkedBlock) to calculate the size of the
401 block header, so we can't have an explicit data member to represent the block tail.
403 Also replaced iteration from zero with iteration from startCell(), since
404 the first N cells are now occupied by the header.
406 * runtime/MarkedSpace.cpp:
407 (JSC::MarkedSpace::MarkedSpace):
408 (JSC::MarkedSpace::reset): Replaced iteration from zero as above.
410 2011-02-15 Chris Rogers <crogers@google.com>
412 Reviewed by Alexey Proskuryakov.
414 Fix Mutex::tryLock() on Windows to work properly with PlatformCondition::timedWait()
415 https://bugs.webkit.org/show_bug.cgi?id=54408
417 * wtf/ThreadingWin.cpp:
418 (WTF::PlatformCondition::timedWait):
420 2011-02-15 Xan Lopez <xlopez@igalia.com>
422 Reviewed by Martin Robinson.
424 Remove some dead code in ARMv7
425 https://bugs.webkit.org/show_bug.cgi?id=54461
427 * assembler/ARMv7Assembler.h: remove dead code.
429 2011-02-14 Geoffrey Garen <ggaren@apple.com>
431 Rubber-stamped by Gavin Barraclough.
433 Some MarkedBlock refactoring.
437 Renamed cells => m_cells
441 (JSC::JSCell::MarkedBlock::allocate):
442 * runtime/MarkedBlock.cpp:
443 (JSC::MarkedBlock::destroy):
444 (JSC::MarkedBlock::MarkedBlock):
445 (JSC::MarkedBlock::sweep):
446 * runtime/MarkedBlock.h:
447 (JSC::MarkedBlock::isEmpty):
448 (JSC::MarkedBlock::clearMarks):
449 (JSC::MarkedBlock::markCount):
450 (JSC::MarkedBlock::isMarked):
451 (JSC::MarkedBlock::testAndSetMarked):
452 (JSC::MarkedBlock::setMarked):
453 (JSC::MarkedBlock::forEach):
455 2011-02-14 Adam Barth <abarth@webkit.org>
457 Reviewed by Eric Seidel.
459 Add basic parser for Content Security Policy
460 https://bugs.webkit.org/show_bug.cgi?id=54379
462 Add a constructor for copying a Vector into a String. I suspect there
463 are a number of call sites that are doing this manually that would
464 benefit from being moved to this API.
466 * wtf/text/WTFString.h:
467 (WTF::String::String):
469 2011-02-14 Pavel Podivilov <podivilov@chromium.org>
471 Reviewed by Yury Semikhatsky.
473 Web Inspector: use call frame column to determine execution line in source frame.
474 https://bugs.webkit.org/show_bug.cgi?id=54001
476 * wtf/text/TextPosition.h:
477 (WTF::ZeroBasedNumber::convertAsOneBasedInt):
479 2011-02-13 Jeremy Moskovich <jeremy@chromium.org>
481 Reviewed by Adam Barth.
483 Add a compile-time option to completely disable WebArchive support.
484 https://bugs.webkit.org/show_bug.cgi?id=52712
486 Add an ENABLE(WEB_ARCHIVE) compile-time setting and use it for all WebArchive code.
488 WebArchive support is currently enabled for all ports that define PLATFORM(CF) apart from Qt.
489 This patch preserves this behavior except that it also disables support in the Chromium port.
491 * wtf/Platform.h: Add ENABLE_WEB_ARCHIVE definition and turn it off explicitly for Qt & Chromium ports.
493 2011-02-13 Cameron Zwarich <zwarich@apple.com>
495 Reviewed by Dan Bernstein.
497 Bug 53760 - JSC fails to build with TOT Clang
498 https://bugs.webkit.org/show_bug.cgi?id=53760
500 Fix -Woverloaded-virtual warnings. This is also a 6% speedup on the v8 raytrace
501 benchmark; it is nothing-to-noise on everything else.
503 * API/JSCallbackObject.h: Remove pointlessly overloaded method.
504 * API/JSCallbackObjectFunctions.h: Ditto.
505 * runtime/Arguments.cpp:
506 (JSC::Arguments::put): Change signature to match the base class. This implementation
507 was no longer being called by anyone. This wasn't noticed because it is merely an
508 optimization of the base class' implementation.
509 * runtime/Arguments.h: Ditto.
511 2011-02-12 Adam Barth <abarth@webkit.org>
513 Reviewed by Mark Rowe.
515 Use /dev/urandom as the OSRandomSource on OS(DARWIN)
516 https://bugs.webkit.org/show_bug.cgi?id=54279
518 I'm not sure it makes much of a difference whether we use arc4random or
519 /dev/urandom on Mac. However, there's some aesthetic benefit to using
520 the same underlying API on as many platforms as reasonable.
523 * wtf/OSRandomSource.cpp:
524 (WTF::cryptographicallyRandomValuesFromOS):
526 2011-02-12 Adam Barth <abarth@webkit.org>
528 Reviewed by Kenneth Russell.
530 Enable ArrayBuffers by default
531 https://bugs.webkit.org/show_bug.cgi?id=54310
533 Export the required functions.
535 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
537 2011-02-11 Daniel Bates <dbates@rim.com>
539 Reviewed by Geoffrey Garen.
541 Remove explicit disable ENABLE_ASSEMBLER_WX_EXCLUSIVE on non-iOS ports
542 https://bugs.webkit.org/show_bug.cgi?id=54107
544 It is unnecessary to explicitly disable ENABLE_ASSEMBLER_WX_EXCLUSIVE
545 by the definition of ENABLE().
549 2011-02-11 Geoffrey Garen <ggaren@apple.com>
553 Randomly touch some build files in the hopes of fixing the Qt build.
555 * JavaScriptCore.gypi:
556 * JavaScriptCore.pri:
557 * JavaScriptCore.pro:
559 2011-02-11 Geoffrey Garen <ggaren@apple.com>
561 Reviewed by Sam Weinig.
563 Garbage collection timer cycles forever, even when nothing is happening
564 https://bugs.webkit.org/show_bug.cgi?id=54320
566 (Rolling back in r78386 with the build fixed.)
568 * runtime/GCActivityCallbackCF.cpp:
569 (JSC::DefaultGCActivityCallbackPlatformData::trigger): Be sure to make
570 our timer inert after forcing a GC, to avoid GC'ing repeatedly.
572 2011-02-11 Geoffrey Garen <ggaren@apple.com>
576 Used svn merge -r78386:78385 to roll out r78386 because it broke the build.
578 * runtime/GCActivityCallbackCF.cpp:
579 (JSC::DefaultGCActivityCallbackPlatformData::trigger):
581 2011-02-11 Geoffrey Garen <ggaren@apple.com>
583 Reviewed by Sam Weinig.
585 Garbage collection timer cycles forever, even when nothing is happening
586 https://bugs.webkit.org/show_bug.cgi?id=54320
588 * runtime/GCActivityCallbackCF.cpp:
589 (JSC::DefaultGCActivityCallbackPlatformData::trigger): Be sure to make
590 our timer inert after forcing a GC, to avoid GC'ing repeatedly.
592 2011-02-11 Geoffrey Garen <ggaren@apple.com>
594 Try to fix the Windows build: added an exported symbol.
596 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
598 2011-02-11 Geoffrey Garen <ggaren@apple.com>
600 Reviewed by Oliver Hunt.
602 A little more encapsulation for the heap: Removed CollectorHeapIterator
603 https://bugs.webkit.org/show_bug.cgi?id=54298
605 CollectorHeapIterator is a God object that knows the internals of each
606 of the pieces of the heap. This undermines the encapsulation I'm trying
607 to achieve by splitting concepts into different classes.
609 As an alternative, I've given each class a forEach iteration function,
610 which takes a functor as an argument. Now, each class just needs to
611 know how to iterate the things it knows about.
614 * JavaScriptCore.exp:
615 * JavaScriptCore.gypi:
616 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Removed CollectorHeapIterator.
618 * debugger/Debugger.cpp:
619 (JSC::Recompiler::Recompiler):
620 (JSC::Recompiler::~Recompiler):
621 (JSC::Recompiler::operator()):
622 (JSC::Debugger::recompileAllJSFunctions): Updated to use forEach interface
623 instead of an iterator.
625 * runtime/CollectorHeapIterator.h: Removed.
628 (JSC::TypeCounter::TypeCounter):
629 (JSC::TypeCounter::typeName):
630 (JSC::TypeCounter::operator()):
631 (JSC::TypeCounter::take):
632 (JSC::Heap::protectedObjectTypeCounts):
633 (JSC::Heap::objectTypeCounts): Added forEach and removed iterator.
636 (JSC::Heap::forEach):
637 * runtime/JSGlobalData.cpp:
638 (JSC::Recompiler::operator()):
639 (JSC::JSGlobalData::recompileAllJSFunctions):
641 * runtime/MarkedBlock.h:
642 (JSC::MarkedBlock::forEach): Added forEach. Removed friend declaration
643 for CollectorHeapIterator. Now, we can make all our data private and
644 change it without breaking any other classes.
646 * runtime/MarkedSpace.cpp:
647 * runtime/MarkedSpace.h:
648 (JSC::MarkedSpace::forEach): Added forEach and removed iterator.
650 2011-02-11 Adam Barth <abarth@webkit.org>
652 Reviewed by Andreas Kling.
654 CryptographicRandomNumber has its threading ifdefs backwards
655 https://bugs.webkit.org/show_bug.cgi?id=54280
657 Turns out we want the mutex when thread is enabled. :)
659 * wtf/CryptographicallyRandomNumber.cpp:
660 (WTF::ARC4Stream::ARC4RandomNumberGenerator::randomNumber):
661 (WTF::ARC4Stream::ARC4RandomNumberGenerator::randomValues):
663 2011-02-10 Adam Barth <abarth@webkit.org>
665 Reviewed by Eric Seidel.
667 WebKit should have a cryptographic RNG
668 https://bugs.webkit.org/show_bug.cgi?id=22049
670 Teach JavaScriptCore how to export this function.
672 * JavaScriptCore.exp:
673 * JavaScriptCore.xcodeproj/project.pbxproj:
675 2011-02-10 Geoffrey Garen <ggaren@apple.com>
677 Reviewed by Sam Weinig.
679 A little more encapsulation for MarkedBlock: Made all constants private
680 so clients don't know whether allocations are fixed-sized or not
681 https://bugs.webkit.org/show_bug.cgi?id=54270
683 SunSpider reports no change.
685 * runtime/CollectorHeapIterator.h:
686 (JSC::CollectorHeapIterator::advance): Updated for removal of HeapConstants.
688 * runtime/Error.cpp: Switched to using ASSERT_CLASS_FITS_IN_CELL, like
692 (JSC::Heap::allocate): Updated for removal of HeapConstants.
693 (JSC::Heap::reset): Updated to use size(), instead of calculating size
696 * runtime/Heap.h: Moved the ASSERT here to MarkedBlock, since it enforces
697 on special knowledge of fixed-sizery, which only MarkedBlock is supposed
701 (JSC::JSCell::MarkedBlock::allocate): Updated for removal of HeapConstants.
702 Also changed to reset nextCell to 0 at the end of a block, since that
703 seems more consistent.
705 * runtime/JSGlobalData.cpp:
706 (JSC::JSGlobalData::storeVPtrs): Changed to use a fixed array of char.
707 This hard-coded size is a little wonky, but the compiler will tell us
708 if it's ever wrong, so I think it's OK.
710 * runtime/MarkedBlock.cpp:
711 (JSC::MarkedBlock::destroy):
712 (JSC::MarkedBlock::MarkedBlock):
713 (JSC::MarkedBlock::sweep): Updated for removal of HeapConstants.
715 * runtime/MarkedBlock.h:
716 (JSC::MarkedBlock::isEmpty):
717 (JSC::MarkedBlock::clearMarks):
718 (JSC::MarkedBlock::size):
719 (JSC::MarkedBlock::capacity): Made constants private to this class.
720 Removed HeapConstants. Added size() and capacity() functions.
722 * runtime/MarkedSpace.cpp:
723 (JSC::MarkedSpace::allocate):
724 (JSC::MarkedSpace::objectCount):
725 (JSC::MarkedSpace::size):
726 (JSC::MarkedSpace::capacity):
727 * runtime/MarkedSpace.h: Use MarkedBlock helper functions instead of
728 direct knowledge of MarkedBlock internals.
730 2011-02-10 Geoffrey Garen <ggaren@apple.com>
732 Reviewed by Sam Weinig.
734 A little more encapsulation for MarkedBlock: Made mark bits private
735 https://bugs.webkit.org/show_bug.cgi?id=54264
737 SunSpider reports no change.
740 (JSC::Heap::markRoots):
741 (JSC::Heap::reset): Renamed clearMarkBits => clearMarks, since clients
742 don't need to know that marks are represented as bits. Renamed
743 markedCells => markCount, since clients don't need to know that blocks
744 are split into cells.
746 * runtime/MarkedBlock.h:
747 (JSC::MarkedBlock::isEmpty):
748 (JSC::MarkedBlock::clearMarks):
749 (JSC::MarkedBlock::markCount): New helper functions for encapsulating
750 the information clients actually need.
752 * runtime/MarkedSpace.cpp:
753 (JSC::MarkedSpace::destroy):
754 (JSC::MarkedSpace::shrink):
755 (JSC::MarkedSpace::clearMarks):
756 (JSC::MarkedSpace::markCount):
757 (JSC::MarkedSpace::objectCount):
758 * runtime/MarkedSpace.h: Use new helper functions instead of accessing
759 MarkedBlock data directly.
761 2011-02-10 Michael Saboff <msaboff@apple.com>
763 Reviewed by Geoffrey Garen.
765 Cached JavaScript Parser Data Being Left in Memory Cache
766 https://bugs.webkit.org/show_bug.cgi?id=54245
768 Added clear method which removes SourceProviderCache items.
769 Cleaned up extraneous whitespace.
771 * JavaScriptCore.exp:
772 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
773 * parser/SourceProviderCache.cpp:
774 (JSC::SourceProviderCache::~SourceProviderCache):
775 (JSC::SourceProviderCache::clear):
776 (JSC::SourceProviderCache::byteSize):
777 (JSC::SourceProviderCache::add):
778 * parser/SourceProviderCache.h:
780 2011-02-10 Joseph Pecoraro <joepeck@webkit.org>
782 Follow-up fix to r78291. I should pass (int) 0, not '0' to memset.
784 * runtime/GCActivityCallbackCF.cpp:
785 (JSC::DefaultGCActivityCallback::commonConstructor): fix mistaken post-review change.
787 2011-02-10 Joseph Pecoraro <joepeck@webkit.org>
789 Reviewed by Geoffrey Garen.
791 Make DefaultGCActivityCallback for PLATFORM(CF) Easier to Subclass
792 https://bugs.webkit.org/show_bug.cgi?id=54257
794 A subclass may want to specify the CFRunLoop that the Garbage Collection
795 will happen on. It was difficult to manipulate this in a subclass because
796 the current DefaultGCActivityCallback class does this in its constructor.
797 This patch generalizes things a bit more so that a specific run loop can
798 be passed in to the constructor. This makes it so all run loop management
799 can stay in DefaultGCActivityCallback and a subclass can specify any runloop.
801 * runtime/GCActivityCallback.h: expose a PLATFORM(CF) constructor that can
802 specify the runloop GC can be scheduled on.
803 * runtime/GCActivityCallbackCF.cpp:
804 (JSC::DefaultGCActivityCallback::DefaultGCActivityCallback): two constructors,
805 one that specifies the run loop and passes that on to commonConstructor and
806 the old constructor defaults to the current run loop.
807 (JSC::DefaultGCActivityCallback::commonConstructor): do normal construction,
808 adding the timer to the given runloop.
810 2011-02-10 Geoffrey Garen <ggaren@apple.com>
812 Reviewed by Oliver Hunt.
814 A little more encapsulation for MarkedBlock: Moved allocate() and sweep() into MarkedBlock
815 https://bugs.webkit.org/show_bug.cgi?id=54253
817 SunSpider reports no change.
819 * runtime/CollectorHeapIterator.h: Removed DeadObjectIterator, since it
823 (JSC::Heap::reset): Moved the call to shrink() here, since it seems a
824 little more clear for MarkedSpace's client to tell it explicitly when to
828 (JSC::JSCell::MarkedBlock::allocate): Split out from MarkedSpace::allocate.
830 * runtime/MarkedBlock.cpp:
831 (JSC::MarkedBlock::sweep): Split out from MarkedSpace::sweep, and
832 converted to more directly iterate a MarkedBlock based on knowing its
835 * runtime/MarkedBlock.h:
836 * runtime/MarkedSpace.cpp:
837 (JSC::MarkedSpace::allocate):
838 (JSC::MarkedSpace::sweep):
839 * runtime/MarkedSpace.h: Split out the code mentioned above.
841 2011-02-10 Patrick Gansterer <paroga@webkit.org>
843 Reviewed by Andreas Kling.
845 Fix compilation error on OpenBSD
846 https://bugs.webkit.org/show_bug.cgi?id=53766
848 Add a HAVE_STRNSTR in Platform.h and define it only on Darwin and FreeBSD.
851 * wtf/StringExtras.h: Use HAVE(STRNSTR) now.
853 2011-02-10 Adam Roben <aroben@apple.com>
855 Print locations of assertions and logs in a way that Visual Studio understands
857 With this change, double-clicking one of these locations in Visual Studio's Output Window
858 will focus that line of code in the editor.
860 Fixes <http://webkit.org/b/54208> Double-clicking locations of assertions/logs in Visual
861 Studio's Output Window does nothing
863 Reviewed by Alexey Proskuryakov.
865 * wtf/Assertions.cpp:
866 (printCallSite): Use OS(WINDOWS) instead of the meaningless OS(WIN). When we aren't using
867 the debug CRT (and thus can't call _CrtDbgReport), print the file and line number using the
868 same format that cl.exe uses when it prints compiler errors.
870 2011-02-10 Dan Bernstein <mitz@apple.com>
872 LLVM Compiler build fix.
874 * runtime/MarkedBlock.cpp:
875 (JSC::MarkedBlock::create):
877 2011-02-10 Peter Varga <pvarga@webkit.org>
879 Reviewed by Csaba Osztrogonác.
881 Remove PCRE source from trunk
882 https://bugs.webkit.org/show_bug.cgi?id=54188
887 * DerivedSources.make:
888 * DerivedSources.pro:
890 * JavaScriptCore.gypi:
891 * JavaScriptCore.order:
892 * JavaScriptCore.pri:
893 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
894 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
895 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
896 * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops:
897 * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
898 * JavaScriptCore.xcodeproj/project.pbxproj:
899 * pcre/AUTHORS: Removed.
900 * pcre/COPYING: Removed.
901 * pcre/dftables: Removed.
902 * pcre/pcre.h: Removed.
903 * pcre/pcre.pri: Removed.
904 * pcre/pcre_compile.cpp: Removed.
905 * pcre/pcre_exec.cpp: Removed.
906 * pcre/pcre_internal.h: Removed.
907 * pcre/pcre_tables.cpp: Removed.
908 * pcre/pcre_ucp_searchfuncs.cpp: Removed.
909 * pcre/pcre_xclass.cpp: Removed.
910 * pcre/ucpinternal.h: Removed.
911 * pcre/ucptable.cpp: Removed.
914 2011-02-10 Patrick Gansterer <paroga@webkit.org>
916 Reviewed by Adam Barth.
918 Add randomValuesFromOS for OS(WINDOWS)
919 https://bugs.webkit.org/show_bug.cgi?id=54155
921 Use CryptGenRandom for generating cryptographically secure random numbers.
922 This will work on WinCE and MinGW too.
925 * wtf/OSRandomSource.cpp:
926 (WTF::randomValuesFromOS):
928 2011-02-10 Jarred Nicholls <jarred@sencha.com>
930 Reviewed by Adam Barth.
932 REGRESSION(r78149): Return value of read() shouldn't be ignored.
933 https://bugs.webkit.org/show_bug.cgi?id=54167
935 stdio read should have its return value handled. Build error in gcc 4.4.5.
937 * wtf/OSRandomSource.cpp:
938 (WTF::randomValuesFromOS):
940 2011-02-10 Patrick Gansterer <paroga@webkit.org>
942 Reviewed by Adam Barth.
944 Rename randomValuesFromOS to cryptographicallyRandomValuesFromOS
945 https://bugs.webkit.org/show_bug.cgi?id=54156
947 randomValuesFromOS generates random numbers of cryptographic quality.
948 Make this clear by adding "cryptographically" to the function name.
950 * wtf/CryptographicallyRandomNumber.cpp:
951 (WTF::ARC4Stream::ARC4RandomNumberGenerator::stir):
952 * wtf/OSRandomSource.cpp:
953 (WTF::cryptographicallyRandomValuesFromOS):
954 * wtf/OSRandomSource.h:
956 2011-02-09 Mark Rowe <mrowe@apple.com>
958 Reviewed by Sam Weinig.
960 <rdar://problem/8805364> Malloc zone enumeration code should be safe in the face of errors from the memory reader.
962 * wtf/FastMalloc.cpp:
963 (WTF::PageHeapAllocator::recordAdministrativeRegions): Use the new helper function to walk the linked list safely.
964 (WTF::TCMalloc_ThreadCache_FreeList::enumerateFreeObjects): Ditto.
965 (WTF::TCMalloc_Central_FreeList::enumerateFreeObjects): Ditto.
966 (WTF::TCMallocStats::PageMapFreeObjectFinder::visit): Bail out if the span could not be read.
967 (WTF::TCMallocStats::PageMapMemoryUsageRecorder::visit): Ditto.
968 * wtf/MallocZoneSupport.h:
969 (WTF::RemoteMemoryReader::operator()): Remove an assert that is not valid.
970 (WTF::RemoteMemoryReader::nextEntryInLinkedList): Add a helper function for retrieving the next entry in
971 a linked list. It maps a failed read of the remote memory in to a null pointer, which all callers can
974 2011-02-09 Gavin Barraclough <barraclough@apple.com>
976 Reviewed by Sam Weinig.
978 Bug 54164 - Optimize global_var accesses on JSVALUE64
980 Directly embed the pointer to d->registers, optimize out the load
981 from the variable object, as we do already in JSVALUE32_64.
983 This is a ~1.5% win on sunspidey.
987 * jit/JITOpcodes.cpp:
988 (JSC::JIT::emit_op_get_global_var):
989 (JSC::JIT::emit_op_put_global_var):
990 (JSC::JIT::emit_op_get_scoped_var):
991 (JSC::JIT::emit_op_put_scoped_var):
993 2011-02-09 Geoffrey Garen <ggaren@apple.com>
995 Reviewed by Oliver Hunt.
997 A little more encapsulation for MarkedBlock: Made MarkedBlock responsible
998 for its own initialization and destruction
999 https://bugs.webkit.org/show_bug.cgi?id=54137
1001 * runtime/CollectorHeapIterator.h: Removed ObjectIterator since it is
1004 * runtime/JSCell.h: Maded MarkedBlock a friend so it can construct and
1007 * runtime/MarkedBlock.cpp:
1008 (JSC::MarkedBlock::create):
1009 (JSC::MarkedBlock::destroy):
1010 (JSC::MarkedBlock::MarkedBlock): Migrated initialization and destruction
1011 code from MarkedSpace, updating it not to use ObjectIterator. We don't
1012 want to use an abstract iterator since iteration will be unique to each
1013 block in the future.
1015 * runtime/MarkedBlock.h: Made the consructor private and moved it into
1016 the .cpp file because it's big now.
1018 * runtime/MarkedSpace.cpp:
1019 (JSC::MarkedSpace::allocateBlock):
1020 (JSC::MarkedSpace::freeBlock): Migrated code.
1022 * runtime/MarkedSpace.h:
1023 (JSC::CollectorHeap::collectorBlock): Keep a vector of MarkedBlock
1024 pointers instead of aligned allocations -- how MarkedBlocks are allocated
1025 is now an implementation detail of MarkedBlock.
1027 2011-02-09 Adam Barth <abarth@webkit.org>
1029 Another attempt to fix the Qt Windows build.
1032 * wtf/OSRandomSource.cpp:
1033 (WTF::randomValuesFromOS):
1035 2011-02-09 Adam Barth <abarth@webkit.org>
1037 Attempt to fix the Qt Windows build.
1039 * wtf/OSRandomSource.cpp:
1040 (WTF::randomValuesFromOS):
1042 2011-02-09 Adam Barth <abarth@webkit.org>
1044 Reviewed by Eric Seidel.
1046 Add WTF::cryptographicallyRandomNumber
1047 https://bugs.webkit.org/show_bug.cgi?id=54083
1049 Introduce a cryptographically strong random number generator to WTF.
1050 The random number generator is based on arc4random as found in:
1052 http://www.openbsd.org/cgi-bin/cvsweb/src/lib/libc/crypt/arc4random.c?rev=1.22
1054 I've changed to source to WebKit style and abstracted the operating
1055 system interaction to OSRandomSource. We'll use this functionality to
1056 expose a cryptographically strong random number generator to
1060 * Android.v8.wtf.mk:
1062 * JavaScriptCore.gypi:
1063 * JavaScriptCore.vcproj/WTF/WTF.vcproj:
1064 * JavaScriptCore.xcodeproj/project.pbxproj:
1066 * wtf/CMakeLists.txt:
1067 * wtf/CryptographicallyRandomNumber.cpp: Added.
1068 (WTF::initMutexIfNeeded):
1070 (WTF::addRandomData):
1072 (WTF::stirIfNeeded):
1075 (WTF::cryptographicallyRandomNumber):
1076 (WTF::cryptographicallyRandomValues):
1077 * wtf/CryptographicallyRandomNumber.h: Added.
1078 * wtf/OSRandomSource.cpp: Added.
1079 (WTF::randomValuesFromOS):
1080 * wtf/OSRandomSource.h: Added.
1083 2011-02-09 Geoffrey Garen <ggaren@apple.com>
1085 Try to fix the build.
1087 * wtf/Bitmap.h: Include string.h for memset. Not sure why this started
1090 2011-02-09 Geoffrey Garen <ggaren@apple.com>
1092 Reviewed by Sam Weinig.
1094 A tiny bit of encapsulation for MarkedBlock: made its heap data member private
1095 https://bugs.webkit.org/show_bug.cgi?id=54129
1097 * runtime/MarkedBlock.h:
1098 (JSC::MarkedBlock::isCellAligned):
1099 (JSC::MarkedBlock::MarkedBlock):
1100 (JSC::MarkedBlock::heap): Made the heap data member private, and provided
1101 a constructor and an accessor.
1103 * runtime/MarkedSpace.cpp:
1104 (JSC::MarkedSpace::allocateBlock):
1105 * runtime/MarkedSpace.h:
1106 (JSC::MarkedSpace::heap): Use the constructor and accessor.
1108 2011-02-09 Peter Varga <pvarga@webkit.org>
1110 Reviewed by Gavin Barraclough.
1112 Replace PCRE with Yarr in WebCore
1113 https://bugs.webkit.org/show_bug.cgi?id=53496
1115 * JavaScriptCore.exp:
1116 * JavaScriptCore.gyp/JavaScriptCore.gyp:
1117 * JavaScriptCore.gypi:
1118 * JavaScriptCore.pro:
1119 * JavaScriptCore.xcodeproj/project.pbxproj:
1120 * create_regex_tables:
1121 * runtime/RegExp.cpp:
1126 * yarr/YarrParser.h:
1127 * yarr/YarrPattern.h:
1128 * yarr/YarrSyntaxChecker.h:
1129 * yarr/yarr.pri: Added.
1131 2011-02-08 Geoffrey Garen <ggaren@apple.com>
1133 Reviewed by Sam Weinig.
1135 Removed some dead code from Heap
1136 https://bugs.webkit.org/show_bug.cgi?id=54064
1138 * runtime/MarkedSpace.cpp: Removed some now-unused constants and
1141 (JSC::MarkedSpace::allocate): Removed some ASSERTs that are also ASSERTed
1142 by our caller. Removed redundant typedefs.
1144 2011-02-08 Geoffrey Garen <ggaren@apple.com>
1146 Reviewed by Sam Weinig.
1148 Use a vector to track blocks in the Heap, instead of hand-rolled vector-like code
1149 https://bugs.webkit.org/show_bug.cgi?id=54062
1151 SunSpider reports no change.
1153 * runtime/CollectorHeapIterator.h:
1154 (JSC::CollectorHeapIterator::isValid):
1155 (JSC::CollectorHeapIterator::isLive): Updated for new mark invariant: To
1156 know if an object is live, you just need to test its mark bit.
1158 * runtime/MarkedSpace.cpp:
1159 (JSC::MarkedSpace::MarkedSpace): Moved waterMark and highWaterMark from
1160 CollectorHeap into MarkedSpace, since they're global state. Removed call
1161 to memset since CollectorHeap is a true class with its own constructor now.
1163 (JSC::MarkedSpace::destroy): Change uses of m_heap.usedBlocks to
1164 m_heap.blocks.size(), and m_heap.numBlocks to m_heap.blocks.capacity().
1166 (JSC::MarkedSpace::allocateBlock):
1167 (JSC::MarkedSpace::freeBlock): No need to manage our vector manually anymore.
1169 (JSC::MarkedSpace::allocate):
1170 (JSC::MarkedSpace::shrink):
1171 (JSC::MarkedSpace::clearMarkBits):
1172 (JSC::MarkedSpace::markedCells):
1173 (JSC::MarkedSpace::sweep):
1174 (JSC::MarkedSpace::objectCount):
1175 (JSC::MarkedSpace::capacity):
1176 (JSC::MarkedSpace::reset):
1177 (JSC::MarkedSpace::primaryHeapEnd):
1178 * runtime/MarkedSpace.h:
1179 (JSC::CollectorHeap::CollectorHeap):
1180 (JSC::MarkedSpace::highWaterMark):
1181 (JSC::MarkedSpace::setHighWaterMark):
1182 (JSC::MarkedSpace::contains): Same as above.
1184 2011-02-08 Geoffrey Garen <ggaren@apple.com>
1186 Reviewed by Darin Adler.
1188 Give each MarkedBlock enough mark bits to cover the whole block
1189 https://bugs.webkit.org/show_bug.cgi?id=54029
1191 SunSpider reports no change.
1193 This simplifies access to mark bits, since any cell-aligned pointer
1194 into a block now has a valid mark bit to test.
1196 * runtime/MarkedBlock.h: Changed CELLS_PER_BLOCK to account for the extra
1197 mark bits. This happens not to change its actual value.
1198 (JSC::MarkedBlock::cellNumber):
1199 (JSC::MarkedBlock::isMarked):
1200 (JSC::MarkedBlock::testAndSetMarked):
1201 (JSC::MarkedBlock::setMarked): Changed const JSCell* to const void* to
1202 remove a cast from our caller, and to more accurately reflect the fact
1203 that MarkedBlock is agnostic about the types pointed to by the pointers
1206 (JSC::MarkedBlock::isPossibleCell): Removed a null check. We now consider
1207 the null pointer to be a possible cell with a 0 (impossible) block. This
1208 removes a null check from marking.
1210 * runtime/MarkedSpace.cpp:
1211 * runtime/MarkedSpace.h:
1212 (JSC::MarkedSpace::contains): Simplified the contains check, and inlined
1213 the whole thing, now that it's so simple.
1215 2011-02-08 Daniel Bates <dbates@rim.com>
1217 Rubber-stamped by Martin Robinson.
1219 Rename enum ProtectionSeting [sic] to ProtectionSetting.
1221 * jit/ExecutableAllocator.cpp:
1222 (JSC::ExecutableAllocator::reprotectRegion):
1223 * jit/ExecutableAllocator.h:
1225 2011-02-08 Balazs Kelemen <kbalazs@webkit.org>
1227 Reviewed by Andreas Kling.
1229 [Qt] Should not always define USE_SYSTEM_MALLOC
1230 https://bugs.webkit.org/show_bug.cgi?id=54007
1234 2011-02-08 Dan Bernstein <mitz@apple.com>
1236 Reviewed by Maciej Stachowiak.
1238 LLVM Compiler build fix.
1240 * runtime/WriteBarrier.h:
1241 (JSC::WriteBarrier::WriteBarrier):
1243 2011-02-07 Ryosuke Niwa <rniwa@webkit.org>
1245 Reviewed by Darin Adler.
1247 JSVariableObject::setRegisters should take PassOwnArrayPtr for registersArray.
1248 https://bugs.webkit.org/show_bug.cgi?id=53902
1250 * runtime/Arguments.h:
1251 (JSC::JSActivation::copyRegisters): Uses OwnArrayPtr<Register> instead of Register*.
1252 * runtime/JSGlobalObject.cpp:
1253 (JSC::JSGlobalObject::copyGlobalsFrom): Ditto.
1254 * runtime/JSGlobalObject.h:
1255 (JSC::JSGlobalObject::setRegisters): Takes PassOwnArrayPtr<Register> instead of Register*
1257 * runtime/JSVariableObject.h:
1258 (JSC::JSVariableObject::copyRegisterArray): Returns PassOwnArrayPtr<Register> instead of Register*.
1259 (JSC::JSVariableObject::setRegisters): Takes PassOwnArrayPtr<Register> instead of Register*
1262 2011-02-07 Geoffrey Garen <ggaren@apple.com>
1264 Reviewed by Sam Weinig.
1266 Removed some dead code from Heap
1267 https://bugs.webkit.org/show_bug.cgi?id=53969
1269 SunSpider reports no change.
1271 * runtime/MarkedSpace.cpp:
1272 (JSC::MarkedSpace::shrink):
1273 (JSC::MarkedSpace::sweep):
1274 * runtime/MarkedSpace.h: Removed resizeBlocks and growBlocks, and
1275 renamed shrinkBlocks to shrink, making it unconditionally shrink as
1278 2011-02-07 Geoffrey Garen <ggaren@apple.com>
1280 Reviewed by Oliver Hunt.
1282 Simplified the marked space's mark invariant
1283 https://bugs.webkit.org/show_bug.cgi?id=53968
1285 SunSpider reports no change.
1287 * runtime/MarkedSpace.cpp:
1288 (JSC::MarkedSpace::allocate): Mark objects when allocating them. This
1289 means that, at all times other than the mark phase, an object is live
1290 if and only if it is marked.
1292 (JSC::MarkedSpace::containsSlowCase): Use the new mark invariant to
1293 simplify testing whether an object is live.
1295 2011-02-07 Beth Dakin <bdakin@apple.com>
1297 Reviewed by Eric Seidel.
1299 Fix for https://bugs.webkit.org/show_bug.cgi?id=53950
1300 USE_WK_SCROLLBAR_PAINTER in ScrollbarThemeMac should be in
1305 2011-02-07 Darin Adler <darin@apple.com>
1307 Reviewed by Antti Koivisto.
1309 Add built-in decoder for UTF-8 for improved performance
1310 https://bugs.webkit.org/show_bug.cgi?id=53898
1312 * wtf/unicode/UnicodeMacrosFromICU.h: Added U8_MAX_LENGTH and
1313 U8_APPEND_UNSAFE. Also fixed header.
1315 2011-02-07 Adam Roben <aroben@apple.com>
1317 Delete precompiled headers whenever any .vsprops file changes
1319 Precompiled headers need to be rebuilt if, e.g., an ENABLE_* macro is changed in one of our
1320 .vsprops files. Unfortunately, Visual Studio isn't smart enough to figure this out, so we
1321 give it some assistance by deleting the precompiled headers whenever any .vsprops file
1324 I also made some drive-by fixes while I was in the area.
1326 Fixes <http://webkit.org/b/53826> react-to-vsprops-changes.py doesn't force precompiled
1327 headers to be rebuilt, but should
1329 Reviewed by David Kilzer.
1331 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: Stop ignoring the
1332 return code from react-to-vsprops-changes.py so we will notice when errors are introduced.
1333 But skip the script entirely in production builds, where it is both unnecessary and can't
1334 function correctly (due to not having the entire source tree available to it).
1336 * JavaScriptCore.vcproj/JavaScriptCore/react-to-vsprops-changes.py:
1337 (main): Removed an extra '*' in the glob for finding manifest files. The extra '*' was
1338 leftover from before we rearranged WebKitBuild in r75138. Moved code to delete an old file
1339 to the new delete_if_older_than function. Added code to delete any precompiled headers older
1340 than the newest .vsprops file.
1341 (delete_if_older_than): Added. Code came from main.
1343 2011-02-07 Antti Koivisto <antti@apple.com>
1347 ASSERTS_DISABLED -> ASSERT_DISABLED
1349 * wtf/BloomFilter.h:
1351 2011-02-06 Ryosuke Niwa <rniwa@webkit.org>
1353 Unreviewed; speculative Qt build fix.
1355 * JavaScriptCore.pro:
1357 2011-02-06 Ryosuke Niwa <rniwa@webkit.org>
1359 Reviewed by Darin Adler.
1361 OwnArraryPtr.h uses deleteOwnedPtr but doesn’t include OwnPtrCommon.h
1362 https://bugs.webkit.org/show_bug.cgi?id=52867
1364 Removed LOOSE_OWN_ARRAY_PTR and OwnArrayPtr<T>::set. Replaced all calls to OwnArrayPtr::set
1365 and loose instantiation of OwnArrayPtr by calls to operator= and adoptArrayPtr. Also removed
1366 OwnArrayPtrCommon.h since PassOwnArrayPtr.h needs to include OwnArrayPtr.h and there is
1367 no point in putting deleteOwnedArrayPtr into a separate header.
1369 Note: if this patch breaks build, the code is either instiantiating OwnArrayPtr
1370 without calling adoptArrayPtr or calling set on ArrayOwnPtr instead of operator=.
1372 No tests are added since this is a refactoring.
1374 * API/JSStringRefCF.cpp:
1375 (JSStringCreateWithCFString): Calls adoptArrayPtr.
1376 * GNUmakefile.am: Removed OwnArrayPtrCommon.h
1377 * JavaScriptCore.vcproj/WTF/WTF.vcproj: Ditto.
1378 * JavaScriptCore.xcodeproj/project.pbxproj: Ditto.
1379 * runtime/Arguments.cpp:
1380 (JSC::Arguments::deleteProperty): Calls adoptArrayPtr.
1381 * runtime/Arguments.h:
1382 (JSC::Arguments::copyRegisters): Ditto.
1383 * runtime/JSPropertyNameIterator.cpp:
1384 (JSC::JSPropertyNameIterator::JSPropertyNameIterator): Ditto.
1385 * runtime/JSVariableObject.h:
1386 (JSC::JSVariableObject::setRegisters): Calls operator= instead of set.
1387 * runtime/StructureChain.cpp:
1388 (JSC::StructureChain::StructureChain): Ditto.
1389 * wtf/CMakeLists.txt:
1391 (JSC::GregorianDateTime::GregorianDateTime): No longer instnatiates OwnArrayPtr
1392 with a null pointer.
1393 * wtf/OwnArrayPtr.h:
1394 * wtf/OwnArrayPtrCommon.h: Removed.
1395 * wtf/PassOwnArrayPtr.h: No longer includes OwnArrayCommon.h
1396 (WTF::deleteOwnedArrayPtr): Moved from OwnArrayPtrCommon.h
1398 2011-02-06 Antti Koivisto <antti@apple.com>
1400 Reviewed by Maciej Stachowiak.
1402 Use bloom filter for descendant selector filtering
1403 https://bugs.webkit.org/show_bug.cgi?id=53880
1405 Implement a bloom filter with k=2 and 8 bit counting.
1408 * JavaScriptCore.gypi:
1409 * JavaScriptCore.vcproj/WTF/WTF.vcproj:
1410 * JavaScriptCore.xcodeproj/project.pbxproj:
1411 * wtf/BloomFilter.h: Added.
1412 (WTF::BloomFilter::maximumCount):
1413 (WTF::BloomFilter::BloomFilter):
1414 (WTF::BloomFilter::mayContain):
1415 (WTF::BloomFilter::add):
1416 (WTF::BloomFilter::remove):
1417 (WTF::BloomFilter::firstSlot):
1418 (WTF::BloomFilter::secondSlot):
1422 (WTF::::likelyEmpty):
1425 2011-02-04 Geoffrey Garen <ggaren@apple.com>
1427 Reviewed by Oliver Hunt.
1429 Rolled back in r77612 with ASSERT/crash fixed.
1430 https://bugs.webkit.org/show_bug.cgi?id=53759
1432 Don't shrink the heap to 0 unconditionally. Instead, shrink to 1 if
1433 necessary. For now, the heap assumes that it always has at least one
1440 * runtime/MarkedSpace.cpp:
1441 (JSC::MarkedSpace::allocate):
1442 (JSC::MarkedSpace::shrinkBlocks):
1443 (JSC::MarkedSpace::sweep):
1444 (JSC::MarkedSpace::reset):
1445 * runtime/MarkedSpace.h:
1446 (JSC::MarkedSpace::highWaterMark):
1447 (JSC::MarkedSpace::setHighWaterMark):
1449 2011-02-04 David Kilzer <ddkilzer@apple.com>
1451 BUILD FIX: REALLY remove the last vestiges of JSVALUE32!
1453 <rdar://problem/8957409> Remove last vestiges of JSVALUE32
1454 <http://webkit.org/b/53779>
1456 * DerivedSources.make: Removed dependency on
1457 JavaScriptCore.JSVALUE32.exp.
1459 2011-02-04 David Kilzer <ddkilzer@apple.com>
1461 <rdar://problem/8957409> Remove last vestiges of JSVALUE32
1462 <http://webkit.org/b/53779>
1464 Reviewed by Darin Adler.
1466 Support for JSVALUE32 was originaly removed in r70111.
1468 * Configurations/JavaScriptCore.xcconfig: Changed armv6 to use
1469 JavaScriptCore.JSVALUE32_64.exp and ppc64 to use
1470 JavaScriptCore.JSVALUE64.exp to match Platform.h.
1471 * DerivedSources.make: Removed rule for
1472 JavaScriptCore.JSVALUE32.exp.
1473 * JavaScriptCore.JSVALUE32only.exp: Removed.
1474 * JavaScriptCore.xcodeproj/project.pbxproj: Removed references
1475 to JavaScriptCore.JSVALUE32only.exp.
1477 2011-02-04 David Kilzer <ddkilzer@apple.com>
1479 Use static_cast and other style cleanup in YarrInterpreter.cpp
1480 <http://webkit.org/b/53772>
1482 Reviewed by John Sullivan.
1484 * yarr/YarrInterpreter.cpp:
1485 (JSC::Yarr::Interpreter::InputStream::readChecked): Use
1487 (JSC::Yarr::Interpreter::InputStream::checkInput): Remove
1488 unnecessary else block.
1489 (JSC::Yarr::Interpreter::matchAssertionEOL): Ditto.
1490 (JSC::Yarr::Interpreter::backtrackBackReference): Ditto.
1491 (JSC::Yarr::ByteCompiler::emitDisjunction): Use static_cast.
1493 2011-02-04 Sheriff Bot <webkit.review.bot@gmail.com>
1495 Unreviewed, rolling out r77625 and r77626.
1496 http://trac.webkit.org/changeset/77625
1497 http://trac.webkit.org/changeset/77626
1498 https://bugs.webkit.org/show_bug.cgi?id=53765
1500 It broke Windows builds (Requested by Ossy_ on #webkit).
1502 * JavaScriptCore.exp:
1503 * JavaScriptCore.gyp/JavaScriptCore.gyp:
1504 * JavaScriptCore.gypi:
1505 * JavaScriptCore.pro:
1506 * JavaScriptCore.xcodeproj/project.pbxproj:
1507 * create_regex_tables:
1508 * runtime/RegExp.cpp:
1513 * yarr/YarrParser.h:
1514 * yarr/YarrPattern.h:
1515 * yarr/YarrSyntaxChecker.h:
1516 * yarr/yarr.pri: Removed.
1518 2011-02-04 Jessie Berlin <jberlin@apple.com>
1520 Windows build fix. Unreviewed.
1522 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
1524 2011-02-04 Peter Varga <pvarga@webkit.org>
1526 Reviewed by Gavin Barraclough.
1528 Replace PCRE with Yarr in WebCore
1529 https://bugs.webkit.org/show_bug.cgi?id=53496
1531 * JavaScriptCore.exp:
1532 * JavaScriptCore.gyp/JavaScriptCore.gyp:
1533 * JavaScriptCore.gypi:
1534 * JavaScriptCore.pro:
1535 * JavaScriptCore.xcodeproj/project.pbxproj:
1536 * create_regex_tables:
1537 * runtime/RegExp.cpp:
1542 * yarr/YarrParser.h:
1543 * yarr/YarrPattern.h:
1544 * yarr/YarrSyntaxChecker.h:
1545 * yarr/yarr.pri: Added.
1547 2011-02-04 Ilya Tikhonovsky <loislo@chromium.org>
1549 Unreviewed rollout two patches r77614 and r77612.
1551 REGRESSION: Snow Leopard Intel Release anumber of failing tests.
1557 * runtime/MarkedSpace.cpp:
1558 (JSC::MarkedSpace::allocate):
1559 (JSC::MarkedSpace::sweep):
1560 (JSC::MarkedSpace::reset):
1561 * runtime/MarkedSpace.h:
1563 2011-02-04 Geoffrey Garen <ggaren@apple.com>
1565 Try to fix 32bit build.
1568 (JSC::Heap::reset): Use an explicit cast to avoid shortening warnings,
1569 since 1.5 is double (64bit), and the result is size_t (32bit).
1571 2011-02-03 Geoffrey Garen <ggaren@apple.com>
1573 Reviewed by Cameron Zwarich.
1575 Changed MarkedSpace to delegate grow/shrink decisions to Heap
1576 https://bugs.webkit.org/show_bug.cgi?id=53759
1578 SunSpider reports no change.
1583 * runtime/Heap.h: Reorganized a few data members for better cache locality.
1584 Added a grow policy.
1586 * runtime/MarkedSpace.cpp:
1587 (JSC::MarkedSpace::allocate):
1588 (JSC::MarkedSpace::sweep):
1589 (JSC::MarkedSpace::reset): Don't shrink automatically. Instead, wait for
1590 the heap to make an explicit sweep call.
1592 * runtime/MarkedSpace.h:
1593 (JSC::MarkedSpace::highWaterMark):
1594 (JSC::MarkedSpace::setHighWaterMark): Use a watermark to determine how
1595 many bytes to allocate before failing and giving the heap an opportunity
1596 to collect garbage. This also means that we allocate blocks on demand,
1597 instead of ahead of time.
1599 2011-02-03 James Kozianski <koz@chromium.org>
1601 Reviewed by Dimitri Glazkov.
1603 Add navigator.registerProtocolHandler behind a flag.
1604 https://bugs.webkit.org/show_bug.cgi?id=52609
1606 * Configurations/FeatureDefines.xcconfig:
1608 2011-02-03 Geoffrey Garen <ggaren@apple.com>
1610 Reviewed by Oliver Hunt.
1612 Not all blocks are freed when the heap is freed (counting is hard!)
1613 https://bugs.webkit.org/show_bug.cgi?id=53732
1615 * runtime/MarkedSpace.cpp:
1616 (JSC::MarkedSpace::destroy): Freeing a block compacts the list, so just
1617 keep freeing block 0 until there are no blocks left.
1619 2011-02-03 Geoffrey Garen <ggaren@apple.com>
1621 Try to fix the Mac build.
1623 * JavaScriptCore.xcodeproj/project.pbxproj: The new MarkedBlock.h header
1624 needs to be private, not project, so other projects can include headers
1627 2011-02-03 Geoffrey Garen <ggaren@apple.com>
1629 Reviewed by Sam Weinig.
1631 Start using MarkedBlock instead of CollectorBlock
1632 https://bugs.webkit.org/show_bug.cgi?id=53693
1634 SunSpider reports no change.
1636 * runtime/MarkedBlock.h:
1637 (JSC::MarkedBlock::blockFor):
1638 (JSC::MarkedBlock::setMarked):
1639 (JSC::MarkedBlock::isCellAligned):
1640 (JSC::MarkedBlock::isPossibleCell): Updated for const-ness.
1642 * runtime/MarkedSpace.cpp:
1643 (JSC::MarkedSpace::allocateBlock):
1644 (JSC::MarkedSpace::containsSlowCase):
1645 (JSC::MarkedSpace::clearMarkBits): Updated for const-ness.
1647 * runtime/MarkedSpace.h:
1648 (JSC::CollectorHeap::collectorBlock):
1649 (JSC::MarkedSpace::heap):
1650 (JSC::MarkedSpace::isMarked):
1651 (JSC::MarkedSpace::testAndSetMarked):
1652 (JSC::MarkedSpace::setMarked):
1653 (JSC::MarkedSpace::contains): Switched from CollectorBlock to MarkedBlock,
1654 and deleted dead CollectorBlock-related code.
1656 2011-02-03 Patrick Gansterer <paroga@webkit.org>
1658 Reviewed by Darin Adler.
1660 Avoid strlen() in AtomicString::fromUTF8
1661 https://bugs.webkit.org/show_bug.cgi?id=50516
1663 Add an overload to calculateStringHashFromUTF8 to get
1664 strlen() of the input data with only one call.
1666 This change shows about 3% performance win on the xml-parser benchmark.
1668 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1669 * wtf/text/AtomicString.cpp:
1670 (WTF::AtomicString::fromUTF8):
1671 * wtf/unicode/UTF8.cpp:
1672 (WTF::Unicode::calculateStringHashAndLengthFromUTF8Internal):
1673 (WTF::Unicode::calculateStringHashFromUTF8):
1674 (WTF::Unicode::calculateStringHashAndLengthFromUTF8):
1675 * wtf/unicode/UTF8.h:
1677 2011-02-02 Gavin Barraclough <barraclough@apple.com>
1681 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1683 2011-02-02 Gavin Barraclough <barraclough@apple.com>
1687 * wtf/Assertions.cpp:
1689 2011-02-02 Gavin Barraclough <barraclough@apple.com>
1691 Reviewed by Sam Weinig.
1693 Bug 53650 - Add a BACKTRACE macro to Assertions.h
1695 Add a BACKTRACE macro to Assertions.h, which will print a backtrace on
1696 debug Mac builds, make CRASH (and thus ASSERT) automatically call this.
1698 * JavaScriptCore.exp:
1699 * wtf/Assertions.cpp:
1702 2011-02-02 Michael Saboff <msaboff@apple.com>
1704 Reviewed by Gavin Barraclough.
1706 Improper backtrack of nested non-capturing greedy paren to prior paren
1707 https://bugs.webkit.org/show_bug.cgi?id=53261
1709 A paren that follows a non-capturing greedy paren nested within a
1710 non-capturing fixed paren was back tracking to the last paren
1711 processed instead of the immediately prior paren.
1712 Refactored default backtracking of parens to prior paren to work for
1713 both nested (within) and immediately prior (after) parens.
1716 (JSC::Yarr::YarrGenerator::GenerationState::addParenthesesTail):
1717 (JSC::Yarr::YarrGenerator::TermGenerationState::TermGenerationState):
1718 (JSC::Yarr::YarrGenerator::TermGenerationState::setJumpListToPriorParen):
1719 (JSC::Yarr::YarrGenerator::TermGenerationState::getJumpListToPriorParen):
1720 (JSC::Yarr::YarrGenerator::ParenthesesTail::ParenthesesTail):
1721 (JSC::Yarr::YarrGenerator::ParenthesesTail::generateCode):
1722 (JSC::Yarr::YarrGenerator::generateParenthesesDisjunction):
1723 (JSC::Yarr::YarrGenerator::generateParenthesesSingle):
1724 (JSC::Yarr::YarrGenerator::generateDisjunction):
1726 2011-02-02 Jeff Miller <jeffm@apple.com>
1728 Reviewed by Darin Adler and Steve Falkenburg.
1730 Add DerivedSources.make to some Visual Studio projects
1731 https://bugs.webkit.org/show_bug.cgi?id=53607
1733 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: Add DerivedSources.make.
1735 2011-02-02 Steve Lacey <sjl@chromium.org>
1737 Reviewed by Eric Carlson.
1739 Implement basic media statistics on media elements.
1740 https://bugs.webkit.org/show_bug.cgi?id=53322
1742 * Configurations/FeatureDefines.xcconfig:
1744 2011-02-02 Kevin Ollivier <kevino@theolliviers.com>
1746 [wx] Build fixes for wxWebKit.
1748 * wtf/wx/StringWx.cpp:
1749 (WTF::String::String):
1751 2011-02-01 Geoffrey Garen <ggaren@apple.com>
1753 Reviewed by Sam Weinig.
1755 A little more Heap refactoring
1756 https://bugs.webkit.org/show_bug.cgi?id=53577
1758 SunSpider reports no change.
1760 Split out MarkedBlock into its own file / class.
1762 Did the following renames:
1763 isCellMarked => isMarked
1764 checkMarkCell => testAndSetMarked
1765 markCell => setMarked
1766 cellOffset => cellNumber
1767 collectorBlock => blockFor
1772 * JavaScriptCore.gypi:
1773 * JavaScriptCore.pro:
1774 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
1775 * JavaScriptCore.xcodeproj/project.pbxproj:
1777 (JSC::WeakGCHandlePool::update):
1779 (JSC::Heap::isMarked):
1780 (JSC::Heap::testAndSetMarked):
1781 (JSC::Heap::setMarked):
1782 * runtime/JSArray.h:
1783 (JSC::MarkStack::markChildren):
1784 (JSC::MarkStack::drain):
1786 (JSC::JSCell::MarkStack::internalAppend):
1787 * runtime/MarkedBlock.cpp: Added.
1788 * runtime/MarkedBlock.h: Added.
1789 (JSC::MarkedBlock::blockFor):
1790 (JSC::MarkedBlock::cellNumber):
1791 (JSC::MarkedBlock::isMarked):
1792 (JSC::MarkedBlock::testAndSetMarked):
1793 (JSC::MarkedBlock::setMarked):
1794 (JSC::MarkedBlock::isCellAligned):
1795 (JSC::MarkedBlock::isPossibleCell):
1796 * runtime/MarkedSpace.h:
1797 (JSC::MarkedSpace::isMarked):
1798 (JSC::MarkedSpace::testAndSetMarked):
1799 (JSC::MarkedSpace::setMarked):
1800 * runtime/SmallStrings.cpp:
1802 * runtime/WeakGCMap.h:
1803 (JSC::WeakGCMap::isValid):
1808 2011-02-02 Sam Weinig <sam@webkit.org>
1810 Fix windows clean build.
1812 * DerivedSources.make:
1814 2011-02-02 Alejandro G. Castro <alex@igalia.com>
1816 Reviewed by Martin Robinson.
1818 [GTK] Fix dist compilation
1819 https://bugs.webkit.org/show_bug.cgi?id=53579
1821 * GNUmakefile.am: Added WriteBarrier.h to the sources, it was
1824 2011-02-01 Sheriff Bot <webkit.review.bot@gmail.com>
1826 Unreviewed, rolling out r77297.
1827 http://trac.webkit.org/changeset/77297
1828 https://bugs.webkit.org/show_bug.cgi?id=53538
1830 caused leopard crashes (Requested by paroga on #webkit).
1832 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1833 * wtf/text/AtomicString.cpp:
1834 (WTF::AtomicString::fromUTF8):
1835 * wtf/unicode/UTF8.cpp:
1836 (WTF::Unicode::calculateStringHashFromUTF8):
1837 * wtf/unicode/UTF8.h:
1839 2011-02-01 Sam Weinig <sam@webkit.org>
1841 Fix Mac production builds.
1843 * JavaScriptCore.xcodeproj/project.pbxproj:
1845 2011-02-01 Sam Weinig <sam@webkit.org>
1847 Try to fix the windows build.
1849 * DerivedSources.make:
1851 2011-02-01 Patrick Gansterer <paroga@webkit.org>
1853 Reviewed by Darin Adler.
1855 Avoid strlen() in AtomicString::fromUTF8
1856 https://bugs.webkit.org/show_bug.cgi?id=50516
1858 Add an overload to calculateStringHashFromUTF8 to get
1859 strlen() of the input data with only one call.
1861 This change shows about 3% performance win on the xml-parser benchmark.
1863 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1864 * wtf/text/AtomicString.cpp:
1865 (WTF::AtomicString::fromUTF8):
1866 * wtf/unicode/UTF8.cpp:
1867 (WTF::Unicode::calculateStringHashAndLengthFromUTF8Internal):
1868 (WTF::Unicode::calculateStringHashFromUTF8):
1869 (WTF::Unicode::calculateStringHashAndLengthFromUTF8):
1870 * wtf/unicode/UTF8.h:
1872 2011-02-01 Sam Weinig <sam@webkit.org>
1874 Reviewed by Beth Dakin.
1876 Part 2 for <rdar://problem/8492788>
1877 Adopt WKScrollbarPainterController
1879 Use header detection to define scrollbar painting controller #define.
1881 * DerivedSources.make:
1882 * JavaScriptCore.xcodeproj/project.pbxproj:
1884 2011-02-01 Geoffrey Garen <ggaren@apple.com>
1886 Reviewed by Oliver Hunt.
1888 Refactor JSGlobalObject-related tear-down
1889 https://bugs.webkit.org/show_bug.cgi?id=53478
1891 While investigating crashes caused by r77082, I noticed some strange
1892 destructor-time behaviors. This patch makes them less strange.
1894 * bytecode/CodeBlock.cpp:
1895 (JSC::CodeBlock::CodeBlock):
1896 (JSC::CodeBlock::markAggregate):
1897 * bytecode/CodeBlock.h:
1898 (JSC::CodeBlock::globalObject):
1899 (JSC::GlobalCodeBlock::GlobalCodeBlock):
1900 (JSC::GlobalCodeBlock::~GlobalCodeBlock): Store the set of global code
1901 blocks on the Heap, instead of on independent global objects. The heap
1902 is guaranteed to outlast any GC-owned data structure. The heap is also
1903 a natural place to store objects that needs out-of-band marking, since
1904 the heap is responsible for marking all roots.
1907 (JSC::Heap::markRoots):
1908 (JSC::Heap::globalObjectCount):
1909 (JSC::Heap::protectedGlobalObjectCount):
1911 (JSC::Heap::codeBlocks):
1912 * runtime/JSGlobalData.cpp:
1913 (JSC::JSGlobalData::JSGlobalData):
1914 * runtime/JSGlobalData.h:
1915 * runtime/JSGlobalObject.cpp:
1916 (JSC::JSGlobalObject::~JSGlobalObject):
1917 (JSC::JSGlobalObject::init):
1918 (JSC::JSGlobalObject::markChildren):
1919 * runtime/JSGlobalObject.h:
1920 * runtime/MarkedSpace.cpp: Store the set of global objects in a weak map
1921 owned by JSGlobalData, instead of an instrusive circular linked list.
1922 This is simpler, and it avoids destructor-time access between garbage
1923 collected objects, which is hard to get right.
1925 (JSC::MarkedSpace::destroy): Make sure to clear mark bits before tearing
1926 everything down. Otherwise, weak data structures will incorrectly report
1927 that objects pending destruction are still alive.
1929 2011-02-01 Geoffrey Garen <ggaren@apple.com>
1931 Reviewed by Oliver Hunt.
1933 REGRESSION(77082): GC-related crashes seen: on WebKit2 bot; on GTK 32bit
1934 bot; loading trac pages; typing in search field
1935 https://bugs.webkit.org/show_bug.cgi?id=53519
1937 The crashes were all caused by failure to run an object's destructor.
1939 * runtime/CollectorHeapIterator.h:
1940 (JSC::ObjectIterator::ObjectIterator): Don't skip forward upon
1941 construction. The iterator class used to do that when it was designed
1942 for prior-to-beginning initialization. I forgot to remove this line
1943 of code when I changed the iterator to normal initialization.
1945 Skipping forward upon construction was causing the heap to skip running
1946 the destructor for the very first object in a block when destroying the
1947 block. This usually did not crash, since block destruction is rare and
1948 most objects have pretty trivial destructors. However, in the rare case
1949 when the heap would destroy a block whose first object was a global
1950 object or a DOM node, BOOM.
1952 2011-01-31 Oliver Hunt <oliver@apple.com>
1954 Reviewed by Geoffrey Garen.
1956 Update JSObject storage for new marking API
1957 https://bugs.webkit.org/show_bug.cgi?id=53467
1959 JSObject no longer uses EncodedJSValue for its property storage.
1960 This produces a stream of mechanical changes to PropertySlot and
1961 anonymous storage APIs.
1963 * JavaScriptCore.exp:
1964 * runtime/ArrayPrototype.cpp:
1965 (JSC::ArrayPrototype::ArrayPrototype):
1966 * runtime/BooleanConstructor.cpp:
1967 (JSC::constructBoolean):
1968 (JSC::constructBooleanFromImmediateBoolean):
1969 * runtime/BooleanObject.cpp:
1970 (JSC::BooleanObject::BooleanObject):
1971 * runtime/BooleanObject.h:
1972 * runtime/BooleanPrototype.cpp:
1973 (JSC::BooleanPrototype::BooleanPrototype):
1974 * runtime/DateInstance.cpp:
1975 (JSC::DateInstance::DateInstance):
1976 * runtime/DatePrototype.cpp:
1977 (JSC::DatePrototype::DatePrototype):
1978 * runtime/JSActivation.cpp:
1979 (JSC::JSActivation::getOwnPropertySlot):
1980 * runtime/JSArray.cpp:
1981 (JSC::JSArray::getOwnPropertySlot):
1982 * runtime/JSFunction.cpp:
1983 (JSC::JSFunction::getOwnPropertySlot):
1984 * runtime/JSGlobalObject.h:
1985 (JSC::JSGlobalObject::JSGlobalObject):
1986 * runtime/JSObject.cpp:
1987 (JSC::JSObject::fillGetterPropertySlot):
1988 * runtime/JSObject.h:
1989 (JSC::JSObject::getDirectLocation):
1990 (JSC::JSObject::offsetForLocation):
1991 (JSC::JSObject::putAnonymousValue):
1992 (JSC::JSObject::clearAnonymousValue):
1993 (JSC::JSObject::getAnonymousValue):
1994 (JSC::JSObject::putThisToAnonymousValue):
1995 (JSC::JSObject::locationForOffset):
1996 (JSC::JSObject::inlineGetOwnPropertySlot):
1997 * runtime/JSObjectWithGlobalObject.cpp:
1998 (JSC::JSObjectWithGlobalObject::JSObjectWithGlobalObject):
1999 * runtime/JSWrapperObject.h:
2000 (JSC::JSWrapperObject::JSWrapperObject):
2001 (JSC::JSWrapperObject::setInternalValue):
2002 * runtime/Lookup.cpp:
2003 (JSC::setUpStaticFunctionSlot):
2004 * runtime/NumberConstructor.cpp:
2005 (JSC::constructWithNumberConstructor):
2006 * runtime/NumberObject.cpp:
2007 (JSC::NumberObject::NumberObject):
2008 (JSC::constructNumber):
2009 * runtime/NumberObject.h:
2010 * runtime/NumberPrototype.cpp:
2011 (JSC::NumberPrototype::NumberPrototype):
2012 * runtime/PropertySlot.h:
2013 (JSC::PropertySlot::getValue):
2014 (JSC::PropertySlot::setValue):
2015 (JSC::PropertySlot::setRegisterSlot):
2016 * runtime/StringObject.cpp:
2017 (JSC::StringObject::StringObject):
2018 * runtime/StringPrototype.cpp:
2019 (JSC::StringPrototype::StringPrototype):
2020 * runtime/WriteBarrier.h:
2021 (JSC::WriteBarrierBase::setWithoutWriteBarrier):
2023 2011-02-01 Daniel Bates <dbates@rim.com>
2025 Reviewed by Antonio Gomes.
2027 Modify RandomNumberSeed.h to use USE(MERSENNE_TWISTER_19937)
2028 https://bugs.webkit.org/show_bug.cgi?id=53506
2030 Currently, use of the Mersenne Twister pseudorandom number generator
2031 is hardcoded to the Windows CE port. With the passing of bug #53253,
2032 we can generalize support for this PRNG to all ports that use srand(3)
2033 and rand(3), including Windows CE.
2035 * wtf/RandomNumberSeed.h:
2036 (WTF::initializeRandomNumberGenerator):
2038 2011-02-01 Dave Tapuska <dtapuska@rim.com>
2040 Reviewed by Gavin Barraclough.
2042 MacroAssemblerARM would generate code that did 32bit loads
2043 on addresses that were not aligned. More specifically it would
2044 generate a ldr r8,[r1, #7] which isn't valid on ARMv5 and lower.
2045 The intended instruction really is ldrb r8,[r1, #7]; ensure we
2046 call load8 instead of load32.
2048 https://bugs.webkit.org/show_bug.cgi?id=46095
2050 * assembler/MacroAssemblerARM.h:
2051 (JSC::MacroAssemblerARM::set32Test32):
2052 (JSC::MacroAssemblerARM::set32Test8):
2054 2011-02-01 Darin Fisher <darin@chromium.org>
2056 Reviewed by Eric Seidel.
2058 Fix some Visual Studio compiler warnings.
2059 https://bugs.webkit.org/show_bug.cgi?id=53476
2063 (clampToPositiveInteger):
2064 * wtf/ThreadingWin.cpp:
2065 (WTF::absoluteTimeToWaitTimeoutInterval):
2067 2011-01-31 Oliver Hunt <oliver@apple.com>
2069 Reviewed by Sam Weinig.
2071 Bogus callframe during stack unwinding
2072 https://bugs.webkit.org/show_bug.cgi?id=53454
2074 Trying to access a callframe's globalData after destroying its
2075 ScopeChain is not a good thing. While we could access the
2076 globalData directly through the (known valid) scopechain we're
2077 holding on to, it feels fragile. Instead we push the valid
2078 ScopeChain onto the callframe again to ensure that the callframe
2079 itself remains valid.
2081 * interpreter/Interpreter.cpp:
2082 (JSC::Interpreter::unwindCallFrame):
2084 2011-01-31 Michael Saboff <msaboff@apple.com>
2086 Reviewed by Geoffrey Garen.
2088 Potentially Unsafe HashSet of RuntimeObject* in RootObject definition
2089 https://bugs.webkit.org/show_bug.cgi?id=53271
2091 Reapplying this change again.
2092 Changed isValid() to use .get() as a result of change r77151.
2094 Added new isValid() methods to check if a contained object in
2095 a WeakGCMap is valid when using an unchecked iterator.
2097 * runtime/WeakGCMap.h:
2098 (JSC::WeakGCMap::isValid):
2100 2011-01-31 Oliver Hunt <oliver@apple.com>
2102 Convert markstack to a slot visitor API
2103 https://bugs.webkit.org/show_bug.cgi?id=53219
2105 rolling r77098, r77099, r77100, r77109, and
2106 r77111 back in, along with a few more Qt fix attempts.
2108 * API/JSCallbackObject.h:
2109 (JSC::JSCallbackObjectData::setPrivateProperty):
2110 (JSC::JSCallbackObjectData::JSPrivatePropertyMap::getPrivateProperty):
2111 (JSC::JSCallbackObjectData::JSPrivatePropertyMap::setPrivateProperty):
2112 (JSC::JSCallbackObjectData::JSPrivatePropertyMap::markChildren):
2113 (JSC::JSCallbackObject::setPrivateProperty):
2114 * API/JSCallbackObjectFunctions.h:
2116 (JSC::::staticFunctionGetter):
2117 * API/JSObjectRef.cpp:
2118 (JSObjectMakeConstructor):
2119 (JSObjectSetPrivateProperty):
2120 * API/JSWeakObjectMapRefInternal.h:
2121 * JavaScriptCore.exp:
2122 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2123 * JavaScriptCore.xcodeproj/project.pbxproj:
2124 * bytecode/CodeBlock.cpp:
2125 (JSC::CodeBlock::markAggregate):
2126 * bytecode/CodeBlock.h:
2127 (JSC::CodeBlock::globalObject):
2128 * bytecompiler/BytecodeGenerator.cpp:
2129 (JSC::BytecodeGenerator::BytecodeGenerator):
2130 (JSC::BytecodeGenerator::emitJumpIfNotFunctionCall):
2131 (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply):
2132 (JSC::BytecodeGenerator::findScopedProperty):
2133 * debugger/Debugger.cpp:
2134 (JSC::evaluateInGlobalCallFrame):
2135 * debugger/DebuggerActivation.cpp:
2136 (JSC::DebuggerActivation::DebuggerActivation):
2137 (JSC::DebuggerActivation::markChildren):
2138 * debugger/DebuggerActivation.h:
2139 * debugger/DebuggerCallFrame.cpp:
2140 (JSC::DebuggerCallFrame::evaluate):
2141 * interpreter/CallFrame.h:
2142 (JSC::ExecState::exception):
2143 * interpreter/Interpreter.cpp:
2144 (JSC::Interpreter::resolve):
2145 (JSC::Interpreter::resolveSkip):
2146 (JSC::Interpreter::resolveGlobal):
2147 (JSC::Interpreter::resolveGlobalDynamic):
2148 (JSC::Interpreter::resolveBaseAndProperty):
2149 (JSC::Interpreter::unwindCallFrame):
2150 (JSC::appendSourceToError):
2151 (JSC::Interpreter::execute):
2152 (JSC::Interpreter::tryCacheGetByID):
2153 (JSC::Interpreter::privateExecute):
2155 (JSC::JITThunks::tryCacheGetByID):
2156 (JSC::DEFINE_STUB_FUNCTION):
2158 (GlobalObject::GlobalObject):
2159 * runtime/ArgList.cpp:
2160 (JSC::MarkedArgumentBuffer::markLists):
2161 * runtime/Arguments.cpp:
2162 (JSC::Arguments::markChildren):
2163 (JSC::Arguments::getOwnPropertySlot):
2164 (JSC::Arguments::getOwnPropertyDescriptor):
2165 (JSC::Arguments::put):
2166 * runtime/Arguments.h:
2167 (JSC::Arguments::setActivation):
2168 (JSC::Arguments::Arguments):
2169 * runtime/ArrayConstructor.cpp:
2170 (JSC::ArrayConstructor::ArrayConstructor):
2171 (JSC::constructArrayWithSizeQuirk):
2172 * runtime/ArrayPrototype.cpp:
2173 (JSC::arrayProtoFuncSplice):
2174 * runtime/BatchedTransitionOptimizer.h:
2175 (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer):
2176 (JSC::BatchedTransitionOptimizer::~BatchedTransitionOptimizer):
2177 * runtime/BooleanConstructor.cpp:
2178 (JSC::BooleanConstructor::BooleanConstructor):
2179 (JSC::constructBoolean):
2180 (JSC::constructBooleanFromImmediateBoolean):
2181 * runtime/BooleanPrototype.cpp:
2182 (JSC::BooleanPrototype::BooleanPrototype):
2183 * runtime/ConservativeSet.cpp:
2184 (JSC::ConservativeSet::grow):
2185 * runtime/ConservativeSet.h:
2186 (JSC::ConservativeSet::~ConservativeSet):
2187 (JSC::ConservativeSet::mark):
2188 * runtime/DateConstructor.cpp:
2189 (JSC::DateConstructor::DateConstructor):
2190 * runtime/DateInstance.cpp:
2191 (JSC::DateInstance::DateInstance):
2192 * runtime/DatePrototype.cpp:
2193 (JSC::dateProtoFuncSetTime):
2194 (JSC::setNewValueFromTimeArgs):
2195 (JSC::setNewValueFromDateArgs):
2196 (JSC::dateProtoFuncSetYear):
2197 * runtime/ErrorConstructor.cpp:
2198 (JSC::ErrorConstructor::ErrorConstructor):
2199 * runtime/ErrorInstance.cpp:
2200 (JSC::ErrorInstance::ErrorInstance):
2201 * runtime/ErrorPrototype.cpp:
2202 (JSC::ErrorPrototype::ErrorPrototype):
2203 * runtime/FunctionConstructor.cpp:
2204 (JSC::FunctionConstructor::FunctionConstructor):
2205 * runtime/FunctionPrototype.cpp:
2206 (JSC::FunctionPrototype::FunctionPrototype):
2207 * runtime/GetterSetter.cpp:
2208 (JSC::GetterSetter::markChildren):
2209 * runtime/GetterSetter.h:
2210 (JSC::GetterSetter::GetterSetter):
2211 (JSC::GetterSetter::getter):
2212 (JSC::GetterSetter::setGetter):
2213 (JSC::GetterSetter::setter):
2214 (JSC::GetterSetter::setSetter):
2215 * runtime/GlobalEvalFunction.cpp:
2216 (JSC::GlobalEvalFunction::GlobalEvalFunction):
2217 (JSC::GlobalEvalFunction::markChildren):
2218 * runtime/GlobalEvalFunction.h:
2219 (JSC::GlobalEvalFunction::cachedGlobalObject):
2221 (JSC::Heap::markProtectedObjects):
2222 (JSC::Heap::markTempSortVectors):
2223 (JSC::Heap::markRoots):
2224 * runtime/InternalFunction.cpp:
2225 (JSC::InternalFunction::InternalFunction):
2226 * runtime/JSAPIValueWrapper.h:
2227 (JSC::JSAPIValueWrapper::value):
2228 (JSC::JSAPIValueWrapper::JSAPIValueWrapper):
2229 * runtime/JSActivation.cpp:
2230 (JSC::JSActivation::markChildren):
2231 (JSC::JSActivation::put):
2232 * runtime/JSArray.cpp:
2233 (JSC::JSArray::JSArray):
2234 (JSC::JSArray::getOwnPropertySlot):
2235 (JSC::JSArray::getOwnPropertyDescriptor):
2236 (JSC::JSArray::put):
2237 (JSC::JSArray::putSlowCase):
2238 (JSC::JSArray::deleteProperty):
2239 (JSC::JSArray::increaseVectorLength):
2240 (JSC::JSArray::setLength):
2241 (JSC::JSArray::pop):
2242 (JSC::JSArray::push):
2243 (JSC::JSArray::unshiftCount):
2244 (JSC::JSArray::sort):
2245 (JSC::JSArray::fillArgList):
2246 (JSC::JSArray::copyToRegisters):
2247 (JSC::JSArray::compactForSorting):
2248 * runtime/JSArray.h:
2249 (JSC::JSArray::getIndex):
2250 (JSC::JSArray::setIndex):
2251 (JSC::JSArray::uncheckedSetIndex):
2252 (JSC::JSArray::markChildrenDirect):
2253 * runtime/JSByteArray.cpp:
2254 (JSC::JSByteArray::JSByteArray):
2256 (JSC::JSCell::MarkStack::append):
2257 (JSC::JSCell::MarkStack::internalAppend):
2258 (JSC::JSCell::MarkStack::deprecatedAppend):
2259 * runtime/JSFunction.cpp:
2260 (JSC::JSFunction::JSFunction):
2261 (JSC::JSFunction::getOwnPropertySlot):
2262 * runtime/JSGlobalData.h:
2263 * runtime/JSGlobalObject.cpp:
2264 (JSC::markIfNeeded):
2265 (JSC::JSGlobalObject::reset):
2266 (JSC::JSGlobalObject::resetPrototype):
2267 (JSC::JSGlobalObject::markChildren):
2268 * runtime/JSGlobalObject.h:
2269 (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData):
2270 (JSC::JSGlobalObject::regExpConstructor):
2271 (JSC::JSGlobalObject::errorConstructor):
2272 (JSC::JSGlobalObject::evalErrorConstructor):
2273 (JSC::JSGlobalObject::rangeErrorConstructor):
2274 (JSC::JSGlobalObject::referenceErrorConstructor):
2275 (JSC::JSGlobalObject::syntaxErrorConstructor):
2276 (JSC::JSGlobalObject::typeErrorConstructor):
2277 (JSC::JSGlobalObject::URIErrorConstructor):
2278 (JSC::JSGlobalObject::evalFunction):
2279 (JSC::JSGlobalObject::objectPrototype):
2280 (JSC::JSGlobalObject::functionPrototype):
2281 (JSC::JSGlobalObject::arrayPrototype):
2282 (JSC::JSGlobalObject::booleanPrototype):
2283 (JSC::JSGlobalObject::stringPrototype):
2284 (JSC::JSGlobalObject::numberPrototype):
2285 (JSC::JSGlobalObject::datePrototype):
2286 (JSC::JSGlobalObject::regExpPrototype):
2287 (JSC::JSGlobalObject::methodCallDummy):
2288 (JSC::Structure::prototypeForLookup):
2289 (JSC::constructArray):
2290 * runtime/JSONObject.cpp:
2291 (JSC::Stringifier::Holder::object):
2292 (JSC::Stringifier::Holder::objectSlot):
2293 (JSC::Stringifier::markAggregate):
2294 (JSC::Stringifier::stringify):
2295 (JSC::Stringifier::Holder::appendNextProperty):
2296 (JSC::Walker::callReviver):
2297 (JSC::Walker::walk):
2298 * runtime/JSObject.cpp:
2299 (JSC::JSObject::defineGetter):
2300 (JSC::JSObject::defineSetter):
2301 (JSC::JSObject::removeDirect):
2302 (JSC::JSObject::putDirectFunction):
2303 (JSC::JSObject::putDirectFunctionWithoutTransition):
2304 (JSC::putDescriptor):
2305 (JSC::JSObject::defineOwnProperty):
2306 * runtime/JSObject.h:
2307 (JSC::JSObject::getDirectOffset):
2308 (JSC::JSObject::putDirectOffset):
2309 (JSC::JSObject::putUndefinedAtDirectOffset):
2310 (JSC::JSObject::flattenDictionaryObject):
2311 (JSC::JSObject::putDirectInternal):
2312 (JSC::JSObject::putDirect):
2313 (JSC::JSObject::putDirectFunction):
2314 (JSC::JSObject::putDirectWithoutTransition):
2315 (JSC::JSObject::putDirectFunctionWithoutTransition):
2316 (JSC::JSValue::putDirect):
2317 (JSC::JSObject::allocatePropertyStorageInline):
2318 (JSC::JSObject::markChildrenDirect):
2319 * runtime/JSPropertyNameIterator.cpp:
2320 (JSC::JSPropertyNameIterator::JSPropertyNameIterator):
2321 (JSC::JSPropertyNameIterator::get):
2322 * runtime/JSPropertyNameIterator.h:
2323 * runtime/JSStaticScopeObject.cpp:
2324 (JSC::JSStaticScopeObject::markChildren):
2325 * runtime/JSString.cpp:
2326 (JSC::StringObject::create):
2327 * runtime/JSValue.h:
2328 * runtime/JSWrapperObject.cpp:
2329 (JSC::JSWrapperObject::markChildren):
2330 * runtime/JSWrapperObject.h:
2331 (JSC::JSWrapperObject::internalValue):
2332 (JSC::JSWrapperObject::setInternalValue):
2333 * runtime/LiteralParser.cpp:
2334 (JSC::LiteralParser::parse):
2335 * runtime/Lookup.cpp:
2336 (JSC::setUpStaticFunctionSlot):
2339 * runtime/MarkStack.h:
2340 (JSC::MarkStack::MarkStack):
2341 (JSC::MarkStack::deprecatedAppendValues):
2342 (JSC::MarkStack::appendValues):
2343 * runtime/MathObject.cpp:
2344 (JSC::MathObject::MathObject):
2345 * runtime/NativeErrorConstructor.cpp:
2346 (JSC::NativeErrorConstructor::NativeErrorConstructor):
2347 * runtime/NativeErrorPrototype.cpp:
2348 (JSC::NativeErrorPrototype::NativeErrorPrototype):
2349 * runtime/NumberConstructor.cpp:
2350 (JSC::NumberConstructor::NumberConstructor):
2351 (JSC::constructWithNumberConstructor):
2352 * runtime/NumberObject.cpp:
2353 (JSC::constructNumber):
2354 * runtime/NumberPrototype.cpp:
2355 (JSC::NumberPrototype::NumberPrototype):
2356 * runtime/ObjectConstructor.cpp:
2357 (JSC::ObjectConstructor::ObjectConstructor):
2358 (JSC::objectConstructorGetOwnPropertyDescriptor):
2359 * runtime/Operations.h:
2360 (JSC::normalizePrototypeChain):
2362 * runtime/PrototypeFunction.cpp:
2363 (JSC::PrototypeFunction::PrototypeFunction):
2364 * runtime/PutPropertySlot.h:
2365 (JSC::PutPropertySlot::setExistingProperty):
2366 (JSC::PutPropertySlot::setNewProperty):
2367 (JSC::PutPropertySlot::base):
2368 * runtime/RegExpConstructor.cpp:
2369 (JSC::RegExpConstructor::RegExpConstructor):
2370 * runtime/ScopeChain.cpp:
2371 (JSC::ScopeChainNode::print):
2372 * runtime/ScopeChain.h:
2373 (JSC::ScopeChainNode::~ScopeChainNode):
2374 (JSC::ScopeChainIterator::operator*):
2375 (JSC::ScopeChainIterator::operator->):
2376 (JSC::ScopeChain::top):
2377 * runtime/ScopeChainMark.h:
2378 (JSC::ScopeChain::markAggregate):
2379 * runtime/SmallStrings.cpp:
2381 (JSC::SmallStrings::markChildren):
2382 * runtime/SmallStrings.h:
2383 (JSC::SmallStrings::emptyString):
2384 (JSC::SmallStrings::singleCharacterString):
2385 (JSC::SmallStrings::singleCharacterStrings):
2386 * runtime/StringConstructor.cpp:
2387 (JSC::StringConstructor::StringConstructor):
2388 * runtime/StringObject.cpp:
2389 (JSC::StringObject::StringObject):
2390 * runtime/StringObject.h:
2391 * runtime/StringPrototype.cpp:
2392 (JSC::StringPrototype::StringPrototype):
2393 * runtime/Structure.cpp:
2394 (JSC::Structure::Structure):
2395 (JSC::Structure::addPropertyTransition):
2396 (JSC::Structure::toDictionaryTransition):
2397 (JSC::Structure::flattenDictionaryStructure):
2398 * runtime/Structure.h:
2399 (JSC::Structure::storedPrototype):
2400 (JSC::Structure::storedPrototypeSlot):
2401 * runtime/WeakGCMap.h:
2402 (JSC::WeakGCMap::uncheckedGet):
2403 (JSC::WeakGCMap::uncheckedGetSlot):
2407 (JSC::::uncheckedRemove):
2408 * runtime/WriteBarrier.h: Added.
2409 (JSC::DeprecatedPtr::DeprecatedPtr):
2410 (JSC::DeprecatedPtr::get):
2411 (JSC::DeprecatedPtr::operator*):
2412 (JSC::DeprecatedPtr::operator->):
2413 (JSC::DeprecatedPtr::slot):
2414 (JSC::DeprecatedPtr::operator UnspecifiedBoolType*):
2415 (JSC::DeprecatedPtr::operator!):
2416 (JSC::WriteBarrierBase::set):
2417 (JSC::WriteBarrierBase::get):
2418 (JSC::WriteBarrierBase::operator*):
2419 (JSC::WriteBarrierBase::operator->):
2420 (JSC::WriteBarrierBase::clear):
2421 (JSC::WriteBarrierBase::slot):
2422 (JSC::WriteBarrierBase::operator UnspecifiedBoolType*):
2423 (JSC::WriteBarrierBase::operator!):
2424 (JSC::WriteBarrier::WriteBarrier):
2427 2011-01-31 Dan Winship <danw@gnome.org>
2429 Reviewed by Gustavo Noronha Silva.
2431 wss (websockets ssl) support for gtk via new gio TLS support
2432 https://bugs.webkit.org/show_bug.cgi?id=50344
2434 Add a GPollableOutputStream typedef for TLS WebSockets support
2436 * wtf/gobject/GTypedefs.h:
2438 2011-01-31 Gavin Barraclough <barraclough@apple.com>
2440 Reviewed by Geoff Garen.
2442 https://bugs.webkit.org/show_bug.cgi?id=53352
2443 Heavy external fragmentation in FixedVMPoolAllocator can lead to a CRASH().
2445 The FixedVMPoolAllocator currently uses a best fix policy -
2446 switch to first fit, this is less prone to external fragmentation.
2448 * jit/ExecutableAllocatorFixedVMPool.cpp:
2449 (JSC::AllocationTableSizeClass::AllocationTableSizeClass):
2450 (JSC::AllocationTableSizeClass::blockSize):
2451 (JSC::AllocationTableSizeClass::blockCount):
2452 (JSC::AllocationTableSizeClass::blockAlignment):
2453 (JSC::AllocationTableSizeClass::size):
2454 (JSC::AllocationTableLeaf::AllocationTableLeaf):
2455 (JSC::AllocationTableLeaf::~AllocationTableLeaf):
2456 (JSC::AllocationTableLeaf::allocate):
2457 (JSC::AllocationTableLeaf::free):
2458 (JSC::AllocationTableLeaf::isEmpty):
2459 (JSC::AllocationTableLeaf::isFull):
2460 (JSC::AllocationTableLeaf::size):
2461 (JSC::AllocationTableLeaf::classForSize):
2462 (JSC::AllocationTableLeaf::dump):
2463 (JSC::LazyAllocationTable::LazyAllocationTable):
2464 (JSC::LazyAllocationTable::~LazyAllocationTable):
2465 (JSC::LazyAllocationTable::allocate):
2466 (JSC::LazyAllocationTable::free):
2467 (JSC::LazyAllocationTable::isEmpty):
2468 (JSC::LazyAllocationTable::isFull):
2469 (JSC::LazyAllocationTable::size):
2470 (JSC::LazyAllocationTable::dump):
2471 (JSC::LazyAllocationTable::classForSize):
2472 (JSC::AllocationTableDirectory::AllocationTableDirectory):
2473 (JSC::AllocationTableDirectory::~AllocationTableDirectory):
2474 (JSC::AllocationTableDirectory::allocate):
2475 (JSC::AllocationTableDirectory::free):
2476 (JSC::AllocationTableDirectory::isEmpty):
2477 (JSC::AllocationTableDirectory::isFull):
2478 (JSC::AllocationTableDirectory::size):
2479 (JSC::AllocationTableDirectory::classForSize):
2480 (JSC::AllocationTableDirectory::dump):
2481 (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
2482 (JSC::FixedVMPoolAllocator::alloc):
2483 (JSC::FixedVMPoolAllocator::free):
2484 (JSC::FixedVMPoolAllocator::allocated):
2485 (JSC::FixedVMPoolAllocator::isValid):
2486 (JSC::FixedVMPoolAllocator::classForSize):
2487 (JSC::FixedVMPoolAllocator::offsetToPointer):
2488 (JSC::FixedVMPoolAllocator::pointerToOffset):
2489 (JSC::ExecutableAllocator::committedByteCount):
2490 (JSC::ExecutableAllocator::isValid):
2491 (JSC::ExecutableAllocator::underMemoryPressure):
2492 (JSC::ExecutablePool::systemAlloc):
2493 (JSC::ExecutablePool::systemRelease):
2494 * wtf/PageReservation.h:
2495 (WTF::PageReservation::PageReservation):
2496 (WTF::PageReservation::commit):
2497 (WTF::PageReservation::decommit):
2498 (WTF::PageReservation::committed):
2500 2011-01-31 Sheriff Bot <webkit.review.bot@gmail.com>
2502 Unreviewed, rolling out r76969.
2503 http://trac.webkit.org/changeset/76969
2504 https://bugs.webkit.org/show_bug.cgi?id=53418
2506 "It is causing crashes in GTK+ and Leopard bots" (Requested by
2507 alexg__ on #webkit).
2509 * runtime/WeakGCMap.h:
2511 2011-01-30 Csaba Osztrogonác <ossy@webkit.org>
2513 Unreviewed, rolling out r77098, r77099, r77100, r77109, and
2515 http://trac.webkit.org/changeset/77098
2516 http://trac.webkit.org/changeset/77099
2517 http://trac.webkit.org/changeset/77100
2518 http://trac.webkit.org/changeset/77109
2519 http://trac.webkit.org/changeset/77111
2520 https://bugs.webkit.org/show_bug.cgi?id=53219
2524 * API/JSCallbackObject.h:
2525 (JSC::JSCallbackObjectData::setPrivateProperty):
2526 (JSC::JSCallbackObjectData::JSPrivatePropertyMap::getPrivateProperty):
2527 (JSC::JSCallbackObjectData::JSPrivatePropertyMap::setPrivateProperty):
2528 (JSC::JSCallbackObjectData::JSPrivatePropertyMap::markChildren):
2529 (JSC::JSCallbackObject::setPrivateProperty):
2530 * API/JSCallbackObjectFunctions.h:
2532 (JSC::::staticFunctionGetter):
2533 * API/JSObjectRef.cpp:
2534 (JSObjectMakeConstructor):
2535 (JSObjectSetPrivateProperty):
2536 * API/JSWeakObjectMapRefInternal.h:
2537 * JavaScriptCore.exp:
2538 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2539 * JavaScriptCore.xcodeproj/project.pbxproj:
2540 * bytecode/CodeBlock.cpp:
2541 (JSC::CodeBlock::markAggregate):
2542 * bytecode/CodeBlock.h:
2543 (JSC::CodeBlock::globalObject):
2544 * bytecompiler/BytecodeGenerator.cpp:
2545 (JSC::BytecodeGenerator::BytecodeGenerator):
2546 (JSC::BytecodeGenerator::emitJumpIfNotFunctionCall):
2547 (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply):
2548 (JSC::BytecodeGenerator::findScopedProperty):
2549 * debugger/Debugger.cpp:
2550 (JSC::evaluateInGlobalCallFrame):
2551 * debugger/DebuggerActivation.cpp:
2552 (JSC::DebuggerActivation::DebuggerActivation):
2553 (JSC::DebuggerActivation::markChildren):
2554 * debugger/DebuggerActivation.h:
2555 * debugger/DebuggerCallFrame.cpp:
2556 (JSC::DebuggerCallFrame::evaluate):
2557 * interpreter/CallFrame.h:
2558 (JSC::ExecState::exception):
2559 * interpreter/Interpreter.cpp:
2560 (JSC::Interpreter::resolve):
2561 (JSC::Interpreter::resolveSkip):
2562 (JSC::Interpreter::resolveGlobal):
2563 (JSC::Interpreter::resolveGlobalDynamic):
2564 (JSC::Interpreter::resolveBaseAndProperty):
2565 (JSC::Interpreter::unwindCallFrame):
2566 (JSC::appendSourceToError):
2567 (JSC::Interpreter::execute):
2568 (JSC::Interpreter::tryCacheGetByID):
2569 (JSC::Interpreter::privateExecute):
2571 (JSC::JITThunks::tryCacheGetByID):
2572 (JSC::DEFINE_STUB_FUNCTION):
2574 (GlobalObject::GlobalObject):
2575 * runtime/ArgList.cpp:
2576 (JSC::MarkedArgumentBuffer::markLists):
2577 * runtime/Arguments.cpp:
2578 (JSC::Arguments::markChildren):
2579 (JSC::Arguments::getOwnPropertySlot):
2580 (JSC::Arguments::getOwnPropertyDescriptor):
2581 (JSC::Arguments::put):
2582 * runtime/Arguments.h:
2583 (JSC::Arguments::setActivation):
2584 (JSC::Arguments::Arguments):
2585 * runtime/ArrayConstructor.cpp:
2586 (JSC::ArrayConstructor::ArrayConstructor):
2587 (JSC::constructArrayWithSizeQuirk):
2588 * runtime/ArrayPrototype.cpp:
2589 (JSC::arrayProtoFuncSplice):
2590 * runtime/BatchedTransitionOptimizer.h:
2591 (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer):
2592 (JSC::BatchedTransitionOptimizer::~BatchedTransitionOptimizer):
2593 * runtime/BooleanConstructor.cpp:
2594 (JSC::BooleanConstructor::BooleanConstructor):
2595 (JSC::constructBoolean):
2596 (JSC::constructBooleanFromImmediateBoolean):
2597 * runtime/BooleanPrototype.cpp:
2598 (JSC::BooleanPrototype::BooleanPrototype):
2599 * runtime/ConservativeSet.cpp:
2600 (JSC::ConservativeSet::grow):
2601 * runtime/ConservativeSet.h:
2602 (JSC::ConservativeSet::~ConservativeSet):
2603 (JSC::ConservativeSet::mark):
2604 * runtime/DateConstructor.cpp:
2605 (JSC::DateConstructor::DateConstructor):
2606 * runtime/DateInstance.cpp:
2607 (JSC::DateInstance::DateInstance):
2608 * runtime/DatePrototype.cpp:
2609 (JSC::dateProtoFuncSetTime):
2610 (JSC::setNewValueFromTimeArgs):
2611 (JSC::setNewValueFromDateArgs):
2612 (JSC::dateProtoFuncSetYear):
2613 * runtime/ErrorConstructor.cpp:
2614 (JSC::ErrorConstructor::ErrorConstructor):
2615 * runtime/ErrorInstance.cpp:
2616 (JSC::ErrorInstance::ErrorInstance):
2617 * runtime/ErrorPrototype.cpp:
2618 (JSC::ErrorPrototype::ErrorPrototype):
2619 * runtime/FunctionConstructor.cpp:
2620 (JSC::FunctionConstructor::FunctionConstructor):
2621 * runtime/FunctionPrototype.cpp:
2622 (JSC::FunctionPrototype::FunctionPrototype):
2623 * runtime/GetterSetter.cpp:
2624 (JSC::GetterSetter::markChildren):
2625 * runtime/GetterSetter.h:
2626 (JSC::GetterSetter::GetterSetter):
2627 (JSC::GetterSetter::getter):
2628 (JSC::GetterSetter::setGetter):
2629 (JSC::GetterSetter::setter):
2630 (JSC::GetterSetter::setSetter):
2631 * runtime/GlobalEvalFunction.cpp:
2632 (JSC::GlobalEvalFunction::GlobalEvalFunction):
2633 (JSC::GlobalEvalFunction::markChildren):
2634 * runtime/GlobalEvalFunction.h:
2635 (JSC::GlobalEvalFunction::cachedGlobalObject):
2637 (JSC::Heap::markProtectedObjects):
2638 (JSC::Heap::markTempSortVectors):
2639 (JSC::Heap::markRoots):
2640 * runtime/InternalFunction.cpp:
2641 (JSC::InternalFunction::InternalFunction):
2642 * runtime/JSAPIValueWrapper.h:
2643 (JSC::JSAPIValueWrapper::value):
2644 (JSC::JSAPIValueWrapper::JSAPIValueWrapper):
2645 * runtime/JSActivation.cpp:
2646 (JSC::JSActivation::markChildren):
2647 (JSC::JSActivation::put):
2648 * runtime/JSArray.cpp:
2649 (JSC::JSArray::JSArray):
2650 (JSC::JSArray::getOwnPropertySlot):
2651 (JSC::JSArray::getOwnPropertyDescriptor):
2652 (JSC::JSArray::put):
2653 (JSC::JSArray::putSlowCase):
2654 (JSC::JSArray::deleteProperty):
2655 (JSC::JSArray::increaseVectorLength):
2656 (JSC::JSArray::setLength):
2657 (JSC::JSArray::pop):
2658 (JSC::JSArray::push):
2659 (JSC::JSArray::unshiftCount):
2660 (JSC::JSArray::sort):
2661 (JSC::JSArray::fillArgList):
2662 (JSC::JSArray::copyToRegisters):
2663 (JSC::JSArray::compactForSorting):
2664 * runtime/JSArray.h:
2665 (JSC::JSArray::getIndex):
2666 (JSC::JSArray::setIndex):
2667 (JSC::JSArray::uncheckedSetIndex):
2668 (JSC::JSArray::markChildrenDirect):
2669 * runtime/JSByteArray.cpp:
2670 (JSC::JSByteArray::JSByteArray):
2672 (JSC::JSCell::JSValue::toThisObject):
2673 (JSC::JSCell::MarkStack::append):
2674 * runtime/JSFunction.cpp:
2675 (JSC::JSFunction::JSFunction):
2676 (JSC::JSFunction::getOwnPropertySlot):
2677 * runtime/JSGlobalData.h:
2678 * runtime/JSGlobalObject.cpp:
2679 (JSC::markIfNeeded):
2680 (JSC::JSGlobalObject::reset):
2681 (JSC::JSGlobalObject::resetPrototype):
2682 (JSC::JSGlobalObject::markChildren):
2683 * runtime/JSGlobalObject.h:
2684 (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData):
2685 (JSC::JSGlobalObject::regExpConstructor):
2686 (JSC::JSGlobalObject::errorConstructor):
2687 (JSC::JSGlobalObject::evalErrorConstructor):
2688 (JSC::JSGlobalObject::rangeErrorConstructor):
2689 (JSC::JSGlobalObject::referenceErrorConstructor):
2690 (JSC::JSGlobalObject::syntaxErrorConstructor):
2691 (JSC::JSGlobalObject::typeErrorConstructor):
2692 (JSC::JSGlobalObject::URIErrorConstructor):
2693 (JSC::JSGlobalObject::evalFunction):
2694 (JSC::JSGlobalObject::objectPrototype):
2695 (JSC::JSGlobalObject::functionPrototype):
2696 (JSC::JSGlobalObject::arrayPrototype):
2697 (JSC::JSGlobalObject::booleanPrototype):
2698 (JSC::JSGlobalObject::stringPrototype):
2699 (JSC::JSGlobalObject::numberPrototype):
2700 (JSC::JSGlobalObject::datePrototype):
2701 (JSC::JSGlobalObject::regExpPrototype):
2702 (JSC::JSGlobalObject::methodCallDummy):
2703 (JSC::Structure::prototypeForLookup):
2704 (JSC::constructArray):
2705 * runtime/JSONObject.cpp:
2706 (JSC::Stringifier::Holder::object):
2707 (JSC::Stringifier::markAggregate):
2708 (JSC::Stringifier::stringify):
2709 (JSC::Stringifier::Holder::appendNextProperty):
2710 (JSC::Walker::callReviver):
2711 (JSC::Walker::walk):
2712 * runtime/JSObject.cpp:
2713 (JSC::JSObject::defineGetter):
2714 (JSC::JSObject::defineSetter):
2715 (JSC::JSObject::removeDirect):
2716 (JSC::JSObject::putDirectFunction):
2717 (JSC::JSObject::putDirectFunctionWithoutTransition):
2718 (JSC::putDescriptor):
2719 (JSC::JSObject::defineOwnProperty):
2720 * runtime/JSObject.h:
2721 (JSC::JSObject::getDirectOffset):
2722 (JSC::JSObject::putDirectOffset):
2723 (JSC::JSObject::flattenDictionaryObject):
2724 (JSC::JSObject::putDirectInternal):
2725 (JSC::JSObject::putDirect):
2726 (JSC::JSObject::putDirectFunction):
2727 (JSC::JSObject::putDirectWithoutTransition):
2728 (JSC::JSObject::putDirectFunctionWithoutTransition):
2729 (JSC::JSValue::putDirect):
2730 (JSC::JSObject::allocatePropertyStorageInline):
2731 (JSC::JSObject::markChildrenDirect):
2732 * runtime/JSPropertyNameIterator.cpp:
2733 (JSC::JSPropertyNameIterator::JSPropertyNameIterator):
2734 (JSC::JSPropertyNameIterator::get):
2735 * runtime/JSPropertyNameIterator.h:
2736 * runtime/JSStaticScopeObject.cpp:
2737 (JSC::JSStaticScopeObject::markChildren):
2738 * runtime/JSString.cpp:
2739 (JSC::StringObject::create):
2740 * runtime/JSValue.h:
2741 * runtime/JSWrapperObject.cpp:
2742 (JSC::JSWrapperObject::markChildren):
2743 * runtime/JSWrapperObject.h:
2744 (JSC::JSWrapperObject::internalValue):
2745 (JSC::JSWrapperObject::setInternalValue):
2746 * runtime/LiteralParser.cpp:
2747 (JSC::LiteralParser::parse):
2748 * runtime/Lookup.cpp:
2749 (JSC::setUpStaticFunctionSlot):
2752 * runtime/MarkStack.h:
2753 (JSC::MarkStack::appendValues):
2754 * runtime/MathObject.cpp:
2755 (JSC::MathObject::MathObject):
2756 * runtime/NativeErrorConstructor.cpp:
2757 (JSC::NativeErrorConstructor::NativeErrorConstructor):
2758 * runtime/NativeErrorPrototype.cpp:
2759 (JSC::NativeErrorPrototype::NativeErrorPrototype):
2760 * runtime/NumberConstructor.cpp:
2761 (JSC::NumberConstructor::NumberConstructor):
2762 (JSC::constructWithNumberConstructor):
2763 * runtime/NumberObject.cpp:
2764 (JSC::constructNumber):
2765 * runtime/NumberPrototype.cpp:
2766 (JSC::NumberPrototype::NumberPrototype):
2767 * runtime/ObjectConstructor.cpp:
2768 (JSC::ObjectConstructor::ObjectConstructor):
2769 (JSC::objectConstructorGetOwnPropertyDescriptor):
2770 * runtime/Operations.h:
2771 (JSC::normalizePrototypeChain):
2773 * runtime/PrototypeFunction.cpp:
2774 (JSC::PrototypeFunction::PrototypeFunction):
2775 * runtime/PutPropertySlot.h:
2776 (JSC::PutPropertySlot::setExistingProperty):
2777 (JSC::PutPropertySlot::setNewProperty):
2778 (JSC::PutPropertySlot::base):
2779 * runtime/RegExpConstructor.cpp:
2780 (JSC::RegExpConstructor::RegExpConstructor):
2781 * runtime/ScopeChain.cpp:
2782 (JSC::ScopeChainNode::print):
2783 * runtime/ScopeChain.h:
2784 (JSC::ScopeChainNode::~ScopeChainNode):
2785 (JSC::ScopeChainIterator::operator*):
2786 (JSC::ScopeChainIterator::operator->):
2787 (JSC::ScopeChain::top):
2788 * runtime/ScopeChainMark.h:
2789 (JSC::ScopeChain::markAggregate):
2790 * runtime/SmallStrings.cpp:
2792 (JSC::SmallStrings::markChildren):
2793 * runtime/SmallStrings.h:
2794 (JSC::SmallStrings::emptyString):
2795 (JSC::SmallStrings::singleCharacterString):
2796 (JSC::SmallStrings::singleCharacterStrings):
2797 * runtime/StringConstructor.cpp:
2798 (JSC::StringConstructor::StringConstructor):
2799 * runtime/StringObject.cpp:
2800 (JSC::StringObject::StringObject):
2801 * runtime/StringObject.h:
2802 * runtime/StringPrototype.cpp:
2803 (JSC::StringPrototype::StringPrototype):
2804 * runtime/Structure.cpp:
2805 (JSC::Structure::Structure):
2806 (JSC::Structure::addPropertyTransition):
2807 (JSC::Structure::toDictionaryTransition):
2808 (JSC::Structure::flattenDictionaryStructure):
2809 * runtime/Structure.h:
2810 (JSC::Structure::storedPrototype):
2811 * runtime/WeakGCMap.h:
2812 (JSC::WeakGCMap::uncheckedGet):
2813 (JSC::WeakGCMap::isValid):
2817 (JSC::::uncheckedRemove):
2818 * runtime/WriteBarrier.h: Removed.
2820 2011-01-30 Simon Fraser <simon.fraser@apple.com>
2822 Build fix the build fix. I assume Oliver meant m_cell, not m_value.
2824 * runtime/WriteBarrier.h:
2825 (JSC::WriteBarrierBase::clear):
2827 2011-01-30 Oliver Hunt <oliver@apple.com>
2831 * runtime/WriteBarrier.h:
2832 (JSC::WriteBarrierBase::clear):
2834 2011-01-30 Oliver Hunt <oliver@apple.com>
2836 Convert markstack to a slot visitor API
2837 https://bugs.webkit.org/show_bug.cgi?id=53219
2839 rolling r77006 and r77020 back in.
2841 * API/JSCallbackObject.h:
2842 (JSC::JSCallbackObjectData::setPrivateProperty):
2843 (JSC::JSCallbackObjectData::JSPrivatePropertyMap::getPrivateProperty):
2844 (JSC::JSCallbackObjectData::JSPrivatePropertyMap::setPrivateProperty):
2845 (JSC::JSCallbackObjectData::JSPrivatePropertyMap::markChildren):
2846 (JSC::JSCallbackObject::setPrivateProperty):
2847 * API/JSCallbackObjectFunctions.h:
2849 (JSC::::staticFunctionGetter):
2850 * API/JSObjectRef.cpp:
2851 (JSObjectMakeConstructor):
2852 (JSObjectSetPrivateProperty):
2853 * API/JSWeakObjectMapRefInternal.h:
2854 * JavaScriptCore.exp:
2855 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2856 * JavaScriptCore.xcodeproj/project.pbxproj:
2857 * bytecode/CodeBlock.cpp:
2858 (JSC::CodeBlock::markAggregate):
2859 * bytecode/CodeBlock.h:
2860 (JSC::CodeBlock::globalObject):
2861 * bytecompiler/BytecodeGenerator.cpp:
2862 (JSC::BytecodeGenerator::BytecodeGenerator):
2863 (JSC::BytecodeGenerator::emitJumpIfNotFunctionCall):
2864 (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply):
2865 (JSC::BytecodeGenerator::findScopedProperty):
2866 * debugger/Debugger.cpp:
2867 (JSC::evaluateInGlobalCallFrame):
2868 * debugger/DebuggerActivation.cpp:
2869 (JSC::DebuggerActivation::DebuggerActivation):
2870 (JSC::DebuggerActivation::markChildren):
2871 * debugger/DebuggerActivation.h:
2872 * debugger/DebuggerCallFrame.cpp:
2873 (JSC::DebuggerCallFrame::evaluate):
2874 * interpreter/CallFrame.h:
2875 (JSC::ExecState::exception):
2876 * interpreter/Interpreter.cpp:
2877 (JSC::Interpreter::resolve):
2878 (JSC::Interpreter::resolveSkip):
2879 (JSC::Interpreter::resolveGlobal):
2880 (JSC::Interpreter::resolveGlobalDynamic):
2881 (JSC::Interpreter::resolveBaseAndProperty):
2882 (JSC::Interpreter::unwindCallFrame):
2883 (JSC::appendSourceToError):
2884 (JSC::Interpreter::execute):
2885 (JSC::Interpreter::tryCacheGetByID):
2886 (JSC::Interpreter::privateExecute):
2888 (JSC::JITThunks::tryCacheGetByID):
2889 (JSC::DEFINE_STUB_FUNCTION):
2891 (GlobalObject::GlobalObject):
2892 * runtime/ArgList.cpp:
2893 (JSC::MarkedArgumentBuffer::markLists):
2894 * runtime/Arguments.cpp:
2895 (JSC::Arguments::markChildren):
2896 (JSC::Arguments::getOwnPropertySlot):
2897 (JSC::Arguments::getOwnPropertyDescriptor):
2898 (JSC::Arguments::put):
2899 * runtime/Arguments.h:
2900 (JSC::Arguments::setActivation):
2901 (JSC::Arguments::Arguments):
2902 * runtime/ArrayConstructor.cpp:
2903 (JSC::ArrayConstructor::ArrayConstructor):
2904 (JSC::constructArrayWithSizeQuirk):
2905 * runtime/ArrayPrototype.cpp:
2906 (JSC::arrayProtoFuncSplice):
2907 * runtime/BatchedTransitionOptimizer.h:
2908 (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer):
2909 (JSC::BatchedTransitionOptimizer::~BatchedTransitionOptimizer):
2910 * runtime/BooleanConstructor.cpp:
2911 (JSC::BooleanConstructor::BooleanConstructor):
2912 (JSC::constructBoolean):
2913 (JSC::constructBooleanFromImmediateBoolean):
2914 * runtime/BooleanPrototype.cpp:
2915 (JSC::BooleanPrototype::BooleanPrototype):
2916 * runtime/ConservativeSet.cpp:
2917 (JSC::ConservativeSet::grow):
2918 * runtime/ConservativeSet.h:
2919 (JSC::ConservativeSet::~ConservativeSet):
2920 (JSC::ConservativeSet::mark):
2921 * runtime/DateConstructor.cpp:
2922 (JSC::DateConstructor::DateConstructor):
2923 * runtime/DateInstance.cpp:
2924 (JSC::DateInstance::DateInstance):
2925 * runtime/DatePrototype.cpp:
2926 (JSC::dateProtoFuncSetTime):
2927 (JSC::setNewValueFromTimeArgs):
2928 (JSC::setNewValueFromDateArgs):
2929 (JSC::dateProtoFuncSetYear):
2930 * runtime/ErrorConstructor.cpp:
2931 (JSC::ErrorConstructor::ErrorConstructor):
2932 * runtime/ErrorInstance.cpp:
2933 (JSC::ErrorInstance::ErrorInstance):
2934 * runtime/ErrorPrototype.cpp:
2935 (JSC::ErrorPrototype::ErrorPrototype):
2936 * runtime/FunctionConstructor.cpp:
2937 (JSC::FunctionConstructor::FunctionConstructor):
2938 * runtime/FunctionPrototype.cpp:
2939 (JSC::FunctionPrototype::FunctionPrototype):
2940 * runtime/GetterSetter.cpp:
2941 (JSC::GetterSetter::markChildren):
2942 * runtime/GetterSetter.h:
2943 (JSC::GetterSetter::GetterSetter):
2944 (JSC::GetterSetter::getter):
2945 (JSC::GetterSetter::setGetter):
2946 (JSC::GetterSetter::setter):
2947 (JSC::GetterSetter::setSetter):
2948 * runtime/GlobalEvalFunction.cpp:
2949 (JSC::GlobalEvalFunction::GlobalEvalFunction):
2950 (JSC::GlobalEvalFunction::markChildren):
2951 * runtime/GlobalEvalFunction.h:
2952 (JSC::GlobalEvalFunction::cachedGlobalObject):
2954 (JSC::Heap::markProtectedObjects):
2955 (JSC::Heap::markTempSortVectors):
2956 (JSC::Heap::markRoots):
2957 * runtime/InternalFunction.cpp:
2958 (JSC::InternalFunction::InternalFunction):
2959 * runtime/JSAPIValueWrapper.h:
2960 (JSC::JSAPIValueWrapper::value):
2961 (JSC::JSAPIValueWrapper::JSAPIValueWrapper):
2962 * runtime/JSActivation.cpp:
2963 (JSC::JSActivation::markChildren):
2964 (JSC::JSActivation::put):
2965 * runtime/JSArray.cpp:
2966 (JSC::JSArray::JSArray):
2967 (JSC::JSArray::getOwnPropertySlot):
2968 (JSC::JSArray::getOwnPropertyDescriptor):
2969 (JSC::JSArray::put):
2970 (JSC::JSArray::putSlowCase):
2971 (JSC::JSArray::deleteProperty):
2972 (JSC::JSArray::increaseVectorLength):
2973 (JSC::JSArray::setLength):
2974 (JSC::JSArray::pop):
2975 (JSC::JSArray::push):
2976 (JSC::JSArray::unshiftCount):
2977 (JSC::JSArray::sort):
2978 (JSC::JSArray::fillArgList):
2979 (JSC::JSArray::copyToRegisters):
2980 (JSC::JSArray::compactForSorting):
2981 * runtime/JSArray.h:
2982 (JSC::JSArray::getIndex):
2983 (JSC::JSArray::setIndex):
2984 (JSC::JSArray::uncheckedSetIndex):
2985 (JSC::JSArray::markChildrenDirect):
2986 * runtime/JSByteArray.cpp:
2987 (JSC::JSByteArray::JSByteArray):
2989 (JSC::JSCell::MarkStack::append):
2990 (JSC::JSCell::MarkStack::internalAppend):
2991 (JSC::JSCell::MarkStack::deprecatedAppend):
2992 * runtime/JSFunction.cpp:
2993 (JSC::JSFunction::JSFunction):
2994 (JSC::JSFunction::getOwnPropertySlot):
2995 * runtime/JSGlobalData.h:
2996 * runtime/JSGlobalObject.cpp:
2997 (JSC::markIfNeeded):
2998 (JSC::JSGlobalObject::reset):
2999 (JSC::JSGlobalObject::resetPrototype):
3000 (JSC::JSGlobalObject::markChildren):
3001 * runtime/JSGlobalObject.h:
3002 (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData):
3003 (JSC::JSGlobalObject::regExpConstructor):
3004 (JSC::JSGlobalObject::errorConstructor):
3005 (JSC::JSGlobalObject::evalErrorConstructor):
3006 (JSC::JSGlobalObject::rangeErrorConstructor):
3007 (JSC::JSGlobalObject::referenceErrorConstructor):
3008 (JSC::JSGlobalObject::syntaxErrorConstructor):
3009 (JSC::JSGlobalObject::typeErrorConstructor):
3010 (JSC::JSGlobalObject::URIErrorConstructor):
3011 (JSC::JSGlobalObject::evalFunction):
3012 (JSC::JSGlobalObject::objectPrototype):
3013 (JSC::JSGlobalObject::functionPrototype):
3014 (JSC::JSGlobalObject::arrayPrototype):
3015 (JSC::JSGlobalObject::booleanPrototype):
3016 (JSC::JSGlobalObject::stringPrototype):
3017 (JSC::JSGlobalObject::numberPrototype):
3018 (JSC::JSGlobalObject::datePrototype):
3019 (JSC::JSGlobalObject::regExpPrototype):
3020 (JSC::JSGlobalObject::methodCallDummy):
3021 (JSC::Structure::prototypeForLookup):
3022 (JSC::constructArray):
3023 * runtime/JSONObject.cpp:
3024 (JSC::Stringifier::Holder::object):
3025 (JSC::Stringifier::Holder::objectSlot):
3026 (JSC::Stringifier::markAggregate):
3027 (JSC::Stringifier::stringify):
3028 (JSC::Stringifier::Holder::appendNextProperty):
3029 (JSC::Walker::callReviver):
3030 (JSC::Walker::walk):
3031 * runtime/JSObject.cpp:
3032 (JSC::JSObject::defineGetter):
3033 (JSC::JSObject::defineSetter):
3034 (JSC::JSObject::removeDirect):
3035 (JSC::JSObject::putDirectFunction):
3036 (JSC::JSObject::putDirectFunctionWithoutTransition):
3037 (JSC::putDescriptor):
3038 (JSC::JSObject::defineOwnProperty):
3039 * runtime/JSObject.h:
3040 (JSC::JSObject::getDirectOffset):
3041 (JSC::JSObject::putDirectOffset):
3042 (JSC::JSObject::putUndefinedAtDirectOffset):
3043 (JSC::JSObject::flattenDictionaryObject):
3044 (JSC::JSObject::putDirectInternal):
3045 (JSC::JSObject::putDirect):
3046 (JSC::JSObject::putDirectFunction):
3047 (JSC::JSObject::putDirectWithoutTransition):
3048 (JSC::JSObject::putDirectFunctionWithoutTransition):
3049 (JSC::JSValue::putDirect):
3050 (JSC::JSObject::allocatePropertyStorageInline):
3051 (JSC::JSObject::markChildrenDirect):
3052 * runtime/JSPropertyNameIterator.cpp:
3053 (JSC::JSPropertyNameIterator::JSPropertyNameIterator):
3054 (JSC::JSPropertyNameIterator::get):
3055 * runtime/JSPropertyNameIterator.h:
3056 * runtime/JSStaticScopeObject.cpp:
3057 (JSC::JSStaticScopeObject::markChildren):
3058 * runtime/JSString.cpp:
3059 (JSC::StringObject::create):
3060 * runtime/JSValue.h:
3061 * runtime/JSWrapperObject.cpp:
3062 (JSC::JSWrapperObject::markChildren):
3063 * runtime/JSWrapperObject.h:
3064 (JSC::JSWrapperObject::internalValue):
3065 (JSC::JSWrapperObject::setInternalValue):
3066 * runtime/LiteralParser.cpp:
3067 (JSC::LiteralParser::parse):
3068 * runtime/Lookup.cpp:
3069 (JSC::setUpStaticFunctionSlot):
3072 * runtime/MarkStack.h:
3073 (JSC::MarkStack::MarkStack):
3074 (JSC::MarkStack::deprecatedAppendValues):
3075 (JSC::MarkStack::appendValues):
3076 * runtime/MathObject.cpp:
3077 (JSC::MathObject::MathObject):
3078 * runtime/NativeErrorConstructor.cpp:
3079 (JSC::NativeErrorConstructor::NativeErrorConstructor):
3080 * runtime/NativeErrorPrototype.cpp:
3081 (JSC::NativeErrorPrototype::NativeErrorPrototype):
3082 * runtime/NumberConstructor.cpp:
3083 (JSC::NumberConstructor::NumberConstructor):
3084 (JSC::constructWithNumberConstructor):
3085 * runtime/NumberObject.cpp:
3086 (JSC::constructNumber):
3087 * runtime/NumberPrototype.cpp:
3088 (JSC::NumberPrototype::NumberPrototype):
3089 * runtime/ObjectConstructor.cpp:
3090 (JSC::ObjectConstructor::ObjectConstructor):
3091 (JSC::objectConstructorGetOwnPropertyDescriptor):
3092 * runtime/Operations.h:
3093 (JSC::normalizePrototypeChain):
3095 * runtime/PrototypeFunction.cpp:
3096 (JSC::PrototypeFunction::PrototypeFunction):
3097 * runtime/PutPropertySlot.h:
3098 (JSC::PutPropertySlot::setExistingProperty):
3099 (JSC::PutPropertySlot::setNewProperty):
3100 (JSC::PutPropertySlot::base):
3101 * runtime/RegExpConstructor.cpp:
3102 (JSC::RegExpConstructor::RegExpConstructor):
3103 * runtime/ScopeChain.cpp:
3104 (JSC::ScopeChainNode::print):
3105 * runtime/ScopeChain.h:
3106 (JSC::ScopeChainNode::~ScopeChainNode):
3107 (JSC::ScopeChainIterator::operator*):
3108 (JSC::ScopeChainIterator::operator->):
3109 (JSC::ScopeChain::top):
3110 * runtime/ScopeChainMark.h:
3111 (JSC::ScopeChain::markAggregate):
3112 * runtime/SmallStrings.cpp:
3114 (JSC::SmallStrings::markChildren):
3115 * runtime/SmallStrings.h:
3116 (JSC::SmallStrings::emptyString):
3117 (JSC::SmallStrings::singleCharacterString):
3118 (JSC::SmallStrings::singleCharacterStrings):
3119 * runtime/StringConstructor.cpp:
3120 (JSC::StringConstructor::StringConstructor):
3121 * runtime/StringObject.cpp:
3122 (JSC::StringObject::StringObject):
3123 * runtime/StringObject.h:
3124 * runtime/StringPrototype.cpp:
3125 (JSC::StringPrototype::StringPrototype):
3126 * runtime/Structure.cpp:
3127 (JSC::Structure::Structure):
3128 (JSC::Structure::addPropertyTransition):
3129 (JSC::Structure::toDictionaryTransition):
3130 (JSC::Structure::flattenDictionaryStructure):
3131 * runtime/Structure.h:
3132 (JSC::Structure::storedPrototype):
3133 (JSC::Structure::storedPrototypeSlot):
3134 * runtime/WeakGCMap.h:
3135 (JSC::WeakGCMap::uncheckedGet):
3136 (JSC::WeakGCMap::uncheckedGetSlot):
3137 (JSC::WeakGCMap::isValid):
3141 (JSC::::uncheckedRemove):
3142 * runtime/WriteBarrier.h: Added.
3143 (JSC::DeprecatedPtr::DeprecatedPtr):
3144 (JSC::DeprecatedPtr::get):
3145 (JSC::DeprecatedPtr::operator*):
3146 (JSC::DeprecatedPtr::operator->):
3147 (JSC::DeprecatedPtr::slot):
3148 (JSC::DeprecatedPtr::operator UnspecifiedBoolType*):
3149 (JSC::DeprecatedPtr::operator!):
3150 (JSC::WriteBarrierBase::set):
3151 (JSC::WriteBarrierBase::get):
3152 (JSC::WriteBarrierBase::operator*):
3153 (JSC::WriteBarrierBase::operator->):
3154 (JSC::WriteBarrierBase::slot):
3155 (JSC::WriteBarrierBase::operator UnspecifiedBoolType*):
3156 (JSC::WriteBarrierBase::operator!):
3157 (JSC::WriteBarrier::WriteBarrier):
3160 2011-01-30 Geoffrey Garen <ggaren@apple.com>
3162 Reviewed by Oliver Hunt.
3164 Filter all Heap collection through a common reset function, in
3165 preparation for adding features triggered by collection.
3166 https://bugs.webkit.org/show_bug.cgi?id=53396
3168 SunSpider reports no change.
3171 (JSC::Heap::reportExtraMemoryCostSlowCase): When we're over the extraCost
3172 limit, just call collectAllGarbage() instead of rolling our own special
3173 way of resetting the heap. In theory, this may be slower in some cases,
3174 but it also fixes cases of pathological heap growth that we've seen,
3175 where the only objects being allocated are temporary and huge
3176 (<rdar://problem/8885843>).
3178 (JSC::Heap::allocate):
3179 (JSC::Heap::collectAllGarbage): Use the shared reset function.
3182 * runtime/Heap.h: Carved a new shared reset function out of the old
3185 2011-01-30 Sheriff Bot <webkit.review.bot@gmail.com>
3187 Unreviewed, rolling out r77025.
3188 http://trac.webkit.org/changeset/77025
3189 https://bugs.webkit.org/show_bug.cgi?id=53401
3191 It made js1_5/Regress/regress-159334.js fail on 64 bit Linux
3192 (Requested by Ossy on #webkit).
3194 * jit/ExecutableAllocatorFixedVMPool.cpp:
3195 (JSC::FreeListEntry::FreeListEntry):
3196 (JSC::AVLTreeAbstractorForFreeList::get_less):
3197 (JSC::AVLTreeAbstractorForFreeList::set_less):
3198 (JSC::AVLTreeAbstractorForFreeList::get_greater):
3199 (JSC::AVLTreeAbstractorForFreeList::set_greater):
3200 (JSC::AVLTreeAbstractorForFreeList::get_balance_factor):
3201 (JSC::AVLTreeAbstractorForFreeList::set_balance_factor):
3202 (JSC::AVLTreeAbstractorForFreeList::null):
3203 (JSC::AVLTreeAbstractorForFreeList::compare_key_key):
3204 (JSC::AVLTreeAbstractorForFreeList::compare_key_node):
3205 (JSC::AVLTreeAbstractorForFreeList::compare_node_node):
3206 (JSC::reverseSortFreeListEntriesByPointer):
3207 (JSC::reverseSortCommonSizedAllocations):
3208 (JSC::FixedVMPoolAllocator::release):
3209 (JSC::FixedVMPoolAllocator::reuse):
3210 (JSC::FixedVMPoolAllocator::addToFreeList):
3211 (JSC::FixedVMPoolAllocator::coalesceFreeSpace):
3212 (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
3213 (JSC::FixedVMPoolAllocator::alloc):
3214 (JSC::FixedVMPoolAllocator::free):
3215 (JSC::FixedVMPoolAllocator::isValid):
3216 (JSC::FixedVMPoolAllocator::allocInternal):
3217 (JSC::FixedVMPoolAllocator::isWithinVMPool):
3218 (JSC::FixedVMPoolAllocator::addToCommittedByteCount):
3219 (JSC::ExecutableAllocator::committedByteCount):
3220 (JSC::maybeModifyVMPoolSize):
3221 (JSC::ExecutableAllocator::isValid):
3222 (JSC::ExecutableAllocator::underMemoryPressure):
3223 (JSC::ExecutablePool::systemAlloc):
3224 (JSC::ExecutablePool::systemRelease):
3225 * wtf/PageReservation.h:
3226 (WTF::PageReservation::PageReservation):
3227 (WTF::PageReservation::commit):
3228 (WTF::PageReservation::decommit):
3230 2011-01-30 Leo Yang <leo.yang@torchmobile.com.cn>
3232 Reviewed by Daniel Bates.
3234 Code style issue in JavaScriptCore/wtf/CurrentTime.h
3235 https://bugs.webkit.org/show_bug.cgi?id=53394
3237 According to rule #3 at http://webkit.org/coding/coding-style.html,
3238 This patch fix style issue in CurrentTime.h.
3240 No functionality change, no new tests.
3242 * wtf/CurrentTime.h:
3243 (WTF::currentTimeMS):
3244 (WTF::getLocalTime):
3246 2011-01-30 Benjamin Poulain <ikipou@gmail.com>
3248 Reviewed by Kenneth Rohde Christiansen.
3250 [Qt] JavaScriptCore does not link on Mac if building WebKit 2
3251 https://bugs.webkit.org/show_bug.cgi?id=53377
3253 The option "-whole-archive" is not availabe with the libtool of Mac OS X,
3254 instead, we can use "-all_load" on Mac.
3256 * JavaScriptCore.pri:
3258 2011-01-29 Geoffrey Garen <ggaren@apple.com>
3260 Sorry Leopard bot -- I committed a change by accident.
3262 * JavaScriptCore.exp: You may have your symbols back now.
3264 2011-01-29 Geoffrey Garen <ggaren@apple.com>
3266 Reviewed by Cameron Zwarich.
3268 Simplified Heap iteration
3269 https://bugs.webkit.org/show_bug.cgi?id=53393
3271 * runtime/CollectorHeapIterator.h:
3272 (JSC::CollectorHeapIterator::isValid):
3273 (JSC::CollectorHeapIterator::isLive):
3274 (JSC::CollectorHeapIterator::advance): Removed "max" argument to
3275 advance because it's a constant.
3276 (JSC::LiveObjectIterator::LiveObjectIterator):
3277 (JSC::LiveObjectIterator::operator++):
3278 (JSC::DeadObjectIterator::DeadObjectIterator):
3279 (JSC::DeadObjectIterator::operator++):
3280 (JSC::ObjectIterator::ObjectIterator):
3281 (JSC::ObjectIterator::operator++): Factored out common checks into
3282 two helper functions -- isValid() for "Am I past the end?" and isLive()
3283 for "Is the cell I'm pointing to live?".
3285 * runtime/MarkedSpace.cpp:
3286 (JSC::MarkedSpace::freeBlock):
3287 (JSC::MarkedSpace::sweep): Always sweep from the beginning of the heap
3288 to the end, to avoid making sweep subtly reliant on internal Heap state.
3289 (JSC::MarkedSpace::primaryHeapBegin):
3290 (JSC::MarkedSpace::primaryHeapEnd): Always be explicit about where
3293 2011-01-29 Geoffrey Garen <ggaren@apple.com>
3295 Reviewed by Cameron Zwarich.
3297 Simplified heap destruction
3298 https://bugs.webkit.org/show_bug.cgi?id=53392
3300 * JavaScriptCore.exp:
3302 (JSC::Heap::destroy):
3304 * runtime/MarkedSpace.cpp:
3305 (JSC::MarkedSpace::destroy):
3306 * runtime/MarkedSpace.h: Don't go out of our way to destroy GC-protected
3307 cells last -- the difficult contortions required to do so just don't seem
3308 justified. We make no guarantees about GC protection after the client
3309 throws away JSGlobalData, and it doesn't seem like any meaningful
3310 guarantee is even possible.
3312 2011-01-29 Geoffrey Garen <ggaren@apple.com>
3314 Reviewed by Maciej Stachowiak.
3316 Switched heap to use the Bitmap class and removed CollectorBitmap
3317 https://bugs.webkit.org/show_bug.cgi?id=53391
3319 SunSpider says 1.005x as fast. Seems like a fluke.
3321 * runtime/MarkedSpace.cpp:
3322 (JSC::MarkedSpace::allocate): Updated for rename and returning a value
3323 rather than taking a value by reference.
3325 * runtime/MarkedSpace.h: Code reuse is good.
3328 (WTF::::testAndSet): Added, since this is the one thing Bitmap was missing
3329 which CollectorBitmap had. (Renamed from the less conventional "getset".)
3331 (WTF::::nextPossiblyUnset): Renamed and changed to return a value for
3332 clarity. It's all the same with inlining.
3334 2011-01-28 Geoffrey Garen <ggaren@apple.com>
3336 Reviewed by Maciej Stachowiak.
3338 Some more Heap cleanup.
3339 https://bugs.webkit.org/show_bug.cgi?id=53357
3341 * JavaScriptCore.exp:
3342 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Updated exported symbols.
3345 (JSC::Heap::reportExtraMemoryCostSlowCase): Renamed recordExtraCost to
3346 reportExtraMemoryCostSlowCase to match our naming conventions.
3348 (JSC::Heap::capacity): Renamed size to capacity because this function
3349 returns the capacity of the heap, including unused portions.
3352 (JSC::Heap::globalData):
3353 (JSC::Heap::markedSpace):
3354 (JSC::Heap::machineStackMarker):
3355 (JSC::Heap::reportExtraMemoryCost): Moved statics to the top of the file.
3356 Moved ctor and dtor to the beginning of the class definition. Grouped
3357 functions by purpose.
3359 * runtime/MarkedSpace.cpp:
3360 (JSC::MarkedSpace::capacity): Renamed size to capacity because this
3361 function returns the capacity of the heap, including unused portions.
3363 * runtime/MarkedSpace.h: Removed statistics and the Statistics class because
3364 the same information can be gotten just by calling size() and capacity().
3366 * runtime/MemoryStatistics.cpp:
3367 * runtime/MemoryStatistics.h: Ditto.
3369 2011-01-29 Daniel Bates <dbates@rim.com>
3371 Reviewed by Eric Seidel.
3373 Move wince/mt19937ar.c to ThirdParty and make it a policy choice
3374 https://bugs.webkit.org/show_bug.cgi?id=53253
3376 Make inclusion of MT19937 a policy decision.
3378 Currently, we hardcoded to use MT19937 when building for
3379 Windows CE. Instead, we should make this a policy decision
3380 with the Windows CE port using this by default.
3382 * JavaScriptCore.pri: Append Source/ThirdParty to the end
3383 of the list include directories.
3384 * wtf/CMakeLists.txt: Ditto.
3385 * wtf/Platform.h: Defined WTF_USE_MERSENNE_TWISTER_19937 when
3386 building for Windows CE.
3387 * wtf/RandomNumber.cpp:
3388 (WTF::randomNumber): Substituted USE(MERSENNE_TWISTER_19937) for OS(WINCE).
3390 2011-01-29 Cameron Zwarich <zwarich@apple.com>
3392 Reviewed by David Kilzer.
3394 Bug 53374 - Remove uses of unsafe string functions in debugging code
3395 https://bugs.webkit.org/show_bug.cgi?id=53374
3397 * runtime/RegExp.cpp:
3398 (JSC::RegExp::printTraceData):
3400 2011-01-29 Cameron Zwarich <zwarich@apple.com>
3402 Reviewed by Oliver Hunt.
3404 JavaScriptCoreUseJIT environment variable broken
3405 https://bugs.webkit.org/show_bug.cgi?id=53372
3407 * runtime/JSGlobalData.cpp:
3408 (JSC::JSGlobalData::JSGlobalData): Check the actual value in the string returned
3409 by getenv() rather than just doing a NULL check on the return value.
3411 2011-01-29 Patrick Gansterer <paroga@webkit.org>
3413 Reviewed by David Kilzer.
3415 Move CharacterNames.h into WTF directory
3416 https://bugs.webkit.org/show_bug.cgi?id=49618
3419 * JavaScriptCore.gypi:
3420 * JavaScriptCore.vcproj/WTF/WTF.vcproj:
3421 * JavaScriptCore.xcodeproj/project.pbxproj:
3422 * wtf/CMakeLists.txt:
3423 * wtf/unicode/CharacterNames.h: Renamed from WebCore/platform/text/CharacterNames.h.
3424 * wtf/unicode/UTF8.cpp:
3426 2011-01-28 Simon Fraser <simon.fraser@apple.com>
3428 Reviewed by Gavin Barraclough.
3430 Add various clampToInt() methods to MathExtras.h
3431 https://bugs.webkit.org/show_bug.cgi?id=52910
3433 Add functions for clamping doubles and floats to valid int
3434 ranges, for signed and positive integers.
3438 (clampToPositiveInteger):
3440 2011-01-28 Sheriff Bot <webkit.review.bot@gmail.com>
3442 Unreviewed, rolling out r77006 and r77020.
3443 http://trac.webkit.org/changeset/77006
3444 http://trac.webkit.org/changeset/77020
3445 https://bugs.webkit.org/show_bug.cgi?id=53360
3447 "Broke Windows tests" (Requested by rniwa on #webkit).
3449 * API/JSCallbackObject.h:
3450 (JSC::JSCallbackObjectData::setPrivateProperty):
3451 (JSC::JSCallbackObjectData::JSPrivatePropertyMap::getPrivateProperty):
3452 (JSC::JSCallbackObjectData::JSPrivatePropertyMap::setPrivateProperty):
3453 (JSC::JSCallbackObjectData::JSPrivatePropertyMap::markChildren):
3454 (JSC::JSCallbackObject::setPrivateProperty):
3455 * API/JSCallbackObjectFunctions.h:
3457 (JSC::::staticFunctionGetter):
3458 * API/JSObjectRef.cpp:
3459 (JSObjectMakeConstructor):
3460 (JSObjectSetPrivateProperty):
3461 * API/JSWeakObjectMapRefInternal.h:
3462 * JavaScriptCore.exp:
3463 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3464 * JavaScriptCore.xcodeproj/project.pbxproj:
3465 * bytecode/CodeBlock.cpp:
3466 (JSC::CodeBlock::markAggregate):
3467 * bytecode/CodeBlock.h:
3468 (JSC::CodeBlock::globalObject):
3469 * bytecompiler/BytecodeGenerator.cpp:
3470 (JSC::BytecodeGenerator::BytecodeGenerator):
3471 (JSC::BytecodeGenerator::emitJumpIfNotFunctionCall):
3472 (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply):
3473 (JSC::BytecodeGenerator::findScopedProperty):
3474 * debugger/Debugger.cpp:
3475 (JSC::evaluateInGlobalCallFrame):
3476 * debugger/DebuggerActivation.cpp:
3477 (JSC::DebuggerActivation::DebuggerActivation):
3478 (JSC::DebuggerActivation::markChildren):
3479 * debugger/DebuggerActivation.h:
3480 * debugger/DebuggerCallFrame.cpp:
3481 (JSC::DebuggerCallFrame::evaluate):
3482 * interpreter/CallFrame.h:
3483 (JSC::ExecState::exception):
3484 * interpreter/Interpreter.cpp:
3485 (JSC::Interpreter::resolve):
3486 (JSC::Interpreter::resolveSkip):
3487 (JSC::Interpreter::resolveGlobal):
3488 (JSC::Interpreter::resolveGlobalDynamic):
3489 (JSC::Interpreter::resolveBaseAndProperty):
3490 (JSC::Interpreter::unwindCallFrame):
3491 (JSC::appendSourceToError):
3492 (JSC::Interpreter::execute):
3493 (JSC::Interpreter::tryCacheGetByID):
3494 (JSC::Interpreter::privateExecute):
3496 (JSC::JITThunks::tryCacheGetByID):
3497 (JSC::DEFINE_STUB_FUNCTION):
3499 (GlobalObject::GlobalObject):
3500 * runtime/ArgList.cpp:
3501 (JSC::MarkedArgumentBuffer::markLists):
3502 * runtime/Arguments.cpp:
3503 (JSC::Arguments::markChildren):
3504 (JSC::Arguments::getOwnPropertySlot):
3505 (JSC::Arguments::getOwnPropertyDescriptor):
3506 (JSC::Arguments::put):
3507 * runtime/Arguments.h:
3508 (JSC::Arguments::setActivation):
3509 (JSC::Arguments::Arguments):
3510 * runtime/ArrayConstructor.cpp:
3511 (JSC::ArrayConstructor::ArrayConstructor):
3512 (JSC::constructArrayWithSizeQuirk):
3513 * runtime/ArrayPrototype.cpp:
3514 (JSC::arrayProtoFuncSplice):
3515 * runtime/BatchedTransitionOptimizer.h:
3516 (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer):
3517 (JSC::BatchedTransitionOptimizer::~BatchedTransitionOptimizer):
3518 * runtime/BooleanConstructor.cpp:
3519 (JSC::BooleanConstructor::BooleanConstructor):
3520 (JSC::constructBoolean):
3521 (JSC::constructBooleanFromImmediateBoolean):
3522 * runtime/BooleanPrototype.cpp:
3523 (JSC::BooleanPrototype::BooleanPrototype):
3524 * runtime/ConservativeSet.cpp:
3525 (JSC::ConservativeSet::grow):
3526 * runtime/ConservativeSet.h:
3527 (JSC::ConservativeSet::~ConservativeSet):
3528 (JSC::ConservativeSet::mark):
3529 * runtime/DateConstructor.cpp:
3530 (JSC::DateConstructor::DateConstructor):
3531 * runtime/DateInstance.cpp:
3532 (JSC::DateInstance::DateInstance):
3533 * runtime/DatePrototype.cpp:
3534 (JSC::dateProtoFuncSetTime):
3535 (JSC::setNewValueFromTimeArgs):
3536 (JSC::setNewValueFromDateArgs):
3537 (JSC::dateProtoFuncSetYear):
3538 * runtime/ErrorConstructor.cpp:
3539 (JSC::ErrorConstructor::ErrorConstructor):
3540 * runtime/ErrorInstance.cpp:
3541 (JSC::ErrorInstance::ErrorInstance):
3542 * runtime/ErrorPrototype.cpp:
3543 (JSC::ErrorPrototype::ErrorPrototype):
3544 * runtime/FunctionConstructor.cpp:
3545 (JSC::FunctionConstructor::FunctionConstructor):
3546 * runtime/FunctionPrototype.cpp:
3547 (JSC::FunctionPrototype::FunctionPrototype):
3548 * runtime/GetterSetter.cpp:
3549 (JSC::GetterSetter::markChildren):
3550 * runtime/GetterSetter.h:
3551 (JSC::GetterSetter::GetterSetter):
3552 (JSC::GetterSetter::getter):
3553 (JSC::GetterSetter::setGetter):
3554 (JSC::GetterSetter::setter):
3555 (JSC::GetterSetter::setSetter):
3556 * runtime/GlobalEvalFunction.cpp:
3557 (JSC::GlobalEvalFunction::GlobalEvalFunction):
3558 (JSC::GlobalEvalFunction::markChildren):
3559 * runtime/GlobalEvalFunction.h:
3560 (JSC::GlobalEvalFunction::cachedGlobalObject):
3562 (JSC::Heap::markProtectedObjects):
3563 (JSC::Heap::markTempSortVectors):
3564 (JSC::Heap::markRoots):
3565 * runtime/InternalFunction.cpp:
3566 (JSC::InternalFunction::InternalFunction):
3567 * runtime/JSAPIValueWrapper.h:
3568 (JSC::JSAPIValueWrapper::value):
3569 (JSC::JSAPIValueWrapper::JSAPIValueWrapper):
3570 * runtime/JSActivation.cpp:
3571 (JSC::JSActivation::markChildren):
3572 (JSC::JSActivation::put):
3573 * runtime/JSArray.cpp:
3574 (JSC::JSArray::JSArray):
3575 (JSC::JSArray::getOwnPropertySlot):
3576 (JSC::JSArray::getOwnPropertyDescriptor):
3577 (JSC::JSArray::put):
3578 (JSC::JSArray::putSlowCase):
3579 (JSC::JSArray::deleteProperty):
3580 (JSC::JSArray::increaseVectorLength):
3581 (JSC::JSArray::setLength):
3582 (JSC::JSArray::pop):
3583 (JSC::JSArray::push):
3584 (JSC::JSArray::unshiftCount):
3585 (JSC::JSArray::sort):
3586 (JSC::JSArray::fillArgList):
3587 (JSC::JSArray::copyToRegisters):
3588 (JSC::JSArray::compactForSorting):
3589 * runtime/JSArray.h:
3590 (JSC::JSArray::getIndex):
3591 (JSC::JSArray::setIndex):
3592 (JSC::JSArray::uncheckedSetIndex):
3593 (JSC::JSArray::markChildrenDirect):
3594 * runtime/JSByteArray.cpp:
3595 (JSC::JSByteArray::JSByteArray):
3597 (JSC::JSCell::JSValue::toThisObject):
3598 (JSC::JSCell::MarkStack::append):
3599 * runtime/JSFunction.cpp:
3600 (JSC::JSFunction::JSFunction):
3601 (JSC::JSFunction::getOwnPropertySlot):
3602 * runtime/JSGlobalData.h:
3603 * runtime/JSGlobalObject.cpp:
3604 (JSC::markIfNeeded):
3605 (JSC::JSGlobalObject::reset):
3606 (JSC::JSGlobalObject::resetPrototype):
3607 (JSC::JSGlobalObject::markChildren):
3608 * runtime/JSGlobalObject.h:
3609 (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData):
3610 (JSC::JSGlobalObject::regExpConstructor):
3611 (JSC::JSGlobalObject::errorConstructor):
3612 (JSC::JSGlobalObject::evalErrorConstructor):
3613 (JSC::JSGlobalObject::rangeErrorConstructor):
3614 (JSC::JSGlobalObject::referenceErrorConstructor):
3615 (JSC::JSGlobalObject::syntaxErrorConstructor):
3616 (JSC::JSGlobalObject::typeErrorConstructor):
3617 (JSC::JSGlobalObject::URIErrorConstructor):
3618 (JSC::JSGlobalObject::evalFunction):
3619 (JSC::JSGlobalObject::objectPrototype):
3620 (JSC::JSGlobalObject::functionPrototype):
3621 (JSC::JSGlobalObject::arrayPrototype):
3622 (JSC::JSGlobalObject::booleanPrototype):
3623 (JSC::JSGlobalObject::stringPrototype):
3624 (JSC::JSGlobalObject::numberPrototype):
3625 (JSC::JSGlobalObject::datePrototype):
3626 (JSC::JSGlobalObject::regExpPrototype):
3627 (JSC::JSGlobalObject::methodCallDummy):
3628 (JSC::Structure::prototypeForLookup):
3629 (JSC::constructArray):
3630 * runtime/JSONObject.cpp:
3631 (JSC::Stringifier::Holder::object):
3632 (JSC::Stringifier::markAggregate):
3633 (JSC::Stringifier::stringify):
3634 (JSC::Stringifier::Holder::appendNextProperty):
3635 (JSC::Walker::callReviver):
3636 (JSC::Walker::walk):
3637 * runtime/JSObject.cpp:
3638 (JSC::JSObject::defineGetter):
3639 (JSC::JSObject::defineSetter):
3640 (JSC::JSObject::removeDirect):
3641 (JSC::JSObject::putDirectFunction):
3642 (JSC::JSObject::putDirectFunctionWithoutTransition):
3643 (JSC::putDescriptor):
3644 (JSC::JSObject::defineOwnProperty):
3645 * runtime/JSObject.h:
3646 (JSC::JSObject::getDirectOffset):
3647 (JSC::JSObject::putDirectOffset):
3648 (JSC::JSObject::flattenDictionaryObject):
3649 (JSC::JSObject::putDirectInternal):
3650 (JSC::JSObject::putDirect):
3651 (JSC::JSObject::putDirectFunction):
3652 (JSC::JSObject::putDirectWithoutTransition):
3653 (JSC::JSObject::putDirectFunctionWithoutTransition):
3654 (JSC::JSValue::putDirect):
3655 (JSC::JSObject::allocatePropertyStorageInline):
3656 (JSC::JSObject::markChildrenDirect):
3657 * runtime/JSPropertyNameIterator.cpp:
3658 (JSC::JSPropertyNameIterator::JSPropertyNameIterator):
3659 (JSC::JSPropertyNameIterator::get):
3660 * runtime/JSPropertyNameIterator.h:
3661 * runtime/JSStaticScopeObject.cpp:
3662 (JSC::JSStaticScopeObject::markChildren):
3663 * runtime/JSString.cpp:
3664 (JSC::StringObject::create):
3665 * runtime/JSValue.h:
3666 * runtime/JSWrapperObject.cpp:
3667 (JSC::JSWrapperObject::markChildren):
3668 * runtime/JSWrapperObject.h:
3669 (JSC::JSWrapperObject::internalValue):
3670 (JSC::JSWrapperObject::setInternalValue):
3671 * runtime/LiteralParser.cpp:
3672 (JSC::LiteralParser::parse):
3673 * runtime/Lookup.cpp:
3674 (JSC::setUpStaticFunctionSlot):
3677 * runtime/MarkStack.h:
3678 (JSC::MarkStack::appendValues):
3679 * runtime/MathObject.cpp:
3680 (JSC::MathObject::MathObject):
3681 * runtime/NativeErrorConstructor.cpp:
3682 (JSC::NativeErrorConstructor::NativeErrorConstructor):
3683 * runtime/NativeErrorPrototype.cpp:
3684 (JSC::NativeErrorPrototype::NativeErrorPrototype):
3685 * runtime/NumberConstructor.cpp:
3686 (JSC::NumberConstructor::NumberConstructor):
3687 (JSC::constructWithNumberConstructor):
3688 * runtime/NumberObject.cpp:
3689 (JSC::constructNumber):
3690 * runtime/NumberPrototype.cpp:
3691 (JSC::NumberPrototype::NumberPrototype):
3692 * runtime/ObjectConstructor.cpp:
3693 (JSC::ObjectConstructor::ObjectConstructor):
3694 (JSC::objectConstructorGetOwnPropertyDescriptor):
3695 * runtime/Operations.h:
3696 (JSC::normalizePrototypeChain):
3698 * runtime/PrototypeFunction.cpp:
3699 (JSC::PrototypeFunction::PrototypeFunction):
3700 * runtime/PutPropertySlot.h:
3701 (JSC::PutPropertySlot::setExistingProperty):
3702 (JSC::PutPropertySlot::setNewProperty):
3703 (JSC::PutPropertySlot::base):
3704 * runtime/RegExpConstructor.cpp:
3705 (JSC::RegExpConstructor::RegExpConstructor):
3706 * runtime/ScopeChain.cpp:
3707 (JSC::ScopeChainNode::print):
3708 * runtime/ScopeChain.h:
3709 (JSC::ScopeChainNode::~ScopeChainNode):
3710 (JSC::ScopeChainIterator::operator*):
3711 (JSC::ScopeChainIterator::operator->):
3712 (JSC::ScopeChain::top):
3713 * runtime/ScopeChainMark.h:
3714 (JSC::ScopeChain::markAggregate):
3715 * runtime/SmallStrings.cpp:
3717 (JSC::SmallStrings::markChildren):
3718 * runtime/SmallStrings.h:
3719 (JSC::SmallStrings::emptyString):
3720 (JSC::SmallStrings::singleCharacterString):
3721 (JSC::SmallStrings::singleCharacterStrings):
3722 * runtime/StringConstructor.cpp:
3723 (JSC::StringConstructor::StringConstructor):
3724 * runtime/StringObject.cpp:
3725 (JSC::StringObject::StringObject):
3726 * runtime/StringObject.h:
3727 * runtime/StringPrototype.cpp:
3728 (JSC::StringPrototype::StringPrototype):
3729 * runtime/Structure.cpp:
3730 (JSC::Structure::Structure):
3731 (JSC::Structure::addPropertyTransition):
3732 (JSC::Structure::toDictionaryTransition):
3733 (JSC::Structure::flattenDictionaryStructure):
3734 * runtime/Structure.h:
3735 (JSC::Structure::storedPrototype):
3736 * runtime/WeakGCMap.h:
3737 (JSC::WeakGCMap::uncheckedGet):
3738 (JSC::WeakGCMap::isValid):
3742 (JSC::::uncheckedRemove):
3743 * runtime/WriteBarrier.h: Removed.
3745 2011-01-28 Gavin Barraclough <barraclough@apple.com>
3747 Reviewed by Geoff Garen.
3749 https://bugs.webkit.org/show_bug.cgi?id=53352
3750 Heavy external fragmentation in FixedVMPoolAllocator can lead to a CRASH().
3752 The FixedVMPoolAllocator currently uses a best fix policy -
3753 switch to first fit, this is less prone to external fragmentation.
3755 * jit/ExecutableAllocatorFixedVMPool.cpp:
3756 (JSC::AllocationTableSizeClass::AllocationTableSizeClass):
3757 (JSC::AllocationTableSizeClass::blockSize):
3758 (JSC::AllocationTableSizeClass::blockCount):
3759 (JSC::AllocationTableSizeClass::blockAlignment):
3760 (JSC::AllocationTableSizeClass::size):
3761 (JSC::AllocationTableLeaf::AllocationTableLeaf):
3762 (JSC::AllocationTableLeaf::~AllocationTableLeaf):
3763 (JSC::AllocationTableLeaf::allocate):
3764 (JSC::AllocationTableLeaf::free):
3765 (JSC::AllocationTableLeaf::isEmpty):
3766 (JSC::AllocationTableLeaf::isFull):
3767 (JSC::AllocationTableLeaf::size):
3768 (JSC::AllocationTableLeaf::classForSize):
3769 (JSC::AllocationTableLeaf::dump):
3770 (JSC::LazyAllocationTable::LazyAllocationTable):
3771 (JSC::LazyAllocationTable::~LazyAllocationTable):
3772 (JSC::LazyAllocationTable::allocate):
3773 (JSC::LazyAllocationTable::free):
3774 (JSC::LazyAllocationTable::isEmpty):
3775 (JSC::LazyAllocationTable::isFull):
3776 (JSC::LazyAllocationTable::size):
3777 (JSC::LazyAllocationTable::dump):
3778 (JSC::LazyAllocationTable::classForSize):
3779 (JSC::AllocationTableDirectory::AllocationTableDirectory):
3780 (JSC::AllocationTableDirectory::~AllocationTableDirectory):
3781 (JSC::AllocationTableDirectory::allocate):
3782 (JSC::AllocationTableDirectory::free):
3783 (JSC::AllocationTableDirectory::isEmpty):
3784 (JSC::AllocationTableDirectory::isFull):
3785 (JSC::AllocationTableDirectory::size):
3786 (JSC::AllocationTableDirectory::classForSize):
3787 (JSC::AllocationTableDirectory::dump):
3788 (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
3789 (JSC::FixedVMPoolAllocator::alloc):
3790 (JSC::FixedVMPoolAllocator::free):
3791 (JSC::FixedVMPoolAllocator::allocated):
3792 (JSC::FixedVMPoolAllocator::isValid):
3793 (JSC::FixedVMPoolAllocator::classForSize):
3794 (JSC::FixedVMPoolAllocator::offsetToPointer):
3795 (JSC::FixedVMPoolAllocator::pointerToOffset):
3796 (JSC::ExecutableAllocator::committedByteCount):
3797 (JSC::ExecutableAllocator::isValid):
3798 (JSC::ExecutableAllocator::underMemoryPressure):
3799 (JSC::ExecutablePool::systemAlloc):
3800 (JSC::ExecutablePool::systemRelease):
3801 * wtf/PageReservation.h:
3802 (WTF::PageReservation::PageReservation):
3803 (WTF::PageReservation::commit):
3804 (WTF::PageReservation::decommit):
3805 (WTF::PageReservation::committed):
3807 2011-01-27 Oliver Hunt <oliver@apple.com>
3809 Reviewed by Geoffrey Garen.
3811 Convert markstack to a slot visitor API
3812 https://bugs.webkit.org/show_bug.cgi?id=53219
3814 Move the MarkStack over to a slot based marking API.
3816 In order to avoiding aliasing concerns there are two new types
3817 that need to be used when holding on to JSValues and JSCell that
3818 need to be marked: WriteBarrier and DeprecatedPtr. WriteBarrier
3819 is expected to be used for any JSValue or Cell that's lifetime and
3820 marking is controlled by another GC object. DeprecatedPtr is used
3821 for any value that we need to rework ownership for.
3823 The change over to this model has produced a large amount of
3824 code changes, but they are mostly mechanical (forwarding JSGlobalData,
3827 * API/JSCallbackObject.h:
3828 (JSC::JSCallbackObjectData::setPrivateProperty):
3829 (JSC::JSCallbackObjectData::JSPrivatePropertyMap::getPrivateProperty):
3830 (JSC::JSCallbackObjectData::JSPrivatePropertyMap::setPrivateProperty):
3831 (JSC::JSCallbackObjectData::JSPrivatePropertyMap::markChildren):
3832 (JSC::JSCallbackObject::setPrivateProperty):
3833 * API/JSCallbackObjectFunctions.h:
3835 (JSC::::staticFunctionGetter):
3836 * API/JSObjectRef.cpp:
3837 (JSObjectMakeConstructor):
3838 (JSObjectSetPrivateProperty):
3839 * API/JSWeakObjectMapRefInternal.h:
3840 * JavaScriptCore.exp:
3841 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3842 * JavaScriptCore.xcodeproj/project.pbxproj:
3843 * bytecode/CodeBlock.cpp:
3844 (JSC::CodeBlock::markAggregate):
3845 * bytecode/CodeBlock.h:
3846 (JSC::CodeBlock::globalObject):
3847 * bytecompiler/BytecodeGenerator.cpp:
3848 (JSC::BytecodeGenerator::BytecodeGenerator):
3849 (JSC::BytecodeGenerator::emitJumpIfNotFunctionCall):
3850 (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply):
3851 (JSC::BytecodeGenerator::findScopedProperty):
3852 * debugger/DebuggerActivation.cpp:
3853 (JSC::DebuggerActivation::DebuggerActivation):
3854 (JSC::DebuggerActivation::markChildren):
3855 * debugger/DebuggerActivation.h:
3856 * interpreter/Interpreter.cpp:
3857 (JSC::Interpreter::resolve):
3858 (JSC::Interpreter::resolveSkip):
3859 (JSC::Interpreter::resolveGlobalDynamic):
3860 (JSC::Interpreter::resolveBaseAndProperty):
3861 (JSC::Interpreter::unwindCallFrame):
3862 (JSC::appendSourceToError):
3863 (JSC::Interpreter::execute):
3864 (JSC::Interpreter::privateExecute):
3865 * interpreter/Register.h:
3866 (JSC::Register::jsValueSlot):
3868 (JSC::JITThunks::tryCacheGetByID):
3869 (JSC::DEFINE_STUB_FUNCTION):
3871 (GlobalObject::GlobalObject):
3872 * runtime/Arguments.cpp:
3873 (JSC::Arguments::markChildren):
3874 (JSC::Arguments::getOwnPropertySlot):
3875 (JSC::Arguments::getOwnPropertyDescriptor):
3876 (JSC::Arguments::put):
3877 * runtime/Arguments.h:
3878 (JSC::Arguments::setActivation):
3879 (JSC::Arguments::Arguments):
3880 * runtime/ArrayConstructor.cpp:
3881 (JSC::ArrayConstructor::ArrayConstructor):
3882 (JSC::constructArrayWithSizeQuirk):
3883 * runtime/ArrayPrototype.cpp:
3884 (JSC::arrayProtoFuncSplice):
3885 * runtime/BatchedTransitionOptimizer.h:
3886 (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer):
3887 (JSC::BatchedTransitionOptimizer::~BatchedTransitionOptimizer):
3888 * runtime/BooleanConstructor.cpp:
3889 (JSC::BooleanConstructor::BooleanConstructor):
3890 (JSC::constructBoolean):
3891 (JSC::constructBooleanFromImmediateBoolean):
3892 * runtime/BooleanPrototype.cpp:
3893 (JSC::BooleanPrototype::BooleanPrototype):
3894 * runtime/ConservativeSet.h:
3895 (JSC::ConservativeSet::mark):
3896 * runtime/DateConstructor.cpp:
3897 (JSC::DateConstructor::DateConstructor):
3898 * runtime/DateInstance.cpp:
3899 (JSC::DateInstance::DateInstance):
3900 * runtime/DatePrototype.cpp:
3901 (JSC::dateProtoFuncSetTime):
3902 (JSC::setNewValueFromTimeArgs):
3903 (JSC::setNewValueFromDateArgs):
3904 (JSC::dateProtoFuncSetYear):
3905 * runtime/ErrorConstructor.cpp:
3906 (JSC::ErrorConstructor::ErrorConstructor):
3907 * runtime/ErrorInstance.cpp:
3908 (JSC::ErrorInstance::ErrorInstance):
3909 * runtime/ErrorPrototype.cpp:
3910 (JSC::ErrorPrototype::ErrorPrototype):
3911 * runtime/FunctionConstructor.cpp:
3912 (JSC::FunctionConstructor::FunctionConstructor):
3913 * runtime/FunctionPrototype.cpp:
3914 (JSC::FunctionPrototype::FunctionPrototype):
3915 * runtime/GetterSetter.cpp:
3916 (JSC::GetterSetter::markChildren):
3917 * runtime/GetterSetter.h:
3918 (JSC::GetterSetter::GetterSetter):
3919 (JSC::GetterSetter::getter):
3920 (JSC::GetterSetter::setGetter):
3921 (JSC::GetterSetter::setter):
3922 (JSC::GetterSetter::setSetter):
3923 * runtime/GlobalEvalFunction.cpp:
3924 (JSC::GlobalEvalFunction::GlobalEvalFunction):
3925 (JSC::GlobalEvalFunction::markChildren):
3926 * runtime/GlobalEvalFunction.h:
3927 (JSC::GlobalEvalFunction::cachedGlobalObject):
3929 (JSC::Heap::markProtectedObjects):
3930 (JSC::Heap::markTempSortVectors):
3931 (JSC::Heap::markRoots):
3932 * runtime/InternalFunction.cpp:
3933 (JSC::InternalFunction::InternalFunction):
3934 * runtime/JSAPIValueWrapper.h:
3935 (JSC::JSAPIValueWrapper::value):
3936 (JSC::JSAPIValueWrapper::JSAPIValueWrapper):
3937 * runtime/JSActivation.cpp:
3938 (JSC::JSActivation::put):
3939 * runtime/JSArray.cpp:
3940 (JSC::JSArray::JSArray):
3941 (JSC::JSArray::getOwnPropertySlot):
3942 (JSC::JSArray::getOwnPropertyDescriptor):
3943 (JSC::JSArray::put):
3944 (JSC::JSArray::putSlowCase):
3945 (JSC::JSArray::deleteProperty):
3946 (JSC::JSArray::increaseVectorLength):
3947 (JSC::JSArray::setLength):
3948 (JSC::JSArray::pop):
3949 (JSC::JSArray::push):
3950 (JSC::JSArray::unshiftCount):
3951 (JSC::JSArray::sort):
3952 (JSC::JSArray::fillArgList):
3953 (JSC::JSArray::copyToRegisters):
3954 (JSC::JSArray::compactForSorting):
3955 * runtime/JSArray.h:
3956 (JSC::JSArray::getIndex):
3957 (JSC::JSArray::setIndex):
3958 (JSC::JSArray::uncheckedSetIndex):
3959 (JSC::JSArray::markChildrenDirect):
3960 * runtime/JSByteArray.cpp:
3961 (JSC::JSByteArray::JSByteArray):
3963 (JSC::JSCell::MarkStack::append):
3964 (JSC::JSCell::MarkStack::appendCell):
3965 * runtime/JSFunction.cpp:
3966 (JSC::JSFunction::JSFunction):
3967 (JSC::JSFunction::getOwnPropertySlot):
3968 * runtime/JSGlobalObject.cpp:
3969 (JSC::markIfNeeded):
3970 (JSC::JSGlobalObject::reset):
3971 (JSC::JSGlobalObject::resetPrototype):
3972 (JSC::JSGlobalObject::markChildren):
3973 * runtime/JSGlobalObject.h:
3974 (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData):
3975 (JSC::JSGlobalObject::regExpConstructor):
3976 (JSC::JSGlobalObject::errorConstructor):
3977 (JSC::JSGlobalObject::evalErrorConstructor):
3978 (JSC::JSGlobalObject::rangeErrorConstructor):
3979 (JSC::JSGlobalObject::referenceErrorConstructor):
3980 (JSC::JSGlobalObject::syntaxErrorConstructor):
3981 (JSC::JSGlobalObject::typeErrorConstructor):
3982 (JSC::JSGlobalObject::URIErrorConstructor):
3983 (JSC::JSGlobalObject::evalFunction):
3984 (JSC::JSGlobalObject::objectPrototype):
3985 (JSC::JSGlobalObject::functionPrototype):
3986 (JSC::JSGlobalObject::arrayPrototype):
3987 (JSC::JSGlobalObject::booleanPrototype):
3988 (JSC::JSGlobalObject::stringPrototype):
3989 (JSC::JSGlobalObject::numberPrototype):
3990 (JSC::JSGlobalObject::datePrototype):
3991 (JSC::JSGlobalObject::regExpPrototype):
3992 (JSC::JSGlobalObject::methodCallDummy):
3993 (JSC::constructArray):
3994 * runtime/JSONObject.cpp:
3995 (JSC::Stringifier::Holder::object):
3996 (JSC::Stringifier::Holder::objectSlot):
3997 (JSC::Stringifier::markAggregate):
3998 (JSC::Stringifier::stringify):
3999 (JSC::Stringifier::Holder::appendNextProperty):
4000 (JSC::Walker::callReviver):
4001 (JSC::Walker::walk):
4002 * runtime/JSObject.cpp:
4003 (JSC::JSObject::defineGetter):
4004 (JSC::JSObject::defineSetter):
4005 (JSC::JSObject::removeDirect):
4006 (JSC::JSObject::putDirectFunction):
4007 (JSC::JSObject::putDirectFunctionWithoutTransition):
4008 (JSC::putDescriptor):
4009 (JSC::JSObject::defineOwnProperty):
4010 * runtime/JSObject.h:
4011 (JSC::JSObject::putDirectOffset):
4012 (JSC::JSObject::putUndefinedAtDirectOffset):
4013 (JSC::JSObject::flattenDictionaryObject):
4014 (JSC::JSObject::putDirectInternal):
4015 (JSC::JSObject::putDirect):
4016 (JSC::JSObject::putDirectFunction):
4017 (JSC::JSObject::putDirectWithoutTransition):
4018 (JSC::JSObject::putDirectFunctionWithoutTransition):
4019 (JSC::JSValue::putDirect):
4020 (JSC::JSObject::allocatePropertyStorageInline):
4021 (JSC::JSObject::markChildrenDirect):
4022 * runtime/JSStaticScopeObject.cpp:
4023 (JSC::JSStaticScopeObject::markChildren):
4024 * runtime/JSString.cpp:
4025 (JSC::StringObject::create):
4026 * runtime/JSValue.h:
4027 * runtime/JSWrapperObject.cpp:
4028 (JSC::JSWrapperObject::markChildren):
4029 * runtime/JSWrapperObject.h:
4030 (JSC::JSWrapperObject::internalValue):
4031 (JSC::JSWrapperObject::setInternalValue):
4032 * runtime/LiteralParser.cpp:
4033 (JSC::LiteralParser::parse):
4034 * runtime/Lookup.cpp:
4035 (JSC::setUpStaticFunctionSlot):
4038 * runtime/MarkStack.h:
4039 * runtime/MathObject.cpp:
4040 (JSC::MathObject::MathObject):
4041 * runtime/NativeErrorConstructor.cpp:
4042 (JSC::NativeErrorConstructor::NativeErrorConstructor):
4043 * runtime/NativeErrorPrototype.cpp:
4044 (JSC::NativeErrorPrototype::NativeErrorPrototype):
4045 * runtime/NumberConstructor.cpp:
4046 (JSC::NumberConstructor::NumberConstructor):
4047 (JSC::constructWithNumberConstructor):
4048 * runtime/NumberObject.cpp:
4049 (JSC::constructNumber):
4050 * runtime/NumberPrototype.cpp:
4051 (JSC::NumberPrototype::NumberPrototype):
4052 * runtime/ObjectConstructor.cpp:
4053 (JSC::ObjectConstructor::ObjectConstructor):
4054 (JSC::objectConstructorGetOwnPropertyDescriptor):
4055 * runtime/Operations.h:
4056 (JSC::normalizePrototypeChain):
4058 * runtime/PrototypeFunction.cpp:
4059 (JSC::PrototypeFunction::PrototypeFunction):
4060 * runtime/PutPropertySlot.h:
4061 (JSC::PutPropertySlot::setExistingProperty):
4062 (JSC::PutPropertySlot::setNewProperty):
4063 (JSC::PutPropertySlot::base):
4064 * runtime/RegExpConstructor.cpp:
4065 (JSC::RegExpConstructor::RegExpConstructor):
4066 * runtime/ScopeChain.cpp:
4067 (JSC::ScopeChainNode::print):
4068 * runtime/ScopeChain.h:
4069 (JSC::ScopeChainNode::~ScopeChainNode):
4070 (JSC::ScopeChainIterator::operator*):
4071 (JSC::ScopeChainIterator::operator->):
4072 (JSC::ScopeChain::top):
4073 * runtime/ScopeChainMark.h:
4074 (JSC::ScopeChain::markAggregate):
4075 * runtime/SmallStrings.cpp:
4077 (JSC::SmallStrings::markChildren):
4078 * runtime/SmallStrings.h:
4079 (JSC::SmallStrings::emptyString):
4080 (JSC::SmallStrings::singleCharacterString):
4081 (JSC::SmallStrings::singleCharacterStrings):
4082 * runtime/StringConstructor.cpp:
4083 (JSC::StringConstructor::StringConstructor):
4084 * runtime/StringObject.cpp:
4085 (JSC::StringObject::StringObject):
4086 * runtime/StringObject.h:
4087 * runtime/StringPrototype.cpp:
4088 (JSC::StringPrototype::StringPrototype):
4089 * runtime/Structure.cpp:
4090 (JSC::Structure::flattenDictionaryStructure):
4091 * runtime/Structure.h:
4092 (JSC::Structure::storedPrototypeSlot):
4093 * runtime/WeakGCMap.h:
4094 (JSC::WeakGCMap::uncheckedGet):
4095 (JSC::WeakGCMap::uncheckedGetSlot):
4099 (JSC::::uncheckedRemove):
4100 * runtime/WriteBarrier.h: Added.
4101 (JSC::DeprecatedPtr::DeprecatedPtr):
4102 (JSC::DeprecatedPtr::get):
4103 (JSC::DeprecatedPtr::operator*):
4104 (JSC::DeprecatedPtr::operator->):
4105 (JSC::DeprecatedPtr::slot):
4106 (JSC::DeprecatedPtr::operator UnspecifiedBoolType*):
4107 (JSC::DeprecatedPtr::operator!):
4108 (JSC::WriteBarrierBase::set):
4109 (JSC::WriteBarrierBase::get):
4110 (JSC::WriteBarrierBase::operator*):
4111 (JSC::WriteBarrierBase::operator->):
4112 (JSC::WriteBarrierBase::slot):
4113 (JSC::WriteBarrierBase::operator UnspecifiedBoolType*):
4114 (JSC::WriteBarrierBase::operator!):
4115 (JSC::WriteBarrier::WriteBarrier):
4118 2011-01-28 Adam Roben <aroben@apple.com>
4120 Chromium build fix after r76967
4122 * wtf/ThreadingPrimitives.h: Use OS(WINDOWS) instead of PLATFORM(WIN), to match other
4123 similar macros in this file.
4125 2011-01-28 Michael Saboff <msaboff@apple.com>
4127 Potentially Unsafe HashSet of RuntimeObject* in RootObject definition
4128 https://bugs.webkit.org/show_bug.cgi?id=53271
4130 Reapplying this this change. No change from prior patch in
4133 Added new isValid() methods to check if a contained object in
4134 a WeakGCMap is valid when using an unchecked iterator.
4136 * runtime/WeakGCMap.h:
4137 (JSC::WeakGCMap::isValid):
4139 2011-01-27 Adam Roben <aroben@apple.com>
4141 Extract code to convert a WTF absolute time to a Win32 wait interval into a separate
4144 Fixes <http://webkit.org/b/53208> <rdar://problem/8922490> BinarySemaphore should wrap a
4147 Reviewed by Dave Hyatt.
4149 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export the new function.
4151 * wtf/ThreadingPrimitives.h: Declare the new function.
4153 * wtf/ThreadingWin.cpp:
4154 (WTF::ThreadCondition::timedWait): Moved code to convert the absolute time to a wait
4155 interval from here...
4156 (WTF::absoluteTimeToWaitTimeoutInterval): ...to here.
4158 2011-01-28 Sam Weinig <sam@webkit.org>
4160 Reviewed by Maciej Stachowiak.
4162 Add basic rubber banding support
4163 <rdar://problem/8219429>
4164 https://bugs.webkit.org/show_bug.cgi?id=53277
4166 * wtf/Platform.h: Add ENABLE for rubber banding.
4168 2011-01-28 Sheriff Bot <webkit.review.bot@gmail.com>
4170 Unreviewed, rolling out r76893.
4171 http://trac.webkit.org/changeset/76893
4172 https://bugs.webkit.org/show_bug.cgi?id=53287
4174 It made some tests crash on GTK and Qt debug bots (Requested
4175 by Ossy on #webkit).
4177 * runtime/WeakGCMap.h:
4179 2011-01-27 Adam Barth <abarth@webkit.org>
4181 Reviewed by Eric Seidel.
4183 Add WTFString method to compare equality with Vector<UChar>
4184 https://bugs.webkit.org/show_bug.cgi?id=53266
4186 I'm planning to use this method in the new XSS filter implementation,
4187 but it seems generally useful.
4189 * wtf/text/StringImpl.h:
4190 (WTF::equalIgnoringNullity):
4191 * wtf/text/WTFString.h:
4192 (WTF::equalIgnoringNullity):
4194 2011-01-27 Michael Saboff <msaboff@apple.com>
4196 Potentially Unsafe HashSet of RuntimeObject* in RootObject definition
4197 https://bugs.webkit.org/show_bug.cgi?id=53271
4199 Added new isValid() methods to check if a contained object in
4200 a WeakGCMap is valid when using an unchecked iterator.
4202 * runtime/WeakGCMap.h:
4203 (JSC::WeakGCMap::isValid):
4205 2011-01-26 Sam Weinig <sam@webkit.org>
4207 Reviewed by Maciej Stachowiak.
4209 Add events to represent the start/end of a gesture scroll
4210 https://bugs.webkit.org/show_bug.cgi?id=53215
4212 * wtf/Platform.h: Add ENABLE for gesture events.
4214 2011-01-26 Yael Aharon <yael.aharon@nokia.com>
4216 Reviewed by Laszlo Gombos.
4218 [Qt][Symbian] Fix --minimal build
4219 https://bugs.webkit.org/show_bug.cgi?id=52839
4221 Move definition of USE_SYSTEM_MALLOC out of pri file.
4222 Put it in platform.h instead.
4225 * wtf/TCSystemAlloc.cpp:
4228 2011-01-26 Patrick Gansterer <paroga@webkit.org>
4230 Reviewed by Andreas Kling.
4232 [WINCE] Add JIT support to build system
4233 https://bugs.webkit.org/show_bug.cgi?id=53079
4235 * CMakeListsWinCE.txt:
4237 2011-01-25 Adam Roben <aroben@apple.com>
4239 Windows Production build fix
4241 Reviewed by Steve Falkenburg.
4243 * JavaScriptCore.vcproj/JavaScriptCore.make: Set BUILDSTYLE to Release_PGO at the very start
4244 of the file so that ConfigurationBuildDir takes that into account. Also set it the right way
4245 (by redefining the macro) rather than the wrong way (by modifying the environment variable).
4247 2011-01-25 Steve Falkenburg <sfalken@apple.com>
4249 Rubber-stamped by Adam Roben.
4251 Windows production build fix.
4252 Use correct environment variable escaping
4254 * JavaScriptCore.vcproj/JavaScriptCore.make:
4255 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
4257 2011-01-25 Oliver Hunt <oliver@apple.com>
4259 Reviewed by Gavin Barraclough.
4261 JSON.stringify processing time exponentially grows with size of object
4262 https://bugs.webkit.org/show_bug.cgi?id=51922
4264 Remove last use of reserveCapacity from JSON stringification, as it results
4265 in appalling append behaviour when there are a large number of property names
4268 * runtime/JSONObject.cpp:
4269 (JSC::Stringifier::appendQuotedString):
4271 2011-01-25 Antti Koivisto <antti@apple.com>
4275 Try to fix windows build.
4277 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
4279 2011-01-25 Antti Koivisto <antti@apple.com>
4281 Reviewed by Oliver Hunt.
4283 REGRESSION: Leak in JSParser::Scope::copyCapturedVariablesToVector()
4284 https://bugs.webkit.org/show_bug.cgi?id=53061
4286 Cache did not know about the subclass so failed to fully delete the items.
4287 Got rid of the subclass and moved the classes to separate files.
4291 * JavaScriptCore.exp:
4292 * JavaScriptCore.gypi:
4293 * JavaScriptCore.pro:
4294 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
4295 * JavaScriptCore.xcodeproj/project.pbxproj:
4296 * parser/JSParser.cpp:
4297 (JSC::JSParser::Scope::saveFunctionInfo):
4298 (JSC::JSParser::Scope::restoreFunctionInfo):
4299 (JSC::JSParser::findCachedFunctionInfo):
4300 (JSC::JSParser::parseFunctionInfo):
4301 * parser/SourceProvider.h:
4302 * parser/SourceProviderCache.cpp: Added.
4303 (JSC::SourceProviderCache::~SourceProviderCache):
4304 (JSC::SourceProviderCache::byteSize):
4305 * parser/SourceProviderCache.h: Added.
4306 (JSC::SourceProviderCache::SourceProviderCache):
4307 (JSC::SourceProviderCache::add):
4308 (JSC::SourceProviderCache::get):
4309 * parser/SourceProviderCacheItem.h: Added.
4310 (JSC::SourceProviderCacheItem::SourceProviderCacheItem):
4311 (JSC::SourceProviderCacheItem::approximateByteSize):
4312 (JSC::SourceProviderCacheItem::closeBraceToken):
4314 2011-01-25 Marcilio Mendonca <mamendonca@rim.com>
4316 Reviewed by Darin Adler.
4318 Bug 53087: Refactoring: replaced a hanging "else" with a "return"
4320 https://bugs.webkit.org/show_bug.cgi?id=53087.
4322 Refactoring work: Replaced a hanging "else" within an #if PLATFORM(M
4323 with a "return" so that the code is more readable and less error pro
4324 (e.g., "else" doesn't use braces so adding extra lines to the else
4325 block won't have any effect; even worse, code still compiles
4328 * wtf/Assertions.cpp:
4330 2011-01-24 Chris Marrin <cmarrin@apple.com>
4332 Reviewed by Eric Seidel.
4334 Change ENABLE_3D_CANVAS to ENABLE_WEBGL
4335 https://bugs.webkit.org/show_bug.cgi?id=53041
4337 * Configurations/FeatureDefines.xcconfig:
4339 2011-01-25 Adam Roben <aroben@apple.com>
4341 Windows Production build fix
4343 * JavaScriptCore.vcproj/JavaScriptCore.make: Added a missing "set".
4345 2011-01-25 Patrick Gansterer <paroga@webkit.org>
4347 Reviewed by Eric Seidel.
4349 Add missing defines for COMPILER(RVCT) && CPU(ARM_THUMB2)
4350 https://bugs.webkit.org/show_bug.cgi?id=52949
4354 2011-01-24 Adam Roben <aroben@apple.com>
4356 Windows Production build fix
4358 * JavaScriptCore.vcproj/JavaScriptCore.make: Update for move of JavaScriptCore into Source.
4360 2011-01-24 Peter Varga <pvarga@webkit.org>
4362 Reviewed by Oliver Hunt.
4364 Optimize regex patterns which contain empty alternatives
4365 https://bugs.webkit.org/show_bug.cgi?id=51395
4367 Eliminate the empty alternatives from the regex pattern and convert it to do
4368 the matching in an easier way.
4370 * yarr/YarrPattern.cpp:
4371 (JSC::Yarr::YarrPatternConstructor::atomParenthesesEnd):
4373 2011-01-24 Andras Becsi <abecsi@webkit.org>
4375 Reviewed by Csaba Osztrogonác.
4377 [Qt] Move project files into Source
4378 https://bugs.webkit.org/show_bug.cgi?id=52891
4380 * JavaScriptCore.pri:
4381 * JavaScriptCore.pro:
4384 2011-01-23 Mark Rowe <mrowe@apple.com>
4386 Follow-up to r76477.
4388 Fix the scripts that detect problematic code such as static initializers
4389 and destructors, weak vtables, inappropriate files in the framework wrappers,
4390 and public headers including private headers. These had all been broken
4391 since the projects were moved in to the Source directory as the paths to the
4392 scripts were not updated at that time.
4394 * JavaScriptCore.xcodeproj/project.pbxproj:
4396 2011-01-23 Patrick Gansterer <paroga@webkit.org>
4398 Reviewed by Darin Adler.
4400 Use WTF::StringHasher in WebCore
4401 https://bugs.webkit.org/show_bug.cgi?id=52934
4403 Add an additional function to calculate the hash
4404 of data with a runtimedependent size.
4406 * wtf/StringHasher.h:
4407 (WTF::StringHasher::createBlobHash):
4409 2011-01-23 Patrick Gansterer <paroga@webkit.org>
4411 Reviewed by David Kilzer.
4413 Fix comment in String::ascii()
4414 https://bugs.webkit.org/show_bug.cgi?id=52980
4416 * wtf/text/WTFString.cpp:
4417 (WTF::String::ascii):
4419 2011-01-23 Patrick Gansterer <paroga@webkit.org>
4421 Reviewed by David Kilzer.
4423 Add String::containsOnlyLatin1()
4424 https://bugs.webkit.org/show_bug.cgi?id=52979
4426 * wtf/text/WTFString.h:
4427 (WTF::String::containsOnlyLatin1):
4428 (WTF::charactersAreAllLatin1):
4430 2011-01-23 Patrick Gansterer <paroga@webkit.org>
4432 Reviewed by Oliver Hunt.
4434 Remove obsolete JSVALUE32 code
4435 https://bugs.webkit.org/show_bug.cgi?id=52948
4437 r70111 removed support for JSVALUE32.
4438 ARM, MIPS and X86 support JSVALUE32_64 only.
4442 2011-01-22 Geoffrey Garen <ggaren@apple.com>
4444 Reviewed by Dan Bernstein.
4446 ASSERT running run-webkit-tests --threaded.
4447 https://bugs.webkit.org/show_bug.cgi?id=52971
4449 SunSpider and v8 report no change.
4451 * runtime/ConservativeSet.cpp:
4452 (JSC::ConservativeSet::grow):
4453 (JSC::ConservativeSet::add):
4454 * runtime/ConservativeSet.h: Tweaked the inline capacity to 128, and
4455 the growth policy to 2X, to make SunSpider and v8 happy.
4456 (JSC::ConservativeSet::ConservativeSet):
4457 (JSC::ConservativeSet::~ConservativeSet):
4458 (JSC::ConservativeSet::mark): Use OSAllocator directly, instead of malloc.
4459 Malloc is forbidden during a multi-threaded mark phase because it can
4462 2011-01-22 Geoffrey Garen <ggaren@apple.com>
4464 Reviewed by Geoffrey Garen.
4466 Rubber-stamped by Maciej Stachowiak.
4468 A few of Maciej's review suggestions for my last patch.
4469 https://bugs.webkit.org/show_bug.cgi?id=52946
4471 SunSpider reports no change.
4476 * JavaScriptCore.gypi:
4477 * JavaScriptCore.pro:
4478 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
4479 * JavaScriptCore.xcodeproj/project.pbxproj: Updated build systems.
4481 * runtime/ConservativeSet.cpp: Added.
4482 (JSC::isPointerAligned):
4483 (JSC::ConservativeSet::add):
4484 * runtime/ConservativeSet.h: Added.
4485 (JSC::ConservativeSet::ConservativeSet):
4486 (JSC::ConservativeSet::mark): Split ConservativeSet out into its own
4487 file, and moved the conservative check into ConservativeSet::add, making
4488 ConservativeSet's responsibility clearer.
4491 (JSC::Heap::markRoots):
4492 * runtime/MachineStackMarker.cpp:
4493 (JSC::MachineStackMarker::markCurrentThreadConservativelyInternal):
4494 (JSC::MachineStackMarker::markOtherThreadConservatively):
4495 * runtime/MachineStackMarker.h:
4496 * runtime/MarkStack.h: Updated for changes above.
4498 2011-01-22 Patrick Gansterer <paroga@webkit.org>
4500 Unreviewed WinCE build fix for r76430.
4502 * runtime/MachineStackMarker.cpp:
4503 (JSC::swapIfBackwards):
4505 2011-01-21 Geoffrey Garen <ggaren@apple.com>
4507 Reviewed by Beth Dakin.
4509 Reorganized MarkedSpace, making many of its functions private.
4512 (JSC::JSCell::Heap::heap):
4513 * runtime/MarkedSpace.h:
4514 (JSC::MarkedSpace::globalData):
4515 (JSC::MarkedSpace::heap):
4517 2011-01-21 Geoffrey Garen <ggaren@apple.com>
4519 Try to fix build: moved helper function out of #ifdef.
4521 * runtime/MachineStackMarker.cpp:
4522 (JSC::swapIfBackwards):
4524 2011-01-21 Geoffrey Garen <ggaren@apple.com>
4526 Rubber-stamped by Maciej Stachowiak.
4528 A few of Maciej's review suggestions for my last patch.
4529 https://bugs.webkit.org/show_bug.cgi?id=52946
4531 SunSpider reports no change.
4533 * runtime/MachineStackMarker.cpp:
4534 (JSC::swapIfBackwards): Added a helper function for handling platforms
4535 where the stack can grow in any direction.
4537 (JSC::MachineStackMarker::markCurrentThreadConservativelyInternal):
4538 (JSC::MachineStackMarker::markOtherThreadConservatively): Use the helper
4541 (JSC::isPointerAligned): Use "!" instead of "==0" because a robot told me to.
4543 (JSC::MachineStackMarker::markConservatively): Changed to use a more
4544 standard looping idiom, and to use the helper function above.
4546 * runtime/MarkedSpace.h:
4547 (JSC::MarkedSpace::isCellAligned): Use "!" instead of "==0" because a robot told me to.
4549 2011-01-21 Geoffrey Garen <ggaren@apple.com>
4551 Reviewed by Maciej Stachowiak.
4553 Cleaned up some conservative marking code.
4554 https://bugs.webkit.org/show_bug.cgi?id=52946
4556 SunSpider reports no change.
4558 * interpreter/RegisterFile.h: No need for a special marking function,
4559 since we already expose a start() and end().
4562 (JSC::Heap::registerFile):
4563 (JSC::Heap::markRoots):
4565 (JSC::Heap::contains): Migrated markConservatively() to the machine stack
4566 marker class. Now, Heap just provides a contains() function, which the
4567 machine stack marker uses for checking whether a pointer points into the heap.
4569 * runtime/MachineStackMarker.cpp:
4570 (JSC::MachineStackMarker::markCurrentThreadConservativelyInternal):
4571 (JSC::MachineStackMarker::markOtherThreadConservatively):
4572 (JSC::isPointerAligned):
4573 (JSC::MachineStackMarker::markConservatively):
4574 * runtime/MachineStackMarker.h: Move the conservative marking code here.
4576 * runtime/MarkStack.h:
4577 (JSC::ConservativeSet::add):
4578 (JSC::ConservativeSet::mark): Changed to using a vector instead of hash
4579 set. Vector seems to be a bit faster, and it generates smaller code.
4581 * runtime/MarkedSpace.cpp:
4582 (JSC::MarkedSpace::containsSlowCase):
4583 * runtime/MarkedSpace.h:
4584 (JSC::MarkedSpace::isCellAligned):
4585 (JSC::MarkedSpace::isPossibleCell):
4586 (JSC::MarkedSpace::contains): Kept the code for determining whether a
4587 pointer pointed into marked space, and moved the code for marking
4588 a set of conservative pointers into the machine stack marker.
4591 (WTF::::add): Added two missing inlines that I noticed while testing
4594 2011-01-21 Mark Rowe <mrowe@apple.com>
4596 Reviewed by Sam Weinig.
4598 Work around a Clang bug <rdar://problem/8876150> that leads to it incorrectly emitting an access
4599 control warning when a client tries to use operator bool exposed above via "using PageBlock::operator bool".
4601 * wtf/PageAllocation.h:
4602 (WTF::PageAllocation::operator bool):
4603 * wtf/PageReservation.h:
4604 (WTF::PageReservation::operator bool):
4606 2011-01-21 Michael Saboff <msaboff@apple.com>
4608 Reviewed by Oliver Hunt.
4610 [RegexFuzz] Hang with forward assertion
4611 https://bugs.webkit.org/show_bug.cgi?id=52825
4612 <rdar://problem/8894332>
4614 The backtrackTo label from the first term in a list of terms is
4615 being overwritten by processing of subsequent terms. Changed
4616 copyBacktrackToLabel() to check for an existing bcaktrackTo label
4617 before copying and renamed it to propagateBacktrackToLabel() since
4618 it no longer copies.
4621 (JSC::Yarr::YarrGenerator::BacktrackDestination::propagateBacktrackToLabel):
4622 (JSC::Yarr::YarrGenerator::generateParenthesesSingle):
4624 2011-01-21 Geoffrey Garen <ggaren@apple.com>
4626 Reviewed by Sam Weinig.
4628 Moved the mark stack from global data to the heap, since it pertains
4629 to the heap, and not the virtual machine as a whole.
4630 https://bugs.webkit.org/show_bug.cgi?id=52930
4632 SunSpider reports no change.
4636 (JSC::Heap::markRoots):
4638 * runtime/JSGlobalData.cpp:
4639 (JSC::JSGlobalData::JSGlobalData):
4640 * runtime/JSGlobalData.h:
4642 2011-01-21 Peter Gal <galpeter@inf.u-szeged.hu>
4644 Reviewed by Darin Adler.
4646 REGRESSION(r76177): All JavaScriptCore tests fail on ARM
4647 https://bugs.webkit.org/show_bug.cgi?id=52814
4649 Get the approximateByteSize value before releasing the OwnPtr.
4651 * parser/JSParser.cpp:
4652 (JSC::JSParser::parseFunctionInfo):
4654 2011-01-21 Xan Lopez <xlopez@igalia.com>
4656 Reviewed by Martin Robinson.
4658 Remove unnecessary <stdio.h> include
4659 https://bugs.webkit.org/show_bug.cgi?id=52884
4661 * jit/JIT.cpp: remove unnecessary include.
4663 2011-01-20 Ryosuke Niwa <rniwa@webkit.org>
4665 Reviewed by Maciej Stachowiak.
4667 Added OwnPtrCommon.h because OwnArrayPtr::set calls deleteOwnedPtr.
4669 * wtf/OwnArrayPtr.h:
4671 2011-01-20 Patrick Gansterer <paroga@webkit.org>
4673 Reviewed by Oliver Hunt.
4675 [WINCE] Remove obsolete JSVALUE32 code
4676 https://bugs.webkit.org/show_bug.cgi?id=52450
4678 Remove the "offset hack" in create_jit_stubs, since we
4679 only support JSVALUE32_64 in the meantime.
4681 * create_jit_stubs: Removed offset argument
4684 2011-01-20 Geoffrey Garen <ggaren@apple.com>
4686 Reviewed by Oliver Hunt.
4688 When marking conservatively, guard against reviving dead objects.
4689 https://bugs.webkit.org/show_bug.cgi?id=52840
4691 SunSpider and v8 say no change.
4693 * interpreter/RegisterFile.h:
4694 (JSC::RegisterFile::markCallFrames): Updated to use the ConservativeSet API.
4697 (JSC::Heap::recordExtraCost): No need to guard against conservative
4698 marking reviving dead objects anymore, since the conservative marking
4699 mechanism guards against this now.
4701 (JSC::Heap::markConservatively):
4702 (JSC::Heap::markProtectedObjects):
4703 (JSC::Heap::markTempSortVectors): Don't drain the mark stack inside a
4704 marking function. We want to establish a separation of concerns between
4705 visiting roots and draining the mark stack.
4707 (JSC::Heap::markRoots): Gather the set of conservative references before
4708 clearning mark bits, because conservative marking now uses the mark bits
4709 to determine if a reference is valid, and avoid reviving dead objects.
4711 (JSC::Heap::collectAllGarbage): No need to guard against conservative
4712 marking reviving dead objects anymore, since the conservative marking
4713 mechanism guards against this now.
4715 * runtime/Heap.h: Updated to use the ConservativeSet API.
4717 * runtime/MachineStackMarker.cpp:
4718 (JSC::MachineStackMarker::markCurrentThreadConservativelyInternal):
4719 (JSC::MachineStackMarker::markCurrentThreadConservatively):
4720 (JSC::MachineStackMarker::markOtherThreadConservatively):
4721 (JSC::MachineStackMarker::markMachineStackConservatively):
4722 * runtime/MachineStackMarker.h: Ditto.
4724 * runtime/MarkStack.h:
4725 (JSC::ConservativeSet::add):
4726 (JSC::ConservativeSet::mark): Added ConservativeSet, for gathering the
4727 set of conservative references. This is different from MarkStack, since
4728 we don't mark the set until it is completely gathered.
4730 * runtime/MarkedSpace.cpp:
4731 (JSC::MarkedSpace::freeBlock):
4732 (JSC::MarkedSpace::resizeBlocks):
4733 (JSC::MarkedSpace::markConservatively):
4734 * runtime/MarkedSpace.h: When marking conservatively, guard against
4735 reviving dead objects.
4737 2011-01-20 Siddharth Mathur <siddharth.mathur@nokia.com>
4739 Reviewed by Geoffrey Garen.
4741 [Symbian] Fix StackBounds::initialize()
4742 https://bugs.webkit.org/show_bug.cgi?id=52842
4744 * wtf/StackBounds.cpp:
4745 (WTF::StackBounds::initialize): Use TThreadStackInfo.iLimit for stack limit
4747 2011-01-20 Michael Saboff <msaboff@apple.com>
4749 Reviewed by Oliver Hunt.
4751 <rdar://problem/8890203> [RegexFuzz] Crash in generated code (52773)
4752 https://bugs.webkit.org/show_bug.cgi?id=52773
4754 Fixed case where an existing DataLabelPtr is overwritten. The
4755 replacing DataLabelPtr is now resolved immediately in
4756 linkDataLabelToBacktrackIfExists(). Cleanup - eliminated bool
4757 return value for the routine as it was never used.
4760 (JSC::Yarr::YarrGenerator::TermGenerationState::linkDataLabelToBacktrackIfExists):
4762 2011-01-20 Andras Becsi <abecsi@webkit.org>
4764 Reviewed by Csaba Osztrogonác.
4766 [Qt][WK2] WebKit2 enabled build fails to link
4768 Work around undefined reference linking issues until the buildsystem gets redesigned.
4769 These issues first occured in minimal builds (see BUG 50519).
4771 * JavaScriptCore.pri: link as whole-archive for WebKit2 builds
4773 2011-01-20 Zoltan Horvath <zoltan@webkit.org>
4775 Reviewed by Csaba Osztrogonác.
4777 Refactoring of the custom allocation framework
4778 https://bugs.webkit.org/show_bug.cgi?id=49897
4780 Inheriting from FastAllocBase can result in objects getting larger (bug #33896, #46589).
4781 The modification replaces Noncopyable and FastAllocBase classes and these inherits with their
4782 equivalent macro implementation at the necessary places.
4784 * wtf/FastAllocBase.h: Turn FastAllocBase's implementation into a macro.
4786 2011-01-20 Mark Rowe <mrowe@apple.com>
4788 Reviewed by Maciej Stachowiak.
4790 Follow-up to r75766 / <rdar://problem/5469576>.
4792 We were failing to initialize the key, causing all sorts of unexpected behavior.
4794 * wtf/FastMalloc.cpp:
4795 (WTF::setThreadHeap):
4796 (WTF::TCMalloc_ThreadCache::GetThreadHeap):
4797 (WTF::TCMalloc_ThreadCache::InitTSD): Ensure that the key is initialized.
4799 2011-01-18 Geoffrey Garen <ggaren@apple.com>
4801 Reviewed by Darin Adler.
4803 Rolled back in r76078, with crash fixed.
4804 https://bugs.webkit.org/show_bug.cgi?id=52668
4806 * runtime/JSGlobalObject.cpp:
4807 (JSC::JSGlobalObject::markChildren): Account for the fact that the global
4808 object moves its variables into and out of the register file. While out
4809 of the register file, the symbol table's size is not an accurate count
4810 for the size of the register array, since the BytecodeGenerator might
4811 be compiling, adding items to the symbol table.
4813 2011-01-18 Darin Adler <darin@apple.com>
4815 Reviewed by Geoffrey Garen.
4817 Stack overflow when converting an Error object to string
4818 https://bugs.webkit.org/show_bug.cgi?id=46410
4820 * Android.mk: Added StringRecursionChecker.cpp and
4821 StringRecursionChecker.h.
4822 * CMakeLists.txt: Ditto.
4823 * GNUmakefile.am: Ditto.
4824 * JavaScriptCore.gypi: Ditto.
4825 * JavaScriptCore.pro: Ditto.
4826 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Ditto.
4827 * JavaScriptCore.xcodeproj/project.pbxproj: Ditto.
4829 * runtime/ArrayPrototype.cpp:
4830 (JSC::arrayProtoFuncToString): Use StringRecursionChecker instead
4831 of the older hand-written code to do the same thing.
4832 (JSC::arrayProtoFuncToLocaleString): Ditto.
4833 (JSC::arrayProtoFuncJoin): Ditto.
4835 * runtime/ErrorPrototype.cpp:
4836 (JSC::errorProtoFuncToString): Use StringRecursionChecker.
4838 * runtime/JSGlobalData.h: Renamed arrayVisitedElements to
4839 stringRecursionCheckVisitedObjects.
4841 * runtime/RegExpPrototype.cpp:
4842 (JSC::regExpProtoFuncToString): Use StringRecursionChecker.
4844 * runtime/StringRecursionChecker.cpp: Added.
4845 * runtime/StringRecursionChecker.h: Added.
4847 2011-01-19 Oliver Hunt <oliver@apple.com>
4849 Reviewed by Gavin Barraclough.
4851 Remove non-spec support for callable RegExp
4852 https://bugs.webkit.org/show_bug.cgi?id=28285
4854 Remove support for callable regexps. If it breaks sites we can
4857 * runtime/RegExpObject.cpp:
4858 * runtime/RegExpObject.h:
4859 * tests/mozilla/expected.html: update results.
4861 2011-01-19 Antti Koivisto <antti@apple.com>
4863 Reviewed by Oliver Hunt.
4865 Cache function offsets to speed up javascript parsing
4866 https://bugs.webkit.org/show_bug.cgi?id=52622
4868 Use cache to save function offsets and some other info.
4869 This avoids quite a bit of work when reparsing the source.
4871 * parser/ASTBuilder.h:
4872 * parser/JSParser.cpp:
4873 (JSC::JSParser::CachedFunctionInfo::CachedFunctionInfo):
4874 (JSC::JSParser::CachedFunctionInfo::approximateByteSize):
4875 (JSC::JSParser::CachedFunctionInfo::closeBraceToken):
4876 (JSC::JSParser::Scope::copyCapturedVariablesToVector):
4877 (JSC::JSParser::Scope::saveFunctionInfo):
4878 (JSC::JSParser::Scope::restoreFunctionInfo):
4879 (JSC::JSParser::findCachedFunctionInfo):
4880 (JSC::JSParser::JSParser):
4881 (JSC::JSParser::parseProgram):
4882 (JSC::JSParser::parseFunctionInfo):
4884 (JSC::Lexer::setOffset):
4885 (JSC::Lexer::setLineNumber):
4886 (JSC::Lexer::sourceProvider):
4887 * parser/SourceProvider.h:
4888 (JSC::SourceProviderCache::SourceProviderCache):
4889 (JSC::SourceProviderCache::~SourceProviderCache):
4890 (JSC::SourceProviderCache::byteSize):
4891 (JSC::SourceProviderCache::add):
4892 (JSC::SourceProviderCache::get):
4893 (JSC::SourceProvider::SourceProvider):
4894 (JSC::SourceProvider::~SourceProvider):
4895 (JSC::SourceProvider::cache):
4896 (JSC::SourceProvider::notifyCacheSizeChanged):
4897 (JSC::SourceProvider::cacheSizeChanged):
4898 * parser/SyntaxChecker.h:
4900 2011-01-19 Mark Rowe <mrowe@apple.com>
4902 Reviewed by Darin Adler.
4904 Follow-up to r75766 / <rdar://problem/5469576>.
4906 * DerivedSources.make: Evaluate the SDKROOT variable correctly.
4908 2011-01-19 Oliver Hunt <oliver@apple.com>
4910 Reviewed by Gavin Barraclough.
4912 [jsfunfuzz] Defining a function called __proto__ inside an eval triggers an assertion
4913 https://bugs.webkit.org/show_bug.cgi?id=52672
4915 Rather than coming up with a somewhat convoluted mechanism to ensure that
4916 developers can override the global objects prototype with a function named
4917 __proto__ and expect it to work, we just disallow it at the syntax level.
4919 * parser/JSParser.cpp:
4920 (JSC::JSParser::parseFunctionInfo):
4922 2011-01-19 Michael Saboff <msaboff@apple.com>
4924 Reviewed by Darin Adler.
4926 <rdar://problem/8882994> Regression: Simple nested backtrack hangs
4927 https://bugs.webkit.org/show_bug.cgi?id=52675
4929 The changeset (r76076) for https://bugs.webkit.org/show_bug.cgi?id=52540
4930 broke simple backtracking in some cases. Reworked that change to
4931 link both jumps and labels.
4934 (JSC::Yarr::YarrGenerator::BacktrackDestination::hasBacktrackToLabel):
4935 (JSC::Yarr::YarrGenerator::TermGenerationState::propagateBacktrackingFrom):
4936 (JSC::Yarr::YarrGenerator::generateParenthesesSingle):
4938 2011-01-19 Pavel Podivilov <podivilov@chromium.org>
4940 Reviewed by Yury Semikhatsky.
4942 Web Inspector: [JSC] scripts have incorrect starting line (always 1).
4943 https://bugs.webkit.org/show_bug.cgi?id=52721
4945 * debugger/Debugger.cpp:
4946 (JSC::Debugger::recompileAllJSFunctions):
4947 * debugger/Debugger.h:
4949 (JSC::Parser::parse):
4950 * parser/SourceCode.h:
4951 (JSC::SourceCode::SourceCode):
4952 * parser/SourceProvider.h:
4953 (JSC::SourceProvider::startPosition):
4955 2011-01-19 Csaba Osztrogonác <ossy@webkit.org>
4957 Reviewed by Laszlo Gombos and Tor Arne Vestbø.
4959 [Qt] Remove unnecessary "../Source" from paths
4960 after moving source files into Source is finished.
4962 * JavaScriptCore.pri:
4964 2011-01-19 Benjamin Kalman <kalman@chromium.org>
4966 Reviewed by Darin Adler.
4968 Don't return void from void function String::split
4969 https://bugs.webkit.org/show_bug.cgi?id=52684
4971 * wtf/text/WTFString.cpp:
4972 (WTF::String::split):
4974 2011-01-18 Kenneth Russell <kbr@google.com>
4976 Unreviewed, rolling out r76078.
4977 http://trac.webkit.org/changeset/76078
4978 https://bugs.webkit.org/show_bug.cgi?id=52668
4980 Caused crashes of fast/canvas/webgl/constants.html,
4981 fast/canvas/webgl/gl-enum-tests.html, and possibly other layout
4982 test crashes in Release mode. WebGL crashes were observed with
4983 "run-webkit-tests fast/canvas/webgl". It was necessary to run
4984 multiple tests to provoke the crash.
4986 * interpreter/RegisterFile.h:
4987 (JSC::RegisterFile::markGlobals):
4988 * runtime/JSActivation.cpp:
4989 (JSC::JSActivation::markChildren):
4990 * runtime/JSGlobalObject.cpp:
4991 (JSC::JSGlobalObject::markChildren):
4993 2011-01-18 Oliver Hunt <oliver@apple.com>
4995 Reviewed by Gavin Barraclough.
4997 [jsfunfuzz] Assertion asking activation for arguments when arguments is overridden
4998 https://bugs.webkit.org/show_bug.cgi?id=52690
5000 Clean up code to retrieve arguments from activation and function objects.
5001 Remove the incorrect assertion from JSActivation's argumentsGetter.
5003 * interpreter/Interpreter.cpp:
5004 (JSC::Interpreter::retrieveArguments):
5005 * runtime/JSActivation.cpp:
5006 (JSC::JSActivation::argumentsGetter):
5008 2011-01-18 Geoffrey Garen <ggaren@apple.com>
5010 Reviewed by Darin Adler.
5012 Removed RegisterFile::markGlobals because it was obtuse, and it
5013 unnecessarily relied on conservative marking.
5014 https://bugs.webkit.org/show_bug.cgi?id=52668
5016 * interpreter/RegisterFile.h: Removed markGlobals.
5018 * runtime/JSActivation.cpp:
5019 (JSC::JSActivation::markChildren): Added a comment explaning why some
5020 JSActivations don't always mark their registers arrays.
5022 * runtime/JSGlobalObject.cpp:
5023 (JSC::JSGlobalObject::markChildren): Instead of calling markGlobals, mark
5024 the registers array directly.
5026 2011-01-18 Michael Saboff <msaboff@apple.com>
5028 Reviewed by Oliver Hunt.
5030 <rdar://problem/8875432> Regression: Some text-only e-mails cause hang beneath RegExp::match (52540)
5031 https://bugs.webkit.org/show_bug.cgi?id=52540
5032 https://bugs.webkit.org/show_bug.cgi?id=52662
5034 Directly use backtrack label with parentheses nested under a
5035 non-capturing parentheses. Also linked current parentheses
5036 tail code object for possible parens nested within a non-capturing
5040 (JSC::Yarr::YarrGenerator::BacktrackDestination::linkBacktrackToLabel):
5041 (JSC::Yarr::YarrGenerator::generateParenthesesSingle):
5043 2011-01-18 Daniel Bates <dbates@rim.com>
5045 Reviewed by Gavin Barraclough.
5047 Only use moving memory model assumption in ExecutableAllocator::intializePageSize() for Symbian OS
5048 https://bugs.webkit.org/show_bug.cgi?id=52517
5050 Patch by David Tapuska
5052 Currently, we compile code with respect to the Symbian-specific moving memory model
5053 assumption for all ARMv5 or lower architectures. Instead, we should only compile
5054 such code when building for Symbian OS on those architectures because this model
5055 is Symbian-specific.
5057 * jit/ExecutableAllocator.cpp:
5058 (JSC::ExecutableAllocator::intializePageSize):
5060 2011-01-18 Dimitry Andric <dim@freebsd.org>
5062 Reviewed by Andreas Kling.
5064 Fix linking JavaScriptCore on FreeBSD/amd64
5065 https://bugs.webkit.org/show_bug.cgi?id=52591
5067 Linking of JavaScriptCore on FreeBSD/amd64 fails, for the same reason as
5068 in bug 28422: cti_vm_throw needs a "@plt" suffix, otherwise the linker
5069 complains about the relocation type.
5071 * jit/JITStubs.cpp: use @plt suffix on x86_64 platforms, for both Linux
5074 2011-01-18 Oliver Hunt <oliver@apple.com>
5076 Reviewed by Antti Koivisto.
5078 [jsfunfuzz] Assertion in codegen for array of NaN constants
5079 https://bugs.webkit.org/show_bug.cgi?id=52643
5081 Don't cache NaN literals in the code generator, as NaN doesn't compare
5082 as equal to itself it causes problems when rehashing the number cache.
5084 * bytecompiler/BytecodeGenerator.cpp:
5085 (JSC::BytecodeGenerator::emitLoad):
5087 2011-01-17 Jarred Nicholls <jarred@sencha.com>
5089 Reviewed by Csaba Osztrogonác.
5091 REGRESSION(r75709): Return value of fscanf() shouldn't be ignored.
5092 https://bugs.webkit.org/show_bug.cgi?id=52585
5094 gcc 4.4.4+ has warn_unused_value attribute on fscanf, so we should check
5095 the return value to get around the gcc warning
5097 * jit/ExecutableAllocatorFixedVMPool.cpp:
5098 (JSC::maybeModifyVMPoolSize):
5100 2011-01-17 Michael Saboff <msaboff@apple.com>
5102 Reviewed by Oliver Hunt.
5104 [regexfuzz] Crash running regex with lookahead
5105 https://bugs.webkit.org/show_bug.cgi?id=52548
5107 Eliminated agressive chaining of backtracks. This code was overwriting
5108 already valid backtrack information.
5111 (JSC::Yarr::YarrGenerator::ParenthesesTail::processBacktracks):
5113 2011-01-17 Tony Gentilcore <tonyg@chromium.org>
5115 Reviewed by Alexey Proskuryakov.
5117 Fix some headers with missing or misspelled #ifndef guards
5118 https://bugs.webkit.org/show_bug.cgi?id=52545
5120 * wtf/RefPtrHashMap.h:
5122 2011-01-17 Dan Bernstein <mitz@apple.com>
5124 Rubber-stamped by Mark Rowe.
5126 Update xcodeproj svn:ignore to include xcuserdata.
5128 * JavaScriptCore.xcodeproj: Modified property svn:ignore.
5130 2011-01-16 Adam Barth <abarth@webkit.org>
5132 Rubber-stamped by Eric Seidel.
5134 Move WebKit into Source
5135 https://bugs.webkit.org/show_bug.cgi?id=52530
5137 * JavaScriptCore.gyp/JavaScriptCore.gyp:
5139 2011-01-16 Oliver Hunt <oliver@apple.com>
5141 Reviewed by Sam Weinig.
5143 [jsfunfuzz] Parser doesn't correctly validate for-loop syntax
5144 https://bugs.webkit.org/show_bug.cgi?id=52516
5146 Ensure that we always check for a semicolon after encountering
5147 multiple declarations in the initialiser portion of a for-loop.
5149 * parser/JSParser.cpp:
5150 (JSC::JSParser::parseForStatement):
5152 2011-01-16 Oliver Hunt <oliver@apple.com>
5154 Reviewed by Geoffrey Garen.
5156 Strict mode restrictions on arguments and eval usage aren't complete
5157 https://bugs.webkit.org/show_bug.cgi?id=52528
5159 Fix a few bugs in strict mode where we incorrect allow mutation of
5160 arguments and eval in the parser.
5162 Alas the "optimisation" used by the syntax checker for validating
5163 binary and unary expressions was too aggressive: we do actually need
5164 a stack for operations and operands although it needn't be as complete
5165 as that used for the full AST builder.
5167 Also disallow assignment to arguments in all cases as allowing arguments
5168 to be assignable is always an error in strict mode, regardless of context.
5170 * parser/ASTBuilder.h:
5171 (JSC::ASTBuilder::BinaryExprContext::BinaryExprContext):
5172 (JSC::ASTBuilder::UnaryExprContext::UnaryExprContext):
5173 * parser/JSParser.cpp:
5174 (JSC::JSParser::parseAssignmentExpression):
5175 (JSC::JSParser::parseBinaryExpression):
5176 (JSC::JSParser::parseUnaryExpression):
5177 * parser/SyntaxChecker.h:
5178 (JSC::SyntaxChecker::BinaryExprContext::BinaryExprContext):
5179 (JSC::SyntaxChecker::BinaryExprContext::~BinaryExprContext):
5180 (JSC::SyntaxChecker::UnaryExprContext::UnaryExprContext):
5181 (JSC::SyntaxChecker::UnaryExprContext::~UnaryExprContext):
5182 (JSC::SyntaxChecker::appendBinaryExpressionInfo):
5183 (JSC::SyntaxChecker::operatorStackPop):
5185 2011-01-15 Geoffrey Garen <ggaren@apple.com>
5187 Reviewed by Oliver Hunt.
5189 Rolled back in r75886.
5190 https://bugs.webkit.org/show_bug.cgi?id=52527
5192 r75886 broke the GTK Linux bot because Linux was -- quite surprisingly --
5193 set up to use the constants for embedded devices.
5195 * jit/ExecutableAllocatorFixedVMPool.cpp:
5196 (JSC::maybeModifyVMPoolSize): Separated Linux constants from embedded
5199 2011-01-15 Sheriff Bot <webkit.review.bot@gmail.com>
5201 Unreviewed, rolling out r75886.
5202 http://trac.webkit.org/changeset/75886
5203 https://bugs.webkit.org/show_bug.cgi?id=52526
5205 "Broke GTK+ 64bit" (Requested by xan_ on #webkit).
5207 * jit/ExecutableAllocatorFixedVMPool.cpp:
5209 2011-01-15 Geoffrey Garen <ggaren@apple.com>
5211 Reviewed by Sam Weinig.
5213 <rdar://problem/8870429> Shrink the executable pool on embedded devices
5215 * jit/ExecutableAllocatorFixedVMPool.cpp: Dropped the pool size from 32MB
5218 2011-01-15 Oliver Hunt <oliver@apple.com>
5220 Reviewed by Maciej Stachowiak.
5222 Incorrect behavior changing attributes of an accessor
5223 https://bugs.webkit.org/show_bug.cgi?id=52515
5225 defineProperty doesn't correctly handle changing attributes of an accessor
5226 property. This is because we don't pass the full descriptor to the
5227 putDescriptor helper function, which means we have insufficient information
5228 to do the right thing. Once that's passed the correct behavior is relatively
5229 simple to implement.
5231 * runtime/JSObject.cpp:
5232 (JSC::putDescriptor):
5233 (JSC::JSObject::defineOwnProperty):
5235 2011-01-14 Oliver Hunt <oliver@apple.com>
5237 Reviewed by Maciej Stachowiak.
5239 [jsfunfuzz] Incorrect handling of consecutive duplicate labels
5240 https://bugs.webkit.org/show_bug.cgi?id=52505
5242 Compare StringImpl*'s instead of Identifier*'s when looking for duplicate
5245 * parser/JSParser.cpp:
5246 (JSC::JSParser::parseExpressionOrLabelStatement):
5248 2011-01-14 Simon Fraser <simon.fraser@apple.com>
5252 Initialize m_operationInProgress after r75855.
5257 2011-01-14 Geoffrey Garen <ggaren@apple.com>
5259 Reverted accidentally committed code from my last checkin.
5262 (JSC::Heap::markRoots):
5264 2011-01-14 Geoffrey Garen <ggaren@apple.com>
5266 Reviewed by Sam Weinig.
5268 Try to fix the GTK bot.
5272 (JSC::Heap::markRoots): Kids, remember to initialize your data members.
5273 Knowing is half the battle.
5275 2011-01-14 Oliver Hunt <oliver@apple.com>
5277 Reviewed by Stephanie Lewis.
5279 [jsfunfuzz] We should be clearing the lexers temporary character buffers when switching to strict mode
5280 https://bugs.webkit.org/show_bug.cgi?id=52501
5282 Clear the temporary character buffers used for reading escaped characters and
5286 (JSC::Lexer::setOffset):
5288 2011-01-14 Geoffrey Garen <ggaren@apple.com>
5290 Try to fix non-Dtrace builds: #include Tracing.h instead of TracingDtrace.h.
5294 2011-01-13 Geoffrey Garen <ggaren@apple.com>
5296 Reviewed by Oliver Hunt.
5298 Split out a MarkedSpace strategy object from Heap.
5299 https://bugs.webkit.org/show_bug.cgi?id=52421
5301 SunSpider reports no change.
5306 * JavaScriptCore.gypi:
5307 * JavaScriptCore.pro:
5308 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
5309 * JavaScriptCore.xcodeproj/project.pbxproj: Updated our 7 build systems. Which is cool.
5313 (JSC::Heap::destroy):
5314 (JSC::Heap::recordExtraCost):
5315 (JSC::Heap::allocate):
5316 (JSC::Heap::markConservatively):
5317 (JSC::Heap::markRoots):
5318 (JSC::Heap::objectCount):
5319 (JSC::Heap::statistics):
5321 (JSC::Heap::isBusy):
5322 (JSC::Heap::collectAllGarbage):
5323 (JSC::Heap::primaryHeapBegin):
5324 (JSC::Heap::primaryHeapEnd):
5326 (JSC::Heap::globalData):
5327 (JSC::Heap::markedSpace):
5328 (JSC::Heap::isCellMarked):
5329 (JSC::Heap::checkMarkCell):
5330 (JSC::Heap::markCell): Moved all code pertaining to managing chunks of
5331 collector memory out of this class. Heap now just delegates to MarkedSpace.
5334 (JSC::JSCell::Heap::heap): Updated for MarkedSpace delegation.
5336 * runtime/JSValue.h: Moved the ValueStringPair typedef to help with #includes.
5338 * runtime/MarkedSpace.cpp: Copied from runtime/Heap.cpp.
5339 (JSC::MarkedSpace::MarkedSpace):
5340 (JSC::MarkedSpace::destroy):
5341 (JSC::MarkedSpace::allocateBlock):
5342 (JSC::MarkedSpace::freeBlock):
5343 (JSC::MarkedSpace::allocate):
5344 (JSC::MarkedSpace::resizeBlocks):
5345 (JSC::MarkedSpace::growBlocks):
5346 (JSC::MarkedSpace::shrinkBlocks):
5347 (JSC::MarkedSpace::markConservatively):
5348 (JSC::MarkedSpace::clearMarkBits):
5349 (JSC::MarkedSpace::markedCells):
5350 (JSC::MarkedSpace::sweep):
5351 (JSC::MarkedSpace::objectCount):
5352 (JSC::MarkedSpace::addToStatistics):
5353 (JSC::MarkedSpace::statistics):
5354 (JSC::MarkedSpace::size):
5355 (JSC::MarkedSpace::reset):
5356 (JSC::MarkedSpace::primaryHeapBegin):
5357 (JSC::MarkedSpace::primaryHeapEnd):
5358 * runtime/MarkedSpace.h: Copied from runtime/Heap.h.
5359 (JSC::MarkedSpace::globalData):
5360 (JSC::MarkedSpace::didShrink):
5361 (JSC::MarkedSpace::cellBlock):
5362 (JSC::MarkedSpace::cellOffset):
5363 (JSC::MarkedSpace::isCellMarked):
5364 (JSC::MarkedSpace::checkMarkCell):
5365 (JSC::MarkedSpace::markCell): Moved all code pertaining to managing chunks of
5366 collector memory into this class.
5368 * runtime/MemoryStatistics.cpp:
5369 (JSC::heapStatistics):
5370 * runtime/MemoryStatistics.h: Updated for MarkedSpace delegation.
5372 2011-01-14 Oliver Hunt <oliver@apple.com>
5374 Reviewed by Gavin Barraclough.
5376 [jsfunfuzz] parser doesn't enforce continue restrictions correctly.
5377 https://bugs.webkit.org/show_bug.cgi?id=52493
5379 This patch reworks handling of break, continue and label statements
5380 to correctly handle all the valid and invalid cases. Previously certain
5381 errors would be missed by the parser in strict mode, but the bytecode
5382 generator needed to handle those cases for non-strict code so nothing
5383 failed, it simply became non-standard behaviour.
5385 Now that we treat break and continue errors as early faults in non-strict
5386 mode as well that safety net has been removed so the parser bugs result in
5387 crashes at codegen time.
5389 * parser/JSParser.cpp:
5390 (JSC::JSParser::ScopeLabelInfo::ScopeLabelInfo):
5391 (JSC::JSParser::next):
5392 (JSC::JSParser::nextTokenIsColon):
5393 (JSC::JSParser::continueIsValid):
5394 Continue is only valid in loops so we can't use breakIsValid()
5395 (JSC::JSParser::pushLabel):
5396 We now track whether the label is for a loop (and is therefore a
5397 valid target for continue.
5398 (JSC::JSParser::popLabel):
5399 (JSC::JSParser::getLabel):
5400 Replace hasLabel with getLabel so that we can validate the target
5401 when parsing continue statements.
5402 (JSC::JSParser::Scope::continueIsValid):
5403 (JSC::JSParser::Scope::pushLabel):
5404 (JSC::JSParser::Scope::getLabel):
5405 (JSC::JSParser::JSParser):
5406 (JSC::JSParser::parseBreakStatement):
5407 (JSC::JSParser::parseContinueStatement):
5408 (JSC::LabelInfo::LabelInfo):
5409 (JSC::JSParser::parseExpressionOrLabelStatement):
5410 Consecutive labels now get handled iteratively so that we can determine
5411 whether they're valid targets for continue.
5413 (JSC::Lexer::nextTokenIsColon):
5415 (JSC::Lexer::setOffset):
5417 2011-01-14 Patrick Gansterer <paroga@webkit.org>
5419 Reviewed by Adam Roben.
5421 Use the Windows thread pool instead of an extra thread for FastMalloc scavenging
5422 https://bugs.webkit.org/show_bug.cgi?id=45186
5424 * wtf/FastMalloc.cpp:
5425 (WTF::TCMalloc_PageHeap::scheduleScavenger): Added missing this pointer to CreateTimerQueueTimer().
5427 2011-01-14 Patrick Gansterer <paroga@webkit.org>
5429 Reviewed by Adam Roben.
5431 Use the Windows thread pool instead of an extra thread for FastMalloc scavenging
5432 https://bugs.webkit.org/show_bug.cgi?id=45186
5434 r75819 accidentally changed the initial state of the scavenge timer.
5436 * wtf/FastMalloc.cpp:
5437 (WTF::TCMalloc_PageHeap::initializeScavenger): Changed initial state of m_scavengingSuspended to true.
5439 2011-01-14 Patrick Gansterer <paroga@webkit.org>
5441 Unreviewed Windows Release build fix.
5443 * wtf/FastMalloc.cpp:
5444 (WTF::TCMalloc_PageHeap::scavengerTimerFired):
5446 2011-01-14 Patrick Gansterer <paroga@webkit.org>
5448 Unreviewed Windows Release build fix.
5450 * wtf/FastMalloc.cpp:
5451 (WTF::TCMalloc_PageHeap::scavengerTimerFired):
5453 2011-01-14 Patrick Gansterer <paroga@webkit.org>
5455 Reviewed by Adam Roben.
5457 Use the Windows thread pool instead of an extra thread for FastMalloc scavenging
5458 https://bugs.webkit.org/show_bug.cgi?id=45186
5460 Use CreateTimerQueueTimer() to start periodicScavenge() and stop it with DeleteTimerQueueTimer().
5462 * wtf/FastMalloc.cpp:
5463 (WTF::TCMalloc_PageHeap::initializeScavenger):
5464 (WTF::TCMalloc_PageHeap::isScavengerSuspended):
5465 (WTF::TCMalloc_PageHeap::scheduleScavenger):
5466 (WTF::TCMalloc_PageHeap::rescheduleScavenger):
5467 (WTF::TCMalloc_PageHeap::suspendScavenger):
5468 (WTF::scavengerTimerFired):
5469 (WTF::TCMalloc_PageHeap::periodicScavenge):
5470 (WTF::TCMalloc_PageHeap::signalScavenger):
5472 2011-01-14 Laszlo Gombos <laszlo.1.gombos@nokia.com>
5474 Reviewed by Kenneth Rohde Christiansen.
5476 Align import/export directives
5477 https://bugs.webkit.org/show_bug.cgi?id=52208
5479 * API/JSBase.h: Align import/export directives with
5480 WebKit2/Shared/API/c/WKBase.h
5482 2011-01-14 Michael Saboff <msaboff@apple.com>
5484 Reviewed by Oliver Hunt.
5486 Incorrect backtracking for nested alternatives
5487 https://bugs.webkit.org/show_bug.cgi?id=52387
5489 In the process of propigating a datalabel it wasn't getting connected
5490 to a destination when the destination was an indirect jump. Added
5491 code to recognize a direct backtrack destination that was an indirect
5492 jump and added mechanism to associate DataLabelPtrs with indirect
5495 BacktrackDestination::linkDataLabelToHereIfExists()
5498 (JSC::Yarr::YarrGenerator::IndirectJumpEntry::IndirectJumpEntry):
5499 (JSC::Yarr::YarrGenerator::IndirectJumpEntry::addDataLabel):
5500 (JSC::Yarr::YarrGenerator::GenerationState::addIndirectJumpEntry):
5501 (JSC::Yarr::YarrGenerator::GenerationState::emitIndirectJumpTable):
5502 Changes to link indirect jumps with DataLabelPtr's.
5503 (JSC::Yarr::YarrGenerator::BacktrackDestination::clearSubDataLabelPtr):
5504 (JSC::Yarr::YarrGenerator::TermGenerationState::linkDataLabelToBacktrackIfExists):
5505 Updated to handle immediate linking of indirect jumps to
5507 (JSC::Yarr::YarrGenerator::generateParenthesesDisjunction): Changed to
5508 reflect updated linkDataLabelToBacktrackIfExists().
5510 2011-01-14 Pavel Podivilov <podivilov@chromium.org>
5512 Reviewed by Yury Semikhatsky.
5514 Web Inspector: provide script column offset to frontend.
5515 https://bugs.webkit.org/show_bug.cgi?id=52377
5517 * parser/SourceCode.h:
5518 (JSC::SourceCode::SourceCode):
5519 (JSC::SourceCode::firstColumn):
5521 2011-01-13 Darin Adler <darin@apple.com>
5523 Reviewed by Geoff Garen.
5525 <rdar://problem/5469576> Use __PTK_FRAMEWORK_JAVASCRIPTCORE_KEY0 if available.
5527 * DerivedSources.make: Create a header file, HeaderDetection.h, that tells
5528 us whether pthread_machdep.h is available.
5529 * wtf/FastMalloc.cpp: If __PTK_FRAMEWORK_JAVASCRIPTCORE_KEY0 is available, then
5530 don't do the pthread_getspecific_function_pointer trick.
5531 (WTF::setThreadHeap): Ditto, but set thread-specific data.
5532 (WTF::TCMalloc_ThreadCache::GetThreadHeap): Ditto, but get rather than set.
5534 2011-01-13 Xan Lopez <xlopez@igalia.com>
5536 Reviewed by Gavin Barraclough.
5538 JIT requires VM overcommit (particularly on x86-64), Linux does not by default support this without swap?
5539 https://bugs.webkit.org/show_bug.cgi?id=42756
5541 The FixedVMPool Allocator does not work well on systems where
5542 allocating very large amounts of memory upfront is not reasonable,
5543 like Linux without overcommit enabled. As a workaround, on Linux,
5544 default to the values used in embedded environments (in the MB
5545 range), and only jump to the GB range if we detect at runtime that
5546 overcommit is enabled. Should fix crashes on Linux/x86_64 with
5547 less than 3 or 4GB of RAM.
5549 * jit/ExecutableAllocatorFixedVMPool.cpp:
5550 (JSC::FixedVMPoolAllocator::free): use new variables for VM pool
5551 size and coalesce limit.
5552 (JSC::ExecutableAllocator::isValid): swap the variables from
5553 embedded to generic values at runtime, on linux, if overcommit is
5555 (JSC::ExecutableAllocator::underMemoryPressure): use new variables
5556 for VM pool size and coalesce limit.
5558 2011-01-12 Xan Lopez <xlopez@igalia.com>
5560 Reviewed by Martin Robinson.
5562 Add new Yarr.h header to the list file.
5564 * GNUmakefile.am: ditto.
5566 2011-01-12 Martin Robinson <mrobinson@igalia.com>
5568 Missing Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h in WebKitGtk tarball
5569 https://bugs.webkit.org/show_bug.cgi?id=52299
5571 * GNUmakefile.am: Fix the GTK+ build on ARMv7 by including missing source
5572 files in the source list.
5574 2011-01-12 Peter Varga <pvarga@webkit.org>
5576 Reviewed by Gavin Barraclough.
5579 https://bugs.webkit.org/show_bug.cgi?id=51021
5581 Move other common constants and functions from YARR's different files
5583 Use Yarr.h header instead of including other YARR headers where it
5586 * JavaScriptCore.gypi:
5587 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
5588 * JavaScriptCore.xcodeproj/project.pbxproj:
5589 * runtime/RegExp.cpp:
5590 * yarr/Yarr.h: Added.
5591 * yarr/YarrInterpreter.cpp:
5592 * yarr/YarrInterpreter.h:
5594 (JSC::Yarr::jitCompile):
5595 (JSC::Yarr::execute):
5597 * yarr/YarrParser.h:
5598 * yarr/YarrPattern.cpp:
5599 (JSC::Yarr::YarrPattern::compile):
5600 (JSC::Yarr::YarrPattern::YarrPattern):
5601 * yarr/YarrPattern.h:
5603 2011-01-12 Sheriff Bot <webkit.review.bot@gmail.com>
5605 Unreviewed, rolling out r75595.
5606 http://trac.webkit.org/changeset/75595
5607 https://bugs.webkit.org/show_bug.cgi?id=52286
5609 It broke fast/regex/pcre-test-1.html (Requested by Ossy on
5612 * JavaScriptCore.gypi:
5613 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
5614 * JavaScriptCore.xcodeproj/project.pbxproj:
5615 * runtime/RegExp.cpp:
5616 * yarr/Yarr.h: Removed.
5617 * yarr/YarrInterpreter.cpp:
5618 * yarr/YarrInterpreter.h:
5620 (JSC::Yarr::jitCompile):
5622 (JSC::Yarr::execute):
5623 * yarr/YarrParser.h:
5624 * yarr/YarrPattern.cpp:
5625 (JSC::Yarr::compile):
5626 (JSC::Yarr::YarrPattern::YarrPattern):
5627 * yarr/YarrPattern.h:
5629 2011-01-12 Peter Varga <pvarga@webkit.org>
5631 Reviewed by Gavin Barraclough.
5634 https://bugs.webkit.org/show_bug.cgi?id=51021
5636 Move other common constants and functions from YARR's different files
5638 Use Yarr.h header instead of including other YARR headers where it
5641 * JavaScriptCore.gypi:
5642 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
5643 * JavaScriptCore.xcodeproj/project.pbxproj:
5644 * runtime/RegExp.cpp:
5645 * yarr/Yarr.h: Added.
5646 * yarr/YarrInterpreter.cpp:
5647 * yarr/YarrInterpreter.h:
5649 (JSC::Yarr::jitCompile):
5650 (JSC::Yarr::execute):
5652 * yarr/YarrParser.h:
5653 * yarr/YarrPattern.cpp:
5654 (JSC::Yarr::YarrPattern::compile):
5655 (JSC::Yarr::YarrPattern::YarrPattern):
5656 * yarr/YarrPattern.h:
5658 2011-01-11 Michael Saboff <msaboff@apple.com>
5660 Reviewed by Geoffrey Garen.
5662 Missing call to popTempSortVector() for exception case in JSArray::sort.
5663 https://bugs.webkit.org/show_bug.cgi?id=50718
5665 Fix to patch of 50718 that added pushTempSortVector() and
5666 popTempSortVector() to JSArray::sort() to mark elements during sort.
5667 Need to add popTempSortVector() for the return case if toString()
5670 * runtime/JSArray.cpp:
5671 (JSC::JSArray::sort): Added popTempSortVector()
5673 2011-01-11 Xan Lopez <xlopez@igalia.com>
5675 Reviewed by Darin Adler.
5677 Microoptimization in ~JSString
5678 https://bugs.webkit.org/show_bug.cgi?id=52222
5680 The case where m_fibers is 0 seems to be the most common one
5681 (almost 1/2 of the time, followed at some distance by m_fibers = 1
5682 in 1/4 of the cases in a typical SunSpider execution). We can save
5683 one comparison in this common case by doing a bit of refactoring
5684 in the JSString destructor; overall a 0.3% progression, but only
5685 the string tests show improvement.
5687 * runtime/JSString.h:
5688 (JSC::RopeBuilder::~JSString):
5690 2011-01-10 Michael Saboff <msaboff@apple.com>
5692 Reviewed by Geoffrey Garen.
5694 ASSERTION Failure in JSC::binaryChop
5695 https://bugs.webkit.org/show_bug.cgi?id=25614
5697 Changed JITStubs::cti_register_file_check() to use the current stack's
5698 return PC to find the bytecode for handling the exception in the prior
5699 frame. Also added the appropriate arrity check routine call to the
5700 JIT to bytecode vector (m_callReturnIndexVector) in the CodeBlock.
5703 (JSC::JIT::privateCompile): Changed the arrity check call location
5704 so that it gets added to the m_calls list so that it's included in
5705 CodeBlock::m_callReturnIndexVector.
5707 (JSC::DEFINE_STUB_FUNCTION): Use the current call frame's return PC.
5709 2011-01-10 Daniel Bates <dbates@rim.com>
5711 Reviewed by Martin Robinson.
5713 Remove extraneous COMPILER(GCC) condition when checking GCC_VERSION_AT_LEAST()
5714 https://bugs.webkit.org/show_bug.cgi?id=52178
5716 It is sufficient to test GCC_VERSION_AT_LEAST() instead of both COMPILER(GCC) and
5717 GCC_VERSION_AT_LEAST(). Notice GCC_VERSION_AT_LEAST() is defined to be 0 when we
5718 are not compiling with GCC.
5720 Fixes style issues at the callsites (i.e. replace comma with comma-space in
5721 macro function argument list). Also, makes a spelling correction in a comment.
5723 * jit/ExecutableAllocator.h:
5724 (JSC::ExecutableAllocator::cacheFlush):
5727 2011-01-10 Geoffrey Garen <ggaren@apple.com>
5729 Build fix: removed some uses of nextNumber that I missed last time.
5733 (JSC::Heap::collectAllGarbage):
5735 2011-01-10 Daniel Bates <dbates@rim.com>
5737 Reviewed by Darin Adler.
5739 Use __builtin_expect when compiling using RVCT in GNU mode
5740 https://bugs.webkit.org/show_bug.cgi?id=51866
5742 We should only use __builtin_expect if we are compiling with GCC or RVCT 3 or higher in GNU mode
5743 as pointed out by Siddharth Mathur per <http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0202h/Cjabddedbde.html>.
5745 * wtf/AlwaysInline.h:
5746 * wtf/Platform.h: Removed define WTF_COMPILER_RVCT4_OR_GREATER. Instead added macro
5747 function RVCT_VERSION_AT_LEAST so that we can test for an arbitrary minimum RVCT
5750 2011-01-10 Geoffrey Garen <ggaren@apple.com>
5752 Reviewed by Oliver Hunt.
5754 Moved Collector.* => Heap.*, since the file contains a class named "Heap".
5756 * API/JSCallbackObject.cpp:
5760 * JavaScriptCore.gypi:
5761 * JavaScriptCore.pro:
5762 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
5763 * JavaScriptCore.xcodeproj/project.pbxproj:
5764 * interpreter/Interpreter.cpp:
5765 * interpreter/RegisterFile.h:
5767 * runtime/Collector.cpp: Removed.
5768 * runtime/Collector.h: Removed.
5769 * runtime/CollectorHeapIterator.h:
5770 * runtime/GCActivityCallbackCF.cpp:
5771 * runtime/Heap.cpp: Copied from JavaScriptCore/runtime/Collector.cpp.
5772 * runtime/Heap.h: Copied from JavaScriptCore/runtime/Collector.h.
5773 * runtime/InitializeThreading.cpp:
5775 * runtime/JSGlobalData.cpp:
5776 * runtime/JSGlobalData.h:
5777 * runtime/JSLock.cpp:
5778 * runtime/JSNumberCell.h:
5779 * runtime/MachineStackMarker.cpp:
5780 * runtime/MemoryStatistics.h:
5781 * runtime/Protect.h:
5782 * runtime/UString.cpp:
5783 * runtime/WeakGCMap.h:
5784 * runtime/WeakGCPtr.h:
5786 2011-01-10 Xan Lopez <xlopez@igalia.com>
5788 Reviewed by Gavin Barraclough.
5790 Remove unused isString() case in JSString::toPrimitiveString()
5791 https://bugs.webkit.org/show_bug.cgi?id=52167
5793 We never call toPrimitiveString() with strings, so remove the
5794 check and add an ASSERT ensuring this never happens. 0.7% overall
5795 progression in sunspider, since one of the call sites is very hot.
5797 * runtime/JSString.h:
5798 (JSC::JSValue::toPrimitiveString):
5800 2011-01-10 Peter Varga <pvarga@inf.u-szeged.hu>
5802 Reviewed by Gavin Barraclough.
5804 Rename the existing YARR files and classes
5805 https://bugs.webkit.org/show_bug.cgi?id=51872
5807 Replace the "Regex" prefix with "Yarr" in the name of YARR files and classes.
5812 * JavaScriptCore.gypi:
5813 * JavaScriptCore.pro:
5814 * JavaScriptCore.xcodeproj/project.pbxproj:
5815 * runtime/RegExp.cpp:
5816 (JSC::RegExp::compile):
5817 (JSC::RegExp::match):
5818 (JSC::RegExp::printTraceData):
5819 * yarr/YarrInterpreter.cpp: Renamed from Source/JavaScriptCore/yarr/RegexInterpreter.cpp.
5820 (JSC::Yarr::Interpreter::appendParenthesesDisjunctionContext):
5821 (JSC::Yarr::Interpreter::popParenthesesDisjunctionContext):
5822 (JSC::Yarr::Interpreter::DisjunctionContext::DisjunctionContext):
5823 (JSC::Yarr::Interpreter::DisjunctionContext::operator new):
5824 (JSC::Yarr::Interpreter::allocDisjunctionContext):
5825 (JSC::Yarr::Interpreter::freeDisjunctionContext):
5826 (JSC::Yarr::Interpreter::ParenthesesDisjunctionContext::ParenthesesDisjunctionContext):
5827 (JSC::Yarr::Interpreter::ParenthesesDisjunctionContext::operator new):
5828 (JSC::Yarr::Interpreter::ParenthesesDisjunctionContext::restoreOutput):
5829 (JSC::Yarr::Interpreter::ParenthesesDisjunctionContext::getDisjunctionContext):
5830 (JSC::Yarr::Interpreter::allocParenthesesDisjunctionContext):
5831 (JSC::Yarr::Interpreter::freeParenthesesDisjunctionContext):
5832 (JSC::Yarr::Interpreter::InputStream::InputStream):
5833 (JSC::Yarr::Interpreter::InputStream::next):
5834 (JSC::Yarr::Interpreter::InputStream::rewind):
5835 (JSC::Yarr::Interpreter::InputStream::read):
5836 (JSC::Yarr::Interpreter::InputStream::readPair):
5837 (JSC::Yarr::Interpreter::InputStream::readChecked):
5838 (JSC::Yarr::Interpreter::InputStream::reread):
5839 (JSC::Yarr::Interpreter::InputStream::prev):
5840 (JSC::Yarr::Interpreter::InputStream::getPos):
5841 (JSC::Yarr::Interpreter::InputStream::setPos):
5842 (JSC::Yarr::Interpreter::InputStream::atStart):
5843 (JSC::Yarr::Interpreter::InputStream::atEnd):
5844 (JSC::Yarr::Interpreter::InputStream::checkInput):
5845 (JSC::Yarr::Interpreter::InputStream::uncheckInput):
5846 (JSC::Yarr::Interpreter::InputStream::isNotAvailableInput):
5847 (JSC::Yarr::Interpreter::testCharacterClass):
5848 (JSC::Yarr::Interpreter::checkCharacter):
5849 (JSC::Yarr::Interpreter::checkCasedCharacter):
5850 (JSC::Yarr::Interpreter::checkCharacterClass):
5851 (JSC::Yarr::Interpreter::tryConsumeBackReference):
5852 (JSC::Yarr::Interpreter::matchAssertionBOL):
5853 (JSC::Yarr::Interpreter::matchAssertionEOL):
5854 (JSC::Yarr::Interpreter::matchAssertionWordBoundary):
5855 (JSC::Yarr::Interpreter::backtrackPatternCharacter):
5856 (JSC::Yarr::Interpreter::backtrackPatternCasedCharacter):
5857 (JSC::Yarr::Interpreter::matchCharacterClass):
5858 (JSC::Yarr::Interpreter::backtrackCharacterClass):
5859 (JSC::Yarr::Interpreter::matchBackReference):
5860 (JSC::Yarr::Interpreter::backtrackBackReference):
5861 (JSC::Yarr::Interpreter::recordParenthesesMatch):
5862 (JSC::Yarr::Interpreter::resetMatches):
5863 (JSC::Yarr::Interpreter::parenthesesDoBacktrack):
5864 (JSC::Yarr::Interpreter::matchParenthesesOnceBegin):
5865 (JSC::Yarr::Interpreter::matchParenthesesOnceEnd):
5866 (JSC::Yarr::Interpreter::backtrackParenthesesOnceBegin):
5867 (JSC::Yarr::Interpreter::backtrackParenthesesOnceEnd):
5868 (JSC::Yarr::Interpreter::matchParenthesesTerminalBegin):
5869 (JSC::Yarr::Interpreter::matchParenthesesTerminalEnd):
5870 (JSC::Yarr::Interpreter::backtrackParenthesesTerminalBegin):
5871 (JSC::Yarr::Interpreter::backtrackParenthesesTerminalEnd):
5872 (JSC::Yarr::Interpreter::matchParentheticalAssertionBegin):
5873 (JSC::Yarr::Interpreter::matchParentheticalAssertionEnd):
5874 (JSC::Yarr::Interpreter::backtrackParentheticalAssertionBegin):
5875 (JSC::Yarr::Interpreter::backtrackParentheticalAssertionEnd):
5876 (JSC::Yarr::Interpreter::matchParentheses):
5877 (JSC::Yarr::Interpreter::backtrackParentheses):
5878 (JSC::Yarr::Interpreter::lookupForBeginChars):
5879 (JSC::Yarr::Interpreter::matchDisjunction):
5880 (JSC::Yarr::Interpreter::matchNonZeroDisjunction):
5881 (JSC::Yarr::Interpreter::interpret):
5882 (JSC::Yarr::Interpreter::Interpreter):
5883 (JSC::Yarr::ByteCompiler::ParenthesesStackEntry::ParenthesesStackEntry):
5884 (JSC::Yarr::ByteCompiler::ByteCompiler):
5885 (JSC::Yarr::ByteCompiler::compile):
5886 (JSC::Yarr::ByteCompiler::checkInput):
5887 (JSC::Yarr::ByteCompiler::assertionBOL):
5888 (JSC::Yarr::ByteCompiler::assertionEOL):
5889 (JSC::Yarr::ByteCompiler::assertionWordBoundary):
5890 (JSC::Yarr::ByteCompiler::atomPatternCharacter):
5891 (JSC::Yarr::ByteCompiler::atomCharacterClass):
5892 (JSC::Yarr::ByteCompiler::atomBackReference):
5893 (JSC::Yarr::ByteCompiler::atomParenthesesOnceBegin):
5894 (JSC::Yarr::ByteCompiler::atomParenthesesTerminalBegin):
5895 (JSC::Yarr::ByteCompiler::atomParenthesesSubpatternBegin):
5896 (JSC::Yarr::ByteCompiler::atomParentheticalAssertionBegin):
5897 (JSC::Yarr::ByteCompiler::atomParentheticalAssertionEnd):
5898 (JSC::Yarr::ByteCompiler::popParenthesesStack):
5899 (JSC::Yarr::ByteCompiler::dumpDisjunction):
5900 (JSC::Yarr::ByteCompiler::closeAlternative):
5901 (JSC::Yarr::ByteCompiler::closeBodyAlternative):
5902 (JSC::Yarr::ByteCompiler::atomParenthesesSubpatternEnd):
5903 (JSC::Yarr::ByteCompiler::atomParenthesesOnceEnd):
5904 (JSC::Yarr::ByteCompiler::atomParenthesesTerminalEnd):
5905 (JSC::Yarr::ByteCompiler::regexBegin):
5906 (JSC::Yarr::ByteCompiler::regexEnd):
5907 (JSC::Yarr::ByteCompiler::alternativeBodyDisjunction):
5908 (JSC::Yarr::ByteCompiler::alternativeDisjunction):
5909 (JSC::Yarr::ByteCompiler::emitDisjunction):
5910 (JSC::Yarr::byteCompile):
5911 (JSC::Yarr::interpret):
5912 * yarr/YarrInterpreter.h: Renamed from Source/JavaScriptCore/yarr/RegexInterpreter.h.
5913 (JSC::Yarr::ByteTerm::ByteTerm):
5914 (JSC::Yarr::ByteTerm::BOL):
5915 (JSC::Yarr::ByteTerm::CheckInput):
5916 (JSC::Yarr::ByteTerm::EOL):
5917 (JSC::Yarr::ByteTerm::WordBoundary):
5918 (JSC::Yarr::ByteTerm::BackReference):
5919 (JSC::Yarr::ByteTerm::BodyAlternativeBegin):
5920 (JSC::Yarr::ByteTerm::BodyAlternativeDisjunction):
5921 (JSC::Yarr::ByteTerm::BodyAlternativeEnd):
5922 (JSC::Yarr::ByteTerm::AlternativeBegin):
5923 (JSC::Yarr::ByteTerm::AlternativeDisjunction):
5924 (JSC::Yarr::ByteTerm::AlternativeEnd):
5925 (JSC::Yarr::ByteTerm::SubpatternBegin):
5926 (JSC::Yarr::ByteTerm::SubpatternEnd):
5927 (JSC::Yarr::ByteTerm::invert):
5928 (JSC::Yarr::ByteTerm::capture):
5929 (JSC::Yarr::ByteDisjunction::ByteDisjunction):
5930 (JSC::Yarr::BytecodePattern::BytecodePattern):
5931 (JSC::Yarr::BytecodePattern::~BytecodePattern):
5932 * yarr/YarrJIT.cpp: Renamed from Source/JavaScriptCore/yarr/RegexJIT.cpp.
5933 (JSC::Yarr::YarrGenerator::optimizeAlternative):
5934 (JSC::Yarr::YarrGenerator::matchCharacterClassRange):
5935 (JSC::Yarr::YarrGenerator::matchCharacterClass):
5936 (JSC::Yarr::YarrGenerator::jumpIfNoAvailableInput):
5937 (JSC::Yarr::YarrGenerator::jumpIfAvailableInput):
5938 (JSC::Yarr::YarrGenerator::checkInput):
5939 (JSC::Yarr::YarrGenerator::atEndOfInput):
5940 (JSC::Yarr::YarrGenerator::notAtEndOfInput):
5941 (JSC::Yarr::YarrGenerator::jumpIfCharEquals):
5942 (JSC::Yarr::YarrGenerator::jumpIfCharNotEquals):
5943 (JSC::Yarr::YarrGenerator::readCharacter):
5944 (JSC::Yarr::YarrGenerator::storeToFrame):
5945 (JSC::Yarr::YarrGenerator::storeToFrameWithPatch):
5946 (JSC::Yarr::YarrGenerator::loadFromFrame):
5947 (JSC::Yarr::YarrGenerator::loadFromFrameAndJump):
5948 (JSC::Yarr::YarrGenerator::IndirectJumpEntry::IndirectJumpEntry):
5949 (JSC::Yarr::YarrGenerator::IndirectJumpEntry::addJump):
5950 (JSC::Yarr::YarrGenerator::AlternativeBacktrackRecord::AlternativeBacktrackRecord):
5951 (JSC::Yarr::YarrGenerator::GenerationState::GenerationState):
5952 (JSC::Yarr::YarrGenerator::GenerationState::addIndirectJumpEntry):
5953 (JSC::Yarr::YarrGenerator::GenerationState::emitIndirectJumpTable):
5954 (JSC::Yarr::YarrGenerator::GenerationState::incrementParenNestingLevel):
5955 (JSC::Yarr::YarrGenerator::GenerationState::decrementParenNestingLevel):
5956 (JSC::Yarr::YarrGenerator::GenerationState::addParenthesesTail):
5957 (JSC::Yarr::YarrGenerator::GenerationState::emitParenthesesTail):
5958 (JSC::Yarr::YarrGenerator::GenerationState::addJumpToNextInteration):
5959 (JSC::Yarr::YarrGenerator::GenerationState::addJumpsToNextInteration):
5960 (JSC::Yarr::YarrGenerator::GenerationState::addDataLabelToNextIteration):
5961 (JSC::Yarr::YarrGenerator::GenerationState::linkToNextIteration):
5962 (JSC::Yarr::YarrGenerator::BacktrackDestination::BacktrackDestination):
5963 (JSC::Yarr::YarrGenerator::BacktrackDestination::clear):
5964 (JSC::Yarr::YarrGenerator::BacktrackDestination::clearDataLabel):
5965 (JSC::Yarr::YarrGenerator::BacktrackDestination::hasDestination):
5966 (JSC::Yarr::YarrGenerator::BacktrackDestination::isStackOffset):
5967 (JSC::Yarr::YarrGenerator::BacktrackDestination::isLabel):
5968 (JSC::Yarr::YarrGenerator::BacktrackDestination::isJumpList):
5969 (JSC::Yarr::YarrGenerator::BacktrackDestination::hasDataLabel):
5970 (JSC::Yarr::YarrGenerator::BacktrackDestination::copyTarget):
5971 (JSC::Yarr::YarrGenerator::BacktrackDestination::copyTo):
5972 (JSC::Yarr::YarrGenerator::BacktrackDestination::addBacktrackJump):
5973 (JSC::Yarr::YarrGenerator::BacktrackDestination::setStackOffset):
5974 (JSC::Yarr::YarrGenerator::BacktrackDestination::setLabel):
5975 (JSC::Yarr::YarrGenerator::BacktrackDestination::setNextBacktrackLabel):
5976 (JSC::Yarr::YarrGenerator::BacktrackDestination::copyBacktrackToLabel):
5977 (JSC::Yarr::YarrGenerator::BacktrackDestination::setBacktrackToLabel):
5978 (JSC::Yarr::YarrGenerator::BacktrackDestination::setBacktrackJumpList):
5979 (JSC::Yarr::YarrGenerator::BacktrackDestination::setBacktrackSourceLabel):
5980 (JSC::Yarr::YarrGenerator::BacktrackDestination::setDataLabel):
5981 (JSC::Yarr::YarrGenerator::BacktrackDestination::setSubDataLabelPtr):
5982 (JSC::Yarr::YarrGenerator::BacktrackDestination::linkToNextBacktrack):
5983 (JSC::Yarr::YarrGenerator::BacktrackDestination::getStackOffset):
5984 (JSC::Yarr::YarrGenerator::BacktrackDestination::getLabel):
5985 (JSC::Yarr::YarrGenerator::BacktrackDestination::getBacktrackJumps):
5986 (JSC::Yarr::YarrGenerator::BacktrackDestination::getDataLabel):
5987 (JSC::Yarr::YarrGenerator::BacktrackDestination::jumpToBacktrack):
5988 (JSC::Yarr::YarrGenerator::BacktrackDestination::linkDataLabelToHereIfExists):
5989 (JSC::Yarr::YarrGenerator::BacktrackDestination::plantJumpToBacktrackIfExists):
5990 (JSC::Yarr::YarrGenerator::BacktrackDestination::linkAlternativeBacktracks):
5991 (JSC::Yarr::YarrGenerator::BacktrackDestination::linkAlternativeBacktracksTo):
5992 (JSC::Yarr::YarrGenerator::TermGenerationState::TermGenerationState):
5993 (JSC::Yarr::YarrGenerator::TermGenerationState::resetAlternative):
5994 (JSC::Yarr::YarrGenerator::TermGenerationState::alternativeValid):
5995 (JSC::Yarr::YarrGenerator::TermGenerationState::nextAlternative):
5996 (JSC::Yarr::YarrGenerator::TermGenerationState::alternative):
5997 (JSC::Yarr::YarrGenerator::TermGenerationState::isLastAlternative):
5998 (JSC::Yarr::YarrGenerator::TermGenerationState::resetTerm):
5999 (JSC::Yarr::YarrGenerator::TermGenerationState::termValid):
6000 (JSC::Yarr::YarrGenerator::TermGenerationState::nextTerm):
6001 (JSC::Yarr::YarrGenerator::TermGenerationState::term):
6002 (JSC::Yarr::YarrGenerator::TermGenerationState::isLastTerm):
6003 (JSC::Yarr::YarrGenerator::TermGenerationState::getSubParenNum):
6004 (JSC::Yarr::YarrGenerator::TermGenerationState::isMainDisjunction):
6005 (JSC::Yarr::YarrGenerator::TermGenerationState::setParenthesesTail):
6006 (JSC::Yarr::YarrGenerator::TermGenerationState::getParenthesesTail):
6007 (JSC::Yarr::YarrGenerator::TermGenerationState::lookaheadTerm):
6008 (JSC::Yarr::YarrGenerator::TermGenerationState::isSinglePatternCharacterLookaheadTerm):
6009 (JSC::Yarr::YarrGenerator::TermGenerationState::inputOffset):
6010 (JSC::Yarr::YarrGenerator::TermGenerationState::clearBacktrack):
6011 (JSC::Yarr::YarrGenerator::TermGenerationState::jumpToBacktrack):
6012 (JSC::Yarr::YarrGenerator::TermGenerationState::plantJumpToBacktrackIfExists):
6013 (JSC::Yarr::YarrGenerator::TermGenerationState::linkDataLabelToBacktrackIfExists):
6014 (JSC::Yarr::YarrGenerator::TermGenerationState::addBacktrackJump):
6015 (JSC::Yarr::YarrGenerator::TermGenerationState::setBacktrackDataLabel):
6016 (JSC::Yarr::YarrGenerator::TermGenerationState::setBackTrackStackOffset):
6017 (JSC::Yarr::YarrGenerator::TermGenerationState::setBacktrackLabel):
6018 (JSC::Yarr::YarrGenerator::TermGenerationState::linkAlternativeBacktracks):
6019 (JSC::Yarr::YarrGenerator::TermGenerationState::linkAlternativeBacktracksTo):
6020 (JSC::Yarr::YarrGenerator::TermGenerationState::setBacktrackLink):
6021 (JSC::Yarr::YarrGenerator::TermGenerationState::chainBacktracks):
6022 (JSC::Yarr::YarrGenerator::TermGenerationState::chainBacktrackJumps):
6023 (JSC::Yarr::YarrGenerator::TermGenerationState::getBacktrackDestination):
6024 (JSC::Yarr::YarrGenerator::TermGenerationState::propagateBacktrackingFrom):
6025 (JSC::Yarr::YarrGenerator::ParenthesesTail::ParenthesesTail):
6026 (JSC::Yarr::YarrGenerator::ParenthesesTail::processBacktracks):
6027 (JSC::Yarr::YarrGenerator::ParenthesesTail::setNextIteration):
6028 (JSC::Yarr::YarrGenerator::ParenthesesTail::addAfterParenJump):
6029 (JSC::Yarr::YarrGenerator::ParenthesesTail::generateCode):
6030 (JSC::Yarr::YarrGenerator::generateAssertionBOL):
6031 (JSC::Yarr::YarrGenerator::generateAssertionEOL):
6032 (JSC::Yarr::YarrGenerator::matchAssertionWordchar):
6033 (JSC::Yarr::YarrGenerator::generateAssertionWordBoundary):
6034 (JSC::Yarr::YarrGenerator::generatePatternCharacterSingle):
6035 (JSC::Yarr::YarrGenerator::generatePatternCharacterPair):
6036 (JSC::Yarr::YarrGenerator::generatePatternCharacterFixed):
6037 (JSC::Yarr::YarrGenerator::generatePatternCharacterGreedy):
6038 (JSC::Yarr::YarrGenerator::generatePatternCharacterNonGreedy):
6039 (JSC::Yarr::YarrGenerator::generateCharacterClassSingle):
6040 (JSC::Yarr::YarrGenerator::generateCharacterClassFixed):
6041 (JSC::Yarr::YarrGenerator::generateCharacterClassGreedy):
6042 (JSC::Yarr::YarrGenerator::generateCharacterClassNonGreedy):
6043 (JSC::Yarr::YarrGenerator::generateParenthesesDisjunction):
6044 (JSC::Yarr::YarrGenerator::generateParenthesesSingle):
6045 (JSC::Yarr::YarrGenerator::generateParenthesesGreedyNoBacktrack):
6046 (JSC::Yarr::YarrGenerator::generateParentheticalAssertion):
6047 (JSC::Yarr::YarrGenerator::generateTerm):
6048 (JSC::Yarr::YarrGenerator::generateDisjunction):
6049 (JSC::Yarr::YarrGenerator::generateEnter):
6050 (JSC::Yarr::YarrGenerator::generateReturn):
6051 (JSC::Yarr::YarrGenerator::YarrGenerator):
6052 (JSC::Yarr::YarrGenerator::generate):
6053 (JSC::Yarr::YarrGenerator::compile):
6054 (JSC::Yarr::jitCompile):
6055 * yarr/YarrJIT.h: Renamed from Source/JavaScriptCore/yarr/RegexJIT.h.
6056 (JSC::Yarr::YarrCodeBlock::YarrCodeBlock):
6057 (JSC::Yarr::YarrCodeBlock::~YarrCodeBlock):
6058 (JSC::Yarr::YarrCodeBlock::setFallBack):
6059 (JSC::Yarr::YarrCodeBlock::isFallBack):
6060 (JSC::Yarr::YarrCodeBlock::set):
6061 (JSC::Yarr::YarrCodeBlock::execute):
6062 (JSC::Yarr::YarrCodeBlock::getAddr):
6063 (JSC::Yarr::execute):
6064 * yarr/YarrParser.h: Renamed from Source/JavaScriptCore/yarr/RegexParser.h.
6065 (JSC::Yarr::Parser::CharacterClassParserDelegate::CharacterClassParserDelegate):
6066 (JSC::Yarr::Parser::CharacterClassParserDelegate::begin):
6067 (JSC::Yarr::Parser::CharacterClassParserDelegate::atomPatternCharacter):
6068 (JSC::Yarr::Parser::CharacterClassParserDelegate::atomBuiltInCharacterClass):
6069 (JSC::Yarr::Parser::CharacterClassParserDelegate::end):
6070 (JSC::Yarr::Parser::CharacterClassParserDelegate::assertionWordBoundary):
6071 (JSC::Yarr::Parser::CharacterClassParserDelegate::atomBackReference):
6072 (JSC::Yarr::Parser::Parser):
6073 (JSC::Yarr::Parser::parseEscape):
6074 (JSC::Yarr::Parser::parseAtomEscape):
6075 (JSC::Yarr::Parser::parseCharacterClassEscape):
6076 (JSC::Yarr::Parser::parseCharacterClass):
6077 (JSC::Yarr::Parser::parseParenthesesBegin):
6078 (JSC::Yarr::Parser::parseParenthesesEnd):
6079 (JSC::Yarr::Parser::parseQuantifier):
6080 (JSC::Yarr::Parser::parseTokens):
6081 (JSC::Yarr::Parser::parse):
6082 (JSC::Yarr::Parser::saveState):
6083 (JSC::Yarr::Parser::restoreState):
6084 (JSC::Yarr::Parser::atEndOfPattern):
6085 (JSC::Yarr::Parser::peek):
6086 (JSC::Yarr::Parser::peekIsDigit):
6087 (JSC::Yarr::Parser::peekDigit):
6088 (JSC::Yarr::Parser::consume):
6089 (JSC::Yarr::Parser::consumeDigit):
6090 (JSC::Yarr::Parser::consumeNumber):
6091 (JSC::Yarr::Parser::consumeOctal):
6092 (JSC::Yarr::Parser::tryConsume):
6093 (JSC::Yarr::Parser::tryConsumeHex):
6095 * yarr/YarrPattern.cpp: Renamed from Source/JavaScriptCore/yarr/RegexPattern.cpp.
6096 (JSC::Yarr::CharacterClassConstructor::CharacterClassConstructor):
6097 (JSC::Yarr::CharacterClassConstructor::reset):
6098 (JSC::Yarr::CharacterClassConstructor::append):
6099 (JSC::Yarr::CharacterClassConstructor::putChar):
6100 (JSC::Yarr::CharacterClassConstructor::isUnicodeUpper):
6101 (JSC::Yarr::CharacterClassConstructor::isUnicodeLower):
6102 (JSC::Yarr::CharacterClassConstructor::putRange):
6103 (JSC::Yarr::CharacterClassConstructor::charClass):
6104 (JSC::Yarr::CharacterClassConstructor::addSorted):
6105 (JSC::Yarr::CharacterClassConstructor::addSortedRange):
6106 (JSC::Yarr::BeginCharHelper::BeginCharHelper):
6107 (JSC::Yarr::BeginCharHelper::addBeginChar):
6108 (JSC::Yarr::BeginCharHelper::merge):
6109 (JSC::Yarr::BeginCharHelper::addCharacter):
6110 (JSC::Yarr::BeginCharHelper::linkHotTerms):
6111 (JSC::Yarr::YarrPatternConstructor::YarrPatternConstructor):
6112 (JSC::Yarr::YarrPatternConstructor::~YarrPatternConstructor):
6113 (JSC::Yarr::YarrPatternConstructor::reset):
6114 (JSC::Yarr::YarrPatternConstructor::assertionBOL):
6115 (JSC::Yarr::YarrPatternConstructor::assertionEOL):
6116 (JSC::Yarr::YarrPatternConstructor::assertionWordBoundary):
6117 (JSC::Yarr::YarrPatternConstructor::atomPatternCharacter):
6118 (JSC::Yarr::YarrPatternConstructor::atomBuiltInCharacterClass):
6119 (JSC::Yarr::YarrPatternConstructor::atomCharacterClassBegin):
6120 (JSC::Yarr::YarrPatternConstructor::atomCharacterClassAtom):
6121 (JSC::Yarr::YarrPatternConstructor::atomCharacterClassRange):
6122 (JSC::Yarr::YarrPatternConstructor::atomCharacterClassBuiltIn):
6123 (JSC::Yarr::YarrPatternConstructor::atomCharacterClassEnd):
6124 (JSC::Yarr::YarrPatternConstructor::atomParenthesesSubpatternBegin):
6125 (JSC::Yarr::YarrPatternConstructor::atomParentheticalAssertionBegin):
6126 (JSC::Yarr::YarrPatternConstructor::atomParenthesesEnd):
6127 (JSC::Yarr::YarrPatternConstructor::atomBackReference):
6128 (JSC::Yarr::YarrPatternConstructor::copyDisjunction):
6129 (JSC::Yarr::YarrPatternConstructor::copyTerm):
6130 (JSC::Yarr::YarrPatternConstructor::quantifyAtom):
6131 (JSC::Yarr::YarrPatternConstructor::disjunction):
6132 (JSC::Yarr::YarrPatternConstructor::regexBegin):
6133 (JSC::Yarr::YarrPatternConstructor::regexEnd):
6134 (JSC::Yarr::YarrPatternConstructor::regexError):
6135 (JSC::Yarr::YarrPatternConstructor::setupAlternativeOffsets):
6136 (JSC::Yarr::YarrPatternConstructor::setupDisjunctionOffsets):
6137 (JSC::Yarr::YarrPatternConstructor::setupOffsets):
6138 (JSC::Yarr::YarrPatternConstructor::checkForTerminalParentheses):
6139 (JSC::Yarr::YarrPatternConstructor::optimizeBOL):
6140 (JSC::Yarr::YarrPatternConstructor::addBeginTerm):
6141 (JSC::Yarr::YarrPatternConstructor::setupDisjunctionBeginTerms):
6142 (JSC::Yarr::YarrPatternConstructor::setupAlternativeBeginTerms):
6143 (JSC::Yarr::YarrPatternConstructor::setupBeginChars):
6144 (JSC::Yarr::compile):
6145 (JSC::Yarr::YarrPattern::YarrPattern):
6146 * yarr/YarrPattern.h: Renamed from Source/JavaScriptCore/yarr/RegexPattern.h.
6147 (JSC::Yarr::CharacterRange::CharacterRange):
6148 (JSC::Yarr::CharacterClassTable::create):
6149 (JSC::Yarr::CharacterClassTable::CharacterClassTable):
6150 (JSC::Yarr::CharacterClass::CharacterClass):
6151 (JSC::Yarr::PatternTerm::PatternTerm):
6152 (JSC::Yarr::PatternTerm::ForwardReference):
6153 (JSC::Yarr::PatternTerm::BOL):
6154 (JSC::Yarr::PatternTerm::EOL):
6155 (JSC::Yarr::PatternTerm::WordBoundary):
6156 (JSC::Yarr::PatternTerm::invert):
6157 (JSC::Yarr::PatternTerm::capture):
6158 (JSC::Yarr::PatternTerm::quantify):
6159 (JSC::Yarr::PatternAlternative::PatternAlternative):
6160 (JSC::Yarr::PatternAlternative::lastTerm):
6161 (JSC::Yarr::PatternAlternative::removeLastTerm):
6162 (JSC::Yarr::PatternAlternative::setOnceThrough):
6163 (JSC::Yarr::PatternAlternative::onceThrough):
6164 (JSC::Yarr::PatternDisjunction::PatternDisjunction):
6165 (JSC::Yarr::PatternDisjunction::~PatternDisjunction):
6166 (JSC::Yarr::PatternDisjunction::addNewAlternative):
6167 (JSC::Yarr::TermChain::TermChain):
6168 (JSC::Yarr::BeginChar::BeginChar):
6169 (JSC::Yarr::YarrPattern::~YarrPattern):
6170 (JSC::Yarr::YarrPattern::reset):
6171 (JSC::Yarr::YarrPattern::containsIllegalBackReference):
6172 (JSC::Yarr::YarrPattern::newlineCharacterClass):
6173 (JSC::Yarr::YarrPattern::digitsCharacterClass):
6174 (JSC::Yarr::YarrPattern::spacesCharacterClass):
6175 (JSC::Yarr::YarrPattern::wordcharCharacterClass):
6176 (JSC::Yarr::YarrPattern::nondigitsCharacterClass):
6177 (JSC::Yarr::YarrPattern::nonspacesCharacterClass):
6178 (JSC::Yarr::YarrPattern::nonwordcharCharacterClass):
6180 2011-01-10 Gavin Barraclough <barraclough@apple.com>
6184 * parser/SyntaxChecker.h:
6186 2011-01-10 Dave Tapuska <dtapuska@rim.com>
6188 Reviewed by Gavin Barraclough.
6190 Add CTI ASM versions for RVCT ARM THUMB2 mode.
6192 https://bugs.webkit.org/show_bug.cgi?id=52154
6195 (JSC::ctiTrampoline):
6196 (JSC::ctiVMThrowTrampoline):
6197 (JSC::ctiOpThrowNotCaught):
6199 2011-01-10 Gavin Barraclough <barraclough@apple.com>
6203 * JavaScriptCore.pro:
6205 2011-01-10 Gavin Barraclough <barraclough@apple.com>
6207 Reviewed by Oliver Hunt.
6209 Bug 52079 - Syntax errors should be early errors.
6211 From chapter 16 the spec:
6212 An implementation must report most errors at the time the relevant ECMAScript language construct is
6213 evaluated. An early error is an error that can be detected and reported prior to the evaluation of
6214 any construct in the Program containing the error. An implementation must report early errors in a
6215 Program prior to the first evaluation of that Program. Early errors in eval code are reported at
6216 the time eval is called but prior to evaluation of any construct within the eval code. All errors
6217 that are not early errors are runtime errors.
6219 An implementation must treat any instance of the following kinds of errors as an early error:
6220 * Any syntax error."
6222 * JavaScriptCore.xcodeproj/project.pbxproj:
6224 * bytecode/CodeBlock.cpp:
6225 Removed op_throw_syntax_error.
6226 * bytecode/Opcode.h:
6227 Removed op_throw_syntax_error.
6228 * bytecompiler/BytecodeGenerator.cpp:
6229 (JSC::BytecodeGenerator::generate):
6230 If m_expressionTooDeep then throw a runtime error.
6231 (JSC::BytecodeGenerator::BytecodeGenerator):
6232 Initialize m_expressionTooDeep.
6233 (JSC::BytecodeGenerator::emitThrowExpressionTooDeepException):
6234 Sets m_expressionTooDeep.
6235 * bytecompiler/BytecodeGenerator.h:
6236 Added m_expressionTooDeep, removed emitThrowSyntaxError.
6237 * bytecompiler/NodesCodegen.cpp:
6238 (JSC::RegExpNode::emitBytecode):
6239 (JSC::ContinueNode::emitBytecode):
6240 (JSC::BreakNode::emitBytecode):
6241 (JSC::ReturnNode::emitBytecode):
6242 (JSC::LabelNode::emitBytecode):
6243 Conditions that threw syntax error are now handled during parsing;
6244 during bytecompilation these are now just ASSERTs.
6245 * interpreter/Interpreter.cpp:
6246 (JSC::Interpreter::privateExecute):
6248 (JSC::JIT::privateCompileMainPass):
6250 * jit/JITOpcodes.cpp:
6251 * jit/JITOpcodes32_64.cpp:
6254 Removed op_throw_syntax_error.
6255 * parser/ASTBuilder.h:
6256 (JSC::ASTBuilder::createRegExp):
6257 Renamed; added syntax check.
6258 * parser/JSParser.cpp:
6259 (JSC::JSParser::breakIsValid):
6260 (JSC::JSParser::hasLabel):
6261 (JSC::JSParser::Scope::Scope):
6262 (JSC::JSParser::Scope::setIsFunction):
6263 (JSC::JSParser::Scope::isFunctionBoundary):
6264 (JSC::JSParser::ScopeRef::hasContainingScope):
6265 (JSC::JSParser::ScopeRef::containingScope):
6266 (JSC::JSParser::AutoPopScopeRef::AutoPopScopeRef):
6267 (JSC::JSParser::AutoPopScopeRef::~AutoPopScopeRef):
6268 (JSC::JSParser::AutoPopScopeRef::setPopped):
6269 (JSC::JSParser::popScopeInternal):
6270 (JSC::JSParser::popScope):
6272 (JSC::JSParser::JSParser):
6273 (JSC::JSParser::parseProgram):
6274 (JSC::JSParser::parseBreakStatement):
6275 (JSC::JSParser::parseContinueStatement):
6276 (JSC::JSParser::parseReturnStatement):
6277 (JSC::JSParser::parseTryStatement):
6278 (JSC::JSParser::parseFunctionInfo):
6279 (JSC::JSParser::parseExpressionOrLabelStatement):
6280 (JSC::JSParser::parsePrimaryExpression):
6281 * parser/JSParser.h:
6283 * parser/Parser.cpp:
6284 (JSC::Parser::parse):
6285 * parser/SyntaxChecker.h:
6286 (JSC::SyntaxChecker::createRegExp):
6287 Renamed; added syntax check.
6288 * runtime/ExceptionHelpers.cpp:
6289 (JSC::createOutOfMemoryError):
6290 (JSC::throwOutOfMemoryError):
6291 * runtime/ExceptionHelpers.h:
6292 Broke out createOutOfMemoryError.
6293 * runtime/Executable.cpp:
6294 (JSC::EvalExecutable::compileInternal):
6295 (JSC::ProgramExecutable::compileInternal):
6296 (JSC::FunctionExecutable::compileForCallInternal):
6297 (JSC::FunctionExecutable::compileForConstructInternal):
6298 Add check for exception after bytecode generation.
6299 * runtime/RegExpConstructor.cpp:
6300 (JSC::constructRegExp):
6301 * runtime/RegExpPrototype.cpp:
6302 (JSC::regExpProtoFuncCompile):
6303 RegExp error prefixes not included in error string.
6304 * yarr/RegexParser.h:
6305 (JSC::Yarr::Parser::parse):
6306 Removed regexBegin/regexEnd/regexError.
6307 * yarr/RegexPattern.cpp:
6308 (JSC::Yarr::RegexPatternConstructor::regexBegin):
6309 Removed regexEnd/regexError.
6310 (JSC::Yarr::compileRegex):
6311 Add call to regexBegin (no longer called from the parser).
6312 * yarr/YarrSyntaxChecker.cpp: Added.
6313 (JSC::Yarr::SyntaxChecker::assertionBOL):
6314 (JSC::Yarr::SyntaxChecker::assertionEOL):
6315 (JSC::Yarr::SyntaxChecker::assertionWordBoundary):
6316 (JSC::Yarr::SyntaxChecker::atomPatternCharacter):
6317 (JSC::Yarr::SyntaxChecker::atomBuiltInCharacterClass):
6318 (JSC::Yarr::SyntaxChecker::atomCharacterClassBegin):
6319 (JSC::Yarr::SyntaxChecker::atomCharacterClassAtom):
6320 (JSC::Yarr::SyntaxChecker::atomCharacterClassRange):
6321 (JSC::Yarr::SyntaxChecker::atomCharacterClassBuiltIn):
6322 (JSC::Yarr::SyntaxChecker::atomCharacterClassEnd):
6323 (JSC::Yarr::SyntaxChecker::atomParenthesesSubpatternBegin):
6324 (JSC::Yarr::SyntaxChecker::atomParentheticalAssertionBegin):
6325 (JSC::Yarr::SyntaxChecker::atomParenthesesEnd):
6326 (JSC::Yarr::SyntaxChecker::atomBackReference):
6327 (JSC::Yarr::SyntaxChecker::quantifyAtom):
6328 (JSC::Yarr::SyntaxChecker::disjunction):
6329 (JSC::Yarr::checkSyntax):
6330 * yarr/YarrSyntaxChecker.h: Added.
6331 Check RegExp syntax.
6333 2011-01-10 Adam Roben <aroben@apple.com>
6337 It was causing assertion failures. See <http://webkit.org/b/52156>.
6339 * wtf/StackBounds.cpp:
6340 (WTF::StackBounds::initialize):
6342 2011-01-08 Patrick Gansterer <paroga@webkit.org>
6344 Reviewed by Darin Adler.
6346 Unify string table adding in AtomicString
6347 https://bugs.webkit.org/show_bug.cgi?id=51927
6349 Move code for adding a string into a separate function.
6350 This removes multiple occurrence of the same logic.
6352 * wtf/text/AtomicString.cpp:
6353 (WTF::addToStringTable): Added.
6354 (WTF::AtomicString::add): Use addToStringTable().
6355 (WTF::AtomicString::fromUTF8): Ditto.
6357 2011-01-07 Geoffrey Garen <ggaren@apple.com>
6359 Reviewed by Gavin Barraclough.
6361 Split machine stack marking functions into their own class (MachineStackMarker)
6362 https://bugs.webkit.org/show_bug.cgi?id=52088
6365 (JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock): Moved registerThread()
6366 call behind an #ifdef because we shouldn't be registering threads at all
6367 if we don't support usage on multiple threads.
6372 * JavaScriptCore.gypi:
6373 * JavaScriptCore.pro:
6374 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
6375 * JavaScriptCore.xcodeproj/project.pbxproj: Updated projects.
6377 * runtime/Collector.cpp:
6379 (JSC::Heap::destroy):
6380 (JSC::Heap::markRoots):
6381 * runtime/Collector.h:
6382 (JSC::Heap::machineStackMarker): Moved code to machineStackMarker.
6384 * runtime/JSGlobalData.h:
6385 (JSC::JSGlobalData::makeUsableFromMultipleThreads): Removed an unnecessary
6386 level of indirection, to make Heap less of a God class.
6388 * runtime/MachineStackMarker.h: Copied from Source/JavaScriptCore/runtime/Collector.h.
6389 * runtime/MachineStackMarker.cpp: Copied from Source/JavaScriptCore/runtime/Collector.cpp.
6390 (JSC::MachineStackMarker::MachineStackMarker):
6391 (JSC::MachineStackMarker::~MachineStackMarker):
6392 (JSC::MachineStackMarker::makeUsableFromMultipleThreads):
6393 (JSC::MachineStackMarker::registerThread):
6394 (JSC::MachineStackMarker::unregisterThread):
6395 (JSC::MachineStackMarker::markCurrentThreadConservativelyInternal):
6396 (JSC::MachineStackMarker::markCurrentThreadConservatively):
6397 (JSC::MachineStackMarker::markOtherThreadConservatively):
6398 (JSC::MachineStackMarker::markMachineStackConservatively): Moved code from Heap.
6400 2011-01-07 Gavin Barraclough <barraclough@apple.com>
6402 Reviewed by Geoff Garen.
6404 Bug 26276 - Need a mechanism to determine stack extent on WINDOWS, SOLARIS, OPENBSD, SYMBIAN, HAIKU, WINCE platforms
6406 Fix for win32. The base of the stack is stored in the "deallocation stack" field of the
6407 Thread Information Block - see: http://en.wikipedia.org/wiki/Win32_Thread_Information_Block
6408 for more information!
6410 * wtf/StackBounds.cpp:
6411 (WTF::StackBounds::initialize):
6413 2011-01-07 Adam Roben <aroben@apple.com>
6415 Update react-to-vsprops-changes.py after r74855
6417 * JavaScriptCore.vcproj/JavaScriptCore/react-to-vsprops-changes.py:
6419 2011-01-07 Carlos Garcia Campos <cgarcia@igalia.com>
6421 Reviewed by Martin Robinson.
6423 [GTK] Port scrollbar painting to GtkStyleContext
6424 https://bugs.webkit.org/show_bug.cgi?id=52051
6426 * wtf/gobject/GTypedefs.h: Add GtkStyleContext forward
6429 2011-01-07 Daniel Bates <dbates@rim.com>
6431 Reviewed by Martin Robinson.
6433 Enable PCRE computed gotos when compiling with RCVT 4.0 or greater in GNU mode
6434 https://bugs.webkit.org/show_bug.cgi?id=52034
6436 Derived from a patch by Eli Fidler.
6438 RVCT 4 or greater in GNU mode supports the computed goto GNU language extension
6439 as per <http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0348c/ch03s07s12.html>.
6441 * pcre/pcre_exec.cpp: Modified to check for feature, HAVE(COMPUTED_GOTO), instead
6442 of hardcoding the GCC compiler.
6443 * wtf/Platform.h: Define WTF_COMPILER_RVCT4_OR_GREATER if __ARMCC_VERSION >= 400000.
6445 2011-01-06 Gavin Barraclough <barraclough@apple.com>
6447 Reviewed by Geoff Garen.
6449 Bug 52035 - Unregistering DOMWrapperWorlds is unsafe
6451 The method DOMWrapperWorld::unregisterWorld() effectively calls the DOMWrapperWorld's
6452 destructor early, in order to release wrappers once we know we no longer intend to use them.
6453 Whilst it is okay to have a method to throw away wrappers (assuming we know we're willing to
6454 lose any state stored on them) it is not okay to deregister the world from the JSGlobalData.
6455 A sequence of events that triggers the bug would look like this:
6457 (1) Create a DOMWrapperWorld.
6458 (2) Register a timer in the world.
6459 (3) Call unregisterWorld() on the world.
6460 (4) Timer goes off, code is executed in the world, creates a Node not attached to a Document.
6461 (5) We attempt to lookup a wrapper map for the world on the JSGlobalData, but because we've
6462 called forgetWorld() none exists.
6463 (6) Attempt to add a wrapper to a NULL map.
6465 Fix the problem by not removing the JSGlobalData's wrapper map until the world really goes away.
6467 * runtime/WeakGCMap.h:
6468 (JSC::WeakGCMap::clear):
6470 2011-01-06 Gavin Barraclough <barraclough@apple.com>
6472 Reviewed by Darin Adler.
6474 Bug 52021 - zeroDouble broken on ARMv7
6476 The bug here is that zeroDouble was working incorrectly,
6477 leading to op_loop_if_true failing - specifically in the
6478 case where the value being checked is 0.0 encoded as a
6479 double (rather than an integer immediate).
6481 Additionally this patch removes a redundant duplicate compare
6482 in some (many) case.
6484 * assembler/ARMv7Assembler.h:
6485 (JSC::ARMv7Assembler::vcmp_F64):
6486 (JSC::ARMv7Assembler::vcmpz_F64):
6487 * assembler/MacroAssemblerARM.h:
6488 (JSC::MacroAssemblerARM::branchDoubleNonZero):
6489 (JSC::MacroAssemblerARM::branchDoubleZeroOrNaN):
6490 * assembler/MacroAssemblerARMv7.h:
6491 (JSC::MacroAssemblerARMv7::branchDouble):
6492 (JSC::MacroAssemblerARMv7::branchDoubleNonZero):
6493 (JSC::MacroAssemblerARMv7::branchDoubleZeroOrNaN):
6494 (JSC::MacroAssemblerARMv7::compare32):
6495 * assembler/MacroAssemblerMIPS.h:
6496 (JSC::MacroAssemblerMIPS::branchDoubleNonZero):
6497 (JSC::MacroAssemblerMIPS::branchDoubleZeroOrNaN):
6498 * assembler/MacroAssemblerX86Common.h:
6499 (JSC::MacroAssemblerX86Common::branchDoubleNonZero):
6500 (JSC::MacroAssemblerX86Common::branchDoubleZeroOrNaN):
6501 * jit/JITOpcodes32_64.cpp:
6502 (JSC::JIT::emit_op_jfalse):
6503 (JSC::JIT::emit_op_jtrue):
6505 2011-01-06 Michael Saboff <msaboff@apple.com>
6507 Reviewed by Gavin Barraclough.
6509 Added debug code to compare the results of JIT regexp with
6510 interpreted regexp and displays discrepencies. This debug code is
6511 controlled by the ENABLE_YARR_JIT_DEBUG macro in wtf/Platform.h and
6512 is only valid if ENABLE_YARR_JIT is enabled.
6514 Fixed a discovered problem in RegExp::printTraceData, changing
6515 m_pattern to the getter pattern().
6516 Also deleted an extraneous semicolon.
6518 Enhancement: Add Regexp Debug Compare between JIT and Interpreter
6519 https://bugs.webkit.org/show_bug.cgi?id=51834
6521 * runtime/RegExp.cpp:
6522 (JSC::RegExp::compile):
6523 (JSC::RegExp::match):
6524 (JSC::RegExp::printTraceData):
6527 2011-01-06 Patrick Gansterer <paroga@webkit.org>
6529 Reviewed by Eric Seidel.
6531 [WINCE] Remove JSC::g_stackBase
6532 https://bugs.webkit.org/show_bug.cgi?id=51779
6534 * wtf/StackBounds.cpp:
6536 2011-01-06 Joone Hur <joone.hur@collabora.co.uk>
6538 Reviewed by Eric Seidel.
6540 WML Parser should treat line/column number in a consistent way
6541 https://bugs.webkit.org/show_bug.cgi?id=51601
6543 Add the equality operators to TextPosition class.
6545 * wtf/text/TextPosition.h:
6546 (WTF::TextPosition::operator==): Added.
6547 (WTF::TextPosition::operator!=): Added.
6548 (WTF::TextPosition::belowRangePosition): Use belowBase() instead of base().
6549 (WTF::ZeroBasedNumber::operator==): Added.
6550 (WTF::ZeroBasedNumber::operator!=): Added.
6551 (WTF::OneBasedNumber::operator==): Added.
6552 (WTF::OneBasedNumber::operator!=): Added.
6554 2011-01-06 Patrick Gansterer <paroga@webkit.org>
6556 Reviewed by Gavin Barraclough.
6558 [WINCE] Determine stack extent
6559 https://bugs.webkit.org/show_bug.cgi?id=26276
6561 Scan the stack for writeable pages and use the limits.
6563 * wtf/StackBounds.cpp:
6564 (WTF::detectGrowingDownward):
6565 (WTF::isPageWritable):
6566 (WTF::getLowerStackBound):
6567 (WTF::getUpperStackBound):
6568 (WTF::StackBounds::initialize):
6570 2011-01-05 Steve Falkenburg <sfalken@apple.com>
6574 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: Revert change to additional library search path needed to find ICU.
6576 2011-01-05 Steve Falkenburg <sfalken@apple.com>
6578 Reviewed by Darin Adler.
6580 Debug and Release builds on Windows clobber each other
6581 https://bugs.webkit.org/show_bug.cgi?id=49185
6583 Changes the structure of WebKitBuild build products directory so we
6584 completely separate each build configuration into independent directories.
6586 Although we previously had per-configuration directories for obj, this change adds
6587 per-configuration directories for bin, lib, obj, and include. Each configuration's
6588 build products are stored within a directory inside of WebKitBuild.
6590 Most use of $(WebKitOutputDir) in the build files has been replaced by $(ConfigurationBuildDir),
6591 defined in common.vsprops to be $(WebKitOutputDir)\$(ConfigurationName).
6593 For PGO, $(ConfigurationBuildDir) points to the same directory (Release_PGO) to allow
6594 for proper operation of the instrumentation/optimization scripts.
6596 * JavaScriptCore.vcproj/JavaScriptCore.make:
6597 * JavaScriptCore.vcproj/JavaScriptCore.sln:
6598 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
6599 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
6600 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
6601 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj:
6602 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedCommon.vsprops:
6603 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePGOOptimize.vsprops: Added.
6604 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePostBuild.cmd:
6605 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePreBuild.cmd:
6606 * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh:
6607 * JavaScriptCore.vcproj/JavaScriptCore/react-to-vsprops-changes.py:
6608 * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln:
6609 * JavaScriptCore.vcproj/WTF/WTF.vcproj:
6610 * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops:
6611 * JavaScriptCore.vcproj/WTF/WTFPostBuild.cmd:
6612 * JavaScriptCore.vcproj/WTF/WTFPreBuild.cmd:
6613 * JavaScriptCore.vcproj/jsc/jsc.vcproj:
6614 * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
6615 * JavaScriptCore.vcproj/jsc/jscPostBuild.cmd:
6616 * JavaScriptCore.vcproj/jsc/jscPreBuild.cmd:
6617 * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops:
6618 * JavaScriptCore.vcproj/testapi/testapiPostBuild.cmd:
6619 * JavaScriptCore.vcproj/testapi/testapiPreBuild.cmd:
6621 2011-01-05 Brent Fulgham <bfulgham@webkit.org>
6623 Unreviewed build fix.
6625 * wtf/Encoder.h: Add <stdint.h> include for systems that
6626 do not natively know about uint8_t, etc.
6628 2011-01-05 Patrick Gansterer <paroga@webkit.org>
6630 Reviewed by Andreas Kling.
6632 [CMake] Fix the usage of SOURCE_GROUP
6633 https://bugs.webkit.org/show_bug.cgi?id=51739
6637 2011-01-05 Andras Becsi <abecsi@webkit.org>
6639 Reviewed by Csaba Osztrogonác.
6641 [Qt][V8] Fix the build after recent changes.
6643 * pcre/pcre.pri: Correct the path after Source was introduced.
6645 2011-01-04 Steve Falkenburg <sfalken@apple.com>
6647 Build fix. Update path to FindSafari after source code reorganization.
6649 * JavaScriptCore.vcproj/JavaScriptCore.sln:
6651 2011-01-04 Daniel Bates <dbates@rim.com>
6653 Fix the Android build after changeset 74975 <http://trac.webkit.org/changeset/74975>
6654 (https://bugs.webkit.org/show_bug.cgi?id=51855).
6656 * wtf/ThreadingPthreads.cpp: Add include of PassOwnPtr.h.
6657 (WTF::runThreadWithRegistration): Use -> instead of . to dereference pointer.
6659 2011-01-04 Martin Robinson <mrobinson@igalia.com>
6661 Try to fix the EFL build.
6663 * wtf/CMakeLists.txt: Remove PlatformRefPtr from the CMake source list.
6665 2011-01-04 James Robinson <jamesr@chromium.org>
6667 Reviewed by Darin Adler.
6669 StackBounds initialization in WTFThreadData should be guarded by #if USE(JSC)
6670 https://bugs.webkit.org/show_bug.cgi?id=51881
6672 The StackBounds class is only used by JavaScriptCore.
6674 * wtf/WTFThreadData.cpp:
6675 (WTF::WTFThreadData::WTFThreadData):
6676 * wtf/WTFThreadData.h:
6677 (WTF::WTFThreadData::resetCurrentIdentifierTable):
6679 2011-01-03 Martin Robinson <mrobinson@igalia.com>
6681 Reviewed by Darin Adler.
6683 Remove the last non-GObject usage of PlatformRefPtr and move the code to GRefPtr
6684 https://bugs.webkit.org/show_bug.cgi?id=51846
6686 * GNUmakefile.am: Remove PlatformRefPtr.h from the sources list.
6687 * JavaScriptCore.vcproj/WTF/WTF.vcproj: Ditto.
6688 * jit/ExecutableAllocator.h: Change references to PlatformRefPtr to RefPtr.
6689 (JSC::ExecutableAllocator::cacheFlush): Ditto.
6690 * wtf/PlatformRefPtr.h: Removed.
6691 * wtf/RandomNumber.cpp: Change references to PlatformRefPtr to RefPtr.
6692 (WTF::randomNumber): Ditto.
6693 * wtf/brew/RefPtrBrew.h: Ditto.
6694 (WTF::refIfNotNull): Added.
6695 (WTF::derefIfNotNull): Added.
6696 * wtf/brew/ShellBrew.h: Change references to PlatformRefPtr to RefPtr.
6697 (WTF::createRefPtrInstance): Modified to return a RefPtr.
6698 * wtf/gobject/GRefPtr.cpp:
6699 (WTF::refGPtr): Moved from PlatformRefPtr here.
6700 (WTF::derefGPtr): Ditto.
6701 * wtf/gobject/GRefPtr.h: Ditto.
6702 (WTF::GRefPtr::GRefPtr): Ditto.
6703 (WTF::GRefPtr::~GRefPtr): Ditto.
6704 (WTF::GRefPtr::clear): Ditto.
6705 (WTF::GRefPtr::isHashTableDeletedValue): Ditto.
6706 (WTF::GRefPtr::get): Ditto.
6707 (WTF::GRefPtr::operator*): Ditto.
6708 (WTF::GRefPtr::operator->): Ditto.
6709 (WTF::GRefPtr::operator!): Ditto.
6710 (WTF::GRefPtr::operator UnspecifiedBoolType): Ditto.
6711 (WTF::GRefPtr::hashTableDeletedValue): Ditto.
6712 (WTF::::operator): Ditto.
6713 (WTF::::swap): Ditto.
6715 (WTF::operator==): Ditto.
6716 (WTF::operator!=): Ditto.
6717 (WTF::static_pointer_cast): Ditto.
6718 (WTF::const_pointer_cast): Ditto.
6719 (WTF::getPtr): Ditto.
6720 (WTF::adoptGRef): Ditto.
6721 (WTF::refGPtr): Ditto.
6722 (WTF::derefGPtr): Ditto.
6724 2011-01-04 Daniel Bates <dbates@rim.com>
6726 Reviewed by Adam Roben.
6728 LEAK: Deallocate instance of ThreadFunctionInvocation if thread creation fails
6729 https://bugs.webkit.org/show_bug.cgi?id=51860
6731 * wtf/ThreadingWin.cpp:
6732 (WTF::createThreadInternal):
6734 2011-01-04 Laszlo Gombos <laszlo.1.gombos@nokia.com>
6736 Reviewed by Ariya Hidayat.
6738 [Qt][Symbian] Make sure that WebKit headers are included before platform headers on Symbian
6739 https://bugs.webkit.org/show_bug.cgi?id=31273
6741 On Symbian PREPEND_INCLUDEPATH is the best way to make sure that WebKit headers
6742 are included before platform headers. On all other platforms continue to use
6743 INCLUDEPATH (as before). This is a continuation of r65877.
6745 No new tests as there is no new functionality.
6747 * JavaScriptCore.pri:
6749 2011-01-04 Darin Adler <darin@apple.com>
6751 Try to fix Windows build.
6753 * wtf/ThreadingWin.cpp: Added include of PassOwnPtr.h. Fixed paragraphing
6754 of conditional includes.
6755 (WTF::wtfThreadEntryPoint): Use -> instead of . to dereference pointer.
6756 (WTF::createThreadInternal): Tweaked #if to not need separate macro.
6758 2011-01-04 Daniel Bates <dbates@rim.com>
6760 Reviewed by Adam Roben.
6762 Extract ThreadFunctionInvocation into separate file and share between Apple Windows and Android
6763 https://bugs.webkit.org/show_bug.cgi?id=51855
6765 Both the Apple Windows and Android ports implement a similar adapter structure,
6766 called ThreadFunctionInvocation and ThreadData respectively, as part of
6767 their thread creation process. Instead, we should share such an adapter
6768 structure and remove duplicate code.
6770 * JavaScriptCore.gypi: Added header wtf/ThreadFunctionInvocation.h.
6771 * wtf/ThreadFunctionInvocation.h: Added.
6772 (WTF::ThreadFunctionInvocation::ThreadFunctionInvocation):
6773 * wtf/ThreadingPthreads.cpp: Removed Android-specific structure ThreadData; Instead, use ThreadFunctionInvocation.
6774 (WTF::runThreadWithRegistration):
6775 (WTF::createThreadInternal):
6776 * wtf/ThreadingWin.cpp: Moved structure ThreadFunctionInvocation to its own file so that
6777 it can be shared with the Android implementation of createThreadInternal().
6778 (WTF::wtfThreadEntryPoint): Use OwnPtr to hold passed instance of ThreadFunctionInvocation.
6780 2011-01-04 Daniel Bates <dbates@rim.com>
6782 Reviewed by Darin Adler.
6784 Use __builtin_expect when compiling using RVCT in GNU mode
6785 https://bugs.webkit.org/show_bug.cgi?id=51866
6787 Derived from a patch by Dave Tapuska.
6789 * wtf/AlwaysInline.h:
6791 2011-01-03 Darin Adler <darin@apple.com>
6793 Reviewed by Brady Eidson.
6795 * wtf/Forward.h: Added Decoder and Encoder.
6797 2011-01-03 Brady Eidson <beidson@apple.com>
6799 Reviewed by Darin Adler.
6801 Add Encode/Decode machinery Darin and I plan to work with for back/forward stuff in WebKit2.
6803 Starting out with a pure virtual interface to be implemented in WK2, but we might change that later.
6806 * JavaScriptCore.vcproj/WTF/WTF.vcproj:
6807 * JavaScriptCore.xcodeproj/project.pbxproj:
6808 * wtf/CMakeLists.txt:
6810 * wtf/Decoder.h: Added.
6811 * wtf/Encoder.h: Added.
6813 2011-01-03 Laszlo Gombos <laszlo.1.gombos@nokia.com>
6815 Unreviewed build fix.
6817 [Qt] Add NullPtr.cpp introduced in r71155 to the Qt build system.
6819 This fix is required for builds where HAVE(NULLPTR) is false
6820 (e.g. some MSVC and Symbian builds).
6824 2011-01-02 Dan Bernstein <mitz@apple.com>
6826 Rubber-stamped by Simon Fraser.
6828 <rdar://problem/8812159> Update copyright strings
6832 2011-01-02 Csaba Osztrogonác <ossy@webkit.org>
6834 Fix GTK+ build after r74855.
6836 Reviewed by Xan Lopez.
6838 * GNUmakefile.am: Fix include pathes.
6840 2011-01-02 Adam Barth <abarth@webkit.org>
6842 One more .. missing in the Qt build.
6846 2011-01-02 Xan Lopez <xlopez@igalia.com>
6850 * GNUmakefile.am: add -I$(srcdir)/Source to the JSC cppflags so
6851 that anyone can include its headers without adding the prefix
6854 2011-01-02 Carl Lobo <carllobo@gmail.com>
6856 Reviewed by Adam Barth.
6858 Fix Windows Build for non-production where VSPropsRedirectionDir is not defined.
6859 https://bugs.webkit.org/show_bug.cgi?id=51797
6861 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
6862 * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh:
6863 * JavaScriptCore.vcproj/WTF/WTF.vcproj:
6864 * JavaScriptCore.vcproj/jsc/jsc.vcproj:
6865 * JavaScriptCore.vcproj/testapi/testapi.vcproj:
6867 2011-01-01 Adam Barth <abarth@webkit.org>
6869 Fix relative include paths in an attempt to fix the Qt build.
6871 * JavaScriptCore.pri:
6872 * JavaScriptCore.pro:
6874 2011-01-01 Adam Barth <abarth@webkit.org>
6876 Another speculative build fix for GTK.
6880 2011-01-01 Adam Barth <abarth@webkit.org>
6882 Speculative build fix for GTK. Update the paths in GNUmakefile to
6887 2011-01-01 Adam Barth <abarth@webkit.org>
6889 Update relative paths in JavaScriptCore.gyp to account for the extra
6890 level of directories.
6892 * JavaScriptCore.gyp/JavaScriptCore.gyp:
6894 2010-12-31 Patrick Gansterer <paroga@webkit.org>
6896 Reviewed by Darin Adler.
6898 Add a fast case for ASCII strings in HashAndUTF8CharactersTranslator::equal
6899 https://bugs.webkit.org/show_bug.cgi?id=50517
6901 This change shows about 2% performance win on the xml-parser benchmark.
6903 * wtf/text/AtomicString.cpp:
6904 (WTF::HashAndUTF8CharactersTranslator::equal):
6906 2010-12-30 Patrick Gansterer <paroga@webkit.org>
6908 Reviewed by Ariya Hidayat.
6910 [CMake] Add WTF_HEADERS
6911 https://bugs.webkit.org/show_bug.cgi?id=51741
6913 Add the WTF headers to show them in Visual Studio.
6915 * wtf/CMakeLists.txt:
6916 * wtf/CMakeListsWinCE.txt:
6918 2010-12-30 Konstantin Tokarev <annulen@yandex.ru>
6920 Reviewed by David Kilzer.
6922 [Qt] Don't build wtf/TCSystemAlloc.cpp if --system-malloc option is
6924 https://bugs.webkit.org/show_bug.cgi?id=51672
6926 * wtf/wtf.pri: Replaced USE_SYSTEM_MALLOC with USE_SYSTEM_MALLOC=1
6928 2010-12-30 Patrick Gansterer <paroga@webkit.org>
6930 Reviewed by Darin Adler.
6932 Use OS(WINDOWS) instead of COMPILER(MSVC) in FastMalloc.cpp
6933 https://bugs.webkit.org/show_bug.cgi?id=51743
6935 Most of the ifdefs belong to windows and not to the MSVC compiler.
6937 * wtf/FastMalloc.cpp:
6939 2010-12-29 Gavin Barraclough <barraclough@apple.com>
6941 Reviewed by Sam Weinig.
6943 Bug 51724 - In strict mode string literals should allow \0, but disallow \8 and \9.
6946 (JSC::Lexer::parseString):
6948 2010-12-29 Helder Correia <helder@sencha.com>
6950 Reviewed by Eric Seidel.
6952 <VT> and <FF> are not valid JSON whitespace characters
6953 https://bugs.webkit.org/show_bug.cgi?id=51671
6955 Vertical Tab and Form Feed are not allowed white spaces by the JSON
6956 RFC 4627: http://www.ietf.org/rfc/rfc4627.txt (2. JSON Grammar).
6958 Tests: ietestcenter/Javascript/15.12.1.1-0-2.html
6959 ietestcenter/Javascript/15.12.1.1-0-3.html
6961 * runtime/LiteralParser.cpp:
6962 (JSC::isJSONWhiteSpace):
6963 (JSC::LiteralParser::Lexer::lex):
6965 2010-12-28 Helder Correia <helder@sencha.com>
6967 Reviewed by Eric Seidel.
6969 JSON.stringify must exist as a function taking 3 parameters
6970 https://bugs.webkit.org/show_bug.cgi?id=51667
6972 The reported function length is 1 instead.
6974 Test: ietestcenter/Javascript/15.12.3-0-2.html
6976 * runtime/JSONObject.cpp:
6978 2010-12-28 Helder Correia <helder@sencha.com>
6980 Reviewed by Sam Weinig.
6982 JSON.parse must exist as a function taking 2 parameters
6983 https://bugs.webkit.org/show_bug.cgi?id=51666
6985 Support for revivers was introduced in bug 26591, but the function
6986 length has since remained unchanged.
6988 Test: ietestcenter/Javascript/15.12.2-0-2.html
6990 * runtime/JSONObject.cpp:
6992 2010-12-27 Jake Helfert <jake@jakeonthenet.com>
6994 Reviewed and reworked by Darin Adler.
6996 Building WebKit with Visual Studio 2010 fails due
6997 to ambiguous assignment operator errors.
6998 https://bugs.webkit.org/show_bug.cgi?id=51116
7000 * wtf/NullPtr.h: Added a HAVE(NULLPTR) definition for use with
7001 Platform.h HAVE macro, and included the Visual Studio 2010 compiler
7002 as one of the ones that has nullptr.
7003 * wtf/NullPtr.cpp: Updated condition to match.
7005 * wtf/PassOwnArrayPtr.h: Don't include the operator=(nullptr_t)
7006 overload if we are compiling in loose mode and the compiler has
7007 nullptr, because assignment of 0 will otherwise encounter
7008 ambiguitity with this overload and the overload for loose mode
7009 that takes a raw pointer. The conditional can be removed when we
7010 get rid of loose mode.
7011 * wtf/PassOwnPtr.h: Ditto.
7013 * wtf/PassRefPtr.h: Don't include the operator=(nullptr_t) overload
7014 if the compiler has nullptr, because assignment of 0 would be
7015 ambiguous with the overload that takes a raw pointer. The conditional
7016 can be removed if we ever decide we no longer need to support
7017 assigning 0, but might need a way to catch that usage on older compilers.
7018 * wtf/RefPtr.h: Ditto.
7019 * wtf/RetainPtr.h: Ditto
7021 * JavaScriptCore.xcodeproj/project.pbxproj: Added NullPtr.cpp,
7022 accidentally omitted when the file was first added.
7024 2010-12-26 Xan Lopez <xlopez@igalia.com>
7026 Reviewed by Eric Seidel.
7028 [GTK] Add standalone target for JSC
7029 https://bugs.webkit.org/show_bug.cgi?id=51607
7031 * GNUmakefile.am: add convenience target to only build jsc and its
7034 2010-12-24 Patrick Gansterer <paroga@webkit.org>
7036 Reviewed by Eric Seidel.
7038 [WINCE] Add CPU(MIPS) detection
7039 https://bugs.webkit.org/show_bug.cgi?id=51342
7041 WinCE usually defines MIPS and _MIPS_.
7045 2010-12-23 Gavin Barraclough <barraclough@apple.com>
7047 Reviewed by Sam Weinig.
7049 Rename RegexCompiler.cpp to RegexPattern.cpp.
7050 Implicitly call compileRegex from RegexPattern's constructor.
7055 * JavaScriptCore.gypi:
7056 * JavaScriptCore.pro:
7057 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
7058 * JavaScriptCore.xcodeproj/project.pbxproj:
7059 * runtime/RegExp.cpp:
7060 (JSC::RegExp::compile):
7061 * yarr/RegexCompiler.cpp: Removed.
7062 * yarr/RegexCompiler.h: Removed.
7063 * yarr/RegexInterpreter.cpp:
7064 * yarr/RegexJIT.cpp:
7065 * yarr/RegexPattern.cpp: Copied from JavaScriptCore/yarr/RegexCompiler.cpp.
7066 (JSC::Yarr::compileRegex):
7067 (JSC::Yarr::RegexPattern::RegexPattern):
7068 * yarr/RegexPattern.h:
7070 2010-12-23 Patrick Gansterer <paroga@webkit.org>
7072 Unreviewed build fix for WinCE after r74360.
7074 Move the OS(WINDOWS) section after the OS(WINCE) section
7075 and add missing argument to the getStackMax call.
7077 * wtf/StackBounds.cpp:
7078 (WTF::StackBounds::initialize):
7080 2010-12-22 Laszlo Gombos <laszlo.1.gombos@nokia.com>
7082 Unreviewed build fix.
7084 [Symbian] Make sure OSAllocatorSymbian builds
7086 This patch only addresses the build problem.
7088 https://bugs.webkit.org/show_bug.cgi?id=51128 tracks the full
7089 (re)implementation of the Symbian allocator.
7091 * wtf/OSAllocatorSymbian.cpp:
7092 (WTF::OSAllocator::reserveUncommitted):
7093 (WTF::OSAllocator::reserveAndCommit):
7094 (WTF::OSAllocator::commit):
7096 2010-12-22 Dan Bernstein <mitz@apple.com>
7098 Changed WebKitTools to Tools.
7100 * JavaScriptCore.vcproj/JavaScriptCore.sln:
7102 2010-12-22 Dan Bernstein <mitz@apple.com>
7104 Rubber-stamped by Mark Rowe.
7106 Changed WebKitTools to Tools in script build phases.
7108 * JavaScriptCore.xcodeproj/project.pbxproj:
7110 2010-12-22 Andrei Popescu <andreip@google.com>
7112 Unreviewed build fix.
7114 Fix Chromium Linux shared library build.
7115 [Chromium] r74431 broke the Chromium Linux shared library build
7116 https://bugs.webkit.org/show_bug.cgi?id=51462
7118 * JavaScriptCore.gyp/JavaScriptCore.gyp:
7119 * JavaScriptCore.gypi:
7121 2010-12-21 Sheriff Bot <webkit.review.bot@gmail.com>
7123 Unreviewed, rolling out r74462.
7124 http://trac.webkit.org/changeset/74462
7125 https://bugs.webkit.org/show_bug.cgi?id=51449
7127 broke chromium win (Requested by tonyg-cr on #webkit).
7129 * JavaScriptCore.gypi:
7131 2010-12-21 Tony Gentilcore <tonyg@chromium.org>
7133 Unreviewed build fix.
7135 [chromium] Build fix after r74431
7136 https://bugs.webkit.org/show_bug.cgi?id=51447
7138 * JavaScriptCore.gypi:
7140 2010-12-21 Gavin Barraclough <barraclough@apple.com>
7144 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
7146 2010-12-21 Gavin Barraclough <barraclough@apple.com>
7150 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
7152 2010-12-21 Gavin Barraclough <barraclough@apple.com>
7154 Speculative build fix.
7156 * jit/ExecutableAllocator.cpp:
7157 (JSC::ExecutableAllocator::underMemoryPressure):
7159 2010-12-21 Gavin Barraclough <barraclough@apple.com>
7161 Reviewed by Oliver Hunt.
7163 Bug 26276 - Need a mechanism to determine stack extent
7165 This patch adds accurate stack size calculation for:
7167 We still need to fix:
7168 WINDOWS, SOLARIS, OPENBSD, SYMBIAN, HAIKU, WINCE
7170 * wtf/StackBounds.cpp:
7171 (WTF::StackBounds::initialize):
7173 2010-12-21 Gavin Barraclough <barraclough@apple.com>
7175 Reviewed by Geoff Garen.
7177 <rdar://problem/8765333> CRASH running out of executable memory, loading io9.com
7178 https://bugs.webkit.org/show_bug.cgi?id=51443
7180 The problem here is that each page uses a reasonable amount of memory, (~4Mb),
7181 and that when miultiple pages are open we keep all JIT code for all functions
7184 Add a check to detect high memory pressure situations in the executable allocator
7185 (>50% of available memory allocated), and upon a top level entry into JSC (no code
7186 running on the stack) in this situation throw away all JIT code.
7188 * JavaScriptCore.exp:
7189 * debugger/Debugger.cpp:
7190 (JSC::Debugger::recompileAllJSFunctions): stop passing exec to recompile.
7191 * jit/ExecutableAllocator.h:
7192 * jit/ExecutableAllocatorFixedVMPool.cpp:
7193 (JSC::ExecutablePool::systemAlloc): Count allocations.
7194 (JSC::ExecutablePool::systemRelease): Count deallocations.
7195 (JSC::ExecutablePool::underMemoryPressure): Check memory pressure.
7196 * jit/ExecutableAllocatorPosix.cpp:
7197 (JSC::ExecutablePool::underMemoryPressure): Stub out; only meaningful with FixedVMPool.
7198 * jit/ExecutableAllocatorWin.cpp:
7199 (JSC::ExecutablePool::underMemoryPressure): Stub out; only meaningful with FixedVMPool.
7200 * runtime/Executable.cpp:
7201 (JSC::FunctionExecutable::recompile): Remove ExecState argument to recompile.
7202 * runtime/Executable.h:
7203 * runtime/JSGlobalData.cpp:
7204 (JSC::JSGlobalData::recompileAllJSFunctions): throws away all JIT code.
7205 * runtime/JSGlobalData.h:
7206 * runtime/JSGlobalObject.h:
7207 (JSC::DynamicGlobalObjectScope::DynamicGlobalObjectScope): add check / call to throw away.
7209 2010-12-21 Gavin Barraclough <barraclough@apple.com>
7211 Reviewed by Geoff Garen.
7213 <rdar://problem/8241425> JIT executable memory excessive usage due to regex caching
7214 https://bugs.webkit.org/show_bug.cgi?id=51434
7216 Reduce the amount of memory the RegExpCache can hold on to on iOS.
7217 Currently the RegExpCache can hold 256 RegExp objects. If each falls into a separate
7218 ExecutablePool, with a common size of 16Kb, this means we end up holding onto 4Mb of
7219 memory. Firstly, we can reduce this by simply reducing the size of the cache to 32
7220 entries. Secondly, we can use a separate set of ExecutablePools for JIT code generated
7221 from RegExp objects. This helps in two ways (1) it increases the probability that
7222 RegExps in the cache share the same pool, and (2) it means that a RegExp can't end
7223 up holding on to a large ExecutablePool containing a translation of JS code.
7224 (A RegExp could end up keeping a larger RegExp alive that happened to be sharing the
7225 same pool, but large RegExp patterns are less common).
7227 * runtime/JSGlobalData.h:
7228 * runtime/RegExpCache.h:
7229 * yarr/RegexJIT.cpp:
7230 (JSC::Yarr::RegexGenerator::compile):
7232 2010-12-21 Gavin Barraclough <barraclough@apple.com>
7236 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
7238 2010-12-21 Gavin Barraclough <barraclough@apple.com>
7242 * wtf/OSAllocator.h:
7243 (WTF::OSAllocator::decommitAndRelease):
7245 2010-12-21 Gavin Barraclough <barraclough@apple.com>
7247 Ooops, fixed typo in comment.
7249 * wtf/OSAllocator.h:
7251 2010-12-21 Geoffrey Garen <ggaren@apple.com>
7253 Reviewed by Gavin Barraclough & Oliver Hunt.
7255 Added PageAllocationAligned, a cross-platform abstraction for memory allocations with arbitrary alignment requirements
7256 https://bugs.webkit.org/show_bug.cgi?id=51359
7258 I think this patch fixes <rdar://problem/8107952> [5.0.1] WER crash in
7259 Heap::allocateBlock (1902752929), and some other leaks and crashes as well.
7264 * JavaScriptCore.gypi:
7265 * JavaScriptCore.vcproj/WTF/WTF.vcproj:
7266 * JavaScriptCore.xcodeproj/project.pbxproj: Updated build files.
7268 * runtime/AlignedMemoryAllocator.h: Removed. Supplanted by
7269 PageAllocationAligned.
7271 * runtime/Collector.cpp:
7272 (JSC::Heap::destroy):
7273 (JSC::Heap::allocateBlock):
7274 (JSC::Heap::freeBlock):
7275 (JSC::Heap::addWeakGCHandle):
7276 * runtime/Collector.h: Switched from AlignedMemoryAllocator to
7277 PageAllocationAligned.
7279 * runtime/GCHandle.cpp:
7280 * runtime/GCHandle.h: Ditto.
7282 * wtf/PageAllocation.h:
7283 (WTF::PageAllocation::PageAllocation): Removed aligned memory allocation
7284 functions. Supplanted by PageAllocationAligned.
7286 * wtf/PageAllocationAligned.cpp: Added.
7287 (WTF::PageAllocationAligned::allocate):
7288 (WTF::PageAllocationAligned::deallocate):
7289 * wtf/PageAllocationAligned.h: Added.
7290 (WTF::PageAllocationAligned::PageAllocationAligned): New cross-platform
7291 class for doing aligned memory allocation. This class properly matches
7292 allocation and deallocation library calls, fixing a long-standing bug
7295 * wtf/Platform.h: Removed some defunction VM platform defines.
7297 * wtf/wtf.pri: Updated build files.
7299 2010-12-21 Oliver Hunt <oliver@apple.com>
7301 Reviewed by Gavin Barraclough.
7303 ASSERTION FAILED: base->index() == m_codeBlock->argumentsRegister() while loading taobao.com
7304 https://bugs.webkit.org/show_bug.cgi?id=49006
7306 This problem was caused by having a parameter named 'arguments'.
7307 The fix is to treat parameters named 'arguments' as shadowing
7308 the actual arguments property, and so logically turn the function
7309 into one that doesn't "use" arguments.
7311 This required a bit of fiddling in the parser to ensure we correctly
7312 propagate the 'feature' of shadowing is set correctly.
7314 * bytecompiler/BytecodeGenerator.cpp:
7315 (JSC::BytecodeGenerator::createArgumentsIfNecessary):
7316 Change assertion to an early return as we may now reference
7317 a property named 'arguments' without being in a function that
7318 has the ArgumentsFeature
7319 * parser/JSParser.cpp:
7320 (JSC::JSParser::Scope::Scope):
7321 (JSC::JSParser::Scope::declareParameter):
7322 (JSC::JSParser::Scope::shadowsArguments):
7323 (JSC::JSParser::parseProgram):
7324 (JSC::JSParser::parseFormalParameters):
7325 (JSC::JSParser::parseFunctionInfo):
7327 (JSC::ScopeNode::usesArguments):
7329 2010-12-21 Daniel Bates <dbates@rim.com>
7331 Reviewed by Eric Seidel and Darin Adler.
7333 Deallocate GregorianDateTime.timeZone (if allocated) when copying so that we don't leak memory.
7334 https://bugs.webkit.org/show_bug.cgi?id=51367
7336 Inspired by a patch by George Staikos.
7339 (JSC::msToGregorianDateTime): Modified to set timeZone to nullptr since timeZone is now
7340 of type OwnPtrArray<char>.
7341 * wtf/DateMath.h: Change timeZone to type OwnArrayPtr<char>; Removed destructor since it is no longer needed.
7342 (JSC::GregorianDateTime::GregorianDateTime): Modified to use OwnPtrArray semantics for timeZone.
7343 (JSC::GregorianDateTime::operator tm): Ditto.
7344 (JSC::GregorianDateTime::copyFrom): Ditto.
7346 2010-12-21 Sheriff Bot <webkit.review.bot@gmail.com>
7348 Unreviewed, rolling out r74402.
7349 http://trac.webkit.org/changeset/74402
7350 https://bugs.webkit.org/show_bug.cgi?id=51402
7352 This patch broke the Windows 7 Release Layout Tests (Requested
7353 by jessieberlin on #webkit).
7355 * wtf/StackBounds.cpp:
7356 (WTF::estimateStackBound):
7357 (WTF::StackBounds::initialize):
7359 2010-12-21 Peter Varga <pvarga@inf.u-szeged.hu>
7361 Reviewed by Csaba Osztrogonác.
7363 Unify the name of parentheses in YARR: rename parenthesis to
7366 * yarr/RegexCompiler.cpp:
7367 (JSC::Yarr::RegexPatternConstructor::atomParenthesesEnd):
7369 2010-12-21 Laszlo Gombos <laszlo.1.gombos@nokia.com>
7371 Reviewed by Andreas Kling.
7373 [Qt] Set BUILDING_QT__ consistently
7374 https://bugs.webkit.org/show_bug.cgi?id=51341
7376 * JavaScriptCore.pri: Remove the definition of BUILDING_QT__ as it
7377 is already defined in WebKit.pri.
7379 2010-12-20 Gavin Barraclough <barraclough@apple.com>
7381 Reviewed by Oliver Hunt.
7383 Bug 26276 - Need a mechanism to determine stack extent
7385 This patch adds accurate stack size calculation for:
7386 DARWIN, WINDOWS, QNX, UNIX
7387 We still need to fix:
7388 SOLARIS, OPENBSD, SYMBIAN, HAIKU, WINCE
7390 * wtf/StackBounds.cpp:
7391 (WTF::StackBounds::initialize):
7393 2010-12-20 Gavin Barraclough <barraclough@apple.com>
7395 PPC build fix; stop using std::swap on PageAllocation/PageReservation,
7396 this was failing on some compilers since the lack of default construction
7397 for the m_executable/m_writable fields meant the value being swapped may
7398 not have been fully initialized.
7400 * wtf/PageAllocation.h:
7401 (WTF::PageAllocation::deallocate):
7403 * wtf/PageReservation.h:
7404 (WTF::PageReservation::deallocate):
7406 2010-12-20 Oliver Hunt <oliver@apple.com>
7408 Reviewed by Geoffrey Garen.
7410 |delete name| in strict mode code should be an early error
7411 https://bugs.webkit.org/show_bug.cgi?id=50431
7413 Disallow the |delete IDENTIFIER| production in strict mode, and removed
7414 a bunch of now unnecessary code.
7416 * parser/JSParser.cpp:
7417 (JSC::JSParser::Scope::collectFreeVariables):
7419 (JSC::JSParser::parseProgram):
7420 (JSC::JSParser::parseUnaryExpression):
7421 * parser/JSParser.h:
7422 * parser/Parser.cpp:
7423 (JSC::Parser::parse):
7425 (JSC::Parser::parse):
7427 2010-12-20 Gavin Barraclough <barraclough@apple.com>
7429 Reviewed by Olver Hunt.
7431 Bug 51358 - Should check stack depth rather than using recursion limits in byte compilation
7433 The current implementation of recursion limit checking is not safe on smaller stacks.
7434 Switch to using a common mechanism, shared with the parser, to check recursion limits.
7436 Make bytecompiler use StackBounds. Empirical testing shows emitStrcat to have the largest
7437 footprint on the stack, at just under 1k on x86-64. Given this, the default recursion
7438 check (requiring 4k of available space to recurse) seems reasonable.
7440 * bytecompiler/BytecodeGenerator.cpp:
7441 (JSC::BytecodeGenerator::BytecodeGenerator):
7442 * bytecompiler/BytecodeGenerator.h:
7443 (JSC::BytecodeGenerator::emitNode):
7444 (JSC::BytecodeGenerator::emitNodeInConditionContext):
7445 * bytecompiler/NodesCodegen.cpp:
7446 (JSC::BinaryOpNode::emitStrcat):
7448 2010-12-20 Tony Gentilcore <tonyg@chromium.org>
7450 Unreviewed build fix.
7452 Include pthread to fix chromium mac build (broken by r74360)
7453 https://bugs.webkit.org/show_bug.cgi?id=51356
7455 * wtf/StackBounds.cpp:
7457 2010-12-20 Xan Lopez <xlopez@igalia.com>
7459 Reviewed by Gustavo Noronha.
7461 * GNUmakefile.am: add missing files.
7463 2010-12-18 Gavin Barraclough <barraclough@apple.com>
7465 Reviewed by Oliver Hunt.
7467 Bug 26276 - Need a mechanism to determine stack extent
7469 This patch adds a class 'StackBounds', to hold information about the machine stack.
7470 The implementation of this class broadly adheres to the current implmentation of
7471 stack limit checking, and as such does not solve the problem of determining stack
7472 extent, but gives us a common place to do so.
7474 Currently two mechanism are provided to determine the stack origin (the point the
7475 stack is growing away from). currentThreadStackBase() in Collector provides a
7476 more accurate determination of the stack origin, so use this to calculate
7477 StackBounds::m_origin; WTFThreadData::approximatedStackStart is less accurate, and
7478 as such can be removed. Cache the StackBounds on WTFThreadData such that they
7479 need only be determined once per thread, and for non-API contexts cache this
7480 information in JSGlobalData, to save a thread-specific access.
7482 For the time being retain the estimate of stack size used by JSC's parser
7483 (128 * sizeof(void*) * 1024), with a view to replacing this with something more
7484 accurate in the near future.
7486 * parser/JSParser.cpp:
7487 (JSC::JSParser::canRecurse):
7488 (JSC::JSParser::JSParser):
7489 Change to use StackBounds.
7490 * runtime/Collector.cpp:
7491 (JSC::Heap::registerThread):
7492 (JSC::Heap::markCurrentThreadConservativelyInternal):
7493 Change to use StackBounds, cached on JSGlobalData.
7494 * runtime/JSGlobalData.cpp:
7495 (JSC::JSGlobalData::JSGlobalData):
7496 * runtime/JSGlobalData.h:
7497 (JSC::JSGlobalData::stack):
7498 Add a cached copy of StackBounds.
7499 * wtf/StackBounds.cpp: Copied from JavaScriptCore/runtime/Collector.cpp.
7500 (WTF::estimateStackBound):
7501 (WTF::StackBounds::initialize):
7503 Copy code from Collector.cpp to determine stack origin.
7504 * wtf/StackBounds.h: Added.
7505 (WTF::StackBounds::StackBounds):
7506 No argument constructor; returns a null StackBounds.
7507 (WTF::StackBounds::currentThreadStackBounds):
7508 Returns a StackBounds object representing the stack limits
7509 of the current thread.
7510 (WTF::StackBounds::origin):
7511 Returns to stack origin (the point the stack is growing away
7512 from; the highest extent of the stack on machines where the
7513 stack grows downwards.
7514 (WTF::StackBounds::recursionLimit):
7515 Returns a limit value that is 'a comfortable distance from
7516 the end of the stack'. Our concept of this is currently 1 page
7517 away from the end, however the default value may be tuned in
7518 the future, and clients may override passing a larger delta;
7519 should only be called on StackBounds object representing the
7520 stack of the thread this method is called on (checked by
7522 (WTF::StackBounds::recursionCheck):
7523 Checks whether we are currently 'a comfortable distance from
7524 the end of the stack'. Our concept of this is currently 1 page
7525 away from the end, however the default value may be tuned in
7526 the future, and clients may override passing a larger delta
7527 to apply when checking, if they wish to do so. This method
7528 should only be called on StackBounds object representing the
7529 stack of the thread this method is called on (checked by
7531 (WTF::StackBounds::current):
7532 Approximate current stack position. On machines where the stack
7533 is growing downwards this is the lowest address that might need
7534 conservative collection.
7535 (WTF::StackBounds::isGrowingDownward):
7536 True for all platforms other than WINCE, which has to check.
7537 (WTF::StackBounds::checkConsistency):
7538 This is called in methods that shoulds only be operating on a
7539 valid set of bounds; as such we expect m_origin != m_bounds
7540 (i.e. stack size != zero) - we're really testing that this
7541 object is not null (the constructor initializes both fields
7542 to zero). Also checks that current() is within the stack's
7544 * wtf/WTFThreadData.cpp:
7545 (WTF::WTFThreadData::WTFThreadData):
7546 * wtf/WTFThreadData.h:
7547 (WTF::WTFThreadData::stack):
7548 Add the StackBounds member variable.
7550 2010-12-17 Geoffrey Garen <ggaren@apple.com>
7552 Reviewed by Sam Weinig.
7554 Factored common page set management into a new PageBlock base class
7555 https://bugs.webkit.org/show_bug.cgi?id=51285
7560 * JavaScriptCore.gypi:
7561 * JavaScriptCore.vcproj/WTF/WTF.vcproj:
7562 * JavaScriptCore.xcodeproj/project.pbxproj:
7563 * interpreter/RegisterFile.h:
7564 (JSC::RegisterFile::RegisterFile):
7565 * jit/ExecutableAllocator.cpp:
7566 (JSC::ExecutableAllocator::intializePageSize):
7567 * wtf/PageAllocation.cpp: Removed.
7568 * wtf/PageAllocation.h:
7569 (WTF::PageAllocation::deallocate):
7570 (WTF::PageAllocation::PageAllocation):
7571 * wtf/PageReservation.h:
7572 (WTF::PageReservation::commit):
7573 (WTF::PageReservation::decommit):
7574 (WTF::PageReservation::deallocate):
7575 (WTF::PageReservation::PageReservation):
7578 2010-12-17 Michael Saboff <msaboff@apple.com>
7580 Reviewed by Oliver Hunt.
7582 RegExp Jit'ed expression crashes clicking link on yelp.com
7583 https://bugs.webkit.org/show_bug.cgi?id=51284
7585 When transitioning between an non-repeating beginning of line
7586 anchored expression and the remaining refactored repeating
7587 expression, we should not clear any residual datalabel in
7588 state's m_backtrack. It will be resolved and cleared in subsequent
7589 code when linkAlternativeBacktracks() is called for the repeating
7592 * yarr/RegexJIT.cpp:
7593 (JSC::Yarr::RegexGenerator::BacktrackDestination::clear):
7594 (JSC::Yarr::RegexGenerator::TermGenerationState::clearBacktrack):
7596 2010-12-17 Dan Bernstein <mitz@apple.com>
7598 Rubber-stamped by Mark Rowe.
7600 Updated for the renaming of WebKitTools to Tools
7602 * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh:
7604 2010-12-17 Ariya Hidayat <ariya@sencha.com>
7606 Reviewed by Oliver Hunt.
7608 [JSC] parseAssignmentExpression should use TreeBuilder::CreatesAST
7609 https://bugs.webkit.org/show_bug.cgi?id=51268
7611 * parser/JSParser.cpp:
7612 (JSC::JSParser::parseAssignmentExpression):
7614 2010-12-17 Geoffrey Garen <ggaren@apple.com>
7616 Reviewed by Oliver Hunt.
7618 Removed RChunk from PageAllocation/PageReservation, since it's now unused.
7619 https://bugs.webkit.org/show_bug.cgi?id=51276
7621 * wtf/PageAllocation.h:
7622 (WTF::PageAllocation::PageAllocation):
7623 * wtf/PageReservation.h:
7624 (WTF::PageReservation::PageReservation):
7626 2010-12-17 Oliver Hunt <oliver@apple.com>
7628 Reviewed by Gavin Barraclough.
7630 Incorrect encoding of some constants in ARMv7 JIT
7631 https://bugs.webkit.org/show_bug.cgi?id=51273
7632 <rdar://problem/8650210>
7634 When using immediate encoding 3 we need to write the byte
7635 that holds a duplicated value.
7637 * assembler/ARMv7Assembler.h:
7638 (JSC::ARMThumbImmediate::makeEncodedImm):
7640 2010-12-16 Evan Martin <evan@chromium.org>
7642 Reviewed by Darin Fisher.
7644 [chromium] useless warnings when building on Windows
7645 https://bugs.webkit.org/show_bug.cgi?id=50985
7647 Disable some compiler warnings that aren't indicative of real problems.
7649 * JavaScriptCore.gyp/JavaScriptCore.gyp:
7651 2010-12-16 Pratik Solanki <psolanki@apple.com>
7653 Reviewed by Geoffrey Garen.
7655 https://bugs.webkit.org/show_bug.cgi?id=51166
7656 ExecutableAllocator::cacheFlush should call sys_cache_control
7658 * jit/ExecutableAllocator.h:
7659 (JSC::ExecutableAllocator::cacheFlush): Use the more correct and forward looking API -
7660 sys_cache_control(kCacheFunctionPrepareForExecution,...).
7662 2010-12-16 Ariya Hidayat <ariya@sencha.com>
7664 Reviewed by Andreas Kling.
7666 [JSC] Const correctness in ASTBuilder and SyntaxChecker
7667 https://bugs.webkit.org/show_bug.cgi?id=51141
7669 * parser/ASTBuilder.h:
7670 (JSC::ASTBuilder::getName):
7671 (JSC::ASTBuilder::getType):
7672 (JSC::ASTBuilder::isResolve):
7673 * parser/SyntaxChecker.h:
7674 (JSC::SyntaxChecker::operatorStackPop):
7676 2010-12-15 Kenneth Russell <kbr@google.com>
7678 Reviewed by James Robinson.
7680 Web Audio API: port FFTFrame to MKL
7681 https://bugs.webkit.org/show_bug.cgi?id=50986
7683 Fixed bug in log2 emulation function provided for Windows port of
7689 2010-12-14 Mark Rowe <mrowe@apple.com>
7691 Reviewed by Sam Weinig.
7693 <http://webkit.org/b/51064> Reproducible crash inside WebCore::MediaPlayerPrivateQTKit::createQTMovie when loading <video>
7695 * wtf/text/WTFString.h: Prevent String from being implicitly convertable to bool.
7696 It was previously implicitly convertible to bool on Mac via operator NSString*,
7697 but since that always has a non-zero return value it would give unexpected results.
7699 2010-12-14 Laszlo Gombos <laszlo.1.gombos@nokia.com>
7701 Reviewed by Eric Seidel.
7703 [Qt] [Symbian] Do not use pkg-config on Symbian as it is not supported
7704 https://bugs.webkit.org/show_bug.cgi?id=50231
7706 Guard CONFIG+=link_pkgconfig with !symbian.
7710 2010-12-14 Cameron Zwarich <zwarich@apple.com>
7714 Revert accidental change disabling the JIT for most platforms.
7718 2010-12-13 Cameron Zwarich <zwarich@apple.com>
7720 Reviewed by Eric Seidel.
7722 Clang fails to build the JSC interpreter
7723 https://bugs.webkit.org/show_bug.cgi?id=51016
7725 Clang does not allow indirect gotos out of scopes with cleanup. GCC 4.2 allows
7726 them, but it does not correctly generate the cleanup, causing a leak if the
7727 cleanup decrements a reference count.
7729 * interpreter/Interpreter.cpp:
7730 (JSC::Interpreter::privateExecute): Put an Identifier into its own scope.
7732 2010-12-14 Carlos Garcia Campos <cgarcia@igalia.com>
7734 Reviewed by Martin Robinson.
7736 [GTK] Simplify context-menu handling code
7737 https://bugs.webkit.org/show_bug.cgi?id=49658
7739 * wtf/PlatformRefPtr.h: Add leakRef()
7741 2010-12-13 Cameron Zwarich <zwarich@apple.com>
7743 Reviewed by Gavin Barraclough.
7745 JavaScriptCore should not use "asm volatile" outside of a function
7746 https://bugs.webkit.org/show_bug.cgi?id=50991
7748 * jit/JITStubs.cpp: Remove the volatile keyword from asm statements.
7750 2010-12-13 Steve Falkenburg <sfalken@apple.com>
7752 Windows production build fix.
7753 Try copying ICU 4.6 in addition to 4.4 and 4.2.
7755 * JavaScriptCore.vcproj/jsc/jscPostBuild.cmd:
7757 2010-12-13 Michael Saboff <msaboff@apple.com>
7759 Reviewed by Oliver Hunt.
7761 REGRESSION: mobileme mail viewing is broken
7762 https://bugs.webkit.org/show_bug.cgi?id=50884
7764 Fixed problem where simple parenthesis (those without capture and
7765 with a fixed count) where not propagating backtrack to labels for
7766 nested parentheses. Also added the nesting level for the parentheses
7767 state created in that case as well.
7769 * yarr/RegexJIT.cpp:
7770 (JSC::Yarr::RegexGenerator::BacktrackDestination::copyBacktrackToLabel):
7771 (JSC::Yarr::RegexGenerator::TermGenerationState::isLastTerm):
7772 (JSC::Yarr::RegexGenerator::ParenthesesTail::generateCode):
7773 (JSC::Yarr::RegexGenerator::generateParenthesesSingle):
7775 2010-12-13 Peter Varga <pvarga@inf.u-szeged.hu>
7777 Reviewed by Gavin Barraclough.
7779 Reduce the size of the RegexStackSpaceForBackTrackInfoParentheses in YARR
7780 https://bugs.webkit.org/show_bug.cgi?id=49385
7782 Remove the BackTrackInfoParentheses struct prevBegin and prevEnd members.
7784 * yarr/RegexInterpreter.cpp:
7785 (JSC::Yarr::Interpreter::matchParentheses):
7786 (JSC::Yarr::Interpreter::backtrackParentheses):
7787 * yarr/RegexPattern.h:
7789 2010-12-10 Michael Saboff <msaboff@apple.com>
7791 Reviewed by Gavin Barraclough.
7793 REGRESSION Hang inside Yarr::RegexCodeBlock::execute when visiting
7795 https://bugs.webkit.org/show_bug.cgi?id=50816
7797 First nested parentheses of the second or greater alternative
7798 where backtracking to the prior parentheses. Changed the default
7799 handling of initial parentheses for all alternatives to go back
7800 to the immediate outer paren.
7802 * yarr/RegexJIT.cpp:
7803 (JSC::Yarr::RegexGenerator::GenerationState::addParenthesesTail):
7804 (JSC::Yarr::RegexGenerator::TermGenerationState::TermGenerationState):
7805 (JSC::Yarr::RegexGenerator::TermGenerationState::isLastTerm):
7806 (JSC::Yarr::RegexGenerator::TermGenerationState::getTermIndex):
7807 (JSC::Yarr::RegexGenerator::TermGenerationState::setParenthesesTail):
7808 (JSC::Yarr::RegexGenerator::TermGenerationState::getParenthesesTail):
7809 (JSC::Yarr::RegexGenerator::ParenthesesTail::ParenthesesTail):
7810 (JSC::Yarr::RegexGenerator::ParenthesesTail::processBacktracks):
7811 (JSC::Yarr::RegexGenerator::ParenthesesTail::generateCode):
7812 (JSC::Yarr::RegexGenerator::generateParenthesesSingle):
7814 2010-12-11 Patrick Gansterer <paroga@webkit.org>
7816 Reviewed by Darin Adler.
7818 Add an overload to makeString for Vector<char>
7819 https://bugs.webkit.org/show_bug.cgi?id=50123
7821 Also cleanup StringTypeAdapter.
7823 * wtf/text/StringConcatenate.h:
7825 2010-12-10 Siddharth Mathur <siddharth.mathur@nokia.com>
7827 Reviewed by Eric Seidel.
7829 [Qt] Build fix for Symbian: don't compile POSIX memory management implementation
7830 https://bugs.webkit.org/show_bug.cgi?id=50707
7834 2010-12-10 Steve Falkenburg <sfalken@apple.com>
7836 Windows production build fix.
7838 Don't stop if react-to-vsprops-changes.py exits with an error,
7839 since this will occur in production builds.
7841 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
7843 2010-12-10 Brian Weinstein <bweinstein@apple.com>
7845 Reviewed by Adam Roben.
7847 Turn on USE(CROSS_PLATFORM_CONTEXT_MENUS) for Windows.
7851 2010-12-10 Martin Robinson <mrobinson@igalia.com>
7853 Unreviewed, rolling out r73703.
7854 http://trac.webkit.org/changeset/73703
7855 https://bugs.webkit.org/show_bug.cgi?id=49658
7857 This patch is causing crashes on the GTK+ bots.
7859 * wtf/PlatformRefPtr.h:
7861 2010-12-10 Patrick Gansterer <paroga@webkit.org>
7863 Reviewed by Eric Seidel.
7865 Cleanup StringWx.cpp
7866 https://bugs.webkit.org/show_bug.cgi?id=50525
7868 Use StringImpl::createUninitialized to avoid memcpy and fix style issues.
7870 * wtf/wx/StringWx.cpp:
7871 (WTF::String::String):
7873 2010-12-10 Carlos Garcia Campos <cgarcia@igalia.com>
7875 Reviewed by Martin Robinson.
7877 [GTK] Simplify context-menu handling code
7878 https://bugs.webkit.org/show_bug.cgi?id=49658
7880 * wtf/PlatformRefPtr.h:
7882 2010-12-09 Michael Saboff <msaboff@apple.com>
7884 Reviewed by Gavin Barraclough.
7886 REGRESSION (r73065?): A regex no longer works
7887 https://bugs.webkit.org/show_bug.cgi?id=50570
7889 Changed the handling of adjacent parentheses backtracks in two ways.
7890 First, only outer most paren backtracks default to back tracking
7891 to the "next character" looping code. Second, added a jump around
7892 backtracks that fall through to the next backtrack where the
7893 second backtrack has some greedy processing before the backtracking
7894 from outside the parentheses code.
7895 Also cleaned up extraneous white spce, removing white space at the
7896 end of or that makes up a whole line.
7898 * yarr/RegexJIT.cpp:
7899 (JSC::Yarr::RegexGenerator::GenerationState::GenerationState):
7900 (JSC::Yarr::RegexGenerator::GenerationState::incrementParenNestingLevel):
7901 (JSC::Yarr::RegexGenerator::GenerationState::decrementParenNestingLevel):
7902 (JSC::Yarr::RegexGenerator::GenerationState::addParenthesesTail):
7903 (JSC::Yarr::RegexGenerator::GenerationState::emitParenthesesTail):
7904 (JSC::Yarr::RegexGenerator::ParenthesesTail::ParenthesesTail):
7905 (JSC::Yarr::RegexGenerator::ParenthesesTail::setNextIteration):
7906 (JSC::Yarr::RegexGenerator::ParenthesesTail::generateCode):
7907 (JSC::Yarr::RegexGenerator::generateParenthesesSingle):
7909 2010-12-09 Michael Saboff <msaboff@apple.com>
7911 Reviewed by Geoffrey Garen.
7913 Addressed the "FIXME" issues in array sort for toString() methods that
7914 mutate the array in either size or contents. The change is to mark
7915 the temporary array contents so that they are not garbage collected
7916 and to make sure the array is large enough to hold the contents
7917 of the sorted temporary vector.
7918 https://bugs.webkit.org/show_bug.cgi?id=50718
7920 * runtime/Collector.cpp:
7921 (JSC::Heap::addTempSortVector):
7922 (JSC::Heap::removeTempSortVector):
7923 (JSC::Heap::markTempSortVectors):
7924 (JSC::Heap::markRoots):
7925 * runtime/Collector.h:
7926 * runtime/JSArray.cpp:
7927 (JSC::JSArray::sort):
7928 * runtime/JSValue.h:
7930 2010-12-09 Michael Saboff <msaboff@apple.com>
7932 Reviewed by Darin Adler.
7934 Changed setting of backtrack labels to not overwrite a prior
7935 label. Where losing prior labe which then reverted back to
7936 next character label.
7937 https://bugs.webkit.org/show_bug.cgi?id=50579
7939 * yarr/RegexJIT.cpp:
7940 (JSC::Yarr::RegexGenerator::BacktrackDestination::setBacktrackToLabel):
7942 2010-12-08 Gavin Barraclough <barraclough@apple.com>
7944 Reviewed by Sam Weinig.
7946 Permit Character Class Escape in CharacterRange in Character Class.
7947 https://bugs.webkit.org/show_bug.cgi?id=50483
7948 https://bugs.webkit.org/show_bug.cgi?id=50538
7949 https://bugs.webkit.org/show_bug.cgi?id=50654
7950 https://bugs.webkit.org/show_bug.cgi?id=50646
7952 We recently tightened up our spec conformance in generating syntax
7953 error in these cases, however testing in the wild has shown this
7954 to be problematic. This reverts the previous change in allowing
7955 class escapes (e.g. \d) in ranges in character classes ([]), but
7956 does retain some closer conformance to the spec in only allowing
7957 ranges that would be permitted per the grammar rules in the spec
7958 (e.g. in /[\d-a-z]/ "a-z" cannot be considered as a range).
7960 * yarr/RegexParser.h:
7961 (JSC::Yarr::Parser::CharacterClassParserDelegate::atomPatternCharacter):
7962 (JSC::Yarr::Parser::CharacterClassParserDelegate::atomBuiltInCharacterClass):
7963 (JSC::Yarr::Parser::parse):
7965 2010-12-08 Geoffrey Garen <ggaren@apple.com>
7967 Reviewed by Sam Weinig.
7969 Try to fix crash-on-launch seen on Windows builder.
7971 * wtf/OSAllocatorWin.cpp:
7972 (WTF::OSAllocator::release): Disabled an ASSERT, because it checks for
7973 a bug that hasn't been fixed yet.
7975 2010-12-08 Geoffrey Garen <ggaren@apple.com>
7977 Try to fix Windows build.
7979 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Updated .def file.
7981 2010-12-08 Geoffrey Garen <ggaren@apple.com>
7983 Try to fix Windows build.
7985 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Updated .def
7986 file to remove a symbol -- the next build failure will say which symbol
7989 2010-12-08 Geoffrey Garen <ggaren@apple.com>
7991 Try to fix Windows build.
7993 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Updated .def file.
7995 2010-12-08 Geoffrey Garen <ggaren@apple.com>
7997 Try to fix GTK Linux build.
7999 * jit/ExecutableAllocator.cpp:
8000 (JSC::ExecutablePool::systemAlloc):
8001 * runtime/AlignedMemoryAllocator.h:
8002 (JSC::::AlignedMemoryAllocator): Updated for Usage enum moving to OSAllocator.
8004 2010-12-07 Geoffrey Garen <ggaren@apple.com>
8006 Reviewed by Sam Weinig.
8008 Migrated OS-specific allocation code from PageReservation and PageAllocation to OSAllocator
8009 https://bugs.webkit.org/show_bug.cgi?id=50653
8011 * JavaScriptCore.exp: Updated for new function signature.
8013 * interpreter/RegisterFile.h:
8014 (JSC::RegisterFile::RegisterFile):
8015 (JSC::RegisterFile::grow):
8016 * jit/ExecutableAllocatorFixedVMPool.cpp:
8017 (JSC::FixedVMPoolAllocator::reuse):
8018 (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator): Removed checkAllocatedOkay.
8019 OSAllocator is now the central location for verifying that allocation succeeds.
8020 This allowed me to remove some complicating cross-platform cruft.
8022 * runtime/AlignedMemoryAllocator.h:
8023 (JSC::::allocate): Updated for code motion.
8025 * wtf/OSAllocator.h: Added Usage, writable, and executable parameters, to
8026 support VM features required by clients of PageAllocation and PageReservation.
8028 * wtf/OSAllocatorPosix.cpp:
8029 (WTF::OSAllocator::reserve):
8030 (WTF::OSAllocator::reserveAndCommit):
8031 (WTF::OSAllocator::commit): Moved PageAllocation support for randomizing
8032 executable memory here.
8034 * wtf/OSAllocatorSymbian.cpp:
8035 (WTF::OSAllocator::reserve):
8036 (WTF::OSAllocator::reserveAndCommit):
8037 (WTF::OSAllocator::commit): Updated for new function signatures.
8039 * wtf/OSAllocatorWin.cpp:
8041 (WTF::OSAllocator::reserve):
8042 (WTF::OSAllocator::reserveAndCommit):
8043 (WTF::OSAllocator::commit):
8044 (WTF::OSAllocator::release): Updated for new function signatures. Moved
8045 some protection-related and WINCE-related code from PageAllocation here.
8047 * wtf/PageAllocation.cpp: Nixed cross-platform lastError abstraction, since
8048 it was only used by checkAllocatedOkay, which is now gone.
8050 * wtf/PageAllocation.h:
8051 (WTF::PageAllocation::allocate):
8052 (WTF::PageAllocation::allocateAligned):
8053 (WTF::PageAllocation::deallocate):
8054 (WTF::PageAllocation::isPowerOfTwo):
8055 (WTF::PageAllocation::systemAllocateAligned): Removed system* functions,
8056 and replaced calls to them with calls to OSAllocator.
8058 * wtf/PageReservation.h:
8059 (WTF::PageReservation::commit):
8060 (WTF::PageReservation::decommit):
8061 (WTF::PageReservation::reserve):
8062 (WTF::PageReservation::deallocate):
8063 (WTF::PageReservation::PageReservation): Ditto. Added m_writable and
8064 m_executable because these flags are now required when committing memory.
8066 2010-12-08 Chris Rogers <crogers@google.com>
8068 Reviewed by Kenneth Russell.
8070 Add web audio files to mac port Xcode projects
8071 https://bugs.webkit.org/show_bug.cgi?id=50721
8073 * JavaScriptCore.xcodeproj/project.pbxproj:
8075 2010-12-08 Oliver Hunt <oliver@apple.com>
8077 Reviewed by Gavin Barraclough.
8079 Marking the active global object re-enters through markConservatively
8080 https://bugs.webkit.org/show_bug.cgi?id=50711
8082 draining of the MarkStack is not allowed to be re-entrant, we got away
8083 with this simply due to the logic in MarkStack::drain implicitly handling
8084 changes that could be triggered by the re-entry.
8086 Just to be safe this patch removes the re-entry through markConservatively
8087 so we don't accidentally introduce such an issue in future. I've also
8088 added an assertion to catch such errors.
8090 * runtime/Collector.cpp:
8091 (JSC::Heap::markConservatively):
8092 (JSC::Heap::markCurrentThreadConservativelyInternal):
8093 (JSC::Heap::markOtherThreadConservatively):
8094 * runtime/JSArray.h:
8095 (JSC::MarkStack::drain):
8096 * runtime/MarkStack.h:
8097 (JSC::MarkStack::MarkStack):
8099 2010-12-08 Chris Marrin <cmarrin@apple.com>
8101 Reviewed by Simon Fraser.
8103 Share code between Mac (CA) and Windows (CACF) GraphicsLayer implementations
8104 https://bugs.webkit.org/show_bug.cgi?id=49388
8106 Added a WTF_PLATFORM_CA flag. Set when platform is MAC or IOS or (WINDOWS AND CG)
8107 which was decided was the best way to identify a build with CoreAnimation
8111 2010-12-07 Anders Carlsson <andersca@apple.com>
8113 Build fix follow up build fix.
8115 * pcre/pcre_ucp_searchfuncs.cpp:
8116 (jsc_pcre_ucp_othercase):
8118 2010-12-07 Anders Carlsson <andersca@apple.com>
8120 Reviewed by Darin Adler.
8123 https://bugs.webkit.org/show_bug.cgi?id=50645
8125 Explicitly cast offset to int.
8127 * pcre/pcre_ucp_searchfuncs.cpp:
8128 (jsc_pcre_ucp_othercase):
8130 2010-12-07 Kenneth Russell <kbr@google.com>
8132 Reviewed by David Levin.
8134 Fix compilation of core web audio files on Windows
8135 https://bugs.webkit.org/show_bug.cgi?id=50603
8137 Added log2 definition to MathExtras.h on Windows platform.
8142 2010-12-07 Antti Koivisto <antti@apple.com>
8144 Reviewed by Gavin Barraclough.
8146 https://bugs.webkit.org/show_bug.cgi?id=50412
8147 http://www.wunderground.com/US/CA/Hayward.html causes big memory spike during page loading
8149 Creating a substring caused the original string be flattened if it was in the rope form. This could use
8150 significant amount of memory by reducing buffer sharing between strings.
8152 Add a rope specific substring function that constructs the substring by reusing the rope fibers
8153 instead of flattening the rope.
8155 No change observed in SunSpider.
8157 * runtime/JSString.cpp:
8158 (JSC::JSString::substringFromRope):
8159 * runtime/JSString.h:
8161 * runtime/StringPrototype.cpp:
8162 (JSC::stringProtoFuncSubstr):
8163 (JSC::stringProtoFuncSubstring):
8165 2010-12-06 Geoffrey Garen <ggaren@apple.com>
8167 Reviewed by Gavin Barraclough.
8169 Simplified some ASLR-related code in PageAllocation/Reservation
8170 https://bugs.webkit.org/show_bug.cgi?id=50599
8172 Removed reserveAt, allocateAt, and friends, since they all existed to
8173 serve one feature: ASLR for executable memory on x86_64 on Mac. Moved
8174 ASLR code down into systemAllocate -- now, any time you allocate
8175 executable memory on a supporting platform, the memory's location is
8178 * jit/ExecutableAllocatorFixedVMPool.cpp:
8179 (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator): No need for the caller
8180 to randomize anything.
8182 * wtf/PageAllocation.h:
8183 (WTF::PageAllocation::systemAllocate): Removed some *At() functions, and
8184 beefed up executable allocation with randomization.
8186 * wtf/PageReservation.h:
8187 (WTF::PageReservation::systemReserve): Removed some *At() functions.
8189 2010-12-06 Geoffrey Garen <ggaren@apple.com>
8191 Reviewed by Maciej Stachowiak.
8193 reserveAndCommit doesn't commit on MADVISE_FREE_REUSE systems
8194 https://bugs.webkit.org/show_bug.cgi?id=50588
8196 * wtf/OSAllocatorPosix.cpp:
8197 (WTF::OSAllocator::reserve):
8198 (WTF::OSAllocator::reserveAndCommit):
8199 (WTF::OSAllocator::commit): Tightened up some comments. Changed
8200 reserveAndCommit to actually commit on MADVISE_FREE_REUSE systems.
8202 2010-12-06 Patrick Gansterer <paroga@webkit.org>
8204 Reviewed by Andreas Kling.
8206 [WINCE] Add build system
8207 https://bugs.webkit.org/show_bug.cgi?id=50522
8209 * CMakeListsWinCE.txt: Added.
8210 * shell/CMakeListsWinCE.txt: Added.
8211 * wtf/CMakeListsWinCE.txt: Added.
8213 2010-12-06 John Tantalo <john.tantalo@gmail.com>
8215 Reviewed by Geoffrey Garen.
8217 jsc does not ignore shebang
8218 https://bugs.webkit.org/show_bug.cgi?id=49576
8221 (fillBufferWithContentsOfFile):
8222 - translate shebang into a valid JavaScript comment so the lexer ignores it
8224 2010-12-05 Adam Roben <aroben@apple.com>
8226 Windows production build fix
8228 Put spaces after trailing backslashes when setting
8229 %WebKitVSPropsRedirectionDir%. According to MSDN
8230 <http://msdn.microsoft.com/en-us/library/2kzfk8c7(v=VS.80).aspx>:
8232 A backslash ( \ ) followed by a newline character is interpreted as
8233 a space in the command; use a backslash at the end of a line to
8234 continue a command onto the next line. NMAKE interprets the
8235 backslash literally if any other character, including a space or
8236 tab, follows the backslash.
8238 * JavaScriptCore.vcproj/JavaScriptCore.make:
8240 2010-12-04 Patrick Gansterer <paroga@webkit.org>
8242 Unreviewed, build fix after r69132.
8244 * shell/CMakeLists.txt: Fix directory name (jsc -> shell).
8246 2010-12-04 Xan Lopez <xlopez@igalia.com>
8248 Reviewed by Martin Robinson.
8250 [GTK] Drop GdkDrawable usage, it's deprecated in GTK+3.x and we can use GdkWindow
8251 https://bugs.webkit.org/show_bug.cgi?id=50451
8253 * wtf/gobject/GTypedefs.h: add GdkWindow defines.
8255 2010-12-03 Gavin Barraclough <barraclough@apple.com>
8257 Rubber stamped by Oliver Hunt.
8259 Bug 50509 - set* methods on MacroAssembler are awfully named.
8261 Methods set32 and setTest32 compare 32-bit operands, and set a 32-bit results based on the comparison.
8262 set8 compares 32-bit operands, and sets an 8-bit result based on the comparison.
8263 setTest8 compares 8-bit operands, and sets a 32-bit result based on the comparison.
8267 set32 -> set32Compare32
8268 setTest32 -> set32Test32
8269 set8 -> set8Compare32
8270 setTest8 -> set32Test8
8272 * assembler/MacroAssembler.h:
8273 (JSC::MacroAssembler::setPtr):
8274 * assembler/MacroAssemblerARM.h:
8275 (JSC::MacroAssemblerARM::set32Compare32):
8276 (JSC::MacroAssemblerARM::set8Compare32):
8277 (JSC::MacroAssemblerARM::set32Test32):
8278 (JSC::MacroAssemblerARM::set32Test8):
8279 * assembler/MacroAssemblerARMv7.h:
8280 (JSC::MacroAssemblerARMv7::set32Compare32):
8281 (JSC::MacroAssemblerARMv7::set8Compare32):
8282 (JSC::MacroAssemblerARMv7::set32Test32):
8283 (JSC::MacroAssemblerARMv7::set32Test8):
8284 * assembler/MacroAssemblerMIPS.h:
8285 (JSC::MacroAssemblerMIPS::set8Compare32):
8286 (JSC::MacroAssemblerMIPS::set32Compare32):
8287 (JSC::MacroAssemblerMIPS::set32Test8):
8288 (JSC::MacroAssemblerMIPS::set32Test32):
8289 * assembler/MacroAssemblerX86Common.h:
8290 (JSC::MacroAssemblerX86Common::set8Compare32):
8291 (JSC::MacroAssemblerX86Common::set32Compare32):
8292 (JSC::MacroAssemblerX86Common::set32Test8):
8293 (JSC::MacroAssemblerX86Common::set32Test32):
8294 * jit/JITOpcodes.cpp:
8295 (JSC::JIT::emit_op_eq):
8296 (JSC::JIT::emit_op_neq):
8297 (JSC::JIT::compileOpStrictEq):
8298 (JSC::JIT::emit_op_eq_null):
8299 (JSC::JIT::emit_op_neq_null):
8300 * jit/JITOpcodes32_64.cpp:
8301 (JSC::JIT::emit_op_eq):
8302 (JSC::JIT::emit_op_neq):
8303 (JSC::JIT::compileOpStrictEq):
8304 (JSC::JIT::emit_op_eq_null):
8305 (JSC::JIT::emit_op_neq_null):
8307 2010-12-03 Oliver Hunt <oliver@apple.com>
8309 Reviewed by Geoff Garen.
8311 Incorrect logic for returning memory at the end of linking.
8312 Reviewed by Geoff Garen.
8314 At the end of linking we return any space at the end of the
8315 allocated executable region that was saved due to branch
8316 compaction. This is currently by done by subtracting the
8317 different from the m_freePtr in the allocation pool. This
8318 can be incorrect if your allocation was made from a new
8319 page that was not selected for subsequent allocations.
8321 This patch corrects this behaviour by verifying that the
8322 memory being returned actually comes from the current
8325 * assembler/LinkBuffer.h:
8326 (JSC::LinkBuffer::linkCode):
8327 * jit/ExecutableAllocator.h:
8328 (JSC::ExecutablePool::tryShrink):
8330 2010-12-03 Michael Saboff <msaboff@apple.com>
8332 Reviewed by Gavin Barraclough
8334 Changes to significantly reduce branches to branches in JIT'ed
8335 parentheses backtrack processing. The changes include the following:
8336 - Taking the backtracking processing out of line and adding it as
8337 code at the end of the JIT'ed routine.
8338 - Allow backtracks to be direct via an indirect branch for an address
8339 pushed onto the stack. If the use of an indirect branch is from a
8340 conditional jump, then we emit a trampoline at the end of the
8342 - Propogate backtracks instead of adding trampolines. Backtracks are
8343 propogated to where they are used. This change also eliminated
8344 trampoline branch code that aren't used.
8345 - Added global expression state to keep track of parentheses tail
8346 code and indirect branches.
8347 Other changes made to support these changes.
8348 - Split invertOrCapture flag on Patterns to two separate flags. Added
8349 getters for these flags. Rippled these changes to both the JIT
8350 and interpreter code.
8351 - Split BacktrackDestination out off TermGenerationState struct.
8352 This is done to hold references to a backtrack for later code
8354 https://bugs.webkit.org/show_bug.cgi?id=50295
8356 * assembler/ARMAssembler.h:
8357 (JSC::ARMAssembler::JmpDst::isSet):
8358 * assembler/ARMv7Assembler.h:
8359 (JSC::ARMv7Assembler::JmpDst::isSet):
8360 * assembler/AbstractMacroAssembler.h:
8361 (JSC::AbstractMacroAssembler::Label::isSet):
8362 (JSC::AbstractMacroAssembler::DataLabelPtr::isUsed):
8363 (JSC::AbstractMacroAssembler::DataLabelPtr::used):
8364 (JSC::AbstractMacroAssembler::JumpList::clear):
8365 * assembler/MIPSAssembler.h:
8366 (JSC::MIPSAssembler::JmpDst::isSet):
8367 * assembler/X86Assembler.h:
8368 (JSC::X86Assembler::JmpDst::isSet):
8369 * yarr/RegexCompiler.cpp:
8370 (JSC::Yarr::RegexPatternConstructor::atomParenthesesSubpatternBegin):
8371 (JSC::Yarr::RegexPatternConstructor::atomParentheticalAssertionBegin):
8372 (JSC::Yarr::RegexPatternConstructor::atomBackReference):
8373 (JSC::Yarr::RegexPatternConstructor::setupAlternativeBeginTerms):
8374 * yarr/RegexInterpreter.cpp:
8375 (JSC::Yarr::ByteCompiler::atomParenthesesOnceBegin):
8376 (JSC::Yarr::ByteCompiler::atomParenthesesTerminalBegin):
8377 (JSC::Yarr::ByteCompiler::atomParenthesesSubpatternBegin):
8378 (JSC::Yarr::ByteCompiler::atomParentheticalAssertionBegin):
8379 (JSC::Yarr::ByteCompiler::atomParentheticalAssertionEnd):
8380 (JSC::Yarr::ByteCompiler::atomParenthesesSubpatternEnd):
8381 (JSC::Yarr::ByteCompiler::atomParenthesesOnceEnd):
8382 (JSC::Yarr::ByteCompiler::atomParenthesesTerminalEnd):
8383 (JSC::Yarr::ByteCompiler::emitDisjunction):
8384 * yarr/RegexInterpreter.h:
8385 (JSC::Yarr::ByteTerm::ByteTerm):
8386 (JSC::Yarr::ByteTerm::BackReference):
8387 (JSC::Yarr::ByteTerm::invert):
8388 (JSC::Yarr::ByteTerm::capture):
8389 * yarr/RegexJIT.cpp:
8390 (JSC::Yarr::RegexGenerator::IndirectJumpEntry::IndirectJumpEntry):
8391 (JSC::Yarr::RegexGenerator::IndirectJumpEntry::addJump):
8392 (JSC::Yarr::RegexGenerator::GenerationState::GenerationState):
8393 (JSC::Yarr::RegexGenerator::GenerationState::addIndirectJumpEntry):
8394 (JSC::Yarr::RegexGenerator::GenerationState::emitIndirectJumpTable):
8395 (JSC::Yarr::RegexGenerator::GenerationState::addParenthesesTail):
8396 (JSC::Yarr::RegexGenerator::GenerationState::emitParenthesesTail):
8397 (JSC::Yarr::RegexGenerator::GenerationState::addJumpToNextInteration):
8398 (JSC::Yarr::RegexGenerator::GenerationState::addJumpsToNextInteration):
8399 (JSC::Yarr::RegexGenerator::GenerationState::addDataLabelToNextIteration):
8400 (JSC::Yarr::RegexGenerator::GenerationState::linkToNextIteration):
8401 (JSC::Yarr::RegexGenerator::BacktrackDestination::BacktrackDestination):
8402 (JSC::Yarr::RegexGenerator::BacktrackDestination::clear):
8403 (JSC::Yarr::RegexGenerator::BacktrackDestination::clearDataLabel):
8404 (JSC::Yarr::RegexGenerator::BacktrackDestination::haveDestination):
8405 (JSC::Yarr::RegexGenerator::BacktrackDestination::isStackOffset):
8406 (JSC::Yarr::RegexGenerator::BacktrackDestination::isLabel):
8407 (JSC::Yarr::RegexGenerator::BacktrackDestination::isJumpList):
8408 (JSC::Yarr::RegexGenerator::BacktrackDestination::haveDataLabel):
8409 (JSC::Yarr::RegexGenerator::BacktrackDestination::copyTarget):
8410 (JSC::Yarr::RegexGenerator::BacktrackDestination::copyTo):
8411 (JSC::Yarr::RegexGenerator::BacktrackDestination::addBacktrackJump):
8412 (JSC::Yarr::RegexGenerator::BacktrackDestination::setStackOffset):
8413 (JSC::Yarr::RegexGenerator::BacktrackDestination::setLabel):
8414 (JSC::Yarr::RegexGenerator::BacktrackDestination::setNextBacktrackLabel):
8415 (JSC::Yarr::RegexGenerator::BacktrackDestination::setBacktrackToLabel):
8416 (JSC::Yarr::RegexGenerator::BacktrackDestination::setBacktrackJumpList):
8417 (JSC::Yarr::RegexGenerator::BacktrackDestination::setBacktrackSourceLabel):
8418 (JSC::Yarr::RegexGenerator::BacktrackDestination::setDataLabel):
8419 (JSC::Yarr::RegexGenerator::BacktrackDestination::setSubDataLabelPtr):
8420 (JSC::Yarr::RegexGenerator::BacktrackDestination::linkToNextBacktrack):
8421 (JSC::Yarr::RegexGenerator::BacktrackDestination::getStackOffset):
8422 (JSC::Yarr::RegexGenerator::BacktrackDestination::getLabel):
8423 (JSC::Yarr::RegexGenerator::BacktrackDestination::getBacktrackJumps):
8424 (JSC::Yarr::RegexGenerator::BacktrackDestination::getDataLabel):
8425 (JSC::Yarr::RegexGenerator::BacktrackDestination::jumpToBacktrack):
8426 (JSC::Yarr::RegexGenerator::BacktrackDestination::linkDataLabelToHereIfExists):
8427 (JSC::Yarr::RegexGenerator::BacktrackDestination::plantJumpToBacktrackIfExists):
8428 (JSC::Yarr::RegexGenerator::BacktrackDestination::linkAlternativeBacktracks):
8429 (JSC::Yarr::RegexGenerator::BacktrackDestination::linkAlternativeBacktracksTo):
8430 (JSC::Yarr::RegexGenerator::TermGenerationState::TermGenerationState):
8431 (JSC::Yarr::RegexGenerator::TermGenerationState::resetAlternative):
8432 (JSC::Yarr::RegexGenerator::TermGenerationState::isLastAlternative):
8433 (JSC::Yarr::RegexGenerator::TermGenerationState::clearBacktrack):
8434 (JSC::Yarr::RegexGenerator::TermGenerationState::jumpToBacktrack):
8435 (JSC::Yarr::RegexGenerator::TermGenerationState::plantJumpToBacktrackIfExists):
8436 (JSC::Yarr::RegexGenerator::TermGenerationState::linkDataLabelToBacktrackIfExists):
8437 (JSC::Yarr::RegexGenerator::TermGenerationState::addBacktrackJump):
8438 (JSC::Yarr::RegexGenerator::TermGenerationState::setDataLabelPtr):
8439 (JSC::Yarr::RegexGenerator::TermGenerationState::setBackTrackStackOffset):
8440 (JSC::Yarr::RegexGenerator::TermGenerationState::setBacktrackLabel):
8441 (JSC::Yarr::RegexGenerator::TermGenerationState::linkAlternativeBacktracks):
8442 (JSC::Yarr::RegexGenerator::TermGenerationState::linkAlternativeBacktracksTo):
8443 (JSC::Yarr::RegexGenerator::TermGenerationState::setBacktrackLink):
8444 (JSC::Yarr::RegexGenerator::TermGenerationState::chainBacktracks):
8445 (JSC::Yarr::RegexGenerator::TermGenerationState::chainBacktrackJumps):
8446 (JSC::Yarr::RegexGenerator::TermGenerationState::getBacktrackDestination):
8447 (JSC::Yarr::RegexGenerator::TermGenerationState::propagateBacktrackingFrom):
8448 (JSC::Yarr::RegexGenerator::ParenthesesTail::ParenthesesTail):
8449 (JSC::Yarr::RegexGenerator::ParenthesesTail::processBacktracks):
8450 (JSC::Yarr::RegexGenerator::ParenthesesTail::setNextIteration):
8451 (JSC::Yarr::RegexGenerator::ParenthesesTail::generateCode):
8452 (JSC::Yarr::RegexGenerator::generateAssertionBOL):
8453 (JSC::Yarr::RegexGenerator::generateAssertionEOL):
8454 (JSC::Yarr::RegexGenerator::generateAssertionWordBoundary):
8455 (JSC::Yarr::RegexGenerator::generatePatternCharacterSingle):
8456 (JSC::Yarr::RegexGenerator::generatePatternCharacterPair):
8457 (JSC::Yarr::RegexGenerator::generatePatternCharacterFixed):
8458 (JSC::Yarr::RegexGenerator::generatePatternCharacterGreedy):
8459 (JSC::Yarr::RegexGenerator::generatePatternCharacterNonGreedy):
8460 (JSC::Yarr::RegexGenerator::generateCharacterClassSingle):
8461 (JSC::Yarr::RegexGenerator::generateCharacterClassFixed):
8462 (JSC::Yarr::RegexGenerator::generateCharacterClassGreedy):
8463 (JSC::Yarr::RegexGenerator::generateCharacterClassNonGreedy):
8464 (JSC::Yarr::RegexGenerator::generateParenthesesDisjunction):
8465 (JSC::Yarr::RegexGenerator::generateParenthesesSingle):
8466 (JSC::Yarr::RegexGenerator::generateParenthesesGreedyNoBacktrack):
8467 (JSC::Yarr::RegexGenerator::generateParentheticalAssertion):
8468 (JSC::Yarr::RegexGenerator::generateDisjunction):
8469 (JSC::Yarr::RegexGenerator::compile):
8470 * yarr/RegexPattern.h:
8471 (JSC::Yarr::PatternTerm::PatternTerm):
8472 (JSC::Yarr::PatternTerm::invert):
8473 (JSC::Yarr::PatternTerm::capture):
8475 2010-12-03 Chris Rogers <crogers@google.com>
8477 Reviewed by Kenneth Russell.
8479 First steps to adding web audio files to build systems
8480 https://bugs.webkit.org/show_bug.cgi?id=49952
8484 2010-12-03 Patrick Gansterer <paroga@webkit.org>
8486 Reviewed by Andreas Kling.
8488 Move StringWx.cpp into wtf directory
8489 https://bugs.webkit.org/show_bug.cgi?id=50060
8491 * wtf/wx/StringWx.cpp: Renamed from WebCore/platform/text/wx/StringWx.cpp.
8492 (WTF::String::String):
8494 2010-12-03 Patrick Gansterer <paroga@webkit.org>
8496 Reviewed by Andreas Kling.
8498 Move StringBrew.cpp into wtf directory
8499 https://bugs.webkit.org/show_bug.cgi?id=50058
8501 * wtf/brew/StringBrew.cpp: Renamed from WebCore/platform/text/brew/StringBrew.cpp.
8502 (WTF::String::String):
8504 2010-12-03 Patrick Gansterer <paroga@webkit.org>
8506 Reviewed by Andreas Kling.
8508 Move StringHaiku.cpp into wtf directory
8509 https://bugs.webkit.org/show_bug.cgi?id=50057
8511 * wtf/haiku/StringHaiku.cpp: Renamed from WebCore/platform/text/haiku/StringHaiku.cpp.
8512 (WTF::String::String):
8513 (WTF::String::operator BString):
8515 2010-12-02 Geoffrey Garen <ggaren@apple.com>
8517 Try to fix Windows build.
8519 * runtime/GCActivityCallback.cpp:
8520 (JSC::DefaultGCActivityCallback::synchronize): Added a non-CF implementation.
8522 2010-12-02 Geoffrey Garen <ggaren@apple.com>
8524 Reviewed by Gavin Barraclough.
8526 Fixed <rdar://problem/8310571> CrashTracer: 60 crashes in Photo Booth at
8527 com.apple.JavaScriptCore: JSC::Heap::markRoots + 746
8530 (JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock): Call our new
8531 synchronize() function.
8533 * runtime/Collector.cpp:
8534 (JSC::Heap::activityCallback):
8535 * runtime/Collector.h: Added an activityCallback() accessor, for the
8538 * runtime/GCActivityCallback.h:
8539 (JSC::GCActivityCallback::synchronize):
8540 * runtime/GCActivityCallbackCF.cpp:
8541 (JSC::DefaultGCActivityCallback::DefaultGCActivityCallback):
8542 (JSC::DefaultGCActivityCallback::~DefaultGCActivityCallback):
8543 (JSC::DefaultGCActivityCallback::operator()):
8544 (JSC::DefaultGCActivityCallback::synchronize): Track the run loop we're
8545 scheduled in. If we begin/resume execution within a new run loop, reschedule
8546 on it. This prevents a crash when using a lockless context group on
8547 multiple threads -- the crash would happen if the GC timer scheduled on
8548 thread A, then you continued execution on thread B, then the thread A
8551 2010-12-02 Darin Adler <darin@apple.com>
8553 * wtf/ASCIICType.h: Fix wrong type from last check-in.
8555 2010-12-02 Darin Adler <darin@apple.com>
8557 Try to fix certain builds (Qt Windows).
8559 * wtf/ASCIICType.h: Added an overload for unsigned because in obsolete
8560 versions of ICU, UChar32 can be a typedef for unsigned. Adding this
8561 overload should make us compatible with these old ICUs.
8563 2010-12-02 Patrick Gansterer <paroga@webkit.org>
8565 Reviewed by Darin Adler.
8567 Add AtomicString::fromUTF8
8568 https://bugs.webkit.org/show_bug.cgi?id=45594
8570 Unicode::calculateStringHashFromUTF8 creates a StringHash out of UTF8 input data and
8571 calculates the required length for the UTF16 conversation in one step.
8572 This is then used in a specialized translator for the string table of AtomicString.
8574 * JavaScriptCore.exp:
8575 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
8576 * wtf/text/AtomicString.cpp:
8577 (WTF::CStringTranslator::equal):
8578 (WTF::HashAndUTF8CharactersTranslator::hash):
8579 (WTF::HashAndUTF8CharactersTranslator::equal):
8580 (WTF::HashAndUTF8CharactersTranslator::translate):
8581 (WTF::AtomicString::add):
8582 (WTF::AtomicString::addSlowCase):
8583 (WTF::AtomicString::find):
8584 (WTF::AtomicString::fromUTF8):
8585 * wtf/text/AtomicString.h:
8586 * wtf/text/StringImpl.h:
8587 * wtf/text/WTFString.h:
8588 * wtf/unicode/UTF8.cpp:
8589 (WTF::Unicode::readUTF8Sequence):
8590 (WTF::Unicode::convertUTF8ToUTF16):
8591 (WTF::Unicode::calculateStringHashFromUTF8):
8592 (WTF::Unicode::equalUTF16WithUTF8):
8593 * wtf/unicode/UTF8.h:
8595 2010-12-02 Geoffrey Garen <ggaren@apple.com>
8597 Reviewed by Sam Weinig.
8599 Added a little hardening to OSAllocator.
8601 * wtf/OSAllocatorPosix.cpp:
8602 (WTF::OSAllocator::release):
8603 * wtf/OSAllocatorWin.cpp:
8604 (WTF::OSAllocator::reserve):
8605 (WTF::OSAllocator::reserveAndCommit):
8606 (WTF::OSAllocator::commit):
8607 (WTF::OSAllocator::decommit):
8608 (WTF::OSAllocator::release): CRASH() if the OS's virtual memory system
8611 2010-12-02 Csaba Osztrogonác <ossy@webkit.org>
8613 Reviewed by Geoffrey Garen.
8615 [Qt] Make platform managing of OSAllocator better than r73106
8616 https://bugs.webkit.org/show_bug.cgi?id=50385
8618 * wtf/OSAllocatorPosix.cpp: Remove platform specific guard.
8619 * wtf/OSAllocatorSymbian.cpp: Remove platform specific guard.
8620 * wtf/OSAllocatorWin.cpp: Remove platform specific guard.
8621 * wtf/wtf.pri: Add the correct platform specific source file instead of all of them.
8623 2010-12-02 Patrick Gansterer <paroga@webkit.org>
8625 Reviewed by Andreas Kling.
8627 [WINCE] Use GetTickCount() for srand()
8628 https://bugs.webkit.org/show_bug.cgi?id=50338
8630 time() is not a native function on WinCE, so use GetTickCount() instead.
8632 * wtf/RandomNumberSeed.h:
8633 (WTF::initializeRandomNumberGenerator):
8635 2010-12-02 Norbert Leser <norbert.leser@nokia.com>
8637 Reviewed by Laszlo Gombos.
8639 [Qt] [Symbian] Reintroduce compiler optimizations for JSC
8640 https://bugs.webkit.org/show_bug.cgi?id=50270
8642 Add compiler optimization (symbian ARM target) which was lost after split from WebCore.
8643 Tested via Sunspider and V8 - both of which show significant performance improvement.
8645 * JavaScriptCore.pro:
8647 2010-12-02 Peter Varga <pvarga@inf.u-szeged.hu>
8649 Reviewed by Gavin Barraclough.
8651 Move regex parsing and fallback handling to runtime/RegExp.cpp
8652 https://bugs.webkit.org/show_bug.cgi?id=50015
8654 * runtime/RegExp.cpp:
8655 (JSC::RegExp::RegExp):
8656 (JSC::RegExp::create):
8657 (JSC::RegExp::compile):
8658 (JSC::RegExp::match):
8659 (JSC::RegExp::printTraceData):
8661 (JSC::RegExp::pattern):
8662 * yarr/RegexInterpreter.cpp:
8663 * yarr/RegexInterpreter.h:
8664 * yarr/RegexJIT.cpp:
8665 (JSC::Yarr::RegexGenerator::compile):
8666 (JSC::Yarr::jitCompileRegex):
8668 (JSC::Yarr::RegexCodeBlock::RegexCodeBlock):
8669 (JSC::Yarr::RegexCodeBlock::setFallBack):
8670 (JSC::Yarr::RegexCodeBlock::isFallBack):
8671 (JSC::Yarr::executeRegex):
8673 2010-12-01 Geoffrey Garen <ggaren@apple.com>
8675 Try to fix the GTK build.
8677 * GNUmakefile.am: Use a full path to OSAllocator*.cpp.
8679 2010-12-01 Geoffrey Garen <ggaren@apple.com>
8681 Try to fix the EFL Linux build.
8683 * CMakeListsEfl.txt: Added OSAllocator to the project.
8685 2010-12-01 Geoffrey Garen <ggaren@apple.com>
8687 Try to fix the Qt build: Include all OS files for Qt's sake, and then
8688 use #ifdefs in the files to exclude things based on OS.
8690 This is a pretty bad way to manage platforms -- hopefully we can
8691 fix the Qt build system and move away from this in the future.
8693 * wtf/OSAllocatorPosix.cpp:
8694 * wtf/OSAllocatorSymbian.cpp:
8695 * wtf/OSAllocatorWin.cpp:
8698 2010-12-01 Geoffrey Garen <ggaren@apple.com>
8700 Try to fix the Chromium build.
8702 * JavaScriptCore.gypi: This is a Windows build file, so use OSAllocatorWin.cpp.
8704 2010-12-01 Geoffrey Garen <ggaren@apple.com>
8706 Try to fix the GTK build.
8708 * GNUmakefile.am: Added OSAllocator to another project.
8710 2010-12-01 Geoffrey Garen <ggaren@apple.com>
8712 Try to fix the GTK Linux build.
8714 * JavaScriptCore.gypi: Added OSAllocator to the project.
8716 2010-12-01 Geoffrey Garen <ggaren@apple.com>
8718 Try to fix the Qt Linux build.
8720 * wtf/OSAllocatorPosix.cpp: Use the right errno.h.
8722 2010-12-01 Geoffrey Garen <ggaren@apple.com>
8724 Try to fix Windows build: export some more symbols.
8726 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
8728 2010-12-01 Geoffrey Garen <ggaren@apple.com>
8730 Try to fix the Qt Linux build.
8732 * wtf/wtf.pri: Use the POSIX OSAllocator for Qt Linux.
8734 2010-12-01 Geoffrey Garen <ggaren@apple.com>
8736 Windows build fix: commit doesn't have a return value.
8738 * wtf/OSAllocatorWin.cpp:
8739 (WTF::OSAllocator::commit):
8741 2010-12-01 Geoffrey Garen <ggaren@apple.com>
8743 Build fix: Export some symbols.
8745 * JavaScriptCore.exp:
8747 2010-12-01 Geoffrey Garen <ggaren@apple.com>
8751 * JavaScriptCore.xcodeproj/project.pbxproj: Export OSAllocator.h as private
8752 so other projects can see it.
8754 * wtf/OSAllocatorPosix.cpp: #include UnusedParam.h for UNUSED_PARAM.
8756 2010-12-01 Geoffrey Garen <ggaren@apple.com>
8758 Reviewed by Sam Weinig.
8760 Baby step toward a cross-platform virtual memory abstraction: created
8761 an all-static OSAllocator class and changed MarkStack to use it.
8763 * JavaScriptCore.exp: These functions are inlined now.
8765 * JavaScriptCore.vcproj/WTF/WTF.vcproj: Added OSAllocatorWin.cpp.
8767 * JavaScriptCore.xcodeproj/project.pbxproj: Added OSAllocatorPosix.cpp.
8769 * runtime/MarkStack.h:
8770 (JSC::MarkStack::allocateStack):
8771 (JSC::MarkStack::releaseStack): Use OSAllocator instead of rolling our
8772 own platform-specific code.
8774 * runtime/MarkStackNone.cpp: Removed. Nothing used this.
8776 * runtime/MarkStackPosix.cpp:
8777 * runtime/MarkStackSymbian.cpp:
8778 * runtime/MarkStackWin.cpp: Removed custom platform-specific code, since
8779 we use the OSAllocator abstraction now.
8781 * wtf/OSAllocator.h: Added.
8782 * wtf/OSAllocatorPosix.cpp: Added.
8783 (WTF::OSAllocator::reserve):
8784 (WTF::OSAllocator::reserveAndCommit):
8785 (WTF::OSAllocator::commit):
8786 (WTF::OSAllocator::decommit):
8787 (WTF::OSAllocator::release):
8788 * wtf/OSAllocatorSymbian.cpp: Added.
8789 (WTF::OSAllocator::reserve):
8790 (WTF::OSAllocator::reserveAndCommit):
8791 (WTF::OSAllocator::commit):
8792 (WTF::OSAllocator::decommit):
8793 (WTF::OSAllocator::release):
8794 * wtf/OSAllocatorWin.cpp: Added.
8795 (WTF::OSAllocator::reserve):
8796 (WTF::OSAllocator::reserveAndCommit):
8797 (WTF::OSAllocator::commit):
8798 (WTF::OSAllocator::decommit):
8799 (WTF::OSAllocator::release): The new OSAllocator abstraction.
8801 * wtf/wtf.pri: Added OSAllocatorSymbian.cpp.
8803 2010-12-01 Steve Falkenburg <sfalken@apple.com>
8805 Reviewed by Adam Roben.
8807 WinCairo build should not use link-time code generation (LTCG)
8808 https://bugs.webkit.org/show_bug.cgi?id=50353
8810 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
8811 * JavaScriptCore.vcproj/WTF/WTF.vcproj:
8812 * JavaScriptCore.vcproj/jsc/jsc.vcproj:
8813 * JavaScriptCore.vcproj/testapi/testapi.vcproj:
8815 010-12-01 Steve Falkenburg <sfalken@apple.com>
8817 Reviewed by Adam Roben.
8819 vcproj changes can't be applied cleanly by the Windows EWS bot
8820 https://bugs.webkit.org/show_bug.cgi?id=50328
8822 * JavaScriptCore.vcproj/JavaScriptCore.sln: Modified property svn:eol-style.
8823 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Modified property svn:eol-style.
8824 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCF.vsprops: Added property svn:eol-style.
8825 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCFLite.vsprops: Added property svn:eol-style.
8826 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: Added property svn:eol-style.
8827 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: Modified property svn:eol-style.
8828 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedCommon.vsprops: Added property svn:eol-style.
8829 * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln: Modified property svn:eol-style.
8830 * JavaScriptCore.vcproj/WTF/WTF.vcproj: Modified property svn:eol-style.
8831 * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops: Added property svn:eol-style.
8832 * JavaScriptCore.vcproj/jsc/jsc.vcproj: Modified property svn:eol-style.
8833 * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: Added property svn:eol-style.
8834 * JavaScriptCore.vcproj/testapi/testapi.vcproj: Modified property svn:eol-style.
8835 * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: Added property svn:eol-style.
8837 2010-12-01 Gavin Barraclough <barraclough@apple.com>
8839 Reviewed by Sam Weinig.
8841 Bug 50298 - /()()()()()()()()()(?:(\10a|b)(X|Y))+/.exec("bXXaYYaY") ASSERTs
8843 For unmatched subpattens we previously used to set the subpattern end to -1,
8844 but now we only set the start value. E.g. consider the following:
8845 /a(b)?c/.exec("ac");
8846 Previously we would generate an internal results array of:
8848 Since fairly recently we have generated results of:
8850 (With the end index of the subpattern uninitialized).
8852 Update these ASSERTs to account for this.
8854 Also, when stripping out self-referencing backreferences, (e.g. /(\1)/) we
8855 were checking the wrong property on the pattern term. We should have been
8856 looking at term.parentheses.subpatternId, but instead were checking
8857 term.subpatternId. The latter is actually only the subpatternId for
8858 back reference terms. Rename this to backReferenceSubpatternId.
8860 * yarr/RegexInterpreter.cpp:
8861 (JSC::Yarr::Interpreter::matchBackReference):
8862 (JSC::Yarr::Interpreter::backtrackBackReference):
8864 2010-11-30 Gavin Barraclough <barraclough@apple.com>
8866 Rubber stamped by Sam Weinig.
8868 Bug 50297 - \s in YARR should match BOMs.
8870 From section 15.10.2.12 CharacterClassEscape contains:
8872 The production CharacterClassEscape :: s evaluates by returning the set of characters containing the
8873 characters that are on the right-hand side of the WhiteSpace (7.2) or LineTerminator (7.3) productions.
8875 Table 2 in section 7.2 contains:
8877 \uFEFF Byte Order Mark <BOM>
8879 * create_regex_tables:
8880 Add BOM to spaces table.
8882 2010-11-30 Gavin Barraclough <barraclough@apple.com>
8884 Reviewed by Darin Adler.
8886 Fixed review comments following bug #48101.
8887 Mostly typos, plus gave quantifyInfinite a symbolic name.
8889 * yarr/RegexCompiler.cpp:
8890 (JSC::Yarr::RegexPatternConstructor::quantifyAtom):
8891 (JSC::Yarr::RegexPatternConstructor::checkForTerminalParentheses):
8892 * yarr/RegexInterpreter.cpp:
8893 (JSC::Yarr::Interpreter::backtrackParenthesesOnceEnd):
8894 (JSC::Yarr::Interpreter::matchParenthesesTerminalBegin):
8895 (JSC::Yarr::Interpreter::backtrackParenthesesTerminalBegin):
8896 (JSC::Yarr::Interpreter::backtrackParenthesesTerminalEnd):
8897 * yarr/RegexJIT.cpp:
8898 (JSC::Yarr::RegexGenerator::generatePatternCharacterGreedy):
8899 (JSC::Yarr::RegexGenerator::generatePatternCharacterNonGreedy):
8900 (JSC::Yarr::RegexGenerator::generateCharacterClassGreedy):
8901 * yarr/RegexParser.h:
8902 (JSC::Yarr::Parser::parseTokens):
8905 2010-11-30 Steve Falkenburg <sfalken@apple.com>
8907 Reviewed by Darin Adler.
8909 WTF project missing build-stopping code from its pre-build event
8910 https://bugs.webkit.org/show_bug.cgi?id=50281
8912 * JavaScriptCore.vcproj/WTF/WTFPreBuild.cmd:
8914 2010-11-30 Patrick Gansterer <paroga@webkit.org>
8916 Reviewed by Darin Adler.
8919 https://bugs.webkit.org/show_bug.cgi?id=49581
8921 Use macros and functions instead of range values directly.
8923 * wtf/unicode/UTF8.cpp:
8924 (WTF::Unicode::inlineUTF8SequenceLength):
8925 (WTF::Unicode::UTF8SequenceLength):
8926 (WTF::Unicode::convertUTF16ToUTF8):
8927 (WTF::Unicode::readUTF8Sequence):
8928 (WTF::Unicode::convertUTF8ToUTF16):
8929 * wtf/unicode/UnicodeMacrosFromICU.h: Added U_IS_SUPPLEMENTARY macro.
8931 2010-11-30 Geoffrey Garen <ggaren@apple.com>
8933 Reviewed by Gavin Barraclough.
8935 Fixed a crash seen when using a PageAllocation to store itself.
8937 * wtf/PageAllocation.h:
8938 (WTF::PageAllocation::systemDeallocate): Zero out m_base before unmapping
8939 it, in case unmapping m_base unmaps the PageAllocation.
8941 * wtf/BumpPointerAllocator.h:
8942 (WTF::BumpPointerPool::destroy): Now this work-around isn't needed!
8944 2010-11-30 Xan Lopez <xlopez@igalia.com>
8946 Reviewed by Darin Adler.
8948 m_hasNonEnumerableProperties is never initialized in Structure
8949 https://bugs.webkit.org/show_bug.cgi?id=50266
8951 * runtime/Structure.cpp:
8952 (JSC::Structure::Structure): initialize member variable.
8954 2010-11-29 Steve Falkenburg <sfalken@apple.com>
8956 Windows build fix (part 1). Use correct environment variable syntax in cmd files.
8958 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePostBuild.cmd:
8959 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePreBuild.cmd:
8960 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePreLink.cmd:
8961 * JavaScriptCore.vcproj/WTF/WTFPostBuild.cmd:
8962 * JavaScriptCore.vcproj/jsc/jscPostBuild.cmd:
8963 * JavaScriptCore.vcproj/jsc/jscPreBuild.cmd:
8964 * JavaScriptCore.vcproj/jsc/jscPreLink.cmd:
8965 * JavaScriptCore.vcproj/testapi/testapiPostBuild.cmd:
8966 * JavaScriptCore.vcproj/testapi/testapiPreBuild.cmd:
8967 * JavaScriptCore.vcproj/testapi/testapiPreLink.cmd:
8969 2010-11-29 Dan Bernstein <mitz@apple.com>
8971 Reviewed by Darin Adler.
8973 WTF support for <rdar://problem/8650085> adding word-prefix search options to the text search API.
8974 https://bugs.webkit.org/show_bug.cgi?id=50038
8976 * wtf/unicode/UnicodeMacrosFromICU.h: Copied additional macros from icu/unicode/utf16.h.
8978 2010-11-29 Steve Falkenburg <sfalken@apple.com>
8980 Reviewed by Darin Adler.
8982 JavaScriptCore projects on Windows should use cmd files for build events
8983 https://bugs.webkit.org/show_bug.cgi?id=50193
8985 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
8986 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePostBuild.cmd: Added.
8987 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePreBuild.cmd: Added.
8988 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePreLink.cmd: Added.
8989 * JavaScriptCore.vcproj/WTF/WTFPostBuild.cmd: Added property svn:eol-style.
8990 * JavaScriptCore.vcproj/WTF/WTFPreBuild.cmd: Added property svn:eol-style.
8991 * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
8992 * JavaScriptCore.vcproj/jsc/jscPostBuild.cmd: Added.
8993 * JavaScriptCore.vcproj/jsc/jscPreBuild.cmd: Added.
8994 * JavaScriptCore.vcproj/jsc/jscPreLink.cmd: Added.
8995 * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops:
8996 * JavaScriptCore.vcproj/testapi/testapiPostBuild.cmd: Added.
8997 * JavaScriptCore.vcproj/testapi/testapiPreBuild.cmd: Added.
8998 * JavaScriptCore.vcproj/testapi/testapiPreLink.cmd: Added.
9000 2010-11-29 Dai Mikurube <dmikurube@google.com>
9002 Reviewed by Kent Tamura.
9004 when empty, clicking "down" on outer-spin-button returns "max value"
9005 https://bugs.webkit.org/show_bug.cgi?id=45491
9007 It is required to calculate UTC/DST offsets to retrieve the current local milliseconds for
9008 date/time type inputs. WTF::currentTimeMS() returns a UTC time, and WTF::getLocalTime()
9009 returns a struct tm, not milliseconds.
9011 Calculating milliseconds from a struct tm is not simple since timegm() cannot be used in all
9012 environments. This calculation is already done in calculateUTCOffset(), and complicated.
9013 Duplicating this complicated calculation is unreasonable because of maintainability.
9014 To achieve this without duplication, we must call calculate{UTC|DST}Offset in some way.
9016 * JavaScriptCore.exp:
9017 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
9018 * wtf/DateMath.cpp: Changed calculateUTCOffset() and calculateDSTOffset() to external functions.
9019 (WTF::calculateUTCOffset):
9020 (WTF::calculateDSTOffset):
9023 2010-11-29 Chris Rogers <crogers@google.com>
9025 Reviewed by Kenneth Russell.
9027 Switch web audio code to use FloatPoint3D instead of Vector3
9028 https://bugs.webkit.org/show_bug.cgi?id=50186
9030 * wtf/Vector3.h: Removed.
9032 2010-11-29 Steve Falkenburg <sfalken@apple.com>
9034 Reviewed by Adam Roben.
9036 Add a mechanism for Windows pre-build/pre-link/post-build events to be separated into individual cmd files
9037 https://bugs.webkit.org/show_bug.cgi?id=49858
9039 We're migrating our prebuild/prelink/postbuild steps out of vcproj and vsprops files:
9040 - To simplify editing (editing vsprops build steps is confusing).
9041 - For more readable diffs.
9043 * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops:
9044 * JavaScriptCore.vcproj/WTF/WTFPostBuild.cmd: Added.
9045 * JavaScriptCore.vcproj/WTF/WTFPreBuild.cmd: Added.
9047 2010-11-29 Geoffrey Garen <ggaren@apple.com>
9049 Reviewed by Gavin Barraclough.
9051 Improved accuracy of command-line SunSpider.
9054 (functionRun): Changed the "run" function to run a given test in
9055 its own global object. Previously, all tests ran in the same global
9056 object, which created name conflicts, and made globals from previous
9057 tests artificially survive into later tests.
9059 Also changed "run" to return the elapsed milliseconds when running a
9060 given test, for slightly more accurate numbers.
9062 (functionCheckSyntax): Ditto on returning elapsed milliseconds.
9064 2010-11-29 Darin Adler <darin@apple.com>
9066 Reviewed by Andreas Kling.
9068 Remove a couple unneeded overflow checks
9069 https://bugs.webkit.org/show_bug.cgi?id=49816
9071 * wtf/text/CString.cpp:
9072 (WTF::CString::init): Use an ASSERT instead of
9073 an overflow check with CRASH.
9075 2010-11-29 Adam Roben <aroben@apple.com>
9077 Robustify react-to-vsprops-changes.py against changes to its location
9078 or the location of the .vsprops files
9080 Suggested by John Sullivan.
9082 * JavaScriptCore.vcproj/JavaScriptCore/react-to-vsprops-changes.py:
9083 Removed file_modification_times.
9084 (main): Use glob.glob to find the .vsprops files and assert that we found some.
9086 2010-11-29 Adam Roben <aroben@apple.com>
9088 Touch wtf/Platform.h whenever any .vsprops file changes
9090 This will cause all files to be recompiled, which will make changes to
9091 preprocessor macros (e.g., ENABLE_*) actually take effect.
9093 Fixes <http://webkit.org/b/50167> Windows build fails when ENABLE_*
9094 macros are changed (because not enough files are rebuilt)
9096 Reviewed by John Sullivan.
9098 * JavaScriptCore.vcproj/JavaScriptCore/react-to-vsprops-changes.py:
9099 (main): Touch wtf/Platform.h if it's older than any .vsprops file. Also
9100 added some comments and logging to make it clearer what the script is
9103 2010-11-29 Adam Roben <aroben@apple.com>
9105 Update react-to-vsprops-changes.py after r72555
9107 .vsprops files are no longer accessed relative to $WebKitLibrariesDir.
9109 Fixes <http://webkit.org/b/50166> REGRESSION (r72555):
9110 react-to-vsprops-changes.py no longer works for people with a
9111 non-default $WebKitLibrariesDir
9113 Reviewed by John Sullivan.
9115 * JavaScriptCore.vcproj/JavaScriptCore/react-to-vsprops-changes.py:
9116 (main): Always look in WebKitLibraries/win for .vsprops files, not in
9117 $WebKitLibrariesDir.
9119 2010-11-28 Gavin Barraclough <barraclough@apple.com>
9121 Reviewed by Sam Weinig.
9123 Bug 48100 - YARR allows what seems like a bogus character-class range
9125 Per ECMA-262 character classes containing character ranges containing
9126 character classes are invalid, eg:
9130 These should throw a syntax error.
9132 * yarr/RegexParser.h:
9134 2010-11-27 Gavin Barraclough <barraclough@apple.com>
9136 Reviewed by Sam Weinig.
9138 Bug 48101 - Yarr gives different results for /(?:a*?){2,}/
9140 The test cases in the linked mozilla bug demonstrate a couple of
9141 problems in subpattern matching. These bugs lie in the optimized
9142 cases - for matching parentheses with a quantity count of 1, and
9143 for matching greedy quantified parentheses at the end of a regex
9144 (which do not backtrack).
9146 In both of these cases we are failing to correctly handle empty
9147 matches. In the case of parentheses-single matches (quantity count
9148 one) we are failing to test for empty matches at all. In the case
9149 of terminal subpattern matches we do currently check, however there
9150 is a subtler bug here too. In the case of an empty match we will
9151 presently immediately fall through to the next alternative (or
9152 complete the regex match), whereas upon a failed match we should
9153 be backtracking into the failing alternative, to give it a chance
9154 to match further (e.g. consider /a??b?|a/.exec("ab") - upon first
9155 attempting to match the first alternative this will match the empty
9156 string - since a?? is non-greedy, however rather than moving on to
9157 the second alternative we should be re-matching the first one, at
9158 which point the non-greedy a?? will match, and as such the result
9159 should be "ab", not "a").
9161 Terminal subpattern matching contains a second bug, too. The frame
9162 location values in the subpattern should be being allocated with
9163 the outer disjunction's frame (as we do for the parentheses-single
9164 optimization). Consider the following three regexes:
9168 Considering only the frame location required by the atoms a,b, and
9169 c, (ignoring space associated with the nested subpattern) the first
9170 regex (a normal subpattern match) requires a frame size of 2 for
9171 the outer disjunction, (to backtrack terms a & c), with each
9172 iteration of the subpattern requiring a frame of size 1 (in order
9173 to backtrack b). In the case of the second regex (where the
9174 parentheses-single optimization will kick in) the outer frame must
9175 be set up with a frame size of 3, since the outer frame will also
9176 be used when running the nested subpattern. We will currently only
9177 allocate a farme of size 1 for the outer disjuntion (to contain a),
9178 howver the frame size should be 2 (since the subpattern will be
9179 evaluated in the outer frame). In addition to failing to allocate
9180 frame space the frame offsets are also presently invalid - in the
9181 case of the last regex b's frame location will be set assuming it
9182 to be the first term in the frame, whereas in this case b lies
9183 after the term a, and should be taking a separate frame location.
9185 In order to correctly allocate the frame for terminal subpattern
9186 matches we must move this optimization back up from the JIT into
9187 the compiler (and thus interpreter too), since this is where the
9188 frame allocation takes place.
9190 * yarr/RegexCompiler.cpp:
9191 (JSC::Yarr::RegexPatternConstructor::setupAlternativeOffsets):
9192 (JSC::Yarr::RegexPatternConstructor::checkForTerminalParentheses):
9193 (JSC::Yarr::compileRegex):
9194 * yarr/RegexInterpreter.cpp:
9195 (JSC::Yarr::Interpreter::matchParenthesesOnceBegin):
9196 (JSC::Yarr::Interpreter::matchParenthesesOnceEnd):
9197 (JSC::Yarr::Interpreter::backtrackParenthesesOnceBegin):
9198 (JSC::Yarr::Interpreter::backtrackParenthesesOnceEnd):
9199 (JSC::Yarr::Interpreter::matchParenthesesTerminalBegin):
9200 (JSC::Yarr::Interpreter::matchParenthesesTerminalEnd):
9201 (JSC::Yarr::Interpreter::backtrackParenthesesTerminalBegin):
9202 (JSC::Yarr::Interpreter::backtrackParenthesesTerminalEnd):
9203 (JSC::Yarr::Interpreter::matchDisjunction):
9204 (JSC::Yarr::ByteCompiler::atomParenthesesOnceBegin):
9205 (JSC::Yarr::ByteCompiler::atomParenthesesTerminalBegin):
9206 (JSC::Yarr::ByteCompiler::atomParenthesesSubpatternBegin):
9207 (JSC::Yarr::ByteCompiler::atomParentheticalAssertionEnd):
9208 (JSC::Yarr::ByteCompiler::atomParenthesesSubpatternEnd):
9209 (JSC::Yarr::ByteCompiler::atomParenthesesOnceEnd):
9210 (JSC::Yarr::ByteCompiler::atomParenthesesTerminalEnd):
9211 (JSC::Yarr::ByteCompiler::emitDisjunction):
9212 * yarr/RegexInterpreter.h:
9213 * yarr/RegexJIT.cpp:
9214 (JSC::Yarr::RegexGenerator::generateParenthesesSingle):
9215 (JSC::Yarr::RegexGenerator::generateParenthesesGreedyNoBacktrack):
9216 (JSC::Yarr::RegexGenerator::generateTerm):
9217 * yarr/RegexPattern.h:
9218 (JSC::Yarr::PatternTerm::PatternTerm):
9220 2010-11-24 Patrick Gansterer <paroga@webkit.org>
9222 Reviewed by Csaba Osztrogonác.
9224 Remove Bakefile build system files
9225 https://bugs.webkit.org/show_bug.cgi?id=49983
9227 r53757 only removed the content, but not the files.
9228 This patch removes that empty files.
9230 * JavaScriptCoreSources.bkl: Removed.
9231 * jscore.bkl: Removed.
9233 2010-11-24 Gabor Loki <loki@webkit.org>
9235 Reviewed by Csaba Osztrogonác.
9237 Merge the usage of jumps and calls at ARM-JIT
9238 https://bugs.webkit.org/show_bug.cgi?id=50008
9240 Those JmpSrc objects which represent jumps (not calls) should point to
9241 after the jump instruction.
9243 * assembler/ARMAssembler.h:
9244 (JSC::ARMAssembler::blx):
9245 (JSC::ARMAssembler::loadBranchTarget):
9246 (JSC::ARMAssembler::getAbsoluteJumpAddress):
9247 (JSC::ARMAssembler::linkJump):
9248 (JSC::ARMAssembler::relinkJump):
9249 (JSC::ARMAssembler::linkCall):
9250 (JSC::ARMAssembler::relinkCall):
9251 (JSC::ARMAssembler::getRelocatedAddress):
9252 (JSC::ARMAssembler::getDifferenceBetweenLabels):
9253 (JSC::ARMAssembler::getCallReturnOffset):
9254 * assembler/MacroAssemblerARM.h:
9255 (JSC::MacroAssemblerARM::call):
9257 2010-11-24 Carlos Garcia Campos <cgarcia@igalia.com>
9259 Reviewed by Xan Lopez.
9261 [GTK] Optimize foldCase, toLower and toUpper methods in glib unicode backend
9262 https://bugs.webkit.org/show_bug.cgi?id=48625
9264 GLib methods use UTF-8 strings, so we have to convert from UTF-16 to
9265 UTF-8 to perform the case operations and then convert back the result to
9266 UTF-16. GLib conversion methods return a new allocated string, so we
9267 have to memcpy the result into the destination buffer too. Using our
9268 own methods to convert between UTF-8 and UTF-16 from wtf/unicode/UTF8.h
9269 we don't need such memcpy, since they take an already allocated buffer
9270 rather than returning a new one. There's another optimization for the
9271 case when the destination buffer is not large enough. In that case,
9272 methods should return the expected destination buffer size and are
9273 called again with a new buffer. We can avoid the conversion to UTF-16 by
9274 pre-calculating the required size for the destination buffer.
9276 * wtf/unicode/glib/UnicodeGLib.cpp:
9277 (WTF::Unicode::getUTF16LengthFromUTF8):
9278 (WTF::Unicode::convertCase):
9279 (WTF::Unicode::foldCase):
9280 (WTF::Unicode::toLower):
9281 (WTF::Unicode::toUpper):
9283 2010-11-23 Patrick Gansterer <paroga@webkit.org>
9285 Reviewed by Sam Weinig.
9287 Use WTF::StringHasher directly in JavaScriptCore
9288 https://bugs.webkit.org/show_bug.cgi?id=49893
9290 * profiler/CallIdentifier.h:
9291 (JSC::CallIdentifier::Hash::hash):
9292 * runtime/Identifier.cpp:
9293 (JSC::IdentifierCStringTranslator::hash):
9294 (JSC::IdentifierUCharBufferTranslator::hash):
9296 2010-11-22 Patrick Gansterer <paroga@webkit.org>
9298 Reviewed by Sam Weinig.
9300 Add WTF::FixedArray::size()
9301 https://bugs.webkit.org/show_bug.cgi?id=49891
9303 Add a method to get the size of a FixedArray.
9306 (WTF::FixedArray::size):
9308 2010-11-22 Patrick Gansterer <paroga@webkit.org>
9310 Reviewed by Adam Roben.
9312 [WINCE] Set correct preprocessor definitions
9313 https://bugs.webkit.org/show_bug.cgi?id=49887
9317 2010-11-22 Adam Roben <aroben@apple.com>
9319 Use paths relative to $WebKitVSPropsRedirectionDir to access shared .vsprops files
9321 Apple's Windows build allows placing header files and import libraries for WebKit's
9322 dependencies (CoreGraphics, CFNetwork, SQLite, etc.) outside the source tree via the
9323 $WebKitLibrariesDir environment variable. This is both required for production builds and
9324 convenient for Apple-internal developer builds. Apple's production builds also require that
9325 WebKit's shared .vsprops files be accessed relative to $WebKitLibrariesDir. In production
9326 builds, the files are copied into that directory tree by the
9327 WebKitLibraries/win/tools/WinTools.make file. In Apple-internal developer builds, the
9329 JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make.
9331 This .vsprops copying is problematic in one very important case: when a developer updates
9332 their source tree and then tries to build. Visual Studio only reads .vsprops files when a
9333 project is first loaded. So, when Visual Studio is first opened after the .vsprops files are
9334 updated, it reads in the old files that were already residing in $WebKitLibrariesDir. When a
9335 build is started, JavaScriptCoreGenerated.make copies the new .vsprops files into
9336 $WebKitLibrariesDir, but Visual Studio will not pick up the changes. The rest of the build
9337 will proceed with out-of-date .vsprops files, which will likely result in a build failure.
9339 To fix this, we now use normal relative paths to access the .vsprops files in the source
9340 tree rather than in $WebKitLibrariesDir, but prefix those paths with a new environment
9341 variable, $WebKitVSPropsRedirectionDir. In developer builds, this environment variable is
9342 unset, so the normal relative paths are used to read the .vsprops files out of the source
9343 tree directly. In production builds, this environment variable is set to a fake directory
9344 that will cause the .vsprops files in $WebKitLibrariesDir to be found when the relative path
9347 For example, JavaScriptCore.vcproj uses this path for FeatureDefines.vsprops:
9349 $(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\FeatureDefines.vsprops
9351 In developer builds, where $WebKitVSPropsRedirectionDir is unset, this will point to the
9352 files in WebKitLibraries\win\tools\vsprops in the source tree. In production builds,
9353 JavaScriptCore.make sets $WebKitVSPropsRedirectionDir to
9354 "$(SRCROOT)\AppleInternal\tools\vsprops\OpenSource\1\2\3\", so the full path for
9355 FeatureDefines.vsprops becomes:
9357 $(SRCROOT)\AppleInternal\tools\vsprops\OpenSource\1\2\3\..\..\..\WebKitLibraries\win\tools\vsprops\FeatureDefines.vsprops
9361 $(SRCROOT)\AppleInternal\tools\vsprops\OpenSource\WebKitLibraries\win\tools\vsprops\FeatureDefines.vsprops
9363 (We rely on the fact that Windows doesn't care whether the directories "1", "2", and "3"
9364 actually exist since they are matched by an equal number of ".." path components.)
9366 Note that Visual Studio still won't pick up changes made to .vsprops files while Visual
9367 Studio is open, but that problem hasn't seemed to cause developers many headaches so far.
9369 Fixes <http://webkit.org/b/49181> Windows build fails mysteriously when .vsprops files are
9372 Reviewed by Dave Hyatt.
9374 * JavaScriptCore.vcproj/JavaScriptCore.make: Set $WebKitVSPropsRedirectionDir so that
9375 production builds can find the .vsprops files.
9377 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: Stopy copying the
9378 .vsprops files. It isn't needed anymore.
9380 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
9381 * JavaScriptCore.vcproj/WTF/WTF.vcproj:
9382 * JavaScriptCore.vcproj/jsc/jsc.vcproj:
9383 * JavaScriptCore.vcproj/testapi/testapi.vcproj:
9384 Changed to use paths relative to $WebKitVSPropsRedirectionDir to access shared .vsprops
9387 2010-11-19 Peter Varga <pvarga@inf.u-szeged.hu>
9389 Reviewed by Gavin Barraclough.
9391 YARR JIT should fallback to YARR Interpreter instead of PCRE.
9392 https://bugs.webkit.org/show_bug.cgi?id=46719
9394 Remove the ENABLE_YARR macro and the option of matching regular
9395 expressions with PCRE from JavaScriptCore.
9397 * runtime/JSGlobalData.h:
9398 * runtime/RegExp.cpp:
9399 (JSC::RegExp::compile):
9400 (JSC::RegExp::match):
9401 * tests/mozilla/expected.html:
9403 * yarr/RegexCompiler.cpp:
9404 * yarr/RegexCompiler.h:
9405 * yarr/RegexInterpreter.cpp:
9406 (JSC::Yarr::byteCompileRegex):
9407 * yarr/RegexInterpreter.h:
9408 * yarr/RegexJIT.cpp:
9409 (JSC::Yarr::jitCompileRegex):
9411 (JSC::Yarr::RegexCodeBlock::RegexCodeBlock):
9412 (JSC::Yarr::RegexCodeBlock::~RegexCodeBlock):
9413 (JSC::Yarr::RegexCodeBlock::getFallback):
9414 (JSC::Yarr::RegexCodeBlock::isFallback):
9415 (JSC::Yarr::RegexCodeBlock::setFallback):
9416 (JSC::Yarr::executeRegex):
9417 * yarr/RegexParser.h:
9418 * yarr/RegexPattern.h:
9420 2010-11-20 Kwang Yul Seo <skyul@company100.net>
9422 Reviewed by David Kilzer.
9424 [BREWMP] Replace DBGPRINTF and DBGPRINTF_FATAL with dbg_Message
9425 https://bugs.webkit.org/show_bug.cgi?id=49520
9427 DBGPRINTF and DBGPRINTF_FATAL macros are prohibited in Mod1. Use dbg_Message instead.
9429 * wtf/Assertions.cpp:
9432 2010-11-20 Gabor Loki <loki@webkit.org>
9434 Reviewed by Gavin Barraclough.
9436 Support JIT_OPTIMIZE_MOD on Thumb-2
9437 https://bugs.webkit.org/show_bug.cgi?id=49432
9439 Rewrite the soft modulo operation into macroassembler form, and move it
9440 to JSValue32_64 section.
9441 Add support for soft modulo on Thumb-2 JIT also.
9443 * assembler/ARMv7Assembler.h:
9444 (JSC::ARMv7Assembler::clz):
9445 * assembler/MacroAssemblerARM.h:
9446 (JSC::MacroAssemblerARM::countLeadingZeros32):
9447 (JSC::MacroAssemblerARM::relativeTableJump):
9448 * assembler/MacroAssemblerARMv7.h:
9449 (JSC::MacroAssemblerARMv7::countLeadingZeros32):
9450 (JSC::MacroAssemblerARMv7::relativeTableJump):
9451 * jit/JITArithmetic.cpp:
9452 (JSC::JIT::emit_op_mod):
9453 * jit/JITOpcodes.cpp:
9454 (JSC::JIT::privateCompileCTIMachineTrampolines):
9455 * jit/JITOpcodes32_64.cpp:
9456 (JSC::JIT::softModulo):
9458 (JSC::JITThunks::JITThunks):
9461 2010-11-20 David Kilzer <ddkilzer@apple.com>
9463 <http://webkit.org/b/49848> Make it possible to display the last character of a secure text field unobscured
9465 Reviewed by Darin Adler.
9467 * JavaScriptCore.exp:
9468 * wtf/text/StringImpl.cpp:
9469 (WTF::StringImpl::secure): Added argument that controls whether
9470 the last character is obscured or not. Implemented behavior.
9471 * wtf/text/StringImpl.h:
9472 (WTF::StringImpl::LastCharacterBehavior): Added enum.
9473 (WTF::StringImpl::secure): Updated method signature.
9475 2010-11-19 William Chan <willchan@chromium.org>
9477 Reviewed by David Levin.
9479 Add USE(CHROMIUM_NET)
9481 Indicates the use of Chromium's network stack. Chromium's network
9482 stack performs better when it has full view of all resource requests,
9483 so USE(CHROMIUM_NET) can be used to bypass throttles.
9485 https://bugs.webkit.org/show_bug.cgi?id=49778
9489 2010-11-19 Steve Falkenburg <sfalken@apple.com>
9491 Reviewed by Adam Roben.
9493 Add Debug_Cairo_CFLite and Release_Cairo_CFLite configurations for all vcproj files
9494 https://bugs.webkit.org/show_bug.cgi?id=49819
9496 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
9497 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj:
9498 * JavaScriptCore.vcproj/WTF/WTF.vcproj:
9499 * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops:
9500 * JavaScriptCore.vcproj/jsc/jsc.vcproj:
9501 * JavaScriptCore.vcproj/testapi/testapi.vcproj:
9503 2010-11-19 Oliver Hunt <oliver@apple.com>
9505 Reviewed by Geoffrey Garen.
9507 Don't check for constant registers when we can guarantee that the register won't be in the constant pool
9508 https://bugs.webkit.org/show_bug.cgi?id=49814
9510 Add uncheckedR(int) to CallFrame, and replace all the uses of r() with uncheckedR()
9511 when we can guarantee that the register is not referring to a constant.
9512 This makes the interpreter about 0.5% faster, and makes the CallFrame initialisation
9513 logic correct when we're using a faked callframe (as in the case of the globalExec).
9515 * bytecode/CodeBlock.cpp:
9516 (JSC::CodeBlock::createActivation):
9517 * debugger/DebuggerCallFrame.cpp:
9518 (JSC::DebuggerCallFrame::thisObject):
9519 * interpreter/CallFrame.h:
9520 (JSC::ExecState::uncheckedR):
9521 * interpreter/Interpreter.cpp:
9522 (JSC::Interpreter::resolve):
9523 (JSC::Interpreter::resolveSkip):
9524 (JSC::Interpreter::resolveGlobal):
9525 (JSC::Interpreter::resolveGlobalDynamic):
9526 (JSC::Interpreter::resolveBase):
9527 (JSC::Interpreter::resolveBaseAndProperty):
9528 (JSC::Interpreter::callEval):
9529 (JSC::Interpreter::unwindCallFrame):
9530 (JSC::Interpreter::throwException):
9531 (JSC::Interpreter::execute):
9532 (JSC::Interpreter::executeCall):
9533 (JSC::Interpreter::executeConstruct):
9534 (JSC::Interpreter::prepareForRepeatCall):
9535 (JSC::Interpreter::createExceptionScope):
9536 (JSC::Interpreter::privateExecute):
9538 (JSC::DEFINE_STUB_FUNCTION):
9539 * runtime/JSActivation.cpp:
9540 (JSC::JSActivation::argumentsGetter):
9542 2010-11-19 Steve Falkenburg <sfalken@apple.com>
9544 Reviewed by Darin Adler.
9546 Normalize Cairo/CFLite project/solution configuration names
9547 https://bugs.webkit.org/show_bug.cgi?id=49818
9549 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
9550 * JavaScriptCore.vcproj/jsc/jsc.vcproj:
9551 * JavaScriptCore.vcproj/testapi/testapi.vcproj:
9553 2010-11-18 Steve Falkenburg <sfalken@apple.com>
9555 Reviewed by Adam Roben.
9557 Windows vcproj configuration names should be normalized across projects
9558 https://bugs.webkit.org/show_bug.cgi?id=49776
9560 * JavaScriptCore.vcproj/JavaScriptCore.sln:
9561 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj:
9562 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedCommon.vsprops: Added.
9563 * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln:
9565 2010-11-19 Patrick Gansterer <paroga@webkit.org>
9567 Unreviewed, build fix after r72360.
9569 * bytecode/CodeBlock.h:
9570 (JSC::CodeBlock::bytecodeOffset):
9572 2010-11-18 Gavin Barraclough <barraclough@apple.com>
9574 Rubber stamped by Geoff Garen.
9576 Bug 49577 - Function.prototype should be non-configurable
9578 Ooops, Function.prototype should not be enumerable!
9580 * runtime/JSFunction.cpp:
9581 (JSC::JSFunction::getOwnPropertySlot):
9583 2010-11-18 Gavin Barraclough <barraclough@apple.com>
9585 Reviewed by Oliver Hunt.
9587 Bug 49708 - Stop recompiling functions to regenerate exception info.
9589 Instead only hold info as necessary – keep divot info is the inspector
9590 is enabled, line number info is debugging or profiling, and handler
9591 info for functions with try/catch.
9593 * bytecode/CodeBlock.cpp:
9594 (JSC::CodeBlock::dumpStatistics):
9595 (JSC::CodeBlock::CodeBlock):
9596 (JSC::CodeBlock::lineNumberForBytecodeOffset):
9597 (JSC::CodeBlock::expressionRangeForBytecodeOffset):
9598 (JSC::CodeBlock::shrinkToFit):
9599 * bytecode/CodeBlock.h:
9600 (JSC::CodeBlock::bytecodeOffset):
9601 (JSC::CodeBlock::addExpressionInfo):
9602 (JSC::CodeBlock::addLineInfo):
9603 (JSC::CodeBlock::hasExpressionInfo):
9604 (JSC::CodeBlock::hasLineInfo):
9605 (JSC::CodeBlock::needsCallReturnIndices):
9606 (JSC::CodeBlock::callReturnIndexVector):
9607 * bytecode/SamplingTool.cpp:
9608 (JSC::SamplingTool::dump):
9609 * bytecompiler/BytecodeGenerator.cpp:
9610 (JSC::BytecodeGenerator::generate):
9611 (JSC::BytecodeGenerator::BytecodeGenerator):
9612 * bytecompiler/BytecodeGenerator.h:
9613 (JSC::BytecodeGenerator::emitNode):
9614 (JSC::BytecodeGenerator::emitNodeInConditionContext):
9615 (JSC::BytecodeGenerator::emitExpressionInfo):
9616 (JSC::BytecodeGenerator::addLineInfo):
9617 * interpreter/Interpreter.cpp:
9618 (JSC::Interpreter::unwindCallFrame):
9619 (JSC::appendSourceToError):
9620 (JSC::Interpreter::throwException):
9621 (JSC::Interpreter::privateExecute):
9622 (JSC::Interpreter::retrieveLastCaller):
9623 * interpreter/Interpreter.h:
9625 (JSC::JIT::privateCompile):
9628 (JSC::DEFINE_STUB_FUNCTION):
9629 * runtime/Collector.cpp:
9630 (JSC::Heap::markRoots):
9631 * runtime/Executable.cpp:
9632 (JSC::EvalExecutable::compileInternal):
9633 (JSC::ProgramExecutable::compileInternal):
9634 (JSC::FunctionExecutable::compileForCallInternal):
9635 (JSC::FunctionExecutable::compileForConstructInternal):
9636 * runtime/Executable.h:
9637 * runtime/JSGlobalData.cpp:
9638 (JSC::JSGlobalData::JSGlobalData):
9639 * runtime/JSGlobalData.h:
9640 (JSC::JSGlobalData::usingAPI):
9641 * runtime/JSGlobalObject.h:
9642 (JSC::JSGlobalObject::supportsRichSourceInfo):
9643 (JSC::JSGlobalObject::globalData):
9645 2010-11-18 Adam Roben <aroben@apple.com>
9647 Add a script to delete manifest-related files when they are older than
9650 Changes to .vsprops files can cause the manifest files to become
9651 invalid, and Visual Studio doesn't always figure out that it needs to
9654 Reviewed by Sam Weinig.
9656 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
9657 Call the new script.
9659 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj:
9660 Added the new script.
9662 * JavaScriptCore.vcproj/JavaScriptCore/react-to-vsprops-changes.py: Added.
9663 (file_modification_times): Generator to return the modification time of
9664 each file in a directory hierarchy.
9665 (main): Get the modification time of the newest vsprops file, then find
9666 all manifest-related files in the obj directory. Delete all
9667 manifest-related files that are older than the newest vsprops file.
9669 2010-11-18 Mark Rowe <mrowe@apple.com>
9671 Rubber-stamped by Adam Roben.
9673 <rdar://problem/8602509&8602717&8602724> Enable compaction support.
9675 * Configurations/JavaScriptCore.xcconfig:
9677 2010-11-18 Gavin Barraclough <barraclough@apple.com>
9679 Reviewed by Oliver Hunt.
9681 Bug 49635 - Profiler implementation is fragile
9683 The profile presently requires the exception handling mechanism to explicitly
9684 remove all stack frames that are exited during the exception unwind mechanism.
9685 This is fragile in a number of ways:
9686 * We have to change bytecode register allocation when compiling code to run
9687 when profiling, to preserve the callee function (this is also required to
9688 call did_call after the call has returned).
9689 * In the JIT we have to maintain additional data structures
9690 (CodeBlock::RareData::m_functionRegisterInfos) to map back to the register
9691 containing the callee.
9692 * In the interpreter we use 'magic values' to offset into the instruction
9693 stream to rediscover the register containing the function.
9695 Instead, move profiling into the head and tail of functions.
9696 * This correctly accounts the cost of the call itself to the caller.
9697 * This allows us to access the callee function object from the callframe.
9698 * This means that at the point a call is made we can track the stack depth
9700 * When unwinding we can simply report the depth at which the exception is
9701 being handled - all call frames above this level are freed.
9703 * bytecode/CodeBlock.cpp:
9704 (JSC::CodeBlock::shrinkToFit):
9705 * bytecode/CodeBlock.h:
9706 (JSC::CodeBlock::bytecodeOffset):
9707 (JSC::CodeBlock::methodCallLinkInfo):
9708 * bytecompiler/BytecodeGenerator.cpp:
9709 (JSC::BytecodeGenerator::emitCall):
9710 (JSC::BytecodeGenerator::emitCallVarargs):
9711 * interpreter/Interpreter.cpp:
9712 (JSC::Interpreter::unwindCallFrame):
9713 (JSC::Interpreter::throwException):
9714 (JSC::Interpreter::execute):
9715 (JSC::Interpreter::executeCall):
9716 (JSC::Interpreter::executeConstruct):
9717 (JSC::Interpreter::privateExecute):
9719 (JSC::DEFINE_STUB_FUNCTION):
9720 * profiler/Profile.cpp:
9721 (JSC::Profile::Profile):
9722 * profiler/ProfileGenerator.cpp:
9723 (JSC::ProfileGenerator::addParentForConsoleStart):
9724 (JSC::ProfileGenerator::willExecute):
9725 (JSC::ProfileGenerator::didExecute):
9726 (JSC::ProfileGenerator::exceptionUnwind):
9727 (JSC::ProfileGenerator::stopProfiling):
9728 * profiler/ProfileGenerator.h:
9729 * profiler/ProfileNode.cpp:
9730 (JSC::ProfileNode::ProfileNode):
9731 (JSC::ProfileNode::willExecute):
9732 * profiler/ProfileNode.h:
9733 (JSC::ProfileNode::create):
9734 (JSC::ProfileNode::callerCallFrame):
9735 * profiler/Profiler.cpp:
9736 (JSC::dispatchFunctionToProfiles):
9737 (JSC::Profiler::_willExecute):
9738 (JSC::Profiler::_didExecute):
9739 (JSC::Profiler::exceptionUnwind):
9740 * profiler/Profiler.h:
9742 2010-11-18 Steve Falkenburg <sfalken@apple.com>
9744 Reviewed by Adam Roben.
9746 Remove leftover Windows Debug_Internal configurations
9747 https://bugs.webkit.org/show_bug.cgi?id=49758
9749 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
9750 * JavaScriptCore.vcproj/WTF/WTF.vcproj:
9751 * JavaScriptCore.vcproj/jsc/jsc.vcproj:
9752 * JavaScriptCore.vcproj/testapi/testapi.vcproj:
9754 2010-11-18 Chao-ying Fu <fu@mips.com>
9756 Reviewed by Csaba Osztrogonác.
9758 Avoid increasing required alignment of target type warning
9759 https://bugs.webkit.org/show_bug.cgi?id=43963
9761 * runtime/UString.h:
9762 (JSC::UStringHash::equal):
9763 * wtf/StdLibExtras.h:
9765 2010-11-17 Sam Weinig <sam@webkit.org>
9767 Reviewed by Anders Carlsson.
9769 Add stubbed out ScrollAnimator for the Mac
9770 https://bugs.webkit.org/show_bug.cgi?id=49678
9772 * wtf/Platform.h: Enable SMOOTH_SCROLLING on the Mac, this has no
9773 change in behavior at the moment.
9775 2010-11-17 David Kilzer <ddkilzer@apple.com>
9777 <http://webkit.org/b/49634> Make overflow guards in WTF::String::utf8 explicit
9779 Reviewed by Darin Adler.
9781 Add an explicit overflow check prior to allocating our buffer,
9782 rather than implicitly relying on the guard in convertUTF16ToUTF8.
9784 * wtf/text/WTFString.cpp:
9785 (WTF::String::utf8):
9787 2010-11-17 Sheriff Bot <webkit.review.bot@gmail.com>
9789 Unreviewed, rolling out r72197.
9790 http://trac.webkit.org/changeset/72197
9791 https://bugs.webkit.org/show_bug.cgi?id=49661
9793 broke fast/regex/test1.html (Requested by stampho on #webkit).
9795 * runtime/JSGlobalData.h:
9796 * runtime/RegExp.cpp:
9797 (JSC::RegExpRepresentation::~RegExpRepresentation):
9798 (JSC::RegExp::compile):
9799 (JSC::RegExp::match):
9800 * tests/mozilla/expected.html:
9802 * yarr/RegexCompiler.cpp:
9803 * yarr/RegexCompiler.h:
9804 * yarr/RegexInterpreter.cpp:
9805 * yarr/RegexInterpreter.h:
9806 * yarr/RegexJIT.cpp:
9807 (JSC::Yarr::jitCompileRegex):
9809 (JSC::Yarr::RegexCodeBlock::RegexCodeBlock):
9810 (JSC::Yarr::RegexCodeBlock::~RegexCodeBlock):
9811 (JSC::Yarr::RegexCodeBlock::getFallback):
9812 (JSC::Yarr::RegexCodeBlock::setFallback):
9813 (JSC::Yarr::executeRegex):
9814 * yarr/RegexParser.h:
9815 * yarr/RegexPattern.h:
9817 2010-11-17 Peter Varga <pvarga@inf.u-szeged.hu>
9819 Reviewed by Gavin Barraclough.
9821 YARR JIT should fallback to YARR Interpreter instead of PCRE.
9822 https://bugs.webkit.org/show_bug.cgi?id=46719
9824 Remove the ENABLE_YARR macro and the option of matching regular
9825 expressions with PCRE from JavaScriptCore.
9827 * runtime/JSGlobalData.h:
9828 * runtime/RegExp.cpp:
9829 (JSC::RegExp::compile):
9830 (JSC::RegExp::match):
9831 * tests/mozilla/expected.html:
9833 * yarr/RegexCompiler.cpp:
9834 * yarr/RegexCompiler.h:
9835 * yarr/RegexInterpreter.cpp:
9836 (JSC::Yarr::byteCompileRegex):
9837 * yarr/RegexInterpreter.h:
9838 * yarr/RegexJIT.cpp:
9839 (JSC::Yarr::jitCompileRegex):
9841 (JSC::Yarr::RegexCodeBlock::RegexCodeBlock):
9842 (JSC::Yarr::RegexCodeBlock::~RegexCodeBlock):
9843 (JSC::Yarr::RegexCodeBlock::getFallback):
9844 (JSC::Yarr::RegexCodeBlock::isFallback):
9845 (JSC::Yarr::RegexCodeBlock::setFallback):
9846 (JSC::Yarr::executeRegex):
9847 * yarr/RegexParser.h:
9848 * yarr/RegexPattern.h:
9850 2010-11-17 Peter Varga <pvarga@inf.u-szeged.hu>
9852 Reviewed by Gavin Barraclough.
9854 Extend YARR Interpreter with beginning character look-up optimization
9855 https://bugs.webkit.org/show_bug.cgi?id=45751
9857 Add beginning character look-up optimization which sets the start
9858 index to the first possible successful pattern match.
9859 Extend YARR Interpreter with lookupForBeginChars function which
9860 implements the beginning character look-up optimization.
9862 * yarr/RegexInterpreter.cpp:
9863 (JSC::Yarr::Interpreter::InputStream::readPair):
9864 (JSC::Yarr::Interpreter::InputStream::isNotAvailableInput):
9865 (JSC::Yarr::Interpreter::lookupForBeginChars):
9866 (JSC::Yarr::Interpreter::matchDisjunction):
9867 (JSC::Yarr::Interpreter::interpret):
9868 * yarr/RegexInterpreter.h:
9869 (JSC::Yarr::BytecodePattern::BytecodePattern):
9871 2010-11-17 Alexis Menard <alexis.menard@nokia.com>, Simon Hausmann <simon.hausmann@nokia.com>
9873 Reviewed by Kenneth Christiansen, Tor Arne Vestbø.
9875 [Qt] Add support for use GStreamer with the Qt build
9877 Enable the build/inclusion of the wtf/QObject convenience classes.
9879 * JavaScriptCore.pri:
9882 2010-11-17 Peter Varga <pvarga@inf.u-szeged.hu>
9884 Reviewed by Gavin Barraclough.
9886 Collect the beginning characters in a RegExp pattern for look-up
9888 https://bugs.webkit.org/show_bug.cgi?id=45748
9890 Extend the YARR's parser with an algorithm which collects the potential
9891 beginning characters from a RegExp pattern for later look-up optimization.
9893 * yarr/RegexCompiler.cpp:
9894 (JSC::Yarr::BeginCharHelper::BeginCharHelper):
9895 (JSC::Yarr::BeginCharHelper::addBeginChar):
9896 (JSC::Yarr::BeginCharHelper::merge):
9897 (JSC::Yarr::BeginCharHelper::addCharacter):
9898 (JSC::Yarr::BeginCharHelper::linkHotTerms):
9899 (JSC::Yarr::RegexPatternConstructor::RegexPatternConstructor):
9900 (JSC::Yarr::RegexPatternConstructor::addBeginTerm):
9901 (JSC::Yarr::RegexPatternConstructor::setupDisjunctionBeginTerms):
9902 (JSC::Yarr::RegexPatternConstructor::setupAlternativeBeginTerms):
9903 (JSC::Yarr::RegexPatternConstructor::setupBeginChars):
9904 (JSC::Yarr::compileRegex):
9905 * yarr/RegexPattern.h:
9906 (JSC::Yarr::TermChain::TermChain):
9907 (JSC::Yarr::BeginChar::BeginChar):
9908 (JSC::Yarr::RegexPattern::RegexPattern):
9909 (JSC::Yarr::RegexPattern::reset):
9911 2010-11-17 Sheriff Bot <webkit.review.bot@gmail.com>
9913 Unreviewed, rolling out r72160.
9914 http://trac.webkit.org/changeset/72160
9915 https://bugs.webkit.org/show_bug.cgi?id=49646
9917 Broke lots of fast/profiler tests, among others (Requested by
9920 * bytecode/CodeBlock.cpp:
9921 (JSC::CodeBlock::dump):
9922 (JSC::CodeBlock::functionRegisterForBytecodeOffset):
9923 (JSC::CodeBlock::shrinkToFit):
9924 * bytecode/CodeBlock.h:
9925 (JSC::CodeBlock::addFunctionRegisterInfo):
9926 * bytecode/Opcode.h:
9927 * bytecompiler/BytecodeGenerator.cpp:
9928 (JSC::BytecodeGenerator::BytecodeGenerator):
9929 (JSC::BytecodeGenerator::emitCall):
9930 (JSC::BytecodeGenerator::emitCallVarargs):
9931 (JSC::BytecodeGenerator::emitReturn):
9932 (JSC::BytecodeGenerator::emitConstruct):
9933 * bytecompiler/BytecodeGenerator.h:
9934 (JSC::CallArguments::profileHookRegister):
9935 * bytecompiler/NodesCodegen.cpp:
9936 (JSC::CallArguments::CallArguments):
9937 * interpreter/Interpreter.cpp:
9938 (JSC::Interpreter::unwindCallFrame):
9939 (JSC::Interpreter::throwException):
9940 (JSC::Interpreter::execute):
9941 (JSC::Interpreter::executeCall):
9942 (JSC::Interpreter::executeConstruct):
9943 (JSC::Interpreter::privateExecute):
9945 (JSC::JIT::privateCompileMainPass):
9947 * jit/JITOpcodes.cpp:
9948 (JSC::JIT::emit_op_profile_will_call):
9949 (JSC::JIT::emit_op_profile_did_call):
9950 * jit/JITOpcodes32_64.cpp:
9951 (JSC::JIT::emit_op_profile_will_call):
9952 (JSC::JIT::emit_op_profile_did_call):
9954 (JSC::DEFINE_STUB_FUNCTION):
9956 * profiler/Profile.cpp:
9957 (JSC::Profile::Profile):
9958 * profiler/ProfileGenerator.cpp:
9959 (JSC::ProfileGenerator::addParentForConsoleStart):
9960 (JSC::ProfileGenerator::willExecute):
9961 (JSC::ProfileGenerator::didExecute):
9962 (JSC::ProfileGenerator::stopProfiling):
9963 * profiler/ProfileGenerator.h:
9964 * profiler/ProfileNode.cpp:
9965 (JSC::ProfileNode::ProfileNode):
9966 (JSC::ProfileNode::willExecute):
9967 * profiler/ProfileNode.h:
9968 (JSC::ProfileNode::create):
9969 (JSC::ProfileNode::operator==):
9970 * profiler/Profiler.cpp:
9971 (JSC::dispatchFunctionToProfiles):
9972 (JSC::Profiler::willExecute):
9973 (JSC::Profiler::didExecute):
9974 * profiler/Profiler.h:
9976 2010-11-16 Gavin Barraclough <barraclough@apple.com>
9978 Reviewed by Sam Weinig.
9980 Bug 49635 - Profiler implementation is fragile
9982 The profile presently requires the exception handling mechanism to explicitly
9983 remove all stack frames that are exited during the exception unwind mechanism.
9984 This is fragile in a number of ways:
9985 * We have to change bytecode register allocation when compiling code to run
9986 when profiling, to preserve the callee function (this is also required to
9987 call did_call after the call has returned).
9988 * In the JIT we have to maintain additional data structures
9989 (CodeBlock::RareData::m_functionRegisterInfos) to map back to the register
9990 containing the callee.
9991 * In the interpreter we use 'magic values' to offset into the instruction
9992 stream to rediscover the register containing the function.
9994 Instead, move profiling into the head and tail of functions.
9995 * This correctly accounts the cost of the call itself to the caller.
9996 * This allows us to access the callee function object from the callframe.
9997 * This means that at the point a call is made we can track the stack depth
9999 * When unwinding we can simply report the depth at which the exception is
10000 being handled - all call frames above this level are freed.
10002 * JavaScriptCore.xcodeproj/project.pbxproj:
10003 * bytecode/CodeBlock.cpp:
10004 (JSC::CodeBlock::dump):
10005 (JSC::CodeBlock::shrinkToFit):
10006 * bytecode/CodeBlock.h:
10007 (JSC::CodeBlock::bytecodeOffset):
10008 (JSC::CodeBlock::methodCallLinkInfo):
10009 * bytecode/Opcode.h:
10010 * bytecompiler/BytecodeGenerator.cpp:
10011 (JSC::BytecodeGenerator::BytecodeGenerator):
10012 (JSC::BytecodeGenerator::emitCall):
10013 (JSC::BytecodeGenerator::emitCallVarargs):
10014 (JSC::BytecodeGenerator::emitReturn):
10015 (JSC::BytecodeGenerator::emitConstruct):
10016 * bytecompiler/BytecodeGenerator.h:
10017 (JSC::CallArguments::count):
10018 * bytecompiler/NodesCodegen.cpp:
10019 (JSC::CallArguments::CallArguments):
10020 * interpreter/Interpreter.cpp:
10021 (JSC::ProfileHostCall::ProfileHostCall):
10022 (JSC::ProfileHostCall::~ProfileHostCall):
10023 (JSC::Interpreter::unwindCallFrame):
10024 (JSC::Interpreter::throwException):
10025 (JSC::Interpreter::execute):
10026 (JSC::Interpreter::executeCall):
10027 (JSC::Interpreter::executeConstruct):
10028 (JSC::Interpreter::privateExecute):
10030 (JSC::JIT::privateCompileMainPass):
10032 * jit/JITOpcodes.cpp:
10033 (JSC::JIT::emit_op_profile_has_called):
10034 (JSC::JIT::emit_op_profile_will_return):
10035 * jit/JITOpcodes32_64.cpp:
10036 (JSC::JIT::emit_op_profile_has_called):
10037 (JSC::JIT::emit_op_profile_will_return):
10038 * jit/JITStubs.cpp:
10039 (JSC::DEFINE_STUB_FUNCTION):
10041 * profiler/Profile.cpp:
10042 (JSC::Profile::Profile):
10043 * profiler/ProfileGenerator.cpp:
10044 (JSC::ProfileGenerator::addParentForConsoleStart):
10045 (JSC::ProfileGenerator::willExecute):
10046 (JSC::ProfileGenerator::didExecute):
10047 (JSC::ProfileGenerator::exceptionUnwind):
10048 (JSC::ProfileGenerator::stopProfiling):
10049 * profiler/ProfileGenerator.h:
10050 * profiler/ProfileNode.cpp:
10051 (JSC::ProfileNode::ProfileNode):
10052 (JSC::ProfileNode::willExecute):
10053 * profiler/ProfileNode.h:
10054 (JSC::ProfileNode::create):
10055 (JSC::ProfileNode::operator==):
10056 (JSC::ProfileNode::exec):
10057 * profiler/Profiler.cpp:
10058 (JSC::dispatchFunctionToProfiles):
10059 (JSC::Profiler::hasCalled):
10060 (JSC::Profiler::willEvaluate):
10061 (JSC::Profiler::willReturn):
10062 (JSC::Profiler::didEvaluate):
10063 (JSC::Profiler::exceptionUnwind):
10064 * profiler/Profiler.h:
10066 2010-11-16 Brian Weinstein <bweinstein@apple.com>
10068 Reviewed by Adam Roben and Steve Falkenburg.
10070 Touch Platform.h to force a rebuild for Windows.
10074 2010-11-16 Steve Falkenburg <sfalken@apple.com>
10076 Reviewed by Adam Roben.
10078 Disable LTCG for Windows Release builds. Add new Release_LTCG configuration.
10079 https://bugs.webkit.org/show_bug.cgi?id=49632
10081 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
10082 * JavaScriptCore.vcproj/WTF/WTF.vcproj:
10083 * JavaScriptCore.vcproj/jsc/jsc.vcproj:
10084 * JavaScriptCore.vcproj/testapi/testapi.vcproj:
10086 2010-11-16 Peter Varga <pvarga@inf.u-szeged.hu>
10088 Reviewed by Gavin Barraclough.
10090 The number of recursive match calls isn't limited in YARR Interpreter
10091 https://bugs.webkit.org/show_bug.cgi?id=47906
10093 Check the number of the matchDisjunction recursive calls to avoid unbounded
10095 Now the matchDisjunction function returns JSRegExpResult instead of bool.
10096 The JSRegExpResult enum contains the result of matching or the error code
10097 of the failure (like HitLimit) which terminates the matching.
10098 The error codes are based on pcre's jsRegExpExecute error codes.
10100 * yarr/RegexInterpreter.cpp:
10101 (JSC::Yarr::Interpreter::parenthesesDoBacktrack):
10102 (JSC::Yarr::Interpreter::matchParentheses):
10103 (JSC::Yarr::Interpreter::backtrackParentheses):
10104 (JSC::Yarr::Interpreter::matchDisjunction):
10105 (JSC::Yarr::Interpreter::matchNonZeroDisjunction):
10106 (JSC::Yarr::Interpreter::interpret):
10107 (JSC::Yarr::Interpreter::Interpreter):
10108 * yarr/RegexInterpreter.h:
10110 2010-11-16 Brian Weinstein <bweinstein@apple.com>
10112 Rest of the Windows build fix.
10114 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
10116 2010-11-16 Gavin Barraclough <barraclough@apple.com>
10118 Windows build fix pt 1.
10120 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
10122 2010-11-16 Gavin Barraclough <barraclough@apple.com>
10124 Reviewed by Oliver Hunt.
10126 https://bugs.webkit.org/show_bug.cgi?id=49606
10128 The bug here is that we read the prototype from the RHS argument using a regular
10129 op_get_by_id before op_instanceof has checked that this is an object implementing
10130 HasInstance. This incorrect behaviour gives rise to further unnecessary complexity
10131 in the code base, since we have additional logic (implemented using the
10132 GetByIdExceptionInfo data structures on CodeBlock) to convert not an object errors
10133 from the get_by_id into invalid parameter errors. Having fixed this bug this code
10134 is all redundant, since in these cases the get_by_id will never have been reached.
10136 * bytecode/CodeBlock.cpp:
10137 (JSC::CodeBlock::dump):
10138 (JSC::CodeBlock::shrinkToFit):
10139 * bytecode/CodeBlock.h:
10140 (JSC::CodeBlock::addExpressionInfo):
10141 * bytecode/Opcode.h:
10142 * bytecompiler/BytecodeGenerator.cpp:
10143 (JSC::BytecodeGenerator::BytecodeGenerator):
10144 (JSC::BytecodeGenerator::emitCheckHasInstance):
10145 * bytecompiler/BytecodeGenerator.h:
10146 * bytecompiler/NodesCodegen.cpp:
10147 (JSC::InstanceOfNode::emitBytecode):
10148 * interpreter/Interpreter.cpp:
10149 (JSC::Interpreter::throwException):
10150 (JSC::Interpreter::privateExecute):
10152 (JSC::JIT::privateCompileMainPass):
10153 (JSC::JIT::privateCompileSlowCases):
10155 * jit/JITOpcodes.cpp:
10156 (JSC::JIT::emit_op_check_has_instance):
10157 (JSC::JIT::emit_op_instanceof):
10158 (JSC::JIT::emitSlow_op_check_has_instance):
10159 (JSC::JIT::emitSlow_op_instanceof):
10160 * jit/JITOpcodes32_64.cpp:
10161 (JSC::JIT::emit_op_check_has_instance):
10162 (JSC::JIT::emit_op_instanceof):
10163 (JSC::JIT::emitSlow_op_check_has_instance):
10164 (JSC::JIT::emitSlow_op_instanceof):
10165 * jit/JITStubs.cpp:
10166 (JSC::DEFINE_STUB_FUNCTION):
10168 * runtime/ExceptionHelpers.cpp:
10169 (JSC::createInterruptedExecutionException):
10170 (JSC::createTerminatedExecutionException):
10171 (JSC::createUndefinedVariableError):
10172 (JSC::createNotAFunctionError):
10173 (JSC::createNotAnObjectError):
10174 * runtime/ExceptionHelpers.h:
10175 * runtime/JSGlobalData.cpp:
10176 (JSC::JSGlobalData::JSGlobalData):
10177 * runtime/JSGlobalData.h:
10178 * runtime/JSNotAnObject.cpp:
10179 (JSC::JSNotAnObject::toPrimitive):
10180 (JSC::JSNotAnObject::getPrimitiveNumber):
10181 (JSC::JSNotAnObject::toBoolean):
10182 (JSC::JSNotAnObject::toNumber):
10183 (JSC::JSNotAnObject::toString):
10184 (JSC::JSNotAnObject::toObject):
10185 (JSC::JSNotAnObject::getOwnPropertySlot):
10186 (JSC::JSNotAnObject::getOwnPropertyDescriptor):
10187 (JSC::JSNotAnObject::put):
10188 (JSC::JSNotAnObject::deleteProperty):
10189 (JSC::JSNotAnObject::getOwnPropertyNames):
10190 * runtime/JSNotAnObject.h:
10191 (JSC::JSNotAnObject::JSNotAnObject):
10192 * runtime/JSObject.h:
10193 (JSC::JSObject::isActivationObject):
10194 * runtime/JSValue.cpp:
10195 (JSC::JSValue::toObjectSlowCase):
10196 (JSC::JSValue::synthesizeObject):
10197 (JSC::JSValue::synthesizePrototype):
10199 2010-11-15 Darin Adler <darin@apple.com>
10201 Reviewed by Sam Weinig.
10203 Harden additional string functions against large lengths
10204 https://bugs.webkit.org/show_bug.cgi?id=49574
10206 * wtf/text/CString.cpp:
10207 (WTF::CString::init): Check for length that is too large for CString.
10208 (WTF::CString::newUninitialized): Ditto.
10209 (WTF::CString::copyBufferIfNeeded): Fix types so the length stays
10212 * wtf/text/WTFString.cpp:
10213 (WTF::String::append): Check for length that is too large.
10215 2010-11-15 Gavin Barraclough <barraclough@apple.com>
10217 Reviewed by Sam Weinig.
10219 Bug 49577 - Function.prototype should be non-configurable
10221 JSC lazily allocates the prototype property of Function objects.
10223 We check the prototype exists on 'get', but not on 'put'.
10224 If you 'put' without having first done a 'get' you can end up with a configurable
10225 prototype (prototype should only ever be non-configurable).
10227 This is visible in a couple of ways:
10228 * 'delete' on the property may succeed. (the next access will result in a new,
10229 reset prototype object).
10230 * the prototype may be set to a getter.
10232 * runtime/JSFunction.cpp:
10233 (JSC::JSFunction::getOwnPropertyNames):
10234 Reify the prototype property before allowing an enumerate including don't enum properties.
10235 (JSC::JSFunction::put):
10236 Reify the prototype property before any put to it.
10238 2010-11-15 Gavin Barraclough <barraclough@apple.com>
10240 Reviewed by Geoff Garen.
10242 Bug 49488 - Only add source specific information to exceptions in Interpreter::throwException
10244 Three types of source location information are added to errors.
10246 (1) Divot information.
10248 This was added with the intention of using it to provide better source highlighting in the inspector.
10249 We may still want to do so, but we probably should not be exposing these values in a manner visible to
10250 user scripts – only through an internal C++ interface. The code adding divot properties to objects has
10253 (2) Line number information.
10255 Line number information is presently sometimes added at the point the exception is created, and sometimes
10256 added at the point the exception passes through throwException. Change this so that throwException has
10257 the sole responsibility for adding line number and source file information.
10259 (3) Source snippets in the message of certain type errors (e.g. 'doc' in `Result of expression 'doc' [undefined] is not an object.`).
10261 These messages are currently created at the point the exceptions is raised. Instead reformat the message
10262 such that the source snippet is located at the end (`Result of expression 'b1' [undefined] is not an object.`
10263 becomes `'undefined' is not an object (evaluating 'b1.property')`), and append these to the message at
10264 the in throw Exception. This presents a number of advantages:
10265 * we no longer need to have source location information to create these TypeErrors.
10266 * we can chose to append source location information in other error messages, including those where
10267 passing source location to the point of construction would be inconvenient.
10268 * we can chose in future to omit to append source location information when running in a non-debug mode.
10270 This also cleans up some error output, e.g. removing double brackets ('[[]]') around objects in output,
10271 removing double periods (..) at end of lines, and adding slightly more context to some errors.
10273 * bytecode/CodeBlock.cpp:
10274 (JSC::CodeBlock::expressionRangeForBytecodeOffset):
10275 - Separated called to access line and range information.
10277 * bytecode/CodeBlock.h:
10278 - Separated called to access line and range information.
10280 * interpreter/Interpreter.cpp:
10281 (JSC::Interpreter::resolve):
10282 (JSC::Interpreter::resolveSkip):
10283 (JSC::Interpreter::resolveGlobal):
10284 (JSC::Interpreter::resolveGlobalDynamic):
10285 (JSC::Interpreter::resolveBaseAndProperty):
10286 (JSC::isInvalidParamForIn):
10287 (JSC::isInvalidParamForInstanceOf):
10288 - Update parameters passed to error constructors.
10289 (JSC::appendSourceToError):
10290 - Update message property to add location information (previously added in createErrorMessage, in ExceptionHelpers)
10291 (JSC::Interpreter::throwException):
10292 - Updated to call appendSourceToError.
10293 (JSC::Interpreter::privateExecute):
10294 - Update parameters passed to error constructors.
10296 * jit/JITStubs.cpp:
10297 (JSC::DEFINE_STUB_FUNCTION):
10298 - Update parameters passed to error constructors.
10300 * runtime/Error.cpp:
10301 (JSC::addErrorInfo):
10302 (JSC::hasErrorInfo):
10303 - Removed divot properties.
10306 - Removed divot properties.
10308 * runtime/ErrorInstance.cpp:
10309 (JSC::ErrorInstance::ErrorInstance):
10310 - Initialize new property.
10312 * runtime/ErrorInstance.h:
10313 (JSC::ErrorInstance::appendSourceToMessage):
10314 (JSC::ErrorInstance::setAppendSourceToMessage):
10315 (JSC::ErrorInstance::clearAppendSourceToMessage):
10316 - Added flag to check for errors needing location information appending.
10317 (JSC::ErrorInstance::isErrorInstance):
10318 - Added virtual method to check for ErrorInstances.
10320 * runtime/ExceptionHelpers.cpp:
10321 (JSC::createUndefinedVariableError):
10322 (JSC::createInvalidParamError):
10323 (JSC::createNotAConstructorError):
10324 (JSC::createNotAFunctionError):
10325 (JSC::createNotAnObjectError):
10326 - Update parameters passed to error constructors, stopped adding line number information early, changed TypeError messages.
10328 * runtime/ExceptionHelpers.h:
10329 - Updated function signatures.
10331 * runtime/JSFunction.cpp:
10332 (JSC::callHostFunctionAsConstructor):
10333 - Update parameters passed to error constructors.
10335 * runtime/JSObject.h:
10336 (JSC::JSObject::isErrorInstance):
10337 - Added virtual method to check for ErrorInstances.
10339 2010-11-12 Anders Carlsson <andersca@apple.com>
10341 Reviewed by Adam Roben.
10343 CString(const char*) crashes when passed a null pointer
10344 https://bugs.webkit.org/show_bug.cgi?id=49450
10346 * wtf/text/CString.cpp:
10347 (WTF::CString::CString):
10348 Return early if str is null.
10350 2010-11-11 Gavin Barraclough <barraclough@apple.com>
10352 Reviewed by Oliver Hunt.
10354 Bug 49420 - Clean up syntax/reference error throw.
10356 Some errors detected at compile time are thrown at runtime. We currently do so using a op_new_error/op_throw bytecode pair.
10357 This is not ideal. op_throw is used for explicit user throw statements, and has different requirements in terms or meta data
10358 attached to the exception (controlled by the explicitThrow parameter passed to Interpreter::throwException). To work around
10359 this, op_new_error has to add the meta data at an early stage, which is unlike other VM exceptions being raised.
10361 We can simplify this and bring into line with other exception behaviour by changing new_error from just allocating an
10362 Exception instance to also throwing it – but as a regular VM throw, correctly passing explicitThrow as false.
10364 * JavaScriptCore.xcodeproj/project.pbxproj:
10365 * bytecode/CodeBlock.cpp:
10366 (JSC::CodeBlock::dump):
10367 (JSC::CodeBlock::expressionRangeForBytecodeOffset):
10368 * bytecode/Opcode.h:
10369 * bytecompiler/BytecodeGenerator.cpp:
10370 (JSC::BytecodeGenerator::emitThrowReferenceError):
10371 (JSC::BytecodeGenerator::emitThrowSyntaxError):
10372 (JSC::BytecodeGenerator::emitThrowExpressionTooDeepException):
10373 * bytecompiler/BytecodeGenerator.h:
10374 (JSC::BytecodeGenerator::emitNodeInConditionContext):
10375 * bytecompiler/NodesCodegen.cpp:
10376 (JSC::ThrowableExpressionData::emitThrowReferenceError):
10377 (JSC::ThrowableExpressionData::emitThrowSyntaxError):
10378 (JSC::RegExpNode::emitBytecode):
10379 (JSC::PostfixErrorNode::emitBytecode):
10380 (JSC::PrefixErrorNode::emitBytecode):
10381 (JSC::AssignErrorNode::emitBytecode):
10382 (JSC::ForInNode::emitBytecode):
10383 (JSC::ContinueNode::emitBytecode):
10384 (JSC::BreakNode::emitBytecode):
10385 (JSC::ReturnNode::emitBytecode):
10386 (JSC::LabelNode::emitBytecode):
10387 * interpreter/Interpreter.cpp:
10388 (JSC::Interpreter::privateExecute):
10390 (JSC::JIT::privateCompileMainPass):
10392 * jit/JITOpcodes.cpp:
10393 (JSC::JIT::emit_op_throw_reference_error):
10394 (JSC::JIT::emit_op_throw_syntax_error):
10395 * jit/JITOpcodes32_64.cpp:
10396 (JSC::JIT::emit_op_throw_reference_error):
10397 (JSC::JIT::emit_op_throw_syntax_error):
10398 * jit/JITStubs.cpp:
10399 (JSC::DEFINE_STUB_FUNCTION):
10403 2010-11-11 Darin Adler <darin@apple.com>
10405 Reviewed by Sam Weinig.
10407 Harden some string functions against large lengths
10408 https://bugs.webkit.org/show_bug.cgi?id=49293
10410 * wtf/text/StringImpl.cpp:
10411 (WTF::StringImpl::create): Fix incorrect use of PassRefPtr. Check for
10412 strlen results that are too large for StringImpl.
10413 (WTF::StringImpl::lower): Check for lengths that are too large for
10415 (WTF::StringImpl::upper): Fix incorrect use of PassRefPtr. Check for
10416 lengths that are too large for int32_t.
10417 (WTF::StringImpl::secure): Fix incorect use of PassRefPtr. Use unsigned
10418 rather than int and int32_t so we can handle any length.
10419 (WTF::StringImpl::foldCase): Fix incorrect use of PassRefPtr. Check for
10420 lengths that are too large for int32_t.
10421 (WTF::StringImpl::find): Check for strlen results that are too large for
10423 (WTF::StringImpl::findIgnoringCase): Ditto.
10424 (WTF::StringImpl::replace): Fix incorrect use of PassRefPtr.
10425 (WTF::StringImpl::createWithTerminatingNullCharacter): Check before
10426 incrementing length.
10428 2010-11-11 Dan Horák <dan@danny.cz>
10430 Reviewed by Andreas Kling.
10432 Add support for the s390/s390x architectures, it's big-endian
10433 with s390 being 32-bit and s390x being 64-bit.
10435 https://bugs.webkit.org/show_bug.cgi?id=34786
10439 2010-11-10 Csaba Osztrogonác <ossy@webkit.org>
10441 Reviewed by David Hyatt.
10443 HTML5 Ruby support should be mandatory feature
10444 https://bugs.webkit.org/show_bug.cgi?id=49272
10446 Remove Ruby as optional feature.
10448 * Configurations/FeatureDefines.xcconfig:
10449 * JavaScriptCorePrefix.h:: Touch it to avoid incremental build failure on Windows.
10451 2010-11-10 Peter Rybin <peter.rybin@gmail.com>
10453 Reviewed by Adam Barth.
10455 HTML parser should provide script column position within HTML document to JavaScript engine
10456 https://bugs.webkit.org/show_bug.cgi?id=45271
10458 Adds TextPosition* classes -- a structure that stores line/column/generation
10459 level coordinates inside text document. Adds *BasedNumber classes -- typesafe int
10460 wrappers that emphasize whether int number is used as zero-based or
10464 * JavaScriptCore.gypi:
10465 * JavaScriptCore.xcodeproj/project.pbxproj:
10466 * wtf/text/TextPosition.h: Added.
10467 (WTF::TextPosition::TextPosition):
10468 (WTF::TextPosition::minimumPosition):
10469 (WTF::TextPosition::belowRangePosition):
10470 (WTF::ZeroBasedNumber::fromZeroBasedInt):
10471 (WTF::ZeroBasedNumber::ZeroBasedNumber):
10472 (WTF::ZeroBasedNumber::zeroBasedInt):
10473 (WTF::ZeroBasedNumber::base):
10474 (WTF::ZeroBasedNumber::belowBase):
10475 (WTF::OneBasedNumber::fromOneBasedInt):
10476 (WTF::OneBasedNumber::OneBasedNumber):
10477 (WTF::OneBasedNumber::oneBasedInt):
10478 (WTF::OneBasedNumber::convertAsZeroBasedInt):
10479 (WTF::OneBasedNumber::convertToZeroBased):
10480 (WTF::OneBasedNumber::base):
10481 (WTF::OneBasedNumber::belowBase):
10482 (WTF::toZeroBasedTextPosition):
10483 (WTF::toOneBasedTextPosition):
10484 (WTF::ZeroBasedNumber::convertToOneBased):
10486 2010-11-09 Gabor Loki <loki@webkit.org>
10488 Reviewed by Gavin Barraclough.
10490 ARM JIT asserts when loading http://reader.google.com in debug mode
10491 https://bugs.webkit.org/show_bug.cgi?id=48912
10493 There are several cases when the uninterrupted sequence is larger than
10494 maximum required offset for pathing the same sequence. Eg.: if in a
10495 uninterrupted sequence the last macroassembler's instruction is a stub
10496 call, it emits store instruction(s) which should not be included in the
10497 calculation of length of uninterrupted sequence. So, the insnSpace and
10498 constSpace should be upper limit instead of hard limit.
10501 * jit/JITInlineMethods.h:
10502 (JSC::JIT::endUninterruptedSequence):
10504 2010-11-09 David Kilzer <ddkilzer@apple.com>
10506 <http://webkit.org/b/49279> Fix include statements for local headers
10508 Reviewed by Gavin Barraclough.
10510 Use "Foo.h" instead of <Foo.h> for local headers.
10512 * assembler/AbstractMacroAssembler.h: Also fixed sort order.
10513 * assembler/CodeLocation.h:
10515 * yarr/RegexParser.h:
10517 2010-11-08 Adam Roben <aroben@apple.com>
10521 It broke the build for Cygwin 1.7 installs. Cygwin 1.7's default
10522 .bashrc unsets %TEMP%, which broke copy-tools.cmd.
10524 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
10525 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj:
10526 * JavaScriptCore.vcproj/JavaScriptCore/copy-tools.cmd: Removed.
10527 * JavaScriptCore.vcproj/JavaScriptCore/show-alert.js: Removed.
10529 2010-11-08 Martin Robinson <mrobinson@igalia.com>
10531 Reviewed by Xan Lopez.
10533 >=webkitgtk-1.2.5: parallel build fails with libtool: link: cannot find the library `libwebkit-1.0.la' or unhandled argument `libwebkit-1.0.la'
10534 https://bugs.webkit.org/show_bug.cgi?id=49128
10536 r59042 introduced a C++-style comment in Platform.h, which is often
10537 included in C source files. Change it to a C-style comment.
10539 * wtf/Platform.h: Fix the C++-style comment.
10541 2010-11-08 Adam Roben <aroben@apple.com>
10543 Show a message and cause the build to immediately fail when any
10544 .vsprops files are copied
10546 When $WebKitLibrariesDir is set to a non-standard location, the
10547 .vsprops files have to be copied from WebKitLibraries/win to
10548 $WebKitLibrariesDir. When this happens, Visual Studio doesn't pick up
10549 changes to the .vsprops files until the next time it opens the solution
10550 file. Before this patch, the build would soldier on with the old
10551 .vsprops files, leading to strange build failures. Now we detect that
10552 the .vsprops files have been updated, display a message to the user
10553 telling them what to do, and make the build fail immediately.
10555 Fixes <http://webkit.org/b/49181> Windows build fail mysteriously when
10556 .vsprops files are updated
10558 Reviewed by Steve Falkenburg.
10560 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
10561 Moved code to copy the tools directory to the new copy-tools.cmd
10562 script. Moved that after the command that writes the buildfailed file
10563 so the build will be considered a failure if copy-tools.cmd fails.
10564 Changed to write the project name into buildfailed like all our other
10565 projects do, so those other projects will know that the failure was due
10568 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj:
10571 * JavaScriptCore.vcproj/JavaScriptCore/copy-tools.cmd: Added. Copies
10572 the tools directory to $WebKitLibrariesDir. If any files were copied,
10573 we display a message to the user and exit with error code 1 to cause
10574 the build to fail. In non-interactive builds, we just print the message
10575 to the build log. In interactive builds, we show the message in an
10578 * JavaScriptCore.vcproj/JavaScriptCore/show-alert.js: Added. Uses
10579 Windows Scripting Host to display a message in an alert.
10581 2010-11-07 Sam Magnuson <smagnuson@netflix.com>
10583 Reviewed by Andreas Kling.
10585 [Qt] make install does not cause JavaScriptCore to be built
10586 https://bugs.webkit.org/show_bug.cgi?id=49114
10588 * JavaScriptCore.pro:
10590 2010-11-05 Oliver Hunt <oliver@apple.com>
10592 Reviewed by Gavin Barraclough.
10594 Website consistently crashing TOT in JIT::execute() on news.com.au
10595 https://bugs.webkit.org/show_bug.cgi?id=48954
10597 The problem here was the strict pass of this conversion was loading the
10598 this structure into one register but doing the flags check off a different
10599 register. This is clearly wrong. I have been unable to trigger the crash
10600 with a reduction, but I've added an assertion to the this conversion to
10601 attempt to make it more readily catchable in future.
10603 * jit/JITOpcodes.cpp:
10604 (JSC::JIT::emit_op_convert_this_strict):
10605 * jit/JITOpcodes32_64.cpp:
10606 (JSC::JIT::emit_op_convert_this_strict):
10607 * jit/JITStubs.cpp:
10608 (JSC::DEFINE_STUB_FUNCTION):
10610 2010-11-04 Xan Lopez <xlopez@igalia.com>
10612 Reviewed by Adam Barth.
10614 Use leakRef instead of releaseRef
10615 https://bugs.webkit.org/show_bug.cgi?id=48974
10617 Use leakRef instead of the deprecated releaseRef. This was renamed
10618 some time ago because 'releaseRef' is too close to 'release',
10619 which does something completely different.
10621 2010-11-04 Eric Seidel <eric@webkit.org>
10623 Reviewed by Gavin Barraclough.
10625 REGRESSION(49798): Crash in HTMLObjectElement::parseMappedAttribute
10626 https://bugs.webkit.org/show_bug.cgi?id=48789
10628 The contract for all String/AtomicString methods seems to be that it's
10629 safe to call them, even when the String is null (impl() returns 0).
10630 This contract was broken by r49798 (unintentionally) when optimizing
10632 This patch adds a null check to AtomicString::lower() fixing this
10633 crash and preventing future confusion.
10635 * wtf/text/AtomicString.cpp:
10636 (WTF::AtomicString::lower):
10638 2010-11-04 Adam Barth <abarth@webkit.org>
10640 Enabled ICCJPEG on Chromium Mac
10641 https://bugs.webkit.org/show_bug.cgi?id=48977
10645 2010-11-03 Oliver Hunt <oliver@apple.com>
10647 Reviewed by Gavin Barraclough.
10649 Crash in Function.prototype.call.apply
10650 https://bugs.webkit.org/show_bug.cgi?id=48485
10652 The problem here was op_load_varargs failing to ensure that
10653 there was sufficient space for the entire callframe prior to
10654 op_call_varargs. This meant that when we then re-entered the
10655 VM it was possible to stomp over an earlier portion of the
10656 stack, so causing sub-optimal behaviour.
10658 * bytecode/Opcode.h:
10659 * bytecompiler/BytecodeGenerator.cpp:
10660 (JSC::BytecodeGenerator::emitLoadVarargs):
10661 * bytecompiler/BytecodeGenerator.h:
10662 * bytecompiler/NodesCodegen.cpp:
10663 (JSC::ApplyFunctionCallDotNode::emitBytecode):
10665 (JSC::JIT::privateCompile):
10666 * jit/JITOpcodes.cpp:
10667 (JSC::JIT::emit_op_load_varargs):
10669 2010-11-03 Kenneth Russell <kbr@google.com>
10671 Reviewed by Chris Marrin.
10673 Redesign extension mechanism in GraphicsContext3D
10674 https://bugs.webkit.org/show_bug.cgi?id=46894
10676 * JavaScriptCore.exp:
10677 - Exposed String::split(const String&, Vector<String>).
10679 2010-11-03 Adam Roben <aroben@apple.com>
10681 Bring WTF.vcproj up to date
10683 * JavaScriptCore.vcproj/WTF/WTF.vcproj: Added filters for the text and
10684 unicode directories, added new files, removed old files.
10686 2010-11-03 Gabor Loki <loki@webkit.org>
10688 Reviewed by Andreas Kling.
10690 Remove unused initializeWeakRandomNumberGenerator
10691 https://bugs.webkit.org/show_bug.cgi?id=48899
10693 WeakRandom class is used instead of weakRandomNumber and its initializer.
10695 * wtf/RandomNumberSeed.h:
10697 2010-11-03 Gabor Loki <loki@webkit.org>
10699 Reviewed by Geoffrey Garen.
10701 Unused class: JSFastMath with JSValue64
10702 https://bugs.webkit.org/show_bug.cgi?id=48835
10704 Remove unused JSFastMath class.
10706 * runtime/JSImmediate.h:
10708 2010-11-02 Adam Roben <aroben@apple.com>
10710 Windows build fix after r71127
10712 MSVC isn't smart enough to figure out that the definition of the global
10713 nullptr variable isn't needed, so we provide one for it.
10715 Fixes <http://webkit.org/b/48862> Windows build is broken due to
10716 undefined symbol nullptr
10718 Reviewed by Anders Carlsson.
10720 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export nullptr.
10722 * JavaScriptCore.vcproj/WTF/WTF.vcproj: Added NullPtr.cpp and let VS
10725 * wtf/NullPtr.cpp: Added.
10727 2010-11-02 Martin Robinson <mrobinson@igalia.com>
10729 Reviewed by Xan Lopez.
10731 Remove special handling of HashTableDeletedValue in PlatformRefPtr and manually manage memory that cannot be controlled by HashTraits
10732 https://bugs.webkit.org/show_bug.cgi?id=48841
10734 Remove special handling of HashTableDeletedValue in PlatformRefPtr.
10735 This is better handled on a case-by-case basis, when HashTraits
10736 cannot account for it.
10738 * wtf/PlatformRefPtr.h:
10739 (WTF::PlatformRefPtr::~PlatformRefPtr):
10740 (WTF::PlatformRefPtr::clear):
10743 2010-10-29 Oliver Hunt <oliver@apple.com>
10745 Reviewed by Gavin Barraclough.
10747 REGRESSION: r69429-r69611: Crash in JSC::Interpreter::privateExecute
10748 https://bugs.webkit.org/show_bug.cgi?id=47573
10750 I think the interpreter portion of this was introduced by
10751 an incorrect but silent merge when I updated prior to committing.
10752 The JIT change is basically just a correctness fix, but it is
10753 needed to prevent the testcase from asserting in debug builds.
10755 The basic problem is incorrectly setting the activation object
10756 on an arguments object. The crash was due to us setting a null
10757 activation in the interpreter, in the jit we were setting the
10758 activation of a strict mode arguments object.
10760 * interpreter/Interpreter.cpp:
10761 (JSC::Interpreter::privateExecute):
10762 * jit/JITStubs.cpp:
10763 (JSC::DEFINE_STUB_FUNCTION):
10766 2010-10-29 Csaba Osztrogonác <ossy@webkit.org>
10768 Reviewed by Adam Roben and David Kilzer.
10770 Fix and cleanup of build systems
10771 https://bugs.webkit.org/show_bug.cgi?id=48342
10773 * Configurations/FeatureDefines.xcconfig: Add missing ENABLE_FULLSCREEN_API
10775 2010-10-28 Kwang Yul Seo <skyul@company100.net>
10777 Reviewed by Darin Adler.
10779 Include stddef.h unconditionally in Assertions.h
10780 https://bugs.webkit.org/show_bug.cgi?id=48573
10782 There is no reason to have stddef.h include be MSVC-only.
10784 * wtf/Assertions.h:
10786 2010-10-28 Herczeg Zoltan <zherczeg@webkit.org>
10788 Rubber stamped by Csaba Osztrogonác.
10790 Try to fix interpreter build.
10792 Needed parentheses around assignment to avoid GCC warning after
10793 http://trac.webkit.org/changeset/70703
10795 * interpreter/Interpreter.cpp:
10796 (JSC::Interpreter::privateExecute):
10798 2010-10-28 Peter Varga <pvarga@inf.u-szeged.hu>
10800 Reviewed by Csaba Osztrogonác.
10802 resetAssertionMatches() is an unused function in YARR Interpreter
10803 https://bugs.webkit.org/show_bug.cgi?id=48503
10805 The resetAssertionMatches() function is removed from YARR Interpreter
10806 because it's never called.
10808 * yarr/RegexInterpreter.cpp:
10809 (JSC::Yarr::Interpreter::resetMatches):
10811 2010-10-28 Zoltan Herczeg <zherczeg@webkit.org>
10813 Reviewed by Andreas Kling.
10815 Wrong instruction form for BKPT
10816 https://bugs.webkit.org/show_bug.cgi?id=48427
10818 One '0' is missing from BKPT instruction.
10819 Thanks for Jacob Bramley for reporting this error.
10821 * assembler/ARMAssembler.h:
10823 2010-10-28 Xan Lopez <xlopez@igalia.com>
10825 Try to fix Snow Leopard build.
10827 * jit/JITPropertyAccess.cpp:
10828 (JSC::JIT::testPrototype):
10830 2010-10-28 Xan Lopez <xlopez@igalia.com>
10832 Reviewed by Oliver Hunt.
10834 Do not have two different asCell APIs in JSValue
10835 https://bugs.webkit.org/show_bug.cgi?id=47979
10837 Remove JSCell* asCell(JSValue) in favor of only using
10842 * jit/JITPropertyAccess32_64.cpp:
10843 (JSC::JIT::testPrototype):
10844 * jit/JITStubs.cpp:
10845 (JSC::JITThunks::tryCachePutByID):
10846 (JSC::JITThunks::tryCacheGetByID):
10847 (JSC::DEFINE_STUB_FUNCTION):
10848 * runtime/GetterSetter.h:
10849 (JSC::asGetterSetter):
10850 * runtime/JSByteArray.h:
10851 (JSC::asByteArray):
10852 * runtime/JSCell.h:
10853 (JSC::JSCell::getCallData):
10854 (JSC::JSCell::getConstructData):
10855 * runtime/JSString.h:
10856 (JSC::RopeBuilder::appendValueInConstructAndIncrementLength):
10858 * runtime/JSValue.h:
10859 * runtime/Operations.cpp:
10860 (JSC::jsIsObjectType):
10861 * runtime/Operations.h:
10862 (JSC::normalizePrototypeChain):
10863 * runtime/Protect.h:
10865 (JSC::gcUnprotect):
10867 2010-10-27 Chao-ying Fu <fu@mips.com>
10869 Reviewed by Oliver Hunt.
10871 Support emit_op_mod() for MIPS on JSVALUE32_64
10872 https://bugs.webkit.org/show_bug.cgi?id=46511
10874 This patch uses MIPS div instructions for op_mod to improve performance.
10876 * jit/JITArithmetic32_64.cpp:
10877 (JSC::JIT::emit_op_mod):
10879 2010-10-27 Brent Fulgham <bfulgham@webkit.org>
10881 Unreviewed build correction.
10883 * wtf/Platform.h: Make sure ACCELERATED_COMPOSITING is
10884 turned off in the WinCairo port. This isn't supported (yet.)
10886 2010-10-27 Chris Rogers <crogers@google.com>
10888 Reviewed by Chris Marrin.
10890 Add ENABLE_WEB_AUDIO feature enable flag (initially disabled) to build-webkit
10891 https://bugs.webkit.org/show_bug.cgi?id=48279
10893 * Configurations/FeatureDefines.xcconfig:
10895 2010-10-27 Brian Weinstein <bweinstein@apple.com>
10899 * jit/JITStubs.cpp:
10902 2010-10-27 Gavin Barraclough <barraclough@apple.com>
10904 Reviewed by Oliver Hunt.
10906 Bug 48365 - Remove output parameters from JITStackFrame
10908 The JIT stub functions presently use the stackframe to provide a couple of additional return values.
10909 * In the case of uncaught exceptions the exception value is returned on the stackframe.exception property.
10910 * In the case of caught exceptions the updated value for the callFrame register is returned on the stackframe.callFrame property.
10912 Change exception returns such that exceptions are always returned on JSGlobalData::exception.
10913 Change op_catch such that the new CallFrame value is returned from op_throw / vm_throw in regT0.
10915 * JavaScriptCore.xcodeproj/project.pbxproj:
10916 * debugger/Debugger.cpp:
10917 (JSC::evaluateInGlobalCallFrame):
10918 * debugger/DebuggerCallFrame.cpp:
10919 (JSC::DebuggerCallFrame::evaluate):
10920 * interpreter/CachedCall.h:
10921 (JSC::CachedCall::CachedCall):
10922 (JSC::CachedCall::call):
10923 * interpreter/CallFrame.h:
10924 (JSC::ExecState::exception):
10925 * interpreter/Interpreter.cpp:
10926 (JSC::Interpreter::callEval):
10927 (JSC::Interpreter::Interpreter):
10928 (JSC::Interpreter::execute):
10929 (JSC::Interpreter::executeCall):
10930 (JSC::Interpreter::executeConstruct):
10931 (JSC::Interpreter::prepareForRepeatCall):
10932 (JSC::Interpreter::privateExecute):
10933 * interpreter/Interpreter.h:
10935 (JSC::JITCode::execute):
10936 * jit/JITOpcodes.cpp:
10937 (JSC::JIT::emit_op_catch):
10938 * jit/JITOpcodes32_64.cpp:
10939 (JSC::JIT::emit_op_catch):
10940 * jit/JITStubs.cpp:
10941 (JSC::ctiTrampoline):
10943 (JSC::DEFINE_STUB_FUNCTION):
10945 * runtime/ArrayPrototype.cpp:
10946 (JSC::arrayProtoFuncFilter):
10947 (JSC::arrayProtoFuncMap):
10948 (JSC::arrayProtoFuncEvery):
10949 (JSC::arrayProtoFuncForEach):
10950 (JSC::arrayProtoFuncSome):
10951 (JSC::arrayProtoFuncReduce):
10952 (JSC::arrayProtoFuncReduceRight):
10953 * runtime/CallData.cpp:
10955 * runtime/Completion.cpp:
10957 * runtime/ConstructData.cpp:
10959 * runtime/ExceptionHelpers.cpp:
10960 (JSC::createErrorForInvalidGlobalAssignment):
10961 (JSC::throwOutOfMemoryError):
10962 (JSC::throwStackOverflowError):
10963 * runtime/ExceptionHelpers.h:
10964 * runtime/JSArray.cpp:
10965 (JSC::JSArray::sort):
10966 * runtime/JSGlobalObjectFunctions.cpp:
10967 (JSC::globalFuncEval):
10968 * runtime/StringPrototype.cpp:
10969 (JSC::stringProtoFuncReplace):
10971 2010-10-27 Gabor Loki <loki@webkit.org>
10973 Reviewed by Oliver Hunt.
10975 https://bugs.webkit.org/show_bug.cgi?id=48060
10976 Speed up op_jeq_null and op_jneq_null.
10978 For both opcodes the NullTag and UndefinedTag are checked to control the
10979 jump. These values can be simply checked by AboveOrEqual or Below
10980 condition if they are the two highest unsigned integers from JSValue's
10983 * jit/JITOpcodes32_64.cpp:
10984 (JSC::JIT::emit_op_jeq_null):
10985 (JSC::JIT::emit_op_jneq_null):
10986 * runtime/JSValue.h:
10988 2010-10-25 Geoffrey Garen <ggaren@apple.com>
10990 Reviewed by Oliver Hunt.
10992 https://bugs.webkit.org/show_bug.cgi?id=41948
10993 REGRESSION(r60392): Registerfile can be unwound too far following an exception
10995 SunSpider reports no change.
10997 * interpreter/Interpreter.cpp:
10998 (JSC::Interpreter::throwException): Walk the stack to calculate the high
10999 water mark currently in use. It's not safe to assume that the current
11000 CallFrame's high water mark is the highest high water mark because
11001 calls do not always set up at the end of a CallFrame. A large caller
11002 CallFrame can encompass a small callee CallFrame.
11004 * jit/JITOpcodes.cpp:
11005 (JSC::JIT::privateCompileCTINativeCall):
11006 * jit/JITOpcodes32_64.cpp:
11007 (JSC::JIT::privateCompileCTINativeCall): Make sure to set a 0 CodeBlock
11008 in the CallFrame of a host call, like the Interpreter does, instead of
11009 leaving the CodeBlock field uninitialized. The backtracing code requires
11010 a valid CodeBlock field in each CallFrame.
11012 2010-10-27 Gabor Loki <loki@webkit.org>
11014 Reviewed by Csaba Osztrogonác.
11016 Add cmn to branch32(reg, imm) on ARM
11017 https://bugs.webkit.org/show_bug.cgi?id=48062
11019 The conditional comparison can be done with cmn if the imm value is
11020 negative and can fit into the cmn instruction.
11022 * assembler/MacroAssemblerARM.h:
11023 (JSC::MacroAssemblerARM::branch32):
11025 2010-10-26 Oliver Hunt <oliver@apple.com>
11027 Interpreter build fix.
11029 * interpreter/Interpreter.cpp:
11030 (JSC::Interpreter::privateExecute):
11032 2010-10-25 Oliver Hunt <oliver@apple.com>
11034 Reviewed by Gavin Barraclough.
11036 Remove exec and globalData arguments from jsNumber
11037 https://bugs.webkit.org/show_bug.cgi?id=48270
11039 Remove the now unused exec and globalData arguments from jsNumber
11040 and mechanically update all users of jsNumber.
11042 * API/JSValueRef.cpp:
11043 (JSValueMakeNumber):
11044 * bytecompiler/BytecodeGenerator.cpp:
11045 (JSC::BytecodeGenerator::emitLoad):
11046 * bytecompiler/NodesCodegen.cpp:
11047 (JSC::ArrayNode::emitBytecode):
11048 * jit/JITArithmetic.cpp:
11049 (JSC::JIT::emit_op_mod):
11050 * jit/JITArithmetic32_64.cpp:
11051 (JSC::JIT::emit_op_mod):
11052 * jit/JITOpcodes.cpp:
11053 (JSC::JIT::emit_op_jfalse):
11054 (JSC::JIT::emit_op_jtrue):
11055 * jit/JITStubs.cpp:
11056 (JSC::DEFINE_STUB_FUNCTION):
11059 * runtime/Arguments.cpp:
11060 (JSC::Arguments::getOwnPropertySlot):
11061 (JSC::Arguments::getOwnPropertyDescriptor):
11062 * runtime/ArrayConstructor.cpp:
11063 (JSC::ArrayConstructor::ArrayConstructor):
11064 * runtime/ArrayPrototype.cpp:
11065 (JSC::arrayProtoFuncPop):
11066 (JSC::arrayProtoFuncPush):
11067 (JSC::arrayProtoFuncShift):
11068 (JSC::arrayProtoFuncSplice):
11069 (JSC::arrayProtoFuncUnShift):
11070 (JSC::arrayProtoFuncFilter):
11071 (JSC::arrayProtoFuncMap):
11072 (JSC::arrayProtoFuncEvery):
11073 (JSC::arrayProtoFuncForEach):
11074 (JSC::arrayProtoFuncSome):
11075 (JSC::arrayProtoFuncReduce):
11076 (JSC::arrayProtoFuncReduceRight):
11077 (JSC::arrayProtoFuncIndexOf):
11078 (JSC::arrayProtoFuncLastIndexOf):
11079 * runtime/BooleanConstructor.cpp:
11080 (JSC::BooleanConstructor::BooleanConstructor):
11081 * runtime/CachedTranscendentalFunction.h:
11082 (JSC::CachedTranscendentalFunction::operator()):
11083 * runtime/DateConstructor.cpp:
11084 (JSC::DateConstructor::DateConstructor):
11088 * runtime/DateInstance.cpp:
11089 (JSC::DateInstance::DateInstance):
11090 * runtime/DatePrototype.cpp:
11091 (JSC::dateProtoFuncGetFullYear):
11092 (JSC::dateProtoFuncGetUTCFullYear):
11093 (JSC::dateProtoFuncGetMonth):
11094 (JSC::dateProtoFuncGetUTCMonth):
11095 (JSC::dateProtoFuncGetDate):
11096 (JSC::dateProtoFuncGetUTCDate):
11097 (JSC::dateProtoFuncGetDay):
11098 (JSC::dateProtoFuncGetUTCDay):
11099 (JSC::dateProtoFuncGetHours):
11100 (JSC::dateProtoFuncGetUTCHours):
11101 (JSC::dateProtoFuncGetMinutes):
11102 (JSC::dateProtoFuncGetUTCMinutes):
11103 (JSC::dateProtoFuncGetSeconds):
11104 (JSC::dateProtoFuncGetUTCSeconds):
11105 (JSC::dateProtoFuncGetMilliSeconds):
11106 (JSC::dateProtoFuncGetUTCMilliseconds):
11107 (JSC::dateProtoFuncGetTimezoneOffset):
11108 (JSC::dateProtoFuncSetTime):
11109 (JSC::setNewValueFromTimeArgs):
11110 (JSC::setNewValueFromDateArgs):
11111 (JSC::dateProtoFuncSetYear):
11112 (JSC::dateProtoFuncGetYear):
11113 * runtime/Error.cpp:
11114 (JSC::addErrorSourceInfo):
11115 (JSC::addErrorDivotInfo):
11116 * runtime/ErrorConstructor.cpp:
11117 (JSC::ErrorConstructor::ErrorConstructor):
11118 * runtime/FunctionConstructor.cpp:
11119 (JSC::FunctionConstructor::FunctionConstructor):
11120 * runtime/FunctionPrototype.cpp:
11121 (JSC::FunctionPrototype::FunctionPrototype):
11122 * runtime/JSArray.cpp:
11123 (JSC::JSArray::getOwnPropertySlot):
11124 (JSC::JSArray::getOwnPropertyDescriptor):
11125 * runtime/JSByteArray.cpp:
11126 (JSC::JSByteArray::JSByteArray):
11127 * runtime/JSByteArray.h:
11128 (JSC::JSByteArray::getIndex):
11129 * runtime/JSFunction.cpp:
11130 (JSC::JSFunction::JSFunction):
11131 (JSC::JSFunction::lengthGetter):
11132 (JSC::JSFunction::getOwnPropertyDescriptor):
11133 * runtime/JSGlobalObject.cpp:
11134 (JSC::JSGlobalObject::reset):
11135 * runtime/JSGlobalObjectFunctions.cpp:
11136 (JSC::globalFuncParseInt):
11137 (JSC::globalFuncParseFloat):
11138 * runtime/JSNumberCell.h:
11139 (JSC::JSValue::JSValue):
11141 (JSC::JSValue::toJSNumber):
11142 * runtime/JSONObject.cpp:
11143 (JSC::unwrapBoxedPrimitive):
11144 (JSC::PropertyNameForFunctionCall::value):
11145 (JSC::JSONStringify):
11146 * runtime/JSString.cpp:
11147 (JSC::JSString::getStringPropertyDescriptor):
11148 * runtime/JSString.h:
11149 (JSC::JSString::getStringPropertySlot):
11150 * runtime/JSValue.h:
11151 (JSC::jsDoubleNumber):
11154 (JSC::JSValue::JSValue):
11155 (JSC::JSValue::toJSNumber):
11156 * runtime/LiteralParser.cpp:
11157 (JSC::LiteralParser::parse):
11158 * runtime/MathObject.cpp:
11159 (JSC::MathObject::MathObject):
11160 (JSC::mathProtoFuncAbs):
11161 (JSC::mathProtoFuncACos):
11162 (JSC::mathProtoFuncASin):
11163 (JSC::mathProtoFuncATan):
11164 (JSC::mathProtoFuncATan2):
11165 (JSC::mathProtoFuncCeil):
11166 (JSC::mathProtoFuncCos):
11167 (JSC::mathProtoFuncExp):
11168 (JSC::mathProtoFuncFloor):
11169 (JSC::mathProtoFuncLog):
11170 (JSC::mathProtoFuncMax):
11171 (JSC::mathProtoFuncMin):
11172 (JSC::mathProtoFuncPow):
11173 (JSC::mathProtoFuncRandom):
11174 (JSC::mathProtoFuncRound):
11175 (JSC::mathProtoFuncSin):
11176 (JSC::mathProtoFuncSqrt):
11177 (JSC::mathProtoFuncTan):
11178 * runtime/NativeErrorConstructor.cpp:
11179 (JSC::NativeErrorConstructor::NativeErrorConstructor):
11180 * runtime/NumberConstructor.cpp:
11181 (JSC::NumberConstructor::NumberConstructor):
11182 (JSC::numberConstructorNaNValue):
11183 (JSC::numberConstructorNegInfinity):
11184 (JSC::numberConstructorPosInfinity):
11185 (JSC::numberConstructorMaxValue):
11186 (JSC::numberConstructorMinValue):
11187 (JSC::constructWithNumberConstructor):
11188 (JSC::callNumberConstructor):
11189 * runtime/NumberPrototype.cpp:
11190 (JSC::NumberPrototype::NumberPrototype):
11191 * runtime/ObjectConstructor.cpp:
11192 (JSC::ObjectConstructor::ObjectConstructor):
11193 * runtime/Operations.cpp:
11194 (JSC::jsAddSlowCase):
11195 * runtime/Operations.h:
11197 * runtime/PrototypeFunction.cpp:
11198 (JSC::PrototypeFunction::PrototypeFunction):
11199 * runtime/RegExpConstructor.cpp:
11200 (JSC::RegExpConstructor::RegExpConstructor):
11201 (JSC::RegExpMatchesArray::fillArrayInstance):
11202 * runtime/RegExpObject.cpp:
11203 (JSC::regExpObjectLastIndex):
11204 * runtime/StringConstructor.cpp:
11205 (JSC::StringConstructor::StringConstructor):
11206 * runtime/StringPrototype.cpp:
11207 (JSC::StringPrototype::StringPrototype):
11208 (JSC::stringProtoFuncReplace):
11209 (JSC::stringProtoFuncCharCodeAt):
11210 (JSC::stringProtoFuncIndexOf):
11211 (JSC::stringProtoFuncLastIndexOf):
11212 (JSC::stringProtoFuncSearch):
11213 (JSC::stringProtoFuncLocaleCompare):
11215 2010-10-25 David Tapuska <dtapuska@rim.com>
11217 Reviewed by David Kilzer.
11219 Enable VFP if our compiler settings indicated we had a hardware
11222 https://bugs.webkit.org/show_bug.cgi?id=46096
11224 * assembler/MacroAssemblerARM.cpp:
11225 (JSC::isVFPPresent):
11227 2010-10-25 Sheriff Bot <webkit.review.bot@gmail.com>
11229 Unreviewed, rolling out r70451.
11230 http://trac.webkit.org/changeset/70451
11231 https://bugs.webkit.org/show_bug.cgi?id=48249
11233 Broke set-unloaded-frame-location.html under Qt (Requested by
11237 * JavaScriptCore.gypi:
11238 * JavaScriptCore.xcodeproj/project.pbxproj:
11239 * wtf/text/TextPosition.h: Removed.
11241 2010-10-25 Patrick Gansterer <paroga@webkit.org>
11243 Reviewed by David Kilzer.
11245 Replace _countof with WTF_ARRAY_LENGTH
11246 https://bugs.webkit.org/show_bug.cgi?id=48229
11250 2010-10-25 Peter Rybin <peter.rybin@gmail.com>
11252 Reviewed by Adam Barth.
11254 HTML parser should provide script column position within HTML document to JavaScript engine
11255 https://bugs.webkit.org/show_bug.cgi?id=45271
11257 Adds TextPosition* classes -- a structure that stores line/column/generation
11258 level coordinates inside text document. Adds *BasedNumber classes -- typesafe int
11259 wrappers that emphasize whether int number is used as zero-based or
11263 * JavaScriptCore.gypi:
11264 * JavaScriptCore.xcodeproj/project.pbxproj:
11265 * wtf/text/TextPosition.h: Added.
11266 (WTF::TextPosition::TextPosition):
11267 (WTF::TextPosition::minimumPosition):
11268 (WTF::TextPosition::belowRangePosition):
11269 (WTF::ZeroBasedNumber::fromZeroBasedInt):
11270 (WTF::ZeroBasedNumber::ZeroBasedNumber):
11271 (WTF::ZeroBasedNumber::zeroBasedInt):
11272 (WTF::ZeroBasedNumber::base):
11273 (WTF::ZeroBasedNumber::belowBase):
11274 (WTF::OneBasedNumber::fromOneBasedInt):
11275 (WTF::OneBasedNumber::OneBasedNumber):
11276 (WTF::OneBasedNumber::oneBasedInt):
11277 (WTF::OneBasedNumber::convertAsZeroBasedInt):
11278 (WTF::OneBasedNumber::convertToZeroBased):
11279 (WTF::OneBasedNumber::base):
11280 (WTF::OneBasedNumber::belowBase):
11281 (WTF::toZeroBasedTextPosition):
11282 (WTF::toOneBasedTextPosition):
11283 (WTF::ZeroBasedNumber::convertToOneBased):
11285 2010-10-24 Kwang Yul Seo <skyul@company100.net>
11287 Reviewed by David Kilzer.
11289 Check endianness with __BIG_ENDIAN in RVCT.
11290 https://bugs.webkit.org/show_bug.cgi?id=46122
11292 RVCT defines __BIG_ENDIAN if compiling for a big-endian target.
11296 2010-10-24 Dan Bernstein <mitz@apple.com>
11298 Rubber-stamped by Dave Kilzer.
11300 Removed empty directories.
11302 * JavaScriptCore: Removed.
11303 * JavaScriptCore/runtime: Removed.
11305 2010-10-24 Patrick Gansterer <paroga@webkit.org>
11307 Unreviewed, fix typo of last build fix.
11309 * wtf/DateMath.cpp:
11311 2010-10-24 Patrick Gansterer <paroga@webkit.org>
11313 Unreviewed build fix for chromium.
11315 * wtf/DateMath.cpp: Added missing include.
11317 2010-10-24 Patrick Gansterer <paroga@webkit.org>
11319 Reviewed by David Kilzer.
11321 Add WTF_ARRAY_LENGTH macro to WTF
11322 https://bugs.webkit.org/show_bug.cgi?id=32828
11324 Unify the different implementations and usages.
11326 * interpreter/Interpreter.cpp:
11327 (JSC::Interpreter::privateExecute):
11328 * runtime/DatePrototype.cpp:
11329 (JSC::formatLocaleDate):
11330 * runtime/JSGlobalObject.cpp:
11331 (JSC::JSGlobalObject::reset):
11332 * runtime/JSONObject.cpp:
11333 (JSC::Stringifier::appendQuotedString):
11334 (JSC::Stringifier::toJSON):
11335 (JSC::Stringifier::appendStringifiedValue):
11336 * runtime/UString.cpp:
11337 (JSC::UString::number):
11338 * wtf/DateMath.cpp:
11339 (WTF::parseDateFromNullTerminatedCharacters):
11340 * wtf/StdLibExtras.h:
11342 2010-10-24 Dirk Schulze <krit@webkit.org>
11344 Reviewed by Nikolas Zimmermann.
11346 Filter example Chiseled from SVG Wow! is slow
11347 https://bugs.webkit.org/show_bug.cgi?id=48174
11349 Added 'using WTF::ByteArray;' at the end of ByteArray.h
11353 2010-10-24 Patrick Gansterer <paroga@webkit.org>
11355 Reviewed by David Kilzer.
11357 Inline WTF::bitwise_cast and fix style
11358 https://bugs.webkit.org/show_bug.cgi?id=48208
11360 * wtf/StdLibExtras.h:
11361 (WTF::bitwise_cast):
11364 2010-10-23 Xan Lopez <xlopez@igalia.com>
11366 Reviewed by Sam Weinig.
11368 Unify globalData APIs
11369 https://bugs.webkit.org/show_bug.cgi?id=47969
11371 Make JSGlobalObject::globalData return a reference and adapt
11372 callers. This unifies the API with the existing
11373 CallFrame::globalData, which also returns a reference.
11375 * debugger/Debugger.cpp:
11376 (JSC::evaluateInGlobalCallFrame):
11377 * interpreter/CallFrame.h:
11378 * interpreter/Interpreter.cpp:
11379 (JSC::Interpreter::dumpRegisters):
11382 * parser/JSParser.cpp:
11384 * parser/Parser.cpp:
11385 (JSC::Parser::parse):
11387 (JSC::Parser::parse):
11388 * runtime/Error.cpp:
11389 (JSC::createError):
11390 (JSC::createEvalError):
11391 (JSC::createRangeError):
11392 (JSC::createReferenceError):
11393 (JSC::createSyntaxError):
11394 (JSC::createTypeError):
11395 (JSC::createURIError):
11396 * runtime/FunctionConstructor.cpp:
11397 (JSC::constructFunction):
11398 * runtime/JSGlobalObject.cpp:
11399 (JSC::JSGlobalObject::~JSGlobalObject):
11400 (JSC::JSGlobalObject::markChildren):
11401 * runtime/JSGlobalObject.h:
11402 (JSC::JSGlobalObject::globalData):
11404 2010-10-23 Dimitri Glazkov <dglazkov@chromium.org>
11406 Unreviewed, rolling out r70369.
11407 http://trac.webkit.org/changeset/70369
11408 https://bugs.webkit.org/show_bug.cgi?id=47974
11410 Caused weird artifacts in expected results.
11414 2010-10-23 Martin Robinson <mrobinson@igalia.com>
11416 Reviewed by Xan Lopez.
11418 Crashes randomly in cairo_scaled_font_destroy
11419 https://bugs.webkit.org/show_bug.cgi?id=46794
11421 Make PlatformRefPtr aware of hashTableDeletedValue. When PlatformRefPtr
11422 goes away this should probably be handled in the future via some special
11423 hooks in RefCounted (or its contained type).
11425 * wtf/PlatformRefPtr.h:
11426 (WTF::PlatformRefPtr::~PlatformRefPtr):
11427 (WTF::PlatformRefPtr::clear):
11430 2010-10-22 Adam Roben <aroben@apple.com>
11432 Remove the QuartzCorePresent.h mechanism
11434 This header was used to detect whether QuartzCore headers were present
11435 on the system. Everyone should have these headers now so we no longer
11438 Reviewed by Sam Weinig.
11440 * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: Remove
11441 code to generate QuartzCorePresent.h.
11443 * wtf/Platform.h: Stop including QuartzCorePresent.h on Windows and
11444 collapse all USE_ACCELERATED_COMPOSITING settings into one #ifdef.
11446 2010-10-22 Adam Barth <abarth@webkit.org>
11448 Unreviewed, rolling out r70290.
11449 http://trac.webkit.org/changeset/70290
11450 https://bugs.webkit.org/show_bug.cgi?id=48111
11452 Undelete Android build files.
11454 * Android.mk: Added.
11456 2010-10-22 Zoltan Herczeg <zherczeg@webkit.org>
11458 Reviewed by Csaba Osztrogonác.
11460 JSC interpreter regressions after r69940
11461 https://bugs.webkit.org/show_bug.cgi?id=47839
11463 Wrong "if": It should test whether the result exists,
11464 and not the opposite. It is an interpreter bug, hence
11465 the bots does not capture it.
11467 * interpreter/Interpreter.cpp:
11468 (JSC::Interpreter::resolveBase):
11470 2010-10-21 Adam Barth <abarth@webkit.org>
11472 Reviewed by David Levin.
11474 Remove Android build system
11475 https://bugs.webkit.org/show_bug.cgi?id=48111
11477 * Android.mk: Removed.
11479 2010-10-21 Kwang Yul Seo <skyul@company100.net>
11481 Reviewed by Kent Tamura.
11483 [BREWMP] Add a String constructor which takes AECHAR*
11484 https://bugs.webkit.org/show_bug.cgi?id=45043
11486 Add String(const AECHAR*) constructor for convenience.
11488 * wtf/text/WTFString.h:
11490 2010-10-21 Carlos Garcia Campos <cgarcia@igalia.com>
11492 Reviewed by Martin Robinson.
11494 [GTK] Use GCharsetConverter instead of g_iconv in TextCodecGtk
11495 https://bugs.webkit.org/show_bug.cgi?id=47896
11497 * wtf/gobject/GTypedefs.h:
11499 2010-10-21 Adam Barth <abarth@webkit.org>
11501 Unreviewed, rolling out r70174.
11502 http://trac.webkit.org/changeset/70174
11503 https://bugs.webkit.org/show_bug.cgi?id=41948
11505 This patch reverts a change that causes
11506 http/tests/xmlhttprequest/origin-whitelisting-removal.html to crash.
11508 * interpreter/Interpreter.cpp:
11509 (JSC::Interpreter::throwException):
11511 2010-10-20 Simon Fraser <simon.fraser@apple.com>
11515 * wtf/CMakeLists.txt:
11517 2010-10-20 Simon Fraser <simon.fraser@apple.com>
11519 Fix Windows build: export needed symbols.
11521 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
11523 2010-10-19 Simon Fraser <simon.fraser@apple.com>
11525 Reviewed by Gavin Barraclough.
11527 https://bugs.webkit.org/show_bug.cgi?id=47851
11529 Add methods to DecimalNumber to return the buffer length
11530 required for decimal and exponential output.
11532 Make some of the DecimalNumber code non-inline (no
11533 effect on Sunspider), adding DecimalNumber.cpp to various
11536 Make some DecimalNumber methods 'const'.
11539 * Android.v8.wtf.mk:
11541 * JavaScriptCore.exp:
11542 * JavaScriptCore.gypi:
11543 * JavaScriptCore.vcproj/WTF/WTF.vcproj:
11544 * JavaScriptCore.xcodeproj/project.pbxproj:
11545 * runtime/NumberPrototype.cpp:
11546 (JSC::numberProtoFuncToExponential):
11547 (JSC::numberProtoFuncToFixed):
11548 (JSC::numberProtoFuncToPrecision):
11549 * wtf/DecimalNumber.cpp: Added.
11550 (WTF::DecimalNumber::bufferLengthForStringDecimal):
11551 (WTF::DecimalNumber::bufferLengthForStringExponential):
11552 (WTF::DecimalNumber::toStringDecimal):
11553 (WTF::DecimalNumber::toStringExponential):
11554 * wtf/DecimalNumber.h:
11555 (WTF::DecimalNumber::sign):
11556 (WTF::DecimalNumber::exponent):
11557 (WTF::DecimalNumber::significand):
11558 (WTF::DecimalNumber::precision):
11564 2010-10-20 Sheriff Bot <webkit.review.bot@gmail.com>
11566 Unreviewed, rolling out r70165.
11567 http://trac.webkit.org/changeset/70165
11568 https://bugs.webkit.org/show_bug.cgi?id=48007
11570 It broke tests on Qt bot (Requested by Ossy on #webkit).
11573 * JavaScriptCore.gypi:
11574 * JavaScriptCore.xcodeproj/project.pbxproj:
11575 * wtf/text/TextPosition.h: Removed.
11577 2010-10-20 Brian Weinstein <bweinstein@apple.com>
11579 Reviewed by Adam Roben.
11581 Fix the Windows build after r70165. Move the copying of JavaScript headers from JavaScriptCore's post-build
11582 step to JavaScriptCoreGenerated, so the copying is done even when a cpp file in JavaScriptCore is changed.
11584 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
11585 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
11587 2010-10-20 Dumitru Daniliuc <dumi@chromium.org>
11589 Unreviewed, fixing the Win build.
11591 * JavaScriptCore.vcproj/WTF/WTF.vcproj:
11593 2010-10-20 Geoffrey Garen <ggaren@apple.com>
11595 Reviewed by Darin Adler.
11597 https://bugs.webkit.org/show_bug.cgi?id=41948
11598 REGRESSION(r60392): Registerfile can be unwound too far following an exception
11600 * interpreter/Interpreter.cpp:
11601 (JSC::Interpreter::throwException): Walk the stack to calculate the high
11602 water mark currently in use. It's not safe to assume that the current
11603 CallFrame's high water mark is the highest high water mark because
11604 calls do not always set up at the end of a CallFrame. A large caller
11605 CallFrame can encompass a small callee CallFrame.
11607 2010-10-20 Peter Rybin <peter.rybin@gmail.com>
11609 Reviewed by Adam Barth.
11611 HTML parser should provide script column position within HTML document to JavaScript engine
11612 https://bugs.webkit.org/show_bug.cgi?id=45271
11614 Adds TextPosition* classes -- a structure that stores line/column/generation
11615 level coordinates inside text document. Adds *BasedNumber classes -- typesafe int
11616 wrappers that emphasize whether int number is used as zero-based or
11620 * JavaScriptCore.gypi:
11621 * JavaScriptCore.xcodeproj/project.pbxproj:
11622 * wtf/text/TextPosition.h: Added.
11623 (WTF::TextPosition::TextPosition):
11624 (WTF::TextPosition::minimumPosition):
11625 (WTF::TextPosition::belowRangePosition):
11626 (WTF::ZeroBasedNumber::fromZeroBasedInt):
11627 (WTF::ZeroBasedNumber::ZeroBasedNumber):
11628 (WTF::ZeroBasedNumber::zeroBasedInt):
11629 (WTF::ZeroBasedNumber::base):
11630 (WTF::ZeroBasedNumber::belowBase):
11631 (WTF::OneBasedNumber::fromOneBasedInt):
11632 (WTF::OneBasedNumber::OneBasedNumber):
11633 (WTF::OneBasedNumber::oneBasedInt):
11634 (WTF::OneBasedNumber::convertAsZeroBasedInt):
11635 (WTF::OneBasedNumber::convertToZeroBased):
11636 (WTF::OneBasedNumber::base):
11637 (WTF::OneBasedNumber::belowBase):
11638 (WTF::toZeroBasedTextPosition):
11639 (WTF::toOneBasedTextPosition):
11640 (WTF::ZeroBasedNumber::convertToOneBased):
11642 2010-10-19 Kwang Yul Seo <skyul@company100.net>
11644 Reviewed by David Kilzer.
11646 [BREWMP] Turn off JIT for simulator build
11647 https://bugs.webkit.org/show_bug.cgi?id=47937
11649 We don't need to test x86 JIT.
11653 2010-10-19 Oliver Hunt <oliver@apple.com>
11655 Reviewed by Geoffrey Garen.
11657 Remove support for JSVALUE32 from JSC
11658 https://bugs.webkit.org/show_bug.cgi?id=47948
11660 Remove all the code for supporting JSVALUE32 from JSC.
11663 (JSC::JIT::privateCompileMainPass):
11664 (JSC::JIT::privateCompileSlowCases):
11666 * jit/JITArithmetic.cpp:
11667 (JSC::JIT::emit_op_lshift):
11668 (JSC::JIT::emitSlow_op_lshift):
11669 (JSC::JIT::emit_op_rshift):
11670 (JSC::JIT::emitSlow_op_rshift):
11671 (JSC::JIT::emit_op_urshift):
11672 (JSC::JIT::emitSlow_op_urshift):
11673 (JSC::JIT::emit_op_jnless):
11674 (JSC::JIT::emitSlow_op_jnless):
11675 (JSC::JIT::emit_op_jless):
11676 (JSC::JIT::emitSlow_op_jless):
11677 (JSC::JIT::emit_op_jlesseq):
11678 (JSC::JIT::emitSlow_op_jlesseq):
11679 (JSC::JIT::emit_op_bitand):
11680 (JSC::JIT::emit_op_post_inc):
11681 (JSC::JIT::emit_op_post_dec):
11682 (JSC::JIT::emit_op_pre_inc):
11683 (JSC::JIT::emit_op_pre_dec):
11684 (JSC::JIT::emit_op_mod):
11685 (JSC::JIT::emitSlow_op_mod):
11687 * jit/JITInlineMethods.h:
11688 (JSC::JIT::emitGetFromCallFrameHeaderPtr):
11689 (JSC::JIT::emitGetFromCallFrameHeader32):
11690 * jit/JITOpcodes.cpp:
11691 (JSC::JIT::emit_op_loop_if_lesseq):
11692 (JSC::JIT::emit_op_bitnot):
11693 (JSC::JIT::emit_op_next_pname):
11694 * jit/JITPropertyAccess.cpp:
11695 (JSC::JIT::emit_op_get_by_val):
11696 (JSC::JIT::emit_op_put_by_val):
11698 * jit/JSInterfaceJIT.h:
11699 * jit/SpecializedThunkJIT.h:
11700 (JSC::SpecializedThunkJIT::returnDouble):
11701 (JSC::SpecializedThunkJIT::tagReturnAsInt32):
11702 * jit/ThunkGenerators.cpp:
11703 (JSC::sqrtThunkGenerator):
11704 (JSC::powThunkGenerator):
11705 * runtime/Collector.cpp:
11706 (JSC::isPossibleCell):
11708 * runtime/JSCell.h:
11709 * runtime/JSGlobalData.cpp:
11710 (JSC::JSGlobalData::JSGlobalData):
11711 * runtime/JSGlobalData.h:
11712 * runtime/JSGlobalObject.h:
11713 (JSC::Structure::prototypeForLookup):
11714 * runtime/JSImmediate.h:
11715 (JSC::reinterpretIntptrToDouble):
11716 (JSC::JSImmediate::isIntegerNumber):
11717 (JSC::JSImmediate::isDouble):
11718 (JSC::JSImmediate::areBothImmediateIntegerNumbers):
11719 (JSC::JSImmediate::makeDouble):
11720 (JSC::JSImmediate::doubleValue):
11721 (JSC::JSImmediate::toBoolean):
11722 (JSC::JSImmediate::fromNumberOutsideIntegerRange):
11723 (JSC::JSImmediate::from):
11724 (JSC::JSImmediate::toDouble):
11725 (JSC::JSFastMath::rightShiftImmediateNumbers):
11726 * runtime/JSNumberCell.cpp:
11727 * runtime/JSNumberCell.h:
11728 * runtime/JSObject.h:
11729 (JSC::JSObject::JSObject):
11730 * runtime/JSValue.h:
11731 * runtime/NumberObject.h:
11734 2010-10-19 Csaba Osztrogonác <ossy@webkit.org>
11736 Reviewed by Geoffrey Garen.
11738 BytecodeGenerator::m_lastOpcodePosition must be initialized in all constructors
11739 https://bugs.webkit.org/show_bug.cgi?id=47920
11741 * bytecompiler/BytecodeGenerator.cpp:
11742 (JSC::BytecodeGenerator::BytecodeGenerator): Add missing member initialization.
11744 2010-10-19 Kwang Yul Seo <skyul@company100.net>
11746 Reviewed by David Kilzer.
11748 RVCT fails to compile DateMath.cpp due to overloaded function pow
11749 https://bugs.webkit.org/show_bug.cgi?id=47844
11751 Choose std::pow(double, double) among multiple overloaded pow functions
11752 to fix build for RVCT.
11754 * wtf/DateMath.cpp:
11755 (WTF::parseES5DateFromNullTerminatedCharacters):
11757 2010-10-19 Patrick Gansterer <paroga@webkit.org>
11759 Reviewed by David Kilzer.
11761 Use UChar instead of wchar_t in UnicodeWinCE
11762 https://bugs.webkit.org/show_bug.cgi?id=47904
11764 Make UnicodeWinCE more portable, so we can use it for other ports too.
11766 * wtf/unicode/wince/UnicodeWinCE.cpp:
11767 (WTF::Unicode::toLower):
11768 (WTF::Unicode::toUpper):
11769 (WTF::Unicode::foldCase):
11770 (WTF::Unicode::isPrintableChar):
11771 (WTF::Unicode::isSpace):
11772 (WTF::Unicode::isLetter):
11773 (WTF::Unicode::isUpper):
11774 (WTF::Unicode::isLower):
11775 (WTF::Unicode::isDigit):
11776 (WTF::Unicode::isPunct):
11777 (WTF::Unicode::isAlphanumeric):
11778 (WTF::Unicode::toTitleCase):
11779 (WTF::Unicode::mirroredChar):
11780 (WTF::Unicode::digitValue):
11781 * wtf/unicode/wince/UnicodeWinCE.h:
11782 (WTF::Unicode::isSeparatorSpace):
11783 (WTF::Unicode::isHighSurrogate):
11784 (WTF::Unicode::isLowSurrogate):
11785 (WTF::Unicode::umemcasecmp):
11786 (WTF::Unicode::surrogateToUcs4):
11788 2010-10-19 Patrick Gansterer <paroga@webkit.org>
11790 Reviewed by Andreas Kling.
11792 Fix style of UnicodeWinCE
11793 https://bugs.webkit.org/show_bug.cgi?id=47818
11795 * wtf/unicode/wince/UnicodeWinCE.cpp:
11796 (WTF::Unicode::toLower):
11797 (WTF::Unicode::toUpper):
11798 * wtf/unicode/wince/UnicodeWinCE.h:
11800 2010-10-18 Xan Lopez <xlopez@igalia.com>
11802 Reviewed by Martin Robinson.
11804 * GNUmakefile.am: add missing file.
11806 2010-10-18 Oliver Hunt <oliver@apple.com>
11808 Reviewed by Sam Weinig.
11810 Strict mode: Functions created with the function constructor don't implement strict mode semantics
11811 https://bugs.webkit.org/show_bug.cgi?id=47860
11813 When creating the FunctionExecutable for a new function the function constructor
11814 was always passing false for whether or not a function was strict, rather than
11815 using the information from the freshly parsed function itself.
11817 * runtime/Executable.cpp:
11818 (JSC::FunctionExecutable::fromGlobalCode):
11820 2010-10-18 Oliver Hunt <oliver@apple.com>
11822 Reviewed by Darin Adler.
11824 Strict mode: |this| should be undefined if it is not explicitly provided
11825 https://bugs.webkit.org/show_bug.cgi?id=47833
11827 To make strict mode behave correctly we want to pass undefined instead of null
11828 as the default this value. This has no impact on behaviour outside of strict
11829 mode as both values are replaced with the global object if necessary.
11831 * bytecompiler/NodesCodegen.cpp:
11832 (JSC::FunctionCallValueNode::emitBytecode):
11833 (JSC::FunctionCallResolveNode::emitBytecode):
11834 (JSC::CallFunctionCallDotNode::emitBytecode):
11835 (JSC::ApplyFunctionCallDotNode::emitBytecode):
11838 2010-10-18 Darin Adler <darin@apple.com>
11840 Reviewed by Anders Carlsson.
11842 Make a nullptr that works with OwnPtr and RefPtr
11843 https://bugs.webkit.org/show_bug.cgi?id=47756
11845 * JavaScriptCore.xcodeproj/project.pbxproj: Added NullPtr.h.
11847 * wtf/NullPtr.h: Added.
11849 * wtf/OwnArrayPtr.h: Add an overload of = taking nullptr.
11850 * wtf/OwnPtr.h: Ditto.
11851 * wtf/PassOwnArrayPtr.h: Ditto.
11852 * wtf/PassOwnPtr.h: Ditto.
11853 * wtf/PassRefPtr.h: Ditto.
11854 * wtf/RefPtr.h: Ditto.
11855 * wtf/RetainPtr.h: Ditto.
11857 2010-10-18 Oliver Hunt <oliver@apple.com>
11859 Reviewed by Sam Weinig.
11861 Strict mode: JIT doesn't check for |this| being an immediate before dereferencing
11862 https://bugs.webkit.org/show_bug.cgi?id=47826
11864 There's no guarantee that |this| will be a cell in a strict mode function, so
11865 don't claim that it is.
11867 * bytecode/CodeBlock.h:
11868 (JSC::CodeBlock::isKnownNotImmediate):
11870 2010-10-18 Zoltan Herczeg <zherczeg@webkit.org>
11872 Reviewed by Oliver Hunt.
11874 if (0) throw "x" ; else { } throws parse error after r69906
11875 https://bugs.webkit.org/show_bug.cgi?id=47807
11877 r69906 introduced a bug: the semicolon is not parsed after a throw
11878 expression anymore. Thus, the semicolon terminates the "if" parsing
11879 in the example above, and the else token results a parse error.
11881 * parser/JSParser.cpp:
11882 (JSC::JSParser::parseThrowStatement):
11884 2010-10-18 Peter Varga <pvarga@inf.u-szeged.hu>
11886 Reviewed by Andreas Kling.
11888 Remove some unnecessary lines of code from Parser.cpp
11889 https://bugs.webkit.org/show_bug.cgi?id=47816
11891 * parser/Parser.cpp:
11893 2010-10-18 Xan Lopez <xlopez@igalia.com>
11895 Reviewed by Csaba Osztrogonác.
11897 Build broken with JIT disabled
11898 https://bugs.webkit.org/show_bug.cgi?id=47801
11900 This is a regression caused by r69940.
11902 * interpreter/Interpreter.cpp:
11903 (JSC::Interpreter::resolveBase):
11905 2010-10-18 Zoltan Horvath <zoltan@webkit.org>
11907 Reviewed by Darin Adler.
11909 Change FastAllocBase implementation into a macro
11910 https://bugs.webkit.org/show_bug.cgi?id=42998
11912 It was investigated in bug #33896 that inheriting classes from FastAllocBase
11913 can result in objects getting larger which leads to memory regressions.
11914 Using a macro instead of inheriting classes from FastAllocBase would solve the issue.
11916 * wtf/FastAllocBase.h: Add a WTF_MAKE_FAST_ALLOCATED macro
11918 2010-10-17 Oliver Hunt <oliver@apple.com>
11920 Reviewed by Sam Weinig.
11922 Strict mode: arguments is not valid as the base expression for pre- or post-fix expressions
11923 https://bugs.webkit.org/show_bug.cgi?id=47791
11925 Simple fix, check for arguments in addition to eval.
11927 * parser/JSParser.cpp:
11928 (JSC::JSParser::parseUnaryExpression):
11930 2010-10-17 Oliver Hunt <oliver@apple.com>
11932 Reviewed by Sam Weinig.
11934 Strict mode: Assignment that would create a global should be a late ReferenceError, not a syntax failure
11935 https://bugs.webkit.org/show_bug.cgi?id=47788
11937 Fixing this required a couple of changes:
11938 * resolve_base now has a flag to indicate whether it is being used for a put in strict mode.
11939 this allows us to throw an exception when we're doing a completely generic resolve for
11940 assignment, and that assignment would create a new global.
11941 * There is a new opcode 'op_ensure_property_exists' that is used to determine whether
11942 the property being assigned to already exists on the global object. This currently
11943 has no caching, but such caching could be added relatively trivially. It is only used
11944 in the case where we know that a property will be placed on the global object, and
11945 we cannot verify that the property already exists.
11947 In the jit we plant a call to cti_op_resolve_base_strict_put in the effected case rather
11948 than making op_resolve_base have an additional runtime branch.
11950 There's also a new helper function to create the exception for the invalid assignment.
11952 * bytecode/CodeBlock.cpp:
11953 (JSC::CodeBlock::dump):
11954 * bytecode/Opcode.h:
11955 * bytecompiler/BytecodeGenerator.cpp:
11956 (JSC::BytecodeGenerator::emitResolveBase):
11957 (JSC::BytecodeGenerator::emitResolveBaseForPut):
11958 * bytecompiler/BytecodeGenerator.h:
11959 * bytecompiler/NodesCodegen.cpp:
11960 (JSC::AssignResolveNode::emitBytecode):
11961 (JSC::ForInNode::emitBytecode):
11962 * interpreter/Interpreter.cpp:
11963 (JSC::Interpreter::resolveBase):
11964 (JSC::Interpreter::privateExecute):
11966 (JSC::JIT::privateCompileMainPass):
11968 * jit/JITOpcodes.cpp:
11969 (JSC::JIT::emit_op_resolve_base):
11970 (JSC::JIT::emit_op_ensure_property_exists):
11971 * jit/JITOpcodes32_64.cpp:
11972 (JSC::JIT::emit_op_resolve_base):
11973 (JSC::JIT::emit_op_ensure_property_exists):
11974 * jit/JITStubs.cpp:
11975 (JSC::DEFINE_STUB_FUNCTION):
11977 * parser/JSParser.cpp:
11978 (JSC::JSParser::parseProgram):
11979 * runtime/ExceptionHelpers.cpp:
11980 (JSC::createErrorForInvalidGlobalAssignment):
11981 * runtime/ExceptionHelpers.h:
11982 * runtime/Operations.h:
11983 (JSC::resolveBase):
11985 2010-10-17 Simon Fraser <simon.fraser@apple.com>
11987 First part of fix for Windows build failure. Will wait for the
11988 next set of link errors to determine the mangled forms for dtoaRoundSF
11991 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
11993 2010-10-17 Simon Fraser <simon.fraser@apple.com>
11995 Reviewed by Nikolas Zimmermann.
11997 Very large and small numbers fail to round-trip through CSS
11998 https://bugs.webkit.org/show_bug.cgi?id=20674
12000 New exports required to use DecimalNumber in WebCore.
12002 * JavaScriptCore.exp:
12003 * JavaScriptCore.xcodeproj/project.pbxproj:
12005 2010-10-16 Kyusun Kim <maniagoon@company100.net>
12007 Reviewed by Alexey Proskuryakov.
12009 Add using declarations for currentTimeMS() and parseDateFromNullTerminatedCharacters()
12010 https://bugs.webkit.org/show_bug.cgi?id=47758
12012 * wtf/CurrentTime.h:
12015 2010-10-16 Patrick Gansterer <paroga@webkit.org>
12017 Reviewed by Adam Barth.
12019 Rename StringHasherFunctions.h to StringHasher.h
12020 https://bugs.webkit.org/show_bug.cgi?id=47200
12022 Now StringHasherFunctions.h only contains the StringHasher class, so rename it to the correct name.
12025 * JavaScriptCore.gypi:
12026 * JavaScriptCore.xcodeproj/project.pbxproj:
12027 * wtf/StringHashFunctions.h: Removed.
12028 * wtf/StringHasher.h: Copied from JavaScriptCore/wtf/StringHashFunctions.h.
12029 * wtf/text/StringHash.h:
12030 * wtf/text/StringImpl.h:
12032 2010-10-15 Oliver Hunt <oliver@apple.com>
12034 Reviewed by Sam Weinig.
12036 Automatic Semicolon Insertion incorrectly inserts semicolon after break, continue, and return followed by a newline
12037 https://bugs.webkit.org/show_bug.cgi?id=47762
12039 The old YACC parser depended on the lexer for some classes of semicolon insertion.
12040 The new parser handles ASI entirely on its own so when the lexer inserts a semicolon
12041 on its own the net result is a spurious semicolon in the input stream. This can result
12042 in incorrect parsing in some cases:
12048 Would result in a parse failure as the output from the lexer is essentially
12054 So the second semicolon is interpreted as a empty statement, which terminates the if,
12055 making the else an error.
12058 * parser/JSParser.cpp:
12059 (JSC::JSParser::parseThrowStatement):
12060 Parsing of throw statement was wrong, and only worked due to the weird behaviour
12062 * parser/Lexer.cpp:
12064 Remove bogus semicolon insertion from the newline handling
12066 2010-10-15 Nikolas Zimmermann <nzimmermann@rim.com>
12068 Reviewed by Dirk Schulze.
12070 Replace some String::format() usages by StringConcatenate in WebKit
12071 https://bugs.webkit.org/show_bug.cgi?id=47714
12073 * wtf/text/StringConcatenate.h: Add UChar specific StringTypeAdapter, to accept single UChars in makeString().
12075 2010-10-15 Ilya Tikhonovsky <loislo@chromium.org>
12077 Unreviewed build fix for Debug Leopard which is failng to compile after r69842.
12079 * yarr/RegexInterpreter.cpp:
12080 (JSC::Yarr::ByteCompiler::emitDisjunction):
12082 2010-10-15 Peter Varga <pvarga@inf.u-szeged.hu>
12084 Reviewed by Gavin Barraclough.
12086 The parenthetical assertion checking isn't working in some cases with YARR
12088 https://bugs.webkit.org/show_bug.cgi?id=46893
12090 Calculate the countToCheck value of a TypeParentheticalAssertion by
12091 subtracting the number of characters which follows
12092 a TypeParentheticalAssertion term with the number of characters which should
12093 be matched by terms which are contained
12094 in the TypeParentheticalAssertion term (minimumSize).
12096 * yarr/RegexInterpreter.cpp:
12097 (JSC::Yarr::ByteCompiler::emitDisjunction):
12099 2010-10-14 Nathan Vander Wilt <nate@andyet.net>
12101 Reviewed by Darin Adler.
12103 Added parser for ECMAScript 5 standard date format, so Date.parse can handle RFC 3339 timestamps: https://bugs.webkit.org/show_bug.cgi?id=44632
12105 * runtime/DateConversion.cpp:
12107 * wtf/DateMath.cpp:
12108 (WTF::ymdhmsToSeconds):
12109 (WTF::parseES5DateFromNullTerminatedCharacters):
12112 2010-10-14 Nikolas Zimmermann <nzimmermann@rim.com>
12114 Reviewed by Gavin Barraclough.
12116 Replace lots of String::format() usages by StringConcatenate
12117 https://bugs.webkit.org/show_bug.cgi?id=47664
12119 Add StringTypeAdapter<char> to accept single characters for makeString().
12121 * wtf/text/StringConcatenate.h:
12124 2010-10-14 David Goodwin <david_goodwin@apple.com>
12126 Reviewed by Darin Adler.
12128 need way to measure size of JITed ARM code
12129 https://bugs.webkit.org/show_bug.cgi?id=47121
12131 * assembler/LinkBuffer.h:
12132 (JSC::LinkBuffer::linkCode):
12133 (JSC::LinkBuffer::dumpLinkStats):
12134 (JSC::LinkBuffer::dumpCode):
12136 2010-10-14 Peter Varga <pvarga@inf.u-szeged.hu>
12138 Reviewed by Gavin Barraclough.
12140 The backreference checking isn't working in some cases with YARR Interpreter
12141 https://bugs.webkit.org/show_bug.cgi?id=46904
12143 The Interpreter::matchBackReference() function returns true without matching
12144 when a backreference points to the same parentheses where it is.
12146 * yarr/RegexInterpreter.cpp:
12147 (JSC::Yarr::Interpreter::matchBackReference):
12149 2010-10-14 No'am Rosenthal <noam.rosenthal@nokia.com>
12151 Reviewed by Andreas Kling.
12153 [Qt] Text breaking is slow: enable ICU as an opt-in
12154 https://bugs.webkit.org/show_bug.cgi?id=40332
12156 Added a config flag that enables ICU as an opt-in instead of the Qt specific code.
12157 Because of the inclusion of ICU headers, some explicit casting was necessary in UnicodeQt4.h
12159 * JavaScriptCore.pri:
12160 * wtf/unicode/qt4/UnicodeQt4.h:
12161 (WTF::Unicode::toLower):
12162 (WTF::Unicode::toUpper):
12163 (WTF::Unicode::toTitleCase):
12164 (WTF::Unicode::foldCase):
12165 (WTF::Unicode::isPrintableChar):
12166 (WTF::Unicode::isSeparatorSpace):
12167 (WTF::Unicode::isPunct):
12168 (WTF::Unicode::isLower):
12169 (WTF::Unicode::mirroredChar):
12170 (WTF::Unicode::combiningClass):
12171 (WTF::Unicode::direction):
12172 (WTF::Unicode::category):
12174 2010-10-14 Anton Faern <anton@bladehawke.com>
12176 Reviewed by Csaba Osztrogonác.
12178 https://bugs.webkit.org/show_bug.cgi?id=47658
12179 NetBSD was not included in the WTF_PLATFORM_FOO to WTF_OS_FOO
12180 change. This means that OS(NETBSD) is also undefined.
12182 * wtf/Platform.h: s/_PLATFORM_/_OS_/ for NetBSD
12184 2010-10-13 David Goodwin <david_goodwin@apple.com>
12186 Reviewed by Oliver Hunt.
12188 ARMv7 JIT should generated conditional branches when possible
12189 https://bugs.webkit.org/show_bug.cgi?id=47384
12191 Use different jump padding sizes for conditional and unconditional
12192 jumps (12 bytes and 10 bytes respectively). This allows the JIT to
12193 include the IT instruction as part of the conditional jump sequence
12194 which in turn allows it to optimize away the IT using an ARMv7
12195 conditional branch instruction. Use 2-byte B(T1) and 4-byte B(T3) for
12196 conditional branches when displacement is in range. Also use IT/B(T4)
12197 for conditional branch when displacement does not fit in B(T3).
12199 For unconditional jump, instruction selection options are:
12200 B(T2), B(T4), MOVW/MOVT/BX. For conditional jump, instruction selection
12201 options are: B(T1), B(T3), IT/B(T4), ITTT/MOVW/MOVT/BX.
12203 * assembler/ARMv7Assembler.cpp:
12204 * assembler/ARMv7Assembler.h:
12205 (JSC::ARMv7Assembler::JmpSrc::JmpSrc):
12206 (JSC::ARMv7Assembler::ifThenElse):
12207 (JSC::ARMv7Assembler::jumpSizeDelta):
12208 (JSC::ARMv7Assembler::canCompact):
12209 (JSC::ARMv7Assembler::computeJumpType):
12210 (JSC::ARMv7Assembler::link):
12211 (JSC::ARMv7Assembler::canBeJumpT1):
12212 (JSC::ARMv7Assembler::canBeJumpT3):
12213 (JSC::ARMv7Assembler::canBeJumpT4):
12214 (JSC::ARMv7Assembler::linkJumpT1):
12215 (JSC::ARMv7Assembler::linkJumpT3):
12216 (JSC::ARMv7Assembler::linkJumpT4):
12217 (JSC::ARMv7Assembler::linkConditionalJumpT4):
12218 (JSC::ARMv7Assembler::linkBX):
12219 (JSC::ARMv7Assembler::linkConditionalBX):
12220 (JSC::ARMv7Assembler::linkJumpAbsolute):
12221 * assembler/LinkBuffer.h:
12222 (JSC::LinkBuffer::linkCode):
12223 * assembler/MacroAssemblerARMv7.h:
12224 (JSC::MacroAssemblerARMv7::canCompact):
12225 (JSC::MacroAssemblerARMv7::computeJumpType):
12226 (JSC::MacroAssemblerARMv7::jumpSizeDelta):
12227 (JSC::MacroAssemblerARMv7::jump):
12228 (JSC::MacroAssemblerARMv7::nearCall):
12229 (JSC::MacroAssemblerARMv7::call):
12230 (JSC::MacroAssemblerARMv7::ret):
12231 (JSC::MacroAssemblerARMv7::tailRecursiveCall):
12232 (JSC::MacroAssemblerARMv7::makeJump):
12233 (JSC::MacroAssemblerARMv7::makeBranch):
12235 2010-10-13 Fridrich Strba <fridrich.strba@bluewin.ch>
12237 Reviewed by Darin Adler.
12239 Don't depend on Windows on sched_yield and sched.h
12240 https://bugs.webkit.org/show_bug.cgi?id=45543
12242 sched.h is part of pthreads and sched_yield is implemented
12243 in pthreads-win32 as Sleep(0). This patch avoids a gratuitous
12244 dependency on pthreads-win32 in this file.
12246 * wtf/TCSpinLock.h:
12247 (TCMalloc_SlowLock):
12249 2010-10-13 Kwang Yul Seo <skyul@company100.net>
12251 Reviewed by Kent Tamura.
12253 [BREWMP] Port unicode
12254 https://bugs.webkit.org/show_bug.cgi?id=45716
12256 Brew MP port uses only the subset of ICU library to reduce the binary size.
12257 Follow the WinCE's implementation.
12260 * wtf/unicode/Unicode.h:
12261 * wtf/unicode/brew/UnicodeBrew.cpp: Added.
12262 (WTF::Unicode::toLower):
12263 (WTF::Unicode::toUpper):
12264 (WTF::Unicode::foldCase):
12265 (WTF::Unicode::isPrintableChar):
12266 (WTF::Unicode::isUpper):
12267 (WTF::Unicode::isLower):
12268 (WTF::Unicode::isDigit):
12269 (WTF::Unicode::isPunct):
12270 (WTF::Unicode::isAlphanumeric):
12271 (WTF::Unicode::toTitleCase):
12272 (WTF::Unicode::direction):
12273 (WTF::Unicode::category):
12274 (WTF::Unicode::decompositionType):
12275 (WTF::Unicode::combiningClass):
12276 (WTF::Unicode::mirroredChar):
12277 (WTF::Unicode::digitValue):
12278 (WTF::Unicode::isSpace):
12279 (WTF::Unicode::isLetter):
12280 * wtf/unicode/brew/UnicodeBrew.h: Added.
12281 (WTF::Unicode::isArabicChar):
12282 (WTF::Unicode::isSeparatorSpace):
12283 (WTF::Unicode::hasLineBreakingPropertyComplexContext):
12284 (WTF::Unicode::hasLineBreakingPropertyComplexContextOrIdeographic):
12285 (WTF::Unicode::umemcasecmp):
12287 2010-10-13 Gavin Barraclough <barraclough@apple.com>
12291 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
12293 2010-10-13 Adam Barth <abarth@webkit.org>
12295 Reviewed by Maciej Stachowiak.
12297 [WTFURL] Add URLQueryCanonicalizer
12298 https://bugs.webkit.org/show_bug.cgi?id=45088
12300 This class canonicalizes the query component of URLs. The main tricky
12301 bit there is the convertCharset function, which I've moved to a
12302 templated dependency. There'll likely be more about that in future
12305 * JavaScriptCore.xcodeproj/project.pbxproj:
12306 * wtf/url/src/URLEscape.cpp: Added.
12307 * wtf/url/src/URLEscape.h: Added.
12308 (WTF::appendEscapedCharacter):
12309 * wtf/url/src/URLQueryCanonicalizer.h: Added.
12310 (WTF::URLQueryCanonicalizer::canonicalize):
12311 (WTF::URLQueryCanonicalizer::isAllASCII):
12312 (WTF::URLQueryCanonicalizer::appendRaw8BitQueryString):
12313 (WTF::URLQueryCanonicalizer::convertToQueryEncoding):
12315 2010-10-13 Gavin Barraclough <barraclough@apple.com>
12317 Reviewed by Oliver Hunt.
12319 Bug 43987 - Downloading using XHR is much slower than before
12320 Change StringBuilder to use overcapacity in a StringImpl, rather than a Vector.
12321 Fundamentally this should be the same (copies current contents to expand capacity,
12322 rather than using a rope), but this approach allows the intermadiate state of the
12323 String to be inspected in the buffer without copying to resolve.
12325 * runtime/JSONObject.cpp:
12326 (JSC::Stringifier::appendQuotedString):
12327 (JSC::Stringifier::Holder::appendNextProperty):
12328 Renamed StringBuilder::size() -> length() (to match other String types).
12330 * runtime/UStringBuilder.h:
12331 (JSC::UStringBuilder::append):
12332 (JSC::UStringBuilder::toUString):
12333 Update for changes in parent class, can just 'using' the append methods.
12335 * wtf/text/StringBuilder.cpp: Added.
12336 (WTF::StringBuilder::reifyString):
12337 (WTF::StringBuilder::resize):
12338 (WTF::StringBuilder::reserveCapacity):
12339 (WTF::StringBuilder::allocateBuffer):
12340 (WTF::StringBuilder::appendUninitialized):
12341 (WTF::StringBuilder::append):
12342 (WTF::StringBuilder::shrinkToFit):
12343 * wtf/text/StringBuilder.h:
12344 (WTF::StringBuilder::StringBuilder):
12345 (WTF::StringBuilder::append):
12346 (WTF::StringBuilder::toString):
12347 (WTF::StringBuilder::toStringPreserveCapacity):
12348 (WTF::StringBuilder::length):
12349 (WTF::StringBuilder::isEmpty):
12350 (WTF::StringBuilder::operator[]):
12351 (WTF::StringBuilder::clear):
12352 Class updated to use overcapacity in a StringImpl, rather than a Vector.
12355 * Android.v8.wtf.mk:
12357 * JavaScriptCore.exp:
12358 * JavaScriptCore.gypi:
12359 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
12360 * JavaScriptCore.vcproj/WTF/WTF.vcproj:
12361 * JavaScriptCore.vcproj/jsc/jsc.vcproj:
12362 * JavaScriptCore.xcodeproj/project.pbxproj:
12363 * wtf/CMakeLists.txt:
12366 2010-10-13 Adam Roben <aroben@apple.com>
12368 Export tryFastRealloc for WebKit2's benefit
12370 Rubber-stamped by Anders Carlsson.
12372 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Added
12373 tryFastRealloc. Removed RegExpObject::info, which is now exported via
12376 2010-10-13 Adam Barth <abarth@webkit.org>
12378 Reviewed by Maciej Stachowiak.
12380 [WTFURL] Add a mechanism for classifying types of characters
12381 https://bugs.webkit.org/show_bug.cgi?id=45085
12383 Various characters have different escaping rules depending on where
12384 they are in URLs. This patch adds a table containing that information.
12386 * JavaScriptCore.xcodeproj/project.pbxproj:
12387 * wtf/url/src/URLCharacterTypes.cpp: Added.
12388 * wtf/url/src/URLCharacterTypes.h: Added.
12389 (WTF::URLCharacterTypes::isQueryChar):
12390 (WTF::URLCharacterTypes::isIPv4Char):
12391 (WTF::URLCharacterTypes::isHexChar):
12392 (WTF::URLCharacterTypes::isCharOfType):
12394 2010-10-13 Xan Lopez <xlopez@igalia.com>
12396 Reviewed by Csaba Osztrogonác.
12398 Missing parameters for bytecode dump of next_pname
12399 https://bugs.webkit.org/show_bug.cgi?id=47590
12401 * bytecode/CodeBlock.cpp:
12402 (JSC::CodeBlock::dump): add missing parameters to the dump.
12404 2010-10-13 Nikolas Zimmermann <nzimmermann@rim.com>
12406 Reviewed by Dirk Schulze.
12408 Add wtf/text/StringConcatenate
12409 https://bugs.webkit.org/show_bug.cgi?id=47584
12411 Move runtime/StringConcatenate.h to wtf/text, make it work for Strings too.
12412 Add a special runtime/UStringConcatenate.h class that inherits from StringConcatenate, and extends it for use with UString.
12413 Exactly the same design that has been followed while refactoring StringBuilder.
12415 The UString variants can all be removed as soon as WTF::String & JSC::UString converge.
12417 * GNUmakefile.am: Add wtf/text/StringConcatenate.h and runtime/UStringConcatenate.h.
12418 * JavaScriptCore.gypi: Ditto.
12419 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Ditto.
12420 * JavaScriptCore.vcproj/WTF/WTF.vcproj: Ditto.
12421 * JavaScriptCore.xcodeproj/project.pbxproj: Ditto.
12422 * bytecode/CodeBlock.cpp: s/makeString/makeUString/
12423 (JSC::escapeQuotes):
12424 (JSC::valueToSourceString):
12425 (JSC::constantName):
12427 (JSC::CodeBlock::registerName):
12428 (JSC::regexpToSourceString):
12430 * bytecompiler/NodesCodegen.cpp: Ditto.
12432 * profiler/Profiler.cpp: Ditto.
12433 (JSC::Profiler::createCallIdentifier):
12434 * runtime/ExceptionHelpers.cpp: Ditto.
12435 (JSC::createUndefinedVariableError):
12436 (JSC::createErrorMessage):
12437 (JSC::createInvalidParamError):
12438 * runtime/FunctionConstructor.cpp: Ditto.
12439 (JSC::constructFunction):
12440 * runtime/FunctionPrototype.cpp: Ditto.
12441 (JSC::insertSemicolonIfNeeded):
12442 * runtime/JSONObject.cpp: Ditto.
12443 (JSC::Stringifier::indent):
12444 * runtime/JSStringBuilder.h:
12445 (JSC::jsMakeNontrivialString):
12446 * runtime/RegExpConstructor.cpp: Ditto.
12447 (JSC::constructRegExp):
12448 * runtime/RegExpObject.cpp: Ditto.
12449 (JSC::RegExpObject::match):
12450 * runtime/RegExpPrototype.cpp: Ditto.
12451 (JSC::regExpProtoFuncCompile):
12452 * runtime/StringConcatenate.h: Removed.
12453 * runtime/UStringConcatenate.h: Added. Only contains the StringTypeAdapter<JSC::UString> code and the makeUString variants, the rest lives in wtf/text/StringConcatenate.h
12454 (JSC::makeUString):
12455 * wtf/text/StringConcatenate.h: Copied from runtime/StringConcatenate.h.
12458 2010-10-12 Gavin Barraclough <barraclough@apple.com>
12462 * wtf/text/StringBuilder.h:
12463 (WTF::StringBuilder::length):
12465 2010-10-12 Nikolas Zimmermann <nzimmermann@rim.com>
12467 Reviewed by Gavin Barraclough.
12469 Unify JSC::StringBuilder & WebCore::StringBuilder
12470 https://bugs.webkit.org/show_bug.cgi?id=47538
12472 Move runtime/StringBuilder.h to wtf/text/StringBuilder.h. Rename build() to toString() and return a WTF::String().
12473 Move the append(const JSC::UString&) method into runtime/UStringBuilder.h.
12474 UStringBuilder inherits from StringBuilder.h and adds append(const JSC::UString&) and UString toUString() functionality.
12476 No new code, just move code around.
12478 * GNUmakefile.am: Add wtf/text/StringBuilder.h / runtime/UStringBuilder.h. Remove runtime/StringBuilder.h.
12479 * JavaScriptCore.gypi: Ditto.
12480 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Ditto.
12481 * JavaScriptCore.vcproj/WTF/WTF.vcproj: Ditto.
12482 * JavaScriptCore.xcodeproj/project.pbxproj: Ditto.
12483 * runtime/Executable.cpp:
12484 (JSC::FunctionExecutable::paramString): Use UStringBuilder, instead of StringBuilder. Rename build() -> toUString().
12485 * runtime/FunctionConstructor.cpp:
12486 (JSC::constructFunction): Ditto.
12487 * runtime/JSGlobalObjectFunctions.cpp:
12488 (JSC::globalFuncUnescape): Ditto.
12489 * runtime/JSONObject.cpp:
12490 (JSC::Stringifier::stringify): Ditto.
12491 (JSC::Stringifier::appendQuotedString): Ditto.
12492 (JSC::Stringifier::appendStringifiedValue): Ditto.
12493 (JSC::Stringifier::startNewLine): Ditto.
12494 (JSC::Stringifier::Holder::appendNextProperty): Ditto.
12495 * runtime/LiteralParser.cpp:
12496 (JSC::LiteralParser::Lexer::lexString): Ditto.
12497 * runtime/NumberPrototype.cpp: Remove unneeded JSStringBuilder.h / StringBuilder.h include.
12498 * runtime/StringBuilder.h: Removed.
12499 * runtime/UStringBuilder.h: Added. Inherits from WTF::StringBuilder, extending it by two methods.
12500 (JSC::UStringBuilder::append): append(const JSC::UString&)
12501 (JSC::UStringBuilder::toUString):
12502 * wtf/text/StringBuilder.h: Copied from runtime/StringBuilder.h. Move JSC::UString parts into runtime/UStringBuilder.h
12503 (WTF::StringBuilder::append): Renamed m_buffer to buffer everywhere.
12504 (WTF::StringBuilder::isEmpty): Ditto (+ constify method).
12505 (WTF::StringBuilder::reserveCapacity): Ditto.
12506 (WTF::StringBuilder::resize): Ditto.
12507 (WTF::StringBuilder::size): Ditto.
12508 (WTF::StringBuilder::operator[]): Ditto.
12509 (WTF::StringBuilder::toString): Ditto (+ renamed from build()). Returns a String, not an UString. The old build() method is now named toUString() and lives in UStringBuilder.
12511 2010-10-12 Michael Saboff <msaboff@apple.com>
12513 Reviewed by Oliver Hunt.
12515 Cleaned up the processing of replacements after regular expression
12516 processing, especially the case where there wasn't a match.
12517 Changed to use empty strings instead of computing a zero length sub
12519 https://bugs.webkit.org/show_bug.cgi?id=47506
12521 * runtime/StringPrototype.cpp:
12522 (JSC::jsSpliceSubstringsWithSeparators):
12523 (JSC::stringProtoFuncReplace):
12525 2010-10-11 Patrick Gansterer <paroga@webkit.org>
12529 Clang build fix after r69472.
12530 https://bugs.webkit.org/show_bug.cgi?id=46523
12532 * wtf/text/StringHash.h:
12534 2010-10-11 Oliver Hunt <oliver@apple.com>
12536 Undo last minute change to 32bit build.
12538 * jit/JITOpcodes32_64.cpp:
12539 (JSC::JIT::emit_op_convert_this_strict):
12541 2010-10-11 Brian Weinstein <bweinstein@apple.com>
12543 Build fix for Windows. Add a necessary export from r69516.
12545 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
12547 2010-10-11 Oliver Hunt <oliver@apple.com>
12549 Fix interpreter build -- was broken by incorrect merge.
12551 * interpreter/Interpreter.cpp:
12552 (JSC::Interpreter::privateExecute):
12554 2010-10-01 Oliver Hunt <oliver@apple.com>
12556 Reviewed by Gavin Barraclough.
12558 [ES5] Implement strict mode
12559 https://bugs.webkit.org/show_bug.cgi?id=10701
12561 Initial strict mode implementation. This is the simplest
12562 implementation that could possibly work and adds (hopefully)
12563 all of the restrictions required by strict mode. There are
12564 a number of inefficiencies, especially in the handling of
12565 arguments and eval as smart implementations would make this
12566 patch more complicated.
12568 The SyntaxChecker AST builder has become somewhat more complex
12569 as strict mode does require more parse tree information to
12570 validate the syntax.
12572 Summary of major changes to the parser:
12573 * We track when we enter strict mode (this may come as a surprise)
12574 * Strict mode actually requires a degree of AST knowledge to validate
12575 so the SyntaxChecker now produces values that can be used to distinguish
12577 * We now track variables that are written to. We do this to
12578 statically identify writes to global properties that don't exist
12579 and abort at that point. This should actually make it possible
12580 to optimise some other cases in the future but for now it's
12581 purely for validity checking. Currently writes are only tracked
12582 in strict mode code.
12583 * Labels are now tracked as it is now a syntax error to jump to a label
12584 that does not exist (or to use break, continue, or return in a context
12585 where they would be invalid).
12588 * In order to get correct hanlding of the Arguments object all
12589 strict mode functions that reference arguments create and tearoff
12590 the arguments object on entry. This is not strictly necessary
12591 but was the least work necessary to get the correct behaviour.
12592 * PutPropertySlot now tracks whether it is being used for a strict
12593 mode write, and if so Object::put will throw when a write can't be
12595 * StrictEvalActivation was added as an "activation" object for strict
12596 mode eval (so that strict eval does not introduce new variables into
12597 the containing scope).
12601 * JavaScriptCore.exp:
12602 * JavaScriptCore.pro:
12603 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
12604 * JavaScriptCore.xcodeproj/project.pbxproj:
12605 * bytecode/CodeBlock.cpp:
12606 (JSC::CodeBlock::dump):
12607 (JSC::CodeBlock::CodeBlock):
12608 (JSC::CodeBlock::reparseForExceptionInfoIfNecessary):
12609 * bytecode/CodeBlock.h:
12610 (JSC::CodeBlock::isStrictMode):
12611 * bytecode/EvalCodeCache.h:
12612 (JSC::EvalCodeCache::get):
12613 * bytecode/Opcode.h:
12614 * bytecompiler/BytecodeGenerator.cpp:
12615 (JSC::BytecodeGenerator::BytecodeGenerator):
12616 (JSC::BytecodeGenerator::createArgumentsIfNecessary):
12617 (JSC::BytecodeGenerator::emitReturn):
12618 * bytecompiler/BytecodeGenerator.h:
12619 (JSC::BytecodeGenerator::isStrictMode):
12620 (JSC::BytecodeGenerator::makeFunction):
12621 * debugger/Debugger.cpp:
12622 (JSC::evaluateInGlobalCallFrame):
12623 * debugger/DebuggerCallFrame.cpp:
12624 (JSC::DebuggerCallFrame::evaluate):
12625 * interpreter/Interpreter.cpp:
12626 (JSC::Interpreter::callEval):
12627 (JSC::Interpreter::unwindCallFrame):
12628 (JSC::Interpreter::execute):
12629 (JSC::Interpreter::privateExecute):
12631 (JSC::JIT::privateCompileMainPass):
12632 (JSC::JIT::privateCompileSlowCases):
12634 * jit/JITOpcodes.cpp:
12635 (JSC::JIT::emit_op_get_pnames):
12636 (JSC::JIT::emit_op_convert_this_strict):
12637 (JSC::JIT::emitSlow_op_convert_this_strict):
12638 * jit/JITOpcodes32_64.cpp:
12639 (JSC::JIT::emit_op_get_pnames):
12640 * jit/JITStubs.cpp:
12641 (JSC::DEFINE_STUB_FUNCTION):
12643 * parser/ASTBuilder.h:
12644 (JSC::ASTBuilder::createFunctionBody):
12645 (JSC::ASTBuilder::isResolve):
12646 * parser/JSParser.cpp:
12647 (JSC::JSParser::next):
12648 (JSC::JSParser::startLoop):
12649 (JSC::JSParser::endLoop):
12650 (JSC::JSParser::startSwitch):
12651 (JSC::JSParser::endSwitch):
12652 (JSC::JSParser::setStrictMode):
12653 (JSC::JSParser::strictMode):
12654 (JSC::JSParser::isValidStrictMode):
12655 (JSC::JSParser::declareParameter):
12656 (JSC::JSParser::breakIsValid):
12657 (JSC::JSParser::pushLabel):
12658 (JSC::JSParser::popLabel):
12659 (JSC::JSParser::hasLabel):
12660 (JSC::JSParser::DepthManager::DepthManager):
12661 (JSC::JSParser::DepthManager::~DepthManager):
12662 (JSC::JSParser::Scope::Scope):
12663 (JSC::JSParser::Scope::startSwitch):
12664 (JSC::JSParser::Scope::endSwitch):
12665 (JSC::JSParser::Scope::startLoop):
12666 (JSC::JSParser::Scope::endLoop):
12667 (JSC::JSParser::Scope::inLoop):
12668 (JSC::JSParser::Scope::breakIsValid):
12669 (JSC::JSParser::Scope::pushLabel):
12670 (JSC::JSParser::Scope::popLabel):
12671 (JSC::JSParser::Scope::hasLabel):
12672 (JSC::JSParser::Scope::isFunction):
12673 (JSC::JSParser::Scope::declareVariable):
12674 (JSC::JSParser::Scope::declareWrite):
12675 (JSC::JSParser::Scope::deleteProperty):
12676 (JSC::JSParser::Scope::declareParameter):
12677 (JSC::JSParser::Scope::setNeedsFullActivation):
12678 (JSC::JSParser::Scope::collectFreeVariables):
12679 (JSC::JSParser::Scope::getUncapturedWrittenVariables):
12680 (JSC::JSParser::Scope::getDeletedVariables):
12681 (JSC::JSParser::Scope::setStrictMode):
12682 (JSC::JSParser::Scope::strictMode):
12683 (JSC::JSParser::Scope::isValidStrictMode):
12684 (JSC::JSParser::pushScope):
12685 (JSC::JSParser::popScope):
12686 (JSC::JSParser::declareVariable):
12687 (JSC::JSParser::declareWrite):
12688 (JSC::JSParser::deleteProperty):
12690 (JSC::JSParser::JSParser):
12691 (JSC::JSParser::parseProgram):
12692 (JSC::JSParser::parseSourceElements):
12693 (JSC::JSParser::parseDoWhileStatement):
12694 (JSC::JSParser::parseWhileStatement):
12695 (JSC::JSParser::parseVarDeclarationList):
12696 (JSC::JSParser::parseConstDeclarationList):
12697 (JSC::JSParser::parseForStatement):
12698 (JSC::JSParser::parseBreakStatement):
12699 (JSC::JSParser::parseContinueStatement):
12700 (JSC::JSParser::parseReturnStatement):
12701 (JSC::JSParser::parseWithStatement):
12702 (JSC::JSParser::parseSwitchStatement):
12703 (JSC::JSParser::parseSwitchClauses):
12704 (JSC::JSParser::parseSwitchDefaultClause):
12705 (JSC::JSParser::parseTryStatement):
12706 (JSC::JSParser::parseBlockStatement):
12707 (JSC::JSParser::parseStatement):
12708 (JSC::JSParser::parseFormalParameters):
12709 (JSC::JSParser::parseFunctionBody):
12710 (JSC::JSParser::parseFunctionInfo):
12711 (JSC::JSParser::parseFunctionDeclaration):
12712 (JSC::JSParser::parseExpressionOrLabelStatement):
12713 (JSC::JSParser::parseIfStatement):
12714 (JSC::JSParser::parseExpression):
12715 (JSC::JSParser::parseAssignmentExpression):
12716 (JSC::JSParser::parseConditionalExpression):
12717 (JSC::JSParser::parseBinaryExpression):
12718 (JSC::JSParser::parseStrictObjectLiteral):
12719 (JSC::JSParser::parsePrimaryExpression):
12720 (JSC::JSParser::parseMemberExpression):
12721 (JSC::JSParser::parseUnaryExpression):
12722 * parser/JSParser.h:
12723 * parser/Lexer.cpp:
12724 (JSC::Lexer::parseString):
12727 (JSC::Lexer::isReparsing):
12728 * parser/Nodes.cpp:
12729 (JSC::ScopeNode::ScopeNode):
12730 (JSC::FunctionBodyNode::FunctionBodyNode):
12731 (JSC::FunctionBodyNode::create):
12733 (JSC::ScopeNode::isStrictMode):
12734 * parser/Parser.cpp:
12735 (JSC::Parser::parse):
12737 (JSC::Parser::parse):
12738 * parser/SyntaxChecker.h:
12739 (JSC::SyntaxChecker::SyntaxChecker):
12740 (JSC::SyntaxChecker::makeFunctionCallNode):
12741 (JSC::SyntaxChecker::appendToComma):
12742 (JSC::SyntaxChecker::createCommaExpr):
12743 (JSC::SyntaxChecker::makeAssignNode):
12744 (JSC::SyntaxChecker::makePrefixNode):
12745 (JSC::SyntaxChecker::makePostfixNode):
12746 (JSC::SyntaxChecker::makeTypeOfNode):
12747 (JSC::SyntaxChecker::makeDeleteNode):
12748 (JSC::SyntaxChecker::makeNegateNode):
12749 (JSC::SyntaxChecker::makeBitwiseNotNode):
12750 (JSC::SyntaxChecker::createLogicalNot):
12751 (JSC::SyntaxChecker::createUnaryPlus):
12752 (JSC::SyntaxChecker::createVoid):
12753 (JSC::SyntaxChecker::thisExpr):
12754 (JSC::SyntaxChecker::createResolve):
12755 (JSC::SyntaxChecker::createObjectLiteral):
12756 (JSC::SyntaxChecker::createArray):
12757 (JSC::SyntaxChecker::createNumberExpr):
12758 (JSC::SyntaxChecker::createString):
12759 (JSC::SyntaxChecker::createBoolean):
12760 (JSC::SyntaxChecker::createNull):
12761 (JSC::SyntaxChecker::createBracketAccess):
12762 (JSC::SyntaxChecker::createDotAccess):
12763 (JSC::SyntaxChecker::createRegex):
12764 (JSC::SyntaxChecker::createNewExpr):
12765 (JSC::SyntaxChecker::createConditionalExpr):
12766 (JSC::SyntaxChecker::createAssignResolve):
12767 (JSC::SyntaxChecker::createFunctionExpr):
12768 (JSC::SyntaxChecker::createFunctionBody):
12769 (JSC::SyntaxChecker::appendBinaryExpressionInfo):
12770 (JSC::SyntaxChecker::operatorStackPop):
12771 * runtime/Arguments.cpp:
12772 (JSC::Arguments::createStrictModeCallerIfNecessary):
12773 (JSC::Arguments::createStrictModeCalleeIfNecessary):
12774 (JSC::Arguments::getOwnPropertySlot):
12775 (JSC::Arguments::getOwnPropertyDescriptor):
12776 (JSC::Arguments::put):
12777 (JSC::Arguments::deleteProperty):
12778 * runtime/Arguments.h:
12779 (JSC::Arguments::Arguments):
12780 * runtime/CommonIdentifiers.cpp:
12781 (JSC::CommonIdentifiers::CommonIdentifiers):
12782 * runtime/CommonIdentifiers.h:
12783 * runtime/Error.cpp:
12784 (JSC::StrictModeTypeErrorFunction::StrictModeTypeErrorFunction):
12785 (JSC::StrictModeTypeErrorFunction::constructThrowTypeError):
12786 (JSC::StrictModeTypeErrorFunction::getConstructData):
12787 (JSC::StrictModeTypeErrorFunction::callThrowTypeError):
12788 (JSC::StrictModeTypeErrorFunction::getCallData):
12789 (JSC::createTypeErrorFunction):
12791 * runtime/Executable.cpp:
12792 (JSC::EvalExecutable::EvalExecutable):
12793 (JSC::ProgramExecutable::ProgramExecutable):
12794 (JSC::FunctionExecutable::FunctionExecutable):
12795 (JSC::EvalExecutable::compileInternal):
12796 (JSC::ProgramExecutable::checkSyntax):
12797 (JSC::ProgramExecutable::compileInternal):
12798 (JSC::FunctionExecutable::compileForCallInternal):
12799 (JSC::FunctionExecutable::compileForConstructInternal):
12800 (JSC::FunctionExecutable::reparseExceptionInfo):
12801 (JSC::EvalExecutable::reparseExceptionInfo):
12802 (JSC::FunctionExecutable::fromGlobalCode):
12803 (JSC::ProgramExecutable::reparseExceptionInfo):
12804 * runtime/Executable.h:
12805 (JSC::ScriptExecutable::ScriptExecutable):
12806 (JSC::ScriptExecutable::isStrictMode):
12807 (JSC::EvalExecutable::create):
12808 (JSC::FunctionExecutable::create):
12809 * runtime/JSActivation.cpp:
12810 (JSC::JSActivation::toStrictThisObject):
12811 * runtime/JSActivation.h:
12812 * runtime/JSFunction.cpp:
12813 (JSC::createDescriptorForThrowingProperty):
12814 (JSC::JSFunction::getOwnPropertySlot):
12815 (JSC::JSFunction::getOwnPropertyDescriptor):
12816 (JSC::JSFunction::put):
12817 * runtime/JSGlobalData.cpp:
12818 (JSC::JSGlobalData::JSGlobalData):
12819 * runtime/JSGlobalData.h:
12820 * runtime/JSGlobalObject.cpp:
12821 (JSC::JSGlobalObject::reset):
12822 * runtime/JSGlobalObject.h:
12823 (JSC::JSGlobalObject::internalFunctionStructure):
12824 * runtime/JSGlobalObjectFunctions.cpp:
12825 (JSC::globalFuncEval):
12826 * runtime/JSObject.cpp:
12827 (JSC::JSObject::put):
12828 (JSC::JSObject::toStrictThisObject):
12829 (JSC::throwTypeError):
12830 * runtime/JSObject.h:
12831 (JSC::JSObject::isStrictModeFunction):
12832 (JSC::JSObject::putDirectInternal):
12833 (JSC::JSObject::putDirect):
12834 (JSC::JSValue::putDirect):
12835 (JSC::JSValue::toStrictThisObject):
12836 * runtime/JSStaticScopeObject.cpp:
12837 (JSC::JSStaticScopeObject::toStrictThisObject):
12838 * runtime/JSStaticScopeObject.h:
12839 * runtime/JSValue.h:
12840 * runtime/JSZombie.h:
12841 (JSC::JSZombie::toStrictThisObject):
12842 * runtime/PutPropertySlot.h:
12843 (JSC::PutPropertySlot::PutPropertySlot):
12844 (JSC::PutPropertySlot::isStrictMode):
12845 * runtime/StrictEvalActivation.cpp: Added.
12846 (JSC::StrictEvalActivation::StrictEvalActivation):
12847 (JSC::StrictEvalActivation::deleteProperty):
12848 (JSC::StrictEvalActivation::toThisObject):
12849 (JSC::StrictEvalActivation::toStrictThisObject):
12850 * runtime/StrictEvalActivation.h: Added.
12852 2010-10-10 Patrick Gansterer <paroga@webkit.org>
12856 Windows build fix after r69472.
12858 * wtf/text/StringHash.h:
12859 (WTF::CaseFoldingHash::hash):
12861 2010-10-10 Patrick Gansterer <paroga@webkit.org>
12863 Reviewed by Adam Barth.
12865 Use WTF::StringHasher in WTF::CaseFoldingHash
12866 https://bugs.webkit.org/show_bug.cgi?id=46523
12868 * wtf/text/StringHash.h:
12869 (WTF::CaseFoldingHash::foldCase):
12870 (WTF::CaseFoldingHash::hash):
12872 2010-10-09 Pratik Solanki <psolanki@apple.com>
12874 Reviewed by Xan Lopez.
12876 https://bugs.webkit.org/show_bug.cgi?id=47445
12877 Remove unused function WTFThreadData::initializeIdentifierTable()
12879 * wtf/WTFThreadData.h:
12881 2010-10-08 Michael Saboff <msaboff@apple.com>
12883 Reviewed by Darin Adler.
12885 Added check to start of subexpression being positive before using
12886 subexpression in replacement.
12887 https://bugs.webkit.org/show_bug.cgi?id=47324
12889 * runtime/StringPrototype.cpp:
12890 (JSC::substituteBackreferencesSlow):
12892 2010-10-08 Chris Evans <cevans@google.com>
12894 Reviewed by David Levin.
12896 https://bugs.webkit.org/show_bug.cgi?id=47393
12898 Use unsigned consistently to check for max StringImpl length.
12899 Add a few integer overflow checks.
12900 Uses the existing paradigm of CRASH() when we can't reasonably handle a crazily large request.
12902 * wtf/text/WTFString.cpp:
12903 * wtf/text/StringImpl.h:
12904 * wtf/text/StringImpl.cpp:
12905 Better use of size_t vs. unsigned; check for integer overflows.
12907 2010-10-07 David Goodwin <david_goodwin@apple.com>
12909 Reviewed by Oliver Hunt.
12911 ARM JIT generates undefined operations due to partially uninitialized ShiftTypeAndAmount
12912 https://bugs.webkit.org/show_bug.cgi?id=47356
12914 * assembler/ARMv7Assembler.h:
12916 2010-10-06 Chris Evans <cevans@google.com>
12918 Reviewed by David Levin.
12920 https://bugs.webkit.org/show_bug.cgi?id=47248
12922 Use size_t consistently in CString, to prevent theoretical trouble
12923 with > 4GB strings on 64-bit platforms.
12925 * wtf/text/CString.h:
12926 * wtf/text/CString.cpp:
12927 Use size_t for string lengths.
12929 (WTF::expectMD5): use suitable format string + cast for size_t.
12930 * JavaScriptCore.exp:
12931 Update symbol name.
12933 2010-10-06 Anders Carlsson <andersca@apple.com>
12935 Reviewed by Sam Weinig.
12937 Start cleaning up Arguments.h
12938 https://bugs.webkit.org/show_bug.cgi?id=47304
12940 * wtf/TypeTraits.h:
12941 * wtf/TypeTraits.cpp:
12942 Add RemoveReference type trait.
12944 2010-10-06 Rafael Antognolli <antognolli@profusion.mobi>
12946 Unreviewed build fix.
12948 [EFL] Build fix for glib support.
12949 https://bugs.webkit.org/show_bug.cgi?id=47221
12951 If compiling with GLib support enabled, we also need to link wtf against
12954 * wtf/CMakeListsEfl.txt:
12956 2010-10-05 Kwang Yul Seo <skyul@company100.net>
12958 Reviewed by Gavin Barraclough.
12960 [BREWMP] Port ExecutableAllocator::cacheFlush to enable ARM JIT
12961 https://bugs.webkit.org/show_bug.cgi?id=47117
12963 Use IMemCache1 to flush data cache and invalidate instruction cache.
12965 * jit/ExecutableAllocator.h:
12966 (JSC::ExecutableAllocator::cacheFlush):
12968 2010-10-05 Leandro Pereira <leandro@profusion.mobi>
12970 Unreviewed. Build fix.
12972 Moved "jsc" directory to "shell", so that the name does not clash with the
12973 JavaScriptCore shell in some build systems.
12974 http://webkit.org/b/47049
12976 * CMakeLists.txt: Changed reference from "jsc" to "shell".
12978 * jsc/CMakeLists.txt: Removed.
12979 * jsc/CMakeListsEfl.txt: Removed.
12980 * shell: Copied from JavaScriptCore/jsc.
12982 2010-10-05 Kwang Yul Seo <skyul@company100.net>
12984 Reviewed by Kent Tamura.
12986 [BREWMP] Use PlatformRefPtr in randomNumber
12987 https://bugs.webkit.org/show_bug.cgi?id=46989
12989 Use PlatformRefPtr to free memory automatically.
12991 * wtf/RandomNumber.cpp:
12992 (WTF::randomNumber):
12994 2010-10-05 Oliver Hunt <oliver@apple.com>
12996 Reviewed by Darin Adler.
12998 REGRESSION(r68338): JavaScript error on PowerPC only (crashes on Interpreter built for x86_64)
12999 https://bugs.webkit.org/show_bug.cgi?id=46690
13001 Use the correct register value when initialising the arguments
13002 object in the interpreter. This is covered by existing tests.
13004 * interpreter/Interpreter.cpp:
13005 (JSC::Interpreter::privateExecute):
13007 2010-10-04 David Goodwin <david_goodwin@apple.com>
13009 Reviewed by Oliver Hunt.
13011 ARMv7 JIT should take advantage of 2-byte branches to reduce code size
13012 https://bugs.webkit.org/show_bug.cgi?id=47007
13014 * assembler/ARMv7Assembler.cpp:
13015 * assembler/ARMv7Assembler.h:
13016 (JSC::ARMv7Assembler::computeJumpType):
13017 (JSC::ARMv7Assembler::link):
13018 (JSC::ARMv7Assembler::canBeJumpT2):
13019 (JSC::ARMv7Assembler::canBeJumpT4):
13020 (JSC::ARMv7Assembler::linkBX):
13021 (JSC::ARMv7Assembler::linkJumpT4):
13022 (JSC::ARMv7Assembler::linkJumpT2):
13023 (JSC::ARMv7Assembler::linkJumpAbsolute):
13025 2010-10-04 Gyuyoung Kim <gyuyoung.kim@samsung.com>
13027 Reviewed by Antonio Gomes.
13029 [EFL] Use fast malloc for WebKit EFL
13030 https://bugs.webkit.org/show_bug.cgi?id=46691
13032 Use fast malloc for WebKit EFL because the fast malloc is to allocate
13035 * wtf/CMakeListsEfl.txt:
13037 2010-10-04 Oliver Hunt <oliver@apple.com>
13039 Reviewed by Geoff Garen.
13041 Lazily create activation objects
13042 https://bugs.webkit.org/show_bug.cgi?id=47107
13044 Make it possible to lazily create the activation object
13045 for a function that needs one. This allows us to reduce
13046 the overhead of entering a function that may require
13047 an activation in some cases, but not always.
13049 This does make exception handling a little more complex as
13050 it's now necessary to verify that a callframes activation
13051 has been created, and create it if not, in all of the
13052 paths used in exception handling.
13054 We also need to add logic to check for the existence of
13055 the activation in the scoped_var opcodes, as well as
13056 op_ret, op_ret_object_or_this and op_tearoff_activation
13057 so that we can avoid creating an activation unnecesarily
13060 * bytecode/CodeBlock.cpp:
13061 (JSC::CodeBlock::dump):
13062 (JSC::CodeBlock::reparseForExceptionInfoIfNecessary):
13063 (JSC::CodeBlock::createActivation):
13064 * bytecode/CodeBlock.h:
13065 (JSC::CodeBlock::setActivationRegister):
13066 (JSC::CodeBlock::activationRegister):
13067 * bytecode/Opcode.h:
13068 * bytecompiler/BytecodeGenerator.cpp:
13069 (JSC::BytecodeGenerator::BytecodeGenerator):
13070 (JSC::BytecodeGenerator::emitNewFunctionInternal):
13071 (JSC::BytecodeGenerator::emitNewFunctionExpression):
13072 (JSC::BytecodeGenerator::createActivationIfNecessary):
13073 * bytecompiler/BytecodeGenerator.h:
13074 * interpreter/Interpreter.cpp:
13075 (JSC::Interpreter::resolveSkip):
13076 (JSC::Interpreter::resolveGlobalDynamic):
13077 (JSC::Interpreter::resolveBase):
13078 (JSC::Interpreter::unwindCallFrame):
13079 (JSC::Interpreter::throwException):
13080 (JSC::Interpreter::privateExecute):
13082 (JSC::JIT::privateCompileMainPass):
13084 * jit/JITCall32_64.cpp:
13085 (JSC::JIT::emit_op_ret):
13086 (JSC::JIT::emit_op_ret_object_or_this):
13087 * jit/JITOpcodes.cpp:
13088 (JSC::JIT::emit_op_end):
13089 (JSC::JIT::emit_op_get_scoped_var):
13090 (JSC::JIT::emit_op_put_scoped_var):
13091 (JSC::JIT::emit_op_tear_off_activation):
13092 (JSC::JIT::emit_op_ret):
13093 (JSC::JIT::emit_op_ret_object_or_this):
13094 (JSC::JIT::emit_op_create_activation):
13095 (JSC::JIT::emit_op_resolve_global_dynamic):
13096 * jit/JITOpcodes32_64.cpp:
13097 (JSC::JIT::emit_op_get_scoped_var):
13098 (JSC::JIT::emit_op_put_scoped_var):
13099 (JSC::JIT::emit_op_tear_off_activation):
13100 (JSC::JIT::emit_op_create_activation):
13101 * jit/JITStubs.cpp:
13102 (JSC::DEFINE_STUB_FUNCTION):
13104 2010-10-04 Adam Barth <abarth@webkit.org>
13106 Reviewed by Sam Weinig.
13108 Remove ENABLE_SANDBOX
13109 https://bugs.webkit.org/show_bug.cgi?id=47032
13111 * Configurations/FeatureDefines.xcconfig:
13113 2010-10-01 Pratik Solanki <psolanki@apple.com>
13115 Reviewed by Geoffrey Garen.
13116 Specify ALWAYS_INLINE at function declaration not function definition
13117 https://bugs.webkit.org/show_bug.cgi?id=46960
13119 For functions defined with ALWAYS_INLINE, add the attribute to the declaration as well.
13121 * bytecompiler/BytecodeGenerator.h:
13122 * wtf/FastMalloc.cpp:
13124 2010-10-01 Kwang Yul Seo <skyul@company100.net>
13128 [BREWMP] Change Collector BLOCK_SIZE to 64KB
13129 https://bugs.webkit.org/show_bug.cgi?id=46436
13131 Lower BLOCK_SIZE to 64KB because Brew MP runs on low end devices.
13133 * runtime/Collector.h:
13135 2010-10-01 Viatcheslav Ostapenko <ostapenko.viatcheslav@nokia.com>
13137 Reviewed by Andreas Kling.
13139 [Qt] Stack overflow on symbian platform.
13140 https://bugs.webkit.org/show_bug.cgi?id=40598
13142 Move big allocation in arrayProtoFuncToString from stack to heap.
13143 JSC::arrayProtoFuncToString function can be called recursivly and
13144 1K allocation on stack cahse stack overflow.
13145 Can be useful for other platforms with limited stack size.
13147 * runtime/ArrayPrototype.cpp:
13148 (JSC::arrayProtoFuncToString):
13150 2010-09-30 Kwang Yul Seo <skyul@company100.net>
13152 Reviewed by Kent Tamura.
13154 [BREWMP] Add a factory function which returns an instance wrapped in PlatformRefPtr.
13155 https://bugs.webkit.org/show_bug.cgi?id=46373
13157 A Brew MP instance has reference count 1 when it is created, so call adoptPlatformRef
13158 to wrap the instance in PlatformRefPtr.
13160 * wtf/brew/ShellBrew.h:
13161 (WTF::createRefPtrInstance):
13163 2010-09-30 Kwang Yul Seo <skyul@company100.net>
13165 Reviewed by Kent Tamura.
13167 [BREWMP] Port PlatformRefPtr
13168 https://bugs.webkit.org/show_bug.cgi?id=46370
13170 Implement refPlatformPtr and derefPlatformPtr to use PlatformRefPtr in Brew MP.
13172 * wtf/brew/RefPtrBrew.h: Added.
13173 (WTF::refPlatformPtr):
13174 (WTF::derefPlatformPtr):
13176 2010-09-29 Sam Weinig <sam@webkit.org>
13178 Reviewed by Darin Adler.
13180 Add additional checks to StringBuffer.
13181 <rdar://problem/7756381>
13183 * wtf/text/StringBuffer.h:
13184 (WTF::StringBuffer::StringBuffer):
13185 (WTF::StringBuffer::resize):
13187 2010-09-30 Chris Marrin <cmarrin@apple.com>
13189 Reviewed by Simon Fraser.
13191 Make 2D accelerated canvas rendering build on Mac
13192 https://bugs.webkit.org/show_bug.cgi?id=46007
13194 Added ACCELERATED_2D_CANVAS to FeatureDefines
13196 * Configurations/FeatureDefines.xcconfig:
13198 2010-09-30 Kevin Ollivier <kevino@theolliviers.com>
13200 [wx] wxMSW build fix. Make sure we copy the compiler flags and remove exception handling from
13201 the copy so as not to alter global settings.
13205 2010-09-30 Peter Varga <pvarga@inf.u-szeged.hu>
13207 Reviewed by Gavin Barraclough.
13209 The case-insensitivity backreference checking isn't working with YARR
13211 https://bugs.webkit.org/show_bug.cgi?id=46882
13213 Add ignorecase checking to the Interpreter::tryConsumeBackReference() function.
13215 * yarr/RegexInterpreter.cpp:
13216 (JSC::Yarr::Interpreter::tryConsumeBackReference):
13218 2010-09-30 Kwang Yul Seo <skyul@company100.net>
13220 Reviewed by Andreas Kling.
13222 [BREWMP] Leave initializeRandomNumberGenerator empty.
13223 https://bugs.webkit.org/show_bug.cgi?id=46851
13225 On Brew MP, AEECLSID_RANDOM initializes itself.
13227 * wtf/RandomNumberSeed.h:
13228 (WTF::initializeRandomNumberGenerator):
13230 2010-09-30 Gabor Loki <loki@webkit.org>
13232 Reviewed by Csaba Osztrogonác.
13234 Remove unnecessary cacheFlush calls from Thumb-2
13235 https://bugs.webkit.org/show_bug.cgi?id=46702
13237 * assembler/ARMv7Assembler.h:
13238 (JSC::ARMv7Assembler::relinkCall):
13239 (JSC::ARMv7Assembler::repatchInt32):
13240 (JSC::ARMv7Assembler::repatchPointer):
13242 2010-09-29 Patrick Gansterer <paroga@webkit.org>
13246 Next try to fix cygwin build.
13248 * wtf/Assertions.cpp:
13250 2010-09-29 Patrick Gansterer <paroga@webkit.org>
13254 Build fix for cygwin #2. It's OS(WINDOWS), not OS(WIN).
13256 * wtf/Assertions.cpp:
13258 2010-09-29 Patrick Gansterer <paroga@webkit.org>
13262 Build fix for cygwin.
13264 * wtf/Assertions.cpp:
13266 2010-09-29 Patrick Gansterer <paroga@webkit.org>
13268 Reviewed by Andreas Kling.
13270 [WINCE] Buildfix for Assertions.cpp after r68511.
13271 https://bugs.webkit.org/show_bug.cgi?id=46807
13273 Some, but not all WinCE environments have support for IsDebuggerPresent().
13274 Add HAVE(ISDEBUGGERPRESENT) to make this a build option.
13275 HAVE(ISDEBUGGERPRESENT) will be 1 for all OS(WIN) by default.
13277 * wtf/Assertions.cpp:
13280 2010-09-29 Peter Varga <pvarga@inf.u-szeged.hu>
13282 Reviewed by Csaba Osztrogonác.
13284 JSC compile fails on 32bit platform when Regexp Tracing is enabled
13285 https://bugs.webkit.org/show_bug.cgi?id=46713
13287 Fix the cast of pointer in regexp tracing to avoid the warning.
13289 * runtime/RegExp.cpp:
13290 (JSC::RegExp::match):
13292 2010-09-28 Anders Carlsson <andersca@apple.com>
13294 Reviewed by Sam Weinig.
13296 Begin hooking up painting in the plug-in process
13297 https://bugs.webkit.org/show_bug.cgi?id=46766
13299 * JavaScriptCore.exp:
13300 Add tryFastRealloc, used by WebKit2.
13302 2010-09-28 Philippe Normand <pnormand@igalia.com>
13304 Reviewed by Martin Robinson.
13306 Guard GRefPtr/GOwnPtr files with ENABLE(GLIB_SUPPORT)
13307 https://bugs.webkit.org/show_bug.cgi?id=46721
13309 Enable GOwnPtr/GRefPtr build only if glib support has been
13310 explicitly enabled using the WTF_ENABLE_GLIB_SUPPORT macro.
13312 * wtf/gobject/GOwnPtr.cpp:
13313 * wtf/gobject/GOwnPtr.h:
13314 * wtf/gobject/GRefPtr.cpp:
13315 * wtf/gobject/GRefPtr.h:
13317 2010-09-28 İsmail Dönmez <ismail@namtrac.org>
13319 Reviewed by Andreas Kling.
13321 Test for WINCE instead of WINCEBASIC, compiler always defines WINCE.
13322 Remove reference to unexisting path JavaScriptCore/os-wince.
13324 * JavaScriptCore.pri:
13325 * wtf/Assertions.cpp:
13327 2010-09-27 Michael Saboff <msaboff@apple.com>
13329 Reviewed by Geoffrey Garen.
13331 Changed the initialization of JSArray objects to have space for
13332 3 elements for the constructor that takes a ArgList argument.
13333 This improves v8-deltablue performance by about 2.8% by reducing
13334 the number of realloc() calls.
13335 https://bugs.webkit.org/show_bug.cgi?id=46664
13337 * runtime/JSArray.cpp:
13338 (JSC::JSArray::JSArray):
13340 2010-09-27 Gavin Barraclough <barraclough@apple.com>
13342 Reviewed by Darin Adler.
13344 Bug 46680 - Inlining string concatenation can regress interpreter performance
13345 <rdar://problem/8362752> REGRESSION: ~6.4% sunspider regression in interpreter
13346 Do not inline calls to string concatenation in the interpret loop.
13348 * interpreter/Interpreter.cpp:
13349 (JSC::concatenateStrings):
13350 (JSC::Interpreter::privateExecute):
13352 2010-09-27 Anders Carlsson <andersca@apple.com>
13356 * runtime/JSCell.h:
13358 2010-09-27 Anders Carlsson <andersca@apple.com>
13360 Reviewed by Adam Roben.
13362 Try to fix Windows build.
13364 * runtime/JSCell.h:
13365 (JSC::MSVCBugWorkaround::MSVCBugWorkaround):
13366 (JSC::MSVCBugWorkaround::~MSVCBugWorkaround):
13368 2010-09-27 Erik Arvidsson <arv@chromium.org>
13370 Reviewed by Darin Adler.
13372 Add operator == for AtomicString and Vector<Uchar>
13373 https://bugs.webkit.org/show_bug.cgi?id=46509
13375 * JavaScriptCore.exp:
13376 * wtf/text/AtomicString.cpp:
13378 * wtf/text/AtomicString.h:
13382 2010-09-27 Anders Carlsson <andersca@apple.com>
13384 Try to fix the Windows build.
13386 * wtf/Noncopyable.h:
13388 2010-09-26 Anders Carlsson <andersca@apple.com>
13390 Reviewed by Alexey Proskuryakov and Adam Barth.
13392 Add WTF_MAKE_NONCOPYABLE macro
13393 https://bugs.webkit.org/show_bug.cgi?id=46589
13395 Going forward, we'd like to get rid of the Noncopyable and FastAllocBase classes. The
13396 reason for this is that the Itanium C++ ABI states that no empty classes of the same type
13397 can be laid out at the same offset in the class. This can result in objects getting larger
13398 which leads to memory regressions. (One example of this is the String class which grew by
13399 sizeof(void*) when both its base class and its first member variable inherited indirectly
13400 from FastAllocBase).
13402 * wtf/Noncopyable.h:
13403 Add a WTF_MAKE_NONCOPYABLE macro and get rid of NoncopyableCustomAllocated.
13405 * runtime/JSCell.h:
13406 * wtf/RefCounted.h:
13407 Don't inherit from NoncopyableCustomAllocated. Instead, use WTF_MAKE_NONCOPYABLE.
13409 2010-09-27 Philippe Normand <pnormand@igalia.com>
13411 Reviewed by Martin Robinson.
13413 [GTK] use ENABLE(GLIB_SUPPORT)
13414 https://bugs.webkit.org/show_bug.cgi?id=46630
13416 * wtf/Platform.h: Include GTypedefs.h only if glib support
13417 is explicitly enabled.
13419 2010-09-25 Holger Hans Peter Freyther <holger@moiji-mobile.com>
13421 Reviewed by Adam Barth.
13423 jsc: Document the strcat opcode.
13424 https://bugs.webkit.org/show_bug.cgi?id=46571
13426 * interpreter/Interpreter.cpp:
13427 (JSC::Interpreter::privateExecute):
13429 2010-09-21 Holger Hans Peter Freyther <holger@moiji-mobile.com>
13431 Reviewed by Adam Barth.
13433 make-bytecode-docs.pl: Add a comment to the generated HTML
13434 https://bugs.webkit.org/show_bug.cgi?id=46570
13436 Generate an HTML Comment that this file was generated from
13437 Interpreter.cpp with the make-bytecode-docs.pl script.
13439 * docs/make-bytecode-docs.pl:
13441 2010-09-27 Patrick Gansterer <paroga@webkit.org>
13443 Reviewed by Adam Barth.
13445 Remove WTF::stringHash functions
13446 https://bugs.webkit.org/show_bug.cgi?id=46520
13448 Since r68289 the stringHash functions are only wrappers around StringHasher::createHash.
13449 So use StringHasher::createHash directly and remove stringHash.
13451 * wtf/StringHashFunctions.h:
13452 * wtf/text/StringImpl.h:
13453 (WTF::StringImpl::computeHash): Use WTF::StringHasher::createHash directly.
13455 2010-09-26 Patrick Gansterer <paroga@webkit.org>
13457 Reviewed by Adam Barth.
13459 Add WTF::StringHasher::createBlobHash
13460 https://bugs.webkit.org/show_bug.cgi?id=46514
13462 Add this function for hashing FormElementKey and QualifiedNameComponents.
13464 * wtf/StringHashFunctions.h:
13465 (WTF::StringHasher::createBlobHash):
13467 2010-09-26 Patrick Gansterer <paroga@webkit.org>
13469 Reviewed by Adam Barth.
13471 REGRESSION (r68289): Assertion failure in StringHasher::addCharacter() (ch != invalidCharacterValue)
13472 running websocket/tests/bad-sub-protocol-non-ascii.html
13473 https://bugs.webkit.org/show_bug.cgi?id=46553
13475 Because we use StringHasher for binary data too, so the check for invalid unicode input is wrong.
13476 Add an additional member variable to indicate if we have an pending character
13477 instead of only using an invalid character for this purpose.
13479 * wtf/StringHashFunctions.h:
13480 (WTF::StringHasher::StringHasher):
13481 (WTF::StringHasher::addCharacters):
13482 (WTF::StringHasher::addCharacter):
13483 (WTF::StringHasher::hash):
13485 2010-09-26 Mark Hahnenberg <mhahnenb@gmail.com>
13487 Reviewed by Oliver Hunt.
13489 valueOf called in wrong order in atan2 and date constructors.
13490 https://bugs.webkit.org/show_bug.cgi?id=26978
13492 Fixed the bug where the arguments to atan2 were being evaluated
13495 * runtime/MathObject.cpp:
13496 (JSC::mathProtoFuncATan2):
13498 2010-09-26 Mark Hahnenberg <mhahnenb@gmail.com>
13500 Reviewed by Oliver Hunt.
13502 valueOf called in wrong order in atan2 and date constructors.
13503 https://bugs.webkit.org/show_bug.cgi?id=26978
13505 Fixed the issue where the parameters to the Date constructor
13506 were being evaluated to numbers more than once.
13508 * runtime/DateConstructor.cpp:
13509 (JSC::constructDate):
13512 2010-09-25 Oliver Hunt <oliver@apple.com>
13516 Relearning the lesson that last minute changes are bad.
13518 * bytecode/CodeBlock.cpp:
13519 (JSC::CodeBlock::dump):
13520 * bytecompiler/BytecodeGenerator.cpp:
13521 (JSC::BytecodeGenerator::emitGetArgumentsLength):
13522 * jit/JITOpcodes.cpp:
13523 (JSC::JIT::emitSlow_op_get_argument_by_val):
13525 2010-09-25 Oliver Hunt <oliver@apple.com>
13527 Reviewed by Cameron Zwarich.
13529 Avoid constructing arguments object when accessing length and index properties
13530 https://bugs.webkit.org/show_bug.cgi?id=46572
13532 Add opcodes to read argument length and properties, and then implement them.
13533 Much like other lazy opcodes these opcodes take a fast path when the arguments
13534 object has not been instantiated, and fall back on generic access mechanisms
13535 if they are acting on an instantiated object.
13537 3% win on v8-earleyboyer, no change elsewhere.
13539 * bytecode/CodeBlock.cpp:
13540 (JSC::CodeBlock::dump):
13541 * bytecode/Opcode.h:
13542 * bytecompiler/BytecodeGenerator.cpp:
13543 (JSC::BytecodeGenerator::emitGetArgumentsLength):
13544 (JSC::BytecodeGenerator::emitGetArgumentByVal):
13545 * bytecompiler/BytecodeGenerator.h:
13546 * bytecompiler/NodesCodegen.cpp:
13547 (JSC::BracketAccessorNode::emitBytecode):
13548 (JSC::DotAccessorNode::emitBytecode):
13549 * interpreter/Interpreter.cpp:
13550 (JSC::Interpreter::privateExecute):
13552 (JSC::JIT::privateCompileMainPass):
13553 (JSC::JIT::privateCompileSlowCases):
13555 * jit/JITOpcodes.cpp:
13556 (JSC::JIT::emit_op_get_arguments_length):
13557 (JSC::JIT::emitSlow_op_get_arguments_length):
13558 (JSC::JIT::emit_op_get_argument_by_val):
13559 (JSC::JIT::emitSlow_op_get_argument_by_val):
13560 * jit/JITOpcodes32_64.cpp:
13561 (JSC::JIT::emit_op_get_arguments_length):
13562 (JSC::JIT::emitSlow_op_get_arguments_length):
13563 (JSC::JIT::emit_op_get_argument_by_val):
13564 (JSC::JIT::emitSlow_op_get_argument_by_val):
13566 2010-09-25 Patrick Gansterer <paroga@webkit.org>
13570 Fix typo in StringHasher class
13571 https://bugs.webkit.org/show_bug.cgi?id=45970
13573 * wtf/StringHashFunctions.h:
13574 (WTF::StringHasher::createHash):
13576 2010-09-24 Patrick Gansterer <paroga@paroga.com>
13578 Reviewed by Gavin Barraclough.
13580 Add WTF::StringHasher
13581 https://bugs.webkit.org/show_bug.cgi?id=45970
13583 StringHasher is a class for calculation stringHash out of character string.
13584 This class will unify the different usages of the same algorithm.
13586 * wtf/StringHashFunctions.h:
13587 (WTF::StringHasher::StringHasher):
13588 (WTF::StringHasher::addCharacters):
13589 (WTF::StringHasher::addCharacter):
13590 (WTF::StringHasher::hash):
13591 (WTF::StringHasher::createHash):
13592 (WTF::StringHasher::defaultCoverter):
13593 (WTF::StringHasher::addCharactersToHash):
13596 2010-09-24 Oliver Hunt <oliver@apple.com>
13598 Reviewed by Geoffrey Garen.
13600 Variable declarations inside a catch scope don't get propogated to the parent scope
13601 https://bugs.webkit.org/show_bug.cgi?id=46501
13603 Add logic to make variable declaration look for a scope for the
13604 new variable. This allows us to create a scope (eg. for catch)
13605 and then seal it, so that additional variable declarations
13606 contained are propogated to the correct target. Strangely this
13607 comes out as a performance win, but I think it's mostly cache
13610 * parser/JSParser.cpp:
13611 (JSC::JSParser::Scope::Scope):
13612 (JSC::JSParser::Scope::preventNewDecls):
13613 (JSC::JSParser::Scope::allowsNewDecls):
13614 (JSC::JSParser::declareVariable):
13615 (JSC::JSParser::parseVarDeclarationList):
13616 (JSC::JSParser::parseConstDeclarationList):
13617 (JSC::JSParser::parseTryStatement):
13618 (JSC::JSParser::parseFormalParameters):
13619 (JSC::JSParser::parseFunctionDeclaration):
13621 2010-09-24 İsmail Dönmez <ismail@namtrac.org>
13623 Reviewed by Csaba Osztrogonác.
13625 Add a Windows compatible inttypes.h header to fix WinCE build.
13626 https://bugs.webkit.org/show_bug.cgi?id=46463
13628 * os-win32/inttypes.h: Added.
13630 2010-09-24 Oliver Hunt <oliver@apple.com>
13632 Reviewed by Gavin Barraclough.
13634 REGRESSION(r68223): It broke 2-3 tests on bots (Requested by Ossy on #webkit).
13635 https://bugs.webkit.org/show_bug.cgi?id=46448
13637 Roll this back in, with additional logic to prevent us from delaying construction
13638 of functions named "arguments"
13640 * bytecode/CodeBlock.cpp:
13641 (JSC::CodeBlock::dump):
13642 * bytecode/Opcode.h:
13643 * bytecompiler/BytecodeGenerator.cpp:
13644 (JSC::BytecodeGenerator::BytecodeGenerator):
13645 (JSC::BytecodeGenerator::emitInitLazyRegister):
13646 (JSC::BytecodeGenerator::registerFor):
13647 (JSC::BytecodeGenerator::createLazyRegisterIfNecessary):
13648 (JSC::BytecodeGenerator::constRegisterFor):
13649 (JSC::BytecodeGenerator::emitNewFunction):
13650 (JSC::BytecodeGenerator::emitLazyNewFunction):
13651 (JSC::BytecodeGenerator::emitNewFunctionInternal):
13652 * bytecompiler/BytecodeGenerator.h:
13653 * interpreter/Interpreter.cpp:
13654 (JSC::Interpreter::privateExecute):
13656 (JSC::JIT::privateCompileMainPass):
13658 * jit/JITOpcodes.cpp:
13659 (JSC::JIT::emit_op_init_lazy_reg):
13660 (JSC::JIT::emit_op_new_func):
13661 * jit/JITOpcodes32_64.cpp:
13662 (JSC::JIT::emit_op_init_lazy_reg):
13664 (JSC::ScopeNode::needsActivationForMoreThanVariables):
13666 2010-09-23 Sheriff Bot <webkit.review.bot@gmail.com>
13668 Unreviewed, rolling out r68223.
13669 http://trac.webkit.org/changeset/68223
13670 https://bugs.webkit.org/show_bug.cgi?id=46448
13672 It broke 2-3 tests on bots (Requested by Ossy on #webkit).
13674 * bytecode/CodeBlock.cpp:
13675 (JSC::CodeBlock::dump):
13676 * bytecode/Opcode.h:
13677 * bytecompiler/BytecodeGenerator.cpp:
13678 (JSC::BytecodeGenerator::BytecodeGenerator):
13679 (JSC::BytecodeGenerator::registerFor):
13680 (JSC::BytecodeGenerator::constRegisterFor):
13681 (JSC::BytecodeGenerator::emitNewFunction):
13682 * bytecompiler/BytecodeGenerator.h:
13683 * interpreter/Interpreter.cpp:
13684 (JSC::Interpreter::privateExecute):
13686 (JSC::JIT::privateCompileMainPass):
13688 * jit/JITOpcodes.cpp:
13689 (JSC::JIT::emit_op_new_func):
13690 (JSC::JIT::emit_op_init_arguments):
13691 * jit/JITOpcodes32_64.cpp:
13692 (JSC::JIT::emit_op_new_func):
13693 (JSC::JIT::emit_op_init_arguments):
13696 2010-09-23 Oliver Hunt <oliver@apple.com>
13698 Reviewed by Geoffrey Garen.
13700 Delay construction of functions that aren't captured
13701 https://bugs.webkit.org/show_bug.cgi?id=46433
13703 If a function isn't captured by an activation there's no
13704 way it can be accessed indirectly, so we can delay the
13705 construction until it's used (similar to what we do with
13706 arguments). We rename the existing op_init_arguments to
13707 op_init_lazy_reg and removed its implicit handling of
13708 the anonymous argument register, and make op_new_function
13709 take a parameter to indicate whether it should null check
13710 the target slot before creating the function object.
13712 * bytecode/CodeBlock.cpp:
13713 (JSC::CodeBlock::dump):
13714 * bytecode/Opcode.h:
13715 * bytecompiler/BytecodeGenerator.cpp:
13716 (JSC::BytecodeGenerator::BytecodeGenerator):
13717 (JSC::BytecodeGenerator::emitInitLazyRegister):
13718 (JSC::BytecodeGenerator::registerFor):
13719 (JSC::BytecodeGenerator::createLazyRegisterIfNecessary):
13720 (JSC::BytecodeGenerator::constRegisterFor):
13721 (JSC::BytecodeGenerator::emitNewFunction):
13722 (JSC::BytecodeGenerator::emitLazyNewFunction):
13723 (JSC::BytecodeGenerator::emitNewFunctionInternal):
13724 * bytecompiler/BytecodeGenerator.h:
13725 * interpreter/Interpreter.cpp:
13726 (JSC::Interpreter::privateExecute):
13728 (JSC::JIT::privateCompileMainPass):
13730 * jit/JITOpcodes.cpp:
13731 (JSC::JIT::emit_op_init_lazy_reg):
13732 (JSC::JIT::emit_op_new_func):
13733 * jit/JITOpcodes32_64.cpp:
13734 (JSC::JIT::emit_op_init_lazy_reg):
13736 (JSC::ScopeNode::needsActivationForMoreThanVariables):
13738 2010-09-23 David Kilzer <ddkilzer@apple.com>
13740 <rdar://problem/8460731> ~9.9% speedup when compiling interpreter with llvm-gcc-4.2
13741 https://bugs.webkit.org/show_bug.cgi?id=46423
13743 Reviewed by Oliver Hunt.
13745 * interpreter/Interpreter.cpp:
13746 (JSC::Interpreter::privateExecute): Disable the gcc computed
13747 goto hacks added in r55564 when compiling with llvm-gcc-4.2.
13749 2010-09-23 Lucas De Marchi <lucas.demarchi@profusion.mobi>
13751 Reviewed by Darin Adler.
13753 Fix usage of enum as if it was a define
13754 https://bugs.webkit.org/show_bug.cgi?id=46355
13756 pthread.h defines PTHREAD_MUTEX_DEFAULT and PTHREAD_MUTEX_NORMAL as an
13757 enum. Hence, it cannot be used by the preprocessor which always
13758 evaluates that condition as true. This was giving a warning when
13759 compiling with gcc and "-Wundef" flag.
13761 The second path, when PTHREAD_MUTEX_DEFAULT is not the same of
13762 PTHREAD_MUTEX_NORMAL, is not slow. So, let's eliminate the first path
13763 and get rid of that #if.
13765 * wtf/ThreadingPthreads.cpp: Always call pthread_mutexattr_init() to
13766 set mutex type to PTHREAD_MUTEX_NORMAL.
13767 (WTF::Mutex::Mutex):
13769 2010-09-23 Michael Saboff <msaboff@apple.com>
13771 Reviewed by Geoffrey Garen.
13773 Removed extraneous truncation of ovector on entry and error exit.
13774 Changed the initialization to -1 of vector to only initialize
13775 the start indecies, which is sufficient for the pattern/subpatterns.
13776 Changed the JIT code to not clear the end index for subpatterns
13777 as it isn't needed. These changes are worth ~2.7% on v8-regexp.
13778 https://bugs.webkit.org/show_bug.cgi?id=46404
13780 * runtime/RegExp.cpp:
13781 (JSC::RegExp::match):
13782 * yarr/RegexJIT.cpp:
13783 (JSC::Yarr::RegexGenerator::generateParenthesesSingle):
13785 2010-09-22 Oliver Hunt <oliver@apple.com>
13787 Reviewed by Geoff Garen.
13789 Only copy captured variables into activation
13790 https://bugs.webkit.org/show_bug.cgi?id=46330
13792 We now track free variable information which means that
13793 we no longer need to copy every variable defined in a
13794 function. With this patch activations only retain those
13795 variables needed for correctness. In order to interact
13796 safely with the inspector this means that JSActivation
13797 now provides its own lookup functions so it can avoid
13798 trying to read or write to variables that have been
13801 * bytecode/CodeBlock.h:
13802 * bytecompiler/BytecodeGenerator.cpp:
13803 (JSC::BytecodeGenerator::BytecodeGenerator):
13805 (JSC::ScopeNode::capturedVariableCount):
13806 (JSC::ScopeNode::captures):
13807 * runtime/Arguments.h:
13808 (JSC::JSActivation::copyRegisters):
13809 * runtime/Executable.cpp:
13810 (JSC::FunctionExecutable::FunctionExecutable):
13811 (JSC::FunctionExecutable::compileForCallInternal):
13812 (JSC::FunctionExecutable::compileForConstructInternal):
13813 * runtime/Executable.h:
13814 (JSC::FunctionExecutable::capturedVariableCount):
13815 * runtime/JSActivation.cpp:
13816 (JSC::JSActivation::markChildren):
13817 (JSC::JSActivation::symbolTableGet):
13818 (JSC::JSActivation::symbolTablePut):
13819 (JSC::JSActivation::getOwnPropertyNames):
13820 (JSC::JSActivation::symbolTablePutWithAttributes):
13821 * runtime/JSActivation.h:
13823 2010-09-23 Ismail Donmez <ismail@namtrac.org>
13825 Reviewed by Andreas Kling.
13827 Fix jsc.exe build for Windows CE
13829 * jsc.pro: Add mmtimer.lib for Windows CE.
13831 2010-09-23 Ismail Donmez <ismail@namtrac.org>
13835 JIT should be disabled on Windows CE. Broken in r64176.
13839 2010-09-23 Peter Varga <pvarga@inf.u-szeged.hu>
13841 Reviewed by Gavin Barraclough.
13843 Reduce the number of BOL checks in YARR Interpreter
13844 https://bugs.webkit.org/show_bug.cgi?id=46260
13846 Extend the YARR Interpreter with an optimization which reduces the number of
13847 BOL assertion checks. If a "TypeBodyAlternative" byteTerm is followed by a
13848 "TypeAssertionBOL" byteTerm it will be checked just one time.
13850 * yarr/RegexInterpreter.cpp:
13851 (JSC::Yarr::Interpreter::matchDisjunction):
13852 (JSC::Yarr::ByteCompiler::compile):
13853 (JSC::Yarr::ByteCompiler::regexBegin):
13854 (JSC::Yarr::ByteCompiler::alternativeBodyDisjunction):
13855 (JSC::Yarr::ByteCompiler::emitDisjunction):
13856 * yarr/RegexInterpreter.h:
13857 (JSC::Yarr::ByteTerm::BodyAlternativeBegin):
13858 (JSC::Yarr::ByteTerm::BodyAlternativeDisjunction):
13859 (JSC::Yarr::ByteTerm::BodyAlternativeEnd):
13860 (JSC::Yarr::ByteTerm::AlternativeBegin):
13861 (JSC::Yarr::ByteTerm::AlternativeDisjunction):
13862 (JSC::Yarr::ByteTerm::AlternativeEnd):
13864 2010-09-22 Michael Saboff <msaboff@apple.com>
13866 Reviewed by Gavin Barraclough.
13868 Fixed the cross over from alternatives executed once and
13869 those that loop. This fixed the problem where the index
13870 was getting messed up for looping alternatives causing an
13872 https://bugs.webkit.org/show_bug.cgi?id=46189
13874 * yarr/RegexJIT.cpp:
13875 (JSC::Yarr::RegexGenerator::generateDisjunction):
13877 2010-09-22 Steve Falkenburg <sfalken@apple.com>
13879 Rubber stamped by Jon Honeycutt.
13881 Allow jsc.exe to be run against unversioned ICU.
13883 * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
13885 2010-09-22 Kwang Yul Seo <skyul@company100.net>
13887 Reviewed by Laszlo Gombos.
13889 Use "typedef wchar_t JSChar" when compiled with RVCT
13890 https://bugs.webkit.org/show_bug.cgi?id=40651
13892 Use wchar_t for JSChar and UChar when compiled with RVCT.
13893 Linux is the exception for this rule.
13895 * API/JSStringRef.h:
13896 * wtf/unicode/qt4/UnicodeQt4.h:
13898 2010-09-22 Oliver Hunt <oliver@apple.com>
13900 Reviewed by Gavin Barraclough.
13902 [INTERPRETER] Two tests fail with SputnikError: #1.1: if argArray is neither an array nor an arguments object (see 10.1.8), a TypeError exception is thrown
13903 https://bugs.webkit.org/show_bug.cgi?id=44245
13905 Remove incorrect code from op_load_varargs in the interpreter.
13907 * interpreter/Interpreter.cpp:
13908 (JSC::Interpreter::privateExecute):
13910 2010-09-22 Oliver Hunt <oliver@apple.com>
13912 Reviewed by Gavin Barraclough.
13914 [JIT] fast/js/sputnik/Conformance/15_Native_Objects/15.3_Function/15.3.5/S15.3.5.3_A2_T6.html fails
13915 https://bugs.webkit.org/show_bug.cgi?id=44246
13917 JIT code generated for instanceof was not checking to ensure that the prototype property was
13918 an object, this patch ensures that it does.
13920 * jit/JITOpcodes.cpp:
13921 (JSC::JIT::emit_op_instanceof):
13922 (JSC::JIT::emitSlow_op_instanceof):
13923 * jit/JITOpcodes32_64.cpp:
13924 (JSC::JIT::emit_op_instanceof):
13925 (JSC::JIT::emitSlow_op_instanceof):
13927 2010-09-22 Patrick Gansterer <paroga@webkit.org>
13929 Reviewed by Darin Adler.
13931 Inline UTF8SequenceLength
13932 https://bugs.webkit.org/show_bug.cgi?id=45589
13934 * wtf/unicode/UTF8.cpp:
13935 (WTF::Unicode::convertUTF8ToUTF16): Use inline version of UTF8SequenceLength to improve performance.
13937 2010-09-21 Oliver Hunt <oliver@apple.com>
13939 RS=Gavin Barraclough.
13941 Fix codeblock dumping
13943 * bytecode/CodeBlock.cpp:
13944 (JSC::CodeBlock::dump):
13945 * runtime/Executable.h:
13946 (JSC::ScriptExecutable::ScriptExecutable):
13948 2010-09-21 Oliver Hunt <oliver@apple.com>
13950 Reviewed by Geoffrey Garen.
13952 Speed up function.apply(..., arguments)
13953 https://bugs.webkit.org/show_bug.cgi?id=46207
13955 Add code to do argument copying inline in the case
13956 where we're using Function.apply to forward our arguments
13960 (JSC::JIT::privateCompileSlowCases):
13961 Splitted op_load_varargs into fast and slow paths, so add the call
13962 to the slow path generator.
13964 * jit/JITCall32_64.cpp:
13965 Remove 32bit specific emit_op_load_varargs as the logic is the
13966 same for all value representations
13967 * jit/JITOpcodes.cpp:
13968 (JSC::JIT::emit_op_load_varargs):
13969 Copy arguments inline
13970 (JSC::JIT::emitSlow_op_load_varargs):
13972 2010-09-21 Geoffrey Garen <ggaren@apple.com>
13974 Reviewed by Oliver Hunt.
13976 <rdar://problem/8363003> REGRESSION: ~1.4% sunspider regression in
13977 interpreter due to 54724 and 54596
13979 Fixed a typo (using "UNLIKELY" instead of "LIKELY").
13981 * wtf/PassRefPtr.h:
13982 (WTF::refIfNotNull):
13983 (WTF::derefIfNotNull): It is likely that m_ptr != 0 because most RefPtrs
13984 hold real data. Also, in cases where they do not hold real data, the
13985 compiler usually sees a call to release() right before the call to the
13986 destructor, so it can probably optimize out the test completely.
13988 2010-09-21 Fridrich Strba <fridrich.strba@bluewin.ch>
13990 Reviewed by Martin Robinson.
13992 Build issues with Windows versions of the GTK+ port
13993 https://bugs.webkit.org/show_bug.cgi?id=45844
13995 Link with winmm.dll when necessary and specify the executable extension
13996 explicitely so that the Programs/jsc-@WEBKITGTK_API_MAJOR_VERSION@
13997 rule actually works.
13999 Don't try to build the ThreadSpecificWin.cpp since GTK+ port uses
14000 a section in ThreadSpecific.cpp
14004 2010-09-21 Martin Robinson <mrobinson@igalia.com>
14006 Reviewed by Xan Lopez.
14008 [GTK] 'make dist' should be fixed in preparation for the next release
14009 https://bugs.webkit.org/show_bug.cgi?id=46129
14011 * GNUmakefile.am: Update the sources list to include missing headers.
14013 2010-09-21 Dave Tapuska <dtapuska@rim.com>
14015 Reviewed by Csaba Osztrogonác.
14017 https://bugs.webkit.org/show_bug.cgi?id=45673
14019 r65596 caused ENABLE_PROFILER_REFERENCE_OFFSET to not be
14020 8 byte aligned. A non 8 byte divisible value for this will
14021 cause the sp to become non 8 byte aligned.
14023 Verify and correct offset values that r65596 effected that
14026 * jit/JITStubs.cpp:
14029 2010-09-21 Xan Lopez <xlopez@igalia.com>
14031 Reviewed by Martin Robinson.
14033 Fix Opcode stats compilation
14034 https://bugs.webkit.org/show_bug.cgi?id=46079
14036 The FixedArray API had changed, and <stdio.h> was not included for
14039 * bytecode/Opcode.cpp:
14040 (JSC::OpcodeStats::~OpcodeStats):
14042 2010-09-20 Michael Saboff <msaboff@apple.com>
14044 Reviewed by Gavin Barraclough.
14046 Fixed detection of alternative smaller than the first alternative
14047 to only check looping alternatives.
14048 https://bugs.webkit.org/show_bug.cgi?id=46049
14050 * yarr/RegexJIT.cpp:
14051 (JSC::Yarr::RegexGenerator::generateDisjunction):
14053 2010-09-20 Peter Varga <pvarga@inf.u-szeged.hu>
14055 Reviewed by Geoffrey Garen.
14057 REGRESSION(67790): jsc tests are failed with YARR interpreter
14058 https://bugs.webkit.org/show_bug.cgi?id=46083
14060 Fix the initializing of the lastSubpatternId member of
14063 * yarr/RegexCompiler.cpp:
14064 (JSC::Yarr::RegexPatternConstructor::atomParenthesesEnd):
14066 2010-09-20 Gavin Barraclough <barraclough@apple.com>
14068 Reviewed by Oliver Hunt.
14070 Bug 46077 - ASSERT failure in YARR JIT
14072 We will currently attempt to loop if there are multiple alternatives, they are all
14073 BOL predicated, and the last alternative is longer then the first - however if all
14074 alternatives are BOL predicated the head of loop label will not have been set, and
14075 we'll try to link a jump to an undefined label. Stop doing so.
14077 * yarr/RegexJIT.cpp:
14078 (JSC::Yarr::RegexGenerator::generateDisjunction):
14080 2010-09-20 Adam Roben <aroben@apple.com>
14082 Export RegExpObject::info from JavaScriptCore
14084 This allows obj->inherits(&RegExpObject::info) to work correctly from
14085 outside JavaScriptCore.dll on Windows.
14087 Fixes <http://webkit.org/b/46098>
14088 fast/loader/stateobjects/pushstate-object-types.html fails on Windows
14090 Reviewed by John Sullivan.
14092 * runtime/RegExpObject.h: Added JS_EXPORTDATA to the info member, as
14093 we already have for some other classes whose info members have to be
14094 used from outside the DLL.
14096 2010-09-19 Gavin Barraclough <barraclough@apple.com>
14098 Windows build fix pt 2.
14100 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
14102 2010-09-19 Gavin Barraclough <barraclough@apple.com>
14104 Windows build fix pt 1.
14106 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
14108 2010-09-19 Gavin Barraclough <barraclough@apple.com>
14110 Build fix - implicit double-to-int conversion invalid on 32-bit.
14112 * runtime/DatePrototype.cpp:
14113 (JSC::fillStructuresUsingDateArgs):
14114 (JSC::dateProtoFuncSetYear):
14116 2010-09-19 Gavin Barraclough <barraclough@apple.com>
14118 Reviewed by Oliver Hunt.
14120 Bug 46065 - Unify implementation of ToInt32 and ToUInt32, don't use fmod.
14122 These methods implement the same conversion (see discussion in the notes
14123 of sections of 9.5 and 9.6 of the spec), only differing in how the result
14126 Date prototype is incorrectly using toInt32, and this is causing us to
14127 provide an output value indicating whether the input to ToInt32 was finite
14128 (the corresponding methods on Date are actually spec'ed to use ToInteger,
14129 not ToInt32). This patch partially fixes this in order to remove this
14130 bogus output value, hoewever more work will be require to bring Date
14131 fully up to spec compliance (the constructor is still performing ToInt32
14134 * JavaScriptCore.exp:
14135 * runtime/DatePrototype.cpp:
14136 (JSC::fillStructuresUsingTimeArgs):
14137 (JSC::fillStructuresUsingDateArgs):
14138 (JSC::dateProtoFuncSetYear):
14139 * runtime/JSValue.cpp:
14141 * runtime/JSValue.h:
14143 (JSC::JSValue::toInt32):
14144 (JSC::JSValue::toUInt32):
14146 2010-09-18 Darin Adler <darin@apple.com>
14148 First step in fixing Windows build.
14150 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
14151 Removed incorrect symbol. The build will probably still fail,
14152 but the failure will tell us what symbol to add.
14154 2010-09-18 Michael Saboff <msaboff@apple.com>
14156 Reviewed by Gavin Barraclough.
14158 Added code to unroll regular expressions containing ^.
14159 Alternatives that begin with ^ are tagged during parsing
14160 and rolled up in containing sub expression structs.
14161 After parsing, a regular expression flagged as containing
14162 a ^ (a.k.a. BOL) is processed further in optimizeBOL().
14163 A copy of the disjunction is made excluding alternatives that
14164 are rooted with BOL. The original alternatives are flagged
14165 to only be executed once. The copy of the other alternatives are
14166 added to the original expression.
14167 In the case that all original alternatives are flagged, there
14168 won't be any looping alternatives.
14169 The JIT generator will emit code accordingly, executing the
14170 original alternatives once and then looping over the
14171 alternatives that aren't anchored with a BOL (if any).
14172 https://bugs.webkit.org/show_bug.cgi?id=45787
14174 * yarr/RegexCompiler.cpp:
14175 (JSC::Yarr::RegexPatternConstructor::assertionBOL):
14176 (JSC::Yarr::RegexPatternConstructor::atomParenthesesEnd):
14177 (JSC::Yarr::RegexPatternConstructor::copyDisjunction):
14178 (JSC::Yarr::RegexPatternConstructor::copyTerm):
14179 (JSC::Yarr::RegexPatternConstructor::optimizeBOL):
14180 (JSC::Yarr::compileRegex):
14181 * yarr/RegexJIT.cpp:
14182 (JSC::Yarr::RegexGenerator::generateDisjunction):
14183 * yarr/RegexPattern.h:
14184 (JSC::Yarr::PatternAlternative::PatternAlternative):
14185 (JSC::Yarr::PatternAlternative::setOnceThrough):
14186 (JSC::Yarr::PatternAlternative::onceThrough):
14187 (JSC::Yarr::PatternDisjunction::PatternDisjunction):
14188 (JSC::Yarr::RegexPattern::RegexPattern):
14189 (JSC::Yarr::RegexPattern::reset):
14191 2010-09-18 Patrick Gansterer <paroga@paroga.com>
14193 Reviewed by Darin Adler.
14195 Rename Wince files to WinCE
14196 https://bugs.webkit.org/show_bug.cgi?id=37287
14198 * wtf/unicode/Unicode.h:
14199 * wtf/unicode/wince/UnicodeWinCE.cpp: Copied from JavaScriptCore/wtf/unicode/wince/UnicodeWince.cpp.
14200 * wtf/unicode/wince/UnicodeWinCE.h: Copied from JavaScriptCore/wtf/unicode/wince/UnicodeWince.h.
14201 * wtf/unicode/wince/UnicodeWince.cpp: Removed.
14202 * wtf/unicode/wince/UnicodeWince.h: Removed.
14203 * wtf/wince/FastMallocWinCE.h: Copied from JavaScriptCore/wtf/wince/FastMallocWince.h.
14204 * wtf/wince/FastMallocWince.h: Removed.
14206 2010-09-18 Ademar de Souza Reis Jr <ademar.reis@openbossa.org>
14208 Reviewed by Kenneth Rohde Christiansen.
14210 Enable Platform Strategies on Qt
14212 [Qt] Turn on PLATFORM_STRATEGIES
14213 https://bugs.webkit.org/show_bug.cgi?id=45831
14215 * wtf/Platform.h: Enable Platform Strategies when building QtWebkit
14217 2010-09-17 Oliver Hunt <oliver@apple.com>
14219 Reviewed by Gavin Barraclough.
14221 Imprecise tracking of variable capture leads to overly pessimistic creation of activations
14222 https://bugs.webkit.org/show_bug.cgi?id=46020
14224 The old logic for track free and captured variables would cause us
14225 to decide we needed an activation in every function along the scope
14226 chain between a variable capture and its declaration. We now track
14227 captured variables precisely which requires a bit of additional work
14229 The most substantial change is that the parsing routine needs to
14230 be passed the list of function parameters when reparsing a function
14231 as when reparsing we don't parse the function declaration itself only
14234 * JavaScriptCore.exp:
14235 * parser/JSParser.cpp:
14236 (JSC::JSParser::Scope::Scope):
14237 (JSC::JSParser::Scope::needsFullActivation):
14238 We need to distinguish between use of a feature that requires
14239 an activation and eval so we now get this additional flag.
14240 (JSC::JSParser::Scope::collectFreeVariables):
14241 (JSC::JSParser::Scope::getCapturedVariables):
14242 We can't simply return the list of "capturedVariables" now as
14243 is insufficiently precise, so we compute them instead.
14244 (JSC::JSParser::popScope):
14246 (JSC::JSParser::JSParser):
14247 (JSC::JSParser::parseProgram):
14248 (JSC::JSParser::parseWithStatement):
14249 (JSC::JSParser::parseTryStatement):
14250 (JSC::JSParser::parseFunctionInfo):
14251 (JSC::JSParser::parseFunctionDeclaration):
14252 (JSC::JSParser::parseProperty):
14253 (JSC::JSParser::parseMemberExpression):
14254 * parser/JSParser.h:
14255 * parser/Parser.cpp:
14256 (JSC::Parser::parse):
14258 (JSC::Parser::parse):
14259 * runtime/Executable.cpp:
14260 (JSC::EvalExecutable::compileInternal):
14261 (JSC::ProgramExecutable::checkSyntax):
14262 (JSC::ProgramExecutable::compileInternal):
14263 (JSC::FunctionExecutable::compileForCallInternal):
14264 (JSC::FunctionExecutable::compileForConstructInternal):
14265 (JSC::FunctionExecutable::reparseExceptionInfo):
14266 (JSC::EvalExecutable::reparseExceptionInfo):
14267 (JSC::FunctionExecutable::fromGlobalCode):
14268 Pass function parameters (if available) to the parser.
14270 2010-09-17 Anders Carlsson <andersca@apple.com>
14272 Reviewed by Sam Weinig.
14274 Add IsFloatingPoint and IsArithmetic type traits
14275 https://bugs.webkit.org/show_bug.cgi?id=46018
14277 * wtf/TypeTraits.h:
14278 * wtf/TypeTraits.cpp:
14280 2010-09-17 Martin Robinson <mrobinson@igalia.com>
14282 Reviewed by Oliver Hunt.
14284 [GTK] FontPlatformDataFreeType should use smart pointers to hold its members
14285 https://bugs.webkit.org/show_bug.cgi?id=45917
14287 Added support to PlatformRefPtr for handling HashTableDeletedValue.
14289 * wtf/PlatformRefPtr.h:
14290 (WTF::PlatformRefPtr::PlatformRefPtr): Added a constructor that takes HashTableDeletedValue.
14291 (WTF::PlatformRefPtr::isHashTableDeletedValue): Added.
14293 2010-09-16 Oliver Hunt <oliver@apple.com>
14295 Reviewed by Geoffrey Garen.
14297 Crash due to timer triggered GC on one heap while another heap is active
14298 https://bugs.webkit.org/show_bug.cgi?id=45932
14299 <rdar://problem/8318446>
14301 The GC timer may trigger for one heap while another heap is active. This
14302 is safe, but requires us to ensure that we have temporarily associated the
14303 thread's identifierTable with the heap we're collecting on. Otherwise we
14304 may end up with the identifier tables in an inconsistent state leading to
14307 * runtime/Collector.cpp:
14308 (JSC::Heap::allocate):
14309 (JSC::Heap::reset):
14310 (JSC::Heap::collectAllGarbage):
14311 Add assertions to ensure we have the correct identifierTable active
14313 * runtime/GCActivityCallbackCF.cpp:
14314 (JSC::DefaultGCActivityCallbackPlatformData::trigger):
14315 Temporarily make the expected IdentifierTable active
14316 * wtf/WTFThreadData.h:
14317 (JSC::IdentifierTable::remove):
14318 Make it possible to see when IdentifierTable::remove has succeeded
14319 * wtf/text/StringImpl.cpp:
14320 (WTF::StringImpl::~StringImpl):
14321 CRASH if an StringImpl is an Identifier but isn't present in the
14322 active IdentifierTable. If we get to this state something has
14323 gone wrong and we should just crash immediately.
14325 2010-09-16 Martin Robinson <mrobinson@igalia.com>
14327 Reviewed by Xan Lopez.
14329 [GTK] Implement dissolveDragImageToFraction
14330 https://bugs.webkit.org/show_bug.cgi?id=45826
14332 * wtf/gobject/GTypedefs.h: Added forward declarations for GtkWindow and GdkEventExpose.
14334 2010-09-16 Eric Uhrhane <ericu@chromium.org>
14336 Reviewed by Jian Li.
14338 Unify FILE_SYSTEM and FILE_WRITER enables under the name FILE_SYSTEM.
14339 https://bugs.webkit.org/show_bug.cgi?id=45798
14341 * Configurations/FeatureDefines.xcconfig:
14343 2010-09-15 Oliver Hunt <oliver@apple.com>
14345 Reviewed by Geoffrey Garen.
14347 Use free variable analysis to improve activation performance
14348 https://bugs.webkit.org/show_bug.cgi?id=45837
14350 Adds free and captured variable tracking to the JS parser. This
14351 allows us to avoid construction of an activation object in some
14352 cases. Future patches will make more use of this information to
14353 improve those cases where activations are still needed.
14355 * parser/ASTBuilder.h:
14356 * parser/JSParser.cpp:
14357 (JSC::JSParser::Scope::Scope):
14358 (JSC::JSParser::Scope::declareVariable):
14359 (JSC::JSParser::Scope::useVariable):
14360 (JSC::JSParser::Scope::collectFreeVariables):
14361 (JSC::JSParser::Scope::capturedVariables):
14362 (JSC::JSParser::ScopeRef::ScopeRef):
14363 (JSC::JSParser::ScopeRef::operator->):
14364 (JSC::JSParser::ScopeRef::index):
14365 (JSC::JSParser::currentScope):
14366 (JSC::JSParser::pushScope):
14367 (JSC::JSParser::popScope):
14368 (JSC::JSParser::parseProgram):
14369 (JSC::JSParser::parseVarDeclarationList):
14370 (JSC::JSParser::parseConstDeclarationList):
14371 (JSC::JSParser::parseTryStatement):
14372 (JSC::JSParser::parseFormalParameters):
14373 (JSC::JSParser::parseFunctionInfo):
14374 (JSC::JSParser::parseFunctionDeclaration):
14375 (JSC::JSParser::parsePrimaryExpression):
14376 * parser/Nodes.cpp:
14377 (JSC::ScopeNodeData::ScopeNodeData):
14378 (JSC::ScopeNode::ScopeNode):
14379 (JSC::ProgramNode::ProgramNode):
14380 (JSC::ProgramNode::create):
14381 (JSC::EvalNode::EvalNode):
14382 (JSC::EvalNode::create):
14383 (JSC::FunctionBodyNode::FunctionBodyNode):
14384 (JSC::FunctionBodyNode::create):
14386 (JSC::ScopeNode::needsActivation):
14387 (JSC::ScopeNode::hasCapturedVariables):
14388 * parser/Parser.cpp:
14389 (JSC::Parser::didFinishParsing):
14391 (JSC::Parser::parse):
14392 * parser/SyntaxChecker.h:
14393 * runtime/Executable.cpp:
14394 (JSC::EvalExecutable::compileInternal):
14395 (JSC::ProgramExecutable::compileInternal):
14396 (JSC::FunctionExecutable::compileForCallInternal):
14397 (JSC::FunctionExecutable::compileForConstructInternal):
14398 * runtime/Executable.h:
14399 (JSC::ScriptExecutable::needsActivation):
14400 (JSC::ScriptExecutable::recordParse):
14402 2010-09-14 Hyung Song <beergun@company100.net>
14404 Reviewed by Kent Tamura.
14406 [BREWMP] Add IMemGroup and IMemSpace to OwnPtr type.
14407 https://bugs.webkit.org/show_bug.cgi?id=44764
14409 * wtf/OwnPtrCommon.h:
14410 * wtf/brew/OwnPtrBrew.cpp:
14411 (WTF::deleteOwnedPtr):
14413 2010-09-14 Darin Adler <darin@apple.com>
14415 Reviewed by Geoffrey Garen.
14417 Sort with non-numeric custom sort function fails on array with length but no values
14418 https://bugs.webkit.org/show_bug.cgi?id=45781
14420 * runtime/JSArray.cpp:
14421 (JSC::JSArray::sort): Replaced early exit for an array of length zero to instead
14422 exit for any array without values, even if it has a non-0 length.
14424 2010-09-14 Steve Falkenburg <sfalken@apple.com>
14426 Windows production build fix.
14429 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
14431 2010-09-14 Kwang Yul Seo <skyul@company100.net>
14433 Reviewed by Darin Adler.
14435 Share UnicodeMacrosFromICU.h
14436 https://bugs.webkit.org/show_bug.cgi?id=45710
14438 glib, qt4 and wince use the same macros from ICU.
14439 Remove the code duplication and use the same header file.
14441 * wtf/unicode/UnicodeMacrosFromICU.h: Copied from JavaScriptCore/wtf/unicode/glib/UnicodeMacrosFromICU.h.
14442 * wtf/unicode/glib/UnicodeMacrosFromICU.h: Removed.
14443 * wtf/unicode/qt4/UnicodeQt4.h:
14444 * wtf/unicode/wince/UnicodeWince.h:
14446 2010-09-13 Darin Adler <darin@apple.com>
14448 Reviewed by Adam Barth.
14450 Preparation for eliminating deprecatedParseURL
14451 https://bugs.webkit.org/show_bug.cgi?id=45695
14453 * wtf/text/WTFString.h: Added isAllSpecialCharacters, moved here from
14454 the HTML tree builder.
14456 2010-09-13 Darin Fisher <darin@chromium.org>
14458 Reviewed by David Levin.
14460 Add option to conditionally compile smooth scrolling support.
14461 https://bugs.webkit.org/show_bug.cgi?id=45689
14463 ENABLE(SMOOTH_SCROLLING) is disabled by default for all platforms.
14467 2010-09-13 Adam Roben <aroben@apple.com>
14469 Copy JavaScriptCore's generated sources to the right directory
14471 * JavaScriptCore.vcproj/JavaScriptCore.make: Fixed typo.
14473 2010-09-13 Kwang Yul Seo <skyul@company100.net>
14475 Reviewed by Kent Tamura.
14477 [BREWMP] Don't call _msize
14478 https://bugs.webkit.org/show_bug.cgi?id=45556
14480 Because Brew MP uses its own memory allocator, it is not correct to use
14481 _msize in fastMallocSize. Add !PLATFORM(BREWMP) guard.
14483 * wtf/FastMalloc.cpp:
14484 (WTF::fastMallocSize):
14486 2010-09-11 Simon Hausmann <simon.hausmann@nokia.com>
14488 Reviewed by Andreas Kling.
14490 [Qt] V8 port: webcore project files changes
14491 https://bugs.webkit.org/show_bug.cgi?id=45141
14493 * JavaScriptCore.pro: Moved wtf specific files to wtf.pri,
14494 so that they can also be used from WebCore.pro for v8 builds.
14495 * wtf/wtf.pri: Added.
14497 2010-09-10 Fridrich Strba <fridrich.strba@bluewin.ch>
14499 Reviewed by Andreas Kling.
14501 Add a define missing when building with glib unicode backend
14502 https://bugs.webkit.org/show_bug.cgi?id=45544
14504 * wtf/unicode/glib/UnicodeMacrosFromICU.h:
14506 2010-09-10 Stephanie Lewis <slewis@apple.com>
14508 Reviewed by Alexey Proskuryakov.
14510 Refactor JavaScriptCore memory statistics so that WebKit doesn't need to know
14511 about the JIT and other implementation details of JavaScriptCore. Necessary
14514 https://bugs.webkit.org/show_bug.cgi?id=45528
14516 * JavaScriptCore.exp:
14517 * JavaScriptCore.xcodeproj/project.pbxproj:
14518 * runtime/MemoryStatistics.cpp: Added.
14519 (JSC::memoryStatistics):
14520 * runtime/MemoryStatistics.h: Added.
14522 2010-09-09 Michael Saboff <msaboff@apple.com>
14524 Reviewed by Gavin Barraclough.
14526 Added a regular expression tracing facility. This tracing is connected
14527 to jsc. Every compiled regular expression object is added to a list.
14528 When the process exits, each regular expression dumps its pattern,
14529 JIT address, number of times it was executed and the number of matches.
14530 This tracing is controlled by the macro ENABLE_REGEXP_TRACING in
14532 https://bugs.webkit.org/show_bug.cgi?id=45401
14534 * JavaScriptCore.exp:
14537 * runtime/JSGlobalData.cpp:
14538 (JSC::JSGlobalData::JSGlobalData):
14539 (JSC::JSGlobalData::~JSGlobalData):
14540 (JSC::JSGlobalData::addRegExpToTrace):
14541 (JSC::JSGlobalData::dumpRegExpTrace):
14542 * runtime/JSGlobalData.h:
14543 * runtime/RegExp.cpp:
14544 (JSC::RegExp::RegExp):
14545 (JSC::RegExp::create):
14546 (JSC::RegExp::match):
14547 * runtime/RegExp.h:
14550 (JSC::Yarr::RegexCodeBlock::getAddr):
14552 2010-09-09 John Therrell <jtherrell@apple.com>
14556 * jit/ExecutableAllocator.cpp:
14557 (JSC::ExecutableAllocator::committedByteCount):
14559 2010-09-09 John Therrell <jtherrell@apple.com>
14561 Reviewed by Alexey Proskuryakov.
14563 Added statistics sampling and reporting for JavaScriptCore's RegisterFile and ExecutableAllocator classes
14564 https://bugs.webkit.org/show_bug.cgi?id=45134
14566 Added thread-safe committed byte counting and reporting functionality to RegisterFile and
14567 ExecutableAllocator.
14569 * JavaScriptCore.exp:
14570 Exported new symbols to allow for WebKit to get statistics from JavaScriptCore classes.
14572 * interpreter/RegisterFile.cpp:
14573 (JSC::registerFileStatisticsMutex):
14574 Added function which returns a static Mutex used for locking during read/write access to
14575 static committed byte count variable.
14576 (JSC::RegisterFile::~RegisterFile):
14577 Added call to addToStatistics since memory is decommitted here.
14578 (JSC::RegisterFile::releaseExcessCapacity):
14579 Added call to addToStatistics since memory is decommitted here.
14580 (JSC::RegisterFile::initializeThreading):
14581 Added function which calls registerFileStatisticsMutex().
14582 (JSC::RegisterFile::committedByteCount):
14583 Added function which returns the current committed byte count for RegisterFile.
14584 (JSC::RegisterFile::addToCommittedByteCount):
14585 Added function which updates committed byte count.
14587 * interpreter/RegisterFile.h:
14588 (JSC::RegisterFile::RegisterFile):
14589 Added call to addToStatistics since memory is committed here.
14590 (JSC::RegisterFile::grow):
14591 Added call to addToStatistics since memory is committed here.
14593 * jit/ExecutableAllocator.h:
14594 Added function prototype for public static function committedByteCount().
14596 * jit/ExecutableAllocatorFixedVMPool.cpp:
14597 (JSC::FixedVMPoolAllocator::release):
14598 Added call to addToStatistics since memory is decommitted here.
14599 (JSC::FixedVMPoolAllocator::reuse):
14600 Added call to addToStatistics since memory is committed here.
14601 (JSC::FixedVMPoolAllocator::addToCommittedByteCount):
14602 Added function which updates committed byte count.
14603 (JSC::ExecutableAllocator::committedByteCount):
14604 Added function which returns the current committed byte count for ExecutableAllocator.
14606 * runtime/InitializeThreading.cpp:
14607 (JSC::initializeThreadingOnce):
14608 Added call to RegisterFile::initializeThreading.
14610 2010-09-09 Mark Rowe <mrowe@apple.com>
14612 Reviewed by Oliver Hunt.
14614 <http://webkit.org/b/45502> JSObjectSetPrivateProperty does not handle NULL values as it claims
14616 * API/JSObjectRef.cpp:
14617 (JSObjectSetPrivateProperty): Don't call toJS if we have a NULL value as that will cause an assertion
14618 failure. Instead map NULL directly to the null JSValue.
14619 * API/tests/testapi.c:
14620 (main): Add test coverage for the NULL value case.
14622 2010-09-09 Csaba Osztrogonác <ossy@webkit.org>
14624 Reviewed by Gavin Barraclough.
14626 [Qt] JSVALUE32_64 not works on Windows platform with MinGW compiler
14627 https://bugs.webkit.org/show_bug.cgi?id=29268
14629 * wtf/Platform.h: Enable JSVALUE32_64 for Qt/Windows/MinGW, because it works now.
14631 2010-09-08 Zoltan Herczeg <zherczeg@webkit.org>
14633 Reviewed by Darin Adler.
14635 Removing doneSemicolon label in the lexer
14636 https://bugs.webkit.org/show_bug.cgi?id=45289
14638 As a side effect of moving the multiline comment parsing
14639 to a separate function, an opportunity raised to simplify
14640 the single line comment parsing, and removing doneSemicolon
14641 label. Slight performance increase on --parse-only
14642 tests (from 32.8ms to 31.5ms)
14644 * parser/Lexer.cpp:
14647 2010-09-08 Xan Lopez <xlopez@igalia.com>
14649 Reviewed by Alexey Proskuryakov.
14651 Remove accessor for private member variable in JSParser
14652 https://bugs.webkit.org/show_bug.cgi?id=45378
14654 m_token is private to JSParser, so it does not seem to be useful
14655 to have an accessor for it. On top of that, the file was both
14656 using the accessor and directly accessing the member variable,
14657 only one style should be used.
14659 2010-09-08 Csaba Osztrogonác <ossy@webkit.org>
14661 Reviewed by Oliver Hunt.
14663 [Qt] REGRESSION(63348): jsc is broken
14664 https://bugs.webkit.org/show_bug.cgi?id=42818
14666 Need fastcall conventions on Qt/Win/MinGW.
14667 Based on patches of Gavin Barraclough: r63947 and r63948.
14669 * jit/JITStubs.cpp:
14672 2010-09-08 Robert Hogan <robert@webkit.org>
14674 Reviewed by Antonio Gomes.
14676 Remove some unnecessary duplicate calls to string functions
14678 https://bugs.webkit.org/show_bug.cgi?id=45314
14680 * wtf/text/WTFString.cpp:
14681 (WTF::String::format):
14683 2010-09-08 Jocelyn Turcotte <jocelyn.turcotte@nokia.com>
14685 Reviewed by Andreas Kling.
14687 Re-Disable JIT for MSVC 64bit to fix the build on this compiler.
14688 https://bugs.webkit.org/show_bug.cgi?id=45382
14690 It was enabled in the cleanup made in r64176, though it is still
14695 2010-09-08 Martin Robinson <mrobinson@igalia.com>
14697 Reviewed by Xan Lopez.
14699 [GTK] Need a WebSocket implementation
14700 https://bugs.webkit.org/show_bug.cgi?id=45197
14702 Add a GIO-based WebSocket implementation.
14704 * wtf/gobject/GRefPtr.cpp: Added PlatformRefPtr support for GSource.
14705 (WTF::refPlatformPtr):
14706 (WTF::derefPlatformPtr):
14707 * wtf/gobject/GRefPtr.h: Added new template specialization declarations.
14708 * wtf/gobject/GTypedefs.h: Add some more GLib/GIO forward declarations.
14710 2010-08-30 Maciej Stachowiak <mjs@apple.com>
14712 Reviewed by Darin Adler.
14714 Handle MediaQueryExp memory management exclusively with smart pointers
14715 https://bugs.webkit.org/show_bug.cgi?id=44874
14717 Implemented a non-copying sort function to make it possible to sort a Vector
14718 of OwnPtrs (which cannot be copied). This is required for the above.
14720 * wtf/NonCopyingSort.h: Added.
14721 (WTF::nonCopyingSort): It's secretly heapsort.
14722 (WTF::heapSort): heapsort implementation.
14723 (WTF::siftDown): Helper function for heapsort.
14724 (WTF::heapify): ditto
14726 Adjust build systems.
14729 * JavaScriptCore.gypi:
14730 * JavaScriptCore.vcproj/WTF/WTF.vcproj:
14731 * JavaScriptCore.xcodeproj/project.pbxproj:
14733 2010-09-08 Zoltan Herczeg <zherczeg@webkit.org>
14735 Reviewed by Darin Adler.
14737 Refactoring multiline comments in the lexer
14738 https://bugs.webkit.org/show_bug.cgi?id=45289
14740 MultiLine comment parsing is moved to a separate function.
14742 Slight performance increase on --parse-only tests (from 33.6ms to 32.8ms)
14743 SunSpider reports no change (from 523.1ms to 521.2ms).
14745 * parser/Lexer.cpp:
14746 (JSC::Lexer::parseMultilineComment):
14750 2010-09-07 James Robinson <jamesr@chromium.org>
14752 Compile fix attempt for windows.
14754 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
14756 2010-09-07 Mihai Parparita <mihaip@chromium.org>
14758 Reviewed by James Robinson.
14760 Fix Windows build after r66936
14761 https://bugs.webkit.org/show_bug.cgi?id=45348
14763 Add symbol names that were missing from r66936.
14765 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
14767 2010-09-07 Mihai Parparita <mihaip@chromium.org>
14769 Reviewed by Oliver Hunt.
14771 pushState and replaceState do not clone RegExp objects correctly
14772 https://bugs.webkit.org/show_bug.cgi?id=44718
14774 Move internal representation of JSC::RegExp (which depends on wether
14775 YARR and YARR_JIT is enabled) into RegExpRepresentation which can live
14776 in the implementation only. This makes it feasible to use RegExp in
14777 WebCore without bringing in all of YARR.
14779 * JavaScriptCore.exp: Export RegExp and RegExpObject functions that are
14780 needed inside WebCore's JSC bindings.
14781 * runtime/RegExp.cpp:
14782 (JSC::RegExpRepresentation::~RegExpRepresentation):
14783 (JSC::RegExp::RegExp):
14784 (JSC::RegExp::~RegExp):
14785 (JSC::RegExp::compile):
14786 (JSC::RegExp::match):
14787 * runtime/RegExp.h:
14789 2010-09-07 Anders Carlsson <andersca@apple.com>
14791 Reviewed by Darin Adler.
14793 <rdar://problem/8381749> -Wcast-align warning emitted when building with clang
14795 Remove the -Wcast-align-warning since it isn't really useful, and clang is more aggressive about warning than gcc.
14797 * Configurations/Base.xcconfig:
14799 2010-09-07 Zoltan Horvath <zoltan@webkit.org>
14801 Reviewed by Darin Adler.
14803 REGRESSION(66741): Undefined pthread macros
14804 https://bugs.webkit.org/show_bug.cgi?id=45246
14806 PTHREAD_MUTEX_NORMAL and PTHREAD_MUTEX_DEFAULT (introduced in r60487) are not defined on Linux,
14807 but used in a statement. Add an additional check to test this.
14809 * wtf/FastMalloc.cpp:
14810 (WTF::TCMalloc_PageHeap::initializeScavenger):
14812 2010-09-06 Oliver Hunt <oliver@apple.com>
14816 2010-09-05 Oliver Hunt <oliver@apple.com>
14818 Reviewed by Sam Weinig.
14820 SerializedScriptValue needs to use a flat storage mechanism
14821 https://bugs.webkit.org/show_bug.cgi?id=45244
14823 Export JSArray::put
14825 * JavaScriptCore.exp:
14827 2010-09-06 Chao-ying Fu <fu@mips.com>
14829 Reviewed by Oliver Hunt.
14831 Support JSVALUE32_64 on MIPS
14832 https://bugs.webkit.org/show_bug.cgi?id=43999
14834 Add missing functions to support JSVALUE32_64 on MIPS.
14835 Remove JSVALUE32 as the default for MIPS.
14837 * assembler/MIPSAssembler.h:
14838 (JSC::MIPSAssembler::divd):
14839 (JSC::MIPSAssembler::mthc1):
14840 (JSC::MIPSAssembler::cvtwd):
14841 * assembler/MacroAssemblerMIPS.h:
14842 (JSC::MacroAssemblerMIPS::neg32):
14843 (JSC::MacroAssemblerMIPS::branchOr32):
14844 (JSC::MacroAssemblerMIPS::set8):
14845 (JSC::MacroAssemblerMIPS::loadDouble):
14846 (JSC::MacroAssemblerMIPS::divDouble):
14847 (JSC::MacroAssemblerMIPS::convertInt32ToDouble):
14848 (JSC::MacroAssemblerMIPS::branchDouble):
14849 (JSC::MacroAssemblerMIPS::branchConvertDoubleToInt32):
14850 (JSC::MacroAssemblerMIPS::zeroDouble):
14852 * jit/JITOpcodes32_64.cpp:
14853 (JSC::JIT::privateCompileCTINativeCall):
14854 * jit/JITPropertyAccess32_64.cpp:
14855 (JSC::JIT::privateCompilePutByIdTransition):
14856 * jit/JITStubs.cpp:
14857 (JSC::JITThunks::JITThunks):
14861 2010-09-06 Robert Hogan <robert@webkit.org>
14863 Unreviewed, compile fix.
14865 Fix compile failure in r66843
14867 Revert to original patch in bugzilla. Leave bug open for
14868 discussion on potential removal of double utf8 conversion.
14870 https://bugs.webkit.org/show_bug.cgi?id=45240
14872 * wtf/text/WTFString.cpp:
14873 (WTF::String::format):
14875 2010-09-06 Robert Hogan <robert@webkit.org>
14877 Reviewed by Andreas Kling.
14879 [Qt] utf8 encoding of console() messages
14882 http/tests/security/xssAuditor/embed-tag-null-char.html
14883 http/tests/security/xssAuditor/object-embed-tag-null-char.html
14885 Both tests failed because Qt's implementation of String::format()
14886 is casting a utf8 result to String, which assumes latin1 in
14887 its constructor. So instead of casting a QString to a String, use
14888 StringImpl::create() instead. Unfortunately, this involves a lot
14889 of extra casts but the end result is correct.
14891 https://bugs.webkit.org/show_bug.cgi?id=45240
14893 * wtf/text/WTFString.cpp:
14894 (WTF::String::format):
14896 2010-09-03 Alexey Proskuryakov <ap@apple.com>
14898 Reviewed by Darin Adler.
14900 https://bugs.webkit.org/show_bug.cgi?id=45135
14901 <rdar://problem/7823714> TCMalloc_PageHeap doesn't hold a mutex while manipulating shared data
14903 * wtf/FastMalloc.cpp:
14904 (WTF::TCMalloc_PageHeap::initializeScavenger): Make sure to create a non-recursive mutex
14905 regardless of platform default, so that we can assert that it's held (this is for platforms
14906 that don't have libdispatch).
14907 (WTF::TCMalloc_PageHeap::signalScavenger): Assert that the mutex is held, so we can look
14908 at m_scavengeThreadActive. For platforms that have libdispatch, assert that pageheap_lock
14910 (WTF::TCMalloc_PageHeap::periodicScavenge): Make sure that pageheap_lock is held before
14911 manipulating m_scavengeThreadActive. Otherwise, there is an obvious race condition, and we
14912 can make unbalanced calls to dispatch_resume().
14914 2010-09-03 Lucas De Marchi <lucas.demarchi@profusion.mobi>
14916 Reviewed by Martin Robinson.
14918 [EFL] Regression (66531) Build break with Glib Support
14919 https://bugs.webkit.org/show_bug.cgi?id=45011
14921 Move GtkTypedefs.h to GTypedefs.h and let it inside gobject directory
14922 since when glib is enabled, EFL port needs it, too.
14924 * CMakeListsEfl.txt: Include gobject directory to find new header
14926 * GNUmakefile.am: Ditto.
14927 * wtf/CMakeListsEfl.txt: Ditto.
14928 * wtf/Platform.h: Include header if port is EFL and glib support is
14930 * wtf/gtk/GtkTypedefs.h: Removed.
14931 * wtf/gobject/GTypedefs.h: Added. Sections specific to GTK are now
14932 guarded by PLATFORM(GTK).
14934 2010-09-03 Csaba Osztrogonác <ossy@webkit.org>
14936 Reviewed by Simon Hausmann.
14938 Fix warning in wtf/ByteArray.h
14939 https://bugs.webkit.org/show_bug.cgi?id=44672
14941 * wtf/ByteArray.h: Use maximal sized array for MSVC and unsized array for other compilers.
14943 2010-09-02 Adam Barth <abarth@webkit.org>
14945 Reviewed by Eric Seidel.
14947 Actually parse a URL from ParsedURL
14948 https://bugs.webkit.org/show_bug.cgi?id=45080
14950 This patch only handles standard URLs. At some point we'll need to
14951 distinguish between standard URLs and other kinds of URLs.
14953 * wtf/url/api/ParsedURL.cpp:
14954 (WTF::ParsedURL::ParsedURL):
14956 2010-09-02 Adam Barth <abarth@webkit.org>
14958 Reviewed by Eric Seidel.
14960 Add ParsedURL and URLString to WTFURL API
14961 https://bugs.webkit.org/show_bug.cgi?id=45078
14963 Currently there's no actual URL parsing going on, but this patch is a
14964 start to sketching out the API.
14966 * JavaScriptCore.xcodeproj/project.pbxproj:
14967 * wtf/url/api/ParsedURL.cpp: Added.
14968 (WTF::ParsedURL::ParsedURL):
14969 (WTF::ParsedURL::scheme):
14970 (WTF::ParsedURL::username):
14971 (WTF::ParsedURL::password):
14972 (WTF::ParsedURL::host):
14973 (WTF::ParsedURL::port):
14974 (WTF::ParsedURL::path):
14975 (WTF::ParsedURL::query):
14976 (WTF::ParsedURL::fragment):
14977 (WTF::ParsedURL::segment):
14978 * wtf/url/api/ParsedURL.h: Added.
14979 (WTF::ParsedURL::spec):
14980 * wtf/url/api/URLString.h: Added.
14981 (WTF::URLString::URLString):
14982 (WTF::URLString::string):
14984 2010-09-02 Adam Barth <abarth@webkit.org>
14986 Reviewed by Eric Seidel.
14988 Add WTFURL to the JavaScriptCore build on Mac
14989 https://bugs.webkit.org/show_bug.cgi?id=45075
14991 Building code is good.
14993 * JavaScriptCore.xcodeproj/project.pbxproj:
14995 2010-09-02 Alexey Proskuryakov <ap@apple.com>
14997 Reviewed by Oliver Hunt.
14999 https://bugs.webkit.org/show_bug.cgi?id=43230
15000 <rdar://problem/8254215> REGRESSION: Memory leak within JSParser::JSParser
15002 One can't delete a ThreadSpecific object that has data in it. It's not even possible to
15003 enumerate data objects in all threads, much less destroy them from a thread that's destroying
15004 the ThreadSpecific.
15006 * parser/JSParser.cpp:
15007 (JSC::JSParser::JSParser):
15008 * runtime/JSGlobalData.h:
15009 * wtf/WTFThreadData.cpp:
15010 (WTF::WTFThreadData::WTFThreadData):
15011 * wtf/WTFThreadData.h:
15012 (WTF::WTFThreadData::approximatedStackStart):
15013 Moved stack guard tracking from JSGlobalData to WTFThreadData.
15015 * wtf/ThreadSpecific.h: Made destructor unimplemented. It's dangerous, and we probably won't
15016 ever face a situation where we'd want to delete a ThreadSpecific object.
15018 2010-09-01 Gavin Barraclough <barraclough@apple.com>
15020 Rubber stamped by Oliver Hunt.
15022 Ecma-262 15.11.1.1 states that if the argument is undefined then an
15023 Error object's message property should be set to the empty string.
15025 * runtime/ErrorInstance.cpp:
15026 (JSC::ErrorInstance::ErrorInstance):
15027 (JSC::ErrorInstance::create):
15028 * runtime/ErrorInstance.h:
15029 * runtime/ErrorPrototype.cpp:
15030 (JSC::ErrorPrototype::ErrorPrototype):
15032 2010-08-31 Darin Adler <darin@apple.com>
15034 Reviewed by Anders Carlsson.
15036 * wtf/FastMalloc.cpp:
15037 (WTF::TCMalloc_PageHeap::scavenge): Replaced somewhat-quirky code that
15038 mixed types with code that uses size_t.
15040 * wtf/TCPageMap.h: Removed names of unused arguments to avoid warning.
15042 2010-08-31 Martin Robinson <mrobinson@igalia.com>
15044 Reviewed by Gustavo Noronha Silva.
15046 [GTK] Isolate all GTK+ typedefs into one file
15047 https://bugs.webkit.org/show_bug.cgi?id=44900
15049 * GNUmakefile.am: Add GtkTypedefs.h to the source lists.
15050 * wtf/Platform.h: #include GtkTypedefs.h for the GTK+ build.
15051 * wtf/ThreadingPrimitives.h: Remove GTK+ typedefs.
15052 * wtf/gobject/GOwnPtr.h: Ditto.
15053 * wtf/gobject/GRefPtr.h: Ditto.
15054 * wtf/gtk/GtkTypedefs.h: Added.
15056 2010-08-31 Martin Robinson <mrobinson@igalia.com>
15058 Reviewed by Gustavo Noronha Silva.
15060 [GTK] Fix 'make dist' in preparation of the 1.3.3 release
15061 https://bugs.webkit.org/show_bug.cgi?id=44978
15063 * GNUmakefile.am: Adding missing headers to the sources list.
15065 2010-08-31 Chao-ying Fu <fu@mips.com>
15067 Reviewed by Oliver Hunt.
15069 Support emit_op_mod() for MIPS
15070 https://bugs.webkit.org/show_bug.cgi?id=42855
15072 This patch uses MIPS div instructions for op_mod to improve performance.
15074 * assembler/MIPSAssembler.h:
15075 (JSC::MIPSAssembler::div):
15076 * jit/JITArithmetic.cpp:
15077 (JSC::JIT::emit_op_mod):
15078 (JSC::JIT::emitSlow_op_mod):
15080 2010-08-31 Csaba Osztrogonác <ossy@webkit.org>
15082 Reviewed by Darin Adler.
15084 Modify ASSERT_UNUSED and UNUSED_PARAM similar to Qt's Q_UNUSED.
15085 https://bugs.webkit.org/show_bug.cgi?id=44870
15087 * wtf/Assertions.h:
15088 * wtf/UnusedParam.h:
15090 2010-08-31 Benjamin Poulain <benjamin.poulain@nokia.com>
15092 Reviewed by Kenneth Rohde Christiansen.
15094 JSC TimeoutChecker::didTimeOut overflows on ARM
15095 https://bugs.webkit.org/show_bug.cgi?id=38538
15097 Make getCPUTime() return values relative to the first call.
15098 The previous implementation relied on simply on currentTime(), which
15099 return a time since epoch and not a time since the thread started. This
15100 made the return value of getCPUTime() overflow on 32 bits.
15102 * runtime/TimeoutChecker.cpp:
15105 2010-08-30 Mihai Parparita <mihaip@chromium.org>
15107 Reviewed by Adam Barth.
15109 HISTORY_ALWAYS_ASYNC should be removed (history should always be async)
15110 https://bugs.webkit.org/show_bug.cgi?id=44315
15112 Remove ENABLE_HISTORY_ALWAYS_ASYNC #define.
15116 2010-08-30 Chris Rogers <crogers@google.com>
15118 Reviewed by Kenneth Russell.
15120 Fix namespace for wtf/Complex.h and wtf/Vector3.h
15121 https://bugs.webkit.org/show_bug.cgi?id=44892
15126 2010-08-30 Andy Estes <aestes@apple.com>
15128 Reviewed by Eric Carlson.
15130 Strings returned by asciiDebug() should be NULL-terminated.
15131 https://bugs.webkit.org/show_bug.cgi?id=44866
15133 * wtf/text/WTFString.cpp:
15136 2010-08-30 Zoltan Herczeg <zherczeg@webkit.org>
15138 Reviewed by Darin Adler.
15140 Refactor number parsing in the lexer
15141 https://bugs.webkit.org/show_bug.cgi?id=44104
15143 Number parsing was full of gotos, and needed a complete
15144 redesign to remove them (Only one remained). Furthermore
15145 integer arithmetic is empolyed for fast cases (= small
15148 * parser/Lexer.cpp:
15149 (JSC::Lexer::parseHex):
15150 (JSC::Lexer::parseOctal):
15151 (JSC::Lexer::parseDecimal):
15152 (JSC::Lexer::parseNumberAfterDecimalPoint):
15153 (JSC::Lexer::parseNumberAfterExponentIndicator):
15157 2010-08-29 Darin Adler <darin@apple.com>
15161 * wtf/unicode/glib/UnicodeMacrosFromICU.h: Added U_IS_BMP.
15162 * wtf/unicode/qt4/UnicodeQt4.h: Ditto.
15163 * wtf/unicode/wince/UnicodeWince.h: Ditto.
15165 2010-08-29 Kwang Yul Seo <skyul@company100.net>
15167 Reviewed by Kent Tamura.
15169 [BREWMP] Port vprintf_stderr_common
15170 https://bugs.webkit.org/show_bug.cgi?id=33568
15172 Use BREW's DBGPRINTF to output debug messages.
15174 * wtf/Assertions.cpp:
15176 2010-08-28 Gavin Barraclough <barraclough@apple.com>
15178 Reviewed by Oliver Hunt.
15180 Bug 44830 - In Array's prototype functyions we're incorrectly handing large index values
15182 We are in places casting doubles to unsigneds, and unsigneds to ints, without always check
15183 that the result is within bounds. This is problematic in the case of double-to-unsigned
15184 conversion because we should be saturating to array length.
15186 Also, the error return value from Array.splice should be [], not undefined.
15188 I don't see any security concerns here. These methods are spec'ed in such a way that they
15189 can be applied to non Array objects, so in all cases the (potentially bogus) indices are
15190 being passed to functions that will safely check accesses are within bounds.
15192 * runtime/ArrayPrototype.cpp:
15193 (JSC::argumentClampedIndexFromStartOrEnd):
15194 (JSC::arrayProtoFuncJoin):
15195 (JSC::arrayProtoFuncConcat):
15196 (JSC::arrayProtoFuncReverse):
15197 (JSC::arrayProtoFuncShift):
15198 (JSC::arrayProtoFuncSlice):
15199 (JSC::arrayProtoFuncSort):
15200 (JSC::arrayProtoFuncSplice):
15201 (JSC::arrayProtoFuncUnShift):
15202 (JSC::arrayProtoFuncFilter):
15203 (JSC::arrayProtoFuncMap):
15204 (JSC::arrayProtoFuncEvery):
15205 (JSC::arrayProtoFuncForEach):
15206 (JSC::arrayProtoFuncSome):
15207 (JSC::arrayProtoFuncReduce):
15208 (JSC::arrayProtoFuncReduceRight):
15209 (JSC::arrayProtoFuncIndexOf):
15210 (JSC::arrayProtoFuncLastIndexOf):
15211 * runtime/JSValue.h:
15212 (JSC::JSValue::toUInt32):
15214 2010-08-28 Pratik Solanki <psolanki@apple.com>
15216 Reviewed by Dan Bernstein.
15218 Add an ENABLE define for purgeable memory support
15219 https://bugs.webkit.org/show_bug.cgi?id=44777
15223 2010-08-27 Kimmo Kinnunen <kimmo.t.kinnunen@nokia.com>
15225 Reviewed by Kenneth Rohde Christiansen.
15227 [Qt] NPAPI Plugin metadata should be cached, and loading a plugin should not require loading every plugin
15228 https://bugs.webkit.org/show_bug.cgi?id=43179
15230 Add ENABLE_NETSCAPE_PLUGIN_METADATA_CACHE flag to enable persistent
15231 NPAPI Plugin Cache. The flag is enabled by default.
15233 * wtf/Platform.h: Add ENABLE_NETSCAPE_PLUGIN_METADATA_CACHE
15235 2010-07-27 Jer Noble <jer.noble@apple.com>
15237 Reviewed by Eric Carlson.
15239 Add JavaScript API to allow a page to go fullscreen.
15240 rdar://problem/6867795
15241 https://bugs.webkit.org/show_bug.cgi?id=43099
15243 * wtf/Platform.h: Enable FULLSCREEN_API mode for the Mac (except iOS).
15245 2010-08-27 Gavin Barraclough <barraclough@apple.com>
15247 Windows build fix pt 2.
15249 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
15251 2010-08-27 Gavin Barraclough <barraclough@apple.com>
15253 Windows build fix pt 1.
15255 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
15257 2010-08-27 Gavin Barraclough <barraclough@apple.com>
15259 Reviewed by Oliver Hunt.
15261 Bug 44745 - Number.toFixed/toExponential/toPrecision are inaccurate.
15263 These methods should be using a version of dtoa that can generate results accurate
15264 to the requested precision, whereas our version of dtoa is only currently able to
15265 support producing results sufficiently accurate to distinguish the value from any
15266 other IEEE-754 double precision number.
15268 This change has no impact on benchmarks we track.
15270 On microbenchmarks for these functions, this is a slight regression where a high
15271 precision is requested (dtoa now need to iterate further to generate a a greater
15272 number of digits), but with smaller precision values (hopefully more common) this
15273 improves performance, since it reduced the accurate of result dtoa is required,
15274 to produce, and removes the need to pre-round values before calling dtoa.
15276 * JavaScriptCore.exp:
15277 doubleToStringInJavaScriptFormat renamed to numberToString
15279 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
15280 doubleToStringInJavaScriptFormat renamed to numberToString
15282 * runtime/UString.cpp:
15283 (JSC::UString::number):
15284 doubleToStringInJavaScriptFormat renamed to numberToString
15286 * wtf/DecimalNumber.h:
15287 (WTF::DecimalNumber::DecimalNumber):
15288 (WTF::DecimalNumber::toStringDecimal):
15289 (WTF::DecimalNumber::toStringExponential):
15290 Remove all pre-rounding of values, instead call dtoa correctly.
15295 Reenable support for rounding to specific-figures/decimal-places in dtoa.
15296 Modify to remove unbiased rounding, provide ECMA required away-from-zero.
15297 Rewrite doubleToStringInJavaScriptFormat to use DecimalNumber, rename to
15300 2010-08-27 Chao-ying Fu <fu@mips.com>
15302 Reviewed by Oliver Hunt.
15304 Byte alignment issue on MIPS
15305 https://bugs.webkit.org/show_bug.cgi?id=29415
15307 MIPS accesses one byte at a time for now to avoid the help from the
15308 kernel to fix unaligned accesses.
15310 * wtf/text/AtomicString.cpp:
15312 * wtf/text/StringHash.h:
15313 (WebCore::StringHash::equal):
15315 2010-08-27 Xan Lopez <xlopez@igalia.com>
15317 Reviewed by Tor Arne Vestbø.
15319 Fix a couple of typos in comment.
15321 * bytecode/CodeBlock.h:
15323 2010-08-26 Gavin Barraclough <barraclough@apple.com>
15329 2010-08-26 Gavin Barraclough <baraclough@apple.com>
15331 Reviewed by Sam Weinig.
15333 Bug 44735 - Clean up dtoa.cpp
15334 Remove unused & unmaintained code paths, reformat code to match
15335 coding standard & use platform #defines from Platform.h directly.
15355 2010-08-26 Gavin Barraclough <barraclough@apple.com>
15357 Rubber Stamped by Oliver Hunt.
15359 Partially revert r65959. The toString changes regressed the v8 tests,
15360 but keep the toFixed/toExponential/toPrecision changes.
15362 * JavaScriptCore.exp:
15363 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
15364 * runtime/NumberPrototype.cpp:
15365 * runtime/UString.cpp:
15366 (JSC::UString::number):
15367 * wtf/DecimalNumber.h:
15370 (WTF::doubleToStringInJavaScriptFormat):
15372 * wtf/text/WTFString.cpp:
15373 * wtf/text/WTFString.h:
15375 2010-08-26 James Robinson <jamesr@chromium.org>
15377 Reviewed by Darin Fisher.
15379 [chromium] Remove the USE(GLES2_RENDERING) define and associated code
15380 https://bugs.webkit.org/show_bug.cgi?id=43761
15382 Remove WTF_USE_GLES2_RENDERING from the list of defines in chromium, it's unused.
15386 2010-08-26 Gavin Barraclough <barraclough@apple.com>
15388 Rolling out r64608, this regressed performance.
15390 * JavaScriptCore.xcodeproj/project.pbxproj:
15391 * assembler/ARMAssembler.cpp:
15392 (JSC::ARMAssembler::executableCopy):
15393 * assembler/LinkBuffer.h:
15394 (JSC::LinkBuffer::LinkBuffer):
15395 (JSC::LinkBuffer::~LinkBuffer):
15396 (JSC::LinkBuffer::performFinalization):
15397 * assembler/MIPSAssembler.h:
15398 (JSC::MIPSAssembler::executableCopy):
15399 * assembler/X86Assembler.h:
15400 (JSC::X86Assembler::executableCopy):
15401 * bytecode/StructureStubInfo.h:
15402 (JSC::StructureStubInfo::initGetByIdProto):
15403 (JSC::StructureStubInfo::initGetByIdChain):
15404 (JSC::StructureStubInfo::initGetByIdSelfList):
15405 (JSC::StructureStubInfo::initGetByIdProtoList):
15406 (JSC::StructureStubInfo::initPutByIdTransition):
15407 * jit/ExecutableAllocator.cpp:
15408 (JSC::ExecutablePool::systemAlloc):
15409 * jit/ExecutableAllocator.h:
15410 (JSC::ExecutablePool::create):
15411 (JSC::ExecutableAllocator::ExecutableAllocator):
15412 (JSC::ExecutableAllocator::poolForSize):
15413 (JSC::ExecutablePool::ExecutablePool):
15414 (JSC::ExecutablePool::poolAllocate):
15415 * jit/ExecutableAllocatorFixedVMPool.cpp:
15416 (JSC::FixedVMPoolAllocator::allocInternal):
15418 (JSC::JIT::privateCompile):
15420 (JSC::JIT::compileGetByIdProto):
15421 (JSC::JIT::compileGetByIdSelfList):
15422 (JSC::JIT::compileGetByIdProtoList):
15423 (JSC::JIT::compileGetByIdChainList):
15424 (JSC::JIT::compileGetByIdChain):
15425 (JSC::JIT::compilePutByIdTransition):
15426 (JSC::JIT::compilePatchGetArrayLength):
15427 * jit/JITOpcodes.cpp:
15428 (JSC::JIT::privateCompileCTIMachineTrampolines):
15429 * jit/JITOpcodes32_64.cpp:
15430 (JSC::JIT::privateCompileCTIMachineTrampolines):
15431 (JSC::JIT::privateCompileCTINativeCall):
15432 * jit/JITPropertyAccess.cpp:
15433 (JSC::JIT::stringGetByValStubGenerator):
15434 (JSC::JIT::privateCompilePutByIdTransition):
15435 (JSC::JIT::privateCompilePatchGetArrayLength):
15436 (JSC::JIT::privateCompileGetByIdProto):
15437 (JSC::JIT::privateCompileGetByIdSelfList):
15438 (JSC::JIT::privateCompileGetByIdProtoList):
15439 (JSC::JIT::privateCompileGetByIdChainList):
15440 (JSC::JIT::privateCompileGetByIdChain):
15441 * jit/JITPropertyAccess32_64.cpp:
15442 (JSC::JIT::stringGetByValStubGenerator):
15443 (JSC::JIT::privateCompilePutByIdTransition):
15444 (JSC::JIT::privateCompilePatchGetArrayLength):
15445 (JSC::JIT::privateCompileGetByIdProto):
15446 (JSC::JIT::privateCompileGetByIdSelfList):
15447 (JSC::JIT::privateCompileGetByIdProtoList):
15448 (JSC::JIT::privateCompileGetByIdChainList):
15449 (JSC::JIT::privateCompileGetByIdChain):
15450 * jit/JITStubs.cpp:
15451 (JSC::JITThunks::tryCachePutByID):
15452 (JSC::JITThunks::tryCacheGetByID):
15453 (JSC::DEFINE_STUB_FUNCTION):
15454 (JSC::getPolymorphicAccessStructureListSlot):
15456 * jit/SpecializedThunkJIT.h:
15457 (JSC::SpecializedThunkJIT::finalize):
15458 * runtime/ExceptionHelpers.cpp:
15459 * runtime/ExceptionHelpers.h:
15460 * runtime/Executable.cpp:
15461 (JSC::EvalExecutable::compileInternal):
15462 (JSC::ProgramExecutable::compileInternal):
15463 (JSC::FunctionExecutable::compileForCallInternal):
15464 (JSC::FunctionExecutable::compileForConstructInternal):
15465 (JSC::FunctionExecutable::reparseExceptionInfo):
15466 (JSC::EvalExecutable::reparseExceptionInfo):
15467 * yarr/RegexJIT.cpp:
15468 (JSC::Yarr::RegexGenerator::compile):
15470 2010-08-26 Gavin Barraclough <barraclough@apple.com>
15472 Reviewed by Brady Eidson.
15474 Bug 44655 - Add debug only convenience methods to obtain a Vector<char> from a String/StringImpl.
15476 * wtf/text/WTFString.cpp:
15478 Return a Vector<char> containing the contents of a string as ASCII.
15480 2010-08-26 Sam Weinig <sam@webkit.org>
15482 Reviewed by Darin Adler.
15484 Add PassOwnArrayPtr
15485 https://bugs.webkit.org/show_bug.cgi?id=44627
15488 * JavaScriptCore.vcproj/WTF/WTF.vcproj:
15489 * JavaScriptCore.xcodeproj/project.pbxproj:
15493 Forward declare PassOwnArrayPtr.
15495 * wtf/OwnArrayPtr.h:
15496 Mimic the OwnPtr interface.
15498 * wtf/OwnArrayPtrCommon.h: Added.
15499 (WTF::deleteOwnedArrayPtr):
15500 Move delete function here so it can be shared by OwnArrayPtr and
15503 * wtf/PassOwnArrayPtr.h: Added.
15504 Mimic the PassOwnPtr interface.
15506 2010-08-26 Oliver Hunt <oliver@apple.com>
15508 Reviewed by Gavin Barraclough.
15510 [JSC] JavaScript parsing error when loading Equifax web page
15511 https://bugs.webkit.org/show_bug.cgi?id=42900
15513 '-->' is ostensibly only meant to occur when there is only
15514 whitespace preceeding it on the line. However firefox treats
15515 multiline comments as a space character, so they are allowed.
15516 One side effect of the firefox model is that any line terminators
15517 inside the multiline comment are ignored, so
15526 and so '-->' will not be a comment in this case. Happily this simply
15527 means that to fix this issue all we need to do is stop updating
15528 m_atLineStart when handling multiline comments.
15530 * parser/Lexer.cpp:
15533 2010-08-25 Oliver Hunt <oliver@apple.com>
15535 Reviewed by Geoffrey Garen.
15537 Improve overflow handling in StringImpl::Replace
15538 https://bugs.webkit.org/show_bug.cgi?id=42502
15539 <rdar://problem/8203794>
15541 Harden StringImpl::replace against overflow -- I can't see how this
15542 could be abused, but it's better to be safe than sorry.
15544 * wtf/text/StringImpl.cpp:
15545 (WTF::StringImpl::replace):
15547 2010-08-26 Martin Robinson <mrobinson@igalia.com>
15549 Reviewed by Xan Lopez.
15551 [GTK] The GNUmakefile.am files contain a myriad of confusing preprocessor and compiler flag definitions
15552 https://bugs.webkit.org/show_bug.cgi?id=44624
15554 Clean up GNUmakefile.am.
15556 * GNUmakefile.am: Alphabetize the include order in javascriptcore_cppflags. Move
15557 a couple include lines from the top-level GNUmakefile.am.
15559 2010-08-25 Xan Lopez <xlopez@igalia.com>
15561 Reviewed by Kent Tamura.
15563 Local variables 'k' and 'y' in s2b() in dtoa.cpp are computed but not used
15564 https://bugs.webkit.org/show_bug.cgi?id=29259
15566 Remove unused code in dtoa.cpp, spotted by Wan-Teh Chang.
15571 2010-08-25 Kwang Yul Seo <skyul@company100.net>
15573 Reviewed by Kevin Ollivier.
15575 [BREWMP] Add build system
15576 https://bugs.webkit.org/show_bug.cgi?id=44645
15578 Make waf script portable so that we can add more ports.
15582 2010-08-25 Michael Saboff <msaboff@apple.com>
15584 Reviewed by Sam Weinig.
15586 Remove the single entry regular expression cache introduced as part of
15587 the fix for https://bugs.webkit.org/show_bug.cgi?id=41238.
15588 The performance problem in Dromaeo that initiated that bug is no
15589 longer present. Dromaeo has been modified so that the regular
15590 expression tests are somewhat random and don't benefit from a
15591 single entry cache.
15593 * runtime/RegExp.cpp:
15594 (JSC::RegExp::RegExp):
15595 (JSC::RegExp::match):
15596 * runtime/RegExp.h:
15598 2010-08-25 Martin Robinson <mrobinson@igalia.com>
15600 Reviewed by Gustavo Noronha Silva.
15602 Cairo and EFL port shouldn't depend on glib.
15603 https://bugs.webkit.org/show_bug.cgi?id=44354
15605 Replace GRefPtr with PlatformRefPtr. Keep GLib specific bits in
15608 * GNUmakefile.am: Add PlatformRefPtr.h to the source list.
15609 * wtf/PlatformRefPtr.h: Migrated from GRefPtr.h.
15610 (WTF::PlatformRefPtr::PlatformRefPtr): Ditto.
15611 (WTF::PlatformRefPtr::~PlatformRefPtr): Ditto.
15612 (WTF::PlatformRefPtr::clear): Ditto.
15613 (WTF::PlatformRefPtr::get): Ditto.
15614 (WTF::PlatformRefPtr::operator*): Ditto.
15615 (WTF::PlatformRefPtr::operator->): Ditto.
15616 (WTF::PlatformRefPtr::operator!): Ditto.
15617 (WTF::PlatformRefPtr::operator UnspecifiedBoolType): Ditto.
15618 (WTF::PlatformRefPtr::hashTableDeletedValue): Ditto.
15619 (WTF::::operator): Ditto.
15620 (WTF::::swap): Ditto.
15621 (WTF::swap): Ditto.
15622 (WTF::operator==): Ditto.
15623 (WTF::operator!=): Ditto.
15624 (WTF::static_pointer_cast): Ditto.
15625 (WTF::const_pointer_cast): Ditto.
15626 (WTF::getPtr): Ditto.
15627 (WTF::adoptPlatformRef): Ditto.
15628 * wtf/gobject/GRefPtr.cpp: Changes to reflect new names.
15629 (WTF::refPlatformPtr):
15630 (WTF::derefPlatformPtr):
15631 * wtf/gobject/GRefPtr.h: Ditto.
15632 (WTF::refPlatformPtr):
15633 (WTF::derefPlatformPtr):
15635 2010-08-25 Xan Lopez <xlopez@igalia.com>
15637 Reviewed by Alexey Proskuryakov.
15639 Remove dead code in JSGlobalObject
15640 https://bugs.webkit.org/show_bug.cgi?id=44615
15642 The recursion data member in the JSGlobalObject and its getter
15643 plus inc/dec methods seems to be unused, remove them.
15645 * runtime/JSGlobalObject.cpp:
15646 (JSC::JSGlobalObject::init):
15647 * runtime/JSGlobalObject.h:
15649 2010-08-25 Michael Saboff <msaboff@apple.com>
15651 Reviewed by Geoffrey Garen.
15653 Changed the initial and subsequent allocation of vector storage to
15654 Array()s. The changes are to limit sparse arrays to 100000 entries
15655 and fixed the sparse map to vector storage conversion to use the
15656 minimum amount of memory needed to store the current number of entries.
15657 These changes address https://bugs.webkit.org/show_bug.cgi?id=43707
15659 * runtime/JSArray.cpp:
15660 (JSC::JSArray::putSlowCase):
15661 (JSC::JSArray::getNewVectorLength):
15663 2010-08-16 Gabor Loki <loki@webkit.org>
15665 Reviewed by Gavin Barraclough.
15667 Avoid increasing required alignment of target type warning
15668 https://bugs.webkit.org/show_bug.cgi?id=43963
15670 Fix platform independent alignment warnings.
15672 * wtf/ListHashSet.h:
15673 (WTF::ListHashSetNodeAllocator::pool):
15675 2010-08-19 Gabor Loki <loki@webkit.org>
15677 Reviewed by Gavin Barraclough.
15679 Enable truncated floating point feature on ARM
15680 https://bugs.webkit.org/show_bug.cgi?id=44233
15682 Enable truncated floating point feature with the help of VCVTR.S32.F64
15683 instruction. If VCVTR.S32.F64 can't fit the result into a 32-bit
15684 integer/register, it saturates at INT_MAX or INT_MIN. Testing this
15685 looks quicker than testing FPSCR for exception.
15687 Inspired by Jacob Bramley's patch from JaegerMonkey
15689 * assembler/ARMAssembler.h:
15690 (JSC::ARMAssembler::):
15691 (JSC::ARMAssembler::cmn_r):
15692 (JSC::ARMAssembler::vcvtr_s32_f64_r):
15693 * assembler/MacroAssemblerARM.h:
15694 (JSC::MacroAssemblerARM::supportsFloatingPointTruncate):
15695 (JSC::MacroAssemblerARM::branchTruncateDoubleToInt32):
15697 2010-08-24 Gavin Barraclough <barraclough@apple.com>
15701 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
15703 2010-08-24 Gavin Barraclough <barraclough@apple.com>
15707 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
15708 * wtf/DecimalNumber.h:
15709 (WTF::DecimalNumber::intPow10):
15713 2010-08-23 Gavin Barraclough <barraclough@apple.com>
15715 Reviewed by Oliver Hunt.
15717 https://bugs.webkit.org/show_bug.cgi?id=44487
15719 Number.toExponential/toFixed/toPrecision all contain a spaghetti of duplicated
15720 code & unnecessary complexity. Add a new DecimalNumber class to encapsulate
15721 double to string conversion, share the implementations of rounding &
15722 decimal-fraction/exponential formatting.
15724 * JavaScriptCore.exp:
15727 * runtime/NumberPrototype.cpp:
15728 (JSC::toThisNumber):
15729 (JSC::getIntegerArgumentInRange):
15730 Helper methods used in implementing toExponential/toFixed/toString.
15731 (JSC::numberProtoFuncToExponential):
15732 (JSC::numberProtoFuncToFixed):
15733 (JSC::numberProtoFuncToPrecision):
15734 Reimplemented using new DecimalNumber class.
15736 * runtime/UString.cpp:
15737 (JSC::UString::number):
15738 Updated to call numberToString.
15740 * wtf/DecimalNumber.h: Added.
15742 (WTF::DecimalNumber::DecimalNumber):
15743 (WTF::DecimalNumber::toStringDecimal):
15744 (WTF::DecimalNumber::toStringExponential):
15745 (WTF::DecimalNumber::sign):
15746 (WTF::DecimalNumber::exponent):
15747 (WTF::DecimalNumber::significand):
15748 (WTF::DecimalNumber::precision):
15749 (WTF::DecimalNumber::init):
15750 (WTF::DecimalNumber::isZero):
15751 (WTF::DecimalNumber::roundToPrecision):
15752 New class to perform double to string conversion.
15753 Has three constructors, which allow conversion with no rounding,
15754 rounding to significant-figures, or rounding to decimal-places,
15755 and two methods for formatting strings, either using decimal
15756 fraction or exponential encoding. Internal implementation uses
15757 pre-rounding of the values before calling dtoa rather than
15758 relying on dtoa to correctly round, which does not produce
15759 fully accurate results. Hopefully we can address this in the
15765 intPow10 is used internally by DecimalNumber.
15767 * wtf/text/WTFString.cpp:
15768 (WTF::copyToString):
15769 (WTF::nanOrInfToString):
15770 Used internally in numberToString for NaN/Infinity handling.
15771 (WTF::numberToString):
15772 Added new method to convert doubles to strings.
15774 * wtf/text/WTFString.h:
15775 Added declaration for numberToString. This is here because
15776 we should switch over to using this for all double to string
15777 conversion in WebCore (see section 2.4.4.3 of the HTML5 spec).
15779 2010-08-24 Oliver Hunt <oliver@apple.com>
15781 Reviewed by Geoff Garen.
15783 Don't seed the JS random number generator from time()
15784 https://bugs.webkit.org/show_bug.cgi?id=41868
15785 <rdar://problem/8171025>
15787 Switch to using the secure random number generator to
15788 seed the fast random generator, and make the generator
15789 be per global object.
15791 * runtime/JSGlobalData.cpp:
15792 (JSC::JSGlobalData::JSGlobalData):
15793 * runtime/JSGlobalData.h:
15794 * runtime/JSGlobalObject.h:
15795 (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData):
15796 (JSC::JSGlobalObject::weakRandomNumber):
15797 * runtime/MathObject.cpp:
15798 (JSC::mathProtoFuncRandom):
15800 2010-08-24 Oliver Hunt <oliver@apple.com>
15802 Reviewed by Beth Dakin.
15804 Make overflow guards in UString::utf8 explicit
15805 https://bugs.webkit.org/show_bug.cgi?id=44540
15807 Add an explicit overflow check prior to allocating our buffer,
15808 rather than implicitly relying on the guard in convertUTF16ToUTF8.
15810 * runtime/UString.cpp:
15811 (JSC::UString::utf8):
15813 2010-08-24 Yael Aharon <yael.aharon@nokia.com>
15815 Reviewed by Simon Hausmann.
15817 [Symbian] Fix commit/decommit of system memory using RChunk
15819 Swap accidentially reversed start and m_base values for determining the
15820 offset within the RChunk.
15822 * wtf/PageReservation.h:
15823 (WTF::PageReservation::systemCommit):
15824 (WTF::PageReservation::systemDecommit):
15826 2010-08-23 Patrick Gansterer <paroga@paroga.com>
15828 Rubber-stamped by Gabor Loki.
15830 [WINCE] Buildfix for GeneratedJITStubs after r64818
15831 https://bugs.webkit.org/show_bug.cgi?id=44469
15833 Use " THUNK_RETURN_ADDRESS_OFFSET" instead of "#offset#".
15835 * jit/JITStubs.cpp:
15837 2010-08-23 Oliver Hunt <oliver@apple.com>
15839 Reviewed by Darin Adler.
15841 [REGRESSION] Interpreter incorrectly excludes prototype chain when validating put_by_id_transition
15842 https://bugs.webkit.org/show_bug.cgi?id=44240
15843 <rdar://problem/8328995>
15845 Fix an error I introduced when cleaning up the interpreter side of the logic
15846 to prevent setters being called in object initialisers.
15848 * interpreter/Interpreter.cpp:
15849 (JSC::Interpreter::privateExecute):
15851 2010-08-23 Michael Saboff <msaboff@apple.com>
15853 Reviewed by Oliver Hunt.
15855 Fixed case where a single character search string in a string.replace()
15856 did not properly handle back reference replacement. The fix is to
15857 check for a '$' as part of the check to see if we can execute the
15858 single character replace optimization.
15859 https://bugs.webkit.org/show_bug.cgi?id=44067
15861 * runtime/StringPrototype.cpp:
15862 (JSC::stringProtoFuncReplace):
15864 2010-08-23 Oliver Hunt <oliver@apple.com>
15866 Reviewed by Gavin Barraclough.
15868 JSON.stringify is much slower than Firefox on particular pathological input
15869 https://bugs.webkit.org/show_bug.cgi?id=44456
15871 Make StringBuilder::reserveCapacity reserve additional space so we don't end up
15872 repeatedly copying the entire result string.
15874 * runtime/StringBuilder.h:
15875 (JSC::StringBuilder::append):
15876 (JSC::StringBuilder::reserveCapacity):
15878 2010-08-23 Jian Li <jianli@chromium.org>
15880 Reviewed by Darin Fisher.
15882 Handle blob resource.
15883 https://bugs.webkit.org/show_bug.cgi?id=43941
15885 * JavaScriptCore.exp: Add an export that is neede by BlobResourceHandle.
15887 2010-08-19 Andreas Kling <andreas.kling@nokia.com>
15889 Reviewed by Geoffrey Garen.
15891 JSC: Move the static_cast into to(U)Int32 fast case
15892 https://bugs.webkit.org/show_bug.cgi?id=44037
15894 Do the static_cast<(u)int32_t> inline to avoid the function call overhead
15895 for easily converted values (within (u)int32_t range.)
15897 * runtime/JSValue.cpp:
15898 (JSC::toInt32SlowCase):
15899 (JSC::toUInt32SlowCase):
15900 * runtime/JSValue.h:
15901 (JSC::JSValue::toInt32):
15902 (JSC::JSValue::toUInt32):
15904 2010-08-18 Andreas Kling <andreas.kling@nokia.com>
15906 Reviewed by Geoffrey Garen.
15908 REGRESSION(r58469): Math.pow() always returns double-backed JSValue which is extremely slow as array subscript
15909 https://bugs.webkit.org/show_bug.cgi?id=43742
15911 Add codegen for pow() to return Int32 values when possible.
15913 * jit/ThunkGenerators.cpp:
15914 (JSC::powThunkGenerator):
15916 2010-08-18 Gabor Loki <loki@webkit.org>
15918 Reviewed by Gavin Barraclough.
15920 The JITStackFrame is wrong using Thumb-2 JIT with JSVALUE32_64
15921 https://bugs.webkit.org/show_bug.cgi?id=43897
15923 A 64 bits wide member in a structure is aligned to 8 bytes on ARM by
15924 default, but this is not taken into account in the offset defines of
15927 * jit/JITStubs.cpp:
15930 2010-08-18 Gavin Barraclough <barraclough@apple.com>
15932 Rubber stamped by Sam Weinig.
15934 Rename UString::substr to substringSharingImpl, add to WTF::String.
15935 Now WTF::String can do everything that JSC::UString can do!
15937 * JavaScriptCore.exp:
15938 * bytecode/CodeBlock.cpp:
15939 (JSC::escapeQuotes):
15940 * bytecompiler/NodesCodegen.cpp:
15942 * parser/SourceProvider.h:
15943 (JSC::UStringSourceProvider::getRange):
15944 * runtime/FunctionPrototype.cpp:
15945 (JSC::insertSemicolonIfNeeded):
15946 * runtime/JSGlobalObjectFunctions.cpp:
15948 * runtime/JSONObject.cpp:
15950 (JSC::Stringifier::indent):
15951 (JSC::Stringifier::unindent):
15952 * runtime/JSString.cpp:
15953 (JSC::JSString::replaceCharacter):
15954 * runtime/NumberPrototype.cpp:
15955 (JSC::numberProtoFuncToFixed):
15956 (JSC::numberProtoFuncToPrecision):
15957 * runtime/StringPrototype.cpp:
15958 (JSC::stringProtoFuncReplace):
15960 * runtime/UString.cpp:
15961 (JSC::UString::substringSharingImpl):
15962 * runtime/UString.h:
15963 * wtf/text/WTFString.cpp:
15964 (WTF::String::substringSharingImpl):
15965 * wtf/text/WTFString.h:
15967 2010-08-18 Gavin Barraclough <barraclough@apple.com>
15971 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
15972 * JavaScriptCore.xcodeproj/project.pbxproj:
15974 2010-08-18 Gavin Barraclough <barraclough@apple.com>
15978 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
15979 * JavaScriptCore.xcodeproj/project.pbxproj:
15981 2010-08-17 Gavin Barraclough <barraclough@apple.com>
15983 Reviewed by Sam Weinig.
15985 Bug 44146 - Remove toDouble/toUInt32 methods from UString.
15987 These methods all implement JavaScript language specific behaviour, and as such
15988 are not suited to being on a generic string object. They are also inefficient
15989 and incorrectly used, refactor & cleanup. Uses of these methods really divide
15990 out into two cases.
15993 Uses of toDouble from JSString and from parseFloat are implementing ecma's
15994 ToNumber conversion from strings (see ecma-262 9.3.1), so UString::toDouble
15995 should largely just be moved out to a global jsToNumber function. ToNumber is
15996 capable of recognizing either decimal or hexadecimal numbers, but parseFloat
15997 should only recognize decimal values. This is currently handled by testing for
15998 hexadecimal before calling toDouble, which should unnecessary - instead we can
15999 just split out the two parts to the grammar into separate functions. Also,
16000 strtod recognizes a set of literals (nan, inf, and infinity - all with any
16001 capitalization) - which are not defined by any of the specs we are implementing.
16002 To handle this we need to perform additional work in toDouble to convert the
16003 unsupported cases of infinities back to NaNs. Instead we should simply remove
16004 support for this literals from strtod. This should provide a more desirable
16005 behaviour for all clients of strtod.
16007 Indexed properties:
16008 Uses of the toStrictUInt32 methods are were all converting property names to
16009 indices, and all uses of toUInt32 were incorrect; in all cases we should have
16010 been calling toUInt32. This error results in some incorrect behaviour in the
16011 DOM (accessing property "0 " of a NodeList should fail; it currently does not).
16012 Move this method onto Identifier (our canonical property name), and make it
16013 always perform a strict conversion. Add a layout test to check NodeList does
16014 convert indexed property names correctly.
16016 * JavaScriptCore.exp:
16017 * runtime/Arguments.cpp:
16018 (JSC::Arguments::getOwnPropertySlot):
16019 (JSC::Arguments::getOwnPropertyDescriptor):
16020 (JSC::Arguments::put):
16021 (JSC::Arguments::deleteProperty):
16022 * runtime/Identifier.cpp:
16023 (JSC::Identifier::toUInt32):
16024 * runtime/Identifier.h:
16025 (JSC::Identifier::toUInt32):
16026 * runtime/JSArray.cpp:
16027 (JSC::JSArray::getOwnPropertySlot):
16028 (JSC::JSArray::getOwnPropertyDescriptor):
16029 (JSC::JSArray::put):
16030 (JSC::JSArray::deleteProperty):
16031 * runtime/JSArray.h:
16032 (JSC::Identifier::toArrayIndex):
16033 * runtime/JSByteArray.cpp:
16034 (JSC::JSByteArray::getOwnPropertySlot):
16035 (JSC::JSByteArray::getOwnPropertyDescriptor):
16036 (JSC::JSByteArray::put):
16037 * runtime/JSGlobalObjectFunctions.cpp:
16039 (JSC::jsHexIntegerLiteral):
16040 (JSC::jsStrDecimalLiteral):
16043 * runtime/JSGlobalObjectFunctions.h:
16044 * runtime/JSString.cpp:
16045 (JSC::JSString::getPrimitiveNumber):
16046 (JSC::JSString::toNumber):
16047 (JSC::JSString::getStringPropertyDescriptor):
16048 * runtime/JSString.h:
16049 (JSC::JSString::getStringPropertySlot):
16050 * runtime/ObjectPrototype.cpp:
16051 (JSC::ObjectPrototype::put):
16052 * runtime/StringObject.cpp:
16053 (JSC::StringObject::deleteProperty):
16054 * runtime/UString.cpp:
16055 * runtime/UString.h:
16059 2010-08-17 Gavin Barraclough <barraclough@apple.com>
16061 Reviewed by Sam Weinig.
16063 Bug 44099 - REGRESSION(r65468): Crashes in StringImpl::find
16065 Bug 44080 introuduced a couple of cases in which array bounds could be overrun.
16066 One of these was fixed in r65493, this patch fixes the other and address the
16067 concerns voiced in comment #6 by restructuring the loops to remove the code
16068 dupliction without introducing an additional if check.
16070 * wtf/text/StringImpl.cpp:
16071 (WTF::StringImpl::find):
16072 (WTF::StringImpl::findIgnoringCase):
16073 (WTF::StringImpl::reverseFind):
16074 (WTF::StringImpl::reverseFindIgnoringCase):
16076 2010-08-17 No'am Rosenthal <noam.rosenthal@nokia.com>
16078 Reviewed by Ariya Hidayat.
16080 [Qt] Move the accelerated compositing build flag to the right place
16081 https://bugs.webkit.org/show_bug.cgi?id=43882
16085 2010-08-17 Yuta Kitamura <yutak@chromium.org>
16087 Reviewed by Shinichiro Hamaji.
16089 Avoid uninitialized memory read in StringImpl::find().
16091 REGRESSION(r65468): Crashes in StringImpl::find
16092 https://bugs.webkit.org/show_bug.cgi?id=44099
16094 * wtf/text/StringImpl.cpp:
16095 (WTF::StringImpl::find):
16097 2010-08-16 Gavin Barraclough <barraclough@apple.com>
16099 Rubber stamped by Sam Weinig
16101 Add VectorTraits to String & DefaultHash traits to UString to unify behaviour.
16103 * runtime/UString.h:
16104 (JSC::UStringHash::hash):
16105 (JSC::UStringHash::equal):
16107 * wtf/text/WTFString.h:
16110 2010-08-16 Gavin Barraclough <barraclough@apple.com>
16112 Rubber stamped by Sam Weinig
16114 Remove unnecessary includes from UString.h, add new includes as necessary.
16116 * profiler/CallIdentifier.h:
16117 * profiler/ProfileNode.h:
16118 * runtime/DateConversion.cpp:
16119 * runtime/Identifier.h:
16120 (JSC::IdentifierRepHash::hash):
16121 * runtime/RegExpCache.h:
16122 * runtime/RegExpKey.h:
16123 * runtime/UString.cpp:
16124 (JSC::UString::substr):
16125 * runtime/UString.h:
16126 * wtf/text/WTFString.h:
16128 2010-08-16 Gavin Barraclough <barraclough@apple.com>
16130 Reviewed by Sam Weinig
16132 Bug 44080 - String find/reverseFind methods need tidying up
16133 These methods have a couple of problems with their interface, and implementation.
16135 These methods take and int index, and return an int - however this is problematic
16136 since on 64-bit string indices may have a full 32-bit range. This spills out into
16137 surrounding code, which unsafely casts string indices from unsigned to int. Code
16138 checking the result of these methods check for a mix of "== -1", "< 0", and
16139 "== notFound". Clean this up by changing these methods to take an unsigned
16140 starting index, and return a size_t. with a failed match indicated by notFound.
16141 reverseFind also has a special meaning for the starting index argument, in that a
16142 negative index is interpreted as an offset back from the end of the string. Remove
16143 this functionality, in the (1!) case where it is used we should just calculate the
16144 offset by subtracting from the string's length.
16146 The implementation has a few problems too. The code is not in webkit style, in
16147 using assorted abbreviations in variable names, and implementations of similar
16148 find methods with differing argument types were unnecessarily inconsistent. When
16149 find is passed const char* data the string would be handled as latin1 (zero
16150 extended to UTF-16) for all characters but the first; this is sign extended.
16151 Case-insensitive find is broken for unicode strings; the hashing optimization is
16152 not unicode safe, and could result in false negatives.
16154 Unify UString find methods to match String.
16156 * JavaScriptCore.exp:
16157 * bytecode/CodeBlock.cpp:
16158 (JSC::escapeQuotes):
16159 * bytecompiler/NodesCodegen.cpp:
16161 * runtime/JSString.cpp:
16162 (JSC::JSString::replaceCharacter):
16163 * runtime/RegExp.cpp:
16164 (JSC::RegExp::RegExp):
16165 * runtime/RegExpKey.h:
16166 (JSC::RegExpKey::getFlagsValue):
16167 * runtime/StringPrototype.cpp:
16168 (JSC::substituteBackreferencesSlow):
16169 (JSC::substituteBackreferences):
16170 (JSC::stringProtoFuncReplace):
16171 (JSC::stringProtoFuncIndexOf):
16172 (JSC::stringProtoFuncLastIndexOf):
16173 (JSC::stringProtoFuncSplit):
16174 * runtime/UString.cpp:
16175 * runtime/UString.h:
16176 (JSC::UString::find):
16177 (JSC::UString::reverseFind):
16178 * wtf/text/AtomicString.h:
16179 (WTF::AtomicString::find):
16180 * wtf/text/StringImpl.cpp:
16181 (WTF::StringImpl::find):
16182 (WTF::StringImpl::findCaseInsensitive):
16183 (WTF::StringImpl::reverseFind):
16184 (WTF::StringImpl::reverseFindCaseInsensitive):
16185 (WTF::StringImpl::endsWith):
16186 (WTF::StringImpl::replace):
16187 * wtf/text/StringImpl.h:
16188 (WTF::StringImpl::startsWith):
16189 * wtf/text/WTFString.cpp:
16190 (WTF::String::split):
16191 * wtf/text/WTFString.h:
16192 (WTF::String::find):
16193 (WTF::String::reverseFind):
16194 (WTF::String::findCaseInsensitive):
16195 (WTF::String::reverseFindCaseInsensitive):
16196 (WTF::String::contains):
16198 (WTF::reverseFind):
16200 2010-08-16 Kevin Ollivier <kevino@theolliviers.com>
16202 [wx] Build fix, do not build WebCore as a convenience library as this leads to
16203 errors in the Win build w/export symbols and causes problems with DOM bindings
16208 2010-08-16 Leandro Pereira <leandro@profusion.mobi>
16210 [EFL] Build fix after r65366.
16212 * CMakeLists.txt: Use if (VAR) instead of if (${VAR}) to check if
16214 * jsc/CMakeLists.txt: Ditto.
16215 * wtf/CMakeLists.txt: Ditto.
16217 2010-08-15 Kevin Ollivier <kevino@theolliviers.com>
16219 [wx] Build fix, don't build intermediate source in DerivedSources dir.
16223 2010-08-14 Patrick Gansterer <paroga@paroga.com>
16225 Reviewed by Kenneth Rohde Christiansen.
16227 [CMake] Add preprocessor detection for generator scripts
16228 https://bugs.webkit.org/show_bug.cgi?id=43984
16232 2010-08-14 Patrick Gansterer <paroga@paroga.com>
16234 Reviewed by Kenneth Rohde Christiansen.
16236 [CMake] Set target properties only if available
16237 https://bugs.webkit.org/show_bug.cgi?id=43978
16240 * jsc/CMakeLists.txt:
16241 * wtf/CMakeLists.txt:
16243 2010-08-13 Kevin Ollivier <kevino@theolliviers.com>
16245 [wx] Build fix, add CString to the list of forwards.
16249 2010-08-13 Gavin Barraclough <barraclough@apple.com>
16253 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
16255 2010-08-13 Gavin Barraclough <barraclough@apple.com>
16259 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
16261 2010-08-13 Gavin Barraclough <barraclough@apple.com>
16265 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
16267 2010-08-13 Gavin Barraclough <barraclough@apple.com>
16269 Rubber stamped by Sam Weinig.
16270 Switch String::/UString::ascii() to return a CString.
16272 * JavaScriptCore.exp:
16273 * JavaScriptCore.xcodeproj/project.pbxproj:
16274 * bytecode/CodeBlock.cpp:
16275 (JSC::CodeBlock::dump):
16276 * bytecode/SamplingTool.cpp:
16277 (JSC::SamplingTool::dump):
16278 * interpreter/CallFrame.cpp:
16279 (JSC::CallFrame::dumpCaller):
16283 * runtime/Identifier.h:
16284 (JSC::Identifier::ascii):
16285 * runtime/ScopeChain.cpp:
16286 (JSC::ScopeChainNode::print):
16287 * runtime/UString.cpp:
16288 (JSC::UString::ascii):
16289 (JSC::UString::latin1):
16290 * runtime/UString.h:
16291 * wtf/text/StringImpl.cpp:
16292 (WTF::StringImpl::asciiOLD):
16293 * wtf/text/StringImpl.h:
16294 * wtf/text/WTFString.cpp:
16295 (WTF::String::ascii):
16296 (WTF::String::latin1):
16297 * wtf/text/WTFString.h:
16299 2010-08-13 Gabor Loki <loki@webkit.org>
16301 Reviewed by Gavin Barraclough.
16303 Avoid increasing required alignment of target type warning on ARM
16304 https://bugs.webkit.org/show_bug.cgi?id=38045
16306 The reinterpret_cast<Type1*>([pointer to Type2]) expressions - where
16307 sizeof(Type1) > sizeof(Type2) - cause the following warning on ARM:
16308 increases required alignment of target type warnings.
16309 Casting the type of [pointer to Type2] object to void* bypasses the
16312 * assembler/ARMAssembler.cpp:
16313 (JSC::ARMAssembler::executableCopy):
16314 * assembler/AssemblerBuffer.h:
16315 (JSC::AssemblerBuffer::putShortUnchecked):
16316 (JSC::AssemblerBuffer::putIntUnchecked):
16317 (JSC::AssemblerBuffer::putInt64Unchecked):
16318 * interpreter/RegisterFile.h:
16319 (JSC::RegisterFile::RegisterFile):
16320 (JSC::RegisterFile::grow):
16321 * jit/JITStubs.cpp:
16322 * pcre/pcre_compile.cpp:
16324 * runtime/JSArray.cpp:
16325 (JSC::JSArray::putSlowCase):
16326 (JSC::JSArray::increaseVectorLength):
16327 (JSC::JSArray::increaseVectorPrefixLength):
16328 (JSC::JSArray::shiftCount):
16329 (JSC::JSArray::unshiftCount):
16330 * wtf/FastMalloc.cpp:
16331 (WTF::PageHeapAllocator::New):
16332 (WTF::TCMalloc_Central_FreeList::Populate):
16334 (WTF::reverseBytes):
16335 (WTF::MD5::addBytes):
16336 (WTF::MD5::checksum):
16337 * wtf/StdLibExtras.h:
16338 (isPointerTypeAlignmentOkay):
16339 (reinterpret_cast_ptr):
16341 (WTF::VectorBuffer::inlineBuffer):
16342 * wtf/qt/StringQt.cpp:
16343 (WTF::String::String):
16345 2010-08-13 Gavin Barraclough <barraclough@apple.com>
16347 Reviewed by Sam Weinig
16349 Unify UString::UTF8String() & String::utf8() methods,
16350 remove UString::cost() & make atArrayIndex a free function.
16352 * JavaScriptCore.exp:
16353 * bytecode/CodeBlock.cpp:
16354 (JSC::constantName):
16356 (JSC::CodeBlock::registerName):
16358 (JSC::printGlobalResolveInfo):
16359 (JSC::printStructureStubInfo):
16360 (JSC::CodeBlock::printStructure):
16361 (JSC::CodeBlock::printStructures):
16366 (fillBufferWithContentsOfFile):
16367 * pcre/pcre_exec.cpp:
16368 (Histogram::~Histogram):
16369 * profiler/CallIdentifier.h:
16370 (JSC::CallIdentifier::c_str):
16371 * profiler/Profile.cpp:
16372 (JSC::Profile::debugPrintDataSampleStyle):
16373 * profiler/ProfileGenerator.cpp:
16374 (JSC::ProfileGenerator::willExecute):
16375 (JSC::ProfileGenerator::didExecute):
16376 * profiler/ProfileNode.cpp:
16377 (JSC::ProfileNode::debugPrintData):
16378 (JSC::ProfileNode::debugPrintDataSampleStyle):
16379 * runtime/Arguments.cpp:
16380 (JSC::Arguments::getOwnPropertySlot):
16381 (JSC::Arguments::getOwnPropertyDescriptor):
16382 (JSC::Arguments::put):
16383 (JSC::Arguments::deleteProperty):
16384 * runtime/DateConversion.cpp:
16386 * runtime/Identifier.h:
16387 (JSC::Identifier::toStrictUInt32):
16388 * runtime/JSArray.cpp:
16389 (JSC::JSArray::getOwnPropertySlot):
16390 (JSC::JSArray::getOwnPropertyDescriptor):
16391 (JSC::JSArray::put):
16392 (JSC::JSArray::deleteProperty):
16393 * runtime/JSArray.h:
16394 (JSC::toArrayIndex):
16395 * runtime/JSGlobalObjectFunctions.cpp:
16398 (JSC::globalFuncJSCPrint):
16399 * runtime/JSString.h:
16400 (JSC::RopeBuilder::JSString):
16401 * runtime/UString.cpp:
16402 (JSC::UString::toDouble):
16403 (JSC::putUTF8Triple):
16404 (JSC::UString::utf8):
16405 * runtime/UString.h:
16406 (JSC::UString::~UString):
16407 (JSC::UString::isNull):
16408 (JSC::UString::isEmpty):
16409 (JSC::UString::impl):
16410 * wtf/text/WTFString.cpp:
16411 (WTF::String::utf8):
16412 * wtf/text/WTFString.h:
16413 (WTF::String::~String):
16414 (WTF::String::swap):
16415 (WTF::String::isNull):
16416 (WTF::String::isEmpty):
16417 (WTF::String::impl):
16418 (WTF::String::length):
16419 (WTF::String::String):
16420 (WTF::String::isHashTableDeletedValue):
16422 2010-08-12 Zoltan Herczeg <zherczeg@webkit.org>
16424 Reviewed by Gavin Barraclough.
16426 Refactoring the fpu code generator for the ARM port
16427 https://bugs.webkit.org/show_bug.cgi?id=43842
16429 Support up to 32 double precision registers, and the
16430 recent VFP instruction formats. This patch is mainly
16431 a style change which keeps the current functionality.
16433 * assembler/ARMAssembler.h:
16434 (JSC::ARMRegisters::):
16435 (JSC::ARMAssembler::):
16436 (JSC::ARMAssembler::emitInst):
16437 (JSC::ARMAssembler::emitDoublePrecisionInst):
16438 (JSC::ARMAssembler::emitSinglePrecisionInst):
16439 (JSC::ARMAssembler::vadd_f64_r):
16440 (JSC::ARMAssembler::vdiv_f64_r):
16441 (JSC::ARMAssembler::vsub_f64_r):
16442 (JSC::ARMAssembler::vmul_f64_r):
16443 (JSC::ARMAssembler::vcmp_f64_r):
16444 (JSC::ARMAssembler::vsqrt_f64_r):
16445 (JSC::ARMAssembler::vmov_vfp_r):
16446 (JSC::ARMAssembler::vmov_arm_r):
16447 (JSC::ARMAssembler::vcvt_f64_s32_r):
16448 (JSC::ARMAssembler::vcvt_s32_f64_r):
16449 (JSC::ARMAssembler::vmrs_apsr):
16450 * assembler/MacroAssemblerARM.h:
16451 (JSC::MacroAssemblerARM::addDouble):
16452 (JSC::MacroAssemblerARM::divDouble):
16453 (JSC::MacroAssemblerARM::subDouble):
16454 (JSC::MacroAssemblerARM::mulDouble):
16455 (JSC::MacroAssemblerARM::sqrtDouble):
16456 (JSC::MacroAssemblerARM::convertInt32ToDouble):
16457 (JSC::MacroAssemblerARM::branchDouble):
16458 (JSC::MacroAssemblerARM::branchConvertDoubleToInt32):
16460 2010-08-12 Sheriff Bot <webkit.review.bot@gmail.com>
16462 Unreviewed, rolling out r65295.
16463 http://trac.webkit.org/changeset/65295
16464 https://bugs.webkit.org/show_bug.cgi?id=43950
16466 It broke 4 sputnik tests (Requested by Ossy on #webkit).
16468 * JavaScriptCore.exp:
16469 * bytecode/CodeBlock.cpp:
16470 (JSC::constantName):
16472 (JSC::CodeBlock::registerName):
16474 (JSC::printGlobalResolveInfo):
16475 (JSC::printStructureStubInfo):
16476 (JSC::CodeBlock::printStructure):
16477 (JSC::CodeBlock::printStructures):
16482 (fillBufferWithContentsOfFile):
16483 * pcre/pcre_exec.cpp:
16484 (Histogram::~Histogram):
16485 * profiler/CallIdentifier.h:
16486 (JSC::CallIdentifier::c_str):
16487 * profiler/Profile.cpp:
16488 (JSC::Profile::debugPrintDataSampleStyle):
16489 * profiler/ProfileGenerator.cpp:
16490 (JSC::ProfileGenerator::willExecute):
16491 (JSC::ProfileGenerator::didExecute):
16492 * profiler/ProfileNode.cpp:
16493 (JSC::ProfileNode::debugPrintData):
16494 (JSC::ProfileNode::debugPrintDataSampleStyle):
16495 * runtime/Arguments.cpp:
16496 (JSC::Arguments::getOwnPropertySlot):
16497 (JSC::Arguments::getOwnPropertyDescriptor):
16498 (JSC::Arguments::put):
16499 (JSC::Arguments::deleteProperty):
16500 * runtime/DateConversion.cpp:
16502 * runtime/Identifier.h:
16503 (JSC::Identifier::Identifier):
16504 (JSC::Identifier::toArrayIndex):
16505 * runtime/JSArray.cpp:
16506 (JSC::JSArray::getOwnPropertySlot):
16507 (JSC::JSArray::getOwnPropertyDescriptor):
16508 (JSC::JSArray::put):
16509 (JSC::JSArray::deleteProperty):
16510 * runtime/JSArray.h:
16511 * runtime/JSGlobalObjectFunctions.cpp:
16514 (JSC::globalFuncJSCPrint):
16515 * runtime/JSString.h:
16516 (JSC::RopeBuilder::JSString):
16517 * runtime/UString.cpp:
16518 (JSC::UString::toDouble):
16519 (JSC::UString::UTF8String):
16520 * runtime/UString.h:
16521 (JSC::UString::isNull):
16522 (JSC::UString::isEmpty):
16523 (JSC::UString::impl):
16524 (JSC::UString::cost):
16525 (JSC::UString::~UString):
16526 (JSC::UString::toArrayIndex):
16527 * wtf/text/WTFString.cpp:
16528 (WTF::String::utf8):
16529 * wtf/text/WTFString.h:
16530 (WTF::String::String):
16531 (WTF::String::isHashTableDeletedValue):
16532 (WTF::String::length):
16533 (WTF::String::operator[]):
16534 (WTF::String::isNull):
16535 (WTF::String::isEmpty):
16536 (WTF::String::impl):
16538 2010-08-12 Gavin Barraclough <barraclough@apple.com>
16542 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
16544 2010-08-12 Gavin Barraclough <barraclough@apple.com>
16546 Reviewed by Sam Weinig
16548 Unify UString::UTF8String() & String::utf8() methods,
16549 remove UString::cost() & make atArrayIndex a free function.
16551 * JavaScriptCore.exp:
16552 * bytecode/CodeBlock.cpp:
16553 (JSC::constantName):
16555 (JSC::CodeBlock::registerName):
16557 (JSC::printGlobalResolveInfo):
16558 (JSC::printStructureStubInfo):
16559 (JSC::CodeBlock::printStructure):
16560 (JSC::CodeBlock::printStructures):
16565 (fillBufferWithContentsOfFile):
16566 * pcre/pcre_exec.cpp:
16567 (Histogram::~Histogram):
16568 * profiler/CallIdentifier.h:
16569 (JSC::CallIdentifier::c_str):
16570 * profiler/Profile.cpp:
16571 (JSC::Profile::debugPrintDataSampleStyle):
16572 * profiler/ProfileGenerator.cpp:
16573 (JSC::ProfileGenerator::willExecute):
16574 (JSC::ProfileGenerator::didExecute):
16575 * profiler/ProfileNode.cpp:
16576 (JSC::ProfileNode::debugPrintData):
16577 (JSC::ProfileNode::debugPrintDataSampleStyle):
16578 * runtime/Arguments.cpp:
16579 (JSC::Arguments::getOwnPropertySlot):
16580 (JSC::Arguments::getOwnPropertyDescriptor):
16581 (JSC::Arguments::put):
16582 (JSC::Arguments::deleteProperty):
16583 * runtime/DateConversion.cpp:
16585 * runtime/Identifier.h:
16586 (JSC::Identifier::toStrictUInt32):
16587 * runtime/JSArray.cpp:
16588 (JSC::JSArray::getOwnPropertySlot):
16589 (JSC::JSArray::getOwnPropertyDescriptor):
16590 (JSC::JSArray::put):
16591 (JSC::JSArray::deleteProperty):
16592 * runtime/JSArray.h:
16593 (JSC::toArrayIndex):
16594 * runtime/JSGlobalObjectFunctions.cpp:
16597 (JSC::globalFuncJSCPrint):
16598 * runtime/JSString.h:
16599 (JSC::RopeBuilder::JSString):
16600 * runtime/UString.cpp:
16601 (JSC::UString::toDouble):
16602 (JSC::putUTF8Triple):
16603 (JSC::UString::utf8):
16604 * runtime/UString.h:
16605 (JSC::UString::~UString):
16606 (JSC::UString::isNull):
16607 (JSC::UString::isEmpty):
16608 (JSC::UString::impl):
16609 * wtf/text/WTFString.cpp:
16610 (WTF::String::utf8):
16611 * wtf/text/WTFString.h:
16612 (WTF::String::~String):
16613 (WTF::String::swap):
16614 (WTF::String::isNull):
16615 (WTF::String::isEmpty):
16616 (WTF::String::impl):
16617 (WTF::String::length):
16618 (WTF::String::String):
16619 (WTF::String::isHashTableDeletedValue):
16621 2010-08-12 Gavin Barraclough <barraclough@apple.com>
16623 Eeerk! - revert accidentally committed changes in UString!
16625 * JavaScriptCore.exp:
16626 * runtime/UString.cpp:
16627 (JSC::UString::UString):
16628 * runtime/UString.h:
16630 2010-08-12 Gavin Barraclough <barraclough@apple.com>
16632 Reviewed by Sam Weinig
16634 Change UString constructors to match those in WTF::String.
16635 This changes behaviour of UString((char*)0) to create null
16636 strings, akin to UString() rather than UString::empty().
16637 (This matches String). Remove unused constructors from
16638 UString, and add null-terminated UTF-16 constructor, to
16639 match String. Move String's constructor into the .cpp to
16642 * JavaScriptCore.exp:
16643 * debugger/DebuggerCallFrame.cpp:
16644 (JSC::DebuggerCallFrame::calculatedFunctionName):
16645 * runtime/RegExpKey.h:
16646 (JSC::RegExpKey::RegExpKey):
16647 * runtime/SmallStrings.cpp:
16648 (JSC::SmallStrings::createSingleCharacterString):
16649 * runtime/UString.cpp:
16650 (JSC::UString::UString):
16651 * runtime/UString.h:
16652 (JSC::UString::UString):
16653 (JSC::UString::swap):
16654 (JSC::UString::adopt):
16655 (JSC::UString::operator[]):
16656 * wtf/text/WTFString.h:
16657 (WTF::String::String):
16658 (WTF::String::adopt):
16659 (WTF::String::operator[]):
16661 2010-08-12 David Levin <levin@chromium.org>
16663 Reviewed by NOBODY (build fix).
16665 * runtime/UString.h: Removed unneccessary #include.
16667 2010-08-12 Gavin Barraclough <barraclough@apple.com>
16669 Reviewed by Sam Weinig
16671 Revert changes to ALWAYS_INLINEness of a couple of functions in UString.
16672 This appears to have degraded performance.
16674 * runtime/UString.cpp:
16675 (JSC::UString::ascii):
16676 * runtime/UString.h:
16677 (JSC::UString::length):
16678 (JSC::UString::isEmpty):
16679 (JSC::UString::~UString):
16681 2010-08-12 Csaba Osztrogonác <ossy@webkit.org>
16683 Reviewed by Antonio Gomes.
16685 [Qt] Fix warnings: unknown conversion type character 'l' in format
16686 https://bugs.webkit.org/show_bug.cgi?id=43359
16688 Qt port doesn't call any printf in String::format(...), consequently
16689 using __attribute__((format(printf,m,n))) is incorrect and causes
16690 false positive warnings on Windows if you build with MinGW.
16692 Qt port calls QString::vsprintf(...) , which is platform
16693 independent, and handles %lli, %llu and %llx on all platforms.
16694 (http://trac.webkit.org/changeset/35712)
16696 * wtf/text/WTFString.h:
16698 2010-08-12 Gabor Loki <loki@webkit.org>
16700 Reviewed by Geoffrey Garen.
16702 Fix the array subscript is above array bounds warning in ByteArray on ARM.
16703 https://bugs.webkit.org/show_bug.cgi?id=43358
16705 The warning is very similar to this one: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37861
16707 * wtf/ByteArray.cpp:
16708 (WTF::ByteArray::create):
16710 2010-08-12 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
16712 Reviewed by Martin Robinson.
16714 [GTK] Use GSettings to save/restore Web Inspector settings
16715 https://bugs.webkit.org/show_bug.cgi?id=43512
16717 * wtf/gobject/GRefPtr.cpp: Added support for GVariant, used by our
16721 * wtf/gobject/GRefPtr.h:
16723 2010-08-12 Gabor Loki <loki@webkit.org>
16725 Reviewed by Simon Hausmann.
16727 The scratch register should be saved in YARR with ARM JIT
16728 https://bugs.webkit.org/show_bug.cgi?id=43910
16730 Reported by Jocelyn Turcotte.
16732 * yarr/RegexJIT.cpp:
16733 (JSC::Yarr::RegexGenerator::generateEnter):
16734 (JSC::Yarr::RegexGenerator::generateReturn):
16736 2010-08-11 Gavin Barraclough <barraclough@apple.com>
16740 * JavaScriptCore.xcodeproj/project.pbxproj:
16743 2010-08-11 Leo Yang <leo.yang@torchmobile.com.cn>
16745 Reviewed by Geoffrey Garen.
16747 Date("") should be an invalid date. For IE, Firefox and Chrome, Date("") is invalid date,
16748 which means isNaN(new Date("")) should return true.
16749 https://bugs.webkit.org/show_bug.cgi?id=43793
16750 Tests: fast/js/date-constructor.html
16752 * runtime/JSGlobalData.cpp:
16753 (JSC::JSGlobalData::resetDateCache):
16755 2010-08-11 Gavin Barraclough <barraclough@apple.com>
16757 Windows & !JIT build fix.
16759 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
16760 * JavaScriptCore.xcodeproj/project.pbxproj:
16761 * runtime/RegExp.cpp:
16762 (JSC::RegExp::match):
16764 2010-08-11 Gavin Barraclough <barraclough@apple.com>
16766 Rubber stamp by sam weinig
16768 Touch a file to stop the bot rolling a bit change out!
16770 * runtime/UString.cpp:
16771 (JSC::UString::ascii):
16773 2010-08-11 Kevin Ollivier <kevino@theolliviers.com>
16775 [wx] Build fix for wx and WebDOM bindings, add CString classes to the list of forwards.
16779 2010-08-11 Gavin Barraclough <barraclough@apple.com>
16781 Rubber stamps by Darin Adler & Sam Weinig.
16783 Bug 43867 - Some UString cleanup
16785 Change JSC::UString data(), size(), and from(), to characters(), length(), and number() to match WTF::String.
16786 Move string concatenation methods to a new header to simplify down UString.h. Remove is8Bit().
16788 * API/JSClassRef.cpp:
16789 (OpaqueJSClass::~OpaqueJSClass):
16790 (OpaqueJSClass::className):
16791 * API/OpaqueJSString.cpp:
16792 (OpaqueJSString::create):
16793 * JavaScriptCore.exp:
16794 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
16795 * JavaScriptCore.xcodeproj/project.pbxproj:
16796 * bytecode/CodeBlock.cpp:
16797 (JSC::constantName):
16799 (JSC::CodeBlock::registerName):
16801 * bytecode/EvalCodeCache.h:
16802 (JSC::EvalCodeCache::get):
16803 * bytecompiler/NodesCodegen.cpp:
16804 (JSC::ResolveNode::emitBytecode):
16805 (JSC::FunctionCallResolveNode::emitBytecode):
16806 (JSC::ReadModifyResolveNode::emitBytecode):
16807 (JSC::processClauseList):
16808 * parser/ASTBuilder.h:
16809 (JSC::ASTBuilder::createRegex):
16810 * parser/ParserArena.h:
16811 (JSC::IdentifierArena::makeNumericIdentifier):
16812 * parser/SourceProvider.h:
16813 (JSC::UStringSourceProvider::data):
16814 (JSC::UStringSourceProvider::length):
16815 * profiler/Profiler.cpp:
16816 * runtime/Arguments.cpp:
16817 (JSC::Arguments::getOwnPropertySlot):
16818 (JSC::Arguments::getOwnPropertyNames):
16819 (JSC::Arguments::put):
16820 (JSC::Arguments::deleteProperty):
16821 * runtime/ArrayPrototype.cpp:
16822 (JSC::arrayProtoFuncToString):
16823 * runtime/DatePrototype.cpp:
16824 (JSC::formatLocaleDate):
16825 * runtime/ExceptionHelpers.cpp:
16826 * runtime/FunctionConstructor.cpp:
16827 * runtime/FunctionPrototype.cpp:
16828 (JSC::insertSemicolonIfNeeded):
16829 * runtime/Identifier.h:
16830 (JSC::Identifier::characters):
16831 (JSC::Identifier::length):
16832 * runtime/JSGlobalObjectFunctions.cpp:
16836 (JSC::globalFuncEscape):
16837 (JSC::globalFuncUnescape):
16838 * runtime/JSNumberCell.cpp:
16839 (JSC::JSNumberCell::toString):
16840 * runtime/JSONObject.cpp:
16842 (JSC::Stringifier::appendQuotedString):
16843 (JSC::Stringifier::appendStringifiedValue):
16844 (JSC::Stringifier::indent):
16845 (JSC::Stringifier::unindent):
16846 (JSC::Walker::walk):
16847 * runtime/JSString.cpp:
16848 (JSC::JSString::replaceCharacter):
16849 (JSC::JSString::getIndexSlowCase):
16850 * runtime/JSString.h:
16851 (JSC::RopeBuilder::JSString):
16852 (JSC::RopeBuilder::appendValueInConstructAndIncrementLength):
16853 (JSC::RopeBuilder::fiberCount):
16854 (JSC::jsSingleCharacterSubstring):
16855 (JSC::jsNontrivialString):
16856 (JSC::JSString::getIndex):
16858 (JSC::jsStringWithFinalizer):
16859 (JSC::jsSubstring):
16860 (JSC::jsOwnedString):
16861 * runtime/JSStringBuilder.h:
16862 (JSC::JSStringBuilder::append):
16863 * runtime/LiteralParser.h:
16864 (JSC::LiteralParser::Lexer::Lexer):
16865 * runtime/NumberPrototype.cpp:
16866 (JSC::numberProtoFuncToString):
16867 (JSC::numberProtoFuncToFixed):
16868 (JSC::numberProtoFuncToExponential):
16869 (JSC::numberProtoFuncToPrecision):
16870 * runtime/NumericStrings.h:
16871 (JSC::NumericStrings::add):
16872 (JSC::NumericStrings::lookupSmallString):
16873 * runtime/Operations.h:
16875 * runtime/RegExp.cpp:
16876 (JSC::RegExp::match):
16877 * runtime/RegExpCache.cpp:
16878 (JSC::RegExpCache::lookupOrCreate):
16879 (JSC::RegExpCache::create):
16880 * runtime/RegExpConstructor.cpp:
16881 (JSC::RegExpConstructor::getRightContext):
16882 * runtime/RegExpObject.cpp:
16883 (JSC::RegExpObject::match):
16884 * runtime/RegExpPrototype.cpp:
16885 (JSC::regExpProtoFuncToString):
16886 * runtime/StringBuilder.h:
16887 (JSC::StringBuilder::append):
16888 * runtime/StringConcatenate.h: Copied from JavaScriptCore/runtime/UString.h.
16890 (JSC::sumWithOverflow):
16891 (JSC::tryMakeString):
16893 * runtime/StringObject.cpp:
16894 (JSC::StringObject::getOwnPropertyNames):
16895 * runtime/StringPrototype.cpp:
16896 (JSC::substituteBackreferencesSlow):
16897 (JSC::localeCompare):
16898 (JSC::jsSpliceSubstringsWithSeparators):
16899 (JSC::stringProtoFuncReplace):
16900 (JSC::stringProtoFuncCharAt):
16901 (JSC::stringProtoFuncCharCodeAt):
16902 (JSC::stringProtoFuncIndexOf):
16903 (JSC::stringProtoFuncLastIndexOf):
16904 (JSC::stringProtoFuncSlice):
16905 (JSC::stringProtoFuncSplit):
16906 (JSC::stringProtoFuncSubstr):
16907 (JSC::stringProtoFuncSubstring):
16908 (JSC::stringProtoFuncToLowerCase):
16909 (JSC::stringProtoFuncToUpperCase):
16910 (JSC::stringProtoFuncFontsize):
16911 (JSC::stringProtoFuncLink):
16913 * runtime/UString.cpp:
16914 (JSC::UString::number):
16915 (JSC::UString::ascii):
16916 (JSC::UString::operator[]):
16917 (JSC::UString::toDouble):
16918 (JSC::UString::find):
16919 (JSC::UString::rfind):
16920 (JSC::UString::substr):
16924 (JSC::UString::UTF8String):
16925 * runtime/UString.h:
16926 (JSC::UString::UString):
16927 (JSC::UString::adopt):
16928 (JSC::UString::length):
16929 (JSC::UString::characters):
16930 (JSC::UString::isNull):
16931 (JSC::UString::isEmpty):
16932 (JSC::UString::impl):
16933 (JSC::UString::cost):
16936 (JSC::codePointCompare):
16937 (JSC::UString::toArrayIndex):
16938 (JSC::IdentifierRepHash::hash):
16940 * yarr/RegexJIT.cpp:
16941 (JSC::Yarr::jitCompileRegex):
16942 * yarr/RegexParser.h:
16943 (JSC::Yarr::Parser::Parser):
16945 2010-08-11 Gabor Loki <loki@webkit.org>
16947 Qt build fix (ARMv7).
16949 Fix invalid conversion from int to Condition.
16950 Add ARMv7Assembler.cpp to JavaScriptCore.pro.
16952 * JavaScriptCore.pro:
16953 * assembler/ARMv7Assembler.h:
16954 (JSC::ARMv7Assembler::):
16955 (JSC::ARMv7Assembler::JmpSrc::JmpSrc):
16957 2010-08-11 Nathan Lawrence <nlawrence@apple.com>
16959 Reviewed by Geoffrey Garen.
16961 At collection time, we frequently want to mark a cell, while checking
16962 whether it was originally checked. Previously, this was a get
16963 operation follwed by a set operation. Fusing the two saves
16964 computation and gives a 0.5% sunspider speedup.
16966 * runtime/Collector.h:
16967 (JSC::CollectorBitmap::getset):
16968 (JSC::Heap::checkMarkCell):
16969 * runtime/JSArray.h:
16970 (JSC::MarkStack::drain):
16971 * runtime/JSCell.h:
16972 (JSC::MarkStack::append):
16974 2010-08-11 Steve Falkenburg <sfalken@apple.com>
16976 Reviewed by Adam Roben.
16978 Improve vsprops copying for Windows build
16979 https://bugs.webkit.org/show_bug.cgi?id=41982
16981 When we detect a new SDK, always copy a new set of vsprops files.
16982 Previously, if someone updated their SDK after updating their sources,
16983 they could end up with out-of-date vsprops files.
16985 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
16987 2010-08-10 Darin Adler <darin@apple.com>
16989 Reviewed by Sam Weinig.
16991 Add leakRef and clear to all RefPtr variants
16992 https://bugs.webkit.org/show_bug.cgi?id=42389
16994 * API/JSRetainPtr.h: Changed all uses of "template <...>" to instead do
16995 "template<...>". We should probably put this in the style guide and do it
16996 consitently. Fixed other minor style issues. Defined many of the inlined
16997 functions outside the class definition, to avoid style checker warnings
16998 about multiple statements on a single line and for slightly better clarity
16999 of the class definition itself. Renamed releaseRef to leakRef. Added a
17000 releaseRef that calls leakRef so we don't have to rename all callers oat
17001 once. Added a clear function.
17003 * wtf/PassRefPtr.h: Changed all uses of releaseRef to leakRef.
17005 * wtf/RefPtr.h: Changed all uses of "template <...>" to instead do
17006 "template<...>". Tidied up declarations and comments a bit.
17007 Changed all uses of releaseRef to leakRef.
17009 * wtf/RetainPtr.h: Changed all uses of "template <...>" to instead do
17010 "template<...>". Defined many of the inlined functions outside the class
17011 definition, to avoid style checker warnings about multiple statements on
17012 a single line and for slightly better clarity of the class definition itself.
17013 Renamed releaseRef to leakRef. Added a releaseRef that calls leakRef so we
17014 don't have to rename all callers at once. Added a clear function.
17016 2010-08-10 Dumitru Daniliuc <dumi@chromium.org>
17018 Unreviewed, reverting an unintentional change to a file submitted in r65108.
17020 * bytecode/CodeBlock.h:
17023 2010-08-10 Gavin Barraclough <barraclough@apple.com>
17025 Rubber stamped by Sam Weinig
17027 Bug 43817 - Remove UString::Rep
17028 UString::Rep has for a long time been replaced by UStringImpl (Rep
17029 remaining as a typedef). UStringImpl has since been removed too
17030 (unified with StringImpl). Remove Rep, rename rep() to impl() and
17031 m_rep to m_impl. Also add impl() method to Identifier, and rename
17032 its UString member from _ustring to m_string.
17034 * API/JSCallbackObject.h:
17035 (JSC::JSCallbackObjectData::JSPrivatePropertyMap::getPrivateProperty):
17036 (JSC::JSCallbackObjectData::JSPrivatePropertyMap::setPrivateProperty):
17037 (JSC::JSCallbackObjectData::JSPrivatePropertyMap::deletePrivateProperty):
17038 * API/JSCallbackObjectFunctions.h:
17039 (JSC::::getOwnPropertySlot):
17041 (JSC::::deleteProperty):
17042 (JSC::::getOwnPropertyNames):
17043 (JSC::::staticValueGetter):
17044 (JSC::::staticFunctionGetter):
17045 * API/JSClassRef.cpp:
17046 (tryCreateStringFromUTF8):
17047 (OpaqueJSClass::OpaqueJSClass):
17048 (OpaqueJSClass::~OpaqueJSClass):
17049 (OpaqueJSClassContextData::OpaqueJSClassContextData):
17050 * API/JSClassRef.h:
17051 * API/OpaqueJSString.cpp:
17052 (OpaqueJSString::ustring):
17053 * bytecode/EvalCodeCache.h:
17054 (JSC::EvalCodeCache::get):
17055 * bytecode/JumpTable.h:
17056 (JSC::StringJumpTable::offsetForValue):
17057 (JSC::StringJumpTable::ctiForValue):
17058 * bytecompiler/BytecodeGenerator.cpp:
17059 (JSC::BytecodeGenerator::addVar):
17060 (JSC::BytecodeGenerator::addGlobalVar):
17061 (JSC::BytecodeGenerator::BytecodeGenerator):
17062 (JSC::BytecodeGenerator::addParameter):
17063 (JSC::BytecodeGenerator::registerFor):
17064 (JSC::BytecodeGenerator::willResolveToArguments):
17065 (JSC::BytecodeGenerator::uncheckedRegisterForArguments):
17066 (JSC::BytecodeGenerator::constRegisterFor):
17067 (JSC::BytecodeGenerator::isLocal):
17068 (JSC::BytecodeGenerator::isLocalConstant):
17069 (JSC::BytecodeGenerator::addConstant):
17070 (JSC::BytecodeGenerator::emitLoad):
17071 (JSC::BytecodeGenerator::findScopedProperty):
17072 (JSC::keyForCharacterSwitch):
17073 (JSC::prepareJumpTableForStringSwitch):
17074 * bytecompiler/BytecodeGenerator.h:
17075 * bytecompiler/NodesCodegen.cpp:
17076 (JSC::processClauseList):
17077 * interpreter/Interpreter.cpp:
17078 (JSC::Interpreter::privateExecute):
17079 * jit/JITStubs.cpp:
17080 (JSC::DEFINE_STUB_FUNCTION):
17081 * parser/JSParser.cpp:
17082 (JSC::JSParser::parseStrictObjectLiteral):
17083 * pcre/pcre_exec.cpp:
17085 * profiler/CallIdentifier.h:
17086 (JSC::CallIdentifier::Hash::hash):
17087 * profiler/Profile.cpp:
17088 * profiler/ProfileNode.cpp:
17089 (JSC::ProfileNode::debugPrintDataSampleStyle):
17090 * profiler/ProfileNode.h:
17091 * runtime/ArrayPrototype.cpp:
17092 (JSC::arrayProtoFuncToString):
17093 * runtime/Identifier.cpp:
17094 (JSC::Identifier::equal):
17095 (JSC::IdentifierCStringTranslator::hash):
17096 (JSC::IdentifierCStringTranslator::equal):
17097 (JSC::IdentifierCStringTranslator::translate):
17098 (JSC::Identifier::add):
17099 (JSC::IdentifierUCharBufferTranslator::hash):
17100 (JSC::IdentifierUCharBufferTranslator::equal):
17101 (JSC::IdentifierUCharBufferTranslator::translate):
17102 (JSC::Identifier::addSlowCase):
17103 * runtime/Identifier.h:
17104 (JSC::Identifier::Identifier):
17105 (JSC::Identifier::ustring):
17106 (JSC::Identifier::impl):
17107 (JSC::Identifier::data):
17108 (JSC::Identifier::size):
17109 (JSC::Identifier::ascii):
17110 (JSC::Identifier::isNull):
17111 (JSC::Identifier::isEmpty):
17112 (JSC::Identifier::toUInt32):
17113 (JSC::Identifier::toStrictUInt32):
17114 (JSC::Identifier::toArrayIndex):
17115 (JSC::Identifier::toDouble):
17116 (JSC::Identifier::equal):
17117 (JSC::Identifier::add):
17118 * runtime/InitializeThreading.cpp:
17119 (JSC::initializeThreadingOnce):
17120 * runtime/InternalFunction.cpp:
17121 (JSC::InternalFunction::displayName):
17122 * runtime/JSFunction.cpp:
17123 (JSC::JSFunction::displayName):
17124 * runtime/JSGlobalObject.h:
17125 (JSC::JSGlobalObject::addStaticGlobals):
17126 * runtime/JSStaticScopeObject.h:
17127 (JSC::JSStaticScopeObject::JSStaticScopeObject):
17128 * runtime/JSString.h:
17130 (JSC::RopeBuilder::appendStringInConstruct):
17131 (JSC::RopeBuilder::appendValueInConstructAndIncrementLength):
17132 (JSC::jsSingleCharacterSubstring):
17133 (JSC::jsSubstring):
17134 * runtime/JSVariableObject.cpp:
17135 (JSC::JSVariableObject::deleteProperty):
17136 (JSC::JSVariableObject::symbolTableGet):
17137 * runtime/JSVariableObject.h:
17138 (JSC::JSVariableObject::symbolTableGet):
17139 (JSC::JSVariableObject::symbolTablePut):
17140 (JSC::JSVariableObject::symbolTablePutWithAttributes):
17141 * runtime/Lookup.cpp:
17142 (JSC::HashTable::createTable):
17143 (JSC::HashTable::deleteTable):
17144 * runtime/Lookup.h:
17145 (JSC::HashEntry::initialize):
17146 (JSC::HashEntry::setKey):
17147 (JSC::HashEntry::key):
17148 (JSC::HashTable::entry):
17149 * runtime/PropertyMapHashTable.h:
17150 (JSC::PropertyMapEntry::PropertyMapEntry):
17151 * runtime/PropertyNameArray.cpp:
17152 (JSC::PropertyNameArray::add):
17153 * runtime/PropertyNameArray.h:
17154 (JSC::PropertyNameArray::add):
17155 (JSC::PropertyNameArray::addKnownUnique):
17156 * runtime/RegExp.cpp:
17157 (JSC::RegExp::match):
17158 * runtime/RegExpCache.cpp:
17159 (JSC::RegExpCache::create):
17160 * runtime/RegExpKey.h:
17161 (JSC::RegExpKey::RegExpKey):
17162 * runtime/SmallStrings.cpp:
17163 (JSC::SmallStringsStorage::rep):
17164 (JSC::SmallStrings::singleCharacterStringRep):
17165 * runtime/SmallStrings.h:
17166 * runtime/StringPrototype.cpp:
17167 (JSC::jsSpliceSubstringsWithSeparators):
17168 (JSC::stringProtoFuncMatch):
17169 (JSC::stringProtoFuncSearch):
17170 * runtime/Structure.cpp:
17171 (JSC::Structure::~Structure):
17172 (JSC::Structure::despecifyDictionaryFunction):
17173 (JSC::Structure::addPropertyTransitionToExistingStructure):
17174 (JSC::Structure::addPropertyTransition):
17175 (JSC::Structure::copyPropertyTable):
17176 (JSC::Structure::get):
17177 (JSC::Structure::despecifyFunction):
17178 (JSC::Structure::put):
17179 (JSC::Structure::hasTransition):
17180 (JSC::Structure::remove):
17181 (JSC::Structure::checkConsistency):
17182 * runtime/Structure.h:
17183 (JSC::Structure::get):
17184 (JSC::Structure::hasTransition):
17185 * runtime/StructureTransitionTable.h:
17186 * runtime/SymbolTable.h:
17187 * runtime/UString.cpp:
17188 (JSC::UString::UString):
17189 (JSC::UString::toStrictUInt32):
17190 (JSC::UString::substr):
17191 * runtime/UString.h:
17192 (JSC::UString::UString):
17193 (JSC::UString::adopt):
17194 (JSC::UString::data):
17195 (JSC::UString::size):
17196 (JSC::UString::isNull):
17197 (JSC::UString::isEmpty):
17198 (JSC::UString::impl):
17199 (JSC::UString::cost):
17201 (JSC::codePointCompare):
17202 (JSC::IdentifierRepHash::hash):
17205 2010-08-10 Gavin Barraclough <barraclough@apple.com>
17207 Bug 43816 - Remove UStringImpl
17208 The class was actually removed a long time ago, replaced by StringImpl.
17209 UStringImpl is just a typedef onto StringImpl. Remove this.
17211 * API/JSClassRef.cpp:
17212 (OpaqueJSClass::OpaqueJSClass):
17213 * JavaScriptCore.xcodeproj/project.pbxproj:
17214 * runtime/JSString.cpp:
17215 (JSC::JSString::resolveRope):
17216 (JSC::JSString::replaceCharacter):
17217 * runtime/JSString.h:
17218 (JSC::RopeBuilder::RopeIterator::operator*):
17219 (JSC::RopeBuilder::JSString):
17220 (JSC::RopeBuilder::appendStringInConstruct):
17221 (JSC::RopeBuilder::appendValueInConstructAndIncrementLength):
17222 (JSC::jsSingleCharacterSubstring):
17223 (JSC::jsSubstring):
17224 * runtime/JSStringBuilder.h:
17225 (JSC::jsMakeNontrivialString):
17226 * runtime/RopeImpl.cpp:
17227 (JSC::RopeImpl::derefFibersNonRecursive):
17228 * runtime/RopeImpl.h:
17229 (JSC::RopeImpl::deref):
17230 * runtime/SmallStrings.cpp:
17231 (JSC::SmallStringsStorage::SmallStringsStorage):
17232 * runtime/StringConstructor.cpp:
17233 (JSC::stringFromCharCodeSlowCase):
17234 * runtime/StringPrototype.cpp:
17235 (JSC::jsSpliceSubstringsWithSeparators):
17236 (JSC::stringProtoFuncFontsize):
17237 (JSC::stringProtoFuncLink):
17238 * runtime/UString.cpp:
17239 (JSC::initializeUString):
17240 * runtime/UString.h:
17241 (JSC::UString::adopt):
17242 (JSC::tryMakeString):
17244 * runtime/UStringImpl.h: Removed.
17246 2010-08-10 Patrick Gansterer <paroga@paroga.com>
17248 Reviewed by Eric Seidel.
17250 Make FastMalloc more portable.
17251 https://bugs.webkit.org/show_bug.cgi?id=41790
17253 * wtf/FastMalloc.cpp:
17254 (WTF::TCMalloc_Central_FreeList::Populate):
17255 (WTF::TCMalloc_ThreadCache::CreateCacheIfNecessary):
17257 2010-08-10 Patrick Gansterer <paroga@paroga.com>
17259 Reviewed by David Levin.
17261 [WINCE] Buildfix for CE 6.0
17262 https://bugs.webkit.org/show_bug.cgi?id=43027
17264 CE 6.0 doesn't define localtime in the system include files.
17266 * wtf/Platform.h: Include ce_time.h on all OS(WINCE).
17268 2010-08-10 Gavin Barraclough <barraclough@apple.com>
17270 Rubber stamped by Sam Weinig.
17272 Bug 43786 - Move AtomicStringHash from WebCore to WTF
17273 Also remove deprecated string headers from WebCore/platform/text.
17276 * JavaScriptCore.gypi:
17277 * JavaScriptCore.vcproj/WTF/WTF.vcproj:
17278 * JavaScriptCore.xcodeproj/project.pbxproj:
17279 * wtf/text/AtomicString.h:
17280 * wtf/text/AtomicStringHash.h: Copied from WebCore/platform/text/AtomicStringHash.h.
17282 2010-08-09 Oliver Hunt <oliver@apple.com>
17284 Fix Qt/ARM again, this time including the other changed file.
17288 2010-08-09 Oliver Hunt <oliver@apple.com>
17292 C++ overload resolution I stab at thee
17294 * jit/JITInlineMethods.h:
17295 (JSC::JIT::beginUninterruptedSequence):
17296 (JSC::JIT::endUninterruptedSequence):
17298 2010-08-09 Oliver Hunt <oliver@apple.com>
17300 Reviewed by Gavin Barraclough.
17302 Allow an assembler/macroassembler to compact branches to more concise forms when linking
17303 https://bugs.webkit.org/show_bug.cgi?id=43745
17305 This patch makes it possible for an assembler to convert jumps into a different
17306 (presumably more efficient) form at link time. Currently implemented in the
17307 ARMv7 JIT as that already had logic to delay linking of jumps until the end of
17308 compilation already. The ARMv7 JIT chooses between either a 4 byte short jump
17309 or a full 32-bit offset (and rewrites ITTT instructions as appropriate), so does
17310 not yet produce the most compact form possible. The general design of the linker
17311 should make it relatively simple to introduce new branch types with little effort,
17312 as the linker has no knowledge of the exact form of any of the branches.
17314 * JavaScriptCore.xcodeproj/project.pbxproj:
17315 * assembler/ARMv7Assembler.cpp: Added.
17319 * assembler/ARMv7Assembler.h:
17320 (JSC::ARMv7Assembler::LinkRecord::LinkRecord):
17321 (JSC::ARMv7Assembler::LinkRecord::from):
17322 (JSC::ARMv7Assembler::LinkRecord::setFrom):
17323 (JSC::ARMv7Assembler::LinkRecord::to):
17324 (JSC::ARMv7Assembler::LinkRecord::type):
17325 (JSC::ARMv7Assembler::LinkRecord::linkType):
17326 (JSC::ARMv7Assembler::LinkRecord::setLinkType):
17327 Encapsulate LinkRecord fields so we can compress the values somewhat
17329 (JSC::ARMv7Assembler::JmpSrc::JmpSrc):
17330 Need to record the jump type now
17332 (JSC::ARMv7Assembler::b):
17333 (JSC::ARMv7Assembler::blx):
17334 (JSC::ARMv7Assembler::bx):
17335 Need to pass the jump types
17337 (JSC::ARMv7Assembler::executableOffsetFor):
17338 (JSC::ARMv7Assembler::jumpSizeDelta):
17339 (JSC::ARMv7Assembler::linkRecordSourceComparator):
17340 (JSC::ARMv7Assembler::computeJumpType):
17341 (JSC::ARMv7Assembler::convertJumpTo):
17342 (JSC::ARMv7Assembler::recordLinkOffsets):
17343 (JSC::ARMv7Assembler::jumpsToLink):
17344 (JSC::ARMv7Assembler::link):
17345 (JSC::ARMv7Assembler::unlinkedCode):
17346 Helper functions for the linker
17348 (JSC::ARMv7Assembler::linkJump):
17349 (JSC::ARMv7Assembler::canBeShortJump):
17350 (JSC::ARMv7Assembler::linkLongJump):
17351 (JSC::ARMv7Assembler::linkShortJump):
17352 (JSC::ARMv7Assembler::linkJumpAbsolute):
17353 Moving code around for the various jump linking functions
17355 * assembler/AbstractMacroAssembler.h:
17356 (JSC::AbstractMacroAssembler::beginUninterruptedSequence):
17357 (JSC::AbstractMacroAssembler::endUninterruptedSequence):
17358 We have to track uninterrupted sequences in any assembler that compacts
17359 branches as that's not something we're allowed to do in such sequences.
17360 AbstractMacroAssembler has a nop version of these functions as it makes the
17361 code elsewhere nicer.
17363 * assembler/LinkBuffer.h:
17364 (JSC::LinkBuffer::LinkBuffer):
17365 (JSC::LinkBuffer::link):
17366 (JSC::LinkBuffer::patch):
17367 (JSC::LinkBuffer::locationOf):
17368 (JSC::LinkBuffer::locationOfNearCall):
17369 (JSC::LinkBuffer::returnAddressOffset):
17370 (JSC::LinkBuffer::trampolineAt):
17371 Updated these functions to adjust for any changed offsets in the linked code
17373 (JSC::LinkBuffer::applyOffset):
17374 A helper function to deal with the now potentially moved labels
17376 (JSC::LinkBuffer::linkCode):
17377 The new and mighty linker function
17379 * assembler/MacroAssemblerARMv7.h:
17380 (JSC::MacroAssemblerARMv7::MacroAssemblerARMv7):
17381 (JSC::MacroAssemblerARMv7::beginUninterruptedSequence):
17382 (JSC::MacroAssemblerARMv7::endUninterruptedSequence):
17383 (JSC::MacroAssemblerARMv7::jumpsToLink):
17384 (JSC::MacroAssemblerARMv7::unlinkedCode):
17385 (JSC::MacroAssemblerARMv7::computeJumpType):
17386 (JSC::MacroAssemblerARMv7::convertJumpTo):
17387 (JSC::MacroAssemblerARMv7::recordLinkOffsets):
17388 (JSC::MacroAssemblerARMv7::jumpSizeDelta):
17389 (JSC::MacroAssemblerARMv7::link):
17390 (JSC::MacroAssemblerARMv7::jump):
17391 (JSC::MacroAssemblerARMv7::branchMul32):
17392 (JSC::MacroAssemblerARMv7::breakpoint):
17393 (JSC::MacroAssemblerARMv7::nearCall):
17394 (JSC::MacroAssemblerARMv7::call):
17395 (JSC::MacroAssemblerARMv7::ret):
17396 (JSC::MacroAssemblerARMv7::tailRecursiveCall):
17397 (JSC::MacroAssemblerARMv7::executableOffsetFor):
17398 (JSC::MacroAssemblerARMv7::inUninterruptedSequence):
17399 (JSC::MacroAssemblerARMv7::makeJump):
17400 (JSC::MacroAssemblerARMv7::makeBranch):
17401 All branches need to pass on their type now
17403 * jit/ExecutableAllocator.h:
17404 (JSC::ExecutablePool::returnLastBytes):
17405 We can't know ahead of time how much space will be necessary to
17406 hold the linked code if we're compacting branches, this new
17407 function allows us to return the unused bytes at the end of linking
17411 (JSC::JIT::privateCompile):
17413 (JSC::JIT::compile):
17414 The JIT class now needs to take a linker offset so that recompilation
17415 can generate the same jumps when using branch compaction.
17416 * jit/JITArithmetic32_64.cpp:
17417 (JSC::JIT::emitSlow_op_mod):
17418 * jit/JITOpcodes.cpp:
17419 (JSC::JIT::privateCompileCTIMachineTrampolines):
17420 * jit/JITOpcodes32_64.cpp:
17421 (JSC::JIT::privateCompileCTIMachineTrampolines):
17422 (JSC::JIT::privateCompileCTINativeCall):
17423 Update for new trampolineAt changes
17425 * wtf/FastMalloc.cpp:
17426 (WTF::TCMallocStats::):
17429 2010-08-09 Gavin Barraclough <barraclough@apple.com>
17433 * wtf/text/WTFString.h:
17435 2010-08-09 Gavin Barraclough <barraclough@apple.com>
17439 * wtf/qt/StringQt.cpp:
17441 2010-08-06 Gavin Barraclough <barraclough@apple.com>
17443 Rubber stamped by Sam Weinig
17445 Bug 43594 - Add string forwards to Forward.h
17446 This allows us to remove forward declarations for these classes from
17447 WebCore/WebKit (a step in moving these class from WebCore:: to WTF::).
17449 * JavaScriptCore.xcodeproj/project.pbxproj:
17452 2010-08-07 Sheriff Bot <webkit.review.bot@gmail.com>
17454 Unreviewed, rolling out r64938.
17455 http://trac.webkit.org/changeset/64938
17456 https://bugs.webkit.org/show_bug.cgi?id=43685
17458 Did not compile on several ports (Requested by abarth on
17464 * JavaScriptCore.gypi:
17465 * JavaScriptCore.pro:
17466 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
17467 * JavaScriptCore.xcodeproj/project.pbxproj:
17468 * assembler/AbstractMacroAssembler.h:
17469 * assembler/MacroAssembler.h:
17470 * assembler/MacroAssemblerX86.h:
17471 (JSC::MacroAssemblerX86::load32):
17472 (JSC::MacroAssemblerX86::store32):
17473 * assembler/X86Assembler.h:
17474 (JSC::X86Assembler::movl_rm):
17475 (JSC::X86Assembler::movl_mr):
17476 * bytecode/CodeBlock.cpp:
17477 (JSC::CodeBlock::markAggregate):
17478 * bytecode/Instruction.h:
17479 (JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::):
17480 (JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::set):
17481 (JSC::PolymorphicAccessStructureList::PolymorphicAccessStructureList):
17482 * bytecode/StructureStubInfo.cpp:
17483 (JSC::StructureStubInfo::deref):
17484 * bytecode/StructureStubInfo.h:
17485 (JSC::StructureStubInfo::initGetByIdProto):
17486 (JSC::StructureStubInfo::initGetByIdChain):
17487 (JSC::StructureStubInfo::):
17489 * jit/JITMarkObjects.cpp: Removed.
17490 * jit/JITPropertyAccess.cpp:
17491 (JSC::JIT::compileGetDirectOffset):
17492 (JSC::JIT::testPrototype):
17493 (JSC::JIT::privateCompilePutByIdTransition):
17494 (JSC::JIT::privateCompileGetByIdProto):
17495 (JSC::JIT::privateCompileGetByIdProtoList):
17496 (JSC::JIT::privateCompileGetByIdChainList):
17497 (JSC::JIT::privateCompileGetByIdChain):
17498 * jit/JITPropertyAccess32_64.cpp:
17499 (JSC::JIT::compileGetDirectOffset):
17500 (JSC::JIT::testPrototype):
17501 (JSC::JIT::privateCompilePutByIdTransition):
17502 (JSC::JIT::privateCompileGetByIdProto):
17503 (JSC::JIT::privateCompileGetByIdProtoList):
17504 (JSC::JIT::privateCompileGetByIdChainList):
17505 (JSC::JIT::privateCompileGetByIdChain):
17506 * jit/JITStubs.cpp:
17507 (JSC::setupPolymorphicProtoList):
17510 2010-08-07 Nathan Lawrence <nlawrence@apple.com>
17512 Reviewed by Geoffrey Garen.
17514 The JIT code contains a number of direct references to GC'd objects.
17515 When we have movable objects, these references will need to be
17521 * JavaScriptCore.gypi:
17522 * JavaScriptCore.pro:
17523 * JavaScriptCore.xcodeproj/project.pbxproj:
17524 * assembler/AbstractMacroAssembler.h:
17525 (JSC::AbstractMacroAssembler::int32AtLocation):
17526 (JSC::AbstractMacroAssembler::pointerAtLocation):
17527 (JSC::AbstractMacroAssembler::jumpTarget):
17528 * assembler/MacroAssembler.h:
17529 (JSC::MacroAssembler::loadPtrWithPatch):
17530 Normally, loadPtr will optimize when the register is eax. Since
17531 the slightly smaller instruction changes the offsets, it messes up
17532 our ability to repatch the code. We added this new instruction
17533 that garuntees a constant size.
17534 * assembler/MacroAssemblerX86.h:
17535 (JSC::MacroAssemblerX86::load32WithPatch):
17536 Changed load32 in the same way described above.
17537 (JSC::MacroAssemblerX86::load32):
17538 Moved the logic to optimize laod32 from movl_mr to load32
17539 (JSC::MacroAssemblerX86::store32):
17540 Moved the logic to optimize store32 from movl_rm to store32
17541 * assembler/X86Assembler.h:
17542 (JSC::X86Assembler::movl_rm):
17543 (JSC::X86Assembler::movl_mr):
17544 (JSC::X86Assembler::int32AtLocation):
17545 (JSC::X86Assembler::pointerAtLocation):
17546 (JSC::X86Assembler::jumpTarget):
17547 * bytecode/CodeBlock.cpp:
17548 (JSC::CodeBlock::markAggregate):
17549 * bytecode/Instruction.h:
17550 As described in StructureStubInfo.h, we needed to add additional
17551 fields to both StructureStubInfo and
17552 PolymorphicAccessStructureList so that we can determine the
17553 structure of the JITed code at patch time.
17554 (JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::set):
17555 (JSC::PolymorphicAccessStructureList::PolymorphicAccessStructureList):
17556 * bytecode/StructureStubInfo.cpp:
17557 (JSC::StructureStubInfo::markAggregate):
17558 Added this function to mark the JITed code that correosponds to
17559 this structure stub info.
17560 * bytecode/StructureStubInfo.h:
17561 (JSC::StructureStubInfo::initGetByIdProto):
17562 (JSC::StructureStubInfo::initGetByIdChain):
17563 (JSC::StructureStubInfo::):
17565 * jit/JITMarkObjects.cpp: Added.
17566 (JSC::JIT::patchPrototypeStructureAddress):
17567 (JSC::JIT::patchGetDirectOffset):
17568 (JSC::JIT::markGetByIdProto):
17569 (JSC::JIT::markGetByIdChain):
17570 (JSC::JIT::markGetByIdProtoList):
17571 (JSC::JIT::markPutByIdTransition):
17572 (JSC::JIT::markGlobalObjectReference):
17573 * jit/JITPropertyAccess.cpp:
17574 Added asserts for the patch offsets.
17575 (JSC::JIT::compileGetDirectOffset):
17576 (JSC::JIT::testPrototype):
17577 (JSC::JIT::privateCompilePutByIdTransition):
17578 (JSC::JIT::privateCompileGetByIdProto):
17579 (JSC::JIT::privateCompileGetByIdProtoList):
17580 (JSC::JIT::privateCompileGetByIdChainList):
17581 (JSC::JIT::privateCompileGetByIdChain):
17582 * jit/JITPropertyAccess32_64.cpp:
17583 (JSC::JIT::compileGetDirectOffset):
17584 (JSC::JIT::testPrototype):
17585 (JSC::JIT::privateCompilePutByIdTransition):
17586 (JSC::JIT::privateCompileGetByIdProto):
17587 (JSC::JIT::privateCompileGetByIdProtoList):
17588 (JSC::JIT::privateCompileGetByIdChainList):
17589 (JSC::JIT::privateCompileGetByIdChain):
17590 * jit/JITStubs.cpp:
17591 (JSC::setupPolymorphicProtoList):
17593 Added ENABLE_MOVABLE_GC_OBJECTS flag
17595 2010-08-07 Michael Saboff <msaboff@apple.com>
17597 Reviewed by Geoffrey Garen.
17599 Revert JSArray to point to the beginning of the contained ArrayStorage
17600 struct. This is described in
17601 https://bugs.webkit.org/show_bug.cgi?id=43526.
17603 * jit/JITPropertyAccess.cpp:
17604 (JSC::JIT::emit_op_get_by_val):
17605 (JSC::JIT::emit_op_put_by_val):
17606 (JSC::JIT::privateCompilePatchGetArrayLength):
17607 * jit/JITPropertyAccess32_64.cpp:
17608 (JSC::JIT::emit_op_get_by_val):
17609 (JSC::JIT::emit_op_put_by_val):
17610 (JSC::JIT::privateCompilePatchGetArrayLength):
17611 * runtime/JSArray.cpp:
17612 (JSC::JSArray::JSArray):
17613 (JSC::JSArray::~JSArray):
17614 (JSC::JSArray::getOwnPropertySlot):
17615 (JSC::JSArray::getOwnPropertyDescriptor):
17616 (JSC::JSArray::put):
17617 (JSC::JSArray::putSlowCase):
17618 (JSC::JSArray::deleteProperty):
17619 (JSC::JSArray::getOwnPropertyNames):
17620 (JSC::JSArray::getNewVectorLength):
17621 (JSC::JSArray::increaseVectorLength):
17622 (JSC::JSArray::increaseVectorPrefixLength):
17623 (JSC::JSArray::setLength):
17624 (JSC::JSArray::pop):
17625 (JSC::JSArray::push):
17626 (JSC::JSArray::shiftCount):
17627 (JSC::JSArray::unshiftCount):
17628 (JSC::JSArray::sortNumeric):
17629 (JSC::JSArray::sort):
17630 (JSC::JSArray::fillArgList):
17631 (JSC::JSArray::copyToRegisters):
17632 (JSC::JSArray::compactForSorting):
17633 (JSC::JSArray::subclassData):
17634 (JSC::JSArray::setSubclassData):
17635 (JSC::JSArray::checkConsistency):
17636 * runtime/JSArray.h:
17637 (JSC::JSArray::length):
17638 (JSC::JSArray::canGetIndex):
17639 (JSC::JSArray::getIndex):
17640 (JSC::JSArray::setIndex):
17641 (JSC::JSArray::uncheckedSetIndex):
17642 (JSC::JSArray::markChildrenDirect):
17644 2010-08-07 Kwang Yul Seo <skyul@company100.net>
17646 Reviewed by Eric Seidel.
17648 Add ENABLE(YARR) guard around JSGlobalData::m_regexAllocator
17649 https://bugs.webkit.org/show_bug.cgi?id=43399
17651 m_regexAllocator is used only by RegExp::compile which is guarded with ENABLE(YARR).
17653 * runtime/JSGlobalData.h:
17655 2010-08-07 Patrick Roland Gansterer <paroga@paroga.com>
17657 Reviewed by Eric Seidel.
17659 [Qt] Enable JIT on WinCE
17660 https://bugs.webkit.org/show_bug.cgi?id=43303
17662 Add ExtraCompiler for generating GeneratedJITStubs_MSVC.asm.
17664 * DerivedSources.pro:
17666 2010-08-07 Dan Bernstein <mitz@apple.com>
17668 Reviewed by Anders Carlsson.
17670 Created a separate SimpleFontData constructor exclusively for SVG fonts and moved the CTFontRef
17671 from SimpleFontData to FontPlatformData.
17672 https://bugs.webkit.org/show_bug.cgi?id=43674
17674 * wtf/Platform.h: Moved definitions of WTF_USE_CORE_TEXT and WTF_USE_ATSUI here from WebCore/config.h.
17676 2010-08-07 Zoltan Herczeg <zherczeg@webkit.org>
17678 Reviewed by Eric Seidel.
17680 Bitmap.h has no default constructor
17681 https://bugs.webkit.org/show_bug.cgi?id=43619
17683 Without a constructor, the initial bits of the Bitmap class
17684 are undefinied. If only a few, or zero bits are 0, the memory
17685 area provided by AlignedMemoryAllocator can be easly exhausted.
17687 Csaba Osztrogonác helped to find this bug.
17692 2010-08-06 Rafael Antognolli <antognolli@profusion.mobi>
17696 * CMakeLists.txt: add runtime/CGHandle.cpp.
17698 2010-08-06 Jessie Berlin <jberlin@apple.com>
17700 Roll out http://trac.webkit.org/changeset/64801, which broke the Safari Windows Build.
17703 * JavaScriptCore.xcodeproj/project.pbxproj:
17706 2010-08-06 Jessie Berlin <jberlin@apple.com>
17708 Windows Build Fix (continued). Unreviewed.
17710 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
17712 2010-08-06 Jessie Berlin <jberlin@apple.com>
17714 Windows Build Fix. Unreviewed.
17716 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
17717 Add GCHandle.h and GCHandle.cpp.
17719 2010-08-06 Nathan Lawrence <nlawrence@apple.com>
17721 Reviewed by Geoffrey Garen.
17723 https://bugs.webkit.org/show_bug.cgi?id=43207
17725 WeakGCPtr's should instead of directly pointing to the GC'd object
17726 should be directed to an array of pointers that can be updated for
17731 * JavaScriptCore.exp:
17732 * JavaScriptCore.gypi:
17733 * JavaScriptCore.pro:
17734 * JavaScriptCore.xcodeproj/project.pbxproj:
17735 * runtime/Collector.cpp:
17736 (JSC::Heap::destroy):
17737 (JSC::Heap::allocateBlock):
17738 (JSC::Heap::freeBlock):
17739 (JSC::Heap::updateWeakGCHandles):
17740 (JSC::WeakGCHandlePool::update):
17741 (JSC::Heap::addWeakGCHandle):
17742 (JSC::Heap::markRoots):
17743 * runtime/Collector.h:
17744 (JSC::Heap::weakGCHandlePool):
17745 * runtime/GCHandle.cpp: Added.
17746 (JSC::WeakGCHandle::pool):
17747 (JSC::WeakGCHandlePool::WeakGCHandlePool):
17748 (JSC::WeakGCHandlePool::allocate):
17749 (JSC::WeakGCHandlePool::free):
17750 (JSC::WeakGCHandlePool::operator new):
17751 * runtime/GCHandle.h: Added.
17752 (JSC::WeakGCHandle::isValidPtr):
17753 (JSC::WeakGCHandle::isPtr):
17754 (JSC::WeakGCHandle::isNext):
17755 (JSC::WeakGCHandle::invalidate):
17756 (JSC::WeakGCHandle::get):
17757 (JSC::WeakGCHandle::set):
17758 (JSC::WeakGCHandle::getNextInFreeList):
17759 (JSC::WeakGCHandle::setNextInFreeList):
17760 (JSC::WeakGCHandlePool::isFull):
17761 * runtime/WeakGCPtr.h:
17762 (JSC::WeakGCPtr::WeakGCPtr):
17763 (JSC::WeakGCPtr::~WeakGCPtr):
17764 (JSC::WeakGCPtr::get):
17765 (JSC::WeakGCPtr::clear):
17766 (JSC::WeakGCPtr::assign):
17769 2010-08-06 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
17771 Reviewed by Antonio Gomes.
17773 [Qt] Fix warnings about difference in symbol visiblity on Mac OS X
17777 2010-08-06 Zoltan Herczeg <zherczeg@webkit.org>
17779 Reviewed by Darin Adler.
17781 Refactor identifier parsing in lexer
17782 https://bugs.webkit.org/show_bug.cgi?id=41845
17784 The code is refactored to avoid gotos. The new code
17785 has the same performance as the old one.
17787 SunSpider --parse-only: no change (from 34.0ms to 33.6ms)
17788 SunSpider: no change (from 523.2ms to 523.5ms)
17790 * parser/Lexer.cpp:
17791 (JSC::Lexer::parseIdent):
17795 2010-08-06 Gabor Loki <loki@webkit.org>
17797 Reviewed by Gavin Barraclough.
17799 The ARM JIT does not support JSValue32_64 with RVCT
17800 https://bugs.webkit.org/show_bug.cgi?id=43411
17802 JSValue32_64 is enabled for RVCT by default.
17804 * create_jit_stubs:
17805 * jit/JITStubs.cpp:
17806 (JSC::ctiTrampoline):
17807 (JSC::ctiVMThrowTrampoline):
17808 (JSC::ctiOpThrowNotCaught):
17811 2010-08-05 Chao-ying Fu <fu@mips.com>
17813 Reviewed by Darin Adler.
17815 Define WTF_USE_ARENA_ALLOC_ALIGNMENT_INTEGER for MIPS
17816 https://bugs.webkit.org/show_bug.cgi?id=43514
17818 MIPS needs to define WTF_USE_ARENA_ALLOC_ALIGNMENT_INTEGER, so that
17819 RenderArena::allocate() can return 8-byte aligned memory to avoid
17820 exceptions on sdc1/ldc1.
17824 2010-08-05 Gavin Barraclough <barraclough@apple.com>
17826 Rubber stamped by Sam Weinig
17828 Bug 43594 - Add string forwards to Forward.h
17829 This allows us to remove forward declarations for these classes from
17830 WebCore/WebKit (a step in moving these class from WebCore:: to WTF::).
17832 * JavaScriptCore.xcodeproj/project.pbxproj:
17835 2010-08-05 Geoffrey Garen <ggaren@apple.com>
17837 Reviewed by Mark Rowe.
17839 Fixed leak seen on buildbot.
17841 * runtime/GCActivityCallbackCF.cpp:
17842 (JSC::DefaultGCActivityCallback::DefaultGCActivityCallback):
17843 (JSC::DefaultGCActivityCallback::~DefaultGCActivityCallback):
17844 (JSC::DefaultGCActivityCallback::operator()): Make out timer a RetainPtr,
17845 since anything less would be uncivilized.
17847 2010-08-05 Andy Estes <aestes@apple.com>
17849 Reviewed by David Kilzer.
17851 Rename iOS-related OS and PLATFORM macros.
17852 https://bugs.webkit.org/show_bug.cgi?id=43493
17854 Rename WTF_OS_IPHONE_OS to WTF_OS_IOS, WTF_PLATFORM_IPHONE to
17855 WTF_PLATFORM_IOS, and WTF_PLATFORM_IPHONE_SIMULATOR to
17856 WTF_PLATFORM_IOS_SIMULATOR.
17858 * jit/ExecutableAllocator.h:
17859 * jit/JITStubs.cpp:
17860 * profiler/ProfilerServer.mm:
17861 (-[ProfilerServer init]):
17862 * wtf/FastMalloc.cpp:
17863 (WTF::TCMallocStats::):
17865 * wtf/unicode/icu/CollatorICU.cpp:
17866 (WTF::Collator::userDefault):
17868 2010-08-05 Nathan Lawrence <nlawrence@apple.com>
17870 Reviewed by Darin Adler.
17872 https://bugs.webkit.org/show_bug.cgi?id=43464
17874 Currently, the global object is being embedded in the JavaScriptCore
17875 bytecode, however since the global object is the same for all opcodes
17876 in a code block, we can have the global object just be a member of the
17877 associated code block.
17879 Additionally, I added an assert inside of emitOpcode that verifies
17880 that the last generated opcode was of the correct length.
17882 * bytecode/CodeBlock.cpp:
17883 (JSC::CodeBlock::CodeBlock):
17884 (JSC::CodeBlock::derefStructures):
17885 (JSC::CodeBlock::markAggregate):
17886 * bytecode/CodeBlock.h:
17887 (JSC::CodeBlock::globalObject):
17888 (JSC::GlobalCodeBlock::GlobalCodeBlock):
17889 (JSC::ProgramCodeBlock::ProgramCodeBlock):
17890 (JSC::EvalCodeBlock::EvalCodeBlock):
17891 (JSC::FunctionCodeBlock::FunctionCodeBlock):
17892 * bytecode/Opcode.h:
17893 (JSC::opcodeLength):
17894 * bytecompiler/BytecodeGenerator.cpp:
17895 (JSC::BytecodeGenerator::BytecodeGenerator):
17896 (JSC::BytecodeGenerator::emitOpcode):
17897 Added an assert to check that the last generated opcode is the
17899 (JSC::BytecodeGenerator::rewindBinaryOp):
17900 Changed the last opcode to op_end since the length will no longer
17902 (JSC::BytecodeGenerator::rewindUnaryOp):
17903 Changed the last opcode to op_end since the length will no longer
17905 (JSC::BytecodeGenerator::emitResolve):
17906 (JSC::BytecodeGenerator::emitGetScopedVar):
17907 (JSC::BytecodeGenerator::emitPutScopedVar):
17908 (JSC::BytecodeGenerator::emitResolveWithBase):
17909 * bytecompiler/BytecodeGenerator.h:
17910 * interpreter/Interpreter.cpp:
17911 (JSC::Interpreter::resolveGlobal):
17912 (JSC::Interpreter::resolveGlobalDynamic):
17913 (JSC::Interpreter::privateExecute):
17914 * jit/JITOpcodes.cpp:
17915 (JSC::JIT::emit_op_get_global_var):
17916 (JSC::JIT::emit_op_put_global_var):
17917 (JSC::JIT::emit_op_resolve_global):
17918 (JSC::JIT::emitSlow_op_resolve_global):
17919 (JSC::JIT::emit_op_resolve_global_dynamic):
17920 (JSC::JIT::emitSlow_op_resolve_global_dynamic):
17921 * jit/JITOpcodes32_64.cpp:
17922 (JSC::JIT::emit_op_get_global_var):
17923 (JSC::JIT::emit_op_put_global_var):
17924 (JSC::JIT::emit_op_resolve_global):
17925 (JSC::JIT::emitSlow_op_resolve_global):
17926 * jit/JITStubs.cpp:
17927 (JSC::cti_op_resolve_global):
17928 * runtime/Executable.cpp:
17929 (JSC::FunctionExecutable::compileForCallInternal):
17930 (JSC::FunctionExecutable::compileForConstructInternal):
17931 (JSC::FunctionExecutable::reparseExceptionInfo):
17933 2010-08-05 Gavin Barraclough <barraclough@apple.com>
17935 Reviewed by Sam Weinig.
17937 Bug 43185 - Switch RegisterFile over to use PageAllocation
17939 Remove platform-specific memory allocation code.
17941 * interpreter/RegisterFile.cpp:
17942 (JSC::RegisterFile::~RegisterFile):
17943 (JSC::RegisterFile::releaseExcessCapacity):
17944 * interpreter/RegisterFile.h:
17945 (JSC::RegisterFile::RegisterFile):
17946 (JSC::RegisterFile::grow):
17947 (JSC::RegisterFile::checkAllocatedOkay):
17948 * wtf/PageAllocation.cpp:
17949 (WTF::PageAllocation::lastError):
17950 * wtf/PageAllocation.h:
17951 (WTF::PageAllocation::allocate):
17952 (WTF::PageAllocation::allocateAt):
17953 (WTF::PageAllocation::allocateAligned):
17954 (WTF::PageAllocation::pageSize):
17955 (WTF::PageAllocation::isPageAligned):
17956 (WTF::PageAllocation::isPowerOfTwo):
17957 * wtf/PageReservation.h:
17958 (WTF::PageReservation::commit):
17959 (WTF::PageReservation::decommit):
17960 (WTF::PageReservation::reserve):
17961 (WTF::PageReservation::reserveAt):
17963 2010-08-05 Michael Saboff <msaboff@apple.com>
17965 Reviewed by Darin Adler.
17967 Fixed https://bugs.webkit.org/show_bug.cgi?id=43401 where array
17968 content aren't properly initialized as part of unshift.
17970 * runtime/JSArray.cpp:
17971 (JSC::JSArray::unshiftCount):
17973 2010-08-05 Jian Li <jianli@chromium.org>
17975 Reviewed by David Levin.
17977 Unify blob related feature defines to ENABLE(BLOB).
17978 https://bugs.webkit.org/show_bug.cgi?id=43081
17980 * Configurations/FeatureDefines.xcconfig:
17982 2010-08-05 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
17984 Rubber-stamped by Xan Lopez.
17986 Remove GHashTable left-overs. GHashTable is ref-counted, and is
17987 correctly supported by GRefPtr.
17989 * wtf/gobject/GOwnPtr.h:
17991 2010-08-05 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
17995 Typo fix that makes distcheck happy.
17999 2010-08-03 Geoffrey Garen <ggaren@apple.com>
18001 Reviewed by Oliver Hunt and Beth Dakin.
18003 https://bugs.webkit.org/show_bug.cgi?id=43461
18004 Invalid NaN parsing
18006 * wtf/dtoa.cpp: Turn off the dtoa feature that allows you to specify a
18007 non-standard NaN representation, since our NaN encoding assumes that all
18008 true NaNs have the standard bit pattern.
18010 * API/JSValueRef.cpp:
18011 (JSValueMakeNumber): Don't allow an API client to accidentally specify
18012 a non-standard NaN either.
18014 2010-08-04 Gavin Barraclough <barraclough@apple.com>
18016 Windows build fix part II.
18018 * wtf/PageReservation.h:
18019 (WTF::PageReservation::systemReserve):
18021 2010-08-04 Gavin Barraclough <barraclough@apple.com>
18025 * wtf/PageReservation.h:
18026 (WTF::PageReservation::systemReserve):
18028 2010-08-04 Gavin Barraclough <barraclough@apple.com>
18030 Build fix - add new header to !Mac projects.
18033 * JavaScriptCore.gypi:
18034 * JavaScriptCore.vcproj/WTF/WTF.vcproj:
18036 2010-08-04 Gavin Barraclough <barraclough@apple.com>
18038 Reviewed by Sam Weinig.
18040 Bug 43515 - Fix small design issues with PageAllocation, split out PageReservation.
18042 The PageAllocation class has a number of issues:
18043 * Changes in bug #43269 accidentally switched SYMBIAN over to use malloc/free to allocate
18044 blocks of memory for the GC heap, instead of allocating RChunks. Revert this change in
18046 * In order for PageAllocation to work correctly on WinCE we should be decommitting memory
18047 before deallocating. In order to simplify understanding the expected state at deallocate,
18048 split behaviour out into PageAllocation and PageReservation classes. Require that all
18049 memory be decommitted before calling deallocate on a PageReservation, add asserts to
18051 * add many missing asserts.
18052 * inline more functions.
18053 * remove ability to create sub-PageAllocations from an existing PageAllocations object -
18054 this presented an interface that would allow sub regions to be deallocated, which would
18055 not have provided expected behaviour.
18056 * remove writable/executable arguments to commit, this value can be cached at the point
18057 the memory is reserved.
18058 * remove writable/executable arguments to allocateAligned, protection other than RW is not
18060 * add missing checks for overflow & failed allocation to mmap path through allocateAligned.
18062 * JavaScriptCore.xcodeproj/project.pbxproj:
18063 * jit/ExecutableAllocator.cpp:
18064 (JSC::ExecutableAllocator::intializePageSize):
18065 * jit/ExecutableAllocator.h:
18066 (JSC::ExecutablePool::Allocation::Allocation):
18067 (JSC::ExecutablePool::Allocation::base):
18068 (JSC::ExecutablePool::Allocation::size):
18069 (JSC::ExecutablePool::Allocation::operator!):
18070 * jit/ExecutableAllocatorFixedVMPool.cpp:
18071 (JSC::FixedVMPoolAllocator::reuse):
18072 (JSC::FixedVMPoolAllocator::coalesceFreeSpace):
18073 (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
18074 (JSC::FixedVMPoolAllocator::alloc):
18075 (JSC::FixedVMPoolAllocator::free):
18076 (JSC::FixedVMPoolAllocator::allocInternal):
18077 * runtime/AlignedMemoryAllocator.h:
18079 (JSC::::AlignedMemoryAllocator):
18080 * runtime/Collector.cpp:
18081 (JSC::Heap::allocateBlock):
18082 * runtime/Collector.h:
18083 * wtf/PageAllocation.cpp:
18084 * wtf/PageAllocation.h:
18085 (WTF::PageAllocation::operator!):
18086 (WTF::PageAllocation::allocate):
18087 (WTF::PageAllocation::allocateAt):
18088 (WTF::PageAllocation::allocateAligned):
18089 (WTF::PageAllocation::deallocate):
18090 (WTF::PageAllocation::pageSize):
18091 (WTF::PageAllocation::systemAllocate):
18092 (WTF::PageAllocation::systemAllocateAt):
18093 (WTF::PageAllocation::systemAllocateAligned):
18094 (WTF::PageAllocation::systemDeallocate):
18095 (WTF::PageAllocation::systemPageSize):
18096 * wtf/PageReservation.h: Copied from JavaScriptCore/wtf/PageAllocation.h.
18097 (WTF::PageReservation::PageReservation):
18098 (WTF::PageReservation::commit):
18099 (WTF::PageReservation::decommit):
18100 (WTF::PageReservation::reserve):
18101 (WTF::PageReservation::reserveAt):
18102 (WTF::PageReservation::deallocate):
18103 (WTF::PageReservation::systemCommit):
18104 (WTF::PageReservation::systemDecommit):
18105 (WTF::PageReservation::systemReserve):
18106 (WTF::PageReservation::systemReserveAt):
18109 2010-08-04 Sheriff Bot <webkit.review.bot@gmail.com>
18111 Unreviewed, rolling out r64655.
18112 http://trac.webkit.org/changeset/64655
18113 https://bugs.webkit.org/show_bug.cgi?id=43496
18115 JavaScriptCore references patch seems to have caused
18116 regressions in QT and GTK builds (Requested by nlawrence on
18119 * bytecode/CodeBlock.cpp:
18120 (JSC::CodeBlock::markAggregate):
18121 * runtime/Collector.cpp:
18122 (JSC::Heap::markConservatively):
18123 * runtime/JSCell.h:
18124 (JSC::JSValue::asCell):
18125 (JSC::MarkStack::append):
18126 * runtime/JSGlobalObject.cpp:
18127 (JSC::markIfNeeded):
18128 * runtime/JSONObject.cpp:
18129 (JSC::Stringifier::Holder::object):
18130 * runtime/JSObject.h:
18131 (JSC::JSObject::prototype):
18132 * runtime/JSStaticScopeObject.cpp:
18133 (JSC::JSStaticScopeObject::markChildren):
18134 * runtime/JSValue.h:
18136 (JSC::JSValue::JSValue):
18137 (JSC::JSValue::asCell):
18138 * runtime/MarkStack.h:
18139 * runtime/NativeErrorConstructor.cpp:
18140 * runtime/NativeErrorConstructor.h:
18141 * runtime/Structure.h:
18142 (JSC::Structure::storedPrototype):
18144 2010-08-04 Gavin Barraclough <barraclough@apple.com>
18146 Rubber stamped by Sam Weinig.
18148 Enable JSVALUE64 for CPU(PPC64).
18149 Basic browsing seems to work.
18153 2010-08-04 Nathan Lawrence <nlawrence@apple.com>
18155 Reviewed by Darin Adler.
18157 Refactoring MarkStack::append to take a reference. This is in
18158 preparation for movable objects when we will need to update pointers.
18159 http://bugs.webkit.org/show_bug.cgi?id=41177
18161 Unless otherwise noted, all changes are to either return by reference
18162 or pass a reference to MarkStack::append.
18164 * bytecode/CodeBlock.cpp:
18165 (JSC::CodeBlock::markAggregate):
18166 * runtime/Collector.cpp:
18167 (JSC::Heap::markConservatively):
18168 Added a temporary variable to prevent marking from changing an
18169 unknown value on the stack
18170 * runtime/JSCell.h:
18171 (JSC::JSValue::asCell):
18172 (JSC::MarkStack::append):
18173 (JSC::MarkStack::appendInternal):
18174 * runtime/JSGlobalObject.cpp:
18175 (JSC::markIfNeeded):
18176 * runtime/JSONObject.cpp:
18177 (JSC::Stringifier::Holder::object):
18178 * runtime/JSObject.h:
18179 (JSC::JSObject::prototype):
18180 * runtime/JSStaticScopeObject.cpp:
18181 (JSC::JSStaticScopeObject::markChildren):
18182 * runtime/JSValue.h:
18183 (JSC::JSValue::JSValue):
18184 (JSC::JSValue::asCell):
18185 * runtime/MarkStack.h:
18186 * runtime/NativeErrorConstructor.cpp:
18187 (JSC::NativeErrorConstructor::createStructure):
18188 Changed the structure flags to include a custom markChildren.
18189 (JSC::NativeErrorConstructor::markChildren):
18190 Update the prototype of the stored structure.
18191 * runtime/NativeErrorConstructor.h:
18192 Added structure flags.
18193 * runtime/Structure.h:
18194 (JSC::Structure::storedPrototype):
18196 2010-08-03 Nathan Lawrence <nlawrence@apple.com>
18198 Reviewed by Oliver Hunt.
18200 Tightened up some get_by_id_chain* code generation
18201 https://bugs.webkit.org/show_bug.cgi?id=40935
18203 This is in the style of
18204 https://bugs.webkit.org/show_bug.cgi?id=30539, and changed code to
18205 call accessor functions when it was not necessary to directly access
18206 the private variables.
18209 * jit/JITPropertyAccess.cpp:
18210 (JSC::JIT::compileGetDirectOffset):
18211 (JSC::JIT::testPrototype):
18212 (JSC::JIT::privateCompilePutByIdTransition):
18213 (JSC::JIT::privateCompileGetByIdChainList):
18214 (JSC::JIT::privateCompileGetByIdChain):
18215 * jit/JITPropertyAccess32_64.cpp:
18216 (JSC::JIT::testPrototype):
18217 (JSC::JIT::privateCompilePutByIdTransition):
18218 (JSC::JIT::privateCompileGetByIdChainList):
18219 (JSC::JIT::privateCompileGetByIdChain):
18221 2010-08-03 Adam Roben <aroben@apple.com>
18223 Turn on PLATFORM_STRATEGIES on Windows
18225 Fixes <http://webkit.org/b/43431>.
18227 Reviewed by Anders Carlsson.
18231 2010-08-04 Gabor Loki <loki@webkit.org>
18233 Reviewed by Geoffrey Garen.
18235 Enable JSValue32_64 for GCC on ARM by default
18236 https://bugs.webkit.org/show_bug.cgi?id=43410
18240 2010-08-03 Gavin Barraclough <barraclough@apple.com>
18242 Speculative windows build fix.
18246 2010-08-03 Gavin Barraclough <barraclough@apple.com>
18248 Build fix following r64624.
18250 * JavaScriptCore.xcodeproj/project.pbxproj:
18251 * wtf/PageAllocation.h:
18253 2010-08-03 Nathan Lawrence <nlawrence@apple.com>
18255 Reviewed by Gavin Barraclough.
18257 https://bugs.webkit.org/show_bug.cgi?id=43269
18259 Added new allocateAligned methods to PageAllocation. In order to
18260 prevent a regress in performance, the function needs to be inlined.
18262 Additionally, I ported the symbian block allocator to use
18263 PageAllocation and added a new WTF::Bitmap class to support this.
18266 * JavaScriptCore.gypi:
18267 * JavaScriptCore.xcodeproj/project.pbxproj:
18268 * runtime/AlignedMemoryAllocator.h: Added.
18269 (JSC::AlignedMemory::deallocate):
18270 (JSC::AlignedMemory::base):
18271 (JSC::AlignedMemory::AlignedMemory):
18272 (JSC::AlignedMemoryAllocator::destroy):
18273 (JSC::AlignedMemoryAllocator::allocate):
18274 (JSC::AlignedMemoryAllocator::AlignedMemoryAllocator):
18275 (JSC::AlignedMemoryAllocator::~AlignedMemoryAllocator):
18276 (JSC::AlignedMemoryAllocator::free):
18277 * runtime/Collector.cpp:
18279 (JSC::Heap::destroy):
18280 (JSC::Heap::allocateBlock):
18281 (JSC::Heap::freeBlock):
18282 (JSC::Heap::freeBlocks):
18283 (JSC::Heap::allocate):
18284 (JSC::Heap::shrinkBlocks):
18285 (JSC::Heap::markConservatively):
18286 (JSC::Heap::clearMarkBits):
18287 (JSC::Heap::markedCells):
18288 * runtime/Collector.h:
18289 (JSC::CollectorHeap::collectorBlock):
18290 * runtime/CollectorHeapIterator.h:
18291 (JSC::CollectorHeapIterator::operator*):
18292 (JSC::LiveObjectIterator::operator++):
18293 (JSC::DeadObjectIterator::operator++):
18294 * wtf/Bitmap.h: Added.
18295 (WTF::Bitmap::get):
18296 (WTF::Bitmap::set):
18297 (WTF::Bitmap::clear):
18298 (WTF::Bitmap::clearAll):
18299 (WTF::Bitmap::advanceToNextFreeBit):
18300 (WTF::Bitmap::count):
18301 (WTF::Bitmap::isEmpty):
18302 (WTF::Bitmap::isFull):
18303 * wtf/PageAllocation.h:
18304 (WTF::PageAllocation::operator UnspecifiedBoolType):
18305 (WTF::PageAllocation::allocateAligned):
18306 (WTF::PageAllocation::reserveAligned):
18308 * wtf/symbian: Removed.
18309 * wtf/symbian/BlockAllocatorSymbian.cpp: Removed.
18310 * wtf/symbian/BlockAllocatorSymbian.h: Removed.
18312 2010-08-03 Michael Saboff <msaboff@apple.com>
18314 Reviewed by Gavin Barraclough.
18316 Fix for https://bugs.webkit.org/show_bug.cgi?id=43314. The prior code
18317 was using the wrong "length" value to move array contents when adding
18318 space to the beginning of an array for an unshift() or similar
18319 operation. Instead of using m_vectorLength, the length of the
18320 allocated JSValue array, the code was using m_length, the declared
18321 length of the array. These two values do not need to match.
18323 * JavaScriptCore.xcodeproj/project.pbxproj:
18324 * runtime/JSArray.cpp:
18325 (JSC::JSArray::increaseVectorPrefixLength):
18327 2010-08-03 Chao-ying Fu <fu@mips.com>
18329 Reviewed by Gavin Barraclough.
18331 Fix following https://bugs.webkit.org/show_bug.cgi?id=43089
18332 (accidentally inverted a compiler version check).
18334 * jit/ExecutableAllocator.h:
18335 (JSC::ExecutableAllocator::cacheFlush):
18337 2010-08-03 Patrick Gansterer <paroga@paroga.com>
18339 Reviewed by Gavin Barraclough.
18341 Implement DEFINE_STUB_FUNCTION for WinCE.
18342 https://bugs.webkit.org/show_bug.cgi?id=34953
18344 * jit/JITStubs.cpp:
18346 (JSC::DEFINE_STUB_FUNCTION):
18348 2010-08-02 Gavin Barraclough <barraclough@apple.com>
18350 Reviewed by Oliver Hunt.
18352 Bug 43390 - Do not CRASH if we run out of room for jit code.
18354 Change the ExecutableAllocator implementations not to crash, and to return 0 if memory cannot be allocated.
18355 The assemblers should pass this through without trying to use it in executableCopy.
18356 Change the LinkBuffer to handle this, and to provide an allocationSuccessful() method to test for this.
18358 Change the JIT to throw an exception if allocation fails.
18359 Make JIT optimizations fail gracefully if memory cannot be allocated (use non-optimized path).
18360 Change YARR JIT to fallback to PCRE
18362 * assembler/ARMAssembler.cpp:
18363 (JSC::ARMAssembler::executableCopy):
18364 * assembler/ARMv7Assembler.h:
18365 (JSC::ARMv7Assembler::executableCopy):
18366 * assembler/LinkBuffer.h:
18367 (JSC::LinkBuffer::allocationSuccessful):
18368 * assembler/MIPSAssembler.h:
18369 (JSC::MIPSAssembler::executableCopy):
18370 * assembler/X86Assembler.h:
18371 (JSC::X86Assembler::executableCopy):
18372 * bytecode/StructureStubInfo.h:
18373 (JSC::StructureStubInfo::initGetByIdProto):
18374 (JSC::StructureStubInfo::initGetByIdChain):
18375 (JSC::StructureStubInfo::initGetByIdSelfList):
18376 (JSC::StructureStubInfo::initGetByIdProtoList):
18377 (JSC::StructureStubInfo::initPutByIdTransition):
18378 * jit/ExecutableAllocator.cpp:
18379 (JSC::ExecutablePool::systemAlloc):
18380 * jit/ExecutableAllocatorFixedVMPool.cpp:
18381 (JSC::FixedVMPoolAllocator::allocInternal):
18383 (JSC::JIT::privateCompile):
18385 (JSC::JIT::compileGetByIdProto):
18386 (JSC::JIT::compileGetByIdSelfList):
18387 (JSC::JIT::compileGetByIdProtoList):
18388 (JSC::JIT::compileGetByIdChainList):
18389 (JSC::JIT::compileGetByIdChain):
18390 (JSC::JIT::compilePutByIdTransition):
18391 (JSC::JIT::compilePatchGetArrayLength):
18392 * jit/JITOpcodes.cpp:
18393 (JSC::JIT::privateCompileCTIMachineTrampolines):
18394 * jit/JITOpcodes32_64.cpp:
18395 (JSC::JIT::privateCompileCTIMachineTrampolines):
18396 (JSC::JIT::privateCompileCTINativeCall):
18397 * jit/JITPropertyAccess.cpp:
18398 (JSC::JIT::stringGetByValStubGenerator):
18399 (JSC::JIT::privateCompilePutByIdTransition):
18400 (JSC::JIT::privateCompilePatchGetArrayLength):
18401 (JSC::JIT::privateCompileGetByIdProto):
18402 (JSC::JIT::privateCompileGetByIdSelfList):
18403 (JSC::JIT::privateCompileGetByIdProtoList):
18404 (JSC::JIT::privateCompileGetByIdChainList):
18405 (JSC::JIT::privateCompileGetByIdChain):
18406 * jit/JITPropertyAccess32_64.cpp:
18407 (JSC::JIT::stringGetByValStubGenerator):
18408 (JSC::JIT::privateCompilePutByIdTransition):
18409 (JSC::JIT::privateCompilePatchGetArrayLength):
18410 (JSC::JIT::privateCompileGetByIdProto):
18411 (JSC::JIT::privateCompileGetByIdSelfList):
18412 (JSC::JIT::privateCompileGetByIdProtoList):
18413 (JSC::JIT::privateCompileGetByIdChainList):
18414 (JSC::JIT::privateCompileGetByIdChain):
18415 * jit/JITStubs.cpp:
18416 (JSC::JITThunks::tryCachePutByID):
18417 (JSC::JITThunks::tryCacheGetByID):
18418 (JSC::DEFINE_STUB_FUNCTION):
18419 (JSC::setupPolymorphicProtoList):
18421 * jit/SpecializedThunkJIT.h:
18422 (JSC::SpecializedThunkJIT::finalize):
18423 * runtime/ExceptionHelpers.cpp:
18424 (JSC::createOutOfMemoryError):
18425 * runtime/ExceptionHelpers.h:
18426 * runtime/Executable.cpp:
18427 (JSC::EvalExecutable::compileInternal):
18428 (JSC::ProgramExecutable::compileInternal):
18429 (JSC::FunctionExecutable::compileForCallInternal):
18430 (JSC::FunctionExecutable::compileForConstructInternal):
18431 (JSC::FunctionExecutable::reparseExceptionInfo):
18432 (JSC::EvalExecutable::reparseExceptionInfo):
18433 * yarr/RegexJIT.cpp:
18434 (JSC::Yarr::RegexGenerator::compile):
18436 2010-08-03 Geoffrey Garen <ggaren@apple.com>
18438 Reviewed by Oliver Hunt.
18440 Fixed a crash seen on the GTK 64bit buildbot.
18442 When JSArray is allocated for the vptr stealing hack, it's not allocated
18443 in the heap, so the JSArray constructor can't safely call Heap::heap().
18445 Since this was subtle enough to confuse smart people, I've changed JSArray
18446 to have an explicit vptr stealing constructor.
18448 * JavaScriptCore.xcodeproj/project.pbxproj:
18449 * runtime/JSArray.cpp:
18450 (JSC::JSArray::JSArray):
18451 * runtime/JSArray.h:
18453 * runtime/JSGlobalData.cpp:
18454 (JSC::JSGlobalData::storeVPtrs):
18456 2010-08-03 Alex Milowski <alex@milowski.com>
18458 Reviewed by Beth Dakin.
18460 Changed the ENABLE_MATHML value to enable MathML by default.
18462 * Configurations/FeatureDefines.xcconfig:
18464 2010-08-03 Michael Saboff <msaboff@apple.com>
18466 Reviewed by Gavin Barraclough.
18468 Change to keep returned pointer from malloc family functions to
18469 quiet memory leak detect. The pointer is saved in the new m_allocBase
18470 member of the ArrayStorage structure. This fixes the issue found in
18471 https://bugs.webkit.org/show_bug.cgi?id=43229.
18473 As part of this change, we use m_allocBase when reallocating and
18474 freeing the memory associated with ArrayStorage.
18476 * runtime/JSArray.cpp:
18477 (JSC::JSArray::JSArray):
18478 (JSC::JSArray::~JSArray):
18479 (JSC::JSArray::putSlowCase):
18480 (JSC::JSArray::increaseVectorLength):
18481 (JSC::JSArray::increaseVectorPrefixLength):
18482 * runtime/JSArray.h:
18484 2010-08-03 Geoffrey Garen <ggaren@apple.com>
18486 Reviewed by Mark Rowe.
18488 https://bugs.webkit.org/show_bug.cgi?id=43444
18489 PLATFORM(CF) is false on Windows in JavaScriptCore
18491 Moved some PLATFORM(WIN) #defines down into JavaScriptCore.
18493 * wtf/Platform.h: Added WTF_PLATFORM_CF 1 and WTF_USE_PTHREADS 0, inherited
18494 from WebCore/config.h. Removed WTF_USE_WININET 1 since WebCore/config.h
18495 just #undefined that later.
18497 2010-08-03 Geoffrey Garen <ggaren@apple.com>
18499 Try to fix Windows build: Don't use GCActivityCallbackCF on Windows, since
18500 PLATFORM(CF) is not defined on Windows.
18502 We'll need to enable the GC activity callback some other way, but this
18503 change should get the build back to normal.
18505 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
18507 * runtime/GCActivityCallbackCF.cpp: Make it easier to detect this error
18508 in the future with an explicit error message.
18510 2010-08-03 Geoffrey Garen <ggaren@apple.com>
18512 Try to fix Windows build: update .def file.
18514 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
18516 2010-08-03 Nathan Lawrence <nlawrence@apple.com>
18518 Reviewed by Oliver Hunt.
18520 https://bugs.webkit.org/show_bug.cgi?id=41318
18521 GC should reclaim garbage even when new objects are not being allocated rapidly
18523 Added a callback in JavaScriptCore that gets triggered after an
18524 allocation causes the heap to reset. This is useful for adding a
18525 timer that will trigger garbage collection after the "last" allocation.
18527 Also needed was to add lock and unlock methods to JSLock that needed
18528 only a JSGlobalData object versus an ExecState object.
18532 * JavaScriptCore.exp:
18533 * JavaScriptCore.gypi:
18534 * JavaScriptCore.pro:
18535 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
18536 * JavaScriptCore.xcodeproj/project.pbxproj:
18537 * jit/JITPropertyAccess.cpp:
18538 (JSC::JIT::emit_op_put_by_val):
18539 * runtime/Collector.cpp:
18541 (JSC::Heap::reset):
18542 (JSC::Heap::setActivityCallback):
18543 * runtime/Collector.h:
18544 * runtime/GCActivityCallback.cpp: Added.
18545 (JSC::DefaultGCActivityCallback::DefaultGCActivityCallback):
18546 (JSC::DefaultGCActivityCallback::~DefaultGCActivityCallback):
18547 (JSC::DefaultGCActivityCallback::operator()):
18548 * runtime/GCActivityCallback.h: Added.
18549 (JSC::GCActivityCallback::~GCActivityCallback):
18550 (JSC::GCActivityCallback::operator()):
18551 (JSC::GCActivityCallback::GCActivityCallback):
18552 (JSC::DefaultGCActivityCallback::create):
18553 * runtime/GCActivityCallbackCF.cpp: Added.
18554 (JSC::DefaultGCActivityCallbackPlatformData::trigger):
18555 (JSC::DefaultGCActivityCallback::DefaultGCActivityCallback):
18556 (JSC::DefaultGCActivityCallback::~DefaultGCActivityCallback):
18557 (JSC::DefaultGCActivityCallback::operator()):
18558 * runtime/JSLock.cpp:
18559 (JSC::JSLock::JSLock):
18560 * runtime/JSLock.h:
18562 2010-08-02 Kevin Ollivier <kevino@theolliviers.com>
18564 [wx] Build fix after removal of need to compile ExecutableAllocatorPosix.cpp
18568 2010-08-02 Mahesh Kulkarni <mahesh.kulkarni@nokia.com>
18570 Reviewed by Simon Hausmann.
18572 [QT] build fix for symbian
18573 https://bugs.webkit.org/show_bug.cgi?id=43234
18575 1) wrong order of passing param's
18576 2) static_cast complains on symbian so using reinterpret_cast
18578 No new tests added. Just a build fix for qt symbian
18580 * wtf/PageAllocation.cpp:
18581 (WTF::PageAllocation::commit):
18582 (WTF::PageAllocation::decommit):
18583 (WTF::PageAllocation::reserve):
18585 2010-07-30 Luiz Agostini <luiz.agostini@openbossa.org>
18587 Reviewed by Simon Fraser.
18589 Enabling view modes to all platforms
18590 https://bugs.webkit.org/show_bug.cgi?id=37505
18592 Removing ENABLE_WIDGETS_10_SUPPORT flag.
18594 As view mode media feature is not part of widget 1.0 specification
18595 any more the ENABLE_WIDGETS_10_SUPPORT flag may be removed. The only use
18596 of this flag was related to view mode media feature implementation in Qt.
18600 2010-07-30 Andy Estes <aestes@apple.com>
18602 Reviewed by David Kilzer.
18604 Add Xcode support for compiling WebKit against iOS SDKs.
18605 https://bugs.webkit.org/show_bug.cgi?id=42796
18607 * Configurations/Base.xcconfig:
18608 * Configurations/DebugRelease.xcconfig:
18609 * Configurations/FeatureDefines.xcconfig:
18611 2010-07-30 Dumitru Daniliuc <dumi@chromium.org>
18613 Reviewed by Davin Levin.
18615 Added a yield() function.
18616 https://bugs.webkit.org/show_bug.cgi?id=42843
18618 * JavaScriptCore.exp:
18619 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
18621 * wtf/ThreadingPthreads.cpp:
18623 * wtf/ThreadingWin.cpp:
18625 * wtf/gtk/ThreadingGtk.cpp:
18627 * wtf/qt/ThreadingQt.cpp:
18630 2010-07-30 Rafael Antognolli <antognolli@profusion.mobi>
18632 Reviewed by Antonio Gomes.
18634 [EFL] Add library version and soname to EFL generated libraries and binary.
18635 https://bugs.webkit.org/show_bug.cgi?id=43212
18637 Add version and soname to libjavascriptcore.so and libwtf.so in case of
18638 linking as shared libraries, and version to jsc executable.
18641 * jsc/CMakeLists.txt:
18642 * wtf/CMakeLists.txt:
18644 2010-07-30 Mahesh Kulkarni <mahesh.kulkarni@nokia.com>
18646 Reviewed by Simon Hausmann.
18648 [QT] build fix for symbian
18649 https://bugs.webkit.org/show_bug.cgi?id=43234
18651 * wtf/PageAllocation.h:
18652 (WTF::PageAllocation::PageAllocation):
18654 2010-07-29 Sheriff Bot <webkit.review.bot@gmail.com>
18656 Unreviewed, rolling out r64313.
18657 http://trac.webkit.org/changeset/64313
18658 https://bugs.webkit.org/show_bug.cgi?id=43233
18660 Some Chromium bots are not happy with it for some unknown
18661 reason. (Requested by dumi on #webkit).
18663 * JavaScriptCore.exp:
18664 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
18666 * wtf/ThreadingPthreads.cpp:
18667 * wtf/ThreadingWin.cpp:
18668 * wtf/gtk/ThreadingGtk.cpp:
18669 * wtf/qt/ThreadingQt.cpp:
18671 2010-07-29 Sheriff Bot <webkit.review.bot@gmail.com>
18673 Unreviewed, rolling out r64302.
18674 http://trac.webkit.org/changeset/64302
18675 https://bugs.webkit.org/show_bug.cgi?id=43223
18677 Assertion is bogus (Requested by olliej on #webkit).
18679 * assembler/ARMAssembler.cpp:
18680 (JSC::ARMAssembler::executableCopy):
18681 * assembler/AssemblerBuffer.h:
18682 (JSC::AssemblerBuffer::putShortUnchecked):
18683 (JSC::AssemblerBuffer::putIntUnchecked):
18684 (JSC::AssemblerBuffer::putInt64Unchecked):
18685 * jit/JITStubs.cpp:
18686 * pcre/pcre_compile.cpp:
18688 * wtf/FastMalloc.cpp:
18689 (WTF::PageHeapAllocator::New):
18690 (WTF::TCMalloc_Central_FreeList::Populate):
18692 (WTF::reverseBytes):
18693 (WTF::MD5::addBytes):
18694 (WTF::MD5::checksum):
18695 * wtf/StdLibExtras.h:
18697 (WTF::VectorBuffer::inlineBuffer):
18698 * wtf/qt/StringQt.cpp:
18699 (WebCore::String::String):
18701 2010-07-29 Michael Saboff <msaboff@apple.com>
18703 Reviewed by Gavin Barraclough.
18705 Changed the handling for removing and adding elements at the front
18706 of an array. The code now keeps a bias that indicates the amount of
18707 JSValue sized holes are prior to the ArrayStorage block. This means
18708 that shift operations are now memmove's of the header part of
18709 the ArrayStorage and unshift operations are similar, but may require a
18710 realloc first to create the space. Similar operations are performed
18711 for special cases of splice and slice.
18712 Also optimized the new Array(size) case so that we don't allocate and
18713 initialize array elements until the JS code starts using elements.
18714 The array growth code is slightly more aggressive for initial growth
18715 based on size growth of any previous array.
18717 * Configurations/JavaScriptCore.xcconfig:
18718 * jit/JITPropertyAccess.cpp:
18719 (JSC::JIT::emit_op_get_by_val):
18720 (JSC::JIT::emit_op_put_by_val):
18721 (JSC::JIT::privateCompilePatchGetArrayLength):
18722 * jit/JITPropertyAccess32_64.cpp:
18723 (JSC::JIT::emit_op_get_by_val):
18724 (JSC::JIT::emit_op_put_by_val):
18725 (JSC::JIT::privateCompilePatchGetArrayLength):
18726 * runtime/ArrayPrototype.cpp:
18727 (JSC::arrayProtoFuncShift):
18728 (JSC::arrayProtoFuncSplice):
18729 (JSC::arrayProtoFuncUnShift):
18730 * runtime/JSArray.cpp:
18731 (JSC::JSArray::JSArray):
18732 (JSC::JSArray::~JSArray):
18733 (JSC::JSArray::getOwnPropertySlot):
18734 (JSC::JSArray::getOwnPropertyDescriptor):
18735 (JSC::JSArray::put):
18736 (JSC::JSArray::putSlowCase):
18737 (JSC::JSArray::deleteProperty):
18738 (JSC::JSArray::getOwnPropertyNames):
18739 (JSC::JSArray::getNewVectorLength):
18740 (JSC::JSArray::increaseVectorLength):
18741 (JSC::JSArray::increaseVectorPrefixLength):
18742 (JSC::JSArray::setLength):
18743 (JSC::JSArray::pop):
18744 (JSC::JSArray::push):
18745 (JSC::JSArray::shiftCount):
18746 (JSC::JSArray::unshiftCount):
18747 (JSC::JSArray::sortNumeric):
18748 (JSC::JSArray::sort):
18749 (JSC::JSArray::fillArgList):
18750 (JSC::JSArray::copyToRegisters):
18751 (JSC::JSArray::compactForSorting):
18752 (JSC::JSArray::subclassData):
18753 (JSC::JSArray::setSubclassData):
18754 (JSC::JSArray::checkConsistency):
18755 * runtime/JSArray.h:
18756 (JSC::JSArray::length):
18757 (JSC::JSArray::canGetIndex):
18758 (JSC::JSArray::getIndex):
18759 (JSC::JSArray::setIndex):
18760 (JSC::JSArray::uncheckedSetIndex):
18761 (JSC::JSArray::arrayStorage):
18762 (JSC::JSArray::setArrayStorage):
18763 (JSC::JSArray::markChildrenDirect):
18765 2010-07-29 Michael Saboff <msaboff@apple.com>
18767 Reviewed by Darin Adler.
18769 Changed MINIMUM_CELL_SIZE to be fixed at 64 bytes.
18771 * runtime/Collector.h:
18773 2010-07-28 Dumitru Daniliuc <dumi@chromium.org>
18775 Reviewed by David Levin.
18777 Added a yield() function.
18778 https://bugs.webkit.org/show_bug.cgi?id=42843
18780 * JavaScriptCore.exp:
18781 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
18783 * wtf/ThreadingPthreads.cpp:
18785 * wtf/ThreadingWin.cpp:
18787 * wtf/gtk/ThreadingGtk.cpp:
18789 * wtf/qt/ThreadingQt.cpp:
18792 2010-07-29 Michael Saboff <msaboff@apple.com>
18794 Reviewed by Oliver Hunt.
18796 Fixed issue where RegExp greedy jit code loops when no input is
18797 consumed. Changed the code to only loop if some input was consumed,
18798 but fall through if we successfully match an alternative that
18799 doesn't consume any input.
18800 https://bugs.webkit.org/show_bug.cgi?id=42664
18802 * yarr/RegexJIT.cpp:
18803 (JSC::Yarr::RegexGenerator::generateParenthesesGreedyNoBacktrack):
18805 2010-07-29 Gabor Loki <loki@webkit.org>
18807 Reviewed by Gavin Barraclough.
18809 Avoid increasing required alignment of target type warning on ARM
18810 https://bugs.webkit.org/show_bug.cgi?id=38045
18812 The reinterpret_cast<Type1*>([pointer to Type2]) expressions - where
18813 sizeof(Type1) > sizeof(Type2) - cause the following warning on ARM:
18814 increases required alignment of target type warnings.
18815 Casting the type of [pointer to Type2] object to void* bypasses the
18818 * assembler/ARMAssembler.cpp:
18819 (JSC::ARMAssembler::executableCopy):
18820 * assembler/AssemblerBuffer.h:
18821 (JSC::AssemblerBuffer::putShortUnchecked):
18822 (JSC::AssemblerBuffer::putIntUnchecked):
18823 (JSC::AssemblerBuffer::putInt64Unchecked):
18824 * jit/JITStubs.cpp:
18825 * pcre/pcre_compile.cpp:
18827 * wtf/FastMalloc.cpp:
18828 (WTF::PageHeapAllocator::New):
18829 (WTF::TCMalloc_Central_FreeList::Populate):
18831 (WTF::reverseBytes):
18832 (WTF::MD5::addBytes):
18833 (WTF::MD5::checksum):
18834 * wtf/StdLibExtras.h:
18835 (reinterpret_cast_ptr):
18837 (WTF::VectorBuffer::inlineBuffer):
18838 * wtf/qt/StringQt.cpp:
18839 (WebCore::String::String):
18841 2010-07-29 Martin Robinson <mrobinson@igalia.com>
18843 Unreviewed build fix.
18845 Include a missing header in the source list to fix 'make dist.'
18847 * GNUmakefile.am: Include missing header.
18849 2010-07-28 Gavin Barraclough <barraclough@apple.com>
18851 Reviewed by Darin Adler.
18853 Bug 43162 - Add support for MADV_FREE to PageAllocation.
18855 * wtf/PageAllocation.cpp:
18856 (WTF::PageAllocation::commit):
18857 (WTF::PageAllocation::decommit):
18859 2010-07-27 Kinuko Yasuda <kinuko@chromium.org>
18861 Reviewed by Ojan Vafai.
18863 Add FILE_SYSTEM build flag for FileSystem API
18864 https://bugs.webkit.org/show_bug.cgi?id=42915
18866 * Configurations/FeatureDefines.xcconfig:
18868 2010-07-27 Gavin Barraclough <barraclough@apple.com>
18870 Temporarily rolling out http://trac.webkit.org/changeset/64177,
18871 this seems to give QT ARM/Win a headache (specifically, looks
18872 like structure layour differs, objects get too large -
18873 "..\..\..\JavaScriptCore\runtime\ArrayPrototype.cpp:41:"
18874 "error: size of array 'dummyclass_fits_in_cell' is negative").
18876 * jit/JITPropertyAccess.cpp:
18877 (JSC::JIT::emit_op_get_by_val):
18878 (JSC::JIT::emit_op_put_by_val):
18879 (JSC::JIT::privateCompilePatchGetArrayLength):
18880 * jit/JITPropertyAccess32_64.cpp:
18881 (JSC::JIT::emit_op_get_by_val):
18882 (JSC::JIT::emit_op_put_by_val):
18883 (JSC::JIT::privateCompilePatchGetArrayLength):
18884 * runtime/ArrayPrototype.cpp:
18885 (JSC::arrayProtoFuncShift):
18886 (JSC::arrayProtoFuncSplice):
18887 (JSC::arrayProtoFuncUnShift):
18888 * runtime/JSArray.cpp:
18889 (JSC::increasedVectorLength):
18890 (JSC::JSArray::JSArray):
18891 (JSC::JSArray::~JSArray):
18892 (JSC::JSArray::getOwnPropertySlot):
18893 (JSC::JSArray::getOwnPropertyDescriptor):
18894 (JSC::JSArray::put):
18895 (JSC::JSArray::putSlowCase):
18896 (JSC::JSArray::deleteProperty):
18897 (JSC::JSArray::getOwnPropertyNames):
18898 (JSC::JSArray::increaseVectorLength):
18899 (JSC::JSArray::setLength):
18900 (JSC::JSArray::pop):
18901 (JSC::JSArray::push):
18902 (JSC::JSArray::sortNumeric):
18903 (JSC::JSArray::sort):
18904 (JSC::JSArray::fillArgList):
18905 (JSC::JSArray::copyToRegisters):
18906 (JSC::JSArray::compactForSorting):
18907 (JSC::JSArray::subclassData):
18908 (JSC::JSArray::setSubclassData):
18909 (JSC::JSArray::checkConsistency):
18910 * runtime/JSArray.h:
18911 (JSC::JSArray::length):
18912 (JSC::JSArray::canGetIndex):
18913 (JSC::JSArray::getIndex):
18914 (JSC::JSArray::setIndex):
18915 (JSC::JSArray::uncheckedSetIndex):
18916 (JSC::JSArray::markChildrenDirect):
18918 2010-07-27 Gavin Barraclough <barraclough@apple.com>
18920 Speculative build fix for Chromium/Win
18924 2010-07-27 Gavin Barraclough <barraclough@apple.com>
18926 Oh! that makes more sense! Maybe C++-style comments are bringing teh bad mojo.
18930 2010-07-27 Gavin Barraclough <barraclough@apple.com>
18932 Speculative build fix for GTK/64 ... seems to be barfing on a comment o_O
18936 2010-07-27 Michael Saboff <msaboff@apple.com>
18938 Reviewed by Gavin Barraclough.
18940 Changed the handling for removing and adding elements at the front
18941 of an array. The code now keeps a bias that indicates the amount of
18942 JSValue sized holes are prior to the ArrayStorage block. This means
18943 that shift operations are now memmove's of the header part of
18944 the ArrayStorage and unshift operations are similar, but may require a
18945 realloc first to create the space. Similar operations are performed
18946 for special cases of splice and slice.
18947 Also optimized the new Array(size) case so that we don't allocate and
18948 initialize array elements until the JS code starts using elements.
18949 The array growth code is slightly more aggressive for initial growth
18950 based on size growth of any previous array.
18952 * Configurations/JavaScriptCore.xcconfig:
18953 * jit/JITPropertyAccess.cpp:
18954 (JSC::JIT::emit_op_get_by_val):
18955 (JSC::JIT::emit_op_put_by_val):
18956 (JSC::JIT::privateCompilePatchGetArrayLength):
18957 * jit/JITPropertyAccess32_64.cpp:
18958 (JSC::JIT::emit_op_get_by_val):
18959 (JSC::JIT::emit_op_put_by_val):
18960 (JSC::JIT::privateCompilePatchGetArrayLength):
18961 * runtime/ArrayPrototype.cpp:
18962 (JSC::arrayProtoFuncShift):
18963 (JSC::arrayProtoFuncSplice):
18964 (JSC::arrayProtoFuncUnShift):
18965 * runtime/JSArray.cpp:
18966 (JSC::JSArray::JSArray):
18967 (JSC::JSArray::~JSArray):
18968 (JSC::JSArray::getOwnPropertySlot):
18969 (JSC::JSArray::getOwnPropertyDescriptor):
18970 (JSC::JSArray::put):
18971 (JSC::JSArray::putSlowCase):
18972 (JSC::JSArray::deleteProperty):
18973 (JSC::JSArray::getOwnPropertyNames):
18974 (JSC::JSArray::getNewVectorLength):
18975 (JSC::JSArray::increaseVectorLength):
18976 (JSC::JSArray::increaseVectorPrefixLength):
18977 (JSC::JSArray::setLength):
18978 (JSC::JSArray::pop):
18979 (JSC::JSArray::push):
18980 (JSC::JSArray::shiftCount):
18981 (JSC::JSArray::unshiftCount):
18982 (JSC::JSArray::sortNumeric):
18983 (JSC::JSArray::sort):
18984 (JSC::JSArray::fillArgList):
18985 (JSC::JSArray::copyToRegisters):
18986 (JSC::JSArray::compactForSorting):
18987 (JSC::JSArray::subclassData):
18988 (JSC::JSArray::setSubclassData):
18989 (JSC::JSArray::checkConsistency):
18990 * runtime/JSArray.h:
18991 (JSC::JSArray::length):
18992 (JSC::JSArray::canGetIndex):
18993 (JSC::JSArray::getIndex):
18994 (JSC::JSArray::setIndex):
18995 (JSC::JSArray::uncheckedSetIndex):
18996 (JSC::JSArray::arrayStorage):
18997 (JSC::JSArray::setArrayStorage):
18998 (JSC::JSArray::markChildrenDirect):
19000 2010-07-27 Gavin Barraclough <barraclough@apple.com>
19002 Reviewed by Oliver Hunt.
19004 Bug 43089 - Cleanup JIT related switched in Platform.h
19006 The code the enable to JIT checks every permutation of platform & OS individually, but
19007 now the JIT is enabled on the majority much all x86/x86-64/ARM/MIPS systems. It should
19008 be cleaner to just enable by default on these platforms, and explicitly disable on configs
19009 that don't aren't supported.
19011 Also, rename ENABLE_JIT_OPTIMIZE_MOD to ENABLE_JIT_USE_SOFT_MODULO. I always find this
19012 confusing since enabling this "optimization" would be possible, but would be a regression
19013 on x86/x86-64 systems! I think it's clearer to reserve "JIT_OPTIMIZE" for compiler
19014 technologies applicable to all platforms, and make a more optional behaviour like this a
19017 * jit/ExecutableAllocator.h:
19018 (JSC::ExecutableAllocator::cacheFlush):
19020 * jit/JITArithmetic.cpp:
19021 (JSC::JIT::emit_op_mod):
19022 (JSC::JIT::emitSlow_op_mod):
19023 * jit/JITArithmetic32_64.cpp:
19024 (JSC::JIT::emit_op_mod):
19025 (JSC::JIT::emitSlow_op_mod):
19026 * jit/JITOpcodes.cpp:
19027 (JSC::JIT::privateCompileCTIMachineTrampolines):
19028 * jit/JITOpcodes32_64.cpp:
19029 (JSC::JIT::privateCompileCTIMachineTrampolines):
19032 2010-07-27 James Robinson <jamesr@chromium.org>
19034 Reviewed by Darin Fisher.
19036 [chromium] Make PLATFORM(CHROMIUM) and not OS(MAC) turn USE(GLES2_RENDERING) on
19037 https://bugs.webkit.org/show_bug.cgi?id=43084
19039 This turns USE(GLES2_RENDERING) on for chromium on windows/linux. This causes no
19040 change in behavior, that's all controlled by ENABLE() macros that are currently off.
19044 2010-07-23 Helder Correia <heldercorreia@codeaurora.org>
19046 Reviewed by Darin Adler.
19048 Canvas tests 2d.imageData.object.round and 2d.imageData.object.wrap are
19049 failing. For canvas image data manipulation, the values passed should
19050 be truncated and wrapped. Also fix the canvas-ImageData-behaviour test
19051 to expect wrapping rather than clamping, and add some new checkings.
19052 https://bugs.webkit.org/show_bug.cgi?id=40272
19054 * runtime/JSByteArray.h:
19055 (JSC::JSByteArray::setIndex):
19056 (JSC::JSByteArray::JSByteArray):
19058 2010-07-27 Gavin Barraclough <barraclough@apple.com>
19060 Reviewed by Oliver Hunt.
19062 Bug 42621 - Add a bump allocator for the YARR interpreter
19064 The regex engine requires lifo allocation, however currently uses the general purpose
19065 malloc/free memory allocation. A simple bump pointer allocator should provide a lower
19066 overhead allocation solution.
19068 When using YARR interpreter, 15% progression on v8-regex.
19070 * JavaScriptCore.xcodeproj/project.pbxproj:
19071 * runtime/JSGlobalData.h:
19072 * runtime/RegExp.cpp:
19073 (JSC::RegExp::compile):
19074 * wtf/BumpPointerAllocator.h: Added.
19075 (WTF::BumpPointerPool::ensureCapacity):
19076 (WTF::BumpPointerPool::alloc):
19077 (WTF::BumpPointerPool::dealloc):
19078 (WTF::BumpPointerPool::operator new):
19079 (WTF::BumpPointerPool::BumpPointerPool):
19080 (WTF::BumpPointerPool::create):
19081 (WTF::BumpPointerPool::shrink):
19082 (WTF::BumpPointerPool::destroy):
19083 (WTF::BumpPointerPool::ensureCapacityCrossPool):
19084 (WTF::BumpPointerPool::deallocCrossPool):
19085 (WTF::BumpPointerAllocator::BumpPointerAllocator):
19086 (WTF::BumpPointerAllocator::~BumpPointerAllocator):
19087 (WTF::BumpPointerAllocator::startAllocator):
19088 (WTF::BumpPointerAllocator::stopAllocator):
19089 * yarr/RegexInterpreter.cpp:
19090 (JSC::Yarr::Interpreter::allocDisjunctionContext):
19091 (JSC::Yarr::Interpreter::freeDisjunctionContext):
19092 (JSC::Yarr::Interpreter::allocParenthesesDisjunctionContext):
19093 (JSC::Yarr::Interpreter::freeParenthesesDisjunctionContext):
19094 (JSC::Yarr::Interpreter::interpret):
19095 (JSC::Yarr::Interpreter::Interpreter):
19096 (JSC::Yarr::ByteCompiler::compile):
19097 (JSC::Yarr::byteCompileRegex):
19098 * yarr/RegexInterpreter.h:
19099 (JSC::Yarr::BytecodePattern::BytecodePattern):
19101 2010-07-26 Gavin Barraclough <barraclough@apple.com>
19103 Windows build fix from Chromium/GTK build fix!
19105 * wtf/PageAllocation.cpp:
19107 2010-07-26 Gavin Barraclough <barraclough@apple.com>
19109 Chromium/GTK build fix
19111 * wtf/PageAllocation.cpp:
19113 2010-07-26 Gavin Barraclough <barraclough@apple.com>
19115 Build fix for !Mac platforms.
19120 * JavaScriptCore.gypi:
19121 * JavaScriptCore.pro:
19122 * JavaScriptCore.vcproj/WTF/WTF.vcproj:
19124 2010-07-26 Gavin Barraclough <barraclough@apple.com>
19126 Reviewed by Oliver Hunt.
19128 Bug 43009 - Abstract out page allocation from executable allocators
19130 It would be great to have a single platform abstraction for block allocation, rather than copy/paste code.
19132 In this initial implementation I've made Symbian fall back to use malloc/free for non-executable memory.
19133 I think this will match current behaviour for the next client we will want to port across (RegisterFile &
19136 * CMakeListsEfl.txt:
19138 * JavaScriptCore.gypi:
19139 * JavaScriptCore.pro:
19140 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
19141 * JavaScriptCore.xcodeproj/project.pbxproj:
19142 * jit/ExecutableAllocator.cpp:
19143 (JSC::ExecutableAllocator::intializePageSize):
19144 (JSC::ExecutablePool::systemAlloc):
19145 (JSC::ExecutablePool::systemRelease):
19146 (JSC::ExecutableAllocator::isValid):
19147 * jit/ExecutableAllocator.h:
19148 (JSC::ExecutablePool::ExecutablePool):
19149 (JSC::ExecutablePool::poolAllocate):
19150 * jit/ExecutableAllocatorFixedVMPool.cpp:
19151 (JSC::FixedVMPoolAllocator::release):
19152 (JSC::FixedVMPoolAllocator::reuse):
19153 (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
19154 (JSC::FixedVMPoolAllocator::alloc):
19155 (JSC::FixedVMPoolAllocator::free):
19156 (JSC::FixedVMPoolAllocator::isValid):
19157 (JSC::FixedVMPoolAllocator::isWithinVMPool):
19158 (JSC::ExecutablePool::systemAlloc):
19159 (JSC::ExecutablePool::systemRelease):
19160 * jit/ExecutableAllocatorPosix.cpp: Removed.
19161 * jit/ExecutableAllocatorSymbian.cpp: Removed.
19162 * jit/ExecutableAllocatorWin.cpp: Removed.
19164 * wtf/PageAllocator.cpp: Added.
19166 (WTF::PageAllocation::commit):
19167 (WTF::PageAllocation::decommit):
19168 (WTF::PageAllocator::allocate):
19169 (WTF::PageAllocator::reserve):
19170 (WTF::PageAllocator::deallocate):
19171 (WTF::PageAllocator::pagesize):
19172 * wtf/PageAllocator.h: Added.
19173 (WTF::PageAllocation::PageAllocation):
19174 (WTF::PageAllocation::base):
19175 (WTF::PageAllocation::size):
19176 (WTF::PageAllocation::chunk):
19177 (WTF::PageAllocation::operator!):
19178 (WTF::PageAllocator::):
19180 2010-07-26 Gavin Barraclough <barraclough@apple.com>
19182 Rolling out r64097:64100, oops, more b0rked than I relized by my last changes, sorry!
19184 * CMakeListsEfl.txt:
19186 * JavaScriptCore.gypi:
19187 * JavaScriptCore.pro:
19188 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
19189 * JavaScriptCore.xcodeproj/project.pbxproj:
19190 * jit/ExecutableAllocator.cpp:
19191 (JSC::ExecutableAllocator::reprotectRegion):
19192 (JSC::ExecutableAllocator::cacheFlush):
19193 * jit/ExecutableAllocator.h:
19194 (JSC::ExecutablePool::ExecutablePool):
19195 (JSC::ExecutablePool::poolAllocate):
19196 * jit/ExecutableAllocatorFixedVMPool.cpp:
19197 (JSC::FixedVMPoolAllocator::release):
19198 (JSC::FixedVMPoolAllocator::reuse):
19199 (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
19200 (JSC::FixedVMPoolAllocator::alloc):
19201 (JSC::FixedVMPoolAllocator::free):
19202 (JSC::FixedVMPoolAllocator::isValid):
19203 (JSC::FixedVMPoolAllocator::isWithinVMPool):
19204 (JSC::ExecutablePool::systemAlloc):
19205 (JSC::ExecutablePool::systemRelease):
19206 * jit/ExecutableAllocatorPosix.cpp: Added.
19207 (JSC::ExecutableAllocator::intializePageSize):
19208 (JSC::ExecutablePool::systemAlloc):
19209 (JSC::ExecutablePool::systemRelease):
19210 (JSC::ExecutableAllocator::isValid):
19211 * jit/ExecutableAllocatorSymbian.cpp: Added.
19212 (JSC::ExecutableAllocator::intializePageSize):
19213 (JSC::ExecutablePool::systemAlloc):
19214 (JSC::ExecutablePool::systemRelease):
19215 (JSC::ExecutableAllocator::isValid):
19216 * jit/ExecutableAllocatorWin.cpp: Added.
19217 (JSC::ExecutableAllocator::intializePageSize):
19218 (JSC::ExecutablePool::systemAlloc):
19219 (JSC::ExecutablePool::systemRelease):
19220 (JSC::ExecutableAllocator::isValid):
19222 * wtf/PageAllocation.cpp: Removed.
19223 * wtf/PageAllocation.h: Removed.
19225 2010-07-26 Gavin Barraclough <barraclough@apple.com>
19227 Speculative !debug build fix II.
19229 * wtf/PageAllocation.h:
19230 (WTF::PageAllocation::PageAllocation):
19232 2010-07-26 Gavin Barraclough <barraclough@apple.com>
19234 Speculative !debug build fix.
19236 * wtf/PageAllocation.h:
19237 (WTF::PageAllocation::PageAllocation):
19239 2010-07-26 Gavin Barraclough <barraclough@apple.com>
19241 Reviewed by Oliver Hunt.
19243 Bug 43009 - Abstract out page allocation from executable allocators
19245 It would be great to have a single platform abstraction for block allocation, rather than copy/paste code.
19247 In this initial implementation I've made Symbian fall back to use malloc/free for non-executable memory.
19248 I think this will match current behaviour for the next client we will want to port across (RegisterFile &
19251 * CMakeListsEfl.txt:
19253 * JavaScriptCore.gypi:
19254 * JavaScriptCore.pro:
19255 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
19256 * JavaScriptCore.xcodeproj/project.pbxproj:
19257 * jit/ExecutableAllocator.cpp:
19258 (JSC::ExecutableAllocator::intializePageSize):
19259 (JSC::ExecutablePool::systemAlloc):
19260 (JSC::ExecutablePool::systemRelease):
19261 (JSC::ExecutableAllocator::isValid):
19262 * jit/ExecutableAllocator.h:
19263 (JSC::ExecutablePool::ExecutablePool):
19264 (JSC::ExecutablePool::poolAllocate):
19265 * jit/ExecutableAllocatorFixedVMPool.cpp:
19266 (JSC::FixedVMPoolAllocator::release):
19267 (JSC::FixedVMPoolAllocator::reuse):
19268 (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
19269 (JSC::FixedVMPoolAllocator::alloc):
19270 (JSC::FixedVMPoolAllocator::free):
19271 (JSC::FixedVMPoolAllocator::isValid):
19272 (JSC::FixedVMPoolAllocator::isWithinVMPool):
19273 (JSC::ExecutablePool::systemAlloc):
19274 (JSC::ExecutablePool::systemRelease):
19275 * jit/ExecutableAllocatorPosix.cpp: Removed.
19276 * jit/ExecutableAllocatorSymbian.cpp: Removed.
19277 * jit/ExecutableAllocatorWin.cpp: Removed.
19279 * wtf/PageAllocator.cpp: Added.
19281 (WTF::PageAllocation::commit):
19282 (WTF::PageAllocation::decommit):
19283 (WTF::PageAllocator::allocate):
19284 (WTF::PageAllocator::reserve):
19285 (WTF::PageAllocator::deallocate):
19286 (WTF::PageAllocator::pagesize):
19287 * wtf/PageAllocator.h: Added.
19288 (WTF::PageAllocation::PageAllocation):
19289 (WTF::PageAllocation::base):
19290 (WTF::PageAllocation::size):
19291 (WTF::PageAllocation::chunk):
19292 (WTF::PageAllocation::operator!):
19293 (WTF::PageAllocator::):
19295 2009-10-30 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
19297 Reviewed by Kenneth Rohde Christiansen.
19299 [Qt] Use the default timeout interval for JS as the HTML tokenizer delay for setHtml()
19301 This ensures that long-running JavaScript (for example due to a modal alert() dialog),
19302 will not trigger a deferred load after only 500ms (the default tokenizer delay) while
19303 still giving a reasonable timeout (10 seconds) to prevent deadlock.
19305 https://bugs.webkit.org/show_bug.cgi?id=29381
19307 * runtime/TimeoutChecker.h: Add getter for the timeout interval
19309 2010-07-25 Patrick Gansterer <paroga@paroga.com>
19311 Reviewed by Kent Tamura.
19313 [WINCE] Buildfix for JSC in release mode
19314 https://bugs.webkit.org/show_bug.cgi?id=42934
19316 * jsc.cpp: Don't use __try on WinCE.
19318 2010-07-24 Patrick Gansterer <paroga@paroga.com>
19320 Reviewed by Darin Adler.
19322 [MSVC] Ensure 4 byte alignment on ARM
19323 https://bugs.webkit.org/show_bug.cgi?id=42935
19325 * jit/JITStubs.h: Added #pragma pack(4) around JITStackFrame.
19327 2010-07-24 Patrick Gansterer <paroga@paroga.com>
19329 Reviewed by Darin Adler.
19331 [WINCE] Cleanup defines in Platform.h
19332 https://bugs.webkit.org/show_bug.cgi?id=42933
19336 2010-07-23 Rafael Antognolli <antognolli@profusion.mobi>
19338 Reviewed by Antonio Gomes.
19340 [EFL] Cleanup glib support (make it optional)
19341 https://bugs.webkit.org/show_bug.cgi?id=42480
19343 Remove gobject/GRefPtr.cpp if not using soup/glib.
19345 * wtf/CMakeListsEfl.txt:
19347 2010-07-23 Patrick Gansterer <paroga@paroga.com>
19349 Reviewed by Adam Roben.
19351 [WINCE] Implement TCSpinLock.
19352 https://bugs.webkit.org/show_bug.cgi?id=41792
19354 Implement the SpinLock with InterlockedExchange from the Windows API.
19356 * wtf/TCSpinLock.h:
19357 (TCMalloc_SpinLock::Lock):
19358 (TCMalloc_SpinLock::Unlock):
19359 (TCMalloc_SpinLock::IsHeld):
19360 (TCMalloc_SpinLock::Init):
19361 (TCMalloc_SlowLock):
19363 2010-07-22 Csaba Osztrogonác <ossy@webkit.org>
19365 Unreviewed rolling out r63947 and r63948, because they broke Qt Windows build.
19367 * jit/JITStubs.cpp:
19370 2010-07-22 Gavin Barraclough <barraclough@apple.com>
19372 Eeeep! r63947 hosed all non-x86 builds!
19376 2010-07-22 Gavin Barraclough <barraclough@apple.com>
19378 Reviewed by Oliver Hunt.
19380 Bug 42818 - [Qt] REGRESSION(63348): jsc is broken
19381 Speculative fix, need fastcall conventions on Qt/Win.
19383 * jit/JITStubs.cpp:
19386 2010-07-22 Oliver Hunt <oliver@apple.com>
19388 Reviewed by Gavin Barraclough.
19390 Do more constant folding
19391 https://bugs.webkit.org/show_bug.cgi?id=42867
19393 Constant fold a few more operations. SunSpider says this is
19394 a win but I suspect that's just code motion at play.
19396 * parser/ASTBuilder.h:
19397 (JSC::ASTBuilder::makeModNode):
19398 (JSC::ASTBuilder::makeURightShiftNode):
19399 (JSC::ASTBuilder::makeBitOrNode):
19400 (JSC::ASTBuilder::makeBitAndNode):
19401 (JSC::ASTBuilder::makeBitXOrNode):
19402 (JSC::ASTBuilder::makeBinaryNode):
19404 2010-07-22 Kent Hansen <kent.hansen@nokia.com>
19406 Reviewed by Kent Tamura.
19408 Error properties of the Global Object are missing the DontEnum attribute
19409 https://bugs.webkit.org/show_bug.cgi?id=28771
19411 Add the attributes to become spec compliant.
19413 * runtime/JSGlobalObject.cpp:
19414 (JSC::JSGlobalObject::reset):
19416 2010-07-20 Steve Falkenburg <sfalken@apple.com>
19418 Reviewed by Adam Roben.
19420 WebKit on Windows should build optionally with an unversioned ICU DLL
19421 https://bugs.webkit.org/show_bug.cgi?id=42722
19422 <rdar://problem/8211743> JavaScriptCore needs to link against unversioned ICU
19424 Dynamically create a new header, ICUVersion.h, as part of build-generated-files.sh.
19425 Header contains a preprocessor define (U_DISABLE_RENAMING) indicating to ICU whether the ICU API
19426 should be namespaced with the current ICU version number. Proper value is determined
19427 by checking for the presence of libicuuc.lib, the unversioned copy of ICU.
19429 To get the proper value for U_DISABLE_RENAMING into all source files, we force
19430 the include of ICUVersion.h (our generated header) via the compiler options.
19432 Since the versioned and unversioned ICU have different filenames (libicuuc.lib vs icuuc.lib)
19433 we copy the ICU lib to an intermediate location under obj with a common name. This
19434 allows us to link properly with either without adding a new build configuration.
19436 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
19437 Copy ICU libs into a common location with a common name.
19438 Add additional library search path to pick up icu lib.
19439 Change ICU library filename specified to linker.
19440 Add forced include of ICUVersion.h.
19441 * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: Generate ICUVersion.h
19442 * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops: Add forced include of ICUVersion.h.
19443 * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
19444 Copy ICU libs into a common location with a common name.
19445 Add additional library search path to pick up icu lib.
19446 Change ICU library filename specified to linker.
19447 Add forced include of ICUVersion.h.
19448 * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops:
19449 Copy ICU libs into a common location with a common name.
19450 Add additional library search path to pick up icu lib.
19451 Change ICU library filename specified to linker.
19452 Add forced include of ICUVersion.h.
19454 2010-07-20 Steve Falkenburg <sfalken@apple.com>
19456 Re-save vsprops files after no-op edits in Visual Studio
19457 to fix manual edit issues.
19459 2010-07-20 Mahesh Kulkarni <mahesh.kulkarni@nokia.com>
19461 Reviewed by Steve Block.
19463 Need to be able to configure Geolocation policy regarding user permissions
19464 https://bugs.webkit.org/show_bug.cgi?id=42068
19466 If CLIENT_BASED_GEOLOCATION is enabled, enable preemtive permission policy
19471 2010-07-20 Sheriff Bot <webkit.review.bot@gmail.com>
19473 Unreviewed, rolling out r63742.
19474 http://trac.webkit.org/changeset/63742
19475 https://bugs.webkit.org/show_bug.cgi?id=42641
19477 Broke Leopard Intel build. (Requested by bbandix on #webkit).
19481 2010-07-20 Mahesh Kulkarni <mahesh.kulkarni@nokia.com>
19483 Reviewed by Steve Block.
19485 Need to be able to configure Geolocation policy regarding user permissions
19486 https://bugs.webkit.org/show_bug.cgi?id=42068
19488 If CLIENT_BASED_GEOLOCATION is enabled, enable preemtive permission policy
19493 2010-07-19 Dirk Schulze <krit@webkit.org>
19495 Reviewed by Nikolas Zimmermann.
19497 SVG CleanUp of SVGPathData parsing
19498 https://bugs.webkit.org/show_bug.cgi?id=41410
19500 Added piOverTwo to MathExtras.
19502 * wtf/MathExtras.h:
19504 2010-07-19 Mike Moretti <mike.moretti@nokia.com>
19506 Reviewed by Laszlo Gombos.
19508 [Symbian] Build fix after r63404.
19510 Implement isValid() function for the Symbian executable allocator.
19512 * jit/ExecutableAllocatorSymbian.cpp:
19513 (JSC::ExecutableAllocator::isValid):
19515 2010-07-19 Chris Marrin <cmarrin@apple.com>
19517 Reviewed by Darin Adler.
19519 https://bugs.webkit.org/show_bug.cgi?id=42118
19520 Disable WebGL on Leopard for now.
19522 LayoutTests fail on some graphics hardware on Leopard because one of the features we use,
19523 GL_ARB_framebuffer_object, is not universally available in Leopard like it is in
19524 SnowLeopard. This will allow LayoutTests to pass on Leopard until we add logic to use a
19525 software OpenGL driver on machines without this support.
19527 * Configurations/FeatureDefines.xcconfig:
19529 2010-07-16 Darin Adler <darin@apple.com>
19531 Reviewed by Sam Weinig.
19533 Use OwnPtr for CodeBlock objects
19534 https://bugs.webkit.org/show_bug.cgi?id=42490
19536 * runtime/Executable.cpp:
19537 (JSC::EvalExecutable::EvalExecutable): Moved this here and made it non-inline.
19538 Eliminated the code that used to initialize the raw pointer since it's now
19540 (JSC::EvalExecutable::~EvalExecutable): Removed the explicit delete here.
19541 (JSC::ProgramExecutable::ProgramExecutable): Ditto.
19542 (JSC::ProgramExecutable::~ProgramExecutable): Ditto.
19543 (JSC::FunctionExecutable::FunctionExecutable): Ditto.
19544 (JSC::FunctionExecutable::~FunctionExecutable): Ditto.
19545 (JSC::EvalExecutable::compileInternal): Added use of adoptPtr and get.
19546 (JSC::ProgramExecutable::compileInternal): Ditto.
19547 (JSC::FunctionExecutable::compileForCallInternal): Ditto.
19548 (JSC::FunctionExecutable::compileForConstructInternal): Ditto.
19549 (JSC::FunctionExecutable::recompile): Use clear instead of delete followed
19550 by assignment of 0.
19552 * runtime/Executable.h: Moved constructors to the cpp file and changed
19553 raw pointers to OwnPtr.
19555 2010-07-19 Lucas De Marchi <lucas.demarchi@profusion.mobi>
19557 Reviewed by Kenneth Rohde Christiansen.
19559 [EFL] Fix build on 64-bit systems. According to
19560 JavaScriptCore/wtf/Platform.h, x86_64 uses fixed allocator, which
19561 needs jit/ExecutableAllocatorFixedVMPool.cpp to be included in build
19563 https://bugs.webkit.org/show_bug.cgi?id=42559
19565 * CMakeListsEfl.txt: add missing file for x86_64.
19567 2010-07-16 Leandro Pereira <leandro@profusion.mobi>
19569 [EFL] Unreviewed build system cleanup.
19571 Move ExecutableAllocator{FixedVMPool,Posix,Symbian,Win}.cpp from
19572 root CMakeLists.txt to the platform CMakeLists.txt.
19575 * CMakeListsEfl.txt: Add ExecutableAllocatorPosix.cpp.
19577 2010-07-16 Oliver Hunt <oliver@apple.com>
19579 Reviewed by Geoffrey Garen.
19581 ES5 allows use of reserved words as IdentifierName
19582 https://bugs.webkit.org/show_bug.cgi?id=42471
19584 Modify the lexer to allow us to avoid identifying reserved
19585 words in those contexts where they are valid identifiers, and
19586 we know it's safe. Additionally tag the reserved word tokens
19587 so we can easily identify them in those cases where we can't
19588 guarantee that we've skipped reserved word identification.
19590 * parser/JSParser.cpp:
19591 (JSC::JSParser::next):
19592 (JSC::JSParser::parseProperty):
19593 (JSC::JSParser::parseMemberExpression):
19594 * parser/JSParser.h:
19596 * parser/Lexer.cpp:
19601 2010-07-16 Anders Carlsson <andersca@apple.com>
19603 Reviewed by Sam Weinig.
19605 clang++ build fixes for JavaScriptCore and WebCore
19606 https://bugs.webkit.org/show_bug.cgi?id=42478
19608 * runtime/RegExpKey.h:
19610 Move the RegExpKey equals operator into the JSC namespace so it can be found by ADL.
19612 2010-07-16 Anders Carlsson <andersca@apple.com>
19614 Reviewed by David Levin.
19616 Really add WARN_UNUSED_RESULT to leakRef
19617 https://bugs.webkit.org/show_bug.cgi?id=42464
19619 * wtf/PassRefPtr.h:
19620 (WTF::PassRefPtr::):
19621 (WTF::NonNullPassRefPtr::):
19622 Put the WARN_UNUSED_RESULT attribute at the right place.
19625 (WTF::RetainPtr::releaseRef):
19626 Remove WARN_UNUSED_RESULT here for now, it leads to two warnings that need
19629 2010-07-15 Victor Wang <victorw@chromium.org>
19631 Reviewed by David Levin.
19633 [Chromium] Disable c4291 for chromium windows multi dll build.
19635 https://bugs.webkit.org/show_bug.cgi?id=42177
19637 * JavaScriptCore.gyp/JavaScriptCore.gyp:
19639 2010-07-15 Geoffrey Garen <ggaren@apple.com>
19641 Reviewed by Maciej Stachowiak.
19643 Crash entering mail.yahoo.com
19644 https://bugs.webkit.org/show_bug.cgi?id=42394
19646 * bytecompiler/BytecodeGenerator.cpp:
19647 (JSC::BytecodeGenerator::argumentNumberFor): Added a NULL check. If the
19648 identifier we're resolving is not a local variable, registerFor returns
19651 * bytecompiler/NodesCodegen.cpp:
19652 (JSC::FunctionBodyNode::emitBytecode): Unrelated to the crash, but I
19653 noticed this while working on it: No need to NULL-check returnNode,
19654 since an early return has already done so.
19656 2010-07-15 Martin Robinson <mrobinson@igalia.com>
19658 Reviewed by Oliver Hunt.
19660 [GTK] Simplify the distribution step
19661 https://bugs.webkit.org/show_bug.cgi?id=42414
19663 * GNUmakefile.am: Add extra dist files directly to EXTRA_DIST instead
19664 of adding them by proxy via javascriptcore_dist. Sort the EXTRA_DIST list.
19665 Refer to create_hash_table and create_regexp_tables directly, as is the
19666 behavior with other code generation scripts.
19668 2010-07-15 Oliver Hunt <oliver@apple.com>
19670 Reviewed by Geoff Garen.
19672 Fix dumping of op_put_by_id.
19674 * bytecode/CodeBlock.cpp:
19675 (JSC::CodeBlock::printPutByIdOp):
19677 2010-07-15 Zoltan Herczeg <zherczeg@webkit.org>
19679 Reviewed by Darin Adler.
19681 Refactoring some parts of the lexer
19682 https://bugs.webkit.org/show_bug.cgi?id=41845
19684 This patch is a precursor of refactoring the identifier
19685 parsing, which currently slows down the lexer, and not
19686 ready for landing. This patch contains those sources,
19687 which does not slow down the lexer (mainly style changes).
19689 SunSpider: no change (529.4ms to 528.7ms)
19690 --parse-only: no change (31.0ms to 31.2ms)
19692 * parser/Lexer.cpp:
19693 (JSC::isIdentStart): using typesOfASCIICharacters to determine
19694 whether the current character is in identifier start
19695 (JSC::isIdentPart): using typesOfASCIICharacters to determine
19696 whether the current character is in identifier part
19697 (JSC::Lexer::parseString): style fix
19698 (JSC::Lexer::lex): removing the else after the main which
19699 which reduces code duplication
19701 2010-07-15 Mark Rowe <mrowe@apple.com>
19703 Update the sorting in the Xcode project files.
19705 * JavaScriptCore.xcodeproj/project.pbxproj:
19707 2010-07-14 Oliver Hunt <oliver@apple.com>
19709 Reviewed by Gavin Barraclough.
19711 Make sure that mixed interpreter/jit builds don't try to use the jit if the allocator fails
19712 https://bugs.webkit.org/show_bug.cgi?id=42310
19714 Add some null checks to deal with the Fixed VM allocator failing
19715 to get the requested executable region, delay the creation of the
19716 JITStubs in JSGlobalData until after we know whether we're using
19719 * jit/ExecutableAllocator.h:
19720 (JSC::ExecutableAllocator::ExecutableAllocator):
19721 (JSC::ExecutableAllocator::poolForSize):
19722 * jit/ExecutableAllocatorFixedVMPool.cpp:
19723 (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
19724 (JSC::FixedVMPoolAllocator::alloc):
19725 (JSC::FixedVMPoolAllocator::free):
19726 (JSC::FixedVMPoolAllocator::isValid):
19727 (JSC::ExecutableAllocator::isValid):
19728 (JSC::ExecutablePool::systemAlloc):
19729 (JSC::ExecutablePool::systemRelease):
19730 * jit/ExecutableAllocatorPosix.cpp:
19731 (JSC::ExecutableAllocator::isValid):
19732 * jit/ExecutableAllocatorWin.cpp:
19733 (JSC::ExecutableAllocator::isValid):
19735 (JSC::JIT::linkCall):
19736 (JSC::JIT::linkConstruct):
19738 (JSC::JIT::compileCTIMachineTrampolines):
19739 (JSC::JIT::compileCTINativeCall):
19740 * jit/JITArithmetic.cpp:
19741 (JSC::JIT::emit_op_mod):
19742 * jit/JITArithmetic32_64.cpp:
19743 (JSC::JIT::emit_op_mod):
19745 (JSC::JIT::compileOpCallVarargs):
19746 (JSC::JIT::compileOpCall):
19747 (JSC::JIT::compileOpCallSlowCase):
19748 * jit/JITCall32_64.cpp:
19749 (JSC::JIT::compileOpCallVarargs):
19750 (JSC::JIT::compileOpCall):
19751 (JSC::JIT::compileOpCallSlowCase):
19752 * jit/JITOpcodes.cpp:
19753 (JSC::JIT::privateCompileCTINativeCall):
19754 * jit/JITStubs.cpp:
19755 (JSC::JITThunks::JITThunks):
19756 (JSC::JITThunks::tryCacheGetByID):
19757 (JSC::JITThunks::hostFunctionStub):
19758 * jit/ThunkGenerators.cpp:
19759 (JSC::charCodeAtThunkGenerator):
19760 (JSC::charAtThunkGenerator):
19761 (JSC::fromCharCodeThunkGenerator):
19762 (JSC::sqrtThunkGenerator):
19763 (JSC::powThunkGenerator):
19764 * runtime/Executable.h:
19765 (JSC::NativeExecutable::create):
19766 * runtime/JSGlobalData.cpp:
19767 (JSC::JSGlobalData::JSGlobalData):
19768 (JSC::JSGlobalData::getHostFunction):
19769 * runtime/JSGlobalData.h:
19770 (JSC::JSGlobalData::getCTIStub):
19771 * yarr/RegexJIT.cpp:
19772 (JSC::Yarr::jitCompileRegex):
19774 2010-07-14 Gavin Barraclough <barraclough@apple.com>
19776 Speculative Qt/Windows build fix.
19780 2010-07-14 Gavin Barraclough <barraclough@apple.com>
19782 Reviewed by Oliver Hunt.
19784 https://bugs.webkit.org/show_bug.cgi?id=42280
19785 JIT_STUB_ARGUMENT_VA_LIST is only slowing us down! Remove it!
19788 * jit/JITInlineMethods.h:
19789 (JSC::JIT::restoreArgumentReferenceForTrampoline):
19790 * jit/JITStubs.cpp:
19794 2010-07-14 Oliver Hunt <oliver@apple.com>
19798 Guard the CF path of interpreter vs. jit selection with PLATFORM(CF)
19800 This allows the code to work on windows as well. Also unifies the
19801 environment variable with the preference name.
19803 * runtime/JSGlobalData.cpp:
19804 (JSC::JSGlobalData::JSGlobalData):
19806 2010-07-14 Oliver Hunt <oliver@apple.com>
19808 Reviewed by Don Melton.
19810 Crash when trying to enable JIT and Interpreter in a single build.
19812 CFPreferences code added at the last minute failed to account for
19813 the preference not being present and then attempted to CFRelease
19816 * runtime/JSGlobalData.cpp:
19817 (JSC::JSGlobalData::JSGlobalData):
19819 2010-07-14 Zoltan Herczeg <zherczeg@webkit.org>
19821 Reviewed by Darin Adler.
19823 Change indentations in the lexer
19824 https://bugs.webkit.org/show_bug.cgi?id=41845
19826 This patch fixes an old, indentation error comes from kjs,
19827 as webkit has a different style rule for switches, and change
19828 the indentation of the main switch, which is a temporary
19829 style error. This change makes easier to see the behavioural
19830 changes in the follow-up patch.
19832 No behavioural changes.
19834 * parser/Lexer.cpp:
19835 (JSC::singleEscape):
19838 2010-07-13 Sheriff Bot <webkit.review.bot@gmail.com>
19840 Unreviewed, rolling out r63262.
19841 http://trac.webkit.org/changeset/63262
19842 https://bugs.webkit.org/show_bug.cgi?id=42229
19844 broke Windows compile (Requested by bweinstein on #webkit).
19846 * API/tests/testapi.c:
19847 (assertEqualsAsCharactersPtr):
19849 * testapi.pro: Removed.
19851 2010-07-13 Oliver Hunt <oliver@apple.com>
19853 Reviewed by Gavin Barraclough.
19855 ES5 requires BOMs to be treated as whitespace
19856 https://bugs.webkit.org/show_bug.cgi?id=42218
19858 Add BOM character to the Lexer's definition of whitespace,
19859 and remove the logic that dealt with stripping BOMs and
19860 caching the cleaned string.
19863 (JSC::Lexer::isWhiteSpace):
19864 * parser/SourceProvider.h:
19865 (JSC::UStringSourceProvider::create):
19866 (JSC::UStringSourceProvider::UStringSourceProvider):
19867 * wtf/text/StringImpl.h:
19869 2010-07-13 Andreas Kling <andreas.kling@nokia.com>
19871 Reviewed by Darin Adler.
19873 Avoid slow-path for put() in Array.splice()
19874 https://bugs.webkit.org/show_bug.cgi?id=41920
19876 Defer creation of the returned array until its final size is known
19877 to avoid growing it while adding elements.
19879 * runtime/JSArray.cpp:
19880 (JSC::JSArray::JSArray): Add two modes of creation, CreateInitialized (old)
19881 and CreateCompact (which should only be used when constructing arrays whose
19882 size and contents are known at the time of creation.)
19883 (JSC::JSArray::setLength): Skip first consistency check if in CreateCompact
19884 initialization mode. (Only applies to non-empty arrays.)
19885 (JSC::JSArray::checkConsistency): Build fix (JSValue::type() is gone)
19886 * runtime/JSArray.h:
19887 (JSC::JSArray::uncheckedSetIndex): Added for fast initialization of compact
19888 arrays. Does no bounds or other sanity checking.
19889 * runtime/ArrayPrototype.cpp:
19890 (JSC::arrayProtoFuncSplice): Optimized creation of the returned JSArray.
19891 * runtime/ArrayConstructor.cpp:
19892 (JSC::constructArrayWithSizeQuirk): Pass CreateInitialized to ctor.
19893 * runtime/JSGlobalObject.h:
19894 (JSC::constructEmptyArray): Pass CreateInitialized to ctor.
19895 * runtime/RegExpConstructor.cpp:
19896 (JSC::RegExpMatchesArray::RegExpMatchesArray): Pass CreateInitialized to ctor.
19898 2010-07-13 Gavin Barraclough <barraclough@apple.com>
19900 Reviewed by Oliver Hunt.
19902 Bug 42207 - Clean up interface to compile executables, always check for exceptions
19904 Presently interface to compile executable is inconsistent between eval/program and
19905 function code, and is error prone in allowing a caller to byte compile without JIT
19906 compiling an executable (we rely on all executables with codeblocks having JIT code).
19907 Unify on an interface where all compilation is performed by a single compile (with
19908 ForCall|ForConstruct variants) method, and make all clients check for errors.
19910 * interpreter/Interpreter.cpp:
19911 (JSC::Interpreter::unwindCallFrame):
19912 (JSC::Interpreter::execute):
19913 (JSC::Interpreter::executeCall):
19914 (JSC::Interpreter::executeConstruct):
19915 (JSC::Interpreter::prepareForRepeatCall):
19916 (JSC::Interpreter::privateExecute):
19917 * jit/JITStubs.cpp:
19918 (JSC::DEFINE_STUB_FUNCTION):
19920 (JSC::Parser::isFunctionBodyNode):
19921 (JSC::Parser::parse):
19922 * runtime/ArrayPrototype.cpp:
19923 (JSC::isNumericCompareFunction):
19924 * runtime/ExceptionHelpers.cpp:
19925 (JSC::createStackOverflowError):
19926 * runtime/ExceptionHelpers.h:
19927 * runtime/Executable.cpp:
19928 (JSC::EvalExecutable::compileInternal):
19929 (JSC::ProgramExecutable::checkSyntax):
19930 (JSC::ProgramExecutable::compileInternal):
19931 (JSC::FunctionExecutable::compileForCallInternal):
19932 (JSC::FunctionExecutable::compileForConstructInternal):
19933 (JSC::FunctionExecutable::reparseExceptionInfo):
19934 (JSC::EvalExecutable::reparseExceptionInfo):
19935 (JSC::FunctionExecutable::fromGlobalCode):
19936 * runtime/Executable.h:
19937 (JSC::EvalExecutable::compile):
19938 (JSC::EvalExecutable::generatedBytecode):
19939 (JSC::EvalExecutable::generatedJITCode):
19940 (JSC::ProgramExecutable::compile):
19941 (JSC::ProgramExecutable::generatedBytecode):
19942 (JSC::ProgramExecutable::generatedJITCode):
19943 (JSC::FunctionExecutable::generatedBytecode):
19944 (JSC::FunctionExecutable::compileForCall):
19945 (JSC::FunctionExecutable::compileForConstruct):
19946 (JSC::FunctionExecutable::generatedJITCodeForConstructWithArityCheck):
19947 * runtime/FunctionConstructor.cpp:
19948 (JSC::constructFunction):
19949 * runtime/JSActivation.cpp:
19950 (JSC::JSActivation::argumentsGetter):
19951 * runtime/JSGlobalData.h:
19952 (JSC::JSGlobalData::canUseJIT):
19954 2010-07-13 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org>
19956 Reviewed by Oliver Hunt.
19958 testapi.c depends on the Core Foundation.
19959 https://bugs.webkit.org/show_bug.cgi?id=40058
19961 Separate CoreFoundation specific tests in JSC's testapi.c. Enabling it
19962 to compile in Qt environments.
19964 All tests should work except for the JSStringCreateWithCharacters() function,
19965 because its tests depend on Core Foundation specific functions.
19967 * API/tests/testapi.c:
19968 (testJSStringRefCF): moved CoreFoundation specific tests to this function.
19969 (main): The moves plus some minor tweaks.
19970 * testapi.pro: Added.
19972 2010-07-13 Gavin Barraclough <barraclough@apple.com>
19974 Reviewed by Oliver Hunt.
19976 Bug 42182 - Change how numeric compare functions are detected
19978 There are three problems with the current mechanism:
19979 * It requires that a function executable be bytecode compiled without
19980 being JIT generated (in order to copy the bytecode from the numeric
19981 compare function). This is a problem since we have an invariant when
19982 running with the JIT that functions are never bytecode compiled without
19983 also being JIT generated (after checking the codeblock we assume the
19984 function has JIT code). To help maintain this invariant
19985 * This implementation will prevent us from experimenting with alternate
19986 compilation paths which do not compile via bytecode.
19987 * It doesn't work. Functions passing more than two arguments will match
19988 if they are comparing their last two arguments, not the first two.
19989 Generally the mapping back from bytecode to semantics may be more
19990 complex then initially expected.
19992 * bytecompiler/BytecodeGenerator.cpp:
19993 (JSC::BytecodeGenerator::generate):
19994 (JSC::BytecodeGenerator::setIsNumericCompareFunction):
19995 (JSC::BytecodeGenerator::argumentNumberFor):
19996 * bytecompiler/BytecodeGenerator.h:
19997 * bytecompiler/NodesCodegen.cpp:
19998 (JSC::BlockNode::singleStatement):
19999 (JSC::FunctionBodyNode::emitBytecode):
20001 (JSC::ExpressionNode::isSubtract):
20002 (JSC::BinaryOpNode::lhs):
20003 (JSC::BinaryOpNode::rhs):
20004 (JSC::SubNode::isSubtract):
20005 (JSC::ReturnNode::value):
20006 * runtime/JSGlobalData.cpp:
20007 (JSC::JSGlobalData::JSGlobalData):
20008 * runtime/JSGlobalData.h:
20010 2010-07-12 Oliver Hunt <oliver@apple.com>
20012 Reviewed by Gavin Barraclough.
20014 REGRESSION: Crash at JSC::JIT::privateCompile(JSC::MacroAssemblerCodePtr*)
20015 https://bugs.webkit.org/show_bug.cgi?id=41763
20017 There are two parts to this patch, the first is to fix the actual
20018 problem. When calling copyStringWithoutBOMs on a string we know
20019 to contain BOMs we return a value indicating that there are no
20022 The second part of this fix is simply to harden the path that
20023 led to a crash when parsing failed.
20025 * jit/JITOpcodes.cpp:
20026 (JSC::JIT::privateCompileCTIMachineTrampolines):
20027 * jit/JITOpcodes32_64.cpp:
20028 (JSC::JIT::privateCompileCTIMachineTrampolines):
20029 * jit/JITStubs.cpp:
20030 (JSC::DEFINE_STUB_FUNCTION):
20031 Harden compilation stubs against parser failure.
20032 * parser/Lexer.cpp:
20033 (JSC::Lexer::sourceCode):
20034 Add assertions to ensure that subranges into a source provider
20035 are always actually braces. Hopefully this should catch similar
20036 failures in future. These assertions fire on existing tests
20038 * runtime/Executable.h:
20039 (JSC::FunctionExecutable::tryJitCodeForCall):
20040 (JSC::FunctionExecutable::tryJitCodeForConstruct):
20041 * wtf/text/StringImpl.h:
20042 (WebCore::StringImpl::copyStringWithoutBOMs):
20043 Make copyStringWithBOMs do the right thing.
20045 2010-07-13 Gabor Loki <loki@webkit.org>
20047 Reviewed by Gavin Barraclough.
20049 Fix the constant encoding in data transfer instructions on ARM
20050 https://bugs.webkit.org/show_bug.cgi?id=42166
20052 The getImm function is designed to produce modified immediate constant
20053 for data processing instructions. It should not be used to encode
20054 any constant for data transfer. In the current situation there is no
20055 way to use any immediate constant for data transfer. So, the moveImm
20056 function is the desired method to pass the offset value to the data
20057 transfer instructions.
20059 Reported by Jacob Bramley.
20061 * assembler/ARMAssembler.cpp:
20062 (JSC::ARMAssembler::dataTransfer32):
20063 * assembler/MacroAssemblerARM.h:
20064 (JSC::MacroAssemblerARM::call32):
20066 2010-07-09 Darin Adler <darin@apple.com>
20068 Reviewed by Geoffrey Garen.
20070 String to number coercion is not spec compliant
20071 https://bugs.webkit.org/show_bug.cgi?id=31349
20073 ToNumber should ignore NBSP (\u00a0)
20074 https://bugs.webkit.org/show_bug.cgi?id=25490
20076 * runtime/JSGlobalObjectFunctions.cpp:
20077 (JSC::parseIntOverflow): Added a version that works on UChar.
20078 * runtime/JSGlobalObjectFunctions.h: Ditto.
20080 * runtime/UString.cpp:
20081 (JSC::isInfinity): Added helper functions.
20082 (JSC::UString::toDouble): Use isStrWhiteSpace instead of
20083 isSASCIISpace to define what we should skip. Got rid of the
20084 code that used CString and UTF8String, instead processing the
20085 UChar of the string directly, except for when we call strtod.
20086 For strtod, use our own home-grown conversion function that
20087 does not try to do any UTF-16 processing. Tidied up the logic
20090 2010-07-12 Martin Robinson <mrobinson@igalia.com>
20092 Reviewed by Xan Lopez.
20094 [GTK] make dist is broken because of missing headers and other miscellaneous reasons
20095 https://bugs.webkit.org/show_bug.cgi?id=42107
20097 * GNUmakefile.am: Add missing header to the sources list.
20099 2010-07-12 Adam Roben <aroben@apple.com>
20101 Stop generating stripped symbols for Release builds
20103 It turns out we can strip the symbols after-the-fact using PDBCopy.
20105 Fixes <http://webkit.org/b/42085>.
20107 Reviewed by Steve Falkenburg.
20109 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
20110 Removed the pre-link event, which just created the public\sym
20113 2010-07-12 Anders Carlsson <andersca@apple.com>
20115 Reviewed by Dan Bernstein.
20117 Add WARN_UNUSED_RETURN to the smart pointer "leak" member functions
20118 https://bugs.webkit.org/show_bug.cgi?id=42086
20121 * wtf/PassOwnPtr.h:
20122 * wtf/PassRefPtr.h:
20123 (WTF::PassRefPtr::releaseRef):
20124 (WTF::NonNullPassRefPtr::leakRef):
20125 (WTF::NonNullPassRefPtr::releaseRef):
20127 (WTF::RetainPtr::releaseRef):
20129 2010-07-10 Oliver Hunt <oliver@apple.com>
20131 Reviewed by Maciej Stachowiak.
20133 HAVE_COMPUTED_GOTO is dependent on the interpreter being enabled
20134 https://bugs.webkit.org/show_bug.cgi?id=42039
20136 Separate the existence of computed goto support in the compiler
20137 from whether or not we are using the interpreter. All the current
20138 HAVE(COMPUTED_GOTO) guards are for the interpreter, but I'd like
20139 the option of using it elsewhere. The interpreter now uses
20140 ENABLE(COMPUTED_GOTO_INTERPRETER)
20142 * bytecode/Instruction.h:
20143 (JSC::Instruction::Instruction):
20144 * bytecode/Opcode.h:
20145 * interpreter/Interpreter.cpp:
20146 (JSC::Interpreter::Interpreter):
20147 (JSC::Interpreter::isOpcode):
20148 (JSC::Interpreter::privateExecute):
20149 * interpreter/Interpreter.h:
20150 (JSC::Interpreter::getOpcode):
20151 (JSC::Interpreter::getOpcodeID):
20154 2010-07-10 Oliver Hunt <oliver@apple.com>
20156 Reviewed by Gavin Barraclough.
20158 Remove switches from inner expression loops in the parser
20159 https://bugs.webkit.org/show_bug.cgi?id=42035
20161 Use bitmasks and flags on the token types to identify unary and
20162 binary operators, rather than switching on the token type to
20165 * parser/JSParser.cpp:
20167 (JSC::JSParser::isBinaryOperator):
20168 * parser/JSParser.h:
20171 2010-07-09 Leon Clarke <leonclarke@google.com>
20173 Reviewed by Adam Barth.
20175 add support for link prefetching
20176 https://bugs.webkit.org/show_bug.cgi?id=3652
20178 * Configurations/FeatureDefines.xcconfig:
20180 2010-07-09 Oliver Hunt <oliver@apple.com>
20182 Reviewed by Darin Adler.
20184 Tidy up lexer token ids
20185 https://bugs.webkit.org/show_bug.cgi?id=42014
20187 Stop using character literals to identify single character tokens
20188 and instead use symbolic names for all tokens.
20190 * parser/ASTBuilder.h:
20191 (JSC::ASTBuilder::makeBinaryNode):
20192 * parser/JSParser.cpp:
20193 (JSC::JSParser::consume):
20194 (JSC::JSParser::match):
20195 (JSC::JSParser::autoSemiColon):
20196 (JSC::JSParser::JSParser):
20197 (JSC::JSParser::parseProgram):
20198 (JSC::JSParser::allowAutomaticSemicolon):
20199 (JSC::JSParser::parseDoWhileStatement):
20200 (JSC::JSParser::parseWhileStatement):
20201 (JSC::JSParser::parseVarDeclarationList):
20202 (JSC::JSParser::parseConstDeclarationList):
20203 (JSC::JSParser::parseForStatement):
20204 (JSC::JSParser::parseReturnStatement):
20205 (JSC::JSParser::parseWithStatement):
20206 (JSC::JSParser::parseSwitchStatement):
20207 (JSC::JSParser::parseSwitchClauses):
20208 (JSC::JSParser::parseSwitchDefaultClause):
20209 (JSC::JSParser::parseTryStatement):
20210 (JSC::JSParser::parseDebuggerStatement):
20211 (JSC::JSParser::parseStatement):
20212 (JSC::JSParser::parseFormalParameters):
20213 (JSC::JSParser::parseFunctionInfo):
20214 (JSC::JSParser::parseExpressionOrLabelStatement):
20215 (JSC::JSParser::parseIfStatement):
20216 (JSC::JSParser::parseExpression):
20217 (JSC::JSParser::parseAssignmentExpression):
20218 (JSC::JSParser::parseConditionalExpression):
20220 (JSC::JSParser::isBinaryOperator):
20221 (JSC::JSParser::parseBinaryExpression):
20222 (JSC::JSParser::parseProperty):
20223 (JSC::JSParser::parseObjectLiteral):
20224 (JSC::JSParser::parseStrictObjectLiteral):
20225 (JSC::JSParser::parseArrayLiteral):
20226 (JSC::JSParser::parsePrimaryExpression):
20227 (JSC::JSParser::parseArguments):
20228 (JSC::JSParser::parseMemberExpression):
20229 (JSC::JSParser::parseUnaryExpression):
20230 * parser/JSParser.h:
20232 * parser/Lexer.cpp:
20237 2010-07-09 Gavin Barraclough <barraclough@apple.com>
20239 Reviewed by Oliver Hunt.
20241 Bug 42015 - Enable JSValue32_64 on ARMv7
20243 * Configurations/JavaScriptCore.xcconfig:
20245 * jit/JITStubs.cpp:
20248 2010-07-09 Kenneth Russell <kbr@google.com>
20250 Reviewed by Dimitri Glazkov.
20252 Assertion failure in String::utf8() for certain invalid UTF16 inputs
20253 https://bugs.webkit.org/show_bug.cgi?id=41983
20255 * wtf/text/WTFString.cpp:
20256 (WebCore::String::utf8):
20257 - Fixed assertion when sourceExhausted is returned from convertUTF16ToUTF8.
20259 2010-07-09 Oliver Hunt <oliver@apple.com>
20261 Reviewed by Geoffrey Garen.
20263 Remove a couple of excess writes from the lexer
20264 https://bugs.webkit.org/show_bug.cgi?id=41981
20266 Remove a couple of fields from JSTokenInfo, and rename the remaining ones
20267 to something more accurate
20269 * parser/JSParser.cpp:
20270 (JSC::JSParser::next):
20271 (JSC::JSParser::tokenStart):
20272 (JSC::JSParser::tokenLine):
20273 (JSC::JSParser::tokenEnd):
20274 * parser/JSParser.h:
20275 (JSC::JSTokenInfo::JSTokenInfo):
20276 * parser/Lexer.cpp:
20279 2010-07-08 Oliver Hunt <oliver@apple.com>
20281 Reviewed by Sam Weinig.
20283 Property declarations in an object literal should not consider the prototype chain when being added to the new object
20284 https://bugs.webkit.org/show_bug.cgi?id=41929
20286 To fix this all we need to do is ensure that all new properties are
20287 added with putDirect rather than a fully generic call to put. This
20288 is safe as an object literal is by definition going to produce a
20289 completely normal object.
20291 Rather than duplicating all the put_by_id logic we add an additional
20292 flag to op_put_by_id to indicate it should be using putDirect. In
20293 the interpreter this adds a runtime branch, but in the jit this is
20294 essentially free as the branch is taken at compile time. This does
20295 actually improve object literal creation time even in the interpreter
20296 as we no longer need to walk the prototype chain to verify that the
20297 cached put is safe.
20299 We still emit normal put_by_id code when emitting __proto__ as we want
20300 to get the correct handling for changing the prototype.
20302 Sunspider claims this is a 0.7% speedup which is conceivably real due
20303 to the performance improvement in object literals, but I suspect its
20304 really just the result of code motion.
20306 * bytecode/Opcode.h:
20307 * bytecompiler/BytecodeGenerator.cpp:
20308 (JSC::BytecodeGenerator::emitPutById):
20309 (JSC::BytecodeGenerator::emitDirectPutById):
20310 * bytecompiler/BytecodeGenerator.h:
20311 * bytecompiler/NodesCodegen.cpp:
20312 (JSC::PropertyListNode::emitBytecode):
20313 * interpreter/Interpreter.cpp:
20314 (JSC::Interpreter::privateExecute):
20316 (JSC::JIT::compilePutByIdTransition):
20317 * jit/JITPropertyAccess.cpp:
20318 (JSC::JIT::emit_op_put_by_id):
20319 (JSC::JIT::emitSlow_op_put_by_id):
20320 (JSC::JIT::privateCompilePutByIdTransition):
20321 (JSC::JIT::patchPutByIdReplace):
20322 * jit/JITPropertyAccess32_64.cpp:
20323 (JSC::JIT::emitSlow_op_put_by_id):
20324 (JSC::JIT::privateCompilePutByIdTransition):
20325 (JSC::JIT::patchPutByIdReplace):
20326 * jit/JITStubs.cpp:
20327 (JSC::JITThunks::tryCachePutByID):
20328 (JSC::DEFINE_STUB_FUNCTION):
20331 * runtime/JSGlobalData.cpp:
20332 (JSC::JSGlobalData::JSGlobalData):
20333 * runtime/JSObject.h:
20334 (JSC::JSObject::putDirect):
20335 (JSC::JSValue::putDirect):
20336 * runtime/JSValue.h:
20338 2010-07-08 Gavin Barraclough <barraclough@apple.com>
20340 Reviewed by Sam Weinig.
20342 String.prototype methods should CheckObjectCoercible (test this is not null or undefined).
20344 * runtime/StringPrototype.cpp:
20345 (JSC::stringProtoFuncCharAt):
20346 (JSC::stringProtoFuncCharCodeAt):
20347 (JSC::stringProtoFuncConcat):
20348 (JSC::stringProtoFuncIndexOf):
20349 (JSC::stringProtoFuncLastIndexOf):
20350 (JSC::stringProtoFuncMatch):
20351 (JSC::stringProtoFuncSearch):
20352 (JSC::stringProtoFuncSlice):
20353 (JSC::stringProtoFuncSplit):
20354 (JSC::stringProtoFuncSubstr):
20355 (JSC::stringProtoFuncSubstring):
20356 (JSC::stringProtoFuncToLowerCase):
20357 (JSC::stringProtoFuncToUpperCase):
20358 (JSC::stringProtoFuncLocaleCompare):
20361 2010-07-08 Gavin Barraclough <barraclough@apple.com>
20363 Reviewed by Sam Weinig.
20365 Date.prototype.toJSON takes one argument, report this correctly.
20367 * runtime/DatePrototype.cpp:
20369 2010-07-08 Gavin Barraclough <barraclough@apple.com>
20371 Reviewed by Sam Weinig.
20373 RegExp's prototype should be an object of type RegExp.
20375 * runtime/RegExpPrototype.cpp:
20376 (JSC::RegExpPrototype::RegExpPrototype):
20377 * runtime/RegExpPrototype.h:
20379 2010-07-08 Oliver Hunt <oliver@apple.com>
20381 Reviewed by Gavin Barraclough.
20383 JavaScript parser violates ECMA automatic semicolon insertion rule
20384 https://bugs.webkit.org/show_bug.cgi?id=41844
20386 Remove (very) old and bogus logic that automatically inserted a semicolon
20387 at the end of a script's source.
20389 * parser/Lexer.cpp:
20392 2010-07-08 Oliver Hunt <oliver@apple.com>
20394 Reviewed by Anders Carlson.
20398 Remove some of the old yacc/lex-isms still present in the lexer
20400 * parser/JSParser.h:
20402 * parser/Lexer.cpp:
20403 (JSC::Lexer::parseString):
20407 2010-07-08 Oliver Hunt <oliver@apple.com>
20409 Reviewed by Gavin Barraclough.
20411 Make object-literal parsing conformant with the spec.
20412 https://bugs.webkit.org/show_bug.cgi?id=41892
20414 Bring our parsing of object literals into conformance with the ES5 spec.
20415 Basically disallow conflicting accessor vs. normal property definitions
20416 The bulk of this patch is just fiddling to maintain performance.
20418 * parser/ASTBuilder.h:
20419 (JSC::ASTBuilder::createGetterOrSetterProperty):
20420 (JSC::ASTBuilder::createProperty):
20421 (JSC::ASTBuilder::getName):
20422 (JSC::ASTBuilder::getType):
20423 * parser/JSParser.cpp:
20425 (JSC::JSParser::JSParser):
20426 (JSC::JSParser::parseProperty):
20427 (JSC::JSParser::parseObjectLiteral):
20428 (JSC::JSParser::parseStrictObjectLiteral):
20429 * parser/JSParser.h:
20430 * parser/Lexer.cpp:
20431 (JSC::Lexer::clear):
20433 (JSC::Lexer::currentOffset):
20434 (JSC::Lexer::setOffset):
20435 Add logic to allow us to roll the lexer back in the input stream.
20437 (JSC::PropertyNode::):
20438 (JSC::PropertyNode::type):
20439 * parser/Parser.cpp:
20440 (JSC::Parser::parse):
20441 * parser/SourceProvider.h:
20442 (JSC::SourceProvider::SourceProvider):
20443 (JSC::SourceProvider::isValid):
20444 (JSC::SourceProvider::setValid):
20445 SourceProvider now records whether the input text
20446 has already been validated.
20447 * parser/SyntaxChecker.h:
20448 (JSC::SyntaxChecker::SyntaxChecker):
20449 (JSC::SyntaxChecker::Property::Property):
20450 (JSC::SyntaxChecker::Property::operator!):
20451 (JSC::SyntaxChecker::createProperty):
20452 (JSC::SyntaxChecker::createPropertyList):
20453 (JSC::SyntaxChecker::createGetterOrSetterProperty):
20454 The SyntaxChecker mode now needs to maintain a bit more information
20455 to ensure that we can validate object literals correctly.
20457 2010-07-08 Darin Adler <darin@apple.com>
20459 * runtime/JSGlobalData.cpp:
20460 (JSC::JSGlobalData::sharedInstance): Fix typo.
20462 2010-07-08 Darin Adler <darin@apple.com>
20464 Reviewed by Oliver Hunt.
20466 Fix assertion seen on the Leopard buildbot.
20467 The single shared instance of JSGlobalData was not being
20468 adopted after creation.
20470 * runtime/JSGlobalData.cpp:
20471 (JSC::JSGlobalData::sharedInstance): Do adoptRef and then leakRef.
20473 2010-07-08 Gavin Barraclough <barraclough@apple.com>
20475 Reviewed by Sam Weinig.
20477 BOMs are whitespace.
20479 * runtime/JSGlobalObjectFunctions.cpp:
20480 (JSC::isStrWhiteSpace):
20482 2010-07-08 Martin Robinson <mrobinson@igalia.com>
20486 Try fix the GTK+ build by touching this file.
20488 * jit/ExecutableAllocatorFixedVMPool.cpp:
20490 2010-07-08 Gavin Barraclough <barraclough@apple.com>
20492 GTK build fix take two.
20496 2010-07-08 Gavin Barraclough <barraclough@apple.com>
20502 2010-07-08 Gavin Barraclough <barraclough@apple.com>
20504 Reviewed by Sam Weinig.
20506 https://bugs.webkit.org/show_bug.cgi?id=41641
20508 Update compile flags to allow use of ExecutableAllocatorFixedVMPool on platforms
20509 other than x86-64 (this may be useful on 32-bit platforms, too).
20511 Simplify ifdefs by dividing into thwo broad allocation strategies
20512 (ENABLE_EXECUTABLE_ALLOCATOR_FIXED & ENABLE_EXECUTABLE_ALLOCATOR_DEMAND).
20514 Rename constant used in the code to have names descriptive of their purpose,
20515 rather than their specific value on a given platform.
20517 * jit/ExecutableAllocator.cpp:
20518 (JSC::ExecutableAllocator::reprotectRegion):
20519 (JSC::ExecutableAllocator::cacheFlush):
20520 * jit/ExecutableAllocatorFixedVMPool.cpp:
20521 (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
20522 (JSC::FixedVMPoolAllocator::free):
20523 (JSC::ExecutablePool::systemAlloc):
20524 * jit/ExecutableAllocatorPosix.cpp:
20525 * jit/ExecutableAllocatorSymbian.cpp:
20526 * jit/ExecutableAllocatorWin.cpp:
20529 2010-07-08 Xan Lopez <xlopez@igalia.com>
20531 Reviewed by Gustavo Noronha.
20533 Silence a few noisy build rules.
20537 2010-07-08 Sheriff Bot <webkit.review.bot@gmail.com>
20539 Unreviewed, rolling out r62765.
20540 http://trac.webkit.org/changeset/62765
20541 https://bugs.webkit.org/show_bug.cgi?id=41840
20543 All jscore and layout tests crash on Qt bot (Requested by Ossy
20546 * wtf/FastMalloc.cpp:
20547 (WTF::TCMalloc_PageHeap::initializeScavenger):
20548 (WTF::TCMalloc_PageHeap::signalScavenger):
20549 (WTF::TCMalloc_PageHeap::scavengerThread):
20551 2010-07-08 Andreas Kling <andreas.kling@nokia.com>
20553 Reviewed by Oliver Hunt.
20555 Interpreter: Crash in op_load_varargs on 64-bit
20556 https://bugs.webkit.org/show_bug.cgi?id=41795
20558 Added missing cast of argCount to int32_t in op_load_varargs.
20560 * interpreter/Interpreter.cpp:
20561 (JSC::Interpreter::privateExecute):
20563 2010-07-08 Patrick Gansterer <paroga@paroga.com>
20565 Reviewed by Geoffrey Garen.
20567 Make FastMalloc more portable.
20568 https://bugs.webkit.org/show_bug.cgi?id=41790
20570 Use WTF::Mutex instead of pthread_mutex_t and
20571 replace pthread_cond_t with WTF::ThreadCondition.
20573 * wtf/FastMalloc.cpp:
20574 (WTF::TCMalloc_PageHeap::initializeScavenger):
20575 (WTF::TCMalloc_PageHeap::signalScavenger):
20576 (WTF::TCMalloc_PageHeap::scavengerThread):
20578 2010-07-08 Patrick Gansterer <paroga@paroga.com>
20580 Reviewed by Darin Adler.
20582 Remove needless #include <fcntl.h> from TCSystemAlloc.cpp.
20583 https://bugs.webkit.org/show_bug.cgi?id=41777
20585 * wtf/TCSystemAlloc.cpp:
20587 2010-07-07 Darin Adler <darin@apple.com>
20589 Fixed build in configurations like PowerPC.
20591 * runtime/RegExpConstructor.cpp: Added include of PassOwnPtr.h.
20592 * runtime/RegExpObject.cpp: Ditto.
20593 * wtf/SizeLimits.cpp: Changed compile time assertion to work
20594 even on platforms where two bool members do not end up taking
20595 the same size as one int member!
20597 2010-07-07 Oliver Hunt <oliver@apple.com>
20599 Reviewed by Geoffrey Garen.
20601 Lazy mode of parser allows invalid syntax in object literals.
20602 https://bugs.webkit.org/show_bug.cgi?id=41809
20604 Make the parser itself validate getter and setter syntax rather
20605 than offloading it to the AST builder.
20607 * parser/ASTBuilder.h:
20608 (JSC::ASTBuilder::createGetterOrSetterProperty):
20609 * parser/JSParser.cpp:
20610 (JSC::JSParser::parseProperty):
20612 2010-07-07 Dumitru Daniliuc <dumi@chromium.org>
20614 Reviewed by Adam Roben.
20617 https://bugs.webkit.org/show_bug.cgi?id=41804
20619 * runtime/Collector.cpp:
20620 (JSC::Heap::freeBlocks):
20622 2010-07-07 Adam Barth <abarth@webkit.org>
20624 Reviewed by Sam Weinig.
20626 Add reverseFind to Vector and deploy in HTML5 parser
20627 https://bugs.webkit.org/show_bug.cgi?id=41778
20629 This method seems generally useful. I'm slightly surprised we don't
20633 (WTF::::reverseFind):
20635 2010-07-07 Darin Adler <darin@apple.com>
20637 Reviewed by Adam Barth.
20639 Turn on adoptRef assertion for RefCounted
20640 https://bugs.webkit.org/show_bug.cgi?id=41547
20642 * wtf/CrossThreadRefCounted.h: Fixed include style. Includes of other
20643 WTF headers should use "" includes; consistent in most WTF headers.
20644 Added a call to relaxAdoptionRequirement.
20646 * wtf/RefCounted.h: Fixed include style. Removed LOOSE_REF_COUNTED.
20647 Added relaxAdoptionRequirement.
20649 2010-07-07 Anders Carlsson <andersca@apple.com>
20651 Try to fix the Windows build.
20653 * runtime/Collector.cpp:
20654 (JSC::Heap::freeBlocks):
20656 2010-07-07 Darin Adler <darin@apple.com>
20658 Reviewed by Adam Barth.
20661 https://bugs.webkit.org/show_bug.cgi?id=41727
20663 * API/JSCallbackObject.h:
20664 (JSC::JSCallbackObjectData::setPrivateProperty): Use adoptPtr.
20665 * API/JSCallbackObjectFunctions.h:
20666 (JSC::JSCallbackObject::JSCallbackObject): Ditto.
20667 * bytecode/CodeBlock.cpp:
20668 (JSC::CodeBlock::CodeBlock): Ditto.
20669 * bytecode/CodeBlock.h:
20670 (JSC::CodeBlock::createRareDataIfNecessary): Ditto.
20671 * parser/Nodes.cpp:
20672 (JSC::ScopeNode::ScopeNode): Ditto.
20673 * parser/ParserArena.cpp:
20674 (JSC::ParserArena::ParserArena): Ditto.
20675 * runtime/Arguments.h:
20676 (JSC::Arguments::Arguments): Ditto.
20677 * runtime/Executable.cpp:
20678 (JSC::EvalExecutable::compile): Ditto.
20679 (JSC::ProgramExecutable::compile): Ditto.
20680 (JSC::FunctionExecutable::compileForCall): Ditto.
20681 (JSC::FunctionExecutable::compileForConstruct): Ditto.
20682 (JSC::FunctionExecutable::reparseExceptionInfo): Ditto.
20683 (JSC::EvalExecutable::reparseExceptionInfo): Ditto.
20684 * runtime/JSArray.cpp:
20685 (JSC::JSArray::sort): Ditto.
20686 * runtime/RegExpConstructor.cpp:
20687 (JSC::RegExpConstructor::RegExpConstructor): Ditto.
20688 * runtime/RegExpObject.cpp:
20689 (JSC::RegExpObject::RegExpObject): Ditto.
20690 * runtime/SmallStrings.cpp:
20691 (JSC::SmallStrings::createSingleCharacterString): Ditto.
20692 (JSC::SmallStrings::singleCharacterStringRep): Ditto.
20694 * wtf/unicode/icu/CollatorICU.cpp:
20695 (WTF::Collator::userDefault): Use adoptPtr.
20696 * yarr/RegexInterpreter.cpp:
20697 (JSC::Yarr::ByteCompiler::ByteCompiler): Ditto.
20698 (JSC::Yarr::ByteCompiler::compile): Ditto.
20699 (JSC::Yarr::ByteCompiler::regexBegin): Ditto.
20700 (JSC::Yarr::byteCompileRegex): Ditto.
20701 * yarr/RegexInterpreter.h:
20702 (JSC::Yarr::BytecodePattern::BytecodePattern): Ditto.
20704 2010-07-07 Darin Adler <darin@apple.com>
20706 Reviewed by Adam Barth.
20708 Make clear set the pointer to 0 before deletion
20709 https://bugs.webkit.org/show_bug.cgi?id=41727
20711 * wtf/OwnArrayPtr.h: Changed code so we always set the pointer to its new
20712 value before deleting the old one, including in the set function and the
20713 clear function. This required changing safeDelete.
20714 * wtf/OwnPtr.h: Ditto. Also removed some extra null checks.
20715 * wtf/PassOwnPtr.h: Ditto.
20717 * wtf/PassRefPtr.h: Changed code so we always set the pointer to its new
20718 value before deref'ing the old one in the clear function. Also added a
20719 leakRef function for NonNullPassRefPtr.
20720 * wtf/RefPtr.h: Ditto.
20722 * wtf/gobject/GOwnPtr.h: More of the same.
20723 * wtf/gobject/GRefPtr.h: Ditto.
20725 2010-07-07 Zoltan Herczeg <zherczeg@webkit.org>
20727 Reviewed by Oliver Hunt.
20729 Refactored string parsing inside the lexer
20730 https://bugs.webkit.org/show_bug.cgi?id=41606
20732 Does not use goto. Although the last sunspider
20733 parse-only tests yields 1.044x speedup, I think the
20734 patch can have a slight improvement at most.
20736 * parser/Lexer.cpp:
20737 (JSC::singleEscape):
20738 (JSC::Lexer::parseString):
20742 2010-07-06 Oliver Hunt <oliver@apple.com>
20744 Reviewed by Maciej Stachowiak.
20746 Make it possible to have both the JIT and Interpreter available in a single build
20747 https://bugs.webkit.org/show_bug.cgi?id=41722
20749 Separate the concept of !ENABLE(JIT) and ENABLE(INTERPRETER) and make it possible
20750 to have both JIT and INTERPRETER enabled at the same time. This doesn't add
20751 support for mix mode execution, but it does allow a single build to contain all
20752 the code needed to use either the interpreter or the jit.
20754 If both ENABLE(INTERPRETER) and ENABLE(JIT) are true then setting the environment
20755 variable JSC_FORCE_INTERPRETER will force JSC to use the interpreter.
20757 This patch basically consists of replacing !ENABLE(JIT) with ENABLE(INTERPRETER),
20758 or converting #if ENABLE(JIT) ... #else ... into #if ENABLE(JIT) ... #endif
20759 #if ENABLE(INTERPRETER), etc. There are also a few functions that need to be
20760 renamed to resolve return type ambiguity.
20762 * bytecode/CodeBlock.cpp:
20763 (JSC::CodeBlock::~CodeBlock):
20764 (JSC::CodeBlock::shrinkToFit):
20765 * bytecode/CodeBlock.h:
20766 * interpreter/CallFrame.h:
20767 (JSC::ExecState::returnVPC):
20768 * interpreter/Interpreter.cpp:
20769 (JSC::Interpreter::unwindCallFrame):
20770 (JSC::Interpreter::throwException):
20771 (JSC::Interpreter::execute):
20772 (JSC::Interpreter::executeCall):
20773 (JSC::Interpreter::executeConstruct):
20774 (JSC::Interpreter::prepareForRepeatCall):
20775 (JSC::Interpreter::privateExecute):
20776 (JSC::Interpreter::retrieveLastCaller):
20777 * interpreter/Interpreter.h:
20778 * runtime/ArrayPrototype.cpp:
20779 (JSC::isNumericCompareFunction):
20780 * runtime/Executable.cpp:
20781 (JSC::EvalExecutable::generateJITCode):
20782 (JSC::ProgramExecutable::generateJITCode):
20783 (JSC::FunctionExecutable::generateJITCodeForCall):
20784 (JSC::FunctionExecutable::generateJITCodeForConstruct):
20785 (JSC::FunctionExecutable::reparseExceptionInfo):
20786 (JSC::EvalExecutable::reparseExceptionInfo):
20787 * runtime/JSFunction.cpp:
20788 * runtime/JSGlobalData.cpp:
20789 (JSC::JSGlobalData::JSGlobalData):
20790 * runtime/JSGlobalData.h:
20791 (JSC::JSGlobalData::canUseJIT):
20794 2010-07-06 Darin Adler <darin@apple.com>
20796 Reviewed by Adam Barth.
20798 Add adoptPtr and leakPtr functions for OwnPtr and PassOwnPtr
20799 https://bugs.webkit.org/show_bug.cgi?id=41320
20801 * bytecode/CodeBlock.cpp:
20802 (JSC::CodeBlock::reparseForExceptionInfoIfNecessary): Use assignment
20803 instead of set since the result of reparseExceptionInfo is now a
20806 * bytecode/CodeBlock.h: Change extractExceptionInfo to return a
20807 PassOwnPtr instead of a raw pointer.
20809 * runtime/Executable.cpp:
20810 (JSC::FunctionExecutable::reparseExceptionInfo): Return a PassOwnPtr.
20811 (JSC::EvalExecutable::reparseExceptionInfo): Ditto.
20812 (JSC::ProgramExecutable::reparseExceptionInfo): Added. This was
20813 in the header before, but it's better to not have it there to reduce
20814 header dependencies. Return a PassOwnPtr.
20816 * runtime/Executable.h: Made reparseExceptionInfo return a PassOwnPtr,
20817 and put it in the private sections of classes other than the base class.
20819 * wtf/MessageQueue.h:
20820 (WTF::MessageQueue::append): Use leakPtr instead of release.
20821 (WTF::MessageQueue::appendAndCheckEmpty): Ditto.
20822 (WTF::MessageQueue::prepend): Ditto.
20824 * wtf/OwnPtr.h: Tweaked formatting. Changed the release function to return
20825 a PassOwnPtr rather than a raw pointer. Added a leakPtr function that
20826 returns a raw pointer. Put the constructor that takes a raw pointer and
20827 the set function into a section guarded by LOOSE_OWN_PTR. Adapted to the
20828 new adoptPtr function from PassOwnPtr.h.
20830 * wtf/PassOwnPtr.h: Tweaked formatting. Renamed the release function
20831 to leakPtr. Added an adoptPtr function that creates a new PassOwnPtr.
20832 Put the constructor and assignment operators that take a raw pointer
20833 into a section guarded by LOOSE_PASS_OWN_PTR.
20835 2010-07-06 Sam Weinig <sam@webkit.org>
20837 Reviewed by Darin Adler
20839 Update comment in StringExtras.h to be more accurate.
20841 * wtf/StringExtras.h:
20843 2010-07-06 Sheriff Bot <webkit.review.bot@gmail.com>
20845 Unreviewed, rolling out r62511.
20846 http://trac.webkit.org/changeset/62511
20847 https://bugs.webkit.org/show_bug.cgi?id=41686
20849 Breaks Linux/64bit compilation (Requested by xan_ on #webkit).
20851 * jit/ExecutableAllocator.cpp:
20852 * jit/ExecutableAllocatorFixedVMPool.cpp:
20853 (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
20854 (JSC::FixedVMPoolAllocator::free):
20855 (JSC::ExecutablePool::systemAlloc):
20856 * jit/ExecutableAllocatorPosix.cpp:
20857 (JSC::ExecutableAllocator::reprotectRegion):
20858 (JSC::ExecutableAllocator::cacheFlush):
20859 * jit/ExecutableAllocatorSymbian.cpp:
20860 * jit/ExecutableAllocatorWin.cpp:
20863 2010-07-05 Gavin Barraclough <barraclough@apple.com>
20865 Reviewed by Sam Weinig.
20867 https://bugs.webkit.org/show_bug.cgi?id=41641
20869 Update compile flags to allow use of ExecutableAllocatorFixedVMPool on platforms
20870 other than x86-64 (this may be useful on 32-bit platforms, too).
20872 Simplify ifdefs by dividing into thwo broad allocation strategies
20873 (ENABLE_EXECUTABLE_ALLOCATOR_FIXED & ENABLE_EXECUTABLE_ALLOCATOR_DEMAND).
20875 Rename constant used in the code to have names descriptive of their purpose,
20876 rather than their specific value on a given platform.
20878 * jit/ExecutableAllocator.cpp:
20879 (JSC::ExecutableAllocator::reprotectRegion):
20880 (JSC::ExecutableAllocator::cacheFlush):
20881 * jit/ExecutableAllocatorFixedVMPool.cpp:
20882 (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
20883 (JSC::FixedVMPoolAllocator::free):
20884 (JSC::ExecutablePool::systemAlloc):
20885 * jit/ExecutableAllocatorPosix.cpp:
20886 * jit/ExecutableAllocatorSymbian.cpp:
20887 * jit/ExecutableAllocatorWin.cpp:
20890 2010-07-05 Steve Block <steveblock@google.com>
20892 Reviewed by Darin Adler.
20894 ThreadingPthreads.cpp should use JNIUtility.h on Android, not outdated jni_utility.h
20895 https://bugs.webkit.org/show_bug.cgi?id=41594
20897 * wtf/ThreadingPthreads.cpp:
20899 2010-07-04 Mark Rowe <mrowe@apple.com>
20901 Build fix after r62456.
20903 * interpreter/Interpreter.cpp:
20904 (JSC::Interpreter::privateExecute): Be slightly more consistent in using uint32_t to prevent
20905 warnings about comparisons between signed and unsigned types, and attempts to call an overload
20906 of std::min that doesn't exist.
20908 2010-07-02 Sam Weinig <sam@webkit.org>
20910 Reviewed by Darin Adler.
20912 Patch for https://bugs.webkit.org/show_bug.cgi?id=41553
20913 Make StringExtras.h versions of snprintf and vsnprintf match the unix versions.
20915 - MSVC does not ensure the buffers are null terminated as the unix versions do.
20917 * runtime/JSGlobalObjectFunctions.cpp: Cleanup includes.
20918 * runtime/UString.cpp: Clean up includes.
20919 (JSC::UString::from): Don't pass sizeof(buf) - 1, that is wrong.
20920 * wtf/StringExtras.h:
20921 (snprintf): Ensure null termination of buffer.
20922 (vsnprintf): Ditto.
20924 2010-07-03 Yong Li <yoli@rim.com>
20926 Reviewed by Darin Adler.
20928 Make Arguments::MaxArguments clamping work for numbers >= 0x80000000 in
20929 the interpreter as well as the JIT.
20931 https://bugs.webkit.org/show_bug.cgi?id=41351
20932 rdar://problem/8142141
20934 * interpreter/Interpreter.cpp:
20935 (JSC::Interpreter::privateExecute): Fix signed integer overflow problem
20936 in op_load_varargs handling. 0xFFFFFFFF was read as -1.
20938 2010-06-26 Jeremy Orlow <jorlow@chromium.org>
20940 Reviewed by Dumitru Daniliuc.
20942 Support for keys and in-memory storage for IndexedDB
20943 https://bugs.webkit.org/show_bug.cgi?id=41252
20945 Set the role to Private.
20947 * JavaScriptCore.xcodeproj/project.pbxproj:
20949 2010-07-02 Oliver Hunt <oliver@apple.com>
20951 Reviewed by Geoffrey Garen.
20953 Move BOM handling out of the lexer and parser
20954 https://bugs.webkit.org/show_bug.cgi?id=41539
20956 Doing the BOM stripping in the lexer meant that we could
20957 end up having to strip the BOMs from a source multiple times.
20958 To deal with this we now require all strings provided by
20959 a SourceProvider to already have had the BOMs stripped.
20960 This also simplifies some of the lexer logic.
20962 * parser/Lexer.cpp:
20963 (JSC::Lexer::setCode):
20964 (JSC::Lexer::sourceCode):
20965 * parser/SourceProvider.h:
20966 (JSC::SourceProvider::SourceProvider):
20967 (JSC::UStringSourceProvider::create):
20968 (JSC::UStringSourceProvider::getRange):
20969 (JSC::UStringSourceProvider::UStringSourceProvider):
20970 * wtf/text/StringImpl.h:
20971 (WebCore::StringImpl::copyStringWithoutBOMs):
20973 2010-07-03 Patrick Gansterer <paroga@paroga.com>
20975 Reviewed by Kent Tamura.
20977 [WINCE] Implement Unicode::isAlphanumeric and Unicode::isArabicChar.
20978 https://bugs.webkit.org/show_bug.cgi?id=41411
20980 * wtf/unicode/wince/UnicodeWince.cpp:
20981 (WTF::Unicode::isAlphanumeric):
20982 * wtf/unicode/wince/UnicodeWince.h:
20983 (WTF::Unicode::isArabicChar):
20985 2010-07-03 Kwang Yul Seo <skyul@company100.net>
20987 Reviewed by Kent Tamura.
20989 [BREWMP] Change the CRASH() macro to print "WebKit CRASH" log.
20990 https://bugs.webkit.org/show_bug.cgi?id=41524
20992 Print "WebKit CRASH" before crashing.
20994 * wtf/Assertions.h:
20996 2010-07-02 Gavin Barraclough <barraclough@apple.com>
20998 Reviewed by Oliver Hunt.
21000 Bug 41565 - Repatching in ARMv7Assembler::repatchLoadPtrToLEA is broken
21002 This method tried to repatch a LDR (T2) into an ADD (T3) - but it only
21003 repatches the first instruction word. The layout of the fields in the
21004 second word is different, and also needs repatching.
21006 * assembler/ARMv7Assembler.h:
21007 (JSC::ARMv7Assembler::repatchLoadPtrToLEA):
21009 2010-07-02 Oliver Hunt <oliver@apple.com>
21011 Reviewed by Gavin Barraclough.
21013 Clamp the number of arguments supported by function.apply
21014 https://bugs.webkit.org/show_bug.cgi?id=41351
21015 <rdar://problem/8142141>
21017 Add clamping logic to function.apply similar to that
21018 enforced by firefox. We have a smaller clamp than
21019 firefox as our calling convention means that stack
21020 usage is proportional to argument count -- the firefox
21021 limit is larger than you could actually call.
21023 * interpreter/Interpreter.cpp:
21024 (JSC::Interpreter::privateExecute):
21025 * jit/JITStubs.cpp:
21026 (JSC::DEFINE_STUB_FUNCTION):
21027 * runtime/Arguments.h:
21028 (JSC::Arguments::):
21030 2010-07-02 Chao-ying Fu <fu@mips.com>
21032 Reviewed by Oliver Hunt.
21034 Re-enable JIT_OPTIMIZE_NATIVE_CALL on MIPS
21035 https://bugs.webkit.org/show_bug.cgi?id=40179
21037 Add the MIPS part to re-enable JIT_OPTIMIZE_NATIVE_CALL.
21039 * jit/JITOpcodes.cpp:
21040 (JSC::JIT::privateCompileCTINativeCall):
21043 2010-07-02 Gavin Barraclough <barraclough@apple.com>
21045 Reviewed by Oliver Hunt.
21047 Bug 41552 - Clean up ARMv7 vfp code generation
21048 Emit separate opcode individually, remove magic numbers.
21050 Also remove invalid assert from JSImmediate (number cells are not CELL_MASK aligned).
21052 * assembler/ARMv7Assembler.h:
21053 (JSC::ARMv7Assembler::):
21054 (JSC::ARMv7Assembler::vadd_F64):
21055 (JSC::ARMv7Assembler::vcmp_F64):
21056 (JSC::ARMv7Assembler::vcvt_F64_S32):
21057 (JSC::ARMv7Assembler::vcvtr_S32_F64):
21058 (JSC::ARMv7Assembler::vdiv_F64):
21059 (JSC::ARMv7Assembler::vldr):
21060 (JSC::ARMv7Assembler::vmov_F64_0):
21061 (JSC::ARMv7Assembler::vmov):
21062 (JSC::ARMv7Assembler::vmrs):
21063 (JSC::ARMv7Assembler::vmul_F64):
21064 (JSC::ARMv7Assembler::vstr):
21065 (JSC::ARMv7Assembler::vsub_F64):
21066 (JSC::ARMv7Assembler::VFPOperand::VFPOperand):
21067 (JSC::ARMv7Assembler::VFPOperand::bits1):
21068 (JSC::ARMv7Assembler::VFPOperand::bits4):
21069 (JSC::ARMv7Assembler::vcvtOp):
21070 (JSC::ARMv7Assembler::ARMInstructionFormatter::vfpOp):
21071 (JSC::ARMv7Assembler::ARMInstructionFormatter::vfpMemOp):
21072 * assembler/MacroAssemblerARMv7.h:
21073 (JSC::MacroAssemblerARMv7::branchDouble):
21074 * runtime/JSImmediate.h:
21075 (JSC::JSValue::isCell):
21077 2010-07-02 Sheriff Bot <webkit.review.bot@gmail.com>
21079 Unreviewed, rolling out r62410.
21080 http://trac.webkit.org/changeset/62410
21081 https://bugs.webkit.org/show_bug.cgi?id=41549
21083 accursed last minute changes (Requested by olliej on #webkit).
21085 * parser/Lexer.cpp:
21086 (JSC::Lexer::setCode):
21087 (JSC::Lexer::copyCodeWithoutBOMs):
21088 (JSC::Lexer::sourceCode):
21089 * parser/SourceProvider.h:
21091 (JSC::SourceProvider::SourceProvider):
21092 (JSC::SourceProvider::hasBOMs):
21093 (JSC::UStringSourceProvider::create):
21094 (JSC::UStringSourceProvider::getRange):
21095 (JSC::UStringSourceProvider::UStringSourceProvider):
21096 * wtf/text/StringImpl.h:
21098 2010-07-02 Sam Weinig <sam@webkit.org>
21100 Reviewed by Geoffrey Garen.
21102 Patch for https://bugs.webkit.org/show_bug.cgi?id=41548
21103 Use snprintf instead of sprintf everywhere in JavaScriptCore
21105 * runtime/JSGlobalObjectFunctions.cpp:
21107 (JSC::globalFuncEscape):
21108 * runtime/UString.cpp:
21109 (JSC::UString::from):
21111 2010-07-02 Oliver Hunt <oliver@apple.com>
21113 Reviewed by Geoffrey Garen.
21115 Move BOM handling out of the lexer and parser
21116 https://bugs.webkit.org/show_bug.cgi?id=41539
21118 Doing the BOM stripping in the lexer meant that we could
21119 end up having to strip the BOMs from a source multiple times.
21120 To deal with this we now require all strings provided by
21121 a SourceProvider to already have had the BOMs stripped.
21122 This also simplifies some of the lexer logic.
21124 * parser/Lexer.cpp:
21125 (JSC::Lexer::setCode):
21126 (JSC::Lexer::sourceCode):
21127 * parser/SourceProvider.h:
21128 (JSC::SourceProvider::SourceProvider):
21129 (JSC::UStringSourceProvider::create):
21130 (JSC::UStringSourceProvider::getRange):
21131 (JSC::UStringSourceProvider::UStringSourceProvider):
21132 * wtf/text/StringImpl.h:
21133 (WebCore::StringImpl::copyStringWithoutBOMs):
21135 2010-07-02 Renata Hodovan <reni@inf.u-szeged.hu>
21137 Reviewed by Oliver Hunt.
21139 [ Updated after rollout. ]
21141 Merged RegExp constructor and RegExp::create methods.
21142 Both functions are called with three parameters and check whether
21143 flags (the third param) is given or not.
21144 Avoid extra hash lookups in RegExpCache::create by passing a pre-computed
21145 iterator parameter.
21146 https://bugs.webkit.org/show_bug.cgi?id=41055
21148 * runtime/RegExp.cpp:
21149 (JSC::RegExp::RegExp):
21150 * runtime/RegExp.h:
21151 * runtime/RegExpCache.cpp:
21152 (JSC::RegExpCache::lookupOrCreate):
21153 (JSC::RegExpCache::create):
21154 * runtime/RegExpCache.h:
21156 2010-07-02 Martin Robinson <mrobinson@igalia.com>
21158 Unreviewed. Build fix for GTK+.
21160 Build Lexer.lut.h with the rest of the .lut.h files. Later these should
21161 all probably be moved to DerivedSources.
21165 2010-06-23 Martin Robinson <mrobinson@igalia.com>
21167 Reviewed by Gustavo Noronha Silva.
21169 [GTK] Separate DerivedSources per-project
21170 https://bugs.webkit.org/show_bug.cgi?id=41109
21172 Generate JavaScriptCore derived sources in <builddir>/DerivedSources/JavaScriptCore.
21176 2010-07-02 Peter Varga <pvarga@inf.u-szeged.hu>
21178 Reviewed by Oliver Hunt.
21180 The alternativeFrameLocation value is wrong in the emitDisjunction function in
21181 case of PatternTerm::TypeParentheticalAssertion. This value needs to be
21182 computed from term.frameLocation instead of term.inputPosition. This mistake caused glibc
21183 memory corruption in some cases.
21184 Layout test added for checking of TypeParentheticalAssertion case.
21185 https://bugs.webkit.org/show_bug.cgi?id=41458
21187 * yarr/RegexInterpreter.cpp:
21188 (JSC::Yarr::ByteCompiler::emitDisjunction):
21190 2010-07-01 Oliver Hunt <oliver@apple.com>
21192 Reviewed by Maciej Stachowiak.
21194 Add a FixedArray template to encapsulate fixed length arrays
21195 https://bugs.webkit.org/show_bug.cgi?id=41506
21197 This new type is used in place of fixed length C arrays so
21198 that debug builds can guard against attempts to go beyond
21199 the end of the array.
21201 * JavaScriptCore.xcodeproj/project.pbxproj:
21202 * bytecode/Opcode.cpp:
21203 (JSC::OpcodeStats::~OpcodeStats):
21204 * pcre/pcre_compile.cpp:
21205 (calculateCompiledPatternLength):
21206 * runtime/Collector.cpp:
21207 (JSC::Heap::allocateBlock):
21208 (JSC::Heap::allocate):
21209 * runtime/Collector.h:
21210 (JSC::CollectorBitmap::clearAll):
21211 * runtime/CollectorHeapIterator.h:
21212 (JSC::CollectorHeapIterator::operator*):
21213 * runtime/DateInstanceCache.h:
21214 * runtime/JSString.cpp:
21215 (JSC::JSString::replaceCharacter):
21216 * runtime/JSString.h:
21217 (JSC::RopeBuilder::JSStringFinalizerStruct::):
21218 * runtime/NumericStrings.h:
21219 * runtime/RegExpCache.h:
21220 * runtime/SmallStrings.h:
21221 (JSC::SmallStrings::singleCharacterStrings):
21223 * wtf/FixedArray.h: Added.
21224 (WTF::FixedArray::operator[]):
21225 (WTF::FixedArray::data):
21227 2010-07-01 Zoltan Herczeg <zherczeg@webkit.org>
21229 Reviewed by Oliver Hunt.
21231 Improve the main lexer switch by mapping input characters to their type
21232 https://bugs.webkit.org/show_bug.cgi?id=41459
21234 Sunsipder: no change (from 532.9ms to 531.5ms)
21235 SunSpider --parse-only: 1.025x as fast (from 33.1ms to 32.3ms)
21237 * parser/Lexer.cpp:
21241 2010-07-01 Sam Weinig <sam@webkit.org>
21243 Rubber-stamped by Ander Carlsson.
21245 Define HAVE_HOSTED_CORE_ANIMATION on Snow Leopard.
21249 2010-07-01 Gavin Barraclough <barraclough@apple.com>
21251 Reviewed by Oliver Hunt.
21253 Bug 41490 - Add missing operations to MacroAssemblerARMv7
21254 Also, make single, double, quad register numbers in ARMv7Assembler distinct & strongly typed.
21256 * assembler/ARMv7Assembler.h:
21257 (JSC::ARMRegisters::):
21258 (JSC::ARMRegisters::asSingle):
21259 (JSC::ARMRegisters::asDouble):
21260 (JSC::VFPImmediate::VFPImmediate):
21261 (JSC::VFPImmediate::isValid):
21262 (JSC::VFPImmediate::value):
21263 (JSC::ARMv7Assembler::singleRegisterMask):
21264 (JSC::ARMv7Assembler::doubleRegisterMask):
21265 (JSC::ARMv7Assembler::):
21266 (JSC::ARMv7Assembler::add_S):
21267 (JSC::ARMv7Assembler::neg):
21268 (JSC::ARMv7Assembler::orr_S):
21269 (JSC::ARMv7Assembler::sub):
21270 (JSC::ARMv7Assembler::sub_S):
21271 (JSC::ARMv7Assembler::vadd_F64):
21272 (JSC::ARMv7Assembler::vcmp_F64):
21273 (JSC::ARMv7Assembler::vcvt_F64_S32):
21274 (JSC::ARMv7Assembler::vcvtr_S32_F64):
21275 (JSC::ARMv7Assembler::vdiv_F64):
21276 (JSC::ARMv7Assembler::vldr):
21277 (JSC::ARMv7Assembler::vmov_F64_0):
21278 (JSC::ARMv7Assembler::vmov):
21279 (JSC::ARMv7Assembler::vmul_F64):
21280 (JSC::ARMv7Assembler::vstr):
21281 (JSC::ARMv7Assembler::vsub_F64):
21282 (JSC::ARMv7Assembler::vcvt):
21283 (JSC::ARMv7Assembler::vmem):
21284 * assembler/AbstractMacroAssembler.h:
21285 * assembler/MacroAssemblerARM.h:
21286 * assembler/MacroAssemblerARMv7.h:
21287 (JSC::MacroAssemblerARMv7::fpTempRegisterAsSingle):
21288 (JSC::MacroAssemblerARMv7::neg32):
21289 (JSC::MacroAssemblerARMv7::loadDouble):
21290 (JSC::MacroAssemblerARMv7::divDouble):
21291 (JSC::MacroAssemblerARMv7::convertInt32ToDouble):
21292 (JSC::MacroAssemblerARMv7::branchConvertDoubleToInt32):
21293 (JSC::MacroAssemblerARMv7::zeroDouble):
21294 (JSC::MacroAssemblerARMv7::branchOr32):
21295 (JSC::MacroAssemblerARMv7::set32):
21296 (JSC::MacroAssemblerARMv7::set8):
21297 * assembler/MacroAssemblerMIPS.h:
21298 * assembler/MacroAssemblerX86Common.h:
21300 2010-07-01 Oliver Hunt <oliver@apple.com>
21302 Reviewed by Geoff Garen.
21304 Improve reentrancy logic in polymorphic cache stubs
21305 <https://bugs.webkit.org/show_bug.cgi?id=41482>
21306 <rdar://problem/8094380>
21308 Make the polymorphic cache stubs handle reentrancy
21311 * jit/JITStubs.cpp:
21312 (JSC::DEFINE_STUB_FUNCTION):
21313 (JSC::getPolymorphicAccessStructureListSlot):
21315 2010-07-01 Antti Koivisto <koivisto@iki.fi>
21317 Revert accidental commit.
21319 * runtime/Collector.cpp:
21320 (JSC::Heap::allocateBlock):
21322 2010-06-30 Darin Adler <darin@apple.com>
21324 Reviewed by Adam Barth.
21326 Add assertion, off by default, for when you forget to do adoptRef
21327 https://bugs.webkit.org/show_bug.cgi?id=41422
21329 * wtf/PassRefPtr.h: Tweaked formatting. Added a new adopted
21330 function, called on the pointer by adoptRef, with an empty inline
21331 default version, meant to be overloaded. Unified the inlining
21332 with a macro named REF_DEREF_INLINE to make it clearer what's
21333 going on in the refIfNotNull/derefIfNotNull functions. Renamed
21334 releaseRef to leakRef, but left the old name in for compatibility
21337 * wtf/RefCounted.h: Added code to require adoption and assert if
21338 you don't call adoptRef. For now, it is turned off because of the
21339 LOOSE_REF_COUNTED define in this header. Later we can turn it on
21340 once we get everything working without asserting.
21342 2010-06-29 Michael Saboff <msaboff@apple.com>
21344 Reviewed by Darin Adler.
21346 Bug 41238 - RegExp performance slow on Dromaeo benchmark
21348 Other javascript engines appear to cache prior results of regular
21349 expression operations.
21351 Suggest adding some sort of caching mechanism to regular expression
21354 Added a single entry cache of match() results to RegExp class.
21356 Also added performance improvements to UString == operator.
21357 First check the impls for equality. Then get the length of
21358 each of the non-null impls. Next check the sizes for equality.
21359 Then check the data for the case of different impls that point
21360 to the same data (most likely due to substrings from the beginning of
21361 another string). Lastly we check the underlying data for equality.
21363 * runtime/RegExp.cpp:
21364 (JSC::RegExp::RegExp):
21365 (JSC::RegExp::match):
21366 * runtime/RegExp.h:
21367 * runtime/UString.h:
21370 2010-06-29 Nathan Lawrence <nlawrence@apple.com>
21372 Reviewed by Geoffrey Garen.
21374 WTF::HashSet iterators are quasi-mutable. Changing the value through
21375 dereferencing an iterator will not change the behavior of methods like
21376 contains or find, but will change the behavior of iterating.
21385 2010-06-29 Martin Robinson <mrobinson@igalia.com>
21387 Reviewed by Xan Lopez.
21389 [GTK] Clean up the source lists in the GNUMakefile.am files
21390 https://bugs.webkit.org/show_bug.cgi?id=41229
21392 Clean up the GNUMakefile.am a little bit. Alphabetize and conglomerate
21397 2010-06-29 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org>
21399 Reviewed by Kenneth Rohde Christiansen.
21401 [Qt] Fix QtScript build after QScriptValuePrivate ctor changes
21402 https://bugs.webkit.org/show_bug.cgi?id=41307
21404 * qt/api/qscriptvalue_p.h:
21405 (QScriptValuePrivate::prototype):
21406 * qt/benchmarks/qscriptengine/qscriptengine.pro:
21408 2010-06-28 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org>
21410 Reviewed by Kenneth Rohde Christiansen.
21412 [Qt] QScriptEngine API should contain a newArray function
21413 https://bugs.webkit.org/show_bug.cgi?id=39115
21415 * qt/api/qscriptengine.cpp:
21416 (QScriptEngine::newArray):
21417 * qt/api/qscriptengine.h:
21418 * qt/api/qscriptengine_p.cpp:
21419 (QScriptEnginePrivate::newArray):
21420 * qt/api/qscriptengine_p.h:
21421 * qt/tests/qscriptengine/tst_qscriptengine.cpp:
21422 (tst_QScriptEngine::newArray):
21424 2010-06-28 Xan Lopez <xlopez@igalia.com>
21426 Reviewed by Gustavo Noronha.
21428 Install jsc as jsc-X where X is the major API version to allow
21429 parallel installation of both GTK+ 2.x and 3.x versions.
21433 2010-06-28 John Gregg <johnnyg@google.com>
21435 Reviewed by Kent Tamura.
21437 add ENABLE_DIRECTORY_UPLOAD build support
21438 https://bugs.webkit.org/show_bug.cgi?id=41100
21440 * Configurations/FeatureDefines.xcconfig:
21442 2010-06-28 Xan Lopez <xlopez@igalia.com>
21444 Revert to build jsc, since the tests expect this.
21448 2010-06-28 Zoltan Herczeg <zherczeg@webkit.org>
21450 Reviewed by Oliver Hunt.
21452 Only one character lookahead should be enough for the lexer
21453 https://bugs.webkit.org/show_bug.cgi?id=41213
21455 The lexer had 4 character lookahead before, which required
21456 a complex shifting mechanism. This can be improved by using
21457 only one character lookahead for most decisions, and a
21458 peek() function as a fallback when it is absolutely necessary.
21460 * parser/Lexer.cpp:
21461 (JSC::Lexer::currentCharacter):
21462 (JSC::Lexer::currentOffset):
21463 (JSC::Lexer::setCode):
21464 (JSC::Lexer::shift):
21465 (JSC::Lexer::peek):
21466 (JSC::Lexer::getUnicodeCharacter):
21467 (JSC::Lexer::shiftLineTerminator):
21468 (JSC::Lexer::lastTokenWasRestrKeyword):
21470 (JSC::Lexer::scanRegExp):
21471 (JSC::Lexer::skipRegExp):
21474 2010-06-28 Lucas De Marchi <lucas.demarchi@profusion.mobi>
21476 Unreviewed build fix.
21478 [EFL] Build fix for latest version of Ecore library.
21479 Ecore recently changed return type of callbacks from int to Eina_Bool.
21481 * wtf/efl/MainThreadEfl.cpp:
21482 (WTF::timeoutFired): Return Eina_Bool instead of int.
21484 2010-06-28 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org>
21486 Reviewed by Kenneth Rohde Christiansen.
21488 [Qt] QScriptValue should have API for accessing object properties
21489 https://bugs.webkit.org/show_bug.cgi?id=40903
21491 Make possible to access properties inside QScriptValues. While this
21492 still doesn't support the ResolveLocal parameter, it is already useful
21493 for testing the API.
21495 The tests from upstream QtScript weren't imported since most of them
21496 depend on the setProperty() function as well. A simple test was created.
21498 * qt/api/qscriptvalue.cpp:
21499 (QScriptValue::property):
21500 * qt/api/qscriptvalue.h:
21502 * qt/api/qscriptvalue_p.h:
21503 (QScriptValuePrivate::property):
21504 * qt/tests/qscriptvalue/tst_qscriptvalue.cpp:
21505 (tst_QScriptValue::propertySimple):
21506 * qt/tests/qscriptvalue/tst_qscriptvalue.h:
21508 2010-06-28 Xan Lopez <xlopez@igalia.com>
21510 Reviewed by Gustavo Noronha.
21512 [GTK] Add support for GTK+3
21513 https://bugs.webkit.org/show_bug.cgi?id=41253
21515 Suffix jsc with the API version of the library, so that
21516 libwebkitgtk 1.x and 3.x can install jsc.
21520 2010-06-27 Kwang Yul Seo <skyul@company100.net>
21522 Reviewed by Kent Tamura.
21524 [BREWMP] Turn ENABLE(SINGLE_THREADED) on.
21525 https://bugs.webkit.org/show_bug.cgi?id=41135
21527 Brew MP does not support preemptive multi-threading.
21528 Disable threading for Brew MP.
21532 2010-06-26 Tony Gentilcore <tonyg@chromium.org>
21534 Reviewed by Dimitri Glazkov.
21536 Add an ENABLE_WEB_TIMING option for enabling Web Timing support.
21537 https://bugs.webkit.org/show_bug.cgi?id=38924
21539 * Configurations/FeatureDefines.xcconfig:
21541 2010-06-25 Nathan Lawrence <nlawrence@apple.com>
21543 Reviewed by Geoffrey Garen.
21545 We assume in testapi.c that the value aHeapRef refers to will not be
21546 moved. When we have movable objects, this will not be the case.
21548 * API/tests/testapi.c:
21551 2010-06-25 Sheriff Bot <webkit.review.bot@gmail.com>
21553 Unreviewed, rolling out r61924.
21554 http://trac.webkit.org/changeset/61924
21555 https://bugs.webkit.org/show_bug.cgi?id=41240
21557 It was rolled out, but cq+ wasn't removed (Requested by Ossy_
21560 * runtime/RegExp.cpp:
21561 (JSC::RegExp::RegExp):
21562 (JSC::RegExp::create):
21563 * runtime/RegExp.h:
21564 * runtime/RegExpCache.cpp:
21565 (JSC::RegExpCache::lookupOrCreate):
21566 (JSC::RegExpCache::create):
21567 * runtime/RegExpCache.h:
21569 2010-06-25 Renata Hodovan <reni@inf.u-szeged.hu>
21571 Reviewed by Geoffrey Garen.
21573 Merge RegExp constructor and RegExp::create methods into one.
21574 Both of function are called with tree parameters and check whether
21575 flags (the third param) is given or not.
21576 Simplify hash lookups in RegExpCache::create with giving them an extra
21577 iterator parameter.
21578 https://bugs.webkit.org/show_bug.cgi?id=41055
21580 * runtime/RegExp.cpp:
21581 (JSC::RegExp::RegExp):
21582 * runtime/RegExp.h:
21583 * runtime/RegExpCache.cpp:
21584 (JSC::RegExpCache::lookupOrCreate):
21585 (JSC::RegExpCache::create):
21586 * runtime/RegExpCache.h:
21588 2010-06-25 Jedrzej Nowacki <jedrzej.nowacki@nokia.com>
21590 Reviewed by Simon Hausmann.
21592 Introduce QtScript benchmarks.
21594 The QtScript performance should be tested regularly. The patch introduces
21595 micro benchmarks for existing API.
21597 [Qt] Performance of the QtScript API is not tested.
21598 https://bugs.webkit.org/show_bug.cgi?id=40911
21600 * qt/benchmarks/benchmarks.pri: Copied from JavaScriptCore/qt/tests/tests.pri.
21601 * qt/benchmarks/benchmarks.pro: Added.
21602 * qt/benchmarks/qscriptengine/qscriptengine.pro: Added.
21603 * qt/benchmarks/qscriptengine/tst_qscriptengine.cpp: Added.
21604 (tst_QScriptEngine::checkSyntax_data):
21605 (tst_QScriptEngine::checkSyntax):
21606 (tst_QScriptEngine::constructor):
21607 (tst_QScriptEngine::evaluateString_data):
21608 (tst_QScriptEngine::evaluateString):
21609 (tst_QScriptEngine::evaluateProgram_data):
21610 (tst_QScriptEngine::evaluateProgram):
21611 (tst_QScriptEngine::newObject):
21612 (tst_QScriptEngine::nullValue):
21613 (tst_QScriptEngine::undefinedValue):
21614 (tst_QScriptEngine::globalObject):
21615 (tst_QScriptEngine::toStringHandle):
21616 * qt/benchmarks/qscriptvalue/qscriptvalue.pro: Added.
21617 * qt/benchmarks/qscriptvalue/tst_qscriptvalue.cpp: Added.
21618 (tst_QScriptValue::tst_QScriptValue):
21619 (tst_QScriptValue::~tst_QScriptValue):
21620 (tst_QScriptValue::values_data):
21621 (tst_QScriptValue::ctorBool):
21622 (tst_QScriptValue::ctorReal):
21623 (tst_QScriptValue::ctorNumber):
21624 (tst_QScriptValue::ctorQString):
21625 (tst_QScriptValue::ctorCString):
21626 (tst_QScriptValue::ctorSpecial):
21627 (tst_QScriptValue::ctorQScriptValue):
21628 (tst_QScriptValue::isValid_data):
21629 (tst_QScriptValue::isValid):
21630 (tst_QScriptValue::isBool_data):
21631 (tst_QScriptValue::isBool):
21632 (tst_QScriptValue::isNumber_data):
21633 (tst_QScriptValue::isNumber):
21634 (tst_QScriptValue::isFunction_data):
21635 (tst_QScriptValue::isFunction):
21636 (tst_QScriptValue::isNull_data):
21637 (tst_QScriptValue::isNull):
21638 (tst_QScriptValue::isString_data):
21639 (tst_QScriptValue::isString):
21640 (tst_QScriptValue::isUndefined_data):
21641 (tst_QScriptValue::isUndefined):
21642 (tst_QScriptValue::isObject_data):
21643 (tst_QScriptValue::isObject):
21644 (tst_QScriptValue::isError_data):
21645 (tst_QScriptValue::isError):
21646 (tst_QScriptValue::toString_data):
21647 (tst_QScriptValue::toString):
21648 (tst_QScriptValue::toNumber_data):
21649 (tst_QScriptValue::toNumber):
21650 (tst_QScriptValue::toBool_data):
21651 (tst_QScriptValue::toBool):
21652 (tst_QScriptValue::toInteger_data):
21653 (tst_QScriptValue::toInteger):
21654 (tst_QScriptValue::toInt32_data):
21655 (tst_QScriptValue::toInt32):
21656 (tst_QScriptValue::toUInt32_data):
21657 (tst_QScriptValue::toUInt32):
21658 (tst_QScriptValue::toUInt16_data):
21659 (tst_QScriptValue::toUInt16):
21660 (tst_QScriptValue::toObject_data):
21661 (tst_QScriptValue::toObject):
21662 (tst_QScriptValue::equals_data):
21663 (tst_QScriptValue::equals):
21664 (tst_QScriptValue::strictlyEquals_data):
21665 (tst_QScriptValue::strictlyEquals):
21666 (tst_QScriptValue::instanceOf_data):
21667 (tst_QScriptValue::instanceOf):
21669 2010-06-25 Oliver Hunt <oliver@apple.com>
21671 Reviewed by Geoffrey Garen.
21673 Remove old js parser
21674 https://bugs.webkit.org/show_bug.cgi?id=41222
21676 Remove the old yacc parser, this also solves the tiger problem. Which
21677 was a conflict between yacc generated token values and those in the
21682 * DerivedSources.make:
21683 * DerivedSources.pro:
21685 * JavaScriptCore.pro:
21686 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
21687 * JavaScriptCore.xcodeproj/project.pbxproj:
21688 * parser/Grammar.y: Removed.
21689 * parser/JSParser.cpp:
21690 * parser/JSParser.h:
21691 * parser/Lexer.cpp:
21692 * parser/NodeConstructors.h:
21694 * parser/Parser.cpp:
21695 (JSC::Parser::parse):
21698 2010-06-25 Jedrzej Nowacki <jedrzej.nowacki@nokia.com>
21700 Reviewed by Simon Hausmann.
21702 New QtScript API; setPrototype() and prototype().
21704 This patch implements QScriptValue's prototype accessors.
21706 [Qt] QScriptValue should have accessors to a prototype.
21707 https://bugs.webkit.org/show_bug.cgi?id=39356
21709 * qt/api/qscriptvalue.cpp:
21710 (QScriptValue::prototype):
21711 (QScriptValue::setPrototype):
21712 * qt/api/qscriptvalue.h:
21713 * qt/api/qscriptvalue_p.h:
21714 (QScriptValuePrivate::prototype):
21715 (QScriptValuePrivate::setPrototype):
21716 * qt/tests/qscriptvalue/tst_qscriptvalue.cpp:
21717 (tst_QScriptValue::getSetPrototype):
21718 * qt/tests/qscriptvalue/tst_qscriptvalue.h:
21720 2010-06-25 Lucas De Marchi <lucas.demarchi@profusion.mobi>
21722 Reviewed by Kenneth Rohde Christiansen.
21724 [CMake] Add option to enable JIT.
21725 JIT is disabled by default, but now it's possible to enable it through
21726 an option to CMake: -DENABLE_JIT will enable it.
21727 https://bugs.webkit.org/show_bug.cgi?id=40936
21729 * CMakeLists.txt: Add missing files and re-sort.
21731 2010-06-25 Lucas De Marchi <lucas.demarchi@profusion.mobi>
21733 Reviewed by Gustavo Noronha Silva.
21735 [CMake] Remove unused variable in EFL build system. It was previously
21736 being used to set the flags of each port but it was superseded by
21738 https://bugs.webkit.org/show_bug.cgi?id=40931
21740 * jsc/CMakeLists.txt:
21742 2010-06-25 Nathan Lawrence <nlawrence@apple.com>
21744 Reviewed by Geoffrey Garen.
21746 Aligning AssemblerBuffer to 128 bytes gives a 0.4% speedup on
21749 * assembler/AssemblerBuffer.h:
21750 (JSC::AssemblerBuffer::AssemblerBuffer):
21752 2010-06-25 Sheriff Bot <webkit.review.bot@gmail.com>
21754 Unreviewed, rolling out r61842.
21755 http://trac.webkit.org/changeset/61842
21756 https://bugs.webkit.org/show_bug.cgi?id=41208
21758 It broke Windows build (Requested by Ossy_ on #webkit).
21760 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
21761 * JavaScriptCore.vcproj/WTF/WTF.vcproj:
21762 * wtf/OwnPtrCommon.h:
21763 * wtf/brew/OwnPtrBrew.h: Removed.
21764 * wtf/win/OwnPtrWin.h: Removed.
21766 2010-06-25 Sheriff Bot <webkit.review.bot@gmail.com>
21768 Unreviewed, rolling out r61833.
21769 http://trac.webkit.org/changeset/61833
21770 https://bugs.webkit.org/show_bug.cgi?id=41205
21772 It broke Leopard and GTK (Requested by Ossy_ on #webkit).
21774 * runtime/RegExp.cpp:
21775 (JSC::RegExp::RegExp):
21776 (JSC::RegExp::create):
21777 * runtime/RegExp.h:
21778 * runtime/RegExpCache.cpp:
21779 (JSC::RegExpCache::lookupOrCreate):
21780 (JSC::RegExpCache::create):
21781 * runtime/RegExpCache.h:
21783 2010-06-25 Kwang Yul Seo <skyul@company100.net>
21785 Reviewed by Adam Barth.
21787 Change OwnPtrCommon to include platform-specific headers
21788 https://bugs.webkit.org/show_bug.cgi?id=40279
21790 Adding new type to OwnPtrCommon needlessly causes all ports to do full rebuilds.
21791 Change OwnPtrCommon to include platform-specific headers to avoid all ports rebuilds.
21793 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
21794 * JavaScriptCore.vcproj/WTF/WTF.vcproj:
21795 * wtf/OwnPtrCommon.h:
21796 * wtf/brew/OwnPtrBrew.h: Added.
21797 * wtf/win/OwnPtrWin.h: Added.
21799 2010-06-25 Patrick Gansterer <paroga@paroga.com>
21801 Reviewed by Darin Adler.
21803 Add the possibility for a head and footer section to create_jit_stubs.
21804 https://bugs.webkit.org/show_bug.cgi?id=36050
21806 * create_jit_stubs:
21808 2010-06-24 Renata Hodovan <reni@inf.u-szeged.hu>
21810 Reviewed by Geoffrey Garen.
21812 Merge RegExp constructor and RegExp::create methods into one.
21813 Both of function are called with tree parameters and check whether
21814 flags (the third param) is given or not.
21815 Simplify hash lookups in RegExpCache::create with giving them an extra
21816 iterator parameter.
21817 https://bugs.webkit.org/show_bug.cgi?id=41055
21819 * runtime/RegExp.cpp:
21820 (JSC::RegExp::RegExp):
21821 * runtime/RegExp.h:
21822 * runtime/RegExpCache.cpp:
21823 (JSC::RegExpCache::lookupOrCreate):
21824 (JSC::RegExpCache::create):
21825 * runtime/RegExpCache.h:
21827 2010-06-24 Oliver Hunt <oliver@apple.com>
21829 Reviewed by Maciej Stachowiak.
21831 Incorrect use of '+ 4' and 0 instead of tag and payload offsets in JSValue32_64
21832 https://bugs.webkit.org/show_bug.cgi?id=41193
21834 I noticed a use of '+ 4' in some of the 32_64 code paths and realised there
21835 were a few places where endianness was being hardcoded. This patch fixes
21836 the errors i could find through code inspection.
21838 * jit/JITOpcodes32_64.cpp:
21839 (JSC::JIT::emit_op_resolve_global):
21840 * jit/JITPropertyAccess32_64.cpp:
21841 (JSC::JIT::emit_op_get_by_val):
21842 (JSC::JIT::emit_op_put_by_val):
21843 (JSC::JIT::compileGetDirectOffset):
21844 (JSC::JIT::privateCompilePutByIdTransition):
21845 (JSC::JIT::patchGetByIdSelf):
21846 (JSC::JIT::patchPutByIdReplace):
21848 2010-06-24 Oliver Hunt <oliver@apple.com>
21852 Temporarily get the tiger bot working again by disabling the
21853 new JS parser. GCC on tiger is miscompiling the parser and
21854 I don't have access to a tiger machine right now.
21858 2010-06-21 Nathan Lawrence <nlawrence@apple.com>
21860 Reviewed by Geoff Garen.
21862 https://bugs.webkit.org/show_bug.cgi?id=40128
21863 Fixed broken debug functionality.
21865 * interpreter/Interpreter.cpp:
21866 (JSC::Interpreter::dumpRegisters):
21867 Fixed to work with updated call frame.
21868 * runtime/JSImmediate.h:
21869 (JSC::JSValue::isCell):
21870 Added assert for aligned cell.
21871 * runtime/JSValue.cpp:
21872 (JSC::JSValue::description):
21873 Fixed to work with current JSValue implementation.
21874 * runtime/JSZombie.cpp:
21875 (JSC::JSZombie::leakedZombieStructure):
21876 JSombies compile again.
21878 2010-06-24 Leandro Pereira <leandro@profusion.mobi>
21880 Unreviewed build fix.
21882 * CMakeLists.txt: Add JSParser.cpp.
21884 2010-06-24 Oliver Hunt <oliver@apple.com>
21886 Reviewed by Maciej Stachowiak.
21888 Single character string replacement may replace too many characters
21889 https://bugs.webkit.org/show_bug.cgi?id=41138
21890 <rdar://problem/8097496>
21892 Simple fix to stop the rope path of single character replacement
21893 once the first replacement occurs.
21895 * runtime/JSString.cpp:
21896 (JSC::JSString::replaceCharacter):
21898 2010-06-24 Gabor Loki <loki@webkit.org>
21900 Reviewed by Gavin Barraclough.
21902 Fix the length of instruction stream controlled by constant pool
21903 https://bugs.webkit.org/show_bug.cgi?id=40293
21905 The initial/maximum length of instruction stream (m_maxDistance) should
21906 be set when the first constant arrives to the constant pool. Otherwise
21907 the constant pool could be placed into an uninterrupted sequence.
21909 * assembler/AssemblerBufferWithConstantPool.h:
21912 2010-06-24 Oliver Hunt <oliver@apple.com>
21914 Reviewed by Gavin Barraclough.
21916 We assume bytecodeOffset will always return a value > 1,
21917 so we adjust the failure case to return 1 instead of 0.
21919 * bytecode/CodeBlock.h:
21920 (JSC::CodeBlock::bytecodeOffset):
21922 2010-06-23 Oliver Hunt <oliver@apple.com>
21924 Reviewed by Gavin Barraclough.
21926 Custom-written JavaScript parser
21927 https://bugs.webkit.org/show_bug.cgi?id=34019
21929 Implement a recursive descent parser similar to that used by V8 and
21930 SpiderMonkey. Greater than 2x improvement in SunSpider parsing tests.
21932 The parser consists of a JSParser class that uses a TreeBuilder to actually
21933 build the AST. There are currently two builders -- the ASTBuilder and
21934 SyntaxChecker which separate the job of building an AST for code generation
21935 and simply checking syntactic correctness.
21937 There's still some less than ideal code remaining in the parser to allow
21938 us to retain the existing lexing code with minimal changes. We'll tidy
21939 this up at a later date.
21942 * JavaScriptCore.gypi:
21943 * JavaScriptCore.pro:
21944 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
21945 * JavaScriptCore.xcodeproj/project.pbxproj:
21946 * parser/ASTBuilder.h: Added.
21947 (JSC::ASTBuilder::BinaryOpInfo::BinaryOpInfo):
21948 (JSC::ASTBuilder::AssignmentInfo::AssignmentInfo):
21949 (JSC::ASTBuilder::ASTBuilder):
21950 (JSC::ASTBuilder::createSourceElements):
21951 (JSC::ASTBuilder::varDeclarations):
21952 (JSC::ASTBuilder::funcDeclarations):
21953 (JSC::ASTBuilder::features):
21954 (JSC::ASTBuilder::numConstants):
21955 (JSC::ASTBuilder::appendToComma):
21956 (JSC::ASTBuilder::createCommaExpr):
21957 (JSC::ASTBuilder::createLogicalNot):
21958 (JSC::ASTBuilder::createUnaryPlus):
21959 (JSC::ASTBuilder::createVoid):
21960 (JSC::ASTBuilder::thisExpr):
21961 (JSC::ASTBuilder::createResolve):
21962 (JSC::ASTBuilder::createObjectLiteral):
21963 (JSC::ASTBuilder::createArray):
21964 (JSC::ASTBuilder::createNumberExpr):
21965 (JSC::ASTBuilder::createString):
21966 (JSC::ASTBuilder::createBoolean):
21967 (JSC::ASTBuilder::createNull):
21968 (JSC::ASTBuilder::createBracketAccess):
21969 (JSC::ASTBuilder::createDotAccess):
21970 (JSC::ASTBuilder::createRegex):
21971 (JSC::ASTBuilder::createNewExpr):
21972 (JSC::ASTBuilder::createConditionalExpr):
21973 (JSC::ASTBuilder::createAssignResolve):
21974 (JSC::ASTBuilder::createFunctionExpr):
21975 (JSC::ASTBuilder::createFunctionBody):
21976 (JSC::ASTBuilder::createGetterOrSetterProperty):
21977 (JSC::ASTBuilder::createArguments):
21978 (JSC::ASTBuilder::createArgumentsList):
21979 (JSC::ASTBuilder::createProperty):
21980 (JSC::ASTBuilder::createPropertyList):
21981 (JSC::ASTBuilder::createElementList):
21982 (JSC::ASTBuilder::createFormalParameterList):
21983 (JSC::ASTBuilder::createClause):
21984 (JSC::ASTBuilder::createClauseList):
21985 (JSC::ASTBuilder::setUsesArguments):
21986 (JSC::ASTBuilder::createFuncDeclStatement):
21987 (JSC::ASTBuilder::createBlockStatement):
21988 (JSC::ASTBuilder::createExprStatement):
21989 (JSC::ASTBuilder::createIfStatement):
21990 (JSC::ASTBuilder::createForLoop):
21991 (JSC::ASTBuilder::createForInLoop):
21992 (JSC::ASTBuilder::createEmptyStatement):
21993 (JSC::ASTBuilder::createVarStatement):
21994 (JSC::ASTBuilder::createReturnStatement):
21995 (JSC::ASTBuilder::createBreakStatement):
21996 (JSC::ASTBuilder::createContinueStatement):
21997 (JSC::ASTBuilder::createTryStatement):
21998 (JSC::ASTBuilder::createSwitchStatement):
21999 (JSC::ASTBuilder::createWhileStatement):
22000 (JSC::ASTBuilder::createDoWhileStatement):
22001 (JSC::ASTBuilder::createLabelStatement):
22002 (JSC::ASTBuilder::createWithStatement):
22003 (JSC::ASTBuilder::createThrowStatement):
22004 (JSC::ASTBuilder::createDebugger):
22005 (JSC::ASTBuilder::createConstStatement):
22006 (JSC::ASTBuilder::appendConstDecl):
22007 (JSC::ASTBuilder::appendStatement):
22008 (JSC::ASTBuilder::addVar):
22009 (JSC::ASTBuilder::combineCommaNodes):
22010 (JSC::ASTBuilder::evalCount):
22011 (JSC::ASTBuilder::appendBinaryExpressionInfo):
22012 (JSC::ASTBuilder::operatorStackPop):
22013 (JSC::ASTBuilder::operatorStackHasHigherPrecedence):
22014 (JSC::ASTBuilder::getFromOperandStack):
22015 (JSC::ASTBuilder::shrinkOperandStackBy):
22016 (JSC::ASTBuilder::appendBinaryOperation):
22017 (JSC::ASTBuilder::operatorStackAppend):
22018 (JSC::ASTBuilder::popOperandStack):
22019 (JSC::ASTBuilder::appendUnaryToken):
22020 (JSC::ASTBuilder::unaryTokenStackLastType):
22021 (JSC::ASTBuilder::unaryTokenStackLastStart):
22022 (JSC::ASTBuilder::unaryTokenStackRemoveLast):
22023 (JSC::ASTBuilder::assignmentStackAppend):
22024 (JSC::ASTBuilder::createAssignment):
22025 (JSC::ASTBuilder::Scope::Scope):
22026 (JSC::ASTBuilder::setExceptionLocation):
22027 (JSC::ASTBuilder::incConstants):
22028 (JSC::ASTBuilder::usesThis):
22029 (JSC::ASTBuilder::usesCatch):
22030 (JSC::ASTBuilder::usesClosures):
22031 (JSC::ASTBuilder::usesArguments):
22032 (JSC::ASTBuilder::usesAssignment):
22033 (JSC::ASTBuilder::usesWith):
22034 (JSC::ASTBuilder::usesEval):
22035 (JSC::ASTBuilder::createNumber):
22036 (JSC::ASTBuilder::makeTypeOfNode):
22037 (JSC::ASTBuilder::makeDeleteNode):
22038 (JSC::ASTBuilder::makeNegateNode):
22039 (JSC::ASTBuilder::makeBitwiseNotNode):
22040 (JSC::ASTBuilder::makeMultNode):
22041 (JSC::ASTBuilder::makeDivNode):
22042 (JSC::ASTBuilder::makeAddNode):
22043 (JSC::ASTBuilder::makeSubNode):
22044 (JSC::ASTBuilder::makeLeftShiftNode):
22045 (JSC::ASTBuilder::makeRightShiftNode):
22046 (JSC::ASTBuilder::makeFunctionCallNode):
22047 (JSC::ASTBuilder::makeBinaryNode):
22048 (JSC::ASTBuilder::makeAssignNode):
22049 (JSC::ASTBuilder::makePrefixNode):
22050 (JSC::ASTBuilder::makePostfixNode):
22051 * parser/JSParser.cpp: Added.
22052 (JSC::JSParser::AllowInOverride::AllowInOverride):
22053 (JSC::JSParser::AllowInOverride::~AllowInOverride):
22054 (JSC::JSParser::token):
22055 (JSC::JSParser::next):
22056 (JSC::JSParser::consume):
22057 (JSC::JSParser::match):
22058 (JSC::JSParser::tokenStart):
22059 (JSC::JSParser::tokenLine):
22060 (JSC::JSParser::tokenEnd):
22062 (JSC::JSParser::autoSemiColon):
22063 (JSC::JSParser::canRecurse):
22064 (JSC::JSParser::lastTokenEnd):
22066 (JSC::JSParser::JSParser):
22067 (JSC::JSParser::parseProgram):
22068 (JSC::JSParser::allowAutomaticSemicolon):
22069 (JSC::JSParser::parseSourceElements):
22070 (JSC::JSParser::parseVarDeclaration):
22071 (JSC::JSParser::parseConstDeclaration):
22072 (JSC::JSParser::parseDoWhileStatement):
22073 (JSC::JSParser::parseWhileStatement):
22074 (JSC::JSParser::parseVarDeclarationList):
22075 (JSC::JSParser::parseConstDeclarationList):
22076 (JSC::JSParser::parseForStatement):
22077 (JSC::JSParser::parseBreakStatement):
22078 (JSC::JSParser::parseContinueStatement):
22079 (JSC::JSParser::parseReturnStatement):
22080 (JSC::JSParser::parseThrowStatement):
22081 (JSC::JSParser::parseWithStatement):
22082 (JSC::JSParser::parseSwitchStatement):
22083 (JSC::JSParser::parseSwitchClauses):
22084 (JSC::JSParser::parseSwitchDefaultClause):
22085 (JSC::JSParser::parseTryStatement):
22086 (JSC::JSParser::parseDebuggerStatement):
22087 (JSC::JSParser::parseBlockStatement):
22088 (JSC::JSParser::parseStatement):
22089 (JSC::JSParser::parseFormalParameters):
22090 (JSC::JSParser::parseFunctionBody):
22091 (JSC::JSParser::parseFunctionInfo):
22092 (JSC::JSParser::parseFunctionDeclaration):
22093 (JSC::JSParser::parseExpressionOrLabelStatement):
22094 (JSC::JSParser::parseExpressionStatement):
22095 (JSC::JSParser::parseIfStatement):
22096 (JSC::JSParser::parseExpression):
22097 (JSC::JSParser::parseAssignmentExpression):
22098 (JSC::JSParser::parseConditionalExpression):
22100 (JSC::JSParser::isBinaryOperator):
22101 (JSC::JSParser::parseBinaryExpression):
22102 (JSC::JSParser::parseProperty):
22103 (JSC::JSParser::parseObjectLiteral):
22104 (JSC::JSParser::parseArrayLiteral):
22105 (JSC::JSParser::parsePrimaryExpression):
22106 (JSC::JSParser::parseArguments):
22107 (JSC::JSParser::parseMemberExpression):
22108 (JSC::JSParser::parseUnaryExpression):
22109 * parser/JSParser.h: Added.
22111 (JSC::JSTokenInfo::JSTokenInfo):
22112 * parser/Lexer.cpp:
22115 (JSC::Lexer::setLastLineNumber):
22116 (JSC::Lexer::lastLineNumber):
22117 * parser/NodeConstructors.h:
22119 * parser/Parser.cpp:
22120 (JSC::Parser::parse):
22121 * parser/SyntaxChecker.h: Added.
22122 (JSC::SyntaxChecker::SyntaxChecker):
22123 (JSC::SyntaxChecker::createSourceElements):
22124 (JSC::SyntaxChecker::makeFunctionCallNode):
22125 (JSC::SyntaxChecker::appendToComma):
22126 (JSC::SyntaxChecker::createCommaExpr):
22127 (JSC::SyntaxChecker::makeAssignNode):
22128 (JSC::SyntaxChecker::makePrefixNode):
22129 (JSC::SyntaxChecker::makePostfixNode):
22130 (JSC::SyntaxChecker::makeTypeOfNode):
22131 (JSC::SyntaxChecker::makeDeleteNode):
22132 (JSC::SyntaxChecker::makeNegateNode):
22133 (JSC::SyntaxChecker::makeBitwiseNotNode):
22134 (JSC::SyntaxChecker::createLogicalNot):
22135 (JSC::SyntaxChecker::createUnaryPlus):
22136 (JSC::SyntaxChecker::createVoid):
22137 (JSC::SyntaxChecker::thisExpr):
22138 (JSC::SyntaxChecker::createResolve):
22139 (JSC::SyntaxChecker::createObjectLiteral):
22140 (JSC::SyntaxChecker::createArray):
22141 (JSC::SyntaxChecker::createNumberExpr):
22142 (JSC::SyntaxChecker::createString):
22143 (JSC::SyntaxChecker::createBoolean):
22144 (JSC::SyntaxChecker::createNull):
22145 (JSC::SyntaxChecker::createBracketAccess):
22146 (JSC::SyntaxChecker::createDotAccess):
22147 (JSC::SyntaxChecker::createRegex):
22148 (JSC::SyntaxChecker::createNewExpr):
22149 (JSC::SyntaxChecker::createConditionalExpr):
22150 (JSC::SyntaxChecker::createAssignResolve):
22151 (JSC::SyntaxChecker::createFunctionExpr):
22152 (JSC::SyntaxChecker::createFunctionBody):
22153 (JSC::SyntaxChecker::createArguments):
22154 (JSC::SyntaxChecker::createArgumentsList):
22155 (JSC::SyntaxChecker::createProperty):
22156 (JSC::SyntaxChecker::createPropertyList):
22157 (JSC::SyntaxChecker::createElementList):
22158 (JSC::SyntaxChecker::createFormalParameterList):
22159 (JSC::SyntaxChecker::createClause):
22160 (JSC::SyntaxChecker::createClauseList):
22161 (JSC::SyntaxChecker::setUsesArguments):
22162 (JSC::SyntaxChecker::createFuncDeclStatement):
22163 (JSC::SyntaxChecker::createBlockStatement):
22164 (JSC::SyntaxChecker::createExprStatement):
22165 (JSC::SyntaxChecker::createIfStatement):
22166 (JSC::SyntaxChecker::createForLoop):
22167 (JSC::SyntaxChecker::createForInLoop):
22168 (JSC::SyntaxChecker::createEmptyStatement):
22169 (JSC::SyntaxChecker::createVarStatement):
22170 (JSC::SyntaxChecker::createReturnStatement):
22171 (JSC::SyntaxChecker::createBreakStatement):
22172 (JSC::SyntaxChecker::createContinueStatement):
22173 (JSC::SyntaxChecker::createTryStatement):
22174 (JSC::SyntaxChecker::createSwitchStatement):
22175 (JSC::SyntaxChecker::createWhileStatement):
22176 (JSC::SyntaxChecker::createWithStatement):
22177 (JSC::SyntaxChecker::createDoWhileStatement):
22178 (JSC::SyntaxChecker::createLabelStatement):
22179 (JSC::SyntaxChecker::createThrowStatement):
22180 (JSC::SyntaxChecker::createDebugger):
22181 (JSC::SyntaxChecker::createConstStatement):
22182 (JSC::SyntaxChecker::appendConstDecl):
22183 (JSC::SyntaxChecker::createGetterOrSetterProperty):
22184 (JSC::SyntaxChecker::appendStatement):
22185 (JSC::SyntaxChecker::addVar):
22186 (JSC::SyntaxChecker::combineCommaNodes):
22187 (JSC::SyntaxChecker::evalCount):
22188 (JSC::SyntaxChecker::appendBinaryExpressionInfo):
22189 (JSC::SyntaxChecker::operatorStackPop):
22190 * runtime/JSGlobalData.h:
22192 * wtf/ThreadSpecific.h:
22195 2010-06-23 Jedrzej Nowacki <jedrzej.nowacki@nokia.com>
22197 Reviewed by Simon Hausmann.
22199 Optimization of the QScriptValuePrivate.
22201 Patch change only internals of the QScriptValuePrivate.
22202 Most of the QScriptValuePrivate's attributes were moved
22205 [Qt] Optimization of the QScriptVAluePrivate.
22206 https://bugs.webkit.org/show_bug.cgi?id=40415
22208 * qt/api/qscriptengine_p.cpp:
22209 (QScriptEnginePrivate::globalObject):
22210 * qt/api/qscriptvalue_p.h:
22211 (QScriptValuePrivate::):
22212 (QScriptValuePrivate::~QScriptValuePrivate):
22213 (QScriptValuePrivate::QScriptValuePrivate):
22214 (QScriptValuePrivate::toString):
22215 (QScriptValuePrivate::toNumber):
22216 (QScriptValuePrivate::toBool):
22217 (QScriptValuePrivate::toObject):
22218 (QScriptValuePrivate::equals):
22219 (QScriptValuePrivate::strictlyEquals):
22220 (QScriptValuePrivate::assignEngine):
22221 (QScriptValuePrivate::operator JSValueRef):
22222 (QScriptValuePrivate::operator JSObjectRef):
22223 (QScriptValuePrivate::refinedJSValue):
22225 2010-06-23 Kwang Yul Seo <skyul@company100.net>
22227 Reviewed by Oliver Hunt.
22229 [GTK] Implement ThreadSpecific with glib
22230 https://bugs.webkit.org/show_bug.cgi?id=39829
22232 Implement ThreadSpecific with glib's GStaticPrivate.
22233 This patch makes it possible to build GTK port without pthread.
22235 * wtf/ThreadSpecific.h:
22236 (WTF::::ThreadSpecific):
22237 (WTF::::~ThreadSpecific):
22242 2010-06-23 Leandro Pereira <leandro@profusion.mobi>
22244 Unreviewed build fix.
22246 * CMakeLists.txt: Add runtime/RegExpCache.cpp.
22248 2010-06-22 Renata Hodovan <hodovan@inf.u-szeged.hu>
22250 Reviewed by Geoffrey Garen.
22252 Adding regular expression caching to JavaScriptCore
22253 https://bugs.webkit.org/show_bug.cgi?id=38142
22255 The cache is based on Round Robin eviction policy, and
22256 can cache at most 256 character long regular expressions,
22257 and at most 256 of them. These values can be changed at compile time.
22260 * JavaScriptCore.gypi:
22261 * JavaScriptCore.pro:
22262 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
22263 * JavaScriptCore.xcodeproj/project.pbxproj:
22264 * bytecompiler/NodesCodegen.cpp:
22265 (JSC::RegExpNode::emitBytecode):
22266 * runtime/JSGlobalData.cpp:
22267 (JSC::JSGlobalData::JSGlobalData):
22268 (JSC::JSGlobalData::~JSGlobalData):
22269 * runtime/JSGlobalData.h:
22270 (JSC::JSGlobalData::regExpCache):
22271 * runtime/RegExpCache.cpp: Added.
22272 (JSC::RegExpCache::lookupOrCreate):
22273 (JSC::RegExpCache::create):
22274 (JSC::RegExpCache::RegExpCache):
22275 * runtime/RegExpCache.h: Added.
22276 * runtime/RegExpConstructor.cpp:
22277 (JSC::constructRegExp):
22278 * runtime/RegExpKey.h: Added.
22279 (JSC::RegExpKey::RegExpKey):
22280 (JSC::RegExpKey::getFlagsValue):
22283 * runtime/RegExpPrototype.cpp:
22284 (JSC::regExpProtoFuncCompile):
22285 * runtime/StringPrototype.cpp:
22286 (JSC::stringProtoFuncMatch):
22287 (JSC::stringProtoFuncSearch):
22289 2010-06-22 Gabor Loki <loki@webkit.org>
22291 Reviewed by Geoffrey Garen.
22293 Add native call support for ARM and Thumb-2 JIT.
22294 https://bugs.webkit.org/show_bug.cgi?id=40231
22296 * jit/JITOpcodes.cpp:
22297 (JSC::JIT::privateCompileCTINativeCall):
22298 * jit/JITOpcodes32_64.cpp:
22299 (JSC::JIT::privateCompileCTINativeCall):
22302 2010-06-21 Oliver Hunt <oliver@apple.com>
22304 Reviewed by Geoffrey Garen.
22306 Make JSC more resilient in the face of parse failures
22307 https://bugs.webkit.org/show_bug.cgi?id=40951
22309 A number of recent bugs have occurred due to issues like miscounting
22310 BOMs, etc which lead to interesting crashes later on. Adding this
22311 logic hardens JSC in the face of these errors, and has no impact on
22312 performance (32bit jit actually gets 0.7% faster but I put that down
22315 * bytecode/CodeBlock.cpp:
22316 (JSC::CodeBlock::reparseForExceptionInfoIfNecessary):
22317 (JSC::CodeBlock::lineNumberForBytecodeOffset):
22318 (JSC::CodeBlock::expressionRangeForBytecodeOffset):
22319 (JSC::CodeBlock::getByIdExceptionInfoForBytecodeOffset):
22320 * bytecode/CodeBlock.h:
22321 (JSC::CodeBlock::bytecodeOffset):
22322 * interpreter/Interpreter.cpp:
22323 (JSC::Interpreter::execute):
22324 (JSC::Interpreter::executeCall):
22325 (JSC::Interpreter::executeConstruct):
22326 (JSC::Interpreter::prepareForRepeatCall):
22327 (JSC::Interpreter::privateExecute):
22328 * jit/JITOpcodes.cpp:
22329 (JSC::JIT::privateCompileCTIMachineTrampolines):
22330 * jit/JITOpcodes32_64.cpp:
22331 (JSC::JIT::privateCompileCTIMachineTrampolines):
22332 * jit/JITStubs.cpp:
22333 (JSC::DEFINE_STUB_FUNCTION):
22334 * runtime/ArrayPrototype.cpp:
22335 (JSC::isNumericCompareFunction):
22336 * runtime/Executable.cpp:
22337 (JSC::FunctionExecutable::compileForCall):
22338 (JSC::FunctionExecutable::compileForConstruct):
22339 (JSC::FunctionExecutable::generateJITCodeForCall):
22340 (JSC::FunctionExecutable::generateJITCodeForConstruct):
22341 (JSC::FunctionExecutable::reparseExceptionInfo):
22342 (JSC::EvalExecutable::reparseExceptionInfo):
22343 * runtime/Executable.h:
22344 (JSC::FunctionExecutable::bytecodeForCall):
22345 (JSC::FunctionExecutable::bytecodeForConstruct):
22346 * runtime/JSGlobalData.cpp:
22347 (JSC::JSGlobalData::numericCompareFunction):
22349 2010-06-21 John Sullivan <sullivan@apple.com>
22351 Reviewed by Adam Roben.
22353 RetainPtr can't be used in HashMaps or HashSets
22354 <https://bugs.webkit.org/show_bug.cgi?id=40938>
22356 Added hashing knowledge similar to that in COMPtr.h.
22359 (WTF::RetainPtr::RetainPtr):
22360 New function, copied from COMPtr.h but for the type change.
22361 (WTF::RetainPtr::isHashTableDeletedValue):
22363 (WTF::RetainPtr::hashTableDeletedValue):
22365 Added template code for HashTraits and PtrHash copied from COMPtr.h but for the type change.
22366 The only difference is that constructDeletedValue() matches the RefPtr implementation (in HashTraits.h)
22367 rather than the COMPtr implementation.
22369 2010-06-19 Oliver Hunt <oliver@apple.com>
22371 Reviewed by Geoffrey Garen.
22373 Need to ensure that we grow the RegisterFile when creating a callframe for host code
22374 https://bugs.webkit.org/show_bug.cgi?id=40858
22375 <rdar://problem/8108986>
22377 In the past the use of the callframe in hostcode was much more
22378 limited. Now that we expect the callframe to always be valid
22379 we need to grow the RegisterFile so that this is actually the
22380 case. In this particular case the problem was failing to grow
22381 the registerfile could lead to a callframe that extended beyond
22382 RegisterFiler::end(), so vm re-entry would clobber the callframe
22383 other scenarios could also lead to badness.
22385 I was unable to construct a simple testcase to trigger badness,
22386 and any such testcase would be so dependent on exact vm stack
22387 layout that it would be unlikely to work as a testcase following
22388 any callframe or register allocation changes anyway.
22390 Thankfully the new assertion I added should help to catch these
22391 failures in future, and triggers on a couple of tests currently.
22393 * interpreter/CallFrame.cpp:
22394 (JSC::CallFrame::registerFile):
22395 * interpreter/CallFrame.h:
22396 (JSC::ExecState::init):
22397 * interpreter/Interpreter.cpp:
22398 (JSC::Interpreter::privateExecute):
22399 * jit/JITStubs.cpp:
22400 (JSC::DEFINE_STUB_FUNCTION):
22402 2010-06-21 Satish Sampath <satish@chromium.org>
22404 Reviewed by Steve Block.
22406 Speech Input Patch 0: Added compilation argument to conditionally compile pending patches.
22407 https://bugs.webkit.org/show_bug.cgi?id=40878
22409 * Configurations/FeatureDefines.xcconfig:
22411 2010-06-21 Kwang Yul Seo <skyul@company100.net>
22413 Reviewed by Kent Tamura.
22415 [BREWMP] Use global new/delete operator overloading with USE_SYSTEM_MALLOC=1
22416 https://bugs.webkit.org/show_bug.cgi?id=40653
22418 Currently, other ports do not use global new/delete operator overloading
22419 when USE_SYSTEM_MALLOC=1. Brew MP uses system malloc, but it needs to enable
22420 "global fastMalloc new" because the default new/delete causes crash on device.
22421 We need to replace them with Brew MP's MALLOC/FREE.
22423 * wtf/FastMalloc.h:
22425 2010-06-18 Jocelyn Turcotte <jocelyn.turcotte@nokia.com>
22427 Reviewed by Simon Hausmann.
22429 [Qt] Work around a build problem with libjscore on Symbian.
22430 https://bugs.webkit.org/show_bug.cgi?id=40840
22432 Sbsv2 sometimes have problems with debug/release configuration
22433 determination causing QtWebKit in release to try linking with the debug
22434 JavaScriptCore static library. This patch limit the jscore/jscored
22435 r58306 fix necessary for mac builds only to the mac platform to prevent the
22436 different name problem.
22438 The real fix would be to fix qmake or the toolchain, this patch might
22441 * JavaScriptCore.pri:
22443 2010-06-21 Patrick Gansterer <paroga@paroga.com>
22445 Reviewed by Kent Tamura.
22447 Buildfix after r61338.
22448 https://bugs.webkit.org/show_bug.cgi?id=40888
22450 roundUpAllocationSize is needed in RegisterFile.h.
22452 * jit/ExecutableAllocator.h:
22454 2010-06-19 Kwang Yul Seo <skyul@company100.net>
22456 Reviewed by Darin Adler.
22458 Include <string.h> in StringExtras.h
22459 https://bugs.webkit.org/show_bug.cgi?id=40808
22461 Without string.h, RVCT 2.2 can't compile StringExtras.h.
22462 It can't find strlen and strncmp.
22464 * wtf/StringExtras.h:
22466 2010-06-19 Thiago Macieira <thiago.macieira@nokia.com>
22468 Reviewed by Kenneth Rohde Christiansen.
22470 Don't use __attribute__((may_alias)) with the Intel compiler,
22471 as it doesn't understand it.
22475 2010-06-19 Thiago Macieira <thiago.macieira@nokia.com>
22477 Reviewed by Kenneth Rohde Christiansen.
22479 Fix compilation with the Intel C++ compiler (11.1.072).
22481 Like RVCT, label pointers must be void*, not const void*.
22483 * bytecode/Opcode.h:
22485 2010-06-19 Thiago Macieira <thiago.macieira@nokia.com>
22487 Reviewed by Kenneth Rohde Christiansen.
22489 Add the WTF_COMPILER_INTEL for when the Intel compiler is used
22490 for building. Usually, the Intel compiler masquerades as
22491 another compiler in the system and gets away with it, but some
22492 times specific fixes are required (such as when using language
22497 2010-06-18 Oliver Hunt <oliver@apple.com>
22499 Reviewed by Geoffrey Garen.
22501 Incorrect handling of multiple BOMs scattered through a file.
22502 https://bugs.webkit.org/show_bug.cgi?id=40865
22504 When determining the offset of open and close braces in a source
22505 with BOMs we were finishing our count early as we failed to account
22506 for BOMs prior to the open/close brace positions effecting those
22509 * parser/Lexer.cpp:
22510 (JSC::Lexer::sourceCode):
22512 2010-06-17 Oliver Hunt <oliver@apple.com>
22514 Reviewed by Sam Weinig.
22516 Don't throw away exception information for functions that use exceptions
22517 https://bugs.webkit.org/show_bug.cgi?id=40786
22519 Simple patch to stop JSC from throwing away the exception information
22520 of a function that uses "exceptiony" features like try and throw. This
22521 is a speed up for catching expressions but it's difficult to quantify as
22522 the old cost of reparsing is amortised over all exceptions caught in the
22525 * bytecode/CodeBlock.cpp:
22526 (JSC::CodeBlock::reparseForExceptionInfoIfNecessary):
22527 * bytecompiler/BytecodeGenerator.cpp:
22528 (JSC::BytecodeGenerator::generate):
22529 (JSC::BytecodeGenerator::emitCatch):
22530 * bytecompiler/BytecodeGenerator.h:
22531 (JSC::BytecodeGenerator::emitThrow):
22533 2010-06-18 Anders Carlsson <andersca@apple.com>
22535 Reviewed by Sam Weinig.
22537 Add PlatformStrategies and PluginStrategy classes.
22538 https://bugs.webkit.org/show_bug.cgi?id=40850
22542 2010-06-18 Leandro Pereira <leandro@profusion.mobi>
22544 [EFL] Unreviewed build fix.
22546 * wtf/CMakeLists.txt: Add MD5.cpp.
22548 2010-06-17 Shu Chang <chang.shu@nokia.com>
22550 Reviewed by Kenneth Rohde Christiansen.
22552 [Qt] Fix the link error on symbian with ENABLE_JIT=0.
22553 1. Add "#if ENABLE(JIT)" in the header file;
22554 2. Put feature enable/disable logic to a common.pri so
22555 that both JavaScriptCore.pri and WebCore.pri can share.
22557 https://bugs.webkit.org/show_bug.cgi?id=40780
22559 * JavaScriptCore.pri:
22560 * jit/ExecutableAllocator.h:
22562 2010-06-17 Darin Adler <darin@apple.com>
22564 Reviewed by Sam Weinig.
22566 Use adoptRef and create functions in more code paths
22567 https://bugs.webkit.org/show_bug.cgi?id=40760
22569 * API/JSClassRef.h: Removed unneeded include of RefCounted.h.
22570 * API/JSWeakObjectMapRefPrivate.cpp: Ditto.
22572 * bytecode/CodeBlock.h:
22573 (JSC::FunctionCodeBlock::FunctionCodeBlock): Use the
22574 SharedSymbolTable::create function instead of calling new directly.
22576 * runtime/SymbolTable.h: Added a create function to the SharedSymbolTable
22577 class and made the constructor private.
22579 2010-06-17 Mark Brand <mabrand@mabrand.nl>
22581 Reviewed by Simon Hausmann.
22583 [Qt] use "win32-g++*" scope to match all MinGW makespecs
22585 The scope "win32-g++" comes from the name of the makespec. However, it
22586 is frequently used to check for MinGW. This works fine as long as
22587 win32-g++ is the only makespec for MinGW. Now we need the wildcard
22588 to cover "win32-g++-cross" as well.
22590 * JavaScriptCore.pro:
22592 2010-06-16 Darin Adler <darin@apple.com>
22594 Reviewed by David Levin.
22596 Deploy adoptRef in more places, including all HTML and MathML elements
22597 https://bugs.webkit.org/show_bug.cgi?id=39941
22599 * wtf/ThreadSafeShared.h: Made the constructor protected and removed the
22600 unneeded support for initial reference counts other than 1.
22602 2010-06-16 Peter Varga <pvarga@inf.u-szeged.hu>
22604 Reviewed by Geoffrey Garen.
22606 Store matchBegin directly in the array of output instead of the stack.
22607 https://bugs.webkit.org/show_bug.cgi?id=38988
22609 * yarr/RegexJIT.cpp:
22610 (JSC::Yarr::RegexGenerator::generateDisjunction):
22611 (JSC::Yarr::RegexGenerator::generate):
22613 2010-06-15 Anders Carlsson <andersca@apple.com>
22615 Reviewed by Sam Weinig.
22617 Make JavaScriptCore build with clang++.
22619 * jit/JITInlineMethods.h:
22620 (JSC::JIT::emitPutVirtualRegister):
22621 Explicitly cast to an int.
22623 * yarr/RegexCompiler.cpp:
22624 (JSC::Yarr::compileRegex):
22625 Return 0 instead of false.
22627 2010-06-15 Adam Roben <aroben@apple.com>
22629 Make WebCore's and JavaScriptCore's DerivedSources available for debugging in production builds
22631 Fixes <http://webkit.org/b/40626> <rdar://problem/8094205>.
22633 Reviewed by Sam Weinig.
22635 * JavaScriptCore.vcproj/JavaScriptCore.make: Copy the contents of
22636 JavaScriptCore's DerivedSources directory to
22637 AppleInternal/Sources/JavaScriptCore.
22639 2010-06-15 Gabor Loki <loki@webkit.org>
22641 Rubber-stamped by Eric Seidel.
22643 Fix invalid access to non-static data member warning in JITPropertyAccess32_64 on ARM
22644 https://bugs.webkit.org/show_bug.cgi?id=40423
22646 Using OBJECT_OFFSETOF macro instead of objectof to bypass access to
22647 non-static data member warning.
22649 * jit/JITPropertyAccess32_64.cpp:
22650 (JSC::JIT::privateCompilePutByIdTransition):
22652 2010-06-11 Eric Seidel <eric@webkit.org>
22654 Reviewed by Adam Barth.
22656 Rename the rest of the *Tokenizer classes to *DocumentParser
22657 https://bugs.webkit.org/show_bug.cgi?id=40507
22660 - fixed a comment to match new names.
22662 2010-06-11 Jedrzej Nowacki <jedrzej.nowacki@nokia.com>
22664 Reviewed by Simon Hausmann.
22666 [Qt] Explicit conversions from QtScript types to JSC opaque types were removed.
22667 https://bugs.webkit.org/show_bug.cgi?id=40412
22669 Conversion between a JSC C types and a QtScript private types, takes
22670 main part of the source code. In most cases a mapping between the types
22671 is one to one. New cast operators were added to simplify the code.
22673 The QScriptValuePrivate could be casted to the JSValueRef and the JSObjectRef.
22674 The QScriptEnginePrivate could be casted to the JSGlobalContext.
22675 The QScriptProgramPrivate could be casted to the JSStringRef.
22677 * qt/api/qscriptengine_p.cpp:
22678 (QScriptEnginePrivate::evaluate):
22679 (QScriptEnginePrivate::newObject):
22680 (QScriptEnginePrivate::globalObject):
22681 * qt/api/qscriptengine_p.h:
22682 (QScriptEnginePrivate::operator JSGlobalContextRef):
22683 * qt/api/qscriptprogram_p.h:
22684 (QScriptProgramPrivate::operator JSStringRef):
22685 * qt/api/qscriptsyntaxcheckresult.cpp:
22686 (QScriptSyntaxCheckResultPrivate::~QScriptSyntaxCheckResultPrivate):
22687 (QScriptSyntaxCheckResultPrivate::errorMessage):
22688 (QScriptSyntaxCheckResultPrivate::errorLineNumber):
22689 * qt/api/qscriptvalue_p.h:
22690 (QScriptValuePrivate::~QScriptValuePrivate):
22691 (QScriptValuePrivate::QScriptValuePrivate):
22692 (QScriptValuePrivate::isBool):
22693 (QScriptValuePrivate::isNumber):
22694 (QScriptValuePrivate::isNull):
22695 (QScriptValuePrivate::isString):
22696 (QScriptValuePrivate::isUndefined):
22697 (QScriptValuePrivate::isFunction):
22698 (QScriptValuePrivate::toString):
22699 (QScriptValuePrivate::toNumber):
22700 (QScriptValuePrivate::toBool):
22701 (QScriptValuePrivate::toObject):
22702 (QScriptValuePrivate::equals):
22703 (QScriptValuePrivate::strictlyEquals):
22704 (QScriptValuePrivate::instanceOf):
22705 (QScriptValuePrivate::call):
22706 (QScriptValuePrivate::operator JSValueRef):
22707 (QScriptValuePrivate::operator JSObjectRef):
22708 (QScriptValuePrivate::setValue):
22709 (QScriptValuePrivate::inherits):
22710 (QScriptValuePrivate::refinedJSValue):
22712 2010-05-31 Jocelyn Turcotte <jocelyn.turcotte@nokia.com>
22714 Reviewed by Simon Hausmann.
22716 [Qt] Implement the simple text code path.
22717 https://bugs.webkit.org/show_bug.cgi?id=40077
22719 Remove the FONT_FAST_PATH macro and use the Qt's
22720 fast text implementation instead of the one of WebKit.
22722 The Qt::TextBypassShaping flag is used to tell Qt to
22723 only use the glyph advances.
22725 Qt 4.7 is needed to get this flag thus the complex path is always
22726 used if QtWebKit is compiled against an earlier version.
22728 Contrary to the WebKit's implementation, the complex code path
22729 is taken if the text is RightToLeft, justified or is formatted
22730 with non-zero letter or word spacing.
22734 2010-06-11 Luiz Agostini <luiz.agostini@openbossa.org>
22736 Reviewed by Kenneth Rohde Christiansen.
22738 add codePointCompare to JavaScriptCore.exp
22739 https://bugs.webkit.org/show_bug.cgi?id=40426
22741 * JavaScriptCore.exp:
22743 2010-06-10 Oliver Hunt <oliver@apple.com>
22745 Reviewed by Maciej Stachowiak.
22747 Math Javascript Bug on Safari 5 (webkit 533.16) under "32bit" mode
22748 https://bugs.webkit.org/show_bug.cgi?id=40367
22750 If we're in the slow case of right shift we must write the type tag as
22751 the only reason we hit this code path is because we know we're working
22752 with a double. eg. we are guaranteed that the tag cannot be reused.
22754 * jit/JITArithmetic32_64.cpp:
22755 (JSC::JIT::emitRightShiftSlowCase):
22757 2010-06-10 Kwang Yul Seo <skyul@company100.net>
22759 Reviewed by Eric Seidel.
22761 Remove weakRandomNumber
22762 https://bugs.webkit.org/show_bug.cgi?id=40291
22764 weakRandomNumber is used nowhere. Currently, WeakRandom is used instead.
22766 * wtf/RandomNumber.cpp:
22767 * wtf/RandomNumber.h:
22769 2010-06-09 Alexey Proskuryakov <ap@apple.com>
22771 Reviewed by Brady Eidson.
22773 Export StringImpl::ascii(). It might be not very useful, but it's a public function.
22775 * JavaScriptCore.exp:
22777 2010-06-09 Leandro Pereira <leandro@profusion.mobi>
22779 Reviewed by Adam Treat.
22781 [EFL] Allow building core libraries as shared objects to speed up
22782 linking time on machines with small amounts of memory.
22783 http://webkit.org/b/39899
22785 * CMakeLists.txt: If building with shared core, install the lib.
22786 * jsc/CMakeListsEfl.txt: Needs Glib and Ecore to link dynamically.
22787 * wtf/CMakeLists.txt: If building with shared core, install the lib.
22789 2010-06-09 Gabor Loki <loki@webkit.org>
22791 Reviewed by David Levin.
22793 Remove some unused variable warnings from JITOpcodes
22794 https://bugs.webkit.org/show_bug.cgi?id=40298
22796 * jit/JITOpcodes.cpp:
22797 (JSC::JIT::privateCompileCTINativeCall):
22798 * jit/JITOpcodes32_64.cpp:
22799 (JSC::JIT::privateCompileCTINativeCall):
22801 2010-05-18 Yuzo Fujishima <yuzo@google.com>
22803 Reviewed by Shinichiro Hamaji.
22805 Fix for Bug 34529 - [CSSOM] issues with cssText and selectorText
22806 Add U16_LENGTH that is needed to implement CSS character serialization.
22807 https://bugs.webkit.org/show_bug.cgi?id=34529
22809 * wtf/unicode/qt4/UnicodeQt4.h:
22810 * wtf/unicode/wince/UnicodeWince.h:
22812 2010-06-08 Sheriff Bot <webkit.review.bot@gmail.com>
22814 Unreviewed, rolling out r60830.
22815 http://trac.webkit.org/changeset/60830
22816 https://bugs.webkit.org/show_bug.cgi?id=40305
22818 Broke the Windows build (Requested by abarth on #webkit).
22820 * JavaScriptCore.vcproj/WTF/WTF.vcproj:
22821 * wtf/OwnPtrCommon.h:
22822 * wtf/brew/OwnPtrBrew.h: Removed.
22823 * wtf/win/OwnPtrWin.h: Removed.
22825 2010-06-08 MORITA Hajime <morrita@google.com>
22827 Unreviewed. An attempt to fix test break.
22829 * Configurations/FeatureDefines.xcconfig:
22831 2010-06-08 Kwang Yul Seo <skyul@company100.net>
22833 Reviewed by Adam Barth.
22835 Change OwnPtrCommon to include platform-specific headers
22836 https://bugs.webkit.org/show_bug.cgi?id=40279
22838 Adding new type to OwnPtrCommon needlessly causes all ports to do full rebuilds.
22839 Change OwnPtrCommon to include platform-specific headers to avoid all ports rebuilds.
22841 * JavaScriptCore.vcproj/WTF/WTF.vcproj:
22842 * wtf/OwnPtrCommon.h:
22843 * wtf/brew/OwnPtrBrew.h: Added.
22844 * wtf/win/OwnPtrWin.h: Added.
22846 2010-06-07 MORITA Hajime <morrita@google.com>
22848 Reviewed by Kent Tamura.
22850 https://bugs.webkit.org/show_bug.cgi?id=40219
22851 [Mac] ENABLE_METER_TAG should be enabled
22853 Added ENABLE_METER_TAG.
22855 * Configurations/FeatureDefines.xcconfig:
22857 2010-06-07 Kwang Yul Seo <skyul@company100.net>
22859 Reviewed by Eric Seidel.
22861 [BREWMP] Add more types to OwnPtr
22862 https://bugs.webkit.org/show_bug.cgi?id=39667
22864 Add ISSL and ISocket to the list of OwnPtr-ed type.
22866 * wtf/OwnPtrCommon.h:
22867 * wtf/brew/OwnPtrBrew.cpp:
22868 (WTF::deleteOwnedPtr):
22870 2010-06-07 Benjamin Poulain <benjamin.poulain@nokia.com>
22872 Reviewed by Simon Hausmann.
22874 [Qt] Crash when compiling on Snow Leopard and running on Leopard
22875 https://bugs.webkit.org/show_bug.cgi?id=31403
22877 Disable the use of pthread_setname_np and other symbols
22878 when targetting Leopard.
22880 Use the defines TARGETING_XX instead of BUILDING_ON_XX
22881 for features that cannot be used before Snow Leopard.
22885 2010-06-07 Gabor Loki <loki@webkit.org>
22887 Reviewed by NOBODY (JSVALUE32_64 build fix).
22889 * jit/JITOpcodes32_64.cpp:
22890 (JSC::JIT::privateCompileCTINativeCall):
22892 2010-06-06 Gavin Barraclough <barraclough@apple.com>
22894 Reviewed by NOBODY (windows build fix pt 2).
22896 * JavaScriptCore.exp:
22897 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
22899 2010-06-06 Gavin Barraclough <barraclough@apple.com>
22901 Reviewed by NOBODY (windows build fix pt 1).
22903 * JavaScriptCore.exp:
22904 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
22906 2010-06-06 Gavin Barraclough <barraclough@apple.com>
22908 Reviewed by Sam Weinig.
22910 Bug 40214 - Clean up error construction / throwing in JSC.
22912 The one egregious insanity here is that creating an error requires
22913 a VM-entry-esqe-host call (the string argument is wrapped as a JS
22914 object & pushed on the RegisterFile, then unwrapped back to a
22915 UString). Changing this also means you only require a global
22916 object, not an ExecState, to create an error.
22918 The methods to create error objects are also parameterized
22919 requiring a switch on the type, which can be made cleaner and
22920 faster by moving to a separate method per error type. Code to add
22921 divot information to error had been duplicated, and is coalesced
22922 back into a single function.
22924 Convenience methods added to create & throw type & syntax error
22925 with a default error message, since this is a common case.
22927 Also, errors are currently thrown either using
22928 "throwError(exec, error)" or "exec->setException(error)" - unify
22929 on the former, since this is more commonly used. Add
22930 "throwVMError(exec, error)" equivalents, as a convenience for
22931 cases where the result was being wrapped in "JSValue::encode(...)".
22933 * API/JSCallbackConstructor.cpp:
22934 (JSC::constructJSCallback):
22935 * API/JSCallbackFunction.cpp:
22936 (JSC::JSCallbackFunction::call):
22937 * API/JSCallbackObjectFunctions.h:
22938 (JSC::::getOwnPropertySlot):
22940 (JSC::::deleteProperty):
22941 (JSC::::construct):
22942 (JSC::::hasInstance):
22946 (JSC::::staticValueGetter):
22947 (JSC::::staticFunctionGetter):
22948 (JSC::::callbackGetter):
22949 * API/JSObjectRef.cpp:
22950 (JSObjectMakeError):
22951 * JavaScriptCore.exp:
22952 * bytecompiler/BytecodeGenerator.cpp:
22953 (JSC::BytecodeGenerator::emitNewError):
22954 (JSC::BytecodeGenerator::emitThrowExpressionTooDeepException):
22955 * bytecompiler/BytecodeGenerator.h:
22956 * bytecompiler/NodesCodegen.cpp:
22957 (JSC::ThrowableExpressionData::emitThrowError):
22958 (JSC::RegExpNode::emitBytecode):
22959 (JSC::PostfixErrorNode::emitBytecode):
22960 (JSC::PrefixErrorNode::emitBytecode):
22961 (JSC::AssignErrorNode::emitBytecode):
22962 (JSC::ForInNode::emitBytecode):
22963 (JSC::ContinueNode::emitBytecode):
22964 (JSC::BreakNode::emitBytecode):
22965 (JSC::ReturnNode::emitBytecode):
22966 (JSC::LabelNode::emitBytecode):
22967 * interpreter/CallFrame.h:
22968 * interpreter/Interpreter.cpp:
22969 (JSC::Interpreter::throwException):
22970 (JSC::Interpreter::privateExecute):
22971 * jit/JITStubs.cpp:
22972 (JSC::DEFINE_STUB_FUNCTION):
22976 (functionCheckSyntax):
22978 * runtime/ArrayConstructor.cpp:
22979 (JSC::constructArrayWithSizeQuirk):
22980 * runtime/ArrayPrototype.cpp:
22981 (JSC::arrayProtoFuncToString):
22982 (JSC::arrayProtoFuncToLocaleString):
22983 (JSC::arrayProtoFuncJoin):
22984 (JSC::arrayProtoFuncFilter):
22985 (JSC::arrayProtoFuncMap):
22986 (JSC::arrayProtoFuncEvery):
22987 (JSC::arrayProtoFuncForEach):
22988 (JSC::arrayProtoFuncSome):
22989 (JSC::arrayProtoFuncReduce):
22990 (JSC::arrayProtoFuncReduceRight):
22991 * runtime/BooleanPrototype.cpp:
22992 (JSC::booleanProtoFuncToString):
22993 (JSC::booleanProtoFuncValueOf):
22994 * runtime/DatePrototype.cpp:
22995 (JSC::dateProtoFuncToString):
22996 (JSC::dateProtoFuncToUTCString):
22997 (JSC::dateProtoFuncToISOString):
22998 (JSC::dateProtoFuncToDateString):
22999 (JSC::dateProtoFuncToTimeString):
23000 (JSC::dateProtoFuncToLocaleString):
23001 (JSC::dateProtoFuncToLocaleDateString):
23002 (JSC::dateProtoFuncToLocaleTimeString):
23003 (JSC::dateProtoFuncGetTime):
23004 (JSC::dateProtoFuncGetFullYear):
23005 (JSC::dateProtoFuncGetUTCFullYear):
23006 (JSC::dateProtoFuncToGMTString):
23007 (JSC::dateProtoFuncGetMonth):
23008 (JSC::dateProtoFuncGetUTCMonth):
23009 (JSC::dateProtoFuncGetDate):
23010 (JSC::dateProtoFuncGetUTCDate):
23011 (JSC::dateProtoFuncGetDay):
23012 (JSC::dateProtoFuncGetUTCDay):
23013 (JSC::dateProtoFuncGetHours):
23014 (JSC::dateProtoFuncGetUTCHours):
23015 (JSC::dateProtoFuncGetMinutes):
23016 (JSC::dateProtoFuncGetUTCMinutes):
23017 (JSC::dateProtoFuncGetSeconds):
23018 (JSC::dateProtoFuncGetUTCSeconds):
23019 (JSC::dateProtoFuncGetMilliSeconds):
23020 (JSC::dateProtoFuncGetUTCMilliseconds):
23021 (JSC::dateProtoFuncGetTimezoneOffset):
23022 (JSC::dateProtoFuncSetTime):
23023 (JSC::setNewValueFromTimeArgs):
23024 (JSC::setNewValueFromDateArgs):
23025 (JSC::dateProtoFuncSetMilliSeconds):
23026 (JSC::dateProtoFuncSetUTCMilliseconds):
23027 (JSC::dateProtoFuncSetSeconds):
23028 (JSC::dateProtoFuncSetUTCSeconds):
23029 (JSC::dateProtoFuncSetMinutes):
23030 (JSC::dateProtoFuncSetUTCMinutes):
23031 (JSC::dateProtoFuncSetHours):
23032 (JSC::dateProtoFuncSetUTCHours):
23033 (JSC::dateProtoFuncSetDate):
23034 (JSC::dateProtoFuncSetUTCDate):
23035 (JSC::dateProtoFuncSetMonth):
23036 (JSC::dateProtoFuncSetUTCMonth):
23037 (JSC::dateProtoFuncSetFullYear):
23038 (JSC::dateProtoFuncSetUTCFullYear):
23039 (JSC::dateProtoFuncSetYear):
23040 (JSC::dateProtoFuncGetYear):
23041 (JSC::dateProtoFuncToJSON):
23042 * runtime/Error.cpp:
23043 (JSC::createError):
23044 (JSC::createEvalError):
23045 (JSC::createRangeError):
23046 (JSC::createReferenceError):
23047 (JSC::createSyntaxError):
23048 (JSC::createTypeError):
23049 (JSC::createURIError):
23050 (JSC::addErrorSourceInfo):
23051 (JSC::addErrorDivotInfo):
23052 (JSC::addErrorInfo):
23053 (JSC::hasErrorInfo):
23055 (JSC::throwTypeError):
23056 (JSC::throwSyntaxError):
23058 (JSC::throwVMError):
23059 (JSC::throwVMTypeError):
23060 * runtime/ErrorConstructor.cpp:
23061 (JSC::constructWithErrorConstructor):
23062 (JSC::callErrorConstructor):
23063 * runtime/ErrorConstructor.h:
23064 * runtime/ErrorInstance.cpp:
23065 (JSC::ErrorInstance::ErrorInstance):
23066 (JSC::ErrorInstance::create):
23067 * runtime/ErrorInstance.h:
23068 * runtime/ErrorPrototype.cpp:
23069 (JSC::ErrorPrototype::ErrorPrototype):
23070 * runtime/ExceptionHelpers.cpp:
23071 (JSC::createStackOverflowError):
23072 (JSC::createUndefinedVariableError):
23073 (JSC::createInvalidParamError):
23074 (JSC::createNotAConstructorError):
23075 (JSC::createNotAFunctionError):
23076 (JSC::createNotAnObjectError):
23077 (JSC::throwOutOfMemoryError):
23078 * runtime/ExceptionHelpers.h:
23079 * runtime/Executable.cpp:
23080 (JSC::EvalExecutable::compile):
23081 (JSC::ProgramExecutable::checkSyntax):
23082 (JSC::ProgramExecutable::compile):
23083 * runtime/FunctionConstructor.cpp:
23084 (JSC::constructFunction):
23085 * runtime/FunctionPrototype.cpp:
23086 (JSC::functionProtoFuncToString):
23087 (JSC::functionProtoFuncApply):
23088 (JSC::functionProtoFuncCall):
23089 * runtime/Identifier.cpp:
23090 (JSC::Identifier::from):
23091 * runtime/Identifier.h:
23092 * runtime/JSArray.cpp:
23093 (JSC::JSArray::put):
23094 * runtime/JSFunction.cpp:
23095 (JSC::callHostFunctionAsConstructor):
23096 * runtime/JSGlobalObjectFunctions.cpp:
23099 (JSC::globalFuncEval):
23100 * runtime/JSONObject.cpp:
23101 (JSC::Stringifier::appendStringifiedValue):
23102 (JSC::Walker::walk):
23103 (JSC::JSONProtoFuncParse):
23104 (JSC::JSONProtoFuncStringify):
23105 * runtime/JSObject.cpp:
23106 (JSC::throwSetterError):
23107 (JSC::JSObject::put):
23108 (JSC::JSObject::putWithAttributes):
23109 (JSC::JSObject::defaultValue):
23110 (JSC::JSObject::hasInstance):
23111 (JSC::JSObject::defineOwnProperty):
23112 * runtime/JSObject.h:
23113 * runtime/JSValue.cpp:
23114 (JSC::JSValue::toObjectSlowCase):
23115 (JSC::JSValue::synthesizeObject):
23116 (JSC::JSValue::synthesizePrototype):
23117 * runtime/NativeErrorConstructor.cpp:
23118 (JSC::constructWithNativeErrorConstructor):
23119 (JSC::callNativeErrorConstructor):
23120 * runtime/NativeErrorConstructor.h:
23121 * runtime/NumberPrototype.cpp:
23122 (JSC::numberProtoFuncToString):
23123 (JSC::numberProtoFuncToLocaleString):
23124 (JSC::numberProtoFuncValueOf):
23125 (JSC::numberProtoFuncToFixed):
23126 (JSC::numberProtoFuncToExponential):
23127 (JSC::numberProtoFuncToPrecision):
23128 * runtime/ObjectConstructor.cpp:
23129 (JSC::objectConstructorGetPrototypeOf):
23130 (JSC::objectConstructorGetOwnPropertyDescriptor):
23131 (JSC::objectConstructorGetOwnPropertyNames):
23132 (JSC::objectConstructorKeys):
23133 (JSC::toPropertyDescriptor):
23134 (JSC::objectConstructorDefineProperty):
23135 (JSC::objectConstructorDefineProperties):
23136 (JSC::objectConstructorCreate):
23137 * runtime/ObjectPrototype.cpp:
23138 (JSC::objectProtoFuncDefineGetter):
23139 (JSC::objectProtoFuncDefineSetter):
23140 * runtime/RegExpConstructor.cpp:
23141 (JSC::constructRegExp):
23142 * runtime/RegExpObject.cpp:
23143 (JSC::RegExpObject::match):
23144 * runtime/RegExpPrototype.cpp:
23145 (JSC::regExpProtoFuncTest):
23146 (JSC::regExpProtoFuncExec):
23147 (JSC::regExpProtoFuncCompile):
23148 (JSC::regExpProtoFuncToString):
23149 * runtime/StringPrototype.cpp:
23150 (JSC::stringProtoFuncToString):
23152 2010-06-05 Kwang Yul Seo <skyul@company100.net>
23154 Reviewed by Eric Seidel.
23156 [BREWMP] Add PLATFORM(BREWMP) guard for using std::xxx
23157 https://bugs.webkit.org/show_bug.cgi?id=39710
23159 Build fix for BREW MP.
23161 * wtf/MathExtras.h:
23163 2010-06-04 Adam Barth <abarth@webkit.org>
23165 Reviewed by Darin Adler.
23167 HTML5 parser should be within 1% of old parser performance
23168 https://bugs.webkit.org/show_bug.cgi?id=40172
23170 Fix cast in this operator= to allow for assignment between vectors with
23171 different inline capacities (as clearly intended by its author).
23176 2010-06-04 Jedrzej Nowacki <jedrzej.nowacki@nokia.com>
23178 Reviewed by Kenneth Rohde Christiansen.
23180 New QtScript API; QScriptValue::instanceOf.
23182 New function create an easy way to check value's prototype hierarchy.
23184 [Qt] QScriptValue should have an instanceOf method
23185 https://bugs.webkit.org/show_bug.cgi?id=40120
23187 * qt/api/qscriptvalue.cpp:
23188 (QScriptValue::instanceOf):
23189 * qt/api/qscriptvalue.h:
23190 * qt/api/qscriptvalue_p.h:
23191 (QScriptValuePrivate::instanceOf):
23192 * qt/tests/qscriptvalue/tst_qscriptvalue.h:
23193 * qt/tests/qscriptvalue/tst_qscriptvalue_generated_comparison.cpp:
23194 (tst_QScriptValue::instanceOf_initData):
23195 (tst_QScriptValue::instanceOf_makeData):
23196 (tst_QScriptValue::instanceOf_test):
23198 2010-06-04 Gavin Barraclough <barraclough@apple.com>
23200 Reviewed by NOBODY (interpreter build fix).
23202 * interpreter/Interpreter.cpp:
23203 (JSC::Interpreter::privateExecute):
23205 2010-06-04 Mark Rowe <mrowe@apple.com>
23207 Silence some warnings seen on the build bot.
23209 * JavaScriptCore.JSVALUE32_64only.exp: Add a trailing newline.
23210 * JavaScriptCore.JSVALUE32only.exp: Ditto.
23211 * JavaScriptCore.JSVALUE64only.exp: Ditto.
23212 * JavaScriptCore.xcodeproj/project.pbxproj: Remove the .exp files from all targets so that Xcode doesn't
23213 complain about not knowing how to compile them.
23215 2010-06-04 Gavin Barraclough <barraclough@apple.com>
23217 Reviewed by Oliver Hunt.
23219 Bug 40187 - Change function signature of NativeConstructor to match NativeFunction
23221 Mostly for consistency, but constructor & args arguments are redundant,
23222 and this will help if we wish to be able to JIT calls to more constructors.
23224 * API/JSCallbackConstructor.cpp:
23225 (JSC::constructJSCallback):
23226 * API/JSCallbackObject.h:
23227 * API/JSCallbackObjectFunctions.h:
23228 (JSC::::construct):
23229 * interpreter/Interpreter.cpp:
23230 (JSC::Interpreter::executeConstruct):
23231 * interpreter/Interpreter.h:
23232 * jit/JITStubs.cpp:
23233 (JSC::DEFINE_STUB_FUNCTION):
23234 * runtime/ArrayConstructor.cpp:
23235 (JSC::constructWithArrayConstructor):
23236 * runtime/BooleanConstructor.cpp:
23237 (JSC::constructWithBooleanConstructor):
23238 * runtime/ConstructData.cpp:
23240 * runtime/ConstructData.h:
23241 * runtime/DateConstructor.cpp:
23242 (JSC::constructWithDateConstructor):
23243 * runtime/Error.cpp:
23244 (JSC::constructNativeError):
23245 (JSC::Error::create):
23246 * runtime/ErrorConstructor.cpp:
23247 (JSC::constructWithErrorConstructor):
23248 * runtime/FunctionConstructor.cpp:
23249 (JSC::constructWithFunctionConstructor):
23250 * runtime/NativeErrorConstructor.cpp:
23251 (JSC::constructWithNativeErrorConstructor):
23252 * runtime/NativeErrorConstructor.h:
23253 (JSC::NativeErrorConstructor::errorStructure):
23254 * runtime/NumberConstructor.cpp:
23255 (JSC::constructWithNumberConstructor):
23256 * runtime/ObjectConstructor.cpp:
23257 (JSC::constructWithObjectConstructor):
23258 * runtime/RegExpConstructor.cpp:
23259 (JSC::constructWithRegExpConstructor):
23260 * runtime/StringConstructor.cpp:
23261 (JSC::constructWithStringConstructor):
23263 2010-06-04 Tony Gentilcore <tonyg@chromium.org>
23265 Reviewed by Adam Barth.
23267 Add a takeFirst() method to Deque and use it where appropriate.
23268 https://bugs.webkit.org/show_bug.cgi?id=40089
23271 (WTF::::takeFirst):
23272 * wtf/MainThread.cpp:
23273 (WTF::dispatchFunctionsFromMainThread):
23274 * wtf/MessageQueue.h:
23275 (WTF::::tryGetMessage):
23277 2010-06-04 Jedrzej Nowacki <jedrzej.nowacki@nokia.com>
23279 Reviewed by Kenneth Rohde Christiansen.
23281 Remove a QEXPECT_FAIL flag from an autotest.
23283 Test tst_QScriptEngine::globalObject pass after 36600 bug
23284 fix have been applied.
23286 [Qt] Expected fail in the tst_QScriptEngine::globalObject should be removed.
23287 https://bugs.webkit.org/show_bug.cgi?id=40114
23289 * qt/tests/qscriptengine/tst_qscriptengine.cpp:
23290 (tst_QScriptEngine::globalObject):
23292 2010-06-04 Jedrzej Nowacki <jedrzej.nowacki@nokia.com>
23294 Reviewed by Kenneth Rohde Christiansen.
23296 Fix QScriptValue::equals.
23298 Handling for a few edge cases were added. Now comparison between
23299 NaN, an invalid objects should works as supposed.
23301 [Qt] QScriptValue::equals problems
23302 https://bugs.webkit.org/show_bug.cgi?id=40110
23304 * qt/api/qscriptvalue.cpp:
23305 (QScriptValue::equals):
23306 * qt/api/qscriptvalue_p.h:
23307 (QScriptValuePrivate::equals):
23308 * qt/tests/qscriptvalue/tst_qscriptvalue.h:
23309 * qt/tests/qscriptvalue/tst_qscriptvalue_generated_comparison.cpp:
23310 (tst_QScriptValue::equals_initData):
23311 (tst_QScriptValue::equals_makeData):
23312 (tst_QScriptValue::equals_test):
23314 2010-06-03 Jedrzej Nowacki <jedrzej.nowacki@nokia.com>
23316 Reviewed by Kenneth Rohde Christiansen.
23318 New states in QScriptValuePrivate.
23320 The CSpecial state was divided into CNull and CUndefined. It simplify
23321 the QScriptValue code by avoiding a few "cast" and "if".
23322 Moreover the MSVS compiler didn't like casting between a double and an
23323 enum which is avoided now.
23325 [Qt] The QScriptValuePrivate::CSpecial is too generic.
23326 https://bugs.webkit.org/show_bug.cgi?id=40067
23328 * qt/api/qscriptvalue_p.h:
23329 (QScriptValuePrivate::):
23330 (QScriptValuePrivate::QScriptValuePrivate):
23331 (QScriptValuePrivate::isNull):
23332 (QScriptValuePrivate::isUndefined):
23333 (QScriptValuePrivate::toString):
23334 (QScriptValuePrivate::toNumber):
23335 (QScriptValuePrivate::toBool):
23336 (QScriptValuePrivate::toObject):
23337 (QScriptValuePrivate::assignEngine):
23338 (QScriptValuePrivate::isNumberBased):
23340 2010-06-03 Gavin Barraclough <barraclough@apple.com>
23342 Reviewed by NOBODY (Qt build fix).
23346 2010-06-03 Gavin Barraclough <barraclough@apple.com>
23348 Reviewed by Mark Rowe.
23350 Bug 40150 - ENABLE_JIT_OPTIMIZE_NATIVE_CALL on all x86/x86_64 platforms
23351 This was fixed in bug #40094.
23353 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
23356 2010-06-03 Gavin Barraclough <barraclough@apple.com>
23358 Reviewed by NOBODY (Interpreter build fix).
23360 * JavaScriptCore.JSVALUE32_64only.exp:
23361 * JavaScriptCore.JSVALUE32only.exp:
23362 * JavaScriptCore.JSVALUE64only.exp:
23363 * interpreter/Interpreter.cpp:
23364 (JSC::Interpreter::privateExecute):
23366 2010-06-03 Gavin Barraclough <barraclough@apple.com>
23368 Reviewed by NOBODY (windows build fix II).
23370 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
23372 2010-06-03 Gavin Barraclough <barraclough@apple.com>
23374 Reviewed by NOBODY (windows build fix).
23376 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
23378 2010-06-02 Gavin Barraclough <barraclough@apple.com>
23380 Reviewed by Oliver Hunt.
23382 Bug 40094 - The return type of NativeFunction should be EncodedJSValue
23383 On Windows & Linux, using JSVALUE32_64, EncodedJSValue is returned in registers, but JSValue is not.
23385 * API/JSCallbackFunction.cpp:
23386 (JSC::JSCallbackFunction::call):
23387 * API/JSCallbackFunction.h:
23388 * API/JSCallbackObject.h:
23389 * API/JSCallbackObjectFunctions.h:
23391 * JavaScriptCore.exp:
23392 * interpreter/Interpreter.cpp:
23393 (JSC::Interpreter::executeCall):
23394 * jit/JITStubs.cpp:
23395 (JSC::DEFINE_STUB_FUNCTION):
23404 (functionCheckSyntax):
23405 (functionSetSamplingFlags):
23406 (functionClearSamplingFlags):
23407 (functionReadline):
23409 * runtime/ArrayConstructor.cpp:
23410 (JSC::callArrayConstructor):
23411 (JSC::arrayConstructorIsArray):
23412 * runtime/ArrayPrototype.cpp:
23413 (JSC::arrayProtoFuncToString):
23414 (JSC::arrayProtoFuncToLocaleString):
23415 (JSC::arrayProtoFuncJoin):
23416 (JSC::arrayProtoFuncConcat):
23417 (JSC::arrayProtoFuncPop):
23418 (JSC::arrayProtoFuncPush):
23419 (JSC::arrayProtoFuncReverse):
23420 (JSC::arrayProtoFuncShift):
23421 (JSC::arrayProtoFuncSlice):
23422 (JSC::arrayProtoFuncSort):
23423 (JSC::arrayProtoFuncSplice):
23424 (JSC::arrayProtoFuncUnShift):
23425 (JSC::arrayProtoFuncFilter):
23426 (JSC::arrayProtoFuncMap):
23427 (JSC::arrayProtoFuncEvery):
23428 (JSC::arrayProtoFuncForEach):
23429 (JSC::arrayProtoFuncSome):
23430 (JSC::arrayProtoFuncReduce):
23431 (JSC::arrayProtoFuncReduceRight):
23432 (JSC::arrayProtoFuncIndexOf):
23433 (JSC::arrayProtoFuncLastIndexOf):
23434 * runtime/BooleanConstructor.cpp:
23435 (JSC::callBooleanConstructor):
23436 * runtime/BooleanPrototype.cpp:
23437 (JSC::booleanProtoFuncToString):
23438 (JSC::booleanProtoFuncValueOf):
23439 * runtime/CallData.h:
23440 * runtime/DateConstructor.cpp:
23445 * runtime/DatePrototype.cpp:
23446 (JSC::dateProtoFuncToString):
23447 (JSC::dateProtoFuncToUTCString):
23448 (JSC::dateProtoFuncToISOString):
23449 (JSC::dateProtoFuncToDateString):
23450 (JSC::dateProtoFuncToTimeString):
23451 (JSC::dateProtoFuncToLocaleString):
23452 (JSC::dateProtoFuncToLocaleDateString):
23453 (JSC::dateProtoFuncToLocaleTimeString):
23454 (JSC::dateProtoFuncGetTime):
23455 (JSC::dateProtoFuncGetFullYear):
23456 (JSC::dateProtoFuncGetUTCFullYear):
23457 (JSC::dateProtoFuncToGMTString):
23458 (JSC::dateProtoFuncGetMonth):
23459 (JSC::dateProtoFuncGetUTCMonth):
23460 (JSC::dateProtoFuncGetDate):
23461 (JSC::dateProtoFuncGetUTCDate):
23462 (JSC::dateProtoFuncGetDay):
23463 (JSC::dateProtoFuncGetUTCDay):
23464 (JSC::dateProtoFuncGetHours):
23465 (JSC::dateProtoFuncGetUTCHours):
23466 (JSC::dateProtoFuncGetMinutes):
23467 (JSC::dateProtoFuncGetUTCMinutes):
23468 (JSC::dateProtoFuncGetSeconds):
23469 (JSC::dateProtoFuncGetUTCSeconds):
23470 (JSC::dateProtoFuncGetMilliSeconds):
23471 (JSC::dateProtoFuncGetUTCMilliseconds):
23472 (JSC::dateProtoFuncGetTimezoneOffset):
23473 (JSC::dateProtoFuncSetTime):
23474 (JSC::dateProtoFuncSetMilliSeconds):
23475 (JSC::dateProtoFuncSetUTCMilliseconds):
23476 (JSC::dateProtoFuncSetSeconds):
23477 (JSC::dateProtoFuncSetUTCSeconds):
23478 (JSC::dateProtoFuncSetMinutes):
23479 (JSC::dateProtoFuncSetUTCMinutes):
23480 (JSC::dateProtoFuncSetHours):
23481 (JSC::dateProtoFuncSetUTCHours):
23482 (JSC::dateProtoFuncSetDate):
23483 (JSC::dateProtoFuncSetUTCDate):
23484 (JSC::dateProtoFuncSetMonth):
23485 (JSC::dateProtoFuncSetUTCMonth):
23486 (JSC::dateProtoFuncSetFullYear):
23487 (JSC::dateProtoFuncSetUTCFullYear):
23488 (JSC::dateProtoFuncSetYear):
23489 (JSC::dateProtoFuncGetYear):
23490 (JSC::dateProtoFuncToJSON):
23491 * runtime/ErrorConstructor.cpp:
23492 (JSC::callErrorConstructor):
23493 * runtime/ErrorPrototype.cpp:
23494 (JSC::errorProtoFuncToString):
23495 * runtime/FunctionConstructor.cpp:
23496 (JSC::callFunctionConstructor):
23497 * runtime/FunctionPrototype.cpp:
23498 (JSC::callFunctionPrototype):
23499 (JSC::functionProtoFuncToString):
23500 (JSC::functionProtoFuncApply):
23501 (JSC::functionProtoFuncCall):
23502 * runtime/JSCell.h:
23503 (JSC::getCallData):
23504 (JSC::getConstructData):
23505 * runtime/JSFunction.cpp:
23506 (JSC::callHostFunctionAsConstructor):
23507 * runtime/JSFunction.h:
23508 * runtime/JSGlobalObjectFunctions.cpp:
23509 (JSC::globalFuncEval):
23510 (JSC::globalFuncParseInt):
23511 (JSC::globalFuncParseFloat):
23512 (JSC::globalFuncIsNaN):
23513 (JSC::globalFuncIsFinite):
23514 (JSC::globalFuncDecodeURI):
23515 (JSC::globalFuncDecodeURIComponent):
23516 (JSC::globalFuncEncodeURI):
23517 (JSC::globalFuncEncodeURIComponent):
23518 (JSC::globalFuncEscape):
23519 (JSC::globalFuncUnescape):
23520 (JSC::globalFuncJSCPrint):
23521 * runtime/JSGlobalObjectFunctions.h:
23522 * runtime/JSONObject.cpp:
23523 (JSC::JSONProtoFuncParse):
23524 (JSC::JSONProtoFuncStringify):
23525 * runtime/JSObject.cpp:
23526 (JSC::callDefaultValueFunction):
23527 * runtime/JSValue.h:
23528 * runtime/MathObject.cpp:
23529 (JSC::mathProtoFuncAbs):
23530 (JSC::mathProtoFuncACos):
23531 (JSC::mathProtoFuncASin):
23532 (JSC::mathProtoFuncATan):
23533 (JSC::mathProtoFuncATan2):
23534 (JSC::mathProtoFuncCeil):
23535 (JSC::mathProtoFuncCos):
23536 (JSC::mathProtoFuncExp):
23537 (JSC::mathProtoFuncFloor):
23538 (JSC::mathProtoFuncLog):
23539 (JSC::mathProtoFuncMax):
23540 (JSC::mathProtoFuncMin):
23541 (JSC::mathProtoFuncPow):
23542 (JSC::mathProtoFuncRandom):
23543 (JSC::mathProtoFuncRound):
23544 (JSC::mathProtoFuncSin):
23545 (JSC::mathProtoFuncSqrt):
23546 (JSC::mathProtoFuncTan):
23547 * runtime/NativeErrorConstructor.cpp:
23548 (JSC::callNativeErrorConstructor):
23549 * runtime/NumberConstructor.cpp:
23550 (JSC::callNumberConstructor):
23551 * runtime/NumberPrototype.cpp:
23552 (JSC::numberProtoFuncToString):
23553 (JSC::numberProtoFuncToLocaleString):
23554 (JSC::numberProtoFuncValueOf):
23555 (JSC::numberProtoFuncToFixed):
23556 (JSC::numberProtoFuncToExponential):
23557 (JSC::numberProtoFuncToPrecision):
23558 * runtime/ObjectConstructor.cpp:
23559 (JSC::callObjectConstructor):
23560 (JSC::objectConstructorGetPrototypeOf):
23561 (JSC::objectConstructorGetOwnPropertyDescriptor):
23562 (JSC::objectConstructorGetOwnPropertyNames):
23563 (JSC::objectConstructorKeys):
23564 (JSC::toPropertyDescriptor):
23565 (JSC::objectConstructorDefineProperty):
23566 (JSC::objectConstructorDefineProperties):
23567 (JSC::objectConstructorCreate):
23568 * runtime/ObjectPrototype.cpp:
23569 (JSC::objectProtoFuncValueOf):
23570 (JSC::objectProtoFuncHasOwnProperty):
23571 (JSC::objectProtoFuncIsPrototypeOf):
23572 (JSC::objectProtoFuncDefineGetter):
23573 (JSC::objectProtoFuncDefineSetter):
23574 (JSC::objectProtoFuncLookupGetter):
23575 (JSC::objectProtoFuncLookupSetter):
23576 (JSC::objectProtoFuncPropertyIsEnumerable):
23577 (JSC::objectProtoFuncToLocaleString):
23578 (JSC::objectProtoFuncToString):
23579 * runtime/ObjectPrototype.h:
23580 * runtime/RegExpConstructor.cpp:
23581 (JSC::callRegExpConstructor):
23582 * runtime/RegExpObject.cpp:
23583 (JSC::callRegExpObject):
23584 * runtime/RegExpPrototype.cpp:
23585 (JSC::regExpProtoFuncTest):
23586 (JSC::regExpProtoFuncExec):
23587 (JSC::regExpProtoFuncCompile):
23588 (JSC::regExpProtoFuncToString):
23589 * runtime/StringConstructor.cpp:
23590 (JSC::stringFromCharCode):
23591 (JSC::callStringConstructor):
23592 * runtime/StringPrototype.cpp:
23593 (JSC::stringProtoFuncReplace):
23594 (JSC::stringProtoFuncToString):
23595 (JSC::stringProtoFuncCharAt):
23596 (JSC::stringProtoFuncCharCodeAt):
23597 (JSC::stringProtoFuncConcat):
23598 (JSC::stringProtoFuncIndexOf):
23599 (JSC::stringProtoFuncLastIndexOf):
23600 (JSC::stringProtoFuncMatch):
23601 (JSC::stringProtoFuncSearch):
23602 (JSC::stringProtoFuncSlice):
23603 (JSC::stringProtoFuncSplit):
23604 (JSC::stringProtoFuncSubstr):
23605 (JSC::stringProtoFuncSubstring):
23606 (JSC::stringProtoFuncToLowerCase):
23607 (JSC::stringProtoFuncToUpperCase):
23608 (JSC::stringProtoFuncLocaleCompare):
23609 (JSC::stringProtoFuncBig):
23610 (JSC::stringProtoFuncSmall):
23611 (JSC::stringProtoFuncBlink):
23612 (JSC::stringProtoFuncBold):
23613 (JSC::stringProtoFuncFixed):
23614 (JSC::stringProtoFuncItalics):
23615 (JSC::stringProtoFuncStrike):
23616 (JSC::stringProtoFuncSub):
23617 (JSC::stringProtoFuncSup):
23618 (JSC::stringProtoFuncFontcolor):
23619 (JSC::stringProtoFuncFontsize):
23620 (JSC::stringProtoFuncAnchor):
23621 (JSC::stringProtoFuncLink):
23622 (JSC::stringProtoFuncTrim):
23623 (JSC::stringProtoFuncTrimLeft):
23624 (JSC::stringProtoFuncTrimRight):
23626 2010-06-02 Mark Rowe <mrowe@apple.com>
23628 Reviewed by Gavin Barraclough.
23630 Add value-representation specific sections to the mac export file.
23632 * Configurations/JavaScriptCore.xcconfig:
23633 * DerivedSources.make:
23634 * JavaScriptCore.JSVALUE32_64only.exp: Added.
23635 * JavaScriptCore.JSVALUE32only.exp: Added.
23636 * JavaScriptCore.JSVALUE64only.exp: Added.
23637 * JavaScriptCore.xcodeproj/project.pbxproj:
23639 2010-06-02 Mark Rowe <mrowe@apple.com>
23641 Reviewed by Gavin Barraclough.
23643 <rdar://problem/8054988> Work around an LLVM GCC code generation bug that results in crashes inside PCRE.
23645 * pcre/pcre_exec.cpp:
23646 (repeatInformationFromInstructionOffset): Change the type of instructionOffset to int. There's no good
23647 reason for it to be a short, and using int prevents this code from triggering the LLVM GCC bug.
23649 2010-06-02 Jedrzej Nowacki <jedrzej.nowacki@nokia.com>
23651 Reviewed by Kenneth Rohde Christiansen.
23653 Fix the QScriptValue::strictlyEquals function.
23655 Handling for a few edge cases was added.
23657 New autotest that covers the QScriptValue::strictlyEquals function.
23659 [Qt] QScriptValue::strictlyEquals is broken
23660 https://bugs.webkit.org/show_bug.cgi?id=36600
23662 * qt/api/qscriptvalue.cpp:
23663 (QScriptValue::strictlyEquals):
23664 * qt/api/qscriptvalue_p.h:
23665 (QScriptValuePrivate::strictlyEquals):
23666 * qt/tests/qscriptvalue/qscriptvalue.pro:
23667 * qt/tests/qscriptvalue/tst_qscriptvalue.h:
23668 * qt/tests/qscriptvalue/tst_qscriptvalue_generated_comparison.cpp: Added.
23669 (tst_QScriptValue::strictlyEquals_initData):
23670 (tst_QScriptValue::strictlyEquals_makeData):
23671 (tst_QScriptValue::strictlyEquals_test):
23673 2010-06-02 Jedrzej Nowacki <jedrzej.nowacki@nokia.com>
23675 Reviewed by Kenneth Rohde Christiansen.
23677 New function QScriptEngine::newObject.
23679 The function creates a object of class Object and returns it
23682 [Qt] QScriptEngine API should contain a newObject function
23683 https://bugs.webkit.org/show_bug.cgi?id=39114
23685 * qt/api/qscriptengine.cpp:
23686 (QScriptEngine::newObject):
23687 * qt/api/qscriptengine.h:
23688 * qt/api/qscriptengine_p.cpp:
23689 (QScriptEnginePrivate::newObject):
23690 * qt/api/qscriptengine_p.h:
23691 * qt/tests/qscriptengine/tst_qscriptengine.cpp:
23692 (tst_QScriptEngine::newObject):
23694 2010-06-02 Gabor Loki <loki@webkit.org>
23696 Reviewed by Gavin Barraclough.
23697 https://bugs.webkit.org/show_bug.cgi?id=40011
23699 Thumb-2 build fix: The offset parameter of ldrh should be encoded as an
23700 imm12 immediate constant in load16. If it is not fit in the instruction
23701 a temporary register has to be used.
23703 * assembler/MacroAssemblerARMv7.h:
23704 (JSC::MacroAssemblerARMv7::load16):
23706 2010-06-02 Sterling Swigart <sswigart@google.com>
23708 Reviewed by David Levin.
23710 Image Resizer Patch 0: Added compilation argument to conditionally compile pending patches.
23711 https://bugs.webkit.org/show_bug.cgi?id=39906
23713 * Configurations/FeatureDefines.xcconfig:
23715 2010-06-01 Gavin Barraclough <barraclough@apple.com>
23717 Reviewed by Sam Weinig.
23719 Bug 40021 - Refactor bytecode generation for calls so that register for this & args are allocated together
23721 This is a useful stepping stone towards reversing argument order.
23723 * bytecompiler/BytecodeGenerator.cpp:
23724 (JSC::BytecodeGenerator::BytecodeGenerator):
23725 (JSC::BytecodeGenerator::addParameter):
23726 (JSC::BytecodeGenerator::emitCall):
23727 (JSC::BytecodeGenerator::emitCallEval):
23728 (JSC::BytecodeGenerator::emitConstruct):
23729 * bytecompiler/BytecodeGenerator.h:
23730 (JSC::CallArguments::thisRegister):
23731 (JSC::CallArguments::argumentRegister):
23732 (JSC::CallArguments::callFrame):
23733 (JSC::CallArguments::count):
23734 (JSC::BytecodeGenerator::shouldEmitProfileHooks):
23735 * bytecompiler/NodesCodegen.cpp:
23736 (JSC::NewExprNode::emitBytecode):
23737 (JSC::CallArguments::CallArguments):
23738 (JSC::EvalFunctionCallNode::emitBytecode):
23739 (JSC::FunctionCallValueNode::emitBytecode):
23740 (JSC::FunctionCallResolveNode::emitBytecode):
23741 (JSC::FunctionCallBracketNode::emitBytecode):
23742 (JSC::FunctionCallDotNode::emitBytecode):
23743 (JSC::CallFunctionCallDotNode::emitBytecode):
23744 (JSC::ApplyFunctionCallDotNode::emitBytecode):
23746 2010-06-01 Yong Li <yoli@rim.com>
23748 Reviewed by Darin Adler.
23750 Explicitly use PTHREAD_MUTEX_NORMAL to create pthread mutex.
23751 https://bugs.webkit.org/show_bug.cgi?id=39893
23753 * wtf/ThreadingPthreads.cpp:
23754 (WTF::Mutex::Mutex):
23756 2010-06-01 Kwang Yul Seo <skyul@company100.net>
23758 Reviewed by Xan Lopez.
23760 [GTK] Use DEFINE_STATIC_LOCAL for threadMapMutex and threadMap
23761 https://bugs.webkit.org/show_bug.cgi?id=39831
23763 Use DEFINE_STATIC_LOCAL for static local variables.
23765 * wtf/gtk/ThreadingGtk.cpp:
23766 (WTF::threadMapMutex):
23768 (WTF::identifierByGthreadHandle):
23770 2010-06-01 Kent Tamura <tkent@chromium.org>
23772 Reviewed by Shinichiro Hamaji.
23774 Fix style errors of dtoa
23775 https://bugs.webkit.org/show_bug.cgi?id=39972
23777 Fix all errors reported by check-webkit-style.
23782 2010-05-30 Darin Adler <darin@apple.com>
23784 Reviewed by Sam Weinig.
23786 * wtf/OwnArrayPtr.h:
23787 (WTF::OwnArrayPtr::set): Fix the assertion in here to match the one in OwnPtr.
23788 At some point someone fixed the "asserts when assigning to 0 and the pointer is
23789 already 0" issue in OwnPtr but forgot to do it here.
23791 2010-05-29 Geoffrey Garen <ggaren@apple.com>
23793 Windows build fix: Updated exported symbols.
23795 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
23797 2010-05-29 Geoffrey Garen <ggaren@apple.com>
23799 Disabled ENABLE_JIT_OPTIMIZE_NATIVE_CALL on Windows for now, until I
23800 can figure out why it's crashing.
23804 2010-05-29 Geoffrey Garen <ggaren@apple.com>
23806 Fixed Windows crash seen on buildbot.
23808 * jit/JITOpcodes32_64.cpp:
23809 (JSC::JIT::privateCompileCTINativeCall): __fastcall puts the first
23812 2010-05-28 Geoffrey Garen <ggaren@apple.com>
23814 Windows build fix: Updated exported symbols.
23816 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
23818 2010-05-28 Geoffrey Garen <ggaren@apple.com>
23820 Qt build fix: disable a little more stuff when JIT_OPTIMIZE_NATIVE_CALL
23823 * runtime/Lookup.cpp:
23824 (JSC::setUpStaticFunctionSlot):
23825 * runtime/Lookup.h:
23828 2010-05-28 Geoffrey Garen <ggaren@apple.com>
23830 Windows build fix: Updated exported symbols.
23832 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
23834 2010-05-28 Geoffrey Garen <ggaren@apple.com>
23836 Reviewed by Sam Weinig, Gavin Barraclough, Oliver Hunt.
23838 Simplified the host calling convention.
23840 22.5% speedup on 32-bit host function calls. 9.5% speedup on 64-bit host
23843 No change on SunSpider.
23845 All JS calls (but not constructs, yet) now go through the normal JS
23846 calling convention via the RegisterFile. As a result, the host calling
23847 convention, which used to be this
23849 JSValue (JSC_HOST_CALL *NativeFunction)(ExecState*, JSObject*, JSValue thisValue, const ArgList&)
23853 JSValue (JSC_HOST_CALL *NativeFunction)(ExecState*)
23855 Callee, 'this', and argument access all hapen relative to the ExecState*,
23856 which is a pointer into the RegisterFile.
23858 This patch comes in two parts.
23860 PART ONE: Functional code changes.
23862 * wtf/Platform.h: Disabled optimized calls on platforms I didn't test.
23863 We can re-enable once we verify that host calls on these platforms are
23866 * debugger/DebuggerCallFrame.cpp:
23867 (JSC::DebuggerCallFrame::functionName):
23868 (JSC::DebuggerCallFrame::calculatedFunctionName): Updated for change to
23869 ExecState::callee().
23871 (JSC::DebuggerCallFrame::thisObject): Updated for removal of ExecState::thisValue().
23873 * interpreter/CallFrame.cpp:
23874 * interpreter/CallFrame.h:
23875 (JSC::ExecState::callee):
23876 (JSC::ExecState::scopeChain):
23877 (JSC::ExecState::init): Changed callee() to be JSObject* instead of
23878 JSFunction* -- now, it might be some other callable host object.
23880 (JSC::ExecState::hostThisRegister):
23881 (JSC::ExecState::hostThisValue):
23882 (JSC::ExecState::argumentCount):
23883 (JSC::ExecState::argumentCountIncludingThis):
23884 (JSC::ExecState::argument):
23885 (JSC::ExecState::setArgumentCountIncludingThis):
23886 (JSC::ExecState::setCallee): Added convenient accessors for arguments
23887 from within a host function. Removed thisValue() because it was too
23888 tempting to use incorrectly, and it only had one or two clients, anyway.
23890 * interpreter/Interpreter.cpp:
23891 (JSC::Interpreter::callEval): Updated for removal of ExecState::thisValue().
23893 (JSC::Interpreter::throwException): Be sure to shrink the register file
23894 before invoking the exception handler, to reduce the chances that the
23895 handler will re-throw in the case of stack overflow. (Re-throwing is now
23896 more likely than it used to be, since standardizing the calling convention
23897 implicitly added stack overflow checks to some places where they used to be missing.)
23899 (JSC::Interpreter::execute): Clarified the scope of DynamicGlobalObjectScope.
23900 Updated for CallFrame::init API change.
23902 (JSC::Interpreter::executeCall): Clarified scope of DynamicGlobalObjectScope.
23903 Updated for CallFrame::init API change. Added support for calling a host
23906 (JSC::Interpreter::executeConstruct): Clarified scope of DynamicGlobalObjectScope.
23907 Updated for CallFrame::init API change.
23909 (JSC::Interpreter::prepareForRepeatCall): Updated for CallFrame::init API change.
23911 (JSC::Interpreter::privateExecute): Updated for CallFrame::init API change.
23912 Added some explicit JSValue(JSObject*) initialization, since relaxing
23913 the JSFunction* restriction on callee has made register types more ambiguous.
23914 Removed toThisObject() conversion, since all callees do it themselves now.
23915 Updated host function call for new host function signature. Updated for
23916 change to ExecState::argumentCount() API.
23918 * interpreter/Register.h:
23920 (JSC::Register::operator=):
23921 (JSC::Register::function): Changed callee() to be JSObject* instead of
23922 JSFunction* -- now, it might be some other callable host object.
23924 * jit/JITOpcodes.cpp:
23925 (JSC::JIT::privateCompileCTINativeCall):
23926 * jit/JITOpcodes32_64.cpp:
23927 (JSC::JIT::privateCompileCTINativeCall): Deleted a bunch of code that
23928 set up the arguments to host functions -- all but one of the arguments
23929 are gone now. This is the actual optimization.
23931 * jit/JITStubs.cpp:
23932 (JSC::DEFINE_STUB_FUNCTION): Updated for ExecState and Register API
23933 changes noted above. Removed toThisObject() conversion, since all callees
23934 do it themselves now.
23936 * runtime/ArgList.h:
23937 (JSC::ArgList::ArgList): ArgList is getting close to unused. Added a
23938 temporary shim for converting from ExecState* to ArgList where it's still
23941 * runtime/Arguments.h:
23942 (JSC::Arguments::getArgumentsData):
23943 (JSC::Arguments::Arguments): Updated for ExecState and Register API
23944 changes noted above.
23946 * runtime/CallData.cpp:
23947 (JSC::call): Changed call always to call Interpreter::executeCall, even
23948 for host functions. This ensures that the normal calling convention is
23949 set up in the RegsiterFile when calling from C++ to host function.
23951 * runtime/CallData.h: Changed host function signature as described above.
23953 * runtime/ConstructData.cpp:
23954 (JSC::construct): Moved JSFunction::construct code here so I could nix
23955 JSFunction::call and JSFunction::call. We want a JSFunction-agnostic
23956 way to call and construct, so that everything works naturally for non-
23957 JSFunction objects.
23959 * runtime/JSFunction.cpp:
23960 (JSC::callHostFunctionAsConstructor):
23961 * runtime/JSFunction.h: Updated for ExecState and Register API changes
23962 noted above. Nixed JSFunction::call and JSFunction::construct, noted above.
23964 * runtime/JSGlobalObject.cpp:
23965 (JSC::JSGlobalObject::init): Ditto.
23967 PART TWO: Global search and replace.
23969 In the areas below, I used global search-and-replace to change
23970 (ExecState*, JSObject*, JSValue, const ArgList&) => (ExecState*)
23971 args.size() => exec->argumentCount()
23972 args.at(i) => exec->argument(i)
23974 * API/JSCallbackFunction.cpp:
23975 (JSC::JSCallbackFunction::call):
23976 * API/JSCallbackFunction.h:
23977 * API/JSCallbackObject.h:
23978 * API/JSCallbackObjectFunctions.h:
23980 * JavaScriptCore.exp:
23988 (functionCheckSyntax):
23989 (functionSetSamplingFlags):
23990 (functionClearSamplingFlags):
23991 (functionReadline):
23993 * runtime/ArrayConstructor.cpp:
23994 (JSC::callArrayConstructor):
23995 (JSC::arrayConstructorIsArray):
23996 * runtime/ArrayPrototype.cpp:
23997 (JSC::arrayProtoFuncToString):
23998 (JSC::arrayProtoFuncToLocaleString):
23999 (JSC::arrayProtoFuncJoin):
24000 (JSC::arrayProtoFuncConcat):
24001 (JSC::arrayProtoFuncPop):
24002 (JSC::arrayProtoFuncPush):
24003 (JSC::arrayProtoFuncReverse):
24004 (JSC::arrayProtoFuncShift):
24005 (JSC::arrayProtoFuncSlice):
24006 (JSC::arrayProtoFuncSort):
24007 (JSC::arrayProtoFuncSplice):
24008 (JSC::arrayProtoFuncUnShift):
24009 (JSC::arrayProtoFuncFilter):
24010 (JSC::arrayProtoFuncMap):
24011 (JSC::arrayProtoFuncEvery):
24012 (JSC::arrayProtoFuncForEach):
24013 (JSC::arrayProtoFuncSome):
24014 (JSC::arrayProtoFuncReduce):
24015 (JSC::arrayProtoFuncReduceRight):
24016 (JSC::arrayProtoFuncIndexOf):
24017 (JSC::arrayProtoFuncLastIndexOf):
24018 * runtime/BooleanConstructor.cpp:
24019 (JSC::callBooleanConstructor):
24020 * runtime/BooleanPrototype.cpp:
24021 (JSC::booleanProtoFuncToString):
24022 (JSC::booleanProtoFuncValueOf):
24023 * runtime/DateConstructor.cpp:
24028 * runtime/DatePrototype.cpp:
24029 (JSC::formatLocaleDate):
24030 (JSC::fillStructuresUsingTimeArgs):
24031 (JSC::fillStructuresUsingDateArgs):
24032 (JSC::dateProtoFuncToString):
24033 (JSC::dateProtoFuncToUTCString):
24034 (JSC::dateProtoFuncToISOString):
24035 (JSC::dateProtoFuncToDateString):
24036 (JSC::dateProtoFuncToTimeString):
24037 (JSC::dateProtoFuncToLocaleString):
24038 (JSC::dateProtoFuncToLocaleDateString):
24039 (JSC::dateProtoFuncToLocaleTimeString):
24040 (JSC::dateProtoFuncGetTime):
24041 (JSC::dateProtoFuncGetFullYear):
24042 (JSC::dateProtoFuncGetUTCFullYear):
24043 (JSC::dateProtoFuncToGMTString):
24044 (JSC::dateProtoFuncGetMonth):
24045 (JSC::dateProtoFuncGetUTCMonth):
24046 (JSC::dateProtoFuncGetDate):
24047 (JSC::dateProtoFuncGetUTCDate):
24048 (JSC::dateProtoFuncGetDay):
24049 (JSC::dateProtoFuncGetUTCDay):
24050 (JSC::dateProtoFuncGetHours):
24051 (JSC::dateProtoFuncGetUTCHours):
24052 (JSC::dateProtoFuncGetMinutes):
24053 (JSC::dateProtoFuncGetUTCMinutes):
24054 (JSC::dateProtoFuncGetSeconds):
24055 (JSC::dateProtoFuncGetUTCSeconds):
24056 (JSC::dateProtoFuncGetMilliSeconds):
24057 (JSC::dateProtoFuncGetUTCMilliseconds):
24058 (JSC::dateProtoFuncGetTimezoneOffset):
24059 (JSC::dateProtoFuncSetTime):
24060 (JSC::setNewValueFromTimeArgs):
24061 (JSC::setNewValueFromDateArgs):
24062 (JSC::dateProtoFuncSetMilliSeconds):
24063 (JSC::dateProtoFuncSetUTCMilliseconds):
24064 (JSC::dateProtoFuncSetSeconds):
24065 (JSC::dateProtoFuncSetUTCSeconds):
24066 (JSC::dateProtoFuncSetMinutes):
24067 (JSC::dateProtoFuncSetUTCMinutes):
24068 (JSC::dateProtoFuncSetHours):
24069 (JSC::dateProtoFuncSetUTCHours):
24070 (JSC::dateProtoFuncSetDate):
24071 (JSC::dateProtoFuncSetUTCDate):
24072 (JSC::dateProtoFuncSetMonth):
24073 (JSC::dateProtoFuncSetUTCMonth):
24074 (JSC::dateProtoFuncSetFullYear):
24075 (JSC::dateProtoFuncSetUTCFullYear):
24076 (JSC::dateProtoFuncSetYear):
24077 (JSC::dateProtoFuncGetYear):
24078 (JSC::dateProtoFuncToJSON):
24079 * runtime/ErrorConstructor.cpp:
24080 (JSC::callErrorConstructor):
24081 * runtime/ErrorPrototype.cpp:
24082 (JSC::errorProtoFuncToString):
24083 * runtime/FunctionConstructor.cpp:
24084 (JSC::callFunctionConstructor):
24085 * runtime/FunctionPrototype.cpp:
24086 (JSC::callFunctionPrototype):
24087 (JSC::functionProtoFuncToString):
24088 (JSC::functionProtoFuncApply):
24089 (JSC::functionProtoFuncCall):
24090 * runtime/JSGlobalObjectFunctions.cpp:
24093 (JSC::globalFuncEval):
24094 (JSC::globalFuncParseInt):
24095 (JSC::globalFuncParseFloat):
24096 (JSC::globalFuncIsNaN):
24097 (JSC::globalFuncIsFinite):
24098 (JSC::globalFuncDecodeURI):
24099 (JSC::globalFuncDecodeURIComponent):
24100 (JSC::globalFuncEncodeURI):
24101 (JSC::globalFuncEncodeURIComponent):
24102 (JSC::globalFuncEscape):
24103 (JSC::globalFuncUnescape):
24104 (JSC::globalFuncJSCPrint):
24105 * runtime/JSGlobalObjectFunctions.h:
24106 * runtime/JSONObject.cpp:
24107 (JSC::JSONProtoFuncParse):
24108 (JSC::JSONProtoFuncStringify):
24109 * runtime/JSString.h:
24110 * runtime/MathObject.cpp:
24111 (JSC::mathProtoFuncAbs):
24112 (JSC::mathProtoFuncACos):
24113 (JSC::mathProtoFuncASin):
24114 (JSC::mathProtoFuncATan):
24115 (JSC::mathProtoFuncATan2):
24116 (JSC::mathProtoFuncCeil):
24117 (JSC::mathProtoFuncCos):
24118 (JSC::mathProtoFuncExp):
24119 (JSC::mathProtoFuncFloor):
24120 (JSC::mathProtoFuncLog):
24121 (JSC::mathProtoFuncMax):
24122 (JSC::mathProtoFuncMin):
24123 (JSC::mathProtoFuncPow):
24124 (JSC::mathProtoFuncRandom):
24125 (JSC::mathProtoFuncRound):
24126 (JSC::mathProtoFuncSin):
24127 (JSC::mathProtoFuncSqrt):
24128 (JSC::mathProtoFuncTan):
24129 * runtime/NativeErrorConstructor.cpp:
24130 (JSC::callNativeErrorConstructor):
24131 * runtime/NumberConstructor.cpp:
24132 (JSC::callNumberConstructor):
24133 * runtime/NumberPrototype.cpp:
24134 (JSC::numberProtoFuncToString):
24135 (JSC::numberProtoFuncToLocaleString):
24136 (JSC::numberProtoFuncValueOf):
24137 (JSC::numberProtoFuncToFixed):
24138 (JSC::numberProtoFuncToExponential):
24139 (JSC::numberProtoFuncToPrecision):
24140 * runtime/ObjectConstructor.cpp:
24141 (JSC::callObjectConstructor):
24142 (JSC::objectConstructorGetPrototypeOf):
24143 (JSC::objectConstructorGetOwnPropertyDescriptor):
24144 (JSC::objectConstructorGetOwnPropertyNames):
24145 (JSC::objectConstructorKeys):
24146 (JSC::objectConstructorDefineProperty):
24147 (JSC::objectConstructorDefineProperties):
24148 (JSC::objectConstructorCreate):
24149 * runtime/ObjectPrototype.cpp:
24150 (JSC::objectProtoFuncValueOf):
24151 (JSC::objectProtoFuncHasOwnProperty):
24152 (JSC::objectProtoFuncIsPrototypeOf):
24153 (JSC::objectProtoFuncDefineGetter):
24154 (JSC::objectProtoFuncDefineSetter):
24155 (JSC::objectProtoFuncLookupGetter):
24156 (JSC::objectProtoFuncLookupSetter):
24157 (JSC::objectProtoFuncPropertyIsEnumerable):
24158 (JSC::objectProtoFuncToLocaleString):
24159 (JSC::objectProtoFuncToString):
24160 * runtime/ObjectPrototype.h:
24161 * runtime/Operations.h:
24163 * runtime/RegExpConstructor.cpp:
24164 (JSC::callRegExpConstructor):
24165 * runtime/RegExpObject.cpp:
24166 (JSC::RegExpObject::test):
24167 (JSC::RegExpObject::exec):
24168 (JSC::callRegExpObject):
24169 (JSC::RegExpObject::match):
24170 * runtime/RegExpObject.h:
24171 * runtime/RegExpPrototype.cpp:
24172 (JSC::regExpProtoFuncTest):
24173 (JSC::regExpProtoFuncExec):
24174 (JSC::regExpProtoFuncCompile):
24175 (JSC::regExpProtoFuncToString):
24176 * runtime/StringConstructor.cpp:
24177 (JSC::stringFromCharCodeSlowCase):
24178 (JSC::stringFromCharCode):
24179 (JSC::callStringConstructor):
24180 * runtime/StringPrototype.cpp:
24181 (JSC::stringProtoFuncReplace):
24182 (JSC::stringProtoFuncToString):
24183 (JSC::stringProtoFuncCharAt):
24184 (JSC::stringProtoFuncCharCodeAt):
24185 (JSC::stringProtoFuncConcat):
24186 (JSC::stringProtoFuncIndexOf):
24187 (JSC::stringProtoFuncLastIndexOf):
24188 (JSC::stringProtoFuncMatch):
24189 (JSC::stringProtoFuncSearch):
24190 (JSC::stringProtoFuncSlice):
24191 (JSC::stringProtoFuncSplit):
24192 (JSC::stringProtoFuncSubstr):
24193 (JSC::stringProtoFuncSubstring):
24194 (JSC::stringProtoFuncToLowerCase):
24195 (JSC::stringProtoFuncToUpperCase):
24196 (JSC::stringProtoFuncLocaleCompare):
24197 (JSC::stringProtoFuncBig):
24198 (JSC::stringProtoFuncSmall):
24199 (JSC::stringProtoFuncBlink):
24200 (JSC::stringProtoFuncBold):
24201 (JSC::stringProtoFuncFixed):
24202 (JSC::stringProtoFuncItalics):
24203 (JSC::stringProtoFuncStrike):
24204 (JSC::stringProtoFuncSub):
24205 (JSC::stringProtoFuncSup):
24206 (JSC::stringProtoFuncFontcolor):
24207 (JSC::stringProtoFuncFontsize):
24208 (JSC::stringProtoFuncAnchor):
24209 (JSC::stringProtoFuncLink):
24210 (JSC::stringProtoFuncTrim):
24211 (JSC::stringProtoFuncTrimLeft):
24212 (JSC::stringProtoFuncTrimRight):
24214 2010-05-28 Jedrzej Nowacki <jedrzej.nowacki@nokia.com>
24216 Reviewed by Geoffrey Garen.
24218 Fix the JSObjectSetPrototype function.
24220 A cycle in a prototype chain can cause an application hang or
24222 A check for a prototype chain cycles was added to
24223 the JSObjectSetPrototype.
24225 JSObjectSetPrototype doesn't check for cycle in prototype chain.
24226 https://bugs.webkit.org/show_bug.cgi?id=39360
24228 * API/JSObjectRef.cpp:
24229 (JSObjectSetPrototype):
24230 * API/tests/testapi.c:
24232 (checkForCycleInPrototypeChain):
24234 * runtime/JSObject.cpp:
24235 (JSC::JSObject::put):
24236 * runtime/JSObject.h:
24237 (JSC::JSObject::setPrototypeWithCycleCheck):
24239 2010-05-28 Chao-ying Fu <fu@mips.com>
24241 Reviewed by Eric Seidel.
24243 Fix MIPS JIT DoubleGreaterThanOrEqual Operands
24244 https://bugs.webkit.org/show_bug.cgi?id=39504
24246 Swapped two operands of left and right for DoubleGreaterThanOrEqual.
24247 This patch fixed two layout tests as follows.
24248 fast/js/comparison-operators-greater.html
24249 fast/js/comparison-operators-less.html
24251 * assembler/MacroAssemblerMIPS.h:
24252 (JSC::MacroAssemblerMIPS::branchDouble):
24254 2010-05-28 Gavin Barraclough <barraclough@apple.com>
24256 Reviewed by Geoff Garen.
24258 Move jit compilation from linking thunks into cti_vm_lazyLink methods.
24260 * jit/JITOpcodes.cpp:
24261 (JSC::JIT::privateCompileCTIMachineTrampolines):
24262 * jit/JITOpcodes32_64.cpp:
24263 (JSC::JIT::privateCompileCTIMachineTrampolines):
24264 * jit/JITStubs.cpp:
24265 (JSC::DEFINE_STUB_FUNCTION):
24267 2010-05-28 Gavin Barraclough <barraclough@apple.com>
24269 Reviewed by Sam Weinig.
24271 Bug 39898 - Move arity check into callee.
24273 We can reduce the size of the virtual call trampolines by moving the arity check
24274 into the callee functions. As a following step we will be able to remove the
24275 check for native function / codeblocks by performing translation in a lazy stub.
24277 * interpreter/CallFrame.h:
24278 (JSC::ExecState::init):
24279 (JSC::ExecState::setReturnPC):
24281 (JSC::JIT::privateCompile):
24282 (JSC::JIT::linkCall):
24283 (JSC::JIT::linkConstruct):
24285 (JSC::JIT::compile):
24286 * jit/JITOpcodes.cpp:
24287 (JSC::JIT::privateCompileCTIMachineTrampolines):
24288 * jit/JITOpcodes32_64.cpp:
24289 (JSC::JIT::privateCompileCTIMachineTrampolines):
24290 * jit/JITStubs.cpp:
24291 (JSC::DEFINE_STUB_FUNCTION):
24292 * runtime/Executable.cpp:
24293 (JSC::FunctionExecutable::generateJITCodeForCall):
24294 (JSC::FunctionExecutable::generateJITCodeForConstruct):
24295 (JSC::FunctionExecutable::reparseExceptionInfo):
24296 * runtime/Executable.h:
24297 (JSC::NativeExecutable::NativeExecutable):
24298 (JSC::FunctionExecutable::generatedJITCodeForCallWithArityCheck):
24299 (JSC::FunctionExecutable::generatedJITCodeForConstructWithArityCheck):
24301 2010-05-27 Luiz Agostini <luiz.agostini@openbossa.org>
24303 Reviewed by Darin Adler.
24305 UTF-16 code points compare() for String objects
24306 https://bugs.webkit.org/show_bug.cgi?id=39701
24308 Moving compare() implementation from UString to StringImpl for it to be shared
24309 with String. Adding overloaded free functions codePointCompare() in StringImpl
24310 and WTFString. Renaming function compare in UString to codePointCompare to be
24313 * runtime/JSArray.cpp:
24314 (JSC::compareByStringPairForQSort):
24315 * runtime/UString.cpp:
24316 * runtime/UString.h:
24317 (JSC::codePointCompare):
24318 * wtf/text/StringImpl.cpp:
24319 (WebCore::codePointCompare):
24320 * wtf/text/StringImpl.h:
24321 * wtf/text/WTFString.cpp:
24322 (WebCore::codePointCompare):
24323 * wtf/text/WTFString.h:
24325 2010-05-26 Darin Adler <darin@apple.com>
24327 Reviewed by Kent Tamura.
24329 Null characters handled incorrectly in ToNumber conversion
24330 https://bugs.webkit.org/show_bug.cgi?id=38088
24332 * runtime/JSGlobalObjectFunctions.cpp:
24333 (JSC::parseInt): Changed code to use UTF8String().data() instead of
24334 ascii() to fix the thread safety issue. Code path is covered by existing
24335 tests in run-javascriptcore-tests.
24336 (JSC::parseFloat): Moved comment to UString::toDouble since the issue
24337 affects all clients, not just parseFloat. Specifically, this also affects
24338 standard JavaScript numeric conversion, ToNumber.
24340 * runtime/UString.cpp:
24341 (JSC::UString::toDouble): Added a comment about incorrect space skipping.
24342 Changed trailing junk check to use the length of the CString instead of
24343 checking for a null character. Also got rid of a little unneeded logic
24344 in the case where we tolerate trailing junk.
24346 2010-05-27 Nathan Lawrence <nlawrence@apple.com>
24348 Reviewed by Geoffrey Garen.
24350 Search for the new allocation one word at a time. Improves
24351 performance on SunSpider by approximately 1%.
24352 http://bugs.webkit.org/show_bug.cgi?id=39758
24354 * runtime/Collector.cpp:
24355 (JSC::Heap::allocate):
24356 * runtime/Collector.h:
24357 (JSC::CollectorBitmap::advanceToNextPossibleFreeCell):
24359 2010-05-27 Kevin Ollivier <kevino@theolliviers.com>
24361 [wx] Build fixes for Windows after recent changes.
24365 2010-05-27 Gustavo Noronha Silva <gns@gnome.org>
24367 More build fixage for make dist.
24371 2010-05-27 Kwang Yul Seo <skyul@company100.net>
24373 Reviewed by Darin Adler.
24375 RVCT does not have strnstr.
24376 https://bugs.webkit.org/show_bug.cgi?id=39719
24378 Add COMPILER(RVCT) guard to strnstr in StringExtras.h as RVCT does not provide strnstr.
24380 * wtf/StringExtras.h:
24382 2010-05-26 Gavin Barraclough <barraclough@apple.com>
24384 Reviewed by Oliver Hunt.
24386 Bug 39795 - Add support for YARR JIT generation of greedy quantified parens at the end of the main disjunction.
24389 If the last item in a main disjunction is a quantified set of parentheses,
24390 this is easier to code generate for than the general case for quantified
24391 parentheses. This is because we never need to backtrack into the parentheses
24392 - the first match will be the final and accepted match.
24394 This patch also somewhat reverts a recent change to when fallback to PCRE
24395 occurs. At the minute the compiler is tracking on patterns which will
24396 require JIT fallback. This is handy from a performance perspective (it saves
24397 the failed attempt at JIT compilation), but it means introducing knowledge
24398 of the JITs capabilities into the other layers of the regex compilers. For
24399 the specific feature of back-references, add a flag tracking their presence
24400 on the pattern, and make these expressions fallback without attempting to
24401 JIT. For parentheses, return to detecting which cases are have or have not
24402 been handled during JIT compilation.
24404 18% progression on tagcloud, ~1.5% overall on sunspidey.
24406 * yarr/RegexCompiler.cpp:
24407 (JSC::Yarr::RegexPatternConstructor::atomBackReference):
24408 (JSC::Yarr::RegexPatternConstructor::quantifyAtom):
24409 * yarr/RegexJIT.cpp:
24410 (JSC::Yarr::RegexGenerator::TermGenerationState::isLastTerm):
24411 (JSC::Yarr::RegexGenerator::TermGenerationState::isMainDisjunction):
24412 (JSC::Yarr::RegexGenerator::generateParenthesesGreedyNoBacktrack):
24413 (JSC::Yarr::RegexGenerator::generateTerm):
24414 (JSC::Yarr::RegexGenerator::RegexGenerator):
24415 (JSC::Yarr::RegexGenerator::shouldFallBack):
24416 (JSC::Yarr::jitCompileRegex):
24417 * yarr/RegexPattern.h:
24418 (JSC::Yarr::RegexPattern::RegexPattern):
24419 (JSC::Yarr::RegexPattern::reset):
24421 2010-05-26 Gavin Barraclough <barraclough@apple.com>
24423 Reviewed by NOBODY (revert).
24425 Temporarily rolling out r60267, I appear to have hoesed perf at the last minute. :-/ Fixing.
24427 * yarr/RegexCompiler.cpp:
24428 (JSC::Yarr::RegexPatternConstructor::atomBackReference):
24429 (JSC::Yarr::RegexPatternConstructor::quantifyAtom):
24430 * yarr/RegexJIT.cpp:
24431 (JSC::Yarr::RegexGenerator::TermGenerationState::term):
24432 (JSC::Yarr::RegexGenerator::generateParenthesesSingle):
24433 (JSC::Yarr::RegexGenerator::generateTerm):
24434 (JSC::Yarr::RegexGenerator::RegexGenerator):
24435 (JSC::Yarr::jitCompileRegex):
24436 * yarr/RegexPattern.h:
24437 (JSC::Yarr::RegexPattern::RegexPattern):
24438 (JSC::Yarr::RegexPattern::reset):
24440 2010-05-26 Gustavo Noronha Silva <gns@gnome.org>
24442 Build fixes for make distcheck.
24446 2010-05-26 Gavin Barraclough <barraclough@apple.com>
24448 Reviewed by Oliver Hunt.
24450 Bug 39795 - Add support for YARR JIT generation of greedy quantified parens at the end of the main disjunction.
24452 If the last item in a main disjunction is a quantified set of parentheses,
24453 this is easier to code generate for than the general case for quantified
24454 parentheses. This is because we never need to backtrack into the parentheses
24455 - the first match will be the final and accepted match.
24457 This patch also somewhat reverts a recent change to when fallback to PCRE
24458 occurs. At the minute the compiler is tracking on patterns which will
24459 require JIT fallback. This is handy from a performance perspective (it saves
24460 the failed attempt at JIT compilation), but it means introducing knowledge
24461 of the JITs capabilities into the other layers of the regex compilers. For
24462 the specific feature of back-references, add a flag tracking their presence
24463 on the pattern, and make these expressions fallback without attempting to
24464 JIT. For parentheses, return to detecting which cases are have or have not
24465 been handled during JIT compilation.
24467 18% progression on tagcloud, ~1.5% overall on sunspidey.
24469 * yarr/RegexCompiler.cpp:
24470 (JSC::Yarr::RegexPatternConstructor::atomBackReference):
24471 (JSC::Yarr::RegexPatternConstructor::quantifyAtom):
24472 * yarr/RegexJIT.cpp:
24473 (JSC::Yarr::RegexGenerator::TermGenerationState::isLastTerm):
24474 (JSC::Yarr::RegexGenerator::TermGenerationState::isMainDisjunction):
24475 (JSC::Yarr::RegexGenerator::generateParenthesesGreedyNoBacktrack):
24476 (JSC::Yarr::RegexGenerator::generateTerm):
24477 (JSC::Yarr::RegexGenerator::RegexGenerator):
24478 (JSC::Yarr::RegexGenerator::shouldFallBack):
24479 (JSC::Yarr::jitCompileRegex):
24480 * yarr/RegexPattern.h:
24481 (JSC::Yarr::RegexPattern::RegexPattern):
24482 (JSC::Yarr::RegexPattern::reset):
24484 2010-05-26 Geoffrey Garen <ggaren@apple.com>
24486 Reviewed by Sam Weinig.
24488 Fixed a crash seen on the Leopard bot, caused by merge.
24490 * jit/JITStubs.cpp:
24491 (JSC::DEFINE_STUB_FUNCTION): Get the return address from the callframe,
24492 since it's no longer passed to us as an argument.
24494 2010-05-25 Geoffrey Garen <ggaren@apple.com>
24496 Fixed build failure caused by merge.
24498 * jit/JITStubs.cpp:
24499 (JSC::DEFINE_STUB_FUNCTION): On error, return a single value, since this
24500 function no longer returns a pair.
24502 2010-05-25 Geoffrey Garen <ggaren@apple.com>
24504 Reviewed by Oliver Hunt.
24506 <rdar://problem/8020221>
24508 Fixed a crash seen on Windows when calling a function with too many
24511 SunSpider reports no change.
24513 No test because the ASSERT I added fires in existing tests.
24515 * jit/JITStubs.cpp:
24516 (JSC::DEFINE_STUB_FUNCTION): Make sure to grow the registerFile when too
24517 many arguments have been provided, since the caller only allocated enough
24518 registerFile space for the arguments it provided, not enough for the extra
24519 copy of arguments we're going to need.
24521 2010-05-25 Kwang Yul Seo <skyul@company100.net>
24523 Reviewed by Darin Adler.
24525 Build fix for JSFunction
24526 https://bugs.webkit.org/show_bug.cgi?id=39658
24528 MSVC can't compile one of JSFunction constructors when JIT is disabled.
24529 "PassRefPtr<NativeExecutable>" causes the compile error as NativeExecutable is not defined.
24530 Add ENABLE(JIT) guard to the constructor.
24532 * runtime/JSFunction.cpp:
24533 (JSC::JSFunction::JSFunction):
24534 * runtime/JSFunction.h:
24536 2010-05-24 Gavin Barraclough <barraclough@apple.com>
24538 Reviewed by Sam Weinig.
24540 Bug 39643 - Clean up code generation in the JIT of stub function calls for op_call.
24542 Presently, as soon as op-call strays off the hot path we set up a set of values on
24543 the stack to be passed as arguments to cti functions, in case any should be called.
24545 Instead, hoist the setup of the callframe to happen slightly sooner, and make the
24546 cti functions to compile & check arity read these values from the callframe. This
24547 allows up to remove the deprecated methods to manually set up cti arguments, rather
24548 than using JITStubCall.h.
24550 * interpreter/CallFrame.h:
24553 (JSC::JIT::compileOpCallInitializeCallFrame):
24554 (JSC::JIT::compileOpCallVarargs):
24555 (JSC::JIT::compileOpCallVarargsSlowCase):
24556 (JSC::JIT::compileOpCall):
24557 (JSC::JIT::compileOpCallSlowCase):
24558 * jit/JITCall32_64.cpp:
24559 (JSC::JIT::compileOpCallInitializeCallFrame):
24560 (JSC::JIT::compileOpCallVarargs):
24561 (JSC::JIT::compileOpCallVarargsSlowCase):
24562 (JSC::JIT::compileOpCall):
24563 (JSC::JIT::compileOpCallSlowCase):
24564 * jit/JITInlineMethods.h:
24565 * jit/JITOpcodes.cpp:
24566 (JSC::JIT::privateCompileCTIMachineTrampolines):
24567 * jit/JITOpcodes32_64.cpp:
24568 (JSC::JIT::privateCompileCTIMachineTrampolines):
24569 * jit/JITStubs.cpp:
24570 (JSC::DEFINE_STUB_FUNCTION):
24574 2010-05-24 Gavin Barraclough <barraclough@apple.com>
24576 Reviewed by Sam Weinig.
24579 * bytecode/CodeBlock.cpp:
24580 (JSC::CodeBlock::dump):
24581 (JSC::CodeBlock::getByIdExceptionInfoForBytecodeOffset):
24582 * bytecode/CodeBlock.h:
24583 * bytecode/Opcode.h:
24584 * bytecompiler/BytecodeGenerator.cpp:
24585 (JSC::BytecodeGenerator::BytecodeGenerator):
24586 (JSC::BytecodeGenerator::emitConstruct):
24587 * bytecompiler/BytecodeGenerator.h:
24588 (JSC::BytecodeGenerator::emitGetByIdExceptionInfo):
24589 * interpreter/Interpreter.cpp:
24590 (JSC::Interpreter::privateExecute):
24592 (JSC::JIT::privateCompileMainPass):
24595 (JSC::JIT::compileOpCall):
24596 (JSC::JIT::compileOpCallSlowCase):
24597 * jit/JITCall32_64.cpp:
24598 (JSC::JIT::compileOpCall):
24599 (JSC::JIT::compileOpCallSlowCase):
24600 * jit/JITOpcodes.cpp:
24601 (JSC::JIT::privateCompileCTIMachineTrampolines):
24602 (JSC::JIT::privateCompileCTINativeCall):
24603 (JSC::JIT::emit_op_neq_null):
24604 (JSC::JIT::emit_op_convert_this):
24605 (JSC::JIT::emit_op_get_callee):
24606 (JSC::JIT::emit_op_create_this):
24607 * jit/JITOpcodes32_64.cpp:
24608 (JSC::JIT::privateCompileCTIMachineTrampolines):
24609 (JSC::JIT::privateCompileCTINativeCall):
24610 (JSC::JIT::emit_op_get_callee):
24611 (JSC::JIT::emit_op_create_this):
24612 * jit/JITStubs.cpp:
24613 (JSC::DEFINE_STUB_FUNCTION):
24614 (JSC::JITThunks::hostFunctionStub):
24616 (JSC::JITThunks::ctiNativeConstruct):
24618 * runtime/ExceptionHelpers.cpp:
24619 (JSC::createNotAnObjectError):
24620 * runtime/Executable.h:
24621 (JSC::NativeExecutable::create):
24622 (JSC::NativeExecutable::NativeExecutable):
24623 * runtime/JSFunction.cpp:
24624 (JSC::callHostFunctionAsConstructor):
24625 * runtime/JSFunction.h:
24628 == Rolled over to ChangeLog-2010-05-24 ==