1. 04 Dec, 2013 16 commits
    • fpizlo@apple.com's avatar
      Fold constant typed arrays · ee327c85
      fpizlo@apple.com authored
      https://bugs.webkit.org/show_bug.cgi?id=125205
      
      Source/JavaScriptCore: 
      
      Reviewed by Oliver Hunt and Mark Hahnenberg.
              
      If by some other mechanism we have a typed array access on a compile-time constant
      typed array pointer, then fold:
              
      - Array bounds checks. Specifically, fold the load of length.
              
      - Loading the vector.
              
      This needs to install a watchpoint on the array itself because of the possibility of
      neutering. Neutering is ridiculous. We do this without bloating the size of
      ArrayBuffer or JSArrayBufferView in the common case (i.e. the case where you
      allocated an array that didn't end up becoming a compile-time constant). To install
      the watchpoint, we slowDownAndWasteMemory and then create an incoming reference to
      the ArrayBuffer, where that incoming reference is from a watchpoint object. The
      ArrayBuffer already knows about such incoming references and can fire the
      watchpoints that way.
              
      * CMakeLists.txt:
      * GNUmakefile.list.am:
      * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
      * JavaScriptCore.xcodeproj/project.pbxproj:
      * dfg/DFGDesiredWatchpoints.cpp:
      (JSC::DFG::ArrayBufferViewWatchpointAdaptor::add):
      (JSC::DFG::DesiredWatchpoints::addLazily):
      * dfg/DFGDesiredWatchpoints.h:
      (JSC::DFG::GenericSetAdaptor::add):
      (JSC::DFG::GenericSetAdaptor::hasBeenInvalidated):
      (JSC::DFG::ArrayBufferViewWatchpointAdaptor::hasBeenInvalidated):
      (JSC::DFG::GenericDesiredWatchpoints::reallyAdd):
      (JSC::DFG::GenericDesiredWatchpoints::areStillValid):
      (JSC::DFG::GenericDesiredWatchpoints::isStillValid):
      (JSC::DFG::GenericDesiredWatchpoints::shouldAssumeMixedState):
      (JSC::DFG::DesiredWatchpoints::isStillValid):
      (JSC::DFG::DesiredWatchpoints::shouldAssumeMixedState):
      (JSC::DFG::DesiredWatchpoints::isValidOrMixed):
      * dfg/DFGGraph.cpp:
      (JSC::DFG::Graph::tryGetFoldableView):
      * dfg/DFGGraph.h:
      * dfg/DFGSpeculativeJIT.cpp:
      (JSC::DFG::SpeculativeJIT::jumpForTypedArrayOutOfBounds):
      (JSC::DFG::SpeculativeJIT::emitTypedArrayBoundsCheck):
      (JSC::DFG::SpeculativeJIT::compileGetByValOnIntTypedArray):
      (JSC::DFG::SpeculativeJIT::compilePutByValForIntTypedArray):
      (JSC::DFG::SpeculativeJIT::compileGetByValOnFloatTypedArray):
      (JSC::DFG::SpeculativeJIT::compilePutByValForFloatTypedArray):
      (JSC::DFG::SpeculativeJIT::compileConstantIndexedPropertyStorage):
      (JSC::DFG::SpeculativeJIT::compileGetIndexedPropertyStorage):
      * dfg/DFGSpeculativeJIT.h:
      * dfg/DFGWatchpointCollectionPhase.cpp:
      (JSC::DFG::WatchpointCollectionPhase::handle):
      (JSC::DFG::WatchpointCollectionPhase::addLazily):
      * ftl/FTLLowerDFGToLLVM.cpp:
      (JSC::FTL::LowerDFGToLLVM::compileGetIndexedPropertyStorage):
      (JSC::FTL::LowerDFGToLLVM::compileGetByVal):
      (JSC::FTL::LowerDFGToLLVM::compilePutByVal):
      (JSC::FTL::LowerDFGToLLVM::typedArrayLength):
      * runtime/ArrayBuffer.cpp:
      (JSC::ArrayBuffer::transfer):
      * runtime/ArrayBufferNeuteringWatchpoint.cpp: Added.
      (JSC::ArrayBufferNeuteringWatchpoint::ArrayBufferNeuteringWatchpoint):
      (JSC::ArrayBufferNeuteringWatchpoint::~ArrayBufferNeuteringWatchpoint):
      (JSC::ArrayBufferNeuteringWatchpoint::finishCreation):
      (JSC::ArrayBufferNeuteringWatchpoint::destroy):
      (JSC::ArrayBufferNeuteringWatchpoint::create):
      (JSC::ArrayBufferNeuteringWatchpoint::createStructure):
      * runtime/ArrayBufferNeuteringWatchpoint.h: Added.
      (JSC::ArrayBufferNeuteringWatchpoint::set):
      * runtime/VM.cpp:
      (JSC::VM::VM):
      * runtime/VM.h:
      
      LayoutTests: 
      
      Reviewed by Oliver Hunt and Mark Hahnenberg.
      
      * js/regress/fixed-typed-array-storage-expected.txt: Added.
      * js/regress/fixed-typed-array-storage-var-index-expected.txt: Added.
      * js/regress/fixed-typed-array-storage-var-index.html: Added.
      * js/regress/fixed-typed-array-storage.html: Added.
      * js/regress/script-tests/fixed-typed-array-storage-var-index.js: Added.
      (foo):
      * js/regress/script-tests/fixed-typed-array-storage.js: Added.
      (foo):
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@160150 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      ee327c85
    • commit-queue@webkit.org's avatar
      Unreviewed, rolling out r160116. · fcbd99f5
      commit-queue@webkit.org authored
      http://trac.webkit.org/changeset/160116
      https://bugs.webkit.org/show_bug.cgi?id=125264
      
      Change doesn't work as intended. See bug comments for details.
      (Requested by bfulgham on #webkit).
      
      * runtime/InitializeThreading.cpp:
      (JSC::initializeThreading):
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@160140 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      fcbd99f5
    • oliver@apple.com's avatar
      Refactor static getter function prototype to include thisValue in addition to the base object · 965cdde6
      oliver@apple.com authored
      https://bugs.webkit.org/show_bug.cgi?id=124461
      
      Reviewed by Geoffrey Garen.
      
      Source/JavaScriptCore:
      
      Add thisValue parameter to static getter prototype, and switch
      from JSValue to EncodedJSValue for parameters and return value.
      
      Currently none of the static getters use the thisValue, but
      separating out the refactoring will prevent future changes
      from getting lost in the noise of refactoring.  This means
      that this patch does not result in any change in behaviour.
      
      * API/JSCallbackObject.h:
      * API/JSCallbackObjectFunctions.h:
      (JSC::::asCallbackObject):
      (JSC::::staticFunctionGetter):
      (JSC::::callbackGetter):
      * jit/JITOperations.cpp:
      * runtime/JSActivation.cpp:
      (JSC::JSActivation::argumentsGetter):
      * runtime/JSActivation.h:
      * runtime/JSFunction.cpp:
      (JSC::JSFunction::argumentsGetter):
      (JSC::JSFunction::callerGetter):
      (JSC::JSFunction::lengthGetter):
      (JSC::JSFunction::nameGetter):
      * runtime/JSFunction.h:
      * runtime/JSObject.h:
      (JSC::PropertySlot::getValue):
      * runtime/NumberConstructor.cpp:
      (JSC::numberConstructorNaNValue):
      (JSC::numberConstructorNegInfinity):
      (JSC::numberConstructorPosInfinity):
      (JSC::numberConstructorMaxValue):
      (JSC::numberConstructorMinValue):
      * runtime/PropertySlot.h:
      * runtime/RegExpConstructor.cpp:
      (JSC::asRegExpConstructor):
      (JSC::regExpConstructorDollar1):
      (JSC::regExpConstructorDollar2):
      (JSC::regExpConstructorDollar3):
      (JSC::regExpConstructorDollar4):
      (JSC::regExpConstructorDollar5):
      (JSC::regExpConstructorDollar6):
      (JSC::regExpConstructorDollar7):
      (JSC::regExpConstructorDollar8):
      (JSC::regExpConstructorDollar9):
      (JSC::regExpConstructorInput):
      (JSC::regExpConstructorMultiline):
      (JSC::regExpConstructorLastMatch):
      (JSC::regExpConstructorLastParen):
      (JSC::regExpConstructorLeftContext):
      (JSC::regExpConstructorRightContext):
      * runtime/RegExpObject.cpp:
      (JSC::asRegExpObject):
      (JSC::regExpObjectGlobal):
      (JSC::regExpObjectIgnoreCase):
      (JSC::regExpObjectMultiline):
      (JSC::regExpObjectSource):
      
      Source/WebCore:
      
      Change bindings codegen to produce static getter functions
      with the correct types.  Also update the many custom implementations
      to the new type.
      
      No change in behaviour.
      
      * bindings/js/JSCSSStyleDeclarationCustom.cpp:
      (WebCore::cssPropertyGetterPixelOrPosPrefixCallback):
      (WebCore::cssPropertyGetterCallback):
      * bindings/js/JSDOMBinding.cpp:
      (WebCore::objectToStringFunctionGetter):
      * bindings/js/JSDOMBinding.h:
      * bindings/js/JSDOMMimeTypeArrayCustom.cpp:
      (WebCore::JSDOMMimeTypeArray::nameGetter):
      * bindings/js/JSDOMPluginArrayCustom.cpp:
      (WebCore::JSDOMPluginArray::nameGetter):
      * bindings/js/JSDOMPluginCustom.cpp:
      (WebCore::JSDOMPlugin::nameGetter):
      * bindings/js/JSDOMStringMapCustom.cpp:
      (WebCore::JSDOMStringMap::nameGetter):
      * bindings/js/JSDOMWindowCustom.cpp:
      (WebCore::nonCachingStaticFunctionGetter):
      (WebCore::childFrameGetter):
      (WebCore::indexGetter):
      (WebCore::namedItemGetter):
      * bindings/js/JSHTMLAllCollectionCustom.cpp:
      (WebCore::JSHTMLAllCollection::nameGetter):
      * bindings/js/JSHTMLCollectionCustom.cpp:
      (WebCore::JSHTMLCollection::nameGetter):
      * bindings/js/JSHTMLDocumentCustom.cpp:
      (WebCore::JSHTMLDocument::nameGetter):
      * bindings/js/JSHTMLFormControlsCollectionCustom.cpp:
      (WebCore::JSHTMLFormControlsCollection::nameGetter):
      * bindings/js/JSHTMLFormElementCustom.cpp:
      (WebCore::JSHTMLFormElement::nameGetter):
      * bindings/js/JSHTMLFrameSetElementCustom.cpp:
      (WebCore::JSHTMLFrameSetElement::nameGetter):
      * bindings/js/JSHistoryCustom.cpp:
      (WebCore::nonCachingStaticBackFunctionGetter):
      (WebCore::nonCachingStaticForwardFunctionGetter):
      (WebCore::nonCachingStaticGoFunctionGetter):
      * bindings/js/JSJavaScriptCallFrameCustom.cpp:
      (WebCore::JSJavaScriptCallFrame::scopeType):
      * bindings/js/JSLocationCustom.cpp:
      (WebCore::nonCachingStaticReplaceFunctionGetter):
      (WebCore::nonCachingStaticReloadFunctionGetter):
      (WebCore::nonCachingStaticAssignFunctionGetter):
      * bindings/js/JSNamedNodeMapCustom.cpp:
      (WebCore::JSNamedNodeMap::nameGetter):
      * bindings/js/JSNodeListCustom.cpp:
      (WebCore::JSNodeList::nameGetter):
      * bindings/js/JSPluginElementFunctions.cpp:
      (WebCore::pluginElementPropertyGetter):
      * bindings/js/JSPluginElementFunctions.h:
      * bindings/js/JSRTCStatsResponseCustom.cpp:
      (WebCore::JSRTCStatsResponse::nameGetter):
      * bindings/js/JSStorageCustom.cpp:
      (WebCore::JSStorage::nameGetter):
      * bindings/js/JSStyleSheetListCustom.cpp:
      (WebCore::JSStyleSheetList::nameGetter):
      * bindings/scripts/CodeGeneratorJS.pm:
      (GenerateHeader):
      (GenerateImplementation):
      (GenerateParametersCheck):
      * bridge/runtime_array.cpp:
      (JSC::RuntimeArray::lengthGetter):
      (JSC::RuntimeArray::indexGetter):
      * bridge/runtime_array.h:
      * bridge/runtime_method.cpp:
      (JSC::RuntimeMethod::lengthGetter):
      * bridge/runtime_method.h:
      * bridge/runtime_object.cpp:
      (JSC::Bindings::RuntimeObject::fallbackObjectGetter):
      (JSC::Bindings::RuntimeObject::fieldGetter):
      (JSC::Bindings::RuntimeObject::methodGetter):
      * bridge/runtime_object.h:
      
      Source/WebKit2:
      
      Update the WK2 JSC usage to the new static getter API
      
      * WebProcess/Plugins/Netscape/JSNPMethod.cpp:
      (WebKit::callMethod):
      * WebProcess/Plugins/Netscape/JSNPObject.cpp:
      (WebKit::callNPJSObject):
      (WebKit::constructWithConstructor):
      (WebKit::JSNPObject::propertyGetter):
      (WebKit::JSNPObject::methodGetter):
      * WebProcess/Plugins/Netscape/JSNPObject.h:
      * WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp:
      (WebKit::NPRuntimeObjectMap::getOrCreateNPObject):
      (WebKit::NPRuntimeObjectMap::finalize):
      * WebProcess/WebPage/WebFrame.cpp:
      (WebKit::WebFrame::frameForContext):
      (WebKit::WebFrame::counterValue):
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@160133 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      965cdde6
    • dbates@webkit.org's avatar
      [iOS] Enable Objective-C ARC when building JSC tools for iOS simulator · 5e423cb9
      dbates@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=125170
      
      Reviewed by Geoffrey Garen.
      
      * API/tests/testapi.mm:
      * Configurations/ToolExecutable.xcconfig:
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@160131 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      5e423cb9
    • commit-queue@webkit.org's avatar
      Use ThreadingOnce class to encapsulate pthread_once functionality. · 7dec9a92
      commit-queue@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=125228
      
      Patch by peavo@outlook.com <peavo@outlook.com> on 2013-12-04
      Reviewed by Brent Fulgham.
      
      * runtime/InitializeThreading.cpp:
      (JSC::initializeThreading):
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@160116 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      7dec9a92
    • mark.lam@apple.com's avatar
      Remove unneeded semicolons. · cc0975a1
      mark.lam@apple.com authored
      https://bugs.webkit.org/show_bug.cgi?id=125083.
      
      Rubber-stamped by Filip Pizlo.
      
      * debugger/Debugger.h:
      (JSC::Debugger::detach):
      (JSC::Debugger::sourceParsed):
      (JSC::Debugger::exception):
      (JSC::Debugger::atStatement):
      (JSC::Debugger::callEvent):
      (JSC::Debugger::returnEvent):
      (JSC::Debugger::willExecuteProgram):
      (JSC::Debugger::didExecuteProgram):
      (JSC::Debugger::didReachBreakpoint):
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@160115 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      cc0975a1
    • aestes@apple.com's avatar
      [iOS] Build projects with $(ARCHS_STANDARD_32_64_BIT) · 2412219f
      aestes@apple.com authored
      https://bugs.webkit.org/show_bug.cgi?id=125236
      
      Reviewed by Sam Weinig.
      
      $(ARCHS_STANDARD_32_64_BIT) is what we want for both device and simulator builds.
      
      Source/JavaScriptCore:
      
      * Configurations/DebugRelease.xcconfig:
      
      Source/WebCore:
      
      * Configurations/DebugRelease.xcconfig:
      
      Source/WebKit/mac:
      
      * Configurations/DebugRelease.xcconfig:
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@160111 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      2412219f
    • fpizlo@apple.com's avatar
      Infer constant closure variables · 88fedde1
      fpizlo@apple.com authored
      https://bugs.webkit.org/show_bug.cgi?id=124630
      
      Source/JavaScriptCore: 
      
      Reviewed by Geoffrey Garen.
              
      Captured variables that are assigned once (not counting op_enter's Undefined
      initialization) and that are contained within a function that has thus far only been
      entered once are now constant folded. It's pretty awesome.
              
      This involves a watchpoint on the assignment to variables and a watchpoint on entry
      into the function. The former is reused from global variable constant inference and the
      latter is reused from one-time closure inference.
      
      * GNUmakefile.list.am:
      * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
      * JavaScriptCore.xcodeproj/project.pbxproj:
      * bytecode/CodeBlock.cpp:
      (JSC::CodeBlock::dumpBytecode):
      (JSC::CodeBlock::CodeBlock):
      * bytecode/Instruction.h:
      (JSC::Instruction::Instruction):
      * bytecode/Opcode.h:
      (JSC::padOpcodeName):
      * bytecode/UnlinkedCodeBlock.h:
      (JSC::UnlinkedInstruction::UnlinkedInstruction):
      * bytecode/VariableWatchpointSet.h:
      (JSC::VariableWatchpointSet::invalidate):
      * bytecode/Watchpoint.h:
      (JSC::WatchpointSet::invalidate):
      * bytecompiler/BytecodeGenerator.cpp:
      (JSC::BytecodeGenerator::addVar):
      (JSC::BytecodeGenerator::BytecodeGenerator):
      (JSC::BytecodeGenerator::emitInitLazyRegister):
      (JSC::BytecodeGenerator::emitMove):
      (JSC::BytecodeGenerator::emitNewFunctionInternal):
      (JSC::BytecodeGenerator::createArgumentsIfNecessary):
      * bytecompiler/BytecodeGenerator.h:
      (JSC::BytecodeGenerator::addVar):
      (JSC::BytecodeGenerator::watchableVariable):
      * dfg/DFGByteCodeParser.cpp:
      (JSC::DFG::ByteCodeParser::getLocal):
      (JSC::DFG::ByteCodeParser::inferredConstant):
      (JSC::DFG::ByteCodeParser::parseBlock):
      (JSC::DFG::ByteCodeParser::parse):
      * dfg/DFGGraph.cpp:
      (JSC::DFG::Graph::tryGetActivation):
      (JSC::DFG::Graph::tryGetRegisters):
      * dfg/DFGGraph.h:
      * jit/JIT.cpp:
      (JSC::JIT::privateCompileMainPass):
      (JSC::JIT::privateCompileSlowCases):
      * jit/JIT.h:
      * jit/JITOpcodes.cpp:
      (JSC::JIT::emit_op_mov):
      (JSC::JIT::emit_op_captured_mov):
      (JSC::JIT::emit_op_new_captured_func):
      (JSC::JIT::emitSlow_op_captured_mov):
      * jit/JITOpcodes32_64.cpp:
      (JSC::JIT::emit_op_mov):
      (JSC::JIT::emit_op_captured_mov):
      * llint/LowLevelInterpreter32_64.asm:
      * llint/LowLevelInterpreter64.asm:
      * runtime/CommonSlowPaths.cpp:
      (JSC::SLOW_PATH_DECL):
      * runtime/CommonSlowPaths.h:
      * runtime/ConstantMode.h: Added.
      * runtime/JSGlobalObject.h:
      * runtime/JSScope.cpp:
      (JSC::abstractAccess):
      * runtime/SymbolTable.cpp:
      (JSC::SymbolTableEntry::prepareToWatch):
      
      LayoutTests: 
      
      Reviewed by Geoffrey Garen.
              
      This adds both correctness and performance tests for constant closure variable
      inference.
      
      * js/regress/infer-closure-const-then-mov-expected.txt: Added.
      * js/regress/infer-closure-const-then-mov-no-inline-expected.txt: Added.
      * js/regress/infer-closure-const-then-mov-no-inline.html: Added.
      * js/regress/infer-closure-const-then-mov.html: Added.
      * js/regress/infer-closure-const-then-put-to-scope-expected.txt: Added.
      * js/regress/infer-closure-const-then-put-to-scope-no-inline-expected.txt: Added.
      * js/regress/infer-closure-const-then-put-to-scope-no-inline.html: Added.
      * js/regress/infer-closure-const-then-put-to-scope.html: Added.
      * js/regress/infer-closure-const-then-reenter-expected.txt: Added.
      * js/regress/infer-closure-const-then-reenter-no-inline-expected.txt: Added.
      * js/regress/infer-closure-const-then-reenter-no-inline.html: Added.
      * js/regress/infer-closure-const-then-reenter.html: Added.
      * js/regress/script-tests/infer-closure-const-then-mov-no-inline.js: Added.
      * js/regress/script-tests/infer-closure-const-then-mov.js: Added.
      * js/regress/script-tests/infer-closure-const-then-put-to-scope-no-inline.js: Added.
      (thingy.):
      (thingy):
      * js/regress/script-tests/infer-closure-const-then-put-to-scope.js: Added.
      (thingy.):
      (thingy):
      * js/regress/script-tests/infer-closure-const-then-reenter-no-inline.js: Added.
      (.return.foo):
      (foo):
      * js/regress/script-tests/infer-closure-const-then-reenter.js: Added.
      (.return.foo):
      (foo):
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@160109 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      88fedde1
    • bfulgham@apple.com's avatar
      [Win] Unreviewed project file gardening. · 8b15ff35
      bfulgham@apple.com authored
      * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj: Remove deleted files from project.
      * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters: Put files in proper directory
      folders to match the directory structure of the source code.
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@160105 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      8b15ff35
    • joepeck@webkit.org's avatar
      Unreviewed Windows build fix attempt 2 after r160099. · 13972079
      joepeck@webkit.org authored
      * JavaScriptCore.vcxproj/copy-files.cmd:
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@160103 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      13972079
    • commit-queue@webkit.org's avatar
      REGRESSION (r160094): Fix lots of crashes for sh4 architecture. · efebe0f1
      commit-queue@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=125227
      
      Patch by Julien Brianceau <jbriance@cisco.com> on 2013-12-04
      Reviewed by Michael Saboff.
      
      * llint/LowLevelInterpreter32_64.asm: Do not use t4 and t5 as they match a0 and a1.
      * offlineasm/registers.rb: Add t7, t8 and t9 in register list for sh4 port.
      * offlineasm/sh4.rb: Rearrange RegisterID list and add the missing ones.
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@160100 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      efebe0f1
    • joepeck@webkit.org's avatar
      Web Inspector: Push Remote Inspector debugging connection management into JavaScriptCore · d2ecf37f
      joepeck@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=124613
      
      Reviewed by Timothy Hatcher.
      
      Source/JavaScriptCore:
      
      Move the ENABLE(REMOTE_INSPECTOR) remote debugger connection management
      into JavaScriptCore (originally from WebKit/mac). Include enhancements:
      
        * allow for different types of remote debuggable targets,
          eventually at least a JSContext, WebView, WKView.
        * allow debuggables to be registered and debugged on any thread. Unlike
          WebViews, JSContexts may be run entirely off of the main thread.
        * move the remote connection (XPC connection) itself off of the main thread,
          it doesn't need to be on the main thread.
      
      Make JSContext @class and JavaScriptCore::JSContextRef
      "JavaScript" Remote Debuggables.
      
      * inspector/remote/RemoteInspectorDebuggable.h: Added.
      * inspector/remote/RemoteInspectorDebuggable.cpp: Added.
      (Inspector::RemoteInspectorDebuggable::RemoteInspectorDebuggable):
      (Inspector::RemoteInspectorDebuggable::~RemoteInspectorDebuggable):
      (Inspector::RemoteInspectorDebuggable::init):
      (Inspector::RemoteInspectorDebuggable::update):
      (Inspector::RemoteInspectorDebuggable::setRemoteDebuggingAllowed):
      (Inspector::RemoteInspectorDebuggable::info):
      RemoteInspectorDebuggable defines a debuggable target. As long as
      something creates a debuggable and is set to allow remote inspection
      it will be listed in remote debuggers. For the different types of
      debuggables (JavaScript and Web) there is different basic information
      that may be listed.
      
      * inspector/InspectorFrontendChannel.h: Added.
      (Inspector::InspectorFrontendChannel::~InspectorFrontendChannel):
      The only thing a debuggable needs for remote debugging is an
      InspectorFrontendChannel a way to send messages to a remote frontend.
      This class provides that method, and is vended to the
      RemoteInspectorDebuggable when a remote connection is setup.
      
      * inspector/remote/RemoteInspector.h: Added.
      * inspector/remote/RemoteInspector.mm: Added.
      Singleton, created at least when the first Debuggable is created.
      This class manages the list of debuggables, any connection to a
      remote debugger proxy (XPC service "com.apple.webinspector").
      
      (Inspector::dispatchAsyncOnQueueSafeForAnyDebuggable):
      (Inspector::RemoteInspector::shared):
      (Inspector::RemoteInspector::RemoteInspector):
      (Inspector::RemoteInspector::nextAvailableIdentifier):
      (Inspector::RemoteInspector::registerDebuggable):
      (Inspector::RemoteInspector::unregisterDebuggable):
      (Inspector::RemoteInspector::updateDebuggable):
      Debuggable management. When debuggables are added, removed, or updated
      we stash a copy of the debuggable information and push an update to
      debuggers. Stashing a copy of the information in the RemoteInspector
      is a thread safe way to avoid walking over all debuggables to gather
      the information when it is needed.
      
      (Inspector::RemoteInspector::start):
      (Inspector::RemoteInspector::stop):
      Runtime API to enable / disable the feature.
      
      (Inspector::RemoteInspector::listingForDebuggable):
      (Inspector::RemoteInspector::pushListingNow):
      (Inspector::RemoteInspector::pushListingSoon):
      Pushing a listing to remote debuggers.
      
      (Inspector::RemoteInspector::sendMessageToRemoteFrontend):
      (Inspector::RemoteInspector::setupXPCConnectionIfNeeded):
      (Inspector::RemoteInspector::xpcConnectionReceivedMessage):
      (Inspector::RemoteInspector::xpcConnectionFailed):
      (Inspector::RemoteInspector::xpcConnectionUnhandledMessage):
      XPC setup, send, and receive handling.
      
      (Inspector::RemoteInspector::updateHasActiveDebugSession):
      Applications being debugged may want to know when a debug
      session is active. This provides that notification.
      
      (Inspector::RemoteInspector::receivedSetupMessage):
      (Inspector::RemoteInspector::receivedDataMessage):
      (Inspector::RemoteInspector::receivedDidCloseMessage):
      (Inspector::RemoteInspector::receivedGetListingMessage):
      (Inspector::RemoteInspector::receivedIndicateMessage):
      (Inspector::RemoteInspector::receivedConnectionDiedMessage):
      Dispatching incoming remote debugging protocol messages.
      These are wrapping above the inspector protocol messages.
      
      * inspector/remote/RemoteInspectorConstants.h: Added.
      Protocol messages and dictionary keys inside the messages.
      
      (Inspector::RemoteInspectorDebuggableInfo::RemoteInspectorDebuggableInfo):
      * inspector/remote/RemoteInspectorDebuggableConnection.h: Added.
      * inspector/remote/RemoteInspectorDebuggableConnection.mm: Added.
      This is a connection between the RemoteInspector singleton and a RemoteInspectorDebuggable.
      
      (Inspector::RemoteInspectorDebuggableConnection::RemoteInspectorDebuggableConnection):
      (Inspector::RemoteInspectorDebuggableConnection::~RemoteInspectorDebuggableConnection):
      Allow for dispatching messages on JavaScript debuggables on a dispatch_queue
      instead of the main queue.
      
      (Inspector::RemoteInspectorDebuggableConnection::destination):
      (Inspector::RemoteInspectorDebuggableConnection::connectionIdentifier):
      Needed in the remote debugging protocol to identify the remote debugger.
      
      (Inspector::RemoteInspectorDebuggableConnection::dispatchSyncOnDebuggable):
      (Inspector::RemoteInspectorDebuggableConnection::dispatchAsyncOnDebuggable):
      (Inspector::RemoteInspectorDebuggableConnection::setup):
      (Inspector::RemoteInspectorDebuggableConnection::closeFromDebuggable):
      (Inspector::RemoteInspectorDebuggableConnection::close):
      (Inspector::RemoteInspectorDebuggableConnection::sendMessageToBackend):
      (Inspector::RemoteInspectorDebuggableConnection::sendMessageToFrontend):
      The connection is a thin channel between the two sides that can be closed
      from either side, so there is some logic around multi-threaded access.
      
      * inspector/remote/RemoteInspectorXPCConnection.h: Added.
      (Inspector::RemoteInspectorXPCConnection::Client::~Client):
      * inspector/remote/RemoteInspectorXPCConnection.mm: Added.
      (Inspector::RemoteInspectorXPCConnection::RemoteInspectorXPCConnection):
      (Inspector::RemoteInspectorXPCConnection::~RemoteInspectorXPCConnection):
      (Inspector::RemoteInspectorXPCConnection::close):
      (Inspector::RemoteInspectorXPCConnection::deserializeMessage):
      (Inspector::RemoteInspectorXPCConnection::handleEvent):
      (Inspector::RemoteInspectorXPCConnection::sendMessage):
      This is a connection between the RemoteInspector singleton and an XPC service
      named "com.apple.webinspector". This handles serialization of the dictionary
      messages to and from the service. The receiving is done on a non-main queue.
      
      * API/JSContext.h:
      * API/JSContext.mm:
      (-[JSContext name]):
      (-[JSContext setName:]):
      ObjC API to enable/disable JSContext remote inspection and give a name.
      
      * API/JSContextRef.h:
      * API/JSContextRef.cpp:
      (JSGlobalContextGetName):
      (JSGlobalContextSetName):
      C API to give a JSContext a name.
      
      * runtime/JSGlobalObject.cpp:
      (JSC::JSGlobalObject::setName):
      * runtime/JSGlobalObject.h:
      (JSC::JSGlobalObject::name):
      Shared handling of the APIs above.
      
      * runtime/JSGlobalObjectDebuggable.cpp: Added.
      (JSC::JSGlobalObjectDebuggable::JSGlobalObjectDebuggable):
      (JSC::JSGlobalObjectDebuggable::name):
      (JSC::JSGlobalObjectDebuggable::connect):
      (JSC::JSGlobalObjectDebuggable::disconnect):
      (JSC::JSGlobalObjectDebuggable::dispatchMessageFromRemoteFrontend):
      * runtime/JSGlobalObjectDebuggable.h: Added.
      Stub for the actual remote debugging implementation. We will push
      down the appropriate WebCore/inspector peices suitable for debugging
      just a JavaScript context.
      
      * CMakeLists.txt:
      * JavaScriptCore.xcodeproj/project.pbxproj:
      * GNUmakefile.am:
      * GNUmakefile.list.am:
      * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
      * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
      Update build files.
      
      Source/WebCore:
      
      Make a WebCore::Page a "Web" Remote Debuggable.
      
      * bindings/js/JSDOMGlobalObject.cpp:
      Disable JavaScript context inspection on JSGlobalObjects inside WebCore::Page's.
      
      * page/Page.cpp:
      (WebCore::Page::Page):
      (WebCore::Page::remoteInspectionAllowed):
      (WebCore::Page::setRemoteInspectionAllowed):
      (WebCore::Page::remoteInspectorInformationDidChange):
      * page/Page.h:
      * page/PageDebuggable.h:
      * page/PageDebuggable.cpp: Added.
      (WebCore::PageDebuggable::PageDebuggable):
      (WebCore::PageDebuggable::name):
      (WebCore::PageDebuggable::url):
      (WebCore::PageDebuggable::hasLocalDebugger):
      (WebCore::PageDebuggable::connect):
      (WebCore::PageDebuggable::disconnect):
      (WebCore::PageDebuggable::dispatchMessageFromRemoteFrontend):
      (WebCore::PageDebuggable::setIndicating):
      Make a page a "Web" debuggable.
      
      * GNUmakefile.list.am:
      * WebCore.exp.in:
      * WebCore.vcxproj/WebCore.vcxproj:
      * WebCore.vcxproj/WebCore.vcxproj.filters:
      * WebCore.xcodeproj/project.pbxproj:
      Misc.
      
      * inspector/InspectorClient.h:
      (WebCore::InspectorClient::indicate):
      (WebCore::InspectorClient::hideIndicate):
      Forward indicate methods to WebKit clients.
      
      * loader/FrameLoader.cpp:
      (WebCore::FrameLoader::didChangeTitle):
      (WebCore::FrameLoader::dispatchDidCommitLoad):
      Push updates when remote debuggable information like the Page's
      URL or title change.
      
      * ForwardingHeaders/inspector/InspectorFrontendChannel.h:
      * inspector/InspectorForwarding.h:
      Re-export Inspector::InspectorFrontendChannel as WebCore::InspectorFrontendChannel
      to avoid needlessly updating code all over the place.
      
      * inspector/CodeGeneratorInspectorStrings.py:
      * inspector/InspectorWorkerAgent.cpp:
      * inspector/WorkerInspectorController.cpp:
      * testing/Internals.cpp:
      Update include names.
      
      * page/ContextMenuController.cpp:
      (WebCore::ContextMenuController::populate):
      Make the "Inspect Element" context menu work correctly when there is a
      remote inspector instead of a local inspector.
      
      Source/WebKit:
      
      * WebKit.xcodeproj/project.pbxproj:
      
      Source/WebKit/blackberry:
      
      * WebCoreSupport/InspectorClientBlackBerry.h:
      
      Source/WebKit/cf:
      
      * WebCoreSupport/WebInspectorClientCF.cpp:
      (WebInspectorClient::sendMessageToFrontend):
      
      Source/WebKit/efl:
      
      * WebCoreSupport/InspectorClientEfl.h:
      
      Source/WebKit/gtk:
      
      * WebCoreSupport/InspectorClientGtk.h:
      
      Source/WebKit/ios:
      
      * WebCoreSupport/WebInspectorClientIOS.mm:
      (WebInspectorClient::WebInspectorClient):
      (WebInspectorClient::inspectorDestroyed):
      
      Source/WebKit/mac:
      
      Remove the old ENABLE(REMOTE_INSPECTOR) connection management implementation.
      
      * WebCoreSupport/WebInspectorClient.h:
      * WebCoreSupport/WebInspectorClient.mm:
      (WebInspectorClient::indicate):
      (WebInspectorClient::hideIndicate):
      Hook up WebView indication through this new path.
      
      * WebCoreSupport/WebFrameLoaderClient.mm:
      (WebFrameLoaderClient::dispatchDidReceiveTitle):
      * WebCoreSupport/WebInspectorClient.h:
      * WebCoreSupport/WebInspectorClient.mm:
      (WebInspectorClient::WebInspectorClient):
      (WebInspectorClient::inspectorDestroyed):
      * WebInspector/remote/WebInspectorClientRegistry.h: Removed.
      * WebInspector/remote/WebInspectorClientRegistry.mm: Removed.
      * WebInspector/remote/WebInspectorRelayDefinitions.h: Removed.
      * WebInspector/remote/WebInspectorRemoteChannel.h: Removed.
      * WebInspector/remote/WebInspectorRemoteChannel.mm: Removed.
      * WebInspector/remote/WebInspectorServer.h: Removed.
      * WebInspector/remote/WebInspectorServer.mm: Removed.
      * WebInspector/remote/WebInspectorServerWebViewConnection.h: Removed.
      * WebInspector/remote/WebInspectorServerWebViewConnection.mm: Removed.
      * WebInspector/remote/WebInspectorServerWebViewConnectionController.h: Removed.
      * WebInspector/remote/WebInspectorServerWebViewConnectionController.mm: Removed.
      * WebInspector/remote/WebInspectorXPCWrapper.h: Removed.
      * WebInspector/remote/WebInspectorXPCWrapper.m: Removed.
      * WebKit.exp:
      * WebView/WebView.mm:
      (-[WebView _commonInitializationWithFrameName:groupName:]):
      (+[WebView _enableRemoteInspector]):
      (+[WebView _disableRemoteInspector]):
      (+[WebView _disableAutoStartRemoteInspector]):
      (+[WebView _isRemoteInspectorEnabled]):
      (+[WebView _hasRemoteInspectorSession]):
      (-[WebView allowsRemoteInspection]):
      (-[WebView setAllowsRemoteInspection:]):
      (-[WebView setIndicatingForRemoteInspector:]):
      (-[WebView setHostApplicationBundleId:name:]):
      (-[WebView _didCommitLoadForFrame:]):
      * WebView/WebViewData.h:
      * WebView/WebViewData.mm:
      (-[WebViewPrivate init]):
      (-[WebViewPrivate dealloc]):
      * WebView/WebViewInternal.h:
      * WebView/WebViewPrivate.h:
      Remove old REMOTE_INSPECTOR.
      
      Source/WebKit/win:
      
      * WebCoreSupport/WebInspectorClient.h:
      
      Source/WebKit/wince:
      
      * WebCoreSupport/InspectorClientWinCE.h:
      
      Source/WebKit2:
      
      * WebProcess/WebPage/WebPage.cpp:
      (WebKit::WebPage::WebPage):
      * WebProcess/com.apple.WebProcess.sb.in:
      Allow the WebProcess to access the "com.apple.webinspector" named
      XPC service to expose its WebCore::Page's to remote debuggers.
      
      Source/WTF:
      
      * wtf/ios/WebCoreThread.cpp:
      * wtf/ios/WebCoreThread.h:
      Expose WebThreadRun/WebThreadRunSync iOS methods defined in WebCore through
      WTF so that JavaScriptCore can use it. Another such method already existed.
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@160099 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      d2ecf37f
    • msaboff@apple.com's avatar
      Move the setting up of callee's callFrame from pushFrame to callToJavaScript thunk · 6f0b31aa
      msaboff@apple.com authored
      https://bugs.webkit.org/show_bug.cgi?id=123999
      
      Reviewed by Filip Pizlo.
      
      Changed LLInt and/or JIT enabled ports to allocate the stack frame in the
      callToJavaScript stub.  Added an additional stub, callToNativeFunction that
      allocates a stack frame in a similar way for calling native entry points
      that take a single ExecState* argument.  These stubs are implemented
      using common macros in LowLevelInterpreter{32_64,64}.asm.  There are also
      Windows X86 and X86-64 versions in the corresponding JitStubsXX.h.
      The stubs allocate and create a sentinel frame, then create the callee's
      frame, populating  the header and arguments from the passed in ProtoCallFrame*.
      It is assumed that the caller of either stub does a check for enough stack space
      via JSStack::entryCheck().
      
      For ports using the C-Loop interpreter, the prior method for allocating stack
      frame and invoking functions is used, namely with JSStack::pushFrame() and
      ::popFrame().
      
      Made spelling changes "sentinal" -> "sentinel".
      
      * CMakeLists.txt:
      * GNUmakefile.list.am:
      * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
      * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
      * JavaScriptCore.xcodeproj/project.pbxproj:
      * interpreter/CachedCall.h:
      (JSC::CachedCall::CachedCall):
      (JSC::CachedCall::setThis):
      (JSC::CachedCall::setArgument):
      * interpreter/CallFrameClosure.h:
      (JSC::CallFrameClosure::resetCallFrame):
      * interpreter/Interpreter.cpp:
      (JSC::Interpreter::execute):
      (JSC::Interpreter::executeCall):
      (JSC::Interpreter::executeConstruct):
      (JSC::Interpreter::prepareForRepeatCall):
      * interpreter/Interpreter.h:
      * interpreter/JSStack.h:
      * interpreter/JSStackInlines.h:
      (JSC::JSStack::entryCheck):
      (JSC::JSStack::pushFrame):
      (JSC::JSStack::popFrame):
      * interpreter/ProtoCallFrame.cpp: Added.
      (JSC::ProtoCallFrame::init):
      * interpreter/ProtoCallFrame.h: Added.
      (JSC::ProtoCallFrame::codeBlock):
      (JSC::ProtoCallFrame::setCodeBlock):
      (JSC::ProtoCallFrame::setScope):
      (JSC::ProtoCallFrame::setCallee):
      (JSC::ProtoCallFrame::argumentCountIncludingThis):
      (JSC::ProtoCallFrame::argumentCount):
      (JSC::ProtoCallFrame::setArgumentCountIncludingThis):
      (JSC::ProtoCallFrame::setPaddedArgsCount):
      (JSC::ProtoCallFrame::clearCurrentVPC):
      (JSC::ProtoCallFrame::setThisValue):
      (JSC::ProtoCallFrame::setArgument):
      * jit/JITCode.cpp:
      (JSC::JITCode::execute):
      * jit/JITCode.h:
      * jit/JITOperations.cpp:
      * jit/JITStubs.h:
      * jit/JITStubsMSVC64.asm:
      * jit/JITStubsX86.h:
      * llint/LLIntOffsetsExtractor.cpp:
      * llint/LLIntThunks.h:
      * llint/LowLevelInterpreter.asm:
      * llint/LowLevelInterpreter32_64.asm:
      * llint/LowLevelInterpreter64.asm:
      * runtime/ArgList.h:
      (JSC::ArgList::data):
      * runtime/JSArray.cpp:
      (JSC::AVLTreeAbstractorForArrayCompare::compare_key_key):
      * runtime/StringPrototype.cpp:
      (JSC::replaceUsingRegExpSearch):
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@160094 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      6f0b31aa
    • commit-queue@webkit.org's avatar
      Remove stdio.h from JSC files. · 422331b0
      commit-queue@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=125220
      
      Patch by László Langó <lango@inf.u-szeged.hu> on 2013-12-04
      Reviewed by Michael Saboff.
      
      * interpreter/VMInspector.cpp:
      * jit/JITArithmetic.cpp:
      * jit/JITArithmetic32_64.cpp:
      * jit/JITCall.cpp:
      * jit/JITCall32_64.cpp:
      * jit/JITPropertyAccess.cpp:
      * jit/JITPropertyAccess32_64.cpp:
      * runtime/Completion.cpp:
      * runtime/IndexingType.cpp:
      * runtime/Lookup.h:
      * runtime/Operations.cpp:
      * runtime/Options.cpp:
      * runtime/RegExp.cpp:
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@160092 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      422331b0
    • commit-queue@webkit.org's avatar
      Avoid to add zero offset in BaseIndex. · 31f47d0a
      commit-queue@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=125215
      
      Patch by László Langó <lango@inf.u-szeged.hu> on 2013-12-04
      Reviewed by Michael Saboff.
      
      When using cloop do not generate offsets additions for BaseIndex if the offset is zero.
      
      * offlineasm/cloop.rb:
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@160091 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      31f47d0a
    • commit-queue@webkit.org's avatar
      Fix !ENABLE(JAVASCRIPT_DEBUGGER) build. · 2585f3b2
      commit-queue@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=125083
      
      Patch by Peter Molnar <pmolnar.u-szeged@partner.samsung.com> on 2013-12-04
      Reviewed by Mark Lam.
      
      * debugger/Debugger.cpp:
      * debugger/Debugger.h:
      (JSC::Debugger::Debugger):
      (JSC::Debugger::needsOpDebugCallbacks):
      (JSC::Debugger::needsExceptionCallbacks):
      (JSC::Debugger::detach):
      (JSC::Debugger::sourceParsed):
      (JSC::Debugger::exception):
      (JSC::Debugger::atStatement):
      (JSC::Debugger::callEvent):
      (JSC::Debugger::returnEvent):
      (JSC::Debugger::willExecuteProgram):
      (JSC::Debugger::didExecuteProgram):
      (JSC::Debugger::didReachBreakpoint):
      * debugger/DebuggerPrimitives.h:
      * jit/JITOpcodes.cpp:
      (JSC::JIT::emit_op_debug):
      * jit/JITOpcodes32_64.cpp:
      (JSC::JIT::emit_op_debug):
      * llint/LLIntOfflineAsmConfig.h:
      * llint/LowLevelInterpreter.asm:
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@160082 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      2585f3b2
  2. 03 Dec, 2013 8 commits
  3. 02 Dec, 2013 10 commits
    • mark.lam@apple.com's avatar
      Build failure when disabling JIT, YARR_JIT, and ASSEMBLER. · 10190c45
      mark.lam@apple.com authored
      https://bugs.webkit.org/show_bug.cgi?id=123809.
      
      Reviewed by Geoffrey Garen.
      
      Source/JavaScriptCore: 
      
      Also fixed build when disabling the DISASSEMBLER.
      Added some needed #if's and some comments.
      
      * assembler/LinkBuffer.cpp:
      (JSC::LinkBuffer::finalizeCodeWithDisassembly):
      * dfg/DFGDisassembler.cpp:
      * dfg/DFGDisassembler.h:
      (JSC::DFG::Disassembler::Disassembler):
      (JSC::DFG::Disassembler::setStartOfCode):
      (JSC::DFG::Disassembler::setForBlockIndex):
      (JSC::DFG::Disassembler::setForNode):
      (JSC::DFG::Disassembler::setEndOfMainPath):
      (JSC::DFG::Disassembler::setEndOfCode):
      (JSC::DFG::Disassembler::dump):
      (JSC::DFG::Disassembler::reportToProfiler):
      * disassembler/Disassembler.cpp:
      * disassembler/X86Disassembler.cpp:
      * jit/FPRInfo.h:
      * jit/GPRInfo.h:
      * jit/JITDisassembler.cpp:
      * jit/JITDisassembler.h:
      (JSC::JITDisassembler::JITDisassembler):
      (JSC::JITDisassembler::setStartOfCode):
      (JSC::JITDisassembler::setForBytecodeMainPath):
      (JSC::JITDisassembler::setForBytecodeSlowPath):
      (JSC::JITDisassembler::setEndOfSlowPath):
      (JSC::JITDisassembler::setEndOfCode):
      (JSC::JITDisassembler::dump):
      (JSC::JITDisassembler::reportToProfiler):
      
      Source/WTF: 
      
      * wtf/Platform.h:
      - Ensure that the ASSEMBLER is enabled when the DISASSEMBLER is enabled.
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@159987 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      10190c45
    • fpizlo@apple.com's avatar
      Baseline JIT calls to CommonSlowPaths shouldn't restore the last result · fa3a0000
      fpizlo@apple.com authored
      https://bugs.webkit.org/show_bug.cgi?id=125107
      
      Reviewed by Mark Hahnenberg.
      
      Just killing dead code.
      
      * jit/JITArithmetic.cpp:
      (JSC::JIT::emitSlow_op_negate):
      (JSC::JIT::emitSlow_op_lshift):
      (JSC::JIT::emitSlow_op_rshift):
      (JSC::JIT::emitSlow_op_urshift):
      (JSC::JIT::emitSlow_op_bitand):
      (JSC::JIT::emitSlow_op_inc):
      (JSC::JIT::emitSlow_op_dec):
      (JSC::JIT::emitSlow_op_mod):
      (JSC::JIT::emit_op_mod):
      (JSC::JIT::compileBinaryArithOpSlowCase):
      (JSC::JIT::emitSlow_op_div):
      * jit/JITArithmetic32_64.cpp:
      (JSC::JIT::emitSlow_op_negate):
      (JSC::JIT::emitSlow_op_lshift):
      (JSC::JIT::emitRightShiftSlowCase):
      (JSC::JIT::emitSlow_op_bitand):
      (JSC::JIT::emitSlow_op_bitor):
      (JSC::JIT::emitSlow_op_bitxor):
      (JSC::JIT::emitSlow_op_inc):
      (JSC::JIT::emitSlow_op_dec):
      (JSC::JIT::emitSlow_op_add):
      (JSC::JIT::emitSlow_op_sub):
      (JSC::JIT::emitSlow_op_mul):
      (JSC::JIT::emitSlow_op_div):
      * jit/JITOpcodes.cpp:
      (JSC::JIT::emit_op_strcat):
      (JSC::JIT::emitSlow_op_get_callee):
      (JSC::JIT::emitSlow_op_create_this):
      (JSC::JIT::emitSlow_op_to_this):
      (JSC::JIT::emitSlow_op_to_primitive):
      (JSC::JIT::emitSlow_op_not):
      (JSC::JIT::emitSlow_op_bitxor):
      (JSC::JIT::emitSlow_op_bitor):
      (JSC::JIT::emitSlow_op_stricteq):
      (JSC::JIT::emitSlow_op_nstricteq):
      (JSC::JIT::emitSlow_op_to_number):
      * jit/JITOpcodes32_64.cpp:
      (JSC::JIT::emitSlow_op_to_primitive):
      (JSC::JIT::emitSlow_op_not):
      (JSC::JIT::emitSlow_op_stricteq):
      (JSC::JIT::emitSlow_op_nstricteq):
      (JSC::JIT::emitSlow_op_to_number):
      (JSC::JIT::emitSlow_op_get_callee):
      (JSC::JIT::emitSlow_op_create_this):
      (JSC::JIT::emitSlow_op_to_this):
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@159973 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      fa3a0000
    • fpizlo@apple.com's avatar
      Stores to local captured variables should be intercepted · 0309686b
      fpizlo@apple.com authored
      https://bugs.webkit.org/show_bug.cgi?id=124883
      
      Source/JavaScriptCore: 
      
      Reviewed by Mark Hahnenberg.
              
      Previously, in bytecode, you could assign to a captured variable just as you would
      assign to any other kind of variable. This complicates closure variable constant
      inference because we don't have any place where we can intercept stores to captured
      variables in the LLInt.
              
      This patch institutes a policy that only certain instructions can store to captured
      variables. If you interpret those instructions and you are required to notifyWrite()
      then you need to check if the relevant variable is captured. Those instructions are
      tracked in CodeBlock.cpp's VerifyCapturedDef. The main one is simply op_captured_mov.
      In the future, we'll probably modify those instructions to have a pointer directly to
      the VariableWatchpointSet; but for now we just introduce the captured instructions as
      placeholders.
              
      In order to validate that the placeholders are inserted correctly, this patch improves
      the CodeBlock validation to be able to inspect every def in the bytecode. To do that,
      this patch refactors the liveness analysis' use/def calculator to be reusable; it now
      takes a functor for each use or def.
              
      In the process of refactoring the liveness analysis, I noticed that op_enter was
      claiming to def all callee registers. That's wrong; it only defs the non-temporary
      variables. Making that change revealed preexisting bugs in the liveness analysis, since
      now the validator would pick up cases where the bytecode claimed to use a temporary and
      the def calculator never noticed the definition (or the converse - where the bytecode
      was actually not using a temporary but the liveness analysis thought that it was a
      use). This patch fixes a few of those bugs.
      
      * GNUmakefile.list.am:
      * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
      * JavaScriptCore.xcodeproj/project.pbxproj:
      * bytecode/BytecodeLivenessAnalysis.cpp:
      (JSC::stepOverInstruction):
      * bytecode/BytecodeUseDef.h: Added.
      (JSC::computeUsesForBytecodeOffset):
      (JSC::computeDefsForBytecodeOffset):
      * bytecode/CodeBlock.cpp:
      (JSC::CodeBlock::dumpBytecode):
      (JSC::CodeBlock::isCaptured):
      (JSC::CodeBlock::validate):
      * bytecode/CodeBlock.h:
      * bytecode/Opcode.h:
      (JSC::padOpcodeName):
      * bytecompiler/BytecodeGenerator.cpp:
      (JSC::BytecodeGenerator::BytecodeGenerator):
      (JSC::BytecodeGenerator::resolveCallee):
      (JSC::BytecodeGenerator::emitMove):
      (JSC::BytecodeGenerator::isCaptured):
      (JSC::BytecodeGenerator::local):
      (JSC::BytecodeGenerator::constLocal):
      (JSC::BytecodeGenerator::emitNewFunction):
      (JSC::BytecodeGenerator::emitLazyNewFunction):
      (JSC::BytecodeGenerator::emitNewFunctionInternal):
      * bytecompiler/BytecodeGenerator.h:
      (JSC::Local::Local):
      (JSC::Local::isCaptured):
      (JSC::Local::captureMode):
      (JSC::BytecodeGenerator::captureMode):
      (JSC::BytecodeGenerator::emitNode):
      (JSC::BytecodeGenerator::pushOptimisedForIn):
      * bytecompiler/NodesCodegen.cpp:
      (JSC::PostfixNode::emitResolve):
      (JSC::PrefixNode::emitResolve):
      (JSC::ReadModifyResolveNode::emitBytecode):
      (JSC::AssignResolveNode::emitBytecode):
      (JSC::ConstDeclNode::emitCodeSingle):
      (JSC::ForInNode::emitBytecode):
      * dfg/DFGByteCodeParser.cpp:
      (JSC::DFG::ByteCodeParser::parseBlock):
      * dfg/DFGCapabilities.cpp:
      (JSC::DFG::capabilityLevel):
      * jit/JIT.cpp:
      (JSC::JIT::privateCompileMainPass):
      * llint/LowLevelInterpreter32_64.asm:
      * llint/LowLevelInterpreter64.asm:
      * runtime/SymbolTable.h:
      (JSC::SymbolTable::isCaptured):
      
      LayoutTests: 
      
      Reviewed by Mark Hahnenberg.
      
      * js/regress/captured-assignments-expected.txt: Added.
      * js/regress/captured-assignments.html: Added.
      * js/regress/script-tests/captured-assignments.js: Added.
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@159943 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      0309686b
    • fpizlo@apple.com's avatar
      Instead of watchpointing activation allocation, we should watchpoint entry... · a4ea0663
      fpizlo@apple.com authored
      Instead of watchpointing activation allocation, we should watchpoint entry into functions that have captured variables
      https://bugs.webkit.org/show_bug.cgi?id=125052
      
      Reviewed by Mark Hahnenberg.
              
      This makes us watch function entry rather than activation creation. We only incur the
      costs of doing so for functions that have captured variables, and only on the first two
      entries into the function. This means that closure variable constant inference will
      naturally work even for local uses of the captured variable, like:
              
          (function(){
              var blah = 42;
              ... // stuff
              function () { ... blah /* we can fold this to 42 */ }
              ... blah // we can also fold this to 42.
          })();
              
      Previously, only the nested use would have been foldable.
      
      * bytecode/BytecodeLivenessAnalysis.cpp:
      (JSC::computeUsesForBytecodeOffset):
      (JSC::computeDefsForBytecodeOffset):
      * bytecode/CodeBlock.cpp:
      (JSC::CodeBlock::dumpBytecode):
      * bytecode/Opcode.h:
      (JSC::padOpcodeName):
      * bytecode/Watchpoint.h:
      (JSC::WatchpointSet::touch):
      (JSC::InlineWatchpointSet::touch):
      * bytecompiler/BytecodeGenerator.cpp:
      (JSC::BytecodeGenerator::BytecodeGenerator):
      * dfg/DFGAbstractInterpreterInlines.h:
      (JSC::DFG::::executeEffects):
      * dfg/DFGByteCodeParser.cpp:
      (JSC::DFG::ByteCodeParser::parseBlock):
      * dfg/DFGCapabilities.cpp:
      (JSC::DFG::capabilityLevel):
      * dfg/DFGClobberize.h:
      (JSC::DFG::clobberize):
      * dfg/DFGFixupPhase.cpp:
      (JSC::DFG::FixupPhase::fixupNode):
      * dfg/DFGNode.h:
      (JSC::DFG::Node::hasSymbolTable):
      * dfg/DFGNodeType.h:
      * dfg/DFGPredictionPropagationPhase.cpp:
      (JSC::DFG::PredictionPropagationPhase::propagate):
      * dfg/DFGSafeToExecute.h:
      (JSC::DFG::safeToExecute):
      * dfg/DFGSpeculativeJIT32_64.cpp:
      (JSC::DFG::SpeculativeJIT::compile):
      * dfg/DFGSpeculativeJIT64.cpp:
      (JSC::DFG::SpeculativeJIT::compile):
      * dfg/DFGWatchpointCollectionPhase.cpp:
      (JSC::DFG::WatchpointCollectionPhase::handle):
      * ftl/FTLCapabilities.cpp:
      (JSC::FTL::canCompile):
      * ftl/FTLLowerDFGToLLVM.cpp:
      (JSC::FTL::LowerDFGToLLVM::compileNode):
      * jit/JIT.cpp:
      (JSC::JIT::privateCompileMainPass):
      * jit/JIT.h:
      * jit/JITOpcodes.cpp:
      (JSC::JIT::emit_op_touch_entry):
      * llint/LowLevelInterpreter.asm:
      * runtime/CommonSlowPaths.cpp:
      (JSC::SLOW_PATH_DECL):
      * runtime/CommonSlowPaths.h:
      * runtime/JSActivation.h:
      (JSC::JSActivation::create):
      * runtime/SymbolTable.cpp:
      (JSC::SymbolTable::SymbolTable):
      * runtime/SymbolTable.h:
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@159942 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      a4ea0663
    • commit-queue@webkit.org's avatar
      [JSC] Get rid of some unused parameters in LLIntSlowPaths.cpp macros · 7ca12a53
      commit-queue@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=125075
      
      Patch by Nick Diego Yamane <nick.yamane@openbossa.org> on 2013-12-02
      Reviewed by Michael Saboff.
      
      * llint/LLIntSlowPaths.cpp:
      (JSC::LLInt::handleHostCall): added UNUSED_PARAM(pc).
      (JSC::LLInt::setUpCall): Doesn't pass 'pc' to LLINT_CALL macros.
      (JSC::LLInt::LLINT_SLOW_PATH_DECL): Ditto.
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@159940 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      7ca12a53
    • commit-queue@webkit.org's avatar
      Remove stdio.h from JSC files. · 5e2fce2c
      commit-queue@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=125066
      
      Patch by László Langó <lango@inf.u-szeged.hu> on 2013-12-02
      Reviewed by Michael Saboff.
      
      Remove stdio.h, when it is not necessary to be included.
      
      * bytecode/CodeBlock.cpp:
      * bytecode/StructureSet.h:
      * profiler/LegacyProfiler.cpp:
      * profiler/Profile.cpp:
      * profiler/ProfileNode.cpp:
      * yarr/YarrInterpreter.cpp:
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@159937 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      5e2fce2c
    • commit-queue@webkit.org's avatar
      Unused include files when building without JIT. · d334b757
      commit-queue@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=125062
      
      Patch by László Langó <lango@inf.u-szeged.hu> on 2013-12-02
      Reviewed by Michael Saboff.
      
      We should organize the includes, and guard JIT methods
      in ValueRecovery.
      
      * bytecode/ValueRecovery.cpp: Guard include files.
      * bytecode/ValueRecovery.h: Guard JIT methods.
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@159936 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      d334b757
    • commit-queue@webkit.org's avatar
      [MIPS] Small stack frame causes regressions. · 13da9276
      commit-queue@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=124945
      
      Patch by Balazs Kilvady <kilvadyb@homejinni.com> on 2013-12-02
      Reviewed by Michael Saboff.
      
      Fix stack space for LLInt on MIPS.
      
      * llint/LowLevelInterpreter32_64.asm:
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@159935 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      13da9276
    • commit-queue@webkit.org's avatar
      jsc: implement a native readFile function · d296f384
      commit-queue@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=125059
      
      Patch by Brian J. Burg <burg@cs.washington.edu> on 2013-12-02
      Reviewed by Filip Pizlo.
      
      This adds a native readFile() function to jsc, used to slurp
      an entire file into a JavaScript string.
      
      * jsc.cpp:
      (GlobalObject::finishCreation): Add readFile() to globals.
      (functionReadFile): Added.
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@159934 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      d296f384
    • commit-queue@webkit.org's avatar
      JSC does not build if OPCODE_STATS is enabled. · 2f00452d
      commit-queue@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=125011
      
      Patch by László Langó <lango@inf.u-szeged.hu> on 2013-12-02
      Reviewed by Filip Pizlo.
      
      * bytecode/Opcode.cpp:
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@159933 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      2f00452d
  4. 30 Nov, 2013 1 commit
    • fpizlo@apple.com's avatar
      Finally remove those DFG_ENABLE things · ecd97b0c
      fpizlo@apple.com authored
      https://bugs.webkit.org/show_bug.cgi?id=125025
      
      Rubber stamped by Sam Weinig.
              
      This removes a bunch of unused and untested insanity.
      
      * bytecode/CodeBlock.cpp:
      (JSC::CodeBlock::tallyFrequentExitSites):
      * dfg/DFGArgumentsSimplificationPhase.cpp:
      (JSC::DFG::ArgumentsSimplificationPhase::run):
      * dfg/DFGByteCodeParser.cpp:
      (JSC::DFG::ByteCodeParser::injectLazyOperandSpeculation):
      (JSC::DFG::ByteCodeParser::getArrayModeConsideringSlowPath):
      (JSC::DFG::ByteCodeParser::makeSafe):
      (JSC::DFG::ByteCodeParser::makeDivSafe):
      (JSC::DFG::ByteCodeParser::handleCall):
      (JSC::DFG::ByteCodeParser::handleInlining):
      (JSC::DFG::ByteCodeParser::parseBlock):
      (JSC::DFG::ByteCodeParser::linkBlock):
      (JSC::DFG::ByteCodeParser::InlineStackEntry::InlineStackEntry):
      (JSC::DFG::ByteCodeParser::parseCodeBlock):
      (JSC::DFG::ByteCodeParser::parse):
      (JSC::DFG::parse):
      * dfg/DFGCFGSimplificationPhase.cpp:
      (JSC::DFG::CFGSimplificationPhase::run):
      (JSC::DFG::CFGSimplificationPhase::convertToJump):
      (JSC::DFG::CFGSimplificationPhase::fixJettisonedPredecessors):
      * dfg/DFGCSEPhase.cpp:
      (JSC::DFG::CSEPhase::endIndexForPureCSE):
      (JSC::DFG::CSEPhase::eliminateIrrelevantPhantomChildren):
      (JSC::DFG::CSEPhase::setReplacement):
      (JSC::DFG::CSEPhase::eliminate):
      (JSC::DFG::CSEPhase::performNodeCSE):
      * dfg/DFGCommon.h:
      (JSC::DFG::verboseCompilationEnabled):
      (JSC::DFG::logCompilationChanges):
      (JSC::DFG::shouldDumpGraphAtEachPhase):
      * dfg/DFGConstantFoldingPhase.cpp:
      (JSC::DFG::ConstantFoldingPhase::foldConstants):
      * dfg/DFGFixupPhase.cpp:
      (JSC::DFG::FixupPhase::fixupNode):
      (JSC::DFG::FixupPhase::injectInt32ToDoubleNode):
      * dfg/DFGInPlaceAbstractState.cpp:
      (JSC::DFG::InPlaceAbstractState::initialize):
      (JSC::DFG::InPlaceAbstractState::endBasicBlock):
      (JSC::DFG::InPlaceAbstractState::mergeStateAtTail):
      (JSC::DFG::InPlaceAbstractState::mergeToSuccessors):
      * dfg/DFGJITCompiler.cpp:
      (JSC::DFG::JITCompiler::compileBody):
      (JSC::DFG::JITCompiler::link):
      * dfg/DFGOSRExitCompiler.cpp:
      * dfg/DFGOSRExitCompiler32_64.cpp:
      (JSC::DFG::OSRExitCompiler::compileExit):
      * dfg/DFGOSRExitCompiler64.cpp:
      (JSC::DFG::OSRExitCompiler::compileExit):
      * dfg/DFGOSRExitCompilerCommon.cpp:
      (JSC::DFG::adjustAndJumpToTarget):
      * dfg/DFGPredictionInjectionPhase.cpp:
      (JSC::DFG::PredictionInjectionPhase::run):
      * dfg/DFGPredictionPropagationPhase.cpp:
      (JSC::DFG::PredictionPropagationPhase::run):
      (JSC::DFG::PredictionPropagationPhase::propagate):
      (JSC::DFG::PredictionPropagationPhase::propagateForward):
      (JSC::DFG::PredictionPropagationPhase::propagateBackward):
      (JSC::DFG::PredictionPropagationPhase::doRoundOfDoubleVoting):
      * dfg/DFGScoreBoard.h:
      (JSC::DFG::ScoreBoard::use):
      * dfg/DFGSlowPathGenerator.h:
      (JSC::DFG::SlowPathGenerator::generate):
      * dfg/DFGSpeculativeJIT.cpp:
      (JSC::DFG::SpeculativeJIT::terminateSpeculativeExecution):
      (JSC::DFG::SpeculativeJIT::runSlowPathGenerators):
      (JSC::DFG::SpeculativeJIT::dump):
      (JSC::DFG::SpeculativeJIT::compileCurrentBlock):
      (JSC::DFG::SpeculativeJIT::checkGeneratedTypeForToInt32):
      * dfg/DFGSpeculativeJIT.h:
      * dfg/DFGSpeculativeJIT32_64.cpp:
      (JSC::DFG::SpeculativeJIT::fillSpeculateInt32Internal):
      (JSC::DFG::SpeculativeJIT::fillSpeculateDouble):
      (JSC::DFG::SpeculativeJIT::fillSpeculateCell):
      (JSC::DFG::SpeculativeJIT::fillSpeculateBoolean):
      (JSC::DFG::SpeculativeJIT::compile):
      * dfg/DFGSpeculativeJIT64.cpp:
      (JSC::DFG::SpeculativeJIT::fillSpeculateInt32Internal):
      (JSC::DFG::SpeculativeJIT::fillSpeculateDouble):
      (JSC::DFG::SpeculativeJIT::fillSpeculateCell):
      (JSC::DFG::SpeculativeJIT::fillSpeculateBoolean):
      (JSC::DFG::SpeculativeJIT::compile):
      * dfg/DFGVariableEventStream.cpp:
      (JSC::DFG::VariableEventStream::reconstruct):
      * dfg/DFGVariableEventStream.h:
      (JSC::DFG::VariableEventStream::appendAndLog):
      * dfg/DFGVirtualRegisterAllocationPhase.cpp:
      (JSC::DFG::VirtualRegisterAllocationPhase::run):
      * jit/JIT.cpp:
      (JSC::JIT::privateCompile):
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@159886 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      ecd97b0c
  5. 29 Nov, 2013 3 commits
  6. 28 Nov, 2013 2 commits
    • nrotem@apple.com's avatar
      Revert the X86 assembler peephole changes · a47b30a2
      nrotem@apple.com authored
      https://bugs.webkit.org/show_bug.cgi?id=124988
      
      Reviewed by Csaba Osztrogonác.
      
      * assembler/MacroAssemblerX86.h:
      (JSC::MacroAssemblerX86::add32):
      (JSC::MacroAssemblerX86::add64):
      (JSC::MacroAssemblerX86::or32):
      * assembler/MacroAssemblerX86Common.h:
      (JSC::MacroAssemblerX86Common::add32):
      (JSC::MacroAssemblerX86Common::or32):
      (JSC::MacroAssemblerX86Common::branchAdd32):
      * assembler/MacroAssemblerX86_64.h:
      (JSC::MacroAssemblerX86_64::add32):
      (JSC::MacroAssemblerX86_64::or32):
      (JSC::MacroAssemblerX86_64::add64):
      (JSC::MacroAssemblerX86_64::or64):
      (JSC::MacroAssemblerX86_64::xor64):
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@159855 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      a47b30a2
    • antti@apple.com's avatar
      Remove feature: CSS variables · c6dce2e5
      antti@apple.com authored
      https://bugs.webkit.org/show_bug.cgi?id=114119
      
      .: 
      
      Reviewed by Andreas Kling.
      
      * Source/cmakeconfig.h.cmake:
      
      Source/JavaScriptCore: 
      
      Reviewed by Andreas Kling.
      
      * Configurations/FeatureDefines.xcconfig:
      
      Source/WebCore: 
      
      Reviewed by Andreas Kling.
              
      The feature is unmaintained and it is getting in the way of refactoring. Code quality is not up to
      WebKit standards either.
      
      * Configurations/FeatureDefines.xcconfig:
      * GNUmakefile.list.am:
      * WebCore.xcodeproj/project.pbxproj:
      * css/CSSBasicShapes.cpp:
      * css/CSSBasicShapes.h:
      * css/CSSCalculationValue.cpp:
      (WebCore::unitCategory):
      (WebCore::hasDoubleValue):
      (WebCore::CSSCalcPrimitiveValue::toCalcValue):
      (WebCore::CSSCalcPrimitiveValue::computeLengthPx):
      (WebCore::determineCategory):
      (WebCore::CSSCalcBinaryOperation::primitiveType):
      * css/CSSCalculationValue.h:
      * css/CSSComputedStyleDeclaration.cpp:
      (WebCore::ComputedStyleExtractor::propertyValue):
      * css/CSSGrammar.y.in:
      * css/CSSParser.cpp:
      (WebCore::CSSParserContext::CSSParserContext):
      (WebCore::operator==):
      (WebCore::filterProperties):
      (WebCore::CSSParser::createStylePropertySet):
      (WebCore::CSSParser::addProperty):
      (WebCore::CSSParser::validCalculationUnit):
      (WebCore::CSSParser::validUnit):
      (WebCore::CSSParser::createPrimitiveNumericValue):
      (WebCore::CSSParser::parseValidPrimitive):
      (WebCore::CSSParser::parseValue):
      (WebCore::CSSParser::parseReflect):
      (WebCore::CSSParser::detectDashToken):
      (WebCore::CSSParser::realLex):
      * css/CSSParser.h:
      * css/CSSParserMode.h:
      * css/CSSParserValues.cpp:
      (WebCore::CSSParserValue::createCSSValue):
      * css/CSSParserValues.h:
      * css/CSSPrimitiveValue.cpp:
      (WebCore::isValidCSSUnitTypeForDoubleConversion):
      (WebCore::CSSPrimitiveValue::primitiveType):
      (WebCore::CSSPrimitiveValue::cleanup):
      (WebCore::CSSPrimitiveValue::getStringValue):
      (WebCore::CSSPrimitiveValue::customCSSText):
      (WebCore::CSSPrimitiveValue::equals):
      * css/CSSPrimitiveValue.h:
      * css/CSSPrimitiveValueMappings.h:
      (WebCore::CSSPrimitiveValue::convertToLength):
      * css/CSSProperty.cpp:
      * css/CSSProperty.h:
      (WebCore::CSSProperty::CSSProperty):
      * css/CSSReflectValue.cpp:
      * css/CSSReflectValue.h:
      * css/CSSValue.cpp:
      (WebCore::CSSValue::equals):
      (WebCore::CSSValue::cssText):
      (WebCore::CSSValue::destroy):
      * css/CSSValue.h:
      (WebCore::CSSValue::setCssText):
      * css/CSSValueList.cpp:
      * css/CSSValueList.h:
      * css/CSSVariableValue.h: Removed.
      * css/Pair.h:
      * css/Rect.h:
      * css/StylePropertySet.cpp:
      (WebCore::StylePropertySet::asText):
      (WebCore::StylePropertySet::PropertyReference::cssName):
      * css/StyleResolver.cpp:
      (WebCore::StyleResolver::styleForPage):
      (WebCore::StyleResolver::applyProperties):
      (WebCore::StyleResolver::applyMatchedProperties):
      (WebCore::StyleResolver::applyProperty):
      * css/StyleResolver.h:
      * css/WebKitCSSTransformValue.cpp:
      * css/WebKitCSSTransformValue.h:
      (WebCore::WebKitCSSTransformValue::equals):
      * css/makeprop.pl:
      * page/Settings.cpp:
      (WebCore::Settings::Settings):
      * page/Settings.h:
      * rendering/style/RenderStyle.h:
      * rendering/style/StyleRareInheritedData.cpp:
      (WebCore::StyleRareInheritedData::StyleRareInheritedData):
      (WebCore::StyleRareInheritedData::operator==):
      * rendering/style/StyleRareInheritedData.h:
      * rendering/style/StyleVariableData.h: Removed.
      * testing/InternalSettings.cpp:
      (WebCore::InternalSettings::Backup::Backup):
      (WebCore::InternalSettings::Backup::restoreTo):
      * testing/InternalSettings.h:
      * testing/InternalSettings.idl:
      
      Source/WebKit/mac: 
      
      Reviewed by Andreas Kling.
      
      * Configurations/FeatureDefines.xcconfig:
      
      Source/WebKit2: 
      
      Reviewed by Andreas Kling.
      
      * Configurations/FeatureDefines.xcconfig:
      
      Source/WTF: 
      
      Reviewed by Andreas Kling.
      
      * wtf/FeatureDefines.h:
      
      Tools: 
      
      Reviewed by Andreas Kling.
      
      * Scripts/webkitperl/FeatureList.pm:
      
      LayoutTests: 
      
      Reviewed by Andreas Kling.
      
      * fast/css/variables: Removed.
      * fast/css/variables/border-width-expected.html: Removed.
      * fast/css/variables/border-width.html: Removed.
      * fast/css/variables/build-supports-variables-expected.txt: Removed.
      * fast/css/variables/build-supports-variables.html: Removed.
      * fast/css/variables/calc-expected.html: Removed.
      * fast/css/variables/calc-inside-calc-expected.html: Removed.
      * fast/css/variables/calc-inside-calc.html: Removed.
      * fast/css/variables/calc-invalid-value-expected.html: Removed.
      * fast/css/variables/calc-invalid-value.html: Removed.
      * fast/css/variables/calc-invalid-variable-expected.html: Removed.
      * fast/css/variables/calc-invalid-variable.html: Removed.
      * fast/css/variables/calc-negated-variable-expected.html: Removed.
      * fast/css/variables/calc-negated-variable.html: Removed.
      * fast/css/variables/calc-vw-crash-expected.txt: Removed.
      * fast/css/variables/calc-vw-crash.html: Removed.
      * fast/css/variables/calc.html: Removed.
      * fast/css/variables/case-sensitive-expected.html: Removed.
      * fast/css/variables/case-sensitive.html: Removed.
      * fast/css/variables/colors-test-expected.html: Removed.
      * fast/css/variables/colors-test.html: Removed.
      * fast/css/variables/complex-cycle-expected.html: Removed.
      * fast/css/variables/complex-cycle.html: Removed.
      * fast/css/variables/computed-style-expected.html: Removed.
      * fast/css/variables/computed-style.html: Removed.
      * fast/css/variables/deferred-image-load-from-variable-expected.txt: Removed.
      * fast/css/variables/deferred-image-load-from-variable.html: Removed.
      * fast/css/variables/inherited-values-expected.html: Removed.
      * fast/css/variables/inherited-values.html: Removed.
      * fast/css/variables/inline-styles-expected.html: Removed.
      * fast/css/variables/inline-styles.html: Removed.
      * fast/css/variables/invalid-font-reference-expected.txt: Removed.
      * fast/css/variables/invalid-font-reference.html: Removed.
      * fast/css/variables/invalid-shorthand-expected.html: Removed.
      * fast/css/variables/invalid-shorthand.html: Removed.
      * fast/css/variables/invalid-value-list-crash-expected.txt: Removed.
      * fast/css/variables/invalid-value-list-crash.html: Removed.
      * fast/css/variables/invalid-variable-value-expected.html: Removed.
      * fast/css/variables/invalid-variable-value.html: Removed.
      * fast/css/variables/multi-level-cycle-expected.html: Removed.
      * fast/css/variables/multi-level-cycle.html: Removed.
      * fast/css/variables/redefinition-expected.html: Removed.
      * fast/css/variables/redefinition.html: Removed.
      * fast/css/variables/root-background-size-expected.html: Removed.
      * fast/css/variables/root-background-size.html: Removed.
      * fast/css/variables/shorthand-expected.html: Removed.
      * fast/css/variables/shorthand.html: Removed.
      * fast/css/variables/simple-cycle-expected.html: Removed.
      * fast/css/variables/simple-cycle.html: Removed.
      * fast/css/variables/transform-test-expected.html: Removed.
      * fast/css/variables/transform-test.html: Removed.
      * fast/css/variables/undefined-expected.html: Removed.
      * fast/css/variables/undefined.html: Removed.
      * fast/css/variables/use-before-defined-expected.html: Removed.
      * fast/css/variables/use-before-defined.html: Removed.
      * fast/css/variables/var-filter-expected.txt: Removed.
      * fast/css/variables/var-filter.html: Removed.
      * fast/css/variables/var-inside-box-reflect-expected.html: Removed.
      * fast/css/variables/var-inside-box-reflect.html: Removed.
      * fast/css/variables/var-inside-pair-expected.html: Removed.
      * fast/css/variables/var-inside-pair.html: Removed.
      * fast/css/variables/var-inside-quad-expected.html: Removed.
      * fast/css/variables/var-inside-quad.html: Removed.
      * fast/css/variables/var-inside-shape-expected.html: Removed.
      * fast/css/variables/var-inside-shape.html: Removed.
      * fast/css/variables/var-inside-shorthand-expected.html: Removed.
      * fast/css/variables/var-inside-shorthand.html: Removed.
      * fast/css/variables/variable-chain-expected.html: Removed.
      * fast/css/variables/variable-chain.html: Removed.
      * fast/css/variables/variable-unparseable-value-crash-expected.txt: Removed.
      * fast/css/variables/variable-unparseable-value-crash.html: Removed.
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@159842 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      c6dce2e5