1. 06 Dec, 2013 9 commits
  2. 05 Dec, 2013 6 commits
    • msaboff@apple.com's avatar
      JSC: Simplify interface between throw and catch handler · c3101eb3
      msaboff@apple.com authored
      https://bugs.webkit.org/show_bug.cgi?id=125328
      
      Reviewed by Geoffrey Garen.
      
      Simplified the throw - catch interface.  The throw side is only responsible for
      jumping to the appropriate op_catch handler or returnFromJavaScript for uncaught
      exceptions.  The handler uses the exception values like VM.callFrameForThrow
      as appropriate and no longer relies on the throw side putting anything in
      registers.
      
      * jit/CCallHelpers.h:
      (JSC::CCallHelpers::jumpToExceptionHandler):
      * jit/JITOpcodes.cpp:
      (JSC::JIT::emit_op_catch):
      * jit/JITOpcodes32_64.cpp:
      (JSC::JIT::emit_op_catch):
      * llint/LowLevelInterpreter32_64.asm:
      (_llint_op_catch):
      (_llint_throw_from_slow_path_trampoline):
      * llint/LowLevelInterpreter64.asm:
      (_llint_op_catch):
      (_llint_throw_from_slow_path_trampoline):
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@160213 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      c3101eb3
    • oliver@apple.com's avatar
      Refactor static getter function prototype to include thisValue in addition to the base object · ae0687ba
      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@160208 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      ae0687ba
    • fpizlo@apple.com's avatar
      FTL should use cvttsd2si directly for double-to-int32 conversions · 9ba2f35c
      fpizlo@apple.com authored
      https://bugs.webkit.org/show_bug.cgi?id=125275
      
      Source/JavaScriptCore: 
      
      Reviewed by Michael Saboff.
              
      Wow. This was an ordeal. Using cvttsd2si was actually easy, but I learned, and
      sometimes even fixed, some interesting things:
              
      - The llvm.x86.sse2.cvttsd2si intrinsic can actually result in LLVM emitting a
        vcvttsd2si. I guess the intrinsic doesn't actually imply the instruction.
              
      - That whole thing about branchTruncateDoubleToUint32? Yeah we don't need that. It's
        better to use branchTruncateDoubleToInt32 instead. It has the right semantics for
        all of its callers (err, its one-and-only caller), and it's more likely to take
        fast path. This patch kills branchTruncateDoubleToUint32.
              
      - "a[i] = v; v = a[i]". Does this change v? OK, assume that 'a[i]' is a pure-ish
        operation - like an array access with 'i' being an integer index and we're not
        having a bad time. Now does this change v? CSE assumes that it doesn't. That's
        wrong. If 'a' is a typed array - the most sensible and pure kind of array - then
        this can be a truncating cast. For example 'v' could be a double and 'a' could be
        an integer array.
              
      - "v1 = a[i]; v2 = a[i]". Is v1 === v2 assuming that 'a[i]' is pure-ish? The answer
        is no. You could have a different arrayMode in each access. I know this sounds
        weird, but with concurrent JIT that might happen.
              
      This patch adds tests for all of this stuff, except for the first issue (it's weird
      but probably doesn't matter) and the last issue (it's too much of a freakshow).
      
      * assembler/MacroAssemblerARM64.h:
      * assembler/MacroAssemblerARMv7.h:
      * assembler/MacroAssemblerX86Common.h:
      * dfg/DFGCSEPhase.cpp:
      (JSC::DFG::CSEPhase::getByValLoadElimination):
      (JSC::DFG::CSEPhase::performNodeCSE):
      * dfg/DFGSpeculativeJIT.cpp:
      (JSC::DFG::SpeculativeJIT::compilePutByValForIntTypedArray):
      * ftl/FTLAbbreviations.h:
      (JSC::FTL::vectorType):
      (JSC::FTL::getUndef):
      (JSC::FTL::buildInsertElement):
      * ftl/FTLIntrinsicRepository.h:
      * ftl/FTLLowerDFGToLLVM.cpp:
      (JSC::FTL::LowerDFGToLLVM::doubleToInt32):
      (JSC::FTL::LowerDFGToLLVM::doubleToUInt32):
      (JSC::FTL::LowerDFGToLLVM::sensibleDoubleToInt32):
      * ftl/FTLOutput.h:
      (JSC::FTL::Output::insertElement):
      (JSC::FTL::Output::hasSensibleDoubleToInt):
      (JSC::FTL::Output::sensibleDoubleToInt):
      
      LayoutTests: 
      
      Reviewed by Michael Saboff.
      
      * js/regress/double-to-int32-typed-array-expected.txt: Added.
      * js/regress/double-to-int32-typed-array-no-inline-expected.txt: Added.
      * js/regress/double-to-int32-typed-array-no-inline.html: Added.
      * js/regress/double-to-int32-typed-array.html: Added.
      * js/regress/double-to-uint32-typed-array-expected.txt: Added.
      * js/regress/double-to-uint32-typed-array-no-inline-expected.txt: Added.
      * js/regress/double-to-uint32-typed-array-no-inline.html: Added.
      * js/regress/double-to-uint32-typed-array.html: Added.
      * js/regress/script-tests/double-to-int32-typed-array-no-inline.js: Added.
      (foo):
      (test):
      * js/regress/script-tests/double-to-int32-typed-array.js: Added.
      (foo):
      (test):
      * js/regress/script-tests/double-to-uint32-typed-array-no-inline.js: Added.
      (foo):
      (test):
      * js/regress/script-tests/double-to-uint32-typed-array.js: Added.
      (foo):
      (test):
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@160205 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      9ba2f35c
    • commit-queue@webkit.org's avatar
      Unreviewed, rolling out r160133. · 82a8937b
      commit-queue@webkit.org authored
      http://trac.webkit.org/changeset/160133
      https://bugs.webkit.org/show_bug.cgi?id=125325
      
      broke bindings tests on all the bots (Requested by thorton on
      #webkit).
      
      Source/JavaScriptCore:
      
      * API/JSCallbackObject.h:
      * API/JSCallbackObjectFunctions.h:
      (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::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::regExpObjectGlobal):
      (JSC::regExpObjectIgnoreCase):
      (JSC::regExpObjectMultiline):
      (JSC::regExpObjectSource):
      
      Source/WebCore:
      
      * 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:
      
      * 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::counterValue):
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@160204 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      82a8937b
    • mark.lam@apple.com's avatar
      Make the C Loop LLINT work with callToJavaScript. · afeead10
      mark.lam@apple.com authored
      https://bugs.webkit.org/show_bug.cgi?id=125294.
      
      Reviewed by Michael Saboff.
      
      1. Changed the C Loop LLINT to dispatch to an Executable via its JITCode
         instance which is consistent with how the ASM LLINT works.
      2. Changed CLoop::execute() to take an Opcode instead of an OpcodeID.
         This makes it play nice with the use of JITCode for dispatching.
      3. Introduce a callToJavaScript and callToNativeFunction for the C Loop
         LLINT. These will call JSStack::pushFrame() and popFrame() to setup
         and teardown the CallFrame.
      4. Also introduced a C Loop returnFromJavaScript which is just a
         replacement for ctiOpThrowNotCaught which had the same function.
      5. Remove a lot of #if ENABLE(LLINT_C_LOOP) code now that the dispatch
         mechanism is consistent.
      
      This patch has been tested with both configurations of COMPUTED_GOTOs
      on and off.
      
      * interpreter/CachedCall.h:
      (JSC::CachedCall::CachedCall):
      (JSC::CachedCall::call):
      (JSC::CachedCall::setArgument):
      * interpreter/CallFrameClosure.h:
      (JSC::CallFrameClosure::setThis):
      (JSC::CallFrameClosure::setArgument):
      (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::pushFrame):
      * interpreter/ProtoCallFrame.h:
      (JSC::ProtoCallFrame::scope):
      (JSC::ProtoCallFrame::callee):
      (JSC::ProtoCallFrame::thisValue):
      (JSC::ProtoCallFrame::argument):
      (JSC::ProtoCallFrame::setArgument):
      * jit/JITCode.cpp:
      (JSC::JITCode::execute):
      * jit/JITCode.h:
      * jit/JITExceptions.cpp:
      (JSC::genericUnwind):
      * llint/LLIntCLoop.cpp:
      (JSC::LLInt::CLoop::initialize):
      * llint/LLIntCLoop.h:
      * llint/LLIntEntrypoint.cpp:
      (JSC::LLInt::setFunctionEntrypoint):
      (JSC::LLInt::setEvalEntrypoint):
      (JSC::LLInt::setProgramEntrypoint):
      - Inverted the check for vm.canUseJIT(). This allows the JIT case to be
        #if'd out nicely when building the C Loop LLINT.
      * llint/LLIntOpcode.h:
      * llint/LLIntThunks.cpp:
      (JSC::doCallToJavaScript):
      (JSC::executeJS):
      (JSC::callToJavaScript):
      (JSC::executeNative):
      (JSC::callToNativeFunction):
      * llint/LLIntThunks.h:
      * llint/LowLevelInterpreter.cpp:
      (JSC::CLoop::execute):
      * runtime/Executable.h:
      (JSC::ExecutableBase::offsetOfNumParametersFor):
      (JSC::ExecutableBase::hostCodeEntryFor):
      (JSC::ExecutableBase::jsCodeEntryFor):
      (JSC::ExecutableBase::jsCodeWithArityCheckEntryFor):
      (JSC::NativeExecutable::create):
      (JSC::NativeExecutable::finishCreation):
      (JSC::ProgramExecutable::generatedJITCode):
      * runtime/JSArray.cpp:
      (JSC::AVLTreeAbstractorForArrayCompare::compare_key_key):
      * runtime/StringPrototype.cpp:
      (JSC::replaceUsingRegExpSearch):
      * runtime/VM.cpp:
      (JSC::VM::getHostFunction):
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@160186 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      afeead10
    • commit-queue@webkit.org's avatar
      Fix JavaScriptCore build if cloop is enabled after r160094 · 02308551
      commit-queue@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=125292
      
      Patch by Laszlo Vidacs <lac@inf.u-szeged.hu> on 2013-12-05
      Reviewed by Michael Saboff.
      
      Move ProtoCallFrame outside the JIT guard.
      
      * jit/JITCode.h:
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@160175 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      02308551
  3. 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
  4. 03 Dec, 2013 8 commits
  5. 02 Dec, 2013 1 commit
    • 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