1. 02 Nov, 2015 19 commits
    • carlosgc@webkit.org's avatar
      Unreviewed. Bump GTK+ versions numbers. · 2ae9de9e
      carlosgc@webkit.org authored
      * Source/cmake/OptionsGTK.cmake:
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@191884 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      2ae9de9e
    • ossy@webkit.org's avatar
      [EFL] gnutls-3.3.0 jhbuild module build fails on Ubuntu 15.10 · 3672472e
      ossy@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=150622
      
      Reviewed by Gyuyoung Kim.
      
      * efl/install-dependencies:
      * efl/jhbuild.modules:
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@191883 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      3672472e
    • ossy@webkit.org's avatar
      Fix EFL jhbuild module build on Ubuntu 15.10 · b0f05815
      ossy@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=150621
      
      Reviewed by Gyuyoung Kim.
      
      * efl/jhbuild.modules:
      * efl/patches/efl-remove-XPrint.patch: Added.
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@191882 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      b0f05815
    • carlosgc@webkit.org's avatar
      [GLIB] Remove support for GSocket main loop sources from GMainLoopSource · 33c0fa1a
      carlosgc@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=150772
      
      Reviewed by Žan Doberšek.
      
      Source/WebKit2:
      
      Add GSocketMonitor class to be used by Connection to monitor the
      availability of the socket file descriptor instead of using a
      GMainLoopSource.
      
      * Platform/IPC/Connection.h:
      * Platform/IPC/glib/GSocketMonitor.cpp: Added.
      (IPC::GSocketMonitor::~GSocketMonitor):
      (IPC::GSocketMonitor::socketSourceCallback):
      (IPC::GSocketMonitor::start):
      (IPC::GSocketMonitor::stop):
      * Platform/IPC/glib/GSocketMonitor.h: Added.
      * Platform/IPC/unix/ConnectionUnix.cpp:
      (IPC::Connection::platformInvalidate):
      (IPC::Connection::open):
      * PlatformGTK.cmake:
      
      Source/WTF:
      
      It complicated the code just to make generic what is only used in
      one place.
      
      * wtf/glib/GMainLoopSource.cpp:
      (WTF::GMainLoopSource::cancel): Deleted.
      (WTF::GMainLoopSource::schedule): Deleted.
      (WTF::GMainLoopSource::scheduleTimeoutSource): Deleted.
      (WTF::GMainLoopSource::scheduleAfterDelay): Deleted.
      (WTF::GMainLoopSource::finishVoidCallback): Deleted.
      (WTF::GMainLoopSource::voidCallback): Deleted.
      (WTF::GMainLoopSource::prepareBoolCallback): Deleted.
      * wtf/glib/GMainLoopSource.h:
      (WTF::GMainLoopSource::Context::operator=): Deleted.
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@191881 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      33c0fa1a
    • carlosgc@webkit.org's avatar
      [GLIB] Remove delete on destroy GMainLoopSources · 5165902a
      carlosgc@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=150771
      
      Reviewed by Žan Doberšek.
      
      Source/WTF:
      
      Delete on destroy sources made the GMainLoopSource implementation
      more complex and they are currently unused.
      
      * wtf/glib/GMainLoopSource.cpp:
      (WTF::GMainLoopSource::boolCallback):
      (WTF::GMainLoopSource::create): Deleted.
      (WTF::GMainLoopSource::GMainLoopSource): Deleted.
      (WTF::GMainLoopSource::cancel): Deleted.
      (WTF::GMainLoopSource::scheduleAndDeleteOnDestroy): Deleted.
      (WTF::GMainLoopSource::scheduleAfterDelayAndDeleteOnDestroy): Deleted.
      (WTF::GMainLoopSource::voidCallback): Deleted.
      * wtf/glib/GMainLoopSource.h:
      
      Tools:
      
      * TestWebKitAPI/Tests/WTF/glib/GMainLoopSource.cpp:
      (TestWebKitAPI::TEST): Remove DeleteOnDestroy unit tests.
      * TestWebKitAPI/gtk/WebKit2Gtk/WebViewTest.cpp:
      (WebViewTest::wait): Use g_timeout_add instead of GMainLoopSource.
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@191880 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      5165902a
    • svillar@igalia.com's avatar
      [CSS Grid Layout] min-content row does not always shrink · 08898e5b
      svillar@igalia.com authored
      https://bugs.webkit.org/show_bug.cgi?id=144581
      
      Reviewed by Zalan Bujtas.
      
      Source/WebCore:
      
      Grid items height must be recomputed whenever the grid tracks
      change if the items had been previously stretched. In those
      cases we have to clear the override height and layout the item
      with the new row size.
      
      Tests: fast/css-grid-layout/min-content-row-must-shrink-when-column-grows.html
             fast/css-grid-layout/relayout-indefinite-heights.html
      
      * rendering/RenderGrid.cpp:
      (WebCore::RenderGrid::logicalContentHeightForChild):
      
      LayoutTests:
      
      Based on Blink's r191001 by <jfernandez@igalia.com>.
      
      * fast/css-grid-layout/min-content-row-must-shrink-when-column-grows-expected.txt: Added.
      * fast/css-grid-layout/min-content-row-must-shrink-when-column-grows.html: Added.
      * fast/css-grid-layout/relayout-indefinite-heights-expected.txt: Added.
      * fast/css-grid-layout/relayout-indefinite-heights.html: Added.
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@191879 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      08898e5b
    • carlosgc@webkit.org's avatar
      [GTK] Use RunLoop in WorkQueue implementation · b0b95a9f
      carlosgc@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=150770
      
      Reviewed by Darin Adler.
      
      Source/WebKit2:
      
      * Platform/IPC/unix/ConnectionUnix.cpp:
      (IPC::Connection::open): Get the main context from the WorkQueue Runloop.
      
      Source/WTF:
      
      Instead of using GMainLoop directly. RunLoop already abstracts the
      GMainLoop details and uses persistent sources making it more efficient.
      For the dispatchAfter implementation we use a helper context class
      and a GSource directly, since we are going to get rid of delete on
      destroy GMainLoop soon and this is the only place where we still
      use them.
      
      * wtf/RunLoop.h:
      (WTF::RunLoop::mainContext): Return the GMainContext.
      * wtf/WorkQueue.h:
      * wtf/glib/WorkQueueGLib.cpp:
      (WTF::WorkQueue::platformInitialize): The RunLoop needs to be
      created in the worker thread now, so we now use a mutex to wait
      until the thread has started and the RunLoop has been created.
      (WTF::WorkQueue::platformInvalidate): Stop the RunLoop and wait
      until the thread finishes.
      (WTF::WorkQueue::dispatch): Use RunLoop::dispatch().
      (WTF::DispatchAfterContext::DispatchAfterContext):
      (WTF::DispatchAfterContext::~DispatchAfterContext):
      (WTF::DispatchAfterContext::dispatch):
      (WTF::WorkQueue::dispatchAfter):
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@191878 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      b0b95a9f
    • beidson@apple.com's avatar
      Modern IDB: IBDObjectStore.count() support. · 54ea5841
      beidson@apple.com authored
      https://bugs.webkit.org/show_bug.cgi?id=150785
      
      Reviewed by Darin Adler.
      
      Source/WebCore:
      
      Tests: storage/indexeddb/modern/idbobjectstore-count-1.html
             storage/indexeddb/modern/idbobjectstore-count-failures.html
      
      * Modules/indexeddb/client/IDBConnectionToServer.cpp:
      (WebCore::IDBClient::IDBConnectionToServer::getCount):
      (WebCore::IDBClient::IDBConnectionToServer::didGetCount):
      * Modules/indexeddb/client/IDBConnectionToServer.h:
      * Modules/indexeddb/client/IDBConnectionToServerDelegate.h:
      
      * Modules/indexeddb/client/IDBObjectStoreImpl.cpp:
      (WebCore::IDBClient::IDBObjectStore::count):
      (WebCore::IDBClient::IDBObjectStore::doCount):
      * Modules/indexeddb/client/IDBObjectStoreImpl.h:
      
      * Modules/indexeddb/client/IDBRequestImpl.cpp:
      (WebCore::IDBClient::IDBRequest::setResult):
      * Modules/indexeddb/client/IDBRequestImpl.h:
      
      * Modules/indexeddb/client/IDBTransactionImpl.cpp:
      (WebCore::IDBClient::IDBTransaction::requestCount):
      (WebCore::IDBClient::IDBTransaction::getCountOnServer):
      (WebCore::IDBClient::IDBTransaction::didGetCountOnServer):
      * Modules/indexeddb/client/IDBTransactionImpl.h:
      
      * Modules/indexeddb/server/IDBBackingStore.h:
      
      * Modules/indexeddb/server/IDBConnectionToClient.cpp:
      (WebCore::IDBServer::IDBConnectionToClient::didGetCount):
      * Modules/indexeddb/server/IDBConnectionToClient.h:
      * Modules/indexeddb/server/IDBConnectionToClientDelegate.h:
      
      * Modules/indexeddb/server/IDBServer.cpp:
      (WebCore::IDBServer::IDBServer::getCount):
      * Modules/indexeddb/server/IDBServer.h:
      
      * Modules/indexeddb/server/MemoryIDBBackingStore.cpp:
      (WebCore::IDBServer::MemoryIDBBackingStore::getCount):
      * Modules/indexeddb/server/MemoryIDBBackingStore.h:
      
      * Modules/indexeddb/server/MemoryObjectStore.cpp:
      (WebCore::IDBServer::MemoryObjectStore::countForKeyRange):
      (WebCore::IDBServer::MemoryObjectStore::valueForKeyRange):
      (WebCore::IDBServer::MemoryObjectStore::lowestKeyWithRecordInRange):
      * Modules/indexeddb/server/MemoryObjectStore.h:
      
      * Modules/indexeddb/server/UniqueIDBDatabase.cpp:
      (WebCore::IDBServer::UniqueIDBDatabase::storeCallback):
      (WebCore::IDBServer::UniqueIDBDatabase::getCount):
      (WebCore::IDBServer::UniqueIDBDatabase::performGetCount):
      (WebCore::IDBServer::UniqueIDBDatabase::didPerformGetCount):
      (WebCore::IDBServer::UniqueIDBDatabase::performCountCallback):
      * Modules/indexeddb/server/UniqueIDBDatabase.h:
      
      * Modules/indexeddb/server/UniqueIDBDatabaseTransaction.cpp:
      (WebCore::IDBServer::UniqueIDBDatabaseTransaction::getRecord):
      (WebCore::IDBServer::UniqueIDBDatabaseTransaction::getCount):
      * Modules/indexeddb/server/UniqueIDBDatabaseTransaction.h:
      
      * Modules/indexeddb/shared/IDBResultData.cpp:
      (WebCore::IDBResultData::IDBResultData):
      (WebCore::IDBResultData::getCountSuccess):
      * Modules/indexeddb/shared/IDBResultData.h:
      (WebCore::IDBResultData::resultInteger):
      
      * Modules/indexeddb/shared/InProcessIDBServer.cpp:
      (WebCore::InProcessIDBServer::didGetCount):
      (WebCore::InProcessIDBServer::getCount):
      * Modules/indexeddb/shared/InProcessIDBServer.h:
      
      LayoutTests:
      
      * storage/indexeddb/modern/idbobjectstore-count-1-expected.txt: Added.
      * storage/indexeddb/modern/idbobjectstore-count-1.html: Added.
      * storage/indexeddb/modern/idbobjectstore-count-failures-expected.txt: Added.
      * storage/indexeddb/modern/idbobjectstore-count-failures.html: Added.
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@191877 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      54ea5841
    • darin@apple.com's avatar
      Tidy handling of type=color in HTMLInputElement a bit · e49819ae
      darin@apple.com authored
      https://bugs.webkit.org/show_bug.cgi?id=150786
      
      Reviewed by Andreas Kling.
      
      * html/ColorInputType.cpp: Fix formatting.
      (WebCore::ColorInputType::fallbackValue): Use ASCIILiteral for slightly
      better performance.
      (WebCore::ColorInputType::sanitizeValue): Use convertToASCIILowercase,
      since there is no need for the general purpose Unicode lowercasing here;
      those non-ASCII characters aren't allowed by isValidColorString.
      (WebCore::ColorInputType::suggestions): Rewrote data list code to remove
      peculiarities such as using a null check to terminate the loop instead of
      the collection length, calling back to HTMLInputElement just to get the
      isValidColorString function called. Also used reserveInitialCapacity and
      uncheckedAppend for better memory use in the result vector.
      (WebCore::ColorInputType::selectColor): Added.
      
      * html/ColorInputType.h: Made derivation from ColorChooserClient private.
      Made most functions private. Added overrides for valueAsColor and selectColor,
      now both virtual functions in InputType.
      
      * html/HTMLInputElement.cpp: Removed now-unneeded include of ColorInputType.h.
      (WebCore::HTMLInputElement::valueAsColor): Added. Calls through to the InputType.
      In a later patch, will be used by accessibility code to get the color so it
      does not have to replicate the color parsing logic from this element.
      (WebCore::HTMLInputElement::selectColor): Renamed from selectColorInColorChooser,
      because the longer name is not clearer. Also made this non-conditional.
      
      * html/HTMLInputElement.h: Added valueAsColor, renamed selectColorInColorChooser
      to selectColor and made it available unconditionally.
      
      * html/InputType.cpp:
      (WebCore::InputType::valueAsColor): Added. Returns transparent color.
      (WebCore::InputType::selectColor): Added. Does nothing by default.
      
      * html/InputType.h: Added virtual valueAsColor and selectColor. Also tidied
      up the header a bit and removed unneeded Noncopyable (since this class has
      a reference for one of the data members and so is intrinsically not copyable).
      Made isColorControl available unconditionally.
      
      * testing/Internals.cpp:
      (WebCore::Internals::selectColorInColorChooser): Removed conditionals and
      made this call selectColor rather than selectColorInColorChooser.
      
      * testing/Internals.h: Made selectColorInColorChooser unconditional.
      
      * testing/Internals.idl: Made selectColorInColorChooser unconditionally
      present. Not important to optimize the test internals class by leaving it
      out when INPUT_TYPE_COLOR is not enabled.
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@191876 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      e49819ae
    • utatane.tea@gmail.com's avatar
      [ES6] Support Generator Syntax · f2fde6af
      utatane.tea@gmail.com authored
      https://bugs.webkit.org/show_bug.cgi?id=150769
      
      Reviewed by Geoffrey Garen.
      
      .:
      
      Added ENABLE_ES6_GENERATORS flag.
      
      * Source/cmake/OptionsWin.cmake:
      * Source/cmake/WebKitFeatures.cmake:
      
      Source/JavaScriptCore:
      
      This patch implements syntax part of ES6 Generators.
      
      1. Add ENABLE_ES6_GENERATORS compile time flag. It is disabled by default, and will be enabled once ES6 generator functionality is implemented.
      2. Add lexer support for YIELD. It changes "yield" from reserved-if-strict word to keyword. And it is correct under the ES6 spec.
      3. Implement parsing functionality and YieldExprNode stub. YieldExprNode does not emit meaningful bytecodes yet. This should be implemented in the future patch.
      4. Accept "yield" Identifier as an label etc. under sloppy mode && non-generator code. http://ecma-international.org/ecma-262/6.0/#sec-generator-function-definitions-static-semantics-early-errors
      
      * Configurations/FeatureDefines.xcconfig:
      * bytecompiler/NodesCodegen.cpp:
      (JSC::YieldExprNode::emitBytecode):
      * parser/ASTBuilder.h:
      (JSC::ASTBuilder::createYield):
      * parser/Keywords.table:
      * parser/NodeConstructors.h:
      (JSC::YieldExprNode::YieldExprNode):
      * parser/Nodes.h:
      * parser/Parser.cpp:
      (JSC::Parser<LexerType>::Parser):
      (JSC::Parser<LexerType>::parseInner):
      (JSC::Parser<LexerType>::parseStatementListItem):
      (JSC::Parser<LexerType>::parseVariableDeclarationList):
      (JSC::Parser<LexerType>::parseDestructuringPattern):
      (JSC::Parser<LexerType>::parseBreakStatement):
      (JSC::Parser<LexerType>::parseContinueStatement):
      (JSC::Parser<LexerType>::parseTryStatement):
      (JSC::Parser<LexerType>::parseStatement):
      (JSC::stringForFunctionMode):
      (JSC::Parser<LexerType>::parseFunctionParameters):
      (JSC::Parser<LexerType>::parseFunctionInfo):
      (JSC::Parser<LexerType>::parseFunctionDeclaration):
      (JSC::Parser<LexerType>::parseClass):
      (JSC::Parser<LexerType>::parseExpressionOrLabelStatement):
      (JSC::Parser<LexerType>::parseExportDeclaration):
      (JSC::Parser<LexerType>::parseAssignmentExpression):
      (JSC::Parser<LexerType>::parseYieldExpression):
      (JSC::Parser<LexerType>::parseProperty):
      (JSC::Parser<LexerType>::parsePropertyMethod):
      (JSC::Parser<LexerType>::parseGetterSetter):
      (JSC::Parser<LexerType>::parseFunctionExpression):
      (JSC::Parser<LexerType>::parsePrimaryExpression):
      (JSC::Parser<LexerType>::parseArrowFunctionExpression):
      * parser/Parser.h:
      (JSC::Scope::Scope):
      (JSC::Scope::setSourceParseMode):
      (JSC::Scope::isGenerator):
      (JSC::Scope::setIsFunction):
      (JSC::Scope::setIsGenerator):
      (JSC::Scope::setIsModule):
      (JSC::Parser::pushScope):
      (JSC::Parser::isYIELDMaskedAsIDENT):
      (JSC::Parser::matchSpecIdentifier):
      (JSC::Parser::saveState):
      (JSC::Parser::restoreState):
      * parser/ParserModes.h:
      (JSC::isFunctionParseMode):
      (JSC::isModuleParseMode):
      (JSC::isProgramParseMode):
      * parser/ParserTokens.h:
      * parser/SyntaxChecker.h:
      (JSC::SyntaxChecker::createYield):
      * tests/stress/generator-methods.js: Added.
      (Hello.prototype.gen):
      (Hello.gen):
      (Hello):
      (Hello.prototype.set get string_appeared_here):
      (Hello.string_appeared_here):
      (Hello.prototype.20):
      (Hello.20):
      (Hello.prototype.42):
      (Hello.42):
      (let.object.gen):
      (let.object.set get string_appeared_here):
      (let.object.20):
      (let.object.42):
      * tests/stress/generator-syntax.js: Added.
      (testSyntax):
      (testSyntaxError):
      (testSyntaxError.Hello.prototype.get gen):
      (testSyntaxError.Hello):
      (SyntaxError.Unexpected.token.string_appeared_here.Expected.an.opening.string_appeared_here.before.a.method.testSyntaxError.Hello.prototype.set gen):
      (SyntaxError.Unexpected.token.string_appeared_here.Expected.an.opening.string_appeared_here.before.a.method.testSyntaxError.Hello):
      (SyntaxError.Unexpected.token.string_appeared_here.Expected.an.opening.string_appeared_here.before.a.method.testSyntaxError.gen):
      (testSyntaxError.value):
      (testSyntaxError.gen.ng):
      (testSyntaxError.gen):
      (testSyntax.gen):
      * tests/stress/yield-and-line-terminator.js: Added.
      (testSyntax):
      (testSyntaxError):
      (testSyntax.gen):
      (testSyntaxError.gen):
      * tests/stress/yield-label-generator.js: Added.
      (testSyntax):
      (testSyntaxError):
      (testSyntaxError.test):
      (SyntaxError.Unexpected.keyword.string_appeared_here.Expected.an.identifier.as.the.target.a.continue.statement.testSyntax.test):
      * tests/stress/yield-label.js: Added.
      (yield):
      (testSyntaxError):
      (testSyntaxError.test):
      * tests/stress/yield-named-accessors-generator.js: Added.
      (t1.let.object.get yield):
      (t1.let.object.set yield):
      (t1):
      (t2.let.object.get yield):
      (t2.let.object.set yield):
      (t2):
      * tests/stress/yield-named-accessors.js: Added.
      (t1.let.object.get yield):
      (t1.let.object.set yield):
      (t1):
      (t2.let.object.get yield):
      (t2.let.object.set yield):
      (t2):
      * tests/stress/yield-named-variable-generator.js: Added.
      (testSyntax):
      (testSyntaxError):
      (testSyntaxError.t1):
      (testSyntaxError.t1.yield):
      (testSyntax.t1.yield):
      (testSyntax.t1):
      * tests/stress/yield-named-variable.js: Added.
      (testSyntax):
      (testSyntaxError):
      (testSyntax.t1):
      (testSyntaxError.t1):
      (testSyntax.t1.yield):
      (testSyntaxError.t1.yield):
      * tests/stress/yield-out-of-generator.js: Added.
      (testSyntax):
      (testSyntaxError):
      (testSyntaxError.hello):
      (testSyntaxError.gen.hello):
      (testSyntaxError.gen):
      (testSyntax.gen):
      (testSyntax.gen.ok):
      (testSyntaxError.gen.ok):
      
      Source/WebCore:
      
      Added ENABLE_ES6_GENERATORS flag.
      
      * Configurations/FeatureDefines.xcconfig:
      
      Source/WebKit/mac:
      
      Added ENABLE_ES6_GENERATORS flag.
      
      * Configurations/FeatureDefines.xcconfig:
      
      Source/WebKit2:
      
      Added ENABLE_ES6_GENERATORS flag.
      
      * Configurations/FeatureDefines.xcconfig:
      
      Source/WTF:
      
      Added ENABLE_ES6_GENERATORS flag.
      
      * wtf/FeatureDefines.h:
      
      Tools:
      
      Added ENABLE_ES6_GENERATORS flag.
      
      * Scripts/webkitperl/FeatureList.pm:
      
      WebKitLibraries:
      
      Added ENABLE_ES6_GENERATORS flag.
      
      * win/tools/vsprops/FeatureDefines.props:
      * win/tools/vsprops/FeatureDefinesCairo.props:
      
      LayoutTests:
      
      Change "yield" from reserved-if-strict word to keyword.
      http://ecma-international.org/ecma-262/6.0/#sec-keywords
      
      * js/dom/reserved-words-as-property-expected.txt:
      * js/keywords-and-reserved_words-expected.txt:
      * js/let-syntax-expected.txt:
      * js/reserved-words-strict-expected.txt:
      * js/script-tests/keywords-and-reserved_words.js:
      * js/script-tests/reserved-words-strict.js:
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@191875 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      f2fde6af
    • darin@apple.com's avatar
      ASCIICType refinements · 28198748
      darin@apple.com authored
      https://bugs.webkit.org/show_bug.cgi?id=150787
      
      Reviewed by Geoffrey Garen.
      
      Refined ASCIICType.h by using narrower types. The most valuable part of this
      is the part where the result of toASCIIHexValue is uint8_t instead of int;
      that's slightly better for RGB values that the compiler needs to know fit
      into a byte (coming in some Color work I plan to do soon).
      
      * wtf/ASCIICType.h: Used CharacterType instead of CharType throughout, and
      also sorted the using declarations at the bottom of the header.
      (WTF::isASCII): Use the name "character" instead of "c".
      (WTF::isASCIIAlpha): Ditto. Also use isASCIILower and toASCIILowerUnchecked
      instead of writing it out.
      (WTF::isASCIIDigit): Ditto.
      (WTF::isASCIIAlphanumeric): Ditto.
      (WTF::isASCIIHexDigit): Ditto. Also use toASCIILowerUnchecked instead of
      writing it out.
      (WTF::isASCIILower): Ditto.
      (WTF::isASCIIBinaryDigit): Ditto. Also removed unneeded parentheses to match
      the style of the rest of the file.
      (WTF::isASCIIOctalDigit): Ditto.
      (WTF::isASCIIPrintable): Ditto.
      (WTF::isASCIISpace): Ditto.
      (WTF::isASCIIUpper): Ditto.
      (WTF::toASCIILower): Ditto. Also use isASCIIUpper instead of writing it out.
      (WTF::toASCIILowerUnchecked): Tweaked comment.
      (WTF::toASCIIUpper): Ditto. Also use isASCIILower instead of writing it out.
      (WTF::toASCIIHexValue): Ditto. Also change return type from int to uint8_t.
      Also broke a single assertion with && into two separate assertions and got
      rid of unnnecessary masking with 0xF0 after shifting left. Also renamed
      arguments for the two argument value so they are more sensible.
      (WTF::lowerNibbleToASCIIHexDigit): Changed argument type to uint8_t, since
      this function does not take a character. Also called it "value" instead of "c".
      Also slightly tweaked how the expression is written.
      (WTF::upperNibbleToASCIIHexDigit): Ditto. Using the more specific type also
      got rid of the need to explicitly mask in this function.
      (WTF::isASCIIAlphaCaselessEqual): Renamed the arguments for greater clarity.
      With the new clearer argument names, the comment was superfluous.
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@191874 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      28198748
    • commit-queue@webkit.org's avatar
      Add an option to make the graphics benchmark runs a specific test with fixed complexity · cea98728
      commit-queue@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=150529
      
      Patch by Said Abou-Hallawa <sabouhallawa@apple,com> on 2015-11-01
      Reviewed by Darin Adler.
      
      Beside each test in the suites tree, we are going to show the complexity
      arithmetic mean of the of the last run in an edit control. Based on a
      new option these edit controls will all be visible or hidden. If they are
      visible their values can be changed. The benchmark runner if it run in
      the non-adaptive mode will set the complexity of the test to the passed
      value and will not change it ever. The animator will animate the test and
      frame rate will also be measured.
      
      * Animometer/runner/animometer.html: Add a new option for the non-adaptive mode.
      
      * Animometer/runner/resources/animometer.css:
      (section#home input[type="number"]): Define the width of all the edit control in the <home> section.
      (section#home > suites input[type="number"]): The edit controls in the <suites> box will be right aligned and hidden by default.
      (section#home > suites input[type="number"].selected): When the class "selected" is added, the edit controls will be visible.
      (section#home > options > label > input[type="number"]): Deleted.
      
      * Animometer/runner/resources/animometer.js:
      (window.benchmarkRunnerClient.didFinishLastIteration): Update the local storage with the results of each test.
      (window.optionsManager._adaptiveTestElement): Returns the checkbox for setting the adaptive test option.
      (window.suitesManager._editElement):  Returns the edit element associated with each test element in the suites tree.
      (window.suitesManager._editsElements): Returns a list of all the elements in the <suites> box.
      (window.suitesManager._localStorageNameForTest): Change this function to take strings.
      (window.suitesManager._createTestElement): Adds an edit control beside each test.
      (window.suitesManager.updateEditsElementsState): Adds/Removes the 'selected' class to/from all the tests edit elements.
      (window.suitesManager.updateUIFromLocalStorage): Reads the edit control value from the local storage.
      (window.suitesManager.updateLocalStorageFromUI): Saves the edit control value to the local storage.
      (window.suitesManager.updateLocalStorageFromJSON): Saves the last run results to the local storage.
      (window.benchmarkController.initialize): Shows/Hides the test edit controls based on the adaptive test option.
      (window.benchmarkController.onChangeAdaptiveTestCheckbox): An onchange event handler for the adaptive test checkbox.
      
      * Animometer/tests/resources/main.js:
      (Benchmark.prototype.update): Fix the complexity of the test if the running mode is non-adaptive test and desired complexity is not zero.
      (window.runBenchmark): Add the test complexity as a new benchmark option.
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@191873 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      cea98728
    • bfulgham@apple.com's avatar
      Use convenience function in sandbox profile · 9de06511
      bfulgham@apple.com authored
      https://bugs.webkit.org/show_bug.cgi?id=150732
      <rdar://problem/23287894>
      
      Reviewed by Alexey Proskuryakov.
      
      * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb: Switch to
      the 'awd-log-directory' convenience function.
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@191872 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      9de06511
    • mmaxfield@apple.com's avatar
      Clean up some CSS & Font code · 03357538
      mmaxfield@apple.com authored
      https://bugs.webkit.org/show_bug.cgi?id=150767
      
      Reviewed by Darin Adler.
      
      This patch migrates some CSS code to use references instead of pointers.
      It also migrates some Font code to use RefPtr instead of PassRefPtr.
      
      No new tests because there is no behavior change.
      
      * css/CSSDefaultStyleSheets.cpp:
      (WebCore::CSSDefaultStyleSheets::loadFullDefaultStyle):
      (WebCore::CSSDefaultStyleSheets::loadSimpleDefaultStyle):
      (WebCore::CSSDefaultStyleSheets::ensureDefaultStyleSheetsForElement):
      * css/CSSFontSelector.cpp:
      (WebCore::createFontFace):
      (WebCore::CSSFontSelector::addFontFaceRule):
      * css/CSSFontSelector.h:
      * css/DocumentRuleSets.cpp:
      (WebCore::DocumentRuleSets::initUserStyle):
      (WebCore::DocumentRuleSets::collectRulesFromUserStyleSheets):
      (WebCore::DocumentRuleSets::appendAuthorStyleSheets):
      * css/RuleSet.cpp:
      (WebCore::RuleSet::addChildRules):
      (WebCore::RuleSet::addRulesFromSheet):
      * css/RuleSet.h:
      * css/StyleInvalidationAnalysis.cpp:
      (WebCore::StyleInvalidationAnalysis::StyleInvalidationAnalysis):
      * platform/graphics/Font.cpp:
      (WebCore::Font::verticalRightOrientationFont):
      (WebCore::Font::uprightOrientationFont):
      (WebCore::Font::smallCapsFont):
      (WebCore::Font::emphasisMarkFont):
      (WebCore::Font::brokenIdeographFont):
      (WebCore::Font::nonSyntheticItalicFont):
      (WebCore::Font::createScaledFont):
      * platform/graphics/Font.h:
      (WebCore::Font::variantFont):
      * platform/graphics/cocoa/FontCocoa.mm:
      (WebCore::Font::platformCreateScaledFont):
      * svg/SVGFontFaceElement.h:
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@191871 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      03357538
    • fpizlo@apple.com's avatar
      Dominators should be factored out of the DFG · 92dbc1f1
      fpizlo@apple.com authored
      https://bugs.webkit.org/show_bug.cgi?id=150764
      
      Reviewed by Geoffrey Garen.
      
      Source/JavaScriptCore:
      
      Factored DFGDominators.h/DFGDominators.cpp into WTF. To do this, I made two changes to the
      DFG:
      
      1) DFG now has a CFG abstraction called DFG::CFG. The cool thing about this is that in the
         future if we wanted to support inverted dominators, we could do it by just creating a
         DFG::BackwardCFG.
      
      2) Got rid of DFG::Analysis. From now on, an Analysis being invalidated is expressed by the
         DFG::Graph having a null pointer for that analysis. When we "run" the analysis, we
         just instantiate it. This makes it much more natural to integrate WTF::Dominators into
         the DFG.
      
      * CMakeLists.txt:
      * JavaScriptCore.xcodeproj/project.pbxproj:
      * dfg/DFGAnalysis.h: Removed.
      * dfg/DFGCFG.h: Added.
      (JSC::DFG::CFG::CFG):
      (JSC::DFG::CFG::root):
      (JSC::DFG::CFG::newMap<T>):
      (JSC::DFG::CFG::successors):
      (JSC::DFG::CFG::predecessors):
      (JSC::DFG::CFG::index):
      (JSC::DFG::CFG::node):
      (JSC::DFG::CFG::numNodes):
      (JSC::DFG::CFG::dump):
      * dfg/DFGCSEPhase.cpp:
      * dfg/DFGDisassembler.cpp:
      (JSC::DFG::Disassembler::createDumpList):
      * dfg/DFGDominators.cpp: Removed.
      * dfg/DFGDominators.h:
      (JSC::DFG::Dominators::Dominators):
      (JSC::DFG::Dominators::strictlyDominates): Deleted.
      (JSC::DFG::Dominators::dominates): Deleted.
      (JSC::DFG::Dominators::immediateDominatorOf): Deleted.
      (JSC::DFG::Dominators::forAllStrictDominatorsOf): Deleted.
      (JSC::DFG::Dominators::forAllDominatorsOf): Deleted.
      (JSC::DFG::Dominators::forAllBlocksStrictlyDominatedBy): Deleted.
      (JSC::DFG::Dominators::forAllBlocksDominatedBy): Deleted.
      (JSC::DFG::Dominators::forAllBlocksInDominanceFrontierOf): Deleted.
      (JSC::DFG::Dominators::forAllBlocksInIteratedDominanceFrontierOf): Deleted.
      (JSC::DFG::Dominators::forAllBlocksInPrunedIteratedDominanceFrontierOf): Deleted.
      (JSC::DFG::Dominators::forAllBlocksInDominanceFrontierOfImpl): Deleted.
      (JSC::DFG::Dominators::forAllBlocksInIteratedDominanceFrontierOfImpl): Deleted.
      (JSC::DFG::Dominators::BlockData::BlockData): Deleted.
      * dfg/DFGEdgeDominates.h:
      (JSC::DFG::EdgeDominates::operator()):
      * dfg/DFGGraph.cpp:
      (JSC::DFG::Graph::Graph):
      (JSC::DFG::Graph::dumpBlockHeader):
      (JSC::DFG::Graph::invalidateCFG):
      (JSC::DFG::Graph::substituteGetLocal):
      (JSC::DFG::Graph::handleAssertionFailure):
      (JSC::DFG::Graph::ensureDominators):
      (JSC::DFG::Graph::ensurePrePostNumbering):
      (JSC::DFG::Graph::ensureNaturalLoops):
      (JSC::DFG::Graph::valueProfileFor):
      * dfg/DFGGraph.h:
      (JSC::DFG::Graph::hasDebuggerEnabled):
      * dfg/DFGLICMPhase.cpp:
      (JSC::DFG::LICMPhase::run):
      (JSC::DFG::LICMPhase::attemptHoist):
      * dfg/DFGLoopPreHeaderCreationPhase.cpp:
      (JSC::DFG::createPreHeader):
      (JSC::DFG::LoopPreHeaderCreationPhase::run):
      * dfg/DFGNaturalLoops.cpp:
      (JSC::DFG::NaturalLoop::dump):
      (JSC::DFG::NaturalLoops::NaturalLoops):
      (JSC::DFG::NaturalLoops::~NaturalLoops):
      (JSC::DFG::NaturalLoops::loopsOf):
      (JSC::DFG::NaturalLoops::computeDependencies): Deleted.
      (JSC::DFG::NaturalLoops::compute): Deleted.
      * dfg/DFGNaturalLoops.h:
      (JSC::DFG::NaturalLoops::numLoops):
      * dfg/DFGNode.h:
      (JSC::DFG::Node::SuccessorsIterable::end):
      (JSC::DFG::Node::SuccessorsIterable::size):
      (JSC::DFG::Node::SuccessorsIterable::at):
      (JSC::DFG::Node::SuccessorsIterable::operator[]):
      * dfg/DFGOSREntrypointCreationPhase.cpp:
      (JSC::DFG::OSREntrypointCreationPhase::run):
      * dfg/DFGObjectAllocationSinkingPhase.cpp:
      * dfg/DFGPlan.cpp:
      (JSC::DFG::Plan::compileInThreadImpl):
      * dfg/DFGPrePostNumbering.cpp:
      (JSC::DFG::PrePostNumbering::PrePostNumbering):
      (JSC::DFG::PrePostNumbering::~PrePostNumbering):
      (JSC::DFG::PrePostNumbering::compute): Deleted.
      * dfg/DFGPrePostNumbering.h:
      (JSC::DFG::PrePostNumbering::preNumber):
      (JSC::DFG::PrePostNumbering::postNumber):
      * dfg/DFGPutStackSinkingPhase.cpp:
      * dfg/DFGSSACalculator.cpp:
      (JSC::DFG::SSACalculator::nonLocalReachingDef):
      (JSC::DFG::SSACalculator::reachingDefAtTail):
      * dfg/DFGSSACalculator.h:
      (JSC::DFG::SSACalculator::computePhis):
      * dfg/DFGSSAConversionPhase.cpp:
      (JSC::DFG::SSAConversionPhase::run):
      * ftl/FTLLink.cpp:
      (JSC::FTL::link):
      * ftl/FTLLowerDFGToLLVM.cpp:
      (JSC::FTL::DFG::LowerDFGToLLVM::lower):
      (JSC::FTL::DFG::LowerDFGToLLVM::safelyInvalidateAfterTermination):
      (JSC::FTL::DFG::LowerDFGToLLVM::isValid):
      
      Source/WTF:
      
      This takes what used to be DFGDominators.h/DFGDominators.cpp and turns it into a generic
      algorithm that can take any abstract graph. The idea is that you create Dominators<CFG> and
      pass it a CFG object, which defines the types of graph nodes and methods for getting
      successors, predecessors, etc. The DFG now defines a class called CFG, which is a wrapper for
      DFG::Graph that conforms to the thing that wtf/Dominators.h expects.
      
      When doing things to graphs, it's common to refer to the things in the graph as "nodes".
      Because I intend to reuse the CFG abstraction with many graph algorithms, that abstraction uses
      the term "node" to refer to a DFG basic block. But in Dominators, the method and variable names
      still use "block". This is because although Dominators are applicable to any kind of directed
      graph, it's super unlikely that we will ever use them for anything but compilers. Indeed, the
      only reason why I'm factoring them out of the DFG is so that I can use them with B3 and Air.
      
      This has the nice side effect that a user of WTF::Dominators<JSC::DFG::CFG> will see familiar
      terminology like "blocksStrictlyDominatedBy(...)" instead of "nodesStrictlyDominatedBy(...)",
      which would be super confusing.
      
      Overall, wtf/Dominators.h is a combination of what used to be in DFGDominators.h,
      DFGDominators.cpp, DFGNaiveDominators.h, and DFGNaiveDominators.cpp. I only changed code when I
      had to in order to make it generic.
      
      * WTF.xcodeproj/project.pbxproj:
      * wtf/CMakeLists.txt:
      * wtf/Dominators.h: Added.
      (WTF::Dominators::Dominators):
      (WTF::Dominators::compute):
      (WTF::Dominators::strictlyDominates):
      (WTF::Dominators::dominates):
      (WTF::Dominators::immediateDominatorOf):
      (WTF::Dominators::forAllStrictDominatorsOf):
      (WTF::Dominators::forAllDominatorsOf):
      (WTF::Dominators::forAllBlocksStrictlyDominatedBy):
      (WTF::Dominators::forAllBlocksDominatedBy):
      (WTF::Dominators::strictDominatorsOf):
      (WTF::Dominators::dominatorsOf):
      (WTF::Dominators::blocksStrictlyDominatedBy):
      (WTF::Dominators::blocksDominatedBy):
      (WTF::Dominators::forAllBlocksInDominanceFrontierOf):
      (WTF::Dominators::dominanceFrontierOf):
      (WTF::Dominators::forAllBlocksInIteratedDominanceFrontierOf):
      (WTF::Dominators::forAllBlocksInPrunedIteratedDominanceFrontierOf):
      (WTF::Dominators::iteratedDominanceFrontierOf):
      (WTF::Dominators::dump):
      (WTF::Dominators::LengauerTarjan::LengauerTarjan):
      (WTF::Dominators::LengauerTarjan::compute):
      (WTF::Dominators::LengauerTarjan::immediateDominator):
      (WTF::Dominators::LengauerTarjan::computeDepthFirstPreNumbering):
      (WTF::Dominators::LengauerTarjan::computeSemiDominatorsAndImplicitImmediateDominators):
      (WTF::Dominators::LengauerTarjan::computeExplicitImmediateDominators):
      (WTF::Dominators::LengauerTarjan::link):
      (WTF::Dominators::LengauerTarjan::eval):
      (WTF::Dominators::LengauerTarjan::compress):
      (WTF::Dominators::LengauerTarjan::BlockData::BlockData):
      (WTF::Dominators::NaiveDominators::NaiveDominators):
      (WTF::Dominators::NaiveDominators::dominates):
      (WTF::Dominators::NaiveDominators::dump):
      (WTF::Dominators::NaiveDominators::pruneDominators):
      (WTF::Dominators::ValidationContext::ValidationContext):
      (WTF::Dominators::ValidationContext::reportError):
      (WTF::Dominators::ValidationContext::handleErrors):
      (WTF::Dominators::naiveDominates):
      (WTF::Dominators::forAllBlocksInDominanceFrontierOfImpl):
      (WTF::Dominators::forAllBlocksInIteratedDominanceFrontierOfImpl):
      (WTF::Dominators::BlockData::BlockData):
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@191870 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      92dbc1f1
    • darin@apple.com's avatar
      Re-land a piece of the patch for: · 5eeabe99
      darin@apple.com authored
              [ES6] Add support for toStringTag
              https://bugs.webkit.org/show_bug.cgi?id=150696
      
              * http/tests/history/cross-origin-replace-history-object-child-expected.txt:
              * http/tests/security/cross-frame-access-custom-expected.txt:
              * http/tests/security/cross-frame-access-history-get-expected.txt:
              * http/tests/security/cross-frame-access-object-setPrototypeOf-expected.txt:
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@191869 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      5eeabe99
    • commit-queue@webkit.org's avatar
      [EFL] Fix inappropriate move semantics use in parseAndRemoveEnvironments function · 21c573a1
      commit-queue@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=150544
      
      Patch by Joonghun Park <jh718.park@samsung.com> on 2015-11-01
      Reviewed by Darin Adler.
      
      In parseAndRemoveEnvironments function, it declares its paramerter type as rvalue.
      But in ProcessLauncher::launchProcess(), the argument of
      parseAndRemoveEnvironments still be used after the call of the function.
      Currently the rvalue is not assigned to any other variable in parseAndRemoveEnvironments,
      so it doesn't lead to runtime error but use of move semantic
      is not appropriate semantically in this case.
      
      * UIProcess/Launcher/efl/ProcessLauncherEfl.cpp:
      (WebKit::parseAndRemoveEnvironments):
      (WebKit::ProcessLauncher::launchProcess):
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@191868 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      21c573a1
    • darin@apple.com's avatar
      Remove some dead and unneeded code (ScrollbarThemeSafari, RenderThemeSafari,... · 4625a91c
      darin@apple.com authored
      Remove some dead and unneeded code (ScrollbarThemeSafari, RenderThemeSafari, OPENCL, a little color space logic)
      https://bugs.webkit.org/show_bug.cgi?id=150783
      
      Reviewed by Tim Horton.
      
      Source/WebCore:
      
      * PlatformWinCairo.cmake: Removed ScrollbarThemeSafari.cpp, no reason to compile it.
      
      * platform/graphics/ca/GraphicsLayerCA.cpp:
      (WebCore::GraphicsLayerCA::setContentsToImage): Removed the code that set a color space
      on an image if it's set to device color space. This has been dead code for many releases
      of OS X and iOS at this point.
      
      * platform/graphics/filters/FEColorMatrix.h: Removed some ENABLE(OPENCL)-only code.
      * platform/graphics/filters/FEFlood.h: Ditto.
      * platform/graphics/filters/FEMerge.h: Ditto.
      * platform/graphics/filters/FETurbulence.h: Ditto.
      * platform/graphics/filters/FilterEffect.cpp:
      (WebCore::FilterEffect::applyAll): Removed.
      (WebCore::FilterEffect::apply): Removed ENABLE(OPENCL)-only code.
      (WebCore::FilterEffect::platformApplyOpenCL): Removed.
      (WebCore::FilterEffect::clearResult): Removed ENABLE(OPENCL)-only code.
      (WebCore::FilterEffect::asImageBuffer): Ditto.
      (WebCore::FilterEffect::openCLImageToImageBuffer): Removed.
      (WebCore::FilterEffect::createOpenCLImageResult): Removed.
      (WebCore::FilterEffect::transformResultColorSpace): Removed ENABLE(OPENCL)-only code.
      
      * platform/graphics/filters/FilterEffect.h: Removed ENABLE(OPENCL)-only code.
      * platform/graphics/filters/SourceAlpha.h: Ditto.
      * platform/graphics/filters/SourceGraphic.h: Ditto.
      
      * platform/win/ScrollbarThemeSafari.cpp: Removed.
      * platform/win/ScrollbarThemeSafari.h: Removed.
      
      * rendering/RenderThemeMac.mm: Removed an obsolete comment.
      
      * rendering/RenderThemeSafari.cpp: Removed.
      * rendering/RenderThemeSafari.h: Removed.
      
      * svg/graphics/filters/SVGFEImage.h: Removed ENABLE(OPENCL)-only code.
      
      Source/WTF:
      
      * wtf/FeatureDefines.h: Removed the OPENCL feature, no longer supported.
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@191867 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      4625a91c
    • ap@apple.com's avatar
      Sort EWS bots in popovers · e82d5745
      ap@apple.com authored
      https://bugs.webkit.org/show_bug.cgi?id=150782
      
      Reviewed by Darin Adler.
      
      * BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BubbleQueueView.js:
      (BubbleQueueView.prototype._popoverContentForBubbleQueue):
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@191866 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      e82d5745
  2. 01 Nov, 2015 18 commits
    • fpizlo@apple.com's avatar
      B3::reduceStrength's DCE should be more agro and less wrong · 52405b2b
      fpizlo@apple.com authored
      https://bugs.webkit.org/show_bug.cgi?id=150748
      
      Reviewed by Geoffrey Garen.
      
      Source/JavaScriptCore:
      
      First of all, our DCE had a bug where it would keep Upsilons after it deleted the Phis that
      they referenced. But our B3 DCE was also not aggressive enough. It would not eliminate
      cycles. It was also probably slower than it needed to be, since it would eliminate all
      never-referenced things on each fixpoint.
      
      This adds a presume-everyone-is-dead-and-find-live-things style DCE. This is very natural to
      write, except for Upsilons. For everything but Upsilons, it's just a worklist algorithm. For
      Upsilons, it's a fixpoint. It works fine in the end.
      
      I kept finding bugs in this algorithm when I tested it against my "Complex" test that I was
      writing as a compile time benchmark. So, I include that test in this change. I also include
      the small lowering extensions that it needed - shifting and zero extending.
      
      This change also adds an LLVM version of the Complex test. Though the LLVM version feels
      more natural to write because LLVM has traditional Phi's rather than our quirky Phi's, in
      the end LLVM ends up performing very badly - 10x to 20x worse than B3. Some of that gap will
      close once we give B3 a register allocator, but still, that's pretty good news for our B3
      strategy.
      
      * JavaScriptCore.xcodeproj/project.pbxproj:
      * assembler/MacroAssemblerX86_64.h:
      (JSC::MacroAssemblerX86_64::lshift64):
      (JSC::MacroAssemblerX86_64::rshift64):
      * assembler/X86Assembler.h:
      (JSC::X86Assembler::shlq_i8r):
      (JSC::X86Assembler::shlq_CLr):
      (JSC::X86Assembler::imull_rr):
      * b3/B3BasicBlock.cpp:
      (JSC::B3::BasicBlock::replacePredecessor):
      (JSC::B3::BasicBlock::dump):
      (JSC::B3::BasicBlock::removeNops): Deleted.
      * b3/B3BasicBlock.h:
      (JSC::B3::BasicBlock::frequency):
      * b3/B3Common.cpp:
      (JSC::B3::shouldSaveIRBeforePhase):
      (JSC::B3::shouldMeasurePhaseTiming):
      * b3/B3Common.h:
      (JSC::B3::isRepresentableAsImpl):
      * b3/B3Generate.cpp:
      (JSC::B3::generate):
      (JSC::B3::generateToAir):
      * b3/B3LowerToAir.cpp:
      (JSC::B3::Air::LowerToAir::tryAnd):
      (JSC::B3::Air::LowerToAir::tryShl):
      (JSC::B3::Air::LowerToAir::tryStoreAddLoad):
      (JSC::B3::Air::LowerToAir::tryTrunc):
      (JSC::B3::Air::LowerToAir::tryZExt32):
      (JSC::B3::Air::LowerToAir::tryArgumentReg):
      * b3/B3LoweringMatcher.patterns:
      * b3/B3PhaseScope.cpp:
      (JSC::B3::PhaseScope::PhaseScope):
      * b3/B3PhaseScope.h:
      * b3/B3ReduceStrength.cpp:
      * b3/B3TimingScope.cpp: Added.
      (JSC::B3::TimingScope::TimingScope):
      (JSC::B3::TimingScope::~TimingScope):
      * b3/B3TimingScope.h: Added.
      * b3/B3Validate.cpp:
      * b3/air/AirAllocateStack.cpp:
      (JSC::B3::Air::allocateStack):
      * b3/air/AirGenerate.cpp:
      (JSC::B3::Air::generate):
      * b3/air/AirInstInlines.h:
      (JSC::B3::Air::ForEach<Arg>::forEach):
      (JSC::B3::Air::Inst::forEach):
      (JSC::B3::Air::isLshift32Valid):
      (JSC::B3::Air::isLshift64Valid):
      * b3/air/AirLiveness.h:
      (JSC::B3::Air::Liveness::isAlive):
      (JSC::B3::Air::Liveness::Liveness):
      (JSC::B3::Air::Liveness::LocalCalc::execute):
      * b3/air/AirOpcode.opcodes:
      * b3/air/AirPhaseScope.cpp:
      (JSC::B3::Air::PhaseScope::PhaseScope):
      * b3/air/AirPhaseScope.h:
      * b3/testb3.cpp:
      (JSC::B3::testBranchEqualFoldPtr):
      (JSC::B3::testComplex):
      (JSC::B3::run):
      * runtime/Options.h:
      
      Source/WTF:
      
      * wtf/GraphNodeWorklist.h:
      (WTF::GraphNodeWorklist::saw): This method is super useful.
      
      Tools:
      
      Add an LLVM version of testb3's "testComplex".
      
      * ReducedFTL/ComplexTest.cpp: Added.
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@191865 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      52405b2b
    • ap@apple.com's avatar
      [ES6] Add support for toStringTag · eff80ecc
      ap@apple.com authored
      https://bugs.webkit.org/show_bug.cgi?id=150696
      
      Re-landing, as this wasn't the culprit.
      
      Source/JavaScriptCore:
      
      * runtime/ArrayIteratorPrototype.cpp:
      (JSC::ArrayIteratorPrototype::finishCreation):
      * runtime/CommonIdentifiers.h:
      * runtime/JSArrayBufferPrototype.cpp:
      (JSC::JSArrayBufferPrototype::finishCreation):
      (JSC::JSArrayBufferPrototype::create):
      * runtime/JSDataViewPrototype.cpp:
      (JSC::JSDataViewPrototype::create):
      (JSC::JSDataViewPrototype::finishCreation):
      (JSC::JSDataViewPrototype::createStructure):
      * runtime/JSDataViewPrototype.h:
      * runtime/JSModuleNamespaceObject.cpp:
      (JSC::JSModuleNamespaceObject::finishCreation):
      * runtime/JSONObject.cpp:
      (JSC::JSONObject::finishCreation):
      * runtime/JSPromisePrototype.cpp:
      (JSC::JSPromisePrototype::finishCreation):
      (JSC::JSPromisePrototype::getOwnPropertySlot):
      * runtime/JSTypedArrayViewPrototype.cpp:
      (JSC::typedArrayViewProtoFuncValues):
      (JSC::typedArrayViewProtoGetterFuncToStringTag):
      (JSC::JSTypedArrayViewPrototype::JSTypedArrayViewPrototype):
      (JSC::JSTypedArrayViewPrototype::finishCreation):
      * runtime/MapIteratorPrototype.cpp:
      (JSC::MapIteratorPrototype::finishCreation):
      (JSC::MapIteratorPrototypeFuncNext):
      * runtime/MapPrototype.cpp:
      (JSC::MapPrototype::finishCreation):
      * runtime/MathObject.cpp:
      (JSC::MathObject::finishCreation):
      * runtime/ObjectPrototype.cpp:
      (JSC::objectProtoFuncToString):
      * runtime/SetIteratorPrototype.cpp:
      (JSC::SetIteratorPrototype::finishCreation):
      (JSC::SetIteratorPrototypeFuncNext):
      * runtime/SetPrototype.cpp:
      (JSC::SetPrototype::finishCreation):
      * runtime/SmallStrings.cpp:
      (JSC::SmallStrings::SmallStrings):
      (JSC::SmallStrings::initializeCommonStrings):
      (JSC::SmallStrings::visitStrongReferences):
      * runtime/SmallStrings.h:
      (JSC::SmallStrings::typeString):
      (JSC::SmallStrings::objectStringStart):
      (JSC::SmallStrings::nullObjectString):
      (JSC::SmallStrings::undefinedObjectString):
      * runtime/StringIteratorPrototype.cpp:
      (JSC::StringIteratorPrototype::finishCreation):
      * runtime/SymbolPrototype.cpp:
      (JSC::SymbolPrototype::finishCreation):
      * runtime/WeakMapPrototype.cpp:
      (JSC::WeakMapPrototype::finishCreation):
      (JSC::getWeakMapData):
      * runtime/WeakSetPrototype.cpp:
      (JSC::WeakSetPrototype::finishCreation):
      (JSC::getWeakMapData):
      * tests/es6.yaml:
      * tests/modules/namespace.js:
      * tests/stress/symbol-tostringtag.js: Copied from Source/JavaScriptCore/tests/stress/symbol-tostringtag.js.
      
      LayoutTests:
      
      * js/Object-getOwnPropertyNames-expected.txt:
      * js/script-tests/Object-getOwnPropertyNames.js:
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@191864 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      eff80ecc
    • commit-queue@webkit.org's avatar
      Unreviewed, rolling out r191815 and r191821. · 7516508d
      commit-queue@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=150781
      
      Seems to have broken JSC API tests on some platforms
      (Requested by ap on #webkit).
      
      Reverted changesets:
      
      "[ES6] Add support for toStringTag"
      https://bugs.webkit.org/show_bug.cgi?id=150696
      http://trac.webkit.org/changeset/191815
      
      "Unreviewed, forgot to mark tests as passing for new feature."
      http://trac.webkit.org/changeset/191821
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@191863 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      7516508d
    • commit-queue@webkit.org's avatar
      Unreviewed, rolling out r191858. · 9e0321c8
      commit-queue@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=150780
      
      Broke the build (Requested by ap on #webkit).
      
      Reverted changeset:
      
      "Rename op_put_getter_setter to op_put_getter_setter_by_id"
      https://bugs.webkit.org/show_bug.cgi?id=150773
      http://trac.webkit.org/changeset/191858
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@191862 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      9e0321c8
    • akling@apple.com's avatar
      Move the ResourceUsageOverlay out of the way by default. · bbe76fd1
      akling@apple.com authored
      <https://webkit.org/b/150776>
      
      Reviewed by Darin Adler.
      
      Have the ResourceUsageOverlay show up in the bottom center of the viewport
      by default, instead of the top left. This way, you won't have to drag it
      out of the way all the time.
      
      * page/ResourceUsageOverlay.cpp:
      (WebCore::ResourceUsageOverlay::ResourceUsageOverlay):
      (WebCore::ResourceUsageOverlay::initialize):
      * page/ResourceUsageOverlay.h:
      * page/cocoa/ResourceUsageOverlayCocoa.mm:
      (WebCore::ResourceUsageOverlay::platformInitialize):
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@191861 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      bbe76fd1
    • fpizlo@apple.com's avatar
      Unreviewed, add a FIXME referencing https://bugs.webkit.org/show_bug.cgi?id=150777. · d1d8565c
      fpizlo@apple.com authored
      * b3/B3LowerToAir.cpp:
      (JSC::B3::Air::LowerToAir::AddressSelector::acceptRoot):
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@191860 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      d1d8565c
    • fpizlo@apple.com's avatar
      Unreviewed, add a FIXME referencing https://bugs.webkit.org/show_bug.cgi?id=150775. · 2ffb4029
      fpizlo@apple.com authored
      * b3/B3LowerToAir.cpp:
      (JSC::B3::Air::LowerToAir::tryTrunc):
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@191859 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      2ffb4029
    • utatane.tea@gmail.com's avatar
      Rename op_put_getter_setter to op_put_getter_setter_by_id · 630234e4
      utatane.tea@gmail.com authored
      https://bugs.webkit.org/show_bug.cgi?id=150773
      
      Reviewed by Mark Lam.
      
      Renaming op_put_getter_setter to op_put_getter_setter_by_id makes this op name consistent with
      the other ops' names like op_put_getter_by_id etc.
      
      * bytecode/BytecodeList.json:
      * bytecode/BytecodeUseDef.h:
      (JSC::computeUsesForBytecodeOffset):
      (JSC::computeDefsForBytecodeOffset):
      * bytecode/CodeBlock.cpp:
      (JSC::CodeBlock::dumpBytecode):
      * bytecompiler/BytecodeGenerator.cpp:
      (JSC::BytecodeGenerator::emitPutGetterSetter):
      * dfg/DFGByteCodeParser.cpp:
      (JSC::DFG::ByteCodeParser::parseBlock):
      * dfg/DFGCapabilities.cpp:
      (JSC::DFG::capabilityLevel):
      * jit/JIT.cpp:
      (JSC::JIT::privateCompileMainPass):
      * jit/JIT.h:
      * jit/JITPropertyAccess.cpp:
      (JSC::JIT::emit_op_put_getter_setter_by_id):
      (JSC::JIT::emit_op_put_getter_setter): Deleted.
      * jit/JITPropertyAccess32_64.cpp:
      (JSC::JIT::emit_op_put_getter_setter_by_id):
      (JSC::JIT::emit_op_put_getter_setter): Deleted.
      * llint/LLIntSlowPaths.cpp:
      (JSC::LLInt::LLINT_SLOW_PATH_DECL):
      * llint/LLIntSlowPaths.h:
      * llint/LowLevelInterpreter.asm:
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@191858 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      630234e4
    • commit-queue@webkit.org's avatar
      Unreviewed, rolling out r191831. · c0f547ed
      commit-queue@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=150774
      
      The new test fails (Requested by ap on #webkit).
      
      Reverted changeset:
      
      "Begin work on supporting reply blocks in
      _WKRemoteObjectRegistry"
      https://bugs.webkit.org/show_bug.cgi?id=150739
      http://trac.webkit.org/changeset/191831
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@191857 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      c0f547ed
    • commit-queue@webkit.org's avatar
      [GTK] Fix combinations of PLATFORM(GTK) and OS(DARWIN) · a91a0beb
      commit-queue@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=144560
      
      Patch by Philip Chimento <philip.chimento@gmail.com> on 2015-11-01
      Reviewed by Darin Adler.
      
      Source/bmalloc:
      
      * PlatformGTK.cmake: Added. This adds Zone.cpp to the PlatformGTK
      build, on Darwin only. Since there was previously nothing for the
      build system to do that was specific to the GTK platform in
      bmalloc, we need to create this file.
      
      Source/WebCore:
      
      * platform/graphics/PlatformDisplay.cpp: Only include the
      X11-specific GDK header on PLATFORM(X11). In other cases the
      normal gdk.h header is needed, which would otherwise be pulled in
      by gdkx.h.
      * platform/graphics/opentype/OpenTypeMathData.cpp: Change check
      for FourCharCode type from OS(DARWIN) to PLATFORM(COCOA). We
      can't remove it altogether because OT_MAKE_TAG doesn't work for
      all platforms.
      
      Source/WebKit2:
      
      * NetworkProcess/NetworkProcess.cpp:
      (WebKit::NetworkProcess::createNetworkConnectionToWebProcess):
      Change order of OS(DARWIN) and USE(UNIX_DOMAIN_SOCKETS) checks,
      so that we can use Unix domain sockets even on Darwin for the GTK
      platform.
      * Platform/IPC/Attachment.cpp: Add USE(UNIX_DOMAIN_SOCKETS) check
      to OS(DARWIN) check, in order to support GTK platform on OSX.
      * Platform/IPC/Attachment.h: Change order of OS(DARWIN) and
      USE(UNIX_DOMAIN_SOCKETS) checks throughout.
      (IPC::Attachment::size):
      (IPC::Attachment::releaseFileDescriptor):
      (IPC::Attachment::fileDescriptor):
      (IPC::Attachment::disposition):
      (IPC::Attachment::port):
      * Platform/IPC/Connection.h: Ditto.
      (IPC::Connection::identifierIsNull):
      (IPC::Connection::Identifier::Identifier):
      (IPC::Connection::xpcConnection):
      * Platform/IPC/unix/ConnectionUnix.cpp: Only use SOCK_SEQPACKET
      if the platform is not GTK, because otherwise the PLATFORM(GTK)
      check below is never reached.
      * Platform/SharedMemory.h: Change order of OS(DARWIN) and
      USE(UNIX_DOMAIN_SOCKETS) checks.
      * PluginProcess/PluginProcess.cpp: Ditto.
      (WebKit::PluginProcess::createWebProcessConnection):
      * Shared/API/c/WKBase.h: Don't include WKBaseMac.h if building
      GTK.
      * UIProcess/API/C/WKNativeEvent.h: Don't use Apple API if
      building GTK.
      * UIProcess/Launcher/ProcessLauncher.cpp: Change to
      OS(DARWIN) && !PLATFORM(GTK), in the absence of a better platform
      macro such as USE(MACH).
      (WebKit::ProcessLauncher::didFinishLaunchingProcess):
      * UIProcess/Launcher/ProcessLauncher.h: Ditto.
      * UIProcess/Network/NetworkProcessProxy.cpp: Change order of
      OS(DARWIN) and PLATFORM(GTK) checks.
      (WebKit::NetworkProcessProxy::networkProcessCrashedOrFailedToLaunch):
      (WebKit::NetworkProcessProxy::didCreateNetworkConnectionToWebProcess):
      * UIProcess/Plugins/PluginProcessProxy.cpp: Ditto.
      (WebKit::PluginProcessProxy::pluginProcessCrashedOrFailedToLaunch):
      (WebKit::PluginProcessProxy::didCreateWebProcessConnection):
      * WebProcess/Plugins/PluginProcessConnectionManager.cpp: Ditto.
      (WebKit::PluginProcessConnectionManager::getPluginProcessConnection):
      * WebProcess/WebPage/WebInspector.cpp: Ditto.
      (WebKit::WebInspector::createInspectorPage):
      * WebProcess/WebPage/WebInspectorUI.cpp: Ditto.
      (WebKit::WebInspectorUI::establishConnection):
      * WebProcess/WebProcess.cpp: Ditto.
      (WebKit::WebProcess::ensureNetworkProcessConnection):
      
      Source/WTF:
      
      * wtf/Platform.h: Don't USE(ACCELERATE) on PLATFORM(GTK).
      * wtf/WorkQueue.h: Change order of OS(DARWIN) and PLATFORM(GTK)
      checks so that GTK facilities are used even when building the
      GTK platform on Darwin.
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@191856 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      a91a0beb
    • carlosgc@webkit.org's avatar
      [GTK] Use RunLoop::Timer in PluginInfoCache · ea8f5580
      carlosgc@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=150757
      
      Reviewed by Darin Adler.
      
      Use RunLoop::Timer instead of GMainLoopSource to save the cache
      contents in an idle. Also remove the mutex, since RunLoop::Timer
      is thread safe and saveToFile() is private and only called by the
      main thread loop. Also removed the code to save the file in the
      destructor since PluginInfoCache is a singleton and never
      destroyed. It's very unlikely that the program finished before the
      cache is saved, but even if that happens it would be harmless, the
      cache will be saved at some point the next time.
      
      * UIProcess/Plugins/gtk/PluginInfoCache.cpp:
      (WebKit::PluginInfoCache::PluginInfoCache):
      (WebKit::PluginInfoCache::updatePluginInfo):
      (WebKit::PluginInfoCache::~PluginInfoCache):
      (WebKit::PluginInfoCache::saveToFile):
      * UIProcess/Plugins/gtk/PluginInfoCache.h:
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@191855 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      ea8f5580
    • carlosgc@webkit.org's avatar
      [GTK] Use a RunLoop::Timer to schedule rendering frames in accelerated compositing mode · a76728e4
      carlosgc@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=150756
      
      Reviewed by Darin Adler.
      
      Use a RunLoop::Timer instead of a GMainLoopSource for the
      accelerated compositing render loop to improve the performance,
      since RunLoop::Timer uses a persistent source.
      All the logic to schedule rames has been moved to a helper
      internal class RenderFrameScheduler.
      
      * WebProcess/WebPage/gtk/LayerTreeHostGtk.cpp:
      (WebKit::LayerTreeHostGtk::RenderFrameScheduler::RenderFrameScheduler):
      (WebKit::LayerTreeHostGtk::RenderFrameScheduler::~RenderFrameScheduler):
      (WebKit::LayerTreeHostGtk::RenderFrameScheduler::start):
      (WebKit::LayerTreeHostGtk::RenderFrameScheduler::stop):
      (WebKit::shouldSkipNextFrameBecauseOfContinousImmediateFlushes):
      (WebKit::LayerTreeHostGtk::RenderFrameScheduler::nextFrame):
      (WebKit::LayerTreeHostGtk::RenderFrameScheduler::renderFrame):
      (WebKit::LayerTreeHostGtk::LayerTreeHostGtk):
      (WebKit::LayerTreeHostGtk::renderFrame):
      (WebKit::LayerTreeHostGtk::scheduleLayerFlush):
      (WebKit::LayerTreeHostGtk::cancelPendingLayerFlush):
      (WebKit::LayerTreeHostGtk::layerFlushTimerFired): Deleted.
      * WebProcess/WebPage/gtk/LayerTreeHostGtk.h:
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@191854 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      a76728e4
    • commit-queue@webkit.org's avatar
      Make the size of the benchmark canvas adaptive to the screen size and screen resolution · 72302f08
      commit-queue@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=150530
      
      Patch by Said Abou-Hallawa <sabouhallawa@apple,com> on 2015-11-01
      Reviewed by Darin Adler.
      
      We want to set the size of the benchmark stage dynamically such that it
      depends on the screen resolution and the device scale factor. This patch
      does more than that because the home page css was not done properly. To
      use the flex box layout, the animometer.css has to be rewritten almost from
      scratch. The suites tree has to be rewritten also because it was not collapsing
      and with the flex box layout it was going outside of the window area. The
      options handling and the local storage handling had to be rewritten to
      allow more flexibility with this patch and the future patches. The code
      in animometer.js was reorganized into objects to allow distributing the code
      nicely among separate entities.
      
      * Animometer/resources/extensions.js:
      (Point.elementClientSize): Returns the client size of an HTMLElement as a Point object.
      (Insets.prototype.get width): Follow the function opening brace style guidelines.
      (Insets.prototype.get height):
      (Insets.prototype.get size): Returns the size of an Insets as a Point object.
      
      (window.DocumentExtension): Provides document helper functions. It should be assailable from the runner and the tests.
      (window.DocumentExtension.createElement): Creates an HTMLElement given its name, attributes and parentElement.
      (window.DocumentExtension.createSvgElement): Creates an SVGElement given its name, attributes and parentElement (moved from utilities.js).
      (window.DocumentExtension.insertCssRuleAfter): Inserts a CSS rule after an exiting rule given its text.
      
      (ResultsTable.prototype._showHeader): Use DocumentExtension functions.
      (ResultsTable.prototype._showGraph): Use DocumentExtension functions and create a real button for "Graph..." option.
      (ResultsTable.prototype._showJSON): Use DocumentExtension functions and create a real button for "JSON..." option.
      (Options): Deleted.
      
      * Animometer/runner/animometer.html: Restructure the page to use the flex box layout.
      
      * Animometer/runner/resources/animometer.css:
      (html,body):
      (button):
      
      (button.large-button):The large button appears in the animometer.html.
      (button.large-button:active):
      (button.large-button:disabled):
      
      (button.small-button): The small button appears in the results table.
      (button.small-button:active):
      
      (.tree): The tree class is used to list the suites and their tests.
      (.tree .expand-button): This button expands a tree element.
      (.tree .expand-button ~ ul): Hide the children (<ul>...</ul>) of a parent node by default.
      (.tree .expand-button:checked ~ ul): Show the children of a parent node only when checked.
      (.tree ul): Hide the list bullets.
      (.tree li): Indent every node in the tree relative to its parent.
      (.tree ul li): Indent all the non top level nodes only (the tests nodes in our case).
      (.tree > li:last-child): Do not indent the bottom of the last child node.
      (.tree-label): Style for all the labels in the tree.
      (label.tree-label): Style for the labels in the top level only (the suites nodes in our case).
      (label.tree-label:before): Style the unchecked case of the expand-button.
      (:checked ~ label.tree-label:before): Style the checked case of the expand-button.
      
      (table.results-table): The results table appears while running the test and at the end.
      (.results-table td):
      (.results-table th):
      
      (div.results-json): The JSON div appears per test or for the whole run.
      
      (main): This is the flex box container.
      
      (section): A section is displayed exclusively inside the <main>. It is hidden by default.
      (section.selected): When it is selected, its layout is flex layout.
      (section > footer): The header or the footer of a section should not take more than 15% of the container.
      
      (section#home): The home section has <suites> and <options> parts to be laid out in the middle.
      (section#home > options):
      (section#home > suites): The <suites> should not take more than 40% of the width.
      (section#home > options > label): The benchmark title.
      (section#home > header > h2): The benchmark title.
      (section#home > options > label > input[type="number"]): Sets the width of the option edit control.
      
      (section#running): The running section contain the runner <iframe> which takes the whole area of the <main>.
      (section#running > #running-test): This is the <iframe> container.
      (section#running > #running-test > iframe): The <iframe> is created by the runner for each test.
      (section#running > #progress): This is the progress bar.
      (section#running > #progress > #progress-completed): This is another element which grows while the runner is progressing.
      (section#running > #record): This the container of the record results table which is shown while running a test.
      
      (section#results):
      (section#json):
      (section#test-json):
      (section#test-graph): All these sections have the same layout. A <data> element is laid out between <header> and <footer>.
      
      (section#results > data):
      (section#json > data):
      (section#test-json > data):
      (section#test-graph > data): The <data> element should take 70% of the <section>.
      
      (section#test-graph > data > svg):
      (.axis line):
      (.left-samples): These styles are for the d3 graph.
      
      (section#test-json > data): This is the style of the JSON <data> element.
      
      (iframe): Deleted.
      (label, p): Deleted.
      (section > p): Deleted.
      (section#home > p): Deleted.
      (section#home > p:first-child): Deleted.
      (#testContainer): Deleted.
      (section#running #progress-completed): Deleted.
      (section#results > table): Deleted.
      (section#results > table td, th): Deleted.
      (section#results > table tr.alt, td): Deleted.
      (section#results > table th): Deleted.
      (section#json > textarea): Deleted.
      (.options): Deleted.
      (.options p): Deleted.
      (#suites ul): Deleted.
      (#suites ul ul): Deleted.
      (#suites ul ul input, #suites ul ul label): Deleted.
      (#suites.showTests ul ul): Deleted.
      (.column): Deleted.
      (input[type="number"]): Deleted.
      (.buttons): Deleted.
      (.small-button): Deleted.
      (#graphContainer): Deleted.
      (.right-samples): Deleted.
      (.sample-time): Deleted.
      (.left-mean): Deleted.
      (.right-mean): Deleted.
      
      * Animometer/runner/resources/animometer.js:
      (window.benchmarkRunnerClient.initialize): Initialize the client object with the options and the suites.
      (window.benchmarkRunnerClient.willStartFirstIteration): Use new css selectors for results and the record table.
      (window.benchmarkRunnerClient.didFinishLastIteration): Move the code which sets the JSON text to sectionsManager.showJSON().
      
      (window.sectionsManager): Responsible of managing the <section>s elements inside animometer.html.
      (window.sectionsManager._sectionHeaderH1Element): Return the <h1> inside the <header> of a given section.
      (window.sectionsManager._sectionDataDivElement): Return the <div> inside the <data> of a given section.
      (window.sectionsManager.showScore): Show the score of the last benchmark run.
      (window.sectionsManager.showTestName): Show the test name for detailed results <section>.
      (window.sectionsManager.showJSON): Shows the JSON text of the last benchmark or for a specific test.
      (window.sectionsManager.showSection): Shows a specific <section> in the <main> container.
      (window.sectionsManager.setupSectionStyle): Sets css attributes for all the <section>s.
      (window.sectionsManager.setupRunningSectionStyle): Sets the css attributes for the running <section> only.
      
      (window.optionsManager): Responsible of managing the user options and streaming them to/form the localStorage.
      (window.optionsManager._optionsElements): Returns the children <input> elements of the <options>.
      (window.optionsManager.updateUIFromLocalStorage): Restore the values of the <options> UI elements from the local storage.
      (window.optionsManager.updateLocalStorageFromUI): Saves the values of the <options> UI elements to the local storage.
      
      (window.suitesManager): Responsible of managing the user suites and streaming them to/form the localStorage.
      (window.suitesManager._treeElement): Returns the suites tree container element.
      (window.suitesManager._suitesElements): Returns a list of the suites elements.
      (window.suitesManager._checkboxElement): Returns the checkbox element of a given suite.
      (window.suitesManager._localStorageNameForTest): Generates a string for the tuple <suite, test> to be saved in the localStorage.
      (window.suitesManager._updateSuiteCheckboxState): Updates the state of a suite checkbox from the state of its tests' checkboxes.
      (window.suitesManager._updateStartButtonState): Updates the state of the start button from the state of the suites' checkboxes.
      (window.suitesManager._onChangeSuiteCheckbox): Called when a suite checkbox is clicked.
      (window.suitesManager._onChangeTestCheckbox): Called when a test checkbox is clicked.
      (window.suitesManager._createSuiteElement): Creates suite node in the suites tree.
      (window.suitesManager._createTestElement): Creates test node in the suites tree.
      (window.suitesManager.createElements): Creates the suites tree dynamically from the array Suites.
      (window.suitesManager.updateUIFromLocalStorage): Restore the values of the <suites> UI elements from the local storage.
      (window.suitesManager.updateLocalStorageFromUI): aves the values of the <suites> UI elements to the local storage.
      
      (window.benchmarkController): This is the UI controller of the animometer.html page.
      (window.benchmarkController.initialize): Called when the animometer.html page is loaded.
      (window.benchmarkController._runBenchmark): Starts a benchmark run.
      (window.benchmarkController.startTest): Called when the "Start Test" button is clicked.
      (window.benchmarkController.showResults): Called at the end of the test to show the final results.
      (window.benchmarkController.showJson): Called from the results page to show the JSON of the last benchmark run.
      (window.benchmarkController.showTestGraph): Called from the results the table to show a graph for the samples of a specific test.
      (window.benchmarkController.showTestJSON): Called from the results the table to show a JSON for the samples of a specific test.
      
      (showSection): Deleted.
      (startTest): Deleted.
      (showResults): Deleted.
      (showJson): Deleted.
      (showTestGraph): Deleted.
      (showTestJSON): Deleted.
      (initialize.toggleTestsCheckbox.onchange): Deleted.
      (initialize): Deleted.
      (updateSuiteSelection): Deleted.
      (updateTestSelection): Deleted.
      (updateSuiteCheckbox): Deleted.
      (localStorageNameForTest): Deleted.
      (populateSettings.): Deleted.
      (populateSettings): Deleted.
      
      * Animometer/runner/resources/benchmark-runner.js:
      (BenchmarkRunner): Pass the frameContainer element to the BenchmarkRunner.
      (BenchmarkRunner.prototype._appendFrame): Remove unused parameter unwanted styling code.
      (BenchmarkRunner.prototype.runMultipleIterations):  Use the this._client.iterationCount instead of passing it as a parameter also.
      
      * Animometer/runner/resources/graph.js:
      (graph): Calculate the size of the chart from the container element.
      
      * Animometer/tests/bouncing-particles/resources/bouncing-svg-images.js:
      (BouncingSvgImage):
      * Animometer/tests/bouncing-particles/resources/bouncing-svg-particles.js:
      (BouncingSvgParticlesStage.prototype._createDefs):
      (BouncingSvgParticlesStage.prototype._createClipStar):
      * Animometer/tests/bouncing-particles/resources/bouncing-svg-shapes.js:
      (BouncingSvgShape.prototype._createShape):
      (BouncingSvgShapesStage.prototype.createGradient):
      Call DocumentExtension.createSvgElement() instead of calling Utilities.createSvgElement().
      
      * Animometer/tests/resources/main.js:
      (Animator.prototype.animate):
      (Benchmark):
      (Benchmark.prototype.update):
      * Animometer/tests/resources/stage.js:
      (StageBenchmark.prototype.showResults):
      Rename the options to match the <input> ids in animometer.html.
      
      * Animometer/tests/resources/utilities.js:
      (window.Utilities.createSvgElement): Deleted.
      
      * Animometer/tests/text/layering-text.html:
      * Animometer/tests/text/resources/layering-text.js:
      (LayeringTextStage):
      (LayeringTextStage.prototype._setFontSize): Sets the size of the text dynamically such that they all fit in one stage.
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@191853 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      72302f08
    • carlosgc@webkit.org's avatar
      [GTK] Use RunLoop::Timer in main thread shared timer GTK+ implementation · 3c0bbd86
      carlosgc@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=150754
      
      Reviewed by Darin Adler.
      
      Source/WebCore:
      
      It's more efficient because it uses a persistent source and it
      simplifies the code even more.
      
      * platform/MainThreadSharedTimer.cpp:
      (WebCore::MainThreadSharedTimer::fired): Make it non-const to be
      able to use it as function callback of a RunLoop::Timer.
      * platform/MainThreadSharedTimer.h:
      * platform/gtk/MainThreadSharedTimerGtk.cpp:
      (WebCore::MainThreadSharedTimer::MainThreadSharedTimer):
      Initialize the RunLoop::Timer and set the prioriry.
      (WebCore::MainThreadSharedTimer::setFireInterval):
      (WebCore::MainThreadSharedTimer::stop):
      
      Source/WTF:
      
      Add API to set the priority of a RunLoop::Timer for GLib.
      
      * wtf/RunLoop.h:
      * wtf/glib/RunLoopGLib.cpp:
      (WTF::RunLoop::TimerBase::setPriority):
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@191852 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      3c0bbd86
    • akling@apple.com's avatar
      Add a debug overlay with information about web process resource usage. · 8b6e7200
      akling@apple.com authored
      <https://webkit.org/b/150599>
      
      Unreviewed follow-up to r191849.
      
      Add missing call to uninstall the PageOverlay if the ResourceUsageOverlay is being
      disabled through the setting. This way you don't end up with an unremovable overlay
      in the MiniBrowser.
      
      * page/ResourceUsageOverlay.cpp:
      (WebCore::ResourceUsageOverlay::~ResourceUsageOverlay):
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@191851 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      8b6e7200
    • beidson@apple.com's avatar
      IDB: Date objects don't work as keys or values. · e2b4f6be
      beidson@apple.com authored
      https://bugs.webkit.org/show_bug.cgi?id=150743
      
      Reviewed by Darin Adler.
      
      Source/WebCore:
      
      Test: storage/indexeddb/modern/date-basic.html
      
      The combination of the autogenerated bindings with Deprecated::ScriptValue was
      losing the fidelity of "Date" objects being Dates, and not just normal Objects.
      
      This was breaking their usage as IDBKeys.
      
      Custom binding + reworking the IDBObjectStore IDLs to use JSValue instead of ScriptValue
      fixes this handily.
      
      * Modules/indexeddb/IDBObjectStore.h:
      * Modules/indexeddb/IDBObjectStore.idl:
      
      * Modules/indexeddb/client/IDBObjectStoreImpl.cpp:
      (WebCore::IDBClient::IDBObjectStore::add):
      (WebCore::IDBClient::IDBObjectStore::put):
      (WebCore::IDBClient::IDBObjectStore::putOrAdd):
      * Modules/indexeddb/client/IDBObjectStoreImpl.h:
      
      * Modules/indexeddb/legacy/LegacyObjectStore.cpp:
      (WebCore::LegacyObjectStore::add):
      (WebCore::LegacyObjectStore::put):
      * Modules/indexeddb/legacy/LegacyObjectStore.h:
      
      * bindings/js/IDBBindingUtilities.cpp:
      (WebCore::internalCreateIDBKeyFromScriptValueAndKeyPath):
      (WebCore::maybeCreateIDBKeyFromScriptValueAndKeyPath):
      (WebCore::canInjectIDBKeyIntoScriptValue):
      (WebCore::scriptValueToIDBKey):
      * bindings/js/IDBBindingUtilities.h:
      
      * bindings/js/JSIDBObjectStoreCustom.cpp:
      (WebCore::putOrAdd):
      (WebCore::JSIDBObjectStore::putRecord):
      (WebCore::JSIDBObjectStore::add):
      
      LayoutTests:
      
      * storage/indexeddb/modern/date-basic-expected.txt: Added.
      * storage/indexeddb/modern/date-basic.html: Added.
      * storage/indexeddb/modern/get-keyrange-expected.txt:
      * storage/indexeddb/modern/get-keyrange.html:
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@191850 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      e2b4f6be
    • akling@apple.com's avatar
      Add a debug overlay with information about web process resource usage. · 43fb3523
      akling@apple.com authored
      <https://webkit.org/b/150599>
      
      Reviewed by Darin Adler.
      
      Source/JavaScriptCore:
      
      Have Heap track the exact number of bytes allocated in CopiedBlock, MarkedBlock and
      WeakBlock objects, keeping them in a single location that can be sampled by the
      resource usage overlay thread.
      
      The bulk of these changes is threading a Heap& through from sites where blocks are
      allocated or freed.
      
      * heap/CopiedBlock.cpp:
      (JSC::CopiedBlock::createNoZeroFill):
      (JSC::CopiedBlock::destroy):
      (JSC::CopiedBlock::create):
      * heap/CopiedBlock.h:
      * heap/CopiedSpace.cpp:
      (JSC::CopiedSpace::~CopiedSpace):
      (JSC::CopiedSpace::tryAllocateOversize):
      (JSC::CopiedSpace::tryReallocateOversize):
      * heap/CopiedSpaceInlines.h:
      (JSC::CopiedSpace::recycleEvacuatedBlock):
      (JSC::CopiedSpace::recycleBorrowedBlock):
      (JSC::CopiedSpace::allocateBlockForCopyingPhase):
      (JSC::CopiedSpace::allocateBlock):
      (JSC::CopiedSpace::startedCopying):
      * heap/Heap.cpp:
      (JSC::Heap::~Heap):
      (JSC::Heap::sweepNextLogicallyEmptyWeakBlock):
      * heap/Heap.h:
      (JSC::Heap::blockBytesAllocated):
      * heap/HeapInlines.h:
      (JSC::Heap::didAllocateBlock):
      (JSC::Heap::didFreeBlock):
      * heap/MarkedAllocator.cpp:
      (JSC::MarkedAllocator::allocateBlock):
      * heap/MarkedBlock.cpp:
      (JSC::MarkedBlock::create):
      (JSC::MarkedBlock::destroy):
      * heap/MarkedBlock.h:
      * heap/MarkedSpace.cpp:
      (JSC::MarkedSpace::freeBlock):
      * heap/WeakBlock.cpp:
      (JSC::WeakBlock::create):
      (JSC::WeakBlock::destroy):
      * heap/WeakBlock.h:
      * heap/WeakSet.cpp:
      (JSC::WeakSet::~WeakSet):
      (JSC::WeakSet::addAllocator):
      (JSC::WeakSet::removeAllocator):
      
      Source/WebCore:
      
      A new kind of PageOverlay is added behind the ENABLE(RESOURCE_USAGE_OVERLAY) flag.
      It's owned by Page, but not instantiated unless the Settings::resourceUsageOverlayVisible flag is set.
      
      All ResourceUsageOverlay objects share a single sampler thread. The thread currently runs every 500ms
      and samples CPU usage, dirty memory regions, and GC heap size/capacity.
      
      Most things in here are currently quite Mac-specific, but I will be iterating on this towards a more
      cross-platform friendly solution.
      
      There are two small changes to PageOverlay in order to support dragging the resource usage overlay:
      
          - A "should ignore mouse events outside bounds" state flag. This is on by default
            but turned off during a drag.
          - PageOverlay::bounds() will now return the override frame verbatim if one is set,
            instead of returning it relocated to 0,0.
      
      Note that this is intended as a tool for WebKit engine developers to better understand memory usage.
      It's not a goal to expose this information to end users.
      
      * WebCore.xcodeproj/project.pbxproj:
      * page/Page.cpp:
      (WebCore::Page::setResourceUsageOverlayVisible):
      * page/Page.h:
      * page/PageOverlay.cpp:
      (WebCore::PageOverlay::bounds):
      (WebCore::PageOverlay::mouseEvent):
      * page/PageOverlay.h:
      * page/ResourceUsageOverlay.cpp: Added.
      (WebCore::ResourceUsageOverlay::ResourceUsageOverlay):
      (WebCore::ResourceUsageOverlay::~ResourceUsageOverlay):
      (WebCore::ResourceUsageOverlay::mouseEvent):
      * page/ResourceUsageOverlay.h: Added.
      * page/Settings.cpp:
      (WebCore::Settings::setResourceUsageOverlayVisible):
      * page/Settings.h:
      (WebCore::Settings::resourceUsageOverlayVisible):
      * page/cocoa/ResourceUsageOverlayCocoa.mm: Added.
      (-[WebOverlayLayer initWithResourceUsageOverlay:]):
      (-[WebOverlayLayer drawInContext:]):
      (WebCore::RingBuffer::RingBuffer):
      (WebCore::RingBuffer::append):
      (WebCore::RingBuffer::last):
      (WebCore::RingBuffer::forEach):
      (WebCore::RingBuffer::incrementIndex):
      (WebCore::RingBuffer::decrementIndex):
      (WebCore::sharedData):
      (WebCore::ResourceUsageOverlay::platformInitialize):
      (WebCore::ResourceUsageOverlay::platformDestroy):
      (WebCore::drawCpuHistory):
      (WebCore::drawGCHistory):
      (WebCore::drawSlice):
      (WebCore::drawPlate):
      (WebCore::drawMemoryPie):
      (WebCore::formatByteNumber):
      (WebCore::showText):
      (WebCore::ResourceUsageOverlay::draw):
      (WebCore::dirtyPagesPerVMTag):
      (WebCore::cpuUsage):
      (WebCore::runSamplerThread):
      * platform/spi/cocoa/MachVMSPI.h:
      
      Source/WebKit2:
      
      Add WK2 preferences SPI for showing/hiding the resource usage overlay.
      
      * Shared/WebPreferencesDefinitions.h:
      * UIProcess/API/C/WKPreferences.cpp:
      (WKPreferencesSetResourceUsageOverlayVisible):
      (WKPreferencesGetResourceUsageOverlayVisible):
      * UIProcess/API/C/WKPreferencesRefPrivate.h:
      * UIProcess/API/Cocoa/WKPreferences.mm:
      (-[WKPreferences _resourceUsageOverlayVisible]):
      (-[WKPreferences _setResourceUsageOverlayVisible:]):
      * UIProcess/API/Cocoa/WKPreferencesPrivate.h:
      * WebProcess/WebPage/WebPage.cpp:
      (WebKit::WebPage::updatePreferences):
      
      Source/WTF:
      
      Add ENABLE(RESOURCE_USAGE_OVERLAY) flag, enabled on Mac by default.
      
      * wtf/Platform.h:
      
      Tools:
      
      Add a menu item to the MiniBrowser so we can toggle the resource usage overlay on/off.
      
      * MiniBrowser/mac/SettingsController.h:
      * MiniBrowser/mac/SettingsController.m:
      (-[SettingsController _populateMenu]):
      (-[SettingsController validateMenuItem:]):
      (-[SettingsController toggleShowResourceUsageOverlay:]):
      (-[SettingsController resourceUsageOverlayVisible]):
      * MiniBrowser/mac/WK2BrowserWindowController.m:
      (-[WK2BrowserWindowController didChangeSettings]):
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@191849 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      43fb3523
    • achristensen@apple.com's avatar
      Share more code between NETWORK_SESSION and non-NETWORK_SESSION NetworkResourceLoaders · 421e6f48
      achristensen@apple.com authored
      https://bugs.webkit.org/show_bug.cgi?id=150742
      
      Reviewed by Darin Adler.
      
      r191457 added enough code to NetworkResourceLoader to load most resources successfully if there are no errors.
      It passed about 80% of LayoutTests/http and crashed sometimes.
      This passes about 95% of LayoutTests/http and does not crash on any of the LayoutTests/http.
      It should not change behavior of the non-NETWORK_SESSION code which is currently the default in trunk.
      
      * NetworkProcess/NetworkResourceLoader.cpp:
      (WebKit::NetworkResourceLoader::abort):
      (WebKit::NetworkResourceLoader::sharedDidReceiveResponse):
      (WebKit::NetworkResourceLoader::sharedDidReceiveBuffer):
      (WebKit::NetworkResourceLoader::sharedDidFinishLoading):
      (WebKit::NetworkResourceLoader::sharedDidFail):
      (WebKit::NetworkResourceLoader::sharedWillSendRedirectedRequest):
      (WebKit::NetworkResourceLoader::willPerformHTTPRedirection):
      (WebKit::NetworkResourceLoader::didReceiveChallenge):
      (WebKit::NetworkResourceLoader::didReceiveResponse):
      (WebKit::NetworkResourceLoader::didReceiveData):
      (WebKit::NetworkResourceLoader::didCompleteWithError):
      (WebKit::NetworkResourceLoader::didReceiveResponseAsync):
      (WebKit::NetworkResourceLoader::didReceiveBuffer):
      (WebKit::NetworkResourceLoader::didFinishLoading):
      (WebKit::NetworkResourceLoader::didFail):
      (WebKit::NetworkResourceLoader::willSendRequestAsync):
      * NetworkProcess/NetworkResourceLoader.h:
      * NetworkProcess/NetworkSession.h:
      (WebKit::NetworkSessionTaskClient::~NetworkSessionTaskClient):
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@191848 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      421e6f48
  3. 31 Oct, 2015 3 commits
    • beidson@apple.com's avatar
      storage/indexeddb/modern/idbdatabase-deleteobjectstore-failures.html is flaky. · 8886106a
      beidson@apple.com authored
      https://bugs.webkit.org/show_bug.cgi?id=150735
      
      Reviewed by Darin Adler.
      
      Source/WebCore:
      
      No new tests (Covered by existing tests).
      
      Transactions were liable to commit too early because IDBRequests could be waiting
      to dispatch their error/success events but their operations would no longer be
      registered with the transaction.
      
      Having outstanding requests should also keep a transaction from committing, just
      like having outstanding operations should.
      
      * Modules/indexeddb/client/IDBOpenDBRequestImpl.cpp:
      (WebCore::IDBClient::IDBOpenDBRequest::onUpgradeNeeded):
      
      * Modules/indexeddb/client/IDBRequestImpl.cpp:
      (WebCore::IDBClient::IDBRequest::dispatchEvent):
      
      * Modules/indexeddb/client/IDBTransactionImpl.cpp:
      (WebCore::IDBClient::IDBTransaction::addRequest):
      (WebCore::IDBClient::IDBTransaction::removeRequest):
      (WebCore::IDBClient::IDBTransaction::operationTimerFired):
      (WebCore::IDBClient::IDBTransaction::requestGetRecord):
      (WebCore::IDBClient::IDBTransaction::requestClearObjectStore):
      (WebCore::IDBClient::IDBTransaction::requestPutOrAdd):
      (WebCore::IDBClient::IDBTransaction::operationDidComplete):
      * Modules/indexeddb/client/IDBTransactionImpl.h:
      
      * Modules/indexeddb/client/TransactionOperation.h:
      (WebCore::IDBClient::TransactionOperation::completed):
      
      LayoutTests:
      
      * platform/mac-wk1/TestExpectations: Reenable the test.
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@191847 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      8886106a
    • fpizlo@apple.com's avatar
      Air should eliminate dead code · 0d56d1fa
      fpizlo@apple.com authored
      https://bugs.webkit.org/show_bug.cgi?id=150746
      
      Reviewed by Geoffrey Garen.
      
      This adds a very simple dead code elimination to Air. It simply looks at whether a Tmp or
      StackSlot has ever been used by a live instruction. An instruction is live if it has non-arg
      effects (branching, returning, calling, etc) or if it stores to a live Arg. An Arg is live if
      it references a live Tmp or StackSlot, or if it is neither a Tmp nor a StackSlot. The phase
      runs these rules to fixpoint, and then removes the dead instructions.
      
      This also changes the AirOpcodes parser to handle multiple attributes per opcode, so that we
      could conceivably say things like "FooBar /branch /effects". It also adds the /effects
      attribute, which we currently use for Breakpoint and nothing else. C calls, patchpoints, and
      checks are all Specials, and the Special base class by default always claims that the
      instruction has effects. In the future, we could have B3 use a Patch in Air to implement
      exotic math constructs; then the Special associated with that thing would claim that there
      are no effects.
      
      * JavaScriptCore.xcodeproj/project.pbxproj:
      * b3/air/AirBasicBlock.h:
      (JSC::B3::Air::BasicBlock::begin):
      (JSC::B3::Air::BasicBlock::end):
      (JSC::B3::Air::BasicBlock::at):
      (JSC::B3::Air::BasicBlock::last):
      (JSC::B3::Air::BasicBlock::resize):
      (JSC::B3::Air::BasicBlock::appendInst):
      * b3/air/AirEliminateDeadCode.cpp: Added.
      (JSC::B3::Air::eliminateDeadCode):
      * b3/air/AirEliminateDeadCode.h: Added.
      * b3/air/AirGenerate.cpp:
      (JSC::B3::Air::generate):
      * b3/air/AirInst.h:
      * b3/air/AirOpcode.opcodes:
      * b3/air/AirSpecial.cpp:
      (JSC::B3::Air::Special::name):
      (JSC::B3::Air::Special::hasNonArgNonControlEffects):
      (JSC::B3::Air::Special::dump):
      * b3/air/AirSpecial.h:
      * b3/air/opcode_generator.rb:
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@191846 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      0d56d1fa
    • fpizlo@apple.com's avatar
      Air needs a late register liveness phase that calls Special::reportUsedRegisters() · 58e0b48e
      fpizlo@apple.com authored
      https://bugs.webkit.org/show_bug.cgi?id=150511
      
      Reviewed by Saam Barati.
      
      This change adds such a phase. In the process of writing it, I was reminded about the
      glaring efficiency bugs in Air::Liveness and so I filed a bug and added FIXMEs.
      
      * JavaScriptCore.xcodeproj/project.pbxproj:
      * b3/air/AirAllocateStack.cpp:
      (JSC::B3::Air::allocateStack):
      * b3/air/AirGenerate.cpp:
      (JSC::B3::Air::generate):
      * b3/air/AirReportUsedRegisters.cpp: Added.
      (JSC::B3::Air::reportUsedRegisters):
      * b3/air/AirReportUsedRegisters.h: Added.
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@191845 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      58e0b48e