2011-03-11 Oliver Hunt <oliver@apple.com>
authoroliver@apple.com <oliver@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 12 Mar 2011 03:12:05 +0000 (03:12 +0000)
committeroliver@apple.com <oliver@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 12 Mar 2011 03:12:05 +0000 (03:12 +0000)
commiteafa8db1c5d29abf00a50d89cee936613b65685d
tree026f23bd62288070add6e45db05b15d4f2e13a53
parentc335ef335f6bbe41f0347d7500961d72caa9f8a2
2011-03-11  Oliver Hunt  <oliver@apple.com>

        Reviewed by Gavin Barraclough.

        Ensure all values are correctly tagged in the registerfile
        https://bugs.webkit.org/show_bug.cgi?id=56214

        This patch makes sure that all JSCell pointers written to
        the registerfile are correctly tagged as JSCells, and replaces
        raw int usage with the immediate representation.

        For performance, register pressure, and general saneness reasons
        I've added abstractions for reading and writing the tag
        and payload of integer registers directly for the JSVALUE64
        encoding.

        * interpreter/Register.h:
        (JSC::Register::withInt):
        (JSC::Register::withCallee):
        (JSC::Register::operator=):
        (JSC::Register::i):
        (JSC::Register::activation):
        (JSC::Register::function):
        (JSC::Register::propertyNameIterator):
        (JSC::Register::scopeChain):
        * jit/JIT.h:
        * jit/JITCall.cpp:
        (JSC::JIT::compileOpCallInitializeCallFrame):
        (JSC::JIT::compileOpCallVarargs):
        (JSC::JIT::compileOpCall):
        * jit/JITCall32_64.cpp:
        (JSC::JIT::compileOpCallInitializeCallFrame):
        (JSC::JIT::compileOpCallVarargs):
        (JSC::JIT::compileOpCall):
        (JSC::JIT::compileOpCallSlowCase):
        * jit/JITInlineMethods.h:
        (JSC::JIT::emitPutToCallFrameHeader):
        (JSC::JIT::emitPutCellToCallFrameHeader):
        (JSC::JIT::emitPutIntToCallFrameHeader):
        * jit/JITOpcodes.cpp:
        (JSC::JIT::privateCompileCTINativeCall):
        (JSC::JIT::emit_op_get_pnames):
        (JSC::JIT::emit_op_next_pname):
        (JSC::JIT::emit_op_load_varargs):
        (JSC::JIT::emitSlow_op_load_varargs):
        * jit/JITOpcodes32_64.cpp:
        (JSC::JIT::privateCompileCTINativeCall):
        (JSC::JIT::emit_op_get_pnames):
        (JSC::JIT::emit_op_next_pname):
        * jit/JSInterfaceJIT.h:
        (JSC::JSInterfaceJIT::intPayloadFor):
        (JSC::JSInterfaceJIT::intTagFor):
        * jit/SpecializedThunkJIT.h:
        (JSC::SpecializedThunkJIT::returnJSValue):
        (JSC::SpecializedThunkJIT::returnDouble):
        (JSC::SpecializedThunkJIT::returnInt32):
        (JSC::SpecializedThunkJIT::returnJSCell):
2011-03-11  Oliver Hunt  <oliver@apple.com>

        Reviewed by Gavin Barraclough.

        Ensure all values are correctly tagged in the registerfile
        https://bugs.webkit.org/show_bug.cgi?id=56214

        Make sure everything builds still.

        * bridge/c/c_class.cpp:
        * bridge/c/c_runtime.cpp:
        * bridge/jni/JavaMethod.cpp:
        * plugins/PluginViewNone.cpp:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@80919 268f45cc-cd09-0410-ab3c-d52691b4dbfc
33 files changed:
Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
Source/JavaScriptCore/bytecode/StructureStubInfo.cpp
Source/JavaScriptCore/interpreter/Register.h
Source/JavaScriptCore/jit/JIT.h
Source/JavaScriptCore/jit/JITCall.cpp
Source/JavaScriptCore/jit/JITCall32_64.cpp
Source/JavaScriptCore/jit/JITInlineMethods.h
Source/JavaScriptCore/jit/JITOpcodes.cpp
Source/JavaScriptCore/jit/JITOpcodes32_64.cpp
Source/JavaScriptCore/jit/JSInterfaceJIT.h
Source/JavaScriptCore/jit/SpecializedThunkJIT.h
Source/JavaScriptCore/runtime/ArgList.cpp
Source/JavaScriptCore/runtime/DateConversion.cpp
Source/JavaScriptCore/runtime/GCActivityCallbackCF.cpp
Source/JavaScriptCore/runtime/Identifier.cpp
Source/JavaScriptCore/runtime/JSActivation.h
Source/JavaScriptCore/runtime/JSLock.cpp
Source/JavaScriptCore/runtime/JSNumberCell.cpp
Source/JavaScriptCore/runtime/JSObject.h
Source/JavaScriptCore/runtime/JSPropertyNameIterator.h
Source/JavaScriptCore/runtime/JSValue.h
Source/JavaScriptCore/runtime/JSZombie.cpp
Source/JavaScriptCore/runtime/MarkedBlock.cpp
Source/JavaScriptCore/runtime/MarkedSpace.cpp
Source/JavaScriptCore/runtime/PropertyNameArray.cpp
Source/JavaScriptCore/runtime/ScopeChain.h
Source/JavaScriptCore/wtf/DateMath.cpp
Source/WebCore/ChangeLog
Source/WebCore/bridge/c/c_class.cpp
Source/WebCore/bridge/c/c_runtime.cpp
Source/WebCore/bridge/jni/JavaMethod.cpp
Source/WebCore/plugins/PluginViewNone.cpp