Update ReducedFTL
https://bugs.webkit.org/show_bug.cgi?id=123805

Reviewed by Sam Weinig.
        
- Make ReducedFTL build with debug info.
        
- Give ReducedFTL a --loop mode that runs everything in a loop. Great for finding
  memory leaks and attaching a profiler.
        
- Reorder the passes so that they match the FTL.
        
- Make it possible to change the backend opt level and enable the fast isel.

* ReducedFTL/ReducedFTL.c:
(usage):
(roundUpSize):
(mmAllocateCodeSection):
(main):
* ReducedFTL/build.sh:



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@158679 268f45cc-cd09-0410-ab3c-d52691b4dbfc
GetById->GetByOffset and PutById->PutByOffset folding should mark haveStructures since it may result in structure transition watchpoints
https://bugs.webkit.org/show_bug.cgi?id=123788

Reviewed by Geoffrey Garen.
        
haveStructures is true if there are any currentlyKnownStructures that have
interesting values, since that's the only time when clobbering needs to do things.
It's a really important compile-time optimization. But that also means that anytime
we might cause currentlyKnownStructures to get set - like when we might insert some
structure transition watchpoints - we need to set haveStructures. We were forgetting
to do that for GetById->GetByOffset and PutById->PutByOffset because, I guess, we
forgot that those might insert structure transition watchpoints.

* dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::::executeEffects):



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@158680 268f45cc-cd09-0410-ab3c-d52691b4dbfc
FTL should support PutById
https://bugs.webkit.org/show_bug.cgi?id=123784

Reviewed by Geoffrey Garen.

* ftl/FTLAbbreviations.h:
(JSC::FTL::buildCall):
* ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
* ftl/FTLCompile.cpp:
(JSC::FTL::generateICFastPath):
(JSC::FTL::fixFunctionBasedOnStackMaps):
* ftl/FTLInlineCacheDescriptor.h:
(JSC::FTL::InlineCacheDescriptor::InlineCacheDescriptor):
(JSC::FTL::GetByIdDescriptor::GetByIdDescriptor):
(JSC::FTL::PutByIdDescriptor::PutByIdDescriptor):
(JSC::FTL::PutByIdDescriptor::ecmaMode):
(JSC::FTL::PutByIdDescriptor::putKind):
* ftl/FTLIntrinsicRepository.h:
* ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::compileNode):
(JSC::FTL::LowerDFGToLLVM::compilePutById):
* ftl/FTLOutput.h:
(JSC::FTL::Output::call):
* ftl/FTLSlowPathCall.cpp:
(JSC::FTL::callOperation):
* ftl/FTLSlowPathCall.h:
* ftl/FTLState.h:
* jit/CCallHelpers.h:
(JSC::CCallHelpers::setupArguments):
* runtime/Executable.h:
(JSC::ScriptExecutable::ecmaMode):



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@158681 268f45cc-cd09-0410-ab3c-d52691b4dbfc
ASSERTION FAILED: isHTMLTitleElement(m_titleElement.get()) in WebCore::Document::setTitle
https://bugs.webkit.org/show_bug.cgi?id=122092

Reviewed by Darin Adler.

Source/WebCore:

Remove a bogus assert in Document::setTitle().
m_titleElement can be either of HTMLTitleElement or SVGTitleElement. The assertion was wrong.

Backported from Blink:
https://src.chromium.org/viewvc/blink?revision=158620&view=revision

Test: svg/custom/title-assertion.html

* dom/Document.cpp:
(WebCore::Document::setTitle):
* svg/SVGTitleElement.cpp:
(WebCore::SVGTitleElement::insertedInto):

LayoutTests:

* svg/custom/title-assertion-expected.txt: Added.
* svg/custom/title-assertion.html: Added.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@158682 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Clean up the WKRemoteObjectEncoder code
https://bugs.webkit.org/show_bug.cgi?id=123811

Reviewed by Dan Bernstein.

Add a new object stream array to be used for the non-keyed encoding values
and free functions for encoding values to the object stream. Simplify object encoding
by moving the dictionary creation out into a separate function and ditching the block based methods.

* Shared/API/Cocoa/WKRemoteObjectCoder.mm:
(ensureObjectStream):
Add helper function to create an object stream.

(encodeToObjectStream):
Add overloads for encoding values into the object streams.

(encodeInvocation):
Add helper function for encoding an NSInvocation.

(encodeObject):
Call encodeInvocation if needed, otherwise just use encodeWithCoder:.

(createEncodedObject):
Helper function that sets up a dictionary, encodes the object into the dictionary and then returns the dictionary.

(-[WKRemoteObjectEncoder encodeObject:forKey:]):
Call createEncodedObject.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@158683 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Encode the class name
https://bugs.webkit.org/show_bug.cgi?id=123813

Reviewed by Dan Bernstein.

* Shared/API/Cocoa/WKRemoteObjectCoder.mm:
(encodeObject):
Get the Class using -[NSObject classForCoder] and encode its name in the object dictionary.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@158684 268f45cc-cd09-0410-ab3c-d52691b4dbfc