From 2bde8e466a4451c7319e3a072d118917957d6554 Mon Sep 17 00:00:00 2001 From: Steve Block Date: Wed, 25 May 2011 19:08:45 +0100 Subject: Merge WebKit at r82507: Initial merge by git Change-Id: I60ce9d780725b58b45e54165733a8ffee23b683e --- Examples/ChangeLog | 15 + .../core/hc_elementwrongdocumenterr-expected.txt | 5 +- .../hc_namednodemapwrongdocumenterr-expected.txt | 5 +- .../core/hc_elementwrongdocumenterr-expected.txt | 3 +- .../hc_namednodemapwrongdocumenterr-expected.txt | 3 +- ...-reload-cancel-permission-requests-expected.txt | 10 + .../page-reload-cancel-permission-requests.html | 13 + ...ge-reload-cancel-permission-requests-inner.html | 7 + .../Geolocation/resources/window-close-popup.html | 4 +- .../page-reload-cancel-permission-requests.js | 44 + .../Geolocation/script-tests/window-close-crash.js | 6 - .../invalid-form-field-expected.txt | 5 + .../dom/HTMLFormElement/invalid-form-field.html | 45 + .../move-option-between-documents-expected.txt | 5 + .../move-option-between-documents.html | 45 + .../prefetch-beforeload-expected.txt | 2 + .../dom/HTMLLinkElement/prefetch-beforeload.html | 14 + .../HTMLLinkElement/prefetch-onerror-expected.txt | 6 + .../fast/dom/HTMLLinkElement/prefetch-onerror.html | 25 + .../encoding/dumpAsText/utf-16-no-bom-expected.txt | 1 - .../js-constructors-use-correct-global.js | 16 + .../http/tests/appcache/origin-delete-expected.txt | 7 + LayoutTests/http/tests/appcache/origin-delete.html | 58 + .../appcache/origins-with-appcache-expected.txt | 5 + .../http/tests/appcache/origins-with-appcache.html | 57 + .../appcache/resources/origin-delete-iframe.html | 20 + .../resources/origin-delete-iframe.manifest | 6 + .../resources/origins-with-appcache-iframe.html | 9 + .../origins-with-appcache-iframe.manifest | 6 + .../storage-tracker-1-prepare-expected.txt | 10 + .../storagetracker/storage-tracker-1-prepare.html | 44 + .../storage-tracker-2-create-expected.txt | 10 + .../storagetracker/storage-tracker-2-create.html | 47 + .../storage-tracker-3-delete-all-expected.txt | 10 + .../storage-tracker-3-delete-all.html | 47 + .../storage-tracker-4-create-expected.txt | 11 + .../storagetracker/storage-tracker-4-create.html | 47 + .../storage-tracker-5-delete-one-expected.txt | 10 + .../storage-tracker-5-delete-one.html | 47 + PerformanceTests/ChangeLog | 14 + .../PageLoad/svg/files/Sierpinski_carpet_6.svg | 62 + PerformanceTests/PageLoad/svg/svg.pltsuite | 1 + Source/CMakeLists.txt | 9 +- Source/JavaScriptCore/API/APIShims.h | 2 +- Source/JavaScriptCore/API/JSBase.h | 5 + Source/JavaScriptCore/API/JSCallbackConstructor.h | 4 +- Source/JavaScriptCore/API/JSCallbackFunction.h | 4 +- Source/JavaScriptCore/API/JSCallbackObject.h | 4 +- Source/JavaScriptCore/API/JSClassRef.cpp | 10 +- Source/JavaScriptCore/API/JSClassRef.h | 2 +- Source/JavaScriptCore/API/JSContextRef.cpp | 4 +- Source/JavaScriptCore/API/JSObjectRef.cpp | 6 +- .../API/JSWeakObjectMapRefPrivate.cpp | 11 +- .../JavaScriptCore/API/JSWeakObjectMapRefPrivate.h | 11 - Source/JavaScriptCore/API/OpaqueJSString.h | 4 +- Source/JavaScriptCore/CMakeLists.txt | 1 + Source/JavaScriptCore/ChangeLog | 3315 ++++ Source/JavaScriptCore/Configurations/Base.xcconfig | 14 +- .../JavaScriptCore/Configurations/Version.xcconfig | 2 +- Source/JavaScriptCore/DerivedSources.make | 1 - Source/JavaScriptCore/GNUmakefile.am | 7 +- Source/JavaScriptCore/JavaScriptCore.exp | 27 +- Source/JavaScriptCore/JavaScriptCore.gypi | 61 +- Source/JavaScriptCore/JavaScriptCore.pri | 1 + Source/JavaScriptCore/JavaScriptCore.pro | 10 +- .../JavaScriptCore.vcproj/JavaScriptCore.make | 1 - .../JavaScriptCore.vcproj/JavaScriptCore.sln | 22 +- .../JavaScriptCore/JavaScriptCore.def | 22 +- .../JavaScriptCore/JavaScriptCore.vcproj | 34 +- .../JavaScriptCore/JavaScriptCoreDebug.vsprops | 13 + .../JavaScriptCore/JavaScriptCoreDebugAll.vsprops | 14 + .../JavaScriptCoreDebugCairoCFLite.vsprops | 14 + .../JavaScriptCore/JavaScriptCoreGenerated.vcproj | 2 +- .../JavaScriptCoreProduction.vsprops | 14 + .../JavaScriptCore/JavaScriptCoreRelease.vsprops | 13 + .../JavaScriptCoreReleaseCairoCFLite.vsprops | 14 + .../JavaScriptCoreReleasePGO.vsprops | 14 + .../JavaScriptCoreReleasePGOOptimize.vsprops | 15 + .../JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln | 18 +- .../JavaScriptCore.vcproj/WTF/WTF.vcproj | 24 +- .../JavaScriptCore.vcproj/WTF/WTFDebug.vsprops | 12 + .../JavaScriptCore.vcproj/WTF/WTFDebugAll.vsprops | 13 + .../WTF/WTFDebugCairoCFLite.vsprops | 13 + .../WTF/WTFProduction.vsprops | 13 + .../JavaScriptCore.vcproj/WTF/WTFRelease.vsprops | 12 + .../WTF/WTFReleaseCairoCFLite.vsprops | 13 + .../WTF/WTFReleasePGO.vsprops | 13 + .../JavaScriptCore.vcproj/jsc/jsc.vcproj | 16 +- .../JavaScriptCore.vcproj/jsc/jscDebug.vsprops | 11 + .../JavaScriptCore.vcproj/jsc/jscDebugAll.vsprops | 12 + .../jsc/jscDebugCairoCFLite.vsprops | 12 + .../jsc/jscProduction.vsprops | 12 + .../JavaScriptCore.vcproj/jsc/jscRelease.vsprops | 11 + .../jsc/jscReleaseCairoCFLite.vsprops | 12 + .../jsc/jscReleasePGO.vsprops | 12 + .../JavaScriptCore.vcproj/testapi/testapi.vcproj | 16 +- .../testapi/testapiDebug.vsprops | 12 + .../testapi/testapiDebugAll.vsprops | 13 + .../testapi/testapiDebugCairoCFLite.vsprops | 13 + .../testapi/testapiProduction.vsprops | 13 + .../testapi/testapiRelease.vsprops | 12 + .../testapi/testapiReleaseCairoCFLite.vsprops | 13 + .../JavaScriptCore.xcodeproj/project.pbxproj | 116 +- Source/JavaScriptCore/Makefile | 1 - .../assembler/AbstractMacroAssembler.h | 44 +- Source/JavaScriptCore/assembler/AssemblerBuffer.h | 15 + .../assembler/AssemblerBufferWithConstantPool.h | 56 +- Source/JavaScriptCore/assembler/MacroAssembler.h | 66 +- .../JavaScriptCore/assembler/MacroAssemblerARM.h | 90 +- .../JavaScriptCore/assembler/MacroAssemblerARMv7.h | 148 +- .../assembler/MacroAssemblerCodeRef.h | 46 +- .../JavaScriptCore/assembler/MacroAssemblerMIPS.h | 126 +- .../JavaScriptCore/assembler/MacroAssemblerX86.h | 24 +- .../assembler/MacroAssemblerX86Common.h | 385 +- .../assembler/MacroAssemblerX86_64.h | 99 +- Source/JavaScriptCore/assembler/X86Assembler.h | 49 +- Source/JavaScriptCore/bytecode/CodeBlock.cpp | 73 +- Source/JavaScriptCore/bytecode/CodeBlock.h | 131 +- Source/JavaScriptCore/bytecode/EvalCodeCache.h | 16 +- Source/JavaScriptCore/bytecode/Instruction.h | 45 +- Source/JavaScriptCore/bytecode/SamplingTool.h | 9 +- .../JavaScriptCore/bytecode/StructureStubInfo.cpp | 39 +- Source/JavaScriptCore/bytecode/StructureStubInfo.h | 3 +- .../bytecompiler/BytecodeGenerator.cpp | 80 +- .../bytecompiler/BytecodeGenerator.h | 16 +- .../JavaScriptCore/bytecompiler/NodesCodegen.cpp | 5 +- Source/JavaScriptCore/collector/handles/Handle.h | 14 + .../collector/handles/HandleHeap.cpp | 9 +- .../JavaScriptCore/collector/handles/HandleHeap.h | 4 +- .../collector/handles/HandleStack.cpp | 63 + .../JavaScriptCore/collector/handles/HandleStack.h | 129 + Source/JavaScriptCore/collector/handles/Local.h | 157 + .../JavaScriptCore/collector/handles/LocalScope.h | 78 + Source/JavaScriptCore/config.h | 23 + Source/JavaScriptCore/debugger/Debugger.cpp | 24 +- .../JavaScriptCore/debugger/DebuggerActivation.cpp | 2 +- .../JavaScriptCore/debugger/DebuggerActivation.h | 4 +- .../JavaScriptCore/debugger/DebuggerCallFrame.cpp | 17 +- Source/JavaScriptCore/dfg/DFGAliasTracker.h | 121 + Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp | 744 + Source/JavaScriptCore/dfg/DFGByteCodeParser.h | 47 + Source/JavaScriptCore/dfg/DFGGenerationInfo.h | 249 + Source/JavaScriptCore/dfg/DFGGraph.cpp | 141 + Source/JavaScriptCore/dfg/DFGGraph.h | 69 + Source/JavaScriptCore/dfg/DFGJITCodeGenerator.cpp | 563 + Source/JavaScriptCore/dfg/DFGJITCodeGenerator.h | 955 + Source/JavaScriptCore/dfg/DFGJITCompiler.cpp | 429 + Source/JavaScriptCore/dfg/DFGJITCompiler.h | 325 + Source/JavaScriptCore/dfg/DFGNode.h | 293 + Source/JavaScriptCore/dfg/DFGNonSpeculativeJIT.cpp | 585 + Source/JavaScriptCore/dfg/DFGNonSpeculativeJIT.h | 211 + Source/JavaScriptCore/dfg/DFGOperations.cpp | 220 + Source/JavaScriptCore/dfg/DFGOperations.h | 83 + Source/JavaScriptCore/dfg/DFGRegisterBank.h | 253 + Source/JavaScriptCore/dfg/DFGScoreBoard.h | 127 + Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp | 663 + Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h | 356 + Source/JavaScriptCore/gyp/JavaScriptCore.gyp | 168 +- .../JavaScriptCore/gyp/generate-dtrace-header.sh | 9 + Source/JavaScriptCore/gyp/run-if-exists.sh | 5 + Source/JavaScriptCore/gyp/update-info-plist.sh | 4 + Source/JavaScriptCore/interpreter/CachedCall.h | 2 +- Source/JavaScriptCore/interpreter/CallFrame.h | 2 +- Source/JavaScriptCore/interpreter/Interpreter.cpp | 55 +- Source/JavaScriptCore/interpreter/Register.h | 66 +- Source/JavaScriptCore/interpreter/RegisterFile.cpp | 11 + Source/JavaScriptCore/interpreter/RegisterFile.h | 8 +- Source/JavaScriptCore/jit/JIT.cpp | 31 +- Source/JavaScriptCore/jit/JIT.h | 5 +- Source/JavaScriptCore/jit/JITArithmetic.cpp | 18 +- Source/JavaScriptCore/jit/JITArithmetic32_64.cpp | 160 +- Source/JavaScriptCore/jit/JITCall.cpp | 29 +- Source/JavaScriptCore/jit/JITCall32_64.cpp | 49 +- Source/JavaScriptCore/jit/JITInlineMethods.h | 92 +- Source/JavaScriptCore/jit/JITOpcodes.cpp | 235 +- Source/JavaScriptCore/jit/JITOpcodes32_64.cpp | 334 +- Source/JavaScriptCore/jit/JITPropertyAccess.cpp | 145 +- .../JavaScriptCore/jit/JITPropertyAccess32_64.cpp | 159 +- Source/JavaScriptCore/jit/JITStubCall.h | 4 +- Source/JavaScriptCore/jit/JITStubs.cpp | 57 +- Source/JavaScriptCore/jit/JITStubs.h | 13 +- Source/JavaScriptCore/jit/JSInterfaceJIT.h | 67 +- Source/JavaScriptCore/jit/SpecializedThunkJIT.h | 16 +- Source/JavaScriptCore/jit/ThunkGenerators.cpp | 10 +- Source/JavaScriptCore/jsc.cpp | 10 +- Source/JavaScriptCore/jsc.pro | 4 + Source/JavaScriptCore/profiler/CallIdentifier.h | 2 +- .../JavaScriptCore/profiler/ProfileGenerator.cpp | 18 +- Source/JavaScriptCore/profiler/ProfileGenerator.h | 9 +- Source/JavaScriptCore/profiler/Profiler.cpp | 25 +- Source/JavaScriptCore/profiler/Profiler.h | 2 + Source/JavaScriptCore/runtime/ArgList.cpp | 9 +- Source/JavaScriptCore/runtime/ArgList.h | 2 +- Source/JavaScriptCore/runtime/Arguments.h | 14 +- Source/JavaScriptCore/runtime/ArrayConstructor.cpp | 6 +- Source/JavaScriptCore/runtime/ArrayPrototype.cpp | 106 +- Source/JavaScriptCore/runtime/ArrayPrototype.h | 4 +- .../JavaScriptCore/runtime/BooleanConstructor.cpp | 6 +- Source/JavaScriptCore/runtime/BooleanConstructor.h | 2 +- Source/JavaScriptCore/runtime/BooleanObject.cpp | 4 +- Source/JavaScriptCore/runtime/BooleanObject.h | 4 +- Source/JavaScriptCore/runtime/Completion.cpp | 14 +- Source/JavaScriptCore/runtime/ConservativeSet.cpp | 25 +- Source/JavaScriptCore/runtime/ConservativeSet.h | 57 +- Source/JavaScriptCore/runtime/DateConstructor.cpp | 6 +- Source/JavaScriptCore/runtime/DateConstructor.h | 2 +- Source/JavaScriptCore/runtime/DateConversion.cpp | 1 + Source/JavaScriptCore/runtime/DateInstance.cpp | 11 +- Source/JavaScriptCore/runtime/DateInstance.h | 8 +- Source/JavaScriptCore/runtime/DatePrototype.h | 6 +- Source/JavaScriptCore/runtime/ErrorConstructor.cpp | 4 +- Source/JavaScriptCore/runtime/ErrorInstance.h | 4 +- Source/JavaScriptCore/runtime/Executable.cpp | 68 +- Source/JavaScriptCore/runtime/Executable.h | 77 +- .../JavaScriptCore/runtime/FunctionConstructor.cpp | 13 +- .../JavaScriptCore/runtime/FunctionConstructor.h | 4 +- Source/JavaScriptCore/runtime/FunctionPrototype.h | 4 +- .../runtime/GCActivityCallbackCF.cpp | 1 + Source/JavaScriptCore/runtime/GetterSetter.h | 4 +- Source/JavaScriptCore/runtime/Heap.cpp | 66 +- Source/JavaScriptCore/runtime/Heap.h | 21 +- Source/JavaScriptCore/runtime/Identifier.cpp | 9 +- Source/JavaScriptCore/runtime/InternalFunction.h | 4 +- Source/JavaScriptCore/runtime/JSAPIValueWrapper.h | 4 +- Source/JavaScriptCore/runtime/JSActivation.cpp | 59 +- Source/JavaScriptCore/runtime/JSActivation.h | 31 +- Source/JavaScriptCore/runtime/JSArray.cpp | 2 +- Source/JavaScriptCore/runtime/JSArray.h | 93 +- Source/JavaScriptCore/runtime/JSByteArray.cpp | 4 +- Source/JavaScriptCore/runtime/JSByteArray.h | 4 +- Source/JavaScriptCore/runtime/JSCell.cpp | 16 +- Source/JavaScriptCore/runtime/JSCell.h | 75 +- Source/JavaScriptCore/runtime/JSFunction.cpp | 40 +- Source/JavaScriptCore/runtime/JSFunction.h | 13 +- Source/JavaScriptCore/runtime/JSGlobalData.cpp | 82 +- Source/JavaScriptCore/runtime/JSGlobalData.h | 17 +- Source/JavaScriptCore/runtime/JSGlobalObject.cpp | 317 +- Source/JavaScriptCore/runtime/JSGlobalObject.h | 270 +- .../runtime/JSGlobalObjectFunctions.cpp | 4 +- Source/JavaScriptCore/runtime/JSLock.cpp | 1 + Source/JavaScriptCore/runtime/JSNotAnObject.cpp | 2 +- Source/JavaScriptCore/runtime/JSNotAnObject.h | 6 +- Source/JavaScriptCore/runtime/JSNumberCell.cpp | 1 + Source/JavaScriptCore/runtime/JSONObject.cpp | 125 +- Source/JavaScriptCore/runtime/JSONObject.h | 6 +- Source/JavaScriptCore/runtime/JSObject.cpp | 12 +- Source/JavaScriptCore/runtime/JSObject.h | 44 +- .../runtime/JSObjectWithGlobalObject.h | 4 +- .../runtime/JSPropertyNameIterator.cpp | 6 +- .../runtime/JSPropertyNameIterator.h | 13 +- .../JavaScriptCore/runtime/JSStaticScopeObject.cpp | 9 +- .../JavaScriptCore/runtime/JSStaticScopeObject.h | 22 +- Source/JavaScriptCore/runtime/JSString.cpp | 12 +- Source/JavaScriptCore/runtime/JSString.h | 16 +- Source/JavaScriptCore/runtime/JSTypeInfo.h | 11 +- Source/JavaScriptCore/runtime/JSValue.cpp | 14 +- Source/JavaScriptCore/runtime/JSValue.h | 51 +- Source/JavaScriptCore/runtime/JSVariableObject.h | 47 +- Source/JavaScriptCore/runtime/JSWrapperObject.h | 19 +- Source/JavaScriptCore/runtime/JSZombie.cpp | 3 +- Source/JavaScriptCore/runtime/JSZombie.h | 4 +- .../JavaScriptCore/runtime/MachineStackMarker.cpp | 80 +- Source/JavaScriptCore/runtime/MachineStackMarker.h | 31 +- Source/JavaScriptCore/runtime/MarkStack.cpp | 89 +- Source/JavaScriptCore/runtime/MarkStack.h | 127 +- Source/JavaScriptCore/runtime/MarkedBlock.cpp | 2 + Source/JavaScriptCore/runtime/MarkedBlock.h | 12 +- Source/JavaScriptCore/runtime/MarkedSpace.cpp | 11 +- Source/JavaScriptCore/runtime/MarkedSpace.h | 17 +- Source/JavaScriptCore/runtime/MathObject.h | 4 +- .../runtime/NativeErrorConstructor.cpp | 2 +- .../runtime/NativeErrorConstructor.h | 4 +- .../JavaScriptCore/runtime/NumberConstructor.cpp | 2 +- Source/JavaScriptCore/runtime/NumberConstructor.h | 4 +- Source/JavaScriptCore/runtime/NumberObject.cpp | 8 +- Source/JavaScriptCore/runtime/NumberObject.h | 9 +- .../JavaScriptCore/runtime/ObjectConstructor.cpp | 10 +- Source/JavaScriptCore/runtime/ObjectConstructor.h | 4 +- .../JavaScriptCore/runtime/PropertyMapHashTable.h | 2 +- .../JavaScriptCore/runtime/PropertyNameArray.cpp | 1 + Source/JavaScriptCore/runtime/PutPropertySlot.h | 9 +- Source/JavaScriptCore/runtime/RegExp.cpp | 49 +- Source/JavaScriptCore/runtime/RegExp.h | 18 +- Source/JavaScriptCore/runtime/RegExpCache.cpp | 4 +- Source/JavaScriptCore/runtime/RegExpCache.h | 4 +- .../JavaScriptCore/runtime/RegExpConstructor.cpp | 22 +- Source/JavaScriptCore/runtime/RegExpConstructor.h | 6 +- Source/JavaScriptCore/runtime/RegExpKey.h | 49 +- Source/JavaScriptCore/runtime/RegExpObject.cpp | 44 +- Source/JavaScriptCore/runtime/RegExpObject.h | 32 +- Source/JavaScriptCore/runtime/RegExpPrototype.cpp | 20 +- Source/JavaScriptCore/runtime/ScopeChain.h | 15 +- Source/JavaScriptCore/runtime/SmallStrings.cpp | 35 +- Source/JavaScriptCore/runtime/SmallStrings.h | 20 +- .../JavaScriptCore/runtime/StringConstructor.cpp | 5 +- Source/JavaScriptCore/runtime/StringObject.cpp | 6 +- Source/JavaScriptCore/runtime/StringObject.h | 10 +- .../StringObjectThatMasqueradesAsUndefined.h | 6 +- Source/JavaScriptCore/runtime/StringPrototype.cpp | 19 +- Source/JavaScriptCore/runtime/StringPrototype.h | 10 +- Source/JavaScriptCore/runtime/Structure.h | 29 +- Source/JavaScriptCore/runtime/StructureChain.cpp | 3 +- Source/JavaScriptCore/runtime/StructureChain.h | 9 +- Source/JavaScriptCore/runtime/TimeoutChecker.cpp | 2 +- Source/JavaScriptCore/runtime/WriteBarrier.h | 54 +- .../tests/mozilla/js1_2/regexp/RegExp_input.js | 36 +- .../mozilla/js1_2/regexp/RegExp_input_as_array.js | 36 +- Source/JavaScriptCore/wtf/Assertions.cpp | 6 + Source/JavaScriptCore/wtf/Assertions.h | 16 +- Source/JavaScriptCore/wtf/Atomics.h | 8 +- Source/JavaScriptCore/wtf/CMakeLists.txt | 3 +- Source/JavaScriptCore/wtf/CrossThreadRefCounted.h | 12 +- Source/JavaScriptCore/wtf/DateMath.cpp | 9 +- Source/JavaScriptCore/wtf/ExportMacros.h | 46 + Source/JavaScriptCore/wtf/HexNumber.h | 107 + Source/JavaScriptCore/wtf/MathExtras.h | 11 +- Source/JavaScriptCore/wtf/MessageQueue.h | 2 +- Source/JavaScriptCore/wtf/Platform.h | 36 +- Source/JavaScriptCore/wtf/RefCounted.h | 12 +- Source/JavaScriptCore/wtf/StdLibExtras.h | 47 + Source/JavaScriptCore/wtf/StringHasher.h | 22 +- Source/JavaScriptCore/wtf/ThreadSafeRefCounted.h | 149 + Source/JavaScriptCore/wtf/ThreadSafeShared.h | 148 - Source/JavaScriptCore/wtf/Threading.h | 2 +- Source/JavaScriptCore/wtf/ThreadingPthreads.cpp | 10 + Source/JavaScriptCore/wtf/Vector.h | 10 +- Source/JavaScriptCore/wtf/text/AtomicString.cpp | 8 +- Source/JavaScriptCore/wtf/text/StringConcatenate.h | 28 + Source/JavaScriptCore/wtf/text/StringHash.h | 4 +- Source/JavaScriptCore/wtf/text/StringImpl.h | 7 +- Source/JavaScriptCore/wtf/unicode/UTF8.cpp | 2 +- Source/JavaScriptCore/yarr/YarrInterpreter.cpp | 24 + Source/JavaScriptCore/yarr/YarrInterpreter.h | 8 + Source/JavaScriptCore/yarr/YarrJIT.cpp | 66 +- Source/JavaScriptGlue/ChangeLog | 134 + Source/JavaScriptGlue/Configurations/Base.xcconfig | 14 +- .../JavaScriptGlue/Configurations/Version.xcconfig | 2 +- .../ForwardingHeaders/wtf/ThreadSafeRefCounted.h | 1 + .../ForwardingHeaders/wtf/ThreadSafeShared.h | 1 - Source/JavaScriptGlue/JSRun.cpp | 15 +- Source/JavaScriptGlue/JSRun.h | 21 +- Source/JavaScriptGlue/JSUtils.cpp | 2 +- Source/JavaScriptGlue/UserObjectImp.cpp | 8 +- Source/JavaScriptGlue/UserObjectImp.h | 4 +- Source/JavaScriptGlue/config.h | 3 + Source/JavaScriptGlue/gyp/JavaScriptGlue.gyp | 73 - Source/JavaScriptGlue/gyp/JavaScriptGlue.gypi | 111 - Source/ThirdParty/ANGLE/ChangeLog | 13 + .../ThirdParty/ANGLE/Configurations/Base.xcconfig | 14 +- Source/WebCore/Android.derived.jscbindings.mk | 5 + Source/WebCore/Android.derived.v8bindings.mk | 5 + Source/WebCore/Android.jscbindings.mk | 2 +- Source/WebCore/Android.mk | 19 +- Source/WebCore/Android.v8bindings.mk | 12 +- Source/WebCore/CMakeLists.txt | 245 +- Source/WebCore/CMakeListsEfl.txt | 7 + Source/WebCore/CMakeListsWinCE.txt | 3 +- Source/WebCore/ChangeLog | 18164 +++++++++++++++++++ Source/WebCore/CodeGenerators.pri | 23 +- Source/WebCore/Configurations/Base.xcconfig | 27 +- Source/WebCore/Configurations/Version.xcconfig | 2 +- Source/WebCore/Configurations/WebCore.xcconfig | 2 +- Source/WebCore/DerivedSources.cpp | 5 + Source/WebCore/DerivedSources.make | 32 +- Source/WebCore/English.lproj/Localizable.strings | Bin 54276 -> 47634 bytes Source/WebCore/English.lproj/localizedStrings.js | Bin 54604 -> 53066 bytes Source/WebCore/ForwardingHeaders/wtf/HexNumber.h | 4 + .../ForwardingHeaders/wtf/ThreadSafeRefCounted.h | 4 + .../ForwardingHeaders/wtf/ThreadSafeShared.h | 4 - Source/WebCore/GNUmakefile.am | 92 +- Source/WebCore/StringsNotToBeLocalized.txt | 893 - Source/WebCore/UseJSC.cmake | 203 + Source/WebCore/WebCore.exp.in | 94 +- Source/WebCore/WebCore.gyp/WebCore.gyp | 216 +- Source/WebCore/WebCore.gypi | 3342 ++-- Source/WebCore/WebCore.order | 2 +- Source/WebCore/WebCore.pri | 2 + Source/WebCore/WebCore.pro | 69 +- Source/WebCore/WebCore.vcproj/QTMovieWin.vcproj | 14 +- .../WebCore/WebCore.vcproj/QTMovieWinDebug.vsprops | 12 + .../WebCore.vcproj/QTMovieWinDebugAll.vsprops | 13 + .../QTMovieWinDebugCairoCFLite.vsprops | 13 + .../WebCore.vcproj/QTMovieWinProduction.vsprops | 13 + .../WebCore.vcproj/QTMovieWinRelease.vsprops | 12 + .../QTMovieWinReleaseCairoCFLite.vsprops | 13 + Source/WebCore/WebCore.vcproj/WebCore.make | 3 +- Source/WebCore/WebCore.vcproj/WebCore.sln | 14 +- Source/WebCore/WebCore.vcproj/WebCore.submit.sln | 14 +- Source/WebCore/WebCore.vcproj/WebCore.vcproj | 5444 +++--- Source/WebCore/WebCore.vcproj/WebCoreDebug.vsprops | 17 + .../WebCore/WebCore.vcproj/WebCoreDebugAll.vsprops | 18 + .../WebCore.vcproj/WebCoreDebugCairoCFLite.vsprops | 15 + .../WebCore/WebCore.vcproj/WebCoreGenerated.vcproj | 2 +- .../WebCore.vcproj/WebCoreProduction.vsprops | 18 + .../WebCore/WebCore.vcproj/WebCoreRelease.vsprops | 17 + .../WebCoreReleaseCairoCFLite.vsprops | 15 + .../WebCore.vcproj/copyForwardingHeaders.cmd | 1 + Source/WebCore/WebCore.xcodeproj/project.pbxproj | 377 +- Source/WebCore/accessibility/AXObjectCache.cpp | 2 +- Source/WebCore/accessibility/AXObjectCache.h | 3 +- .../accessibility/AccessibilityImageMapLink.cpp | 1 + Source/WebCore/accessibility/AccessibilityObject.h | 4 + .../accessibility/AccessibilityRenderObject.cpp | 47 +- .../WebCore/accessibility/gtk/AXObjectCacheAtk.cpp | 11 + .../accessibility/gtk/AccessibilityObjectAtk.cpp | 23 +- .../gtk/AccessibilityObjectWrapperAtk.cpp | 104 +- .../gtk/WebKitAccessibleHyperlink.cpp | 21 +- .../mac/AccessibilityObjectWrapper.mm | 37 +- Source/WebCore/bindings/ScriptControllerBase.cpp | 1 + .../bindings/generic/RuntimeEnabledFeatures.cpp | 6 +- .../bindings/generic/RuntimeEnabledFeatures.h | 36 +- Source/WebCore/bindings/gobject/GNUmakefile.am | 4 + .../bindings/gobject/GObjectEventListener.cpp | 42 +- .../bindings/gobject/GObjectEventListener.h | 31 +- .../bindings/gobject/WebKitDOMEventTarget.cpp | 31 +- .../bindings/gobject/WebKitDOMEventTarget.h | 27 +- Source/WebCore/bindings/js/JSAudioConstructor.cpp | 2 +- Source/WebCore/bindings/js/JSAudioConstructor.h | 4 +- Source/WebCore/bindings/js/JSBindingsAllInOne.cpp | 5 + Source/WebCore/bindings/js/JSDOMBinding.cpp | 2 +- Source/WebCore/bindings/js/JSDOMBinding.h | 10 +- Source/WebCore/bindings/js/JSDOMGlobalObject.cpp | 25 +- Source/WebCore/bindings/js/JSDOMGlobalObject.h | 44 +- Source/WebCore/bindings/js/JSDOMWindowBase.cpp | 28 +- Source/WebCore/bindings/js/JSDOMWindowBase.h | 18 +- Source/WebCore/bindings/js/JSDOMWindowCustom.h | 2 +- Source/WebCore/bindings/js/JSDOMWindowShell.cpp | 6 +- Source/WebCore/bindings/js/JSDOMWindowShell.h | 4 +- Source/WebCore/bindings/js/JSDOMWrapper.cpp | 6 - Source/WebCore/bindings/js/JSDOMWrapper.h | 2 - Source/WebCore/bindings/js/JSErrorHandler.cpp | 2 +- Source/WebCore/bindings/js/JSEventListener.cpp | 2 +- .../bindings/js/JSHTMLCanvasElementCustom.cpp | 3 + Source/WebCore/bindings/js/JSImageConstructor.cpp | 2 +- Source/WebCore/bindings/js/JSImageConstructor.h | 4 +- Source/WebCore/bindings/js/JSImageDataCustom.cpp | 2 +- .../bindings/js/JSInjectedScriptHostCustom.cpp | 84 +- .../bindings/js/JSInjectedScriptManager.cpp | 111 + .../bindings/js/JSJavaScriptCallFrameCustom.cpp | 2 +- Source/WebCore/bindings/js/JSLazyEventListener.cpp | 26 +- Source/WebCore/bindings/js/JSMainThreadExecState.h | 2 +- Source/WebCore/bindings/js/JSOptionConstructor.cpp | 2 +- Source/WebCore/bindings/js/JSOptionConstructor.h | 4 +- .../bindings/js/JSWebKitAnimationCustom.cpp | 44 + .../bindings/js/JSWebKitAnimationListCustom.cpp | 47 + Source/WebCore/bindings/js/JSWorkerContextBase.cpp | 2 +- Source/WebCore/bindings/js/JSWorkerContextBase.h | 4 +- .../WebCore/bindings/js/PageScriptDebugServer.cpp | 215 + Source/WebCore/bindings/js/PageScriptDebugServer.h | 81 + Source/WebCore/bindings/js/ScheduledAction.h | 2 +- Source/WebCore/bindings/js/ScriptDebugServer.cpp | 206 +- Source/WebCore/bindings/js/ScriptDebugServer.h | 35 +- Source/WebCore/bindings/js/ScriptHeapSnapshot.h | 1 - Source/WebCore/bindings/js/ScriptProfiler.cpp | 6 + Source/WebCore/bindings/js/ScriptProfiler.h | 1 + .../WebCore/bindings/js/SerializedScriptValue.cpp | 92 +- .../WebCore/bindings/js/WorkerScriptController.cpp | 10 +- .../bindings/js/WorkerScriptDebugServer.cpp | 55 + .../WebCore/bindings/js/WorkerScriptDebugServer.h | 62 + Source/WebCore/bindings/objc/DOMHTML.mm | 6 +- .../bindings/scripts/CodeGeneratorGObject.pm | 117 +- Source/WebCore/bindings/scripts/CodeGeneratorJS.pm | 18 +- Source/WebCore/bindings/scripts/CodeGeneratorV8.pm | 38 +- .../scripts/test/CPP/WebDOMTestCallback.cpp | 10 + .../bindings/scripts/test/CPP/WebDOMTestCallback.h | 2 + .../scripts/test/GObject/WebKitDOMTestCallback.cpp | 18 + .../scripts/test/GObject/WebKitDOMTestCallback.h | 3 + .../scripts/test/GObject/WebKitDOMTestObj.cpp | 6 - .../scripts/test/GObject/WebKitDOMTestObj.h | 6 - .../bindings/scripts/test/JS/JSTestCallback.cpp | 19 + .../bindings/scripts/test/JS/JSTestCallback.h | 1 + .../bindings/scripts/test/JS/JSTestInterface.cpp | 8 +- .../bindings/scripts/test/JS/JSTestInterface.h | 8 +- .../test/JS/JSTestMediaQueryListListener.cpp | 8 +- .../scripts/test/JS/JSTestMediaQueryListListener.h | 8 +- .../WebCore/bindings/scripts/test/JS/JSTestObj.cpp | 8 +- .../WebCore/bindings/scripts/test/JS/JSTestObj.h | 8 +- .../JS/JSTestSerializedScriptValueInterface.cpp | 8 +- .../test/JS/JSTestSerializedScriptValueInterface.h | 8 +- .../bindings/scripts/test/ObjC/DOMTestCallback.h | 2 + .../bindings/scripts/test/ObjC/DOMTestCallback.mm | 8 + .../WebCore/bindings/scripts/test/TestCallback.idl | 1 + .../bindings/scripts/test/V8/V8TestCallback.cpp | 29 +- .../bindings/scripts/test/V8/V8TestCallback.h | 1 + .../bindings/scripts/test/V8/V8TestInterface.cpp | 5 +- .../test/V8/V8TestMediaQueryListListener.cpp | 5 +- .../WebCore/bindings/scripts/test/V8/V8TestObj.cpp | 5 +- .../V8/V8TestSerializedScriptValueInterface.cpp | 5 +- Source/WebCore/bindings/v8/DebuggerScript.js | 1 - .../WebCore/bindings/v8/PageScriptDebugServer.cpp | 165 + Source/WebCore/bindings/v8/PageScriptDebugServer.h | 81 + Source/WebCore/bindings/v8/RetainedDOMInfo.cpp | 85 + Source/WebCore/bindings/v8/RetainedDOMInfo.h | 60 + Source/WebCore/bindings/v8/RetainedObjectInfo.h | 45 + .../WebCore/bindings/v8/ScriptCachedFrameData.cpp | 6 + Source/WebCore/bindings/v8/ScriptDebugServer.cpp | 203 +- Source/WebCore/bindings/v8/ScriptDebugServer.h | 37 +- Source/WebCore/bindings/v8/ScriptHeapSnapshot.cpp | 11 +- Source/WebCore/bindings/v8/ScriptHeapSnapshot.h | 3 +- Source/WebCore/bindings/v8/ScriptProfile.cpp | 5 + Source/WebCore/bindings/v8/ScriptProfile.h | 2 +- Source/WebCore/bindings/v8/ScriptProfiler.cpp | 27 +- Source/WebCore/bindings/v8/ScriptProfiler.h | 2 + Source/WebCore/bindings/v8/SerializedScriptValue.h | 2 +- Source/WebCore/bindings/v8/V8DOMWindowShell.cpp | 3 + Source/WebCore/bindings/v8/V8GCController.cpp | 401 +- Source/WebCore/bindings/v8/V8LazyEventListener.cpp | 4 + .../bindings/v8/WorkerScriptDebugServer.cpp | 55 + .../WebCore/bindings/v8/WorkerScriptDebugServer.h | 61 + Source/WebCore/bindings/v8/WrapperTypeInfo.h | 15 +- .../v8/custom/V8HTMLCanvasElementCustom.cpp | 3 + .../WebCore/bindings/v8/custom/V8IDBAnyCustom.cpp | 4 +- .../WebCore/bindings/v8/custom/V8IDBKeyCustom.cpp | 4 +- .../v8/custom/V8InjectedScriptHostCustom.cpp | 139 +- .../bindings/v8/custom/V8InjectedScriptManager.cpp | 170 + .../bindings/v8/custom/V8WebKitAnimationCustom.cpp | 50 + Source/WebCore/bridge/c/CRuntimeObject.h | 4 +- Source/WebCore/bridge/c/c_class.cpp | 1 + Source/WebCore/bridge/c/c_instance.cpp | 4 +- Source/WebCore/bridge/c/c_runtime.cpp | 1 + Source/WebCore/bridge/jni/JNIUtility.cpp | 154 +- Source/WebCore/bridge/jni/JNIUtility.h | 35 +- Source/WebCore/bridge/jni/JavaMethod.cpp | 172 - Source/WebCore/bridge/jni/JavaMethod.h | 33 +- Source/WebCore/bridge/jni/JavaMethodJobject.cpp | 159 + Source/WebCore/bridge/jni/JavaMethodJobject.h | 72 + Source/WebCore/bridge/jni/JavaType.h | 78 + Source/WebCore/bridge/jni/jni_jsobject.mm | 2 +- Source/WebCore/bridge/jni/jni_objc.mm | 14 +- .../WebCore/bridge/jni/jsc/JNIUtilityPrivate.cpp | 54 +- Source/WebCore/bridge/jni/jsc/JNIUtilityPrivate.h | 4 +- Source/WebCore/bridge/jni/jsc/JavaArrayJSC.cpp | 40 +- Source/WebCore/bridge/jni/jsc/JavaClassJSC.cpp | 5 +- Source/WebCore/bridge/jni/jsc/JavaFieldJSC.cpp | 64 +- Source/WebCore/bridge/jni/jsc/JavaFieldJSC.h | 11 +- Source/WebCore/bridge/jni/jsc/JavaInstanceJSC.cpp | 82 +- Source/WebCore/bridge/jni/jsc/JavaRuntimeObject.h | 4 +- Source/WebCore/bridge/jni/jsc/JavaStringJSC.h | 2 + Source/WebCore/bridge/jni/v8/JNIUtilityPrivate.cpp | 282 +- Source/WebCore/bridge/jni/v8/JNIUtilityPrivate.h | 9 +- Source/WebCore/bridge/jni/v8/JavaClassV8.cpp | 10 +- Source/WebCore/bridge/jni/v8/JavaFieldV8.cpp | 4 +- Source/WebCore/bridge/jni/v8/JavaFieldV8.h | 9 +- Source/WebCore/bridge/jni/v8/JavaInstanceV8.cpp | 97 +- Source/WebCore/bridge/jni/v8/JavaInstanceV8.h | 10 +- Source/WebCore/bridge/jni/v8/JavaNPObjectV8.cpp | 45 +- Source/WebCore/bridge/jni/v8/JavaValueV8.h | 75 + Source/WebCore/bridge/objc/ObjCRuntimeObject.h | 4 +- Source/WebCore/bridge/objc/objc_instance.mm | 4 +- Source/WebCore/bridge/objc/objc_runtime.h | 4 +- Source/WebCore/bridge/qt/qt_instance.cpp | 4 +- Source/WebCore/bridge/qt/qt_pixmapruntime.cpp | 8 +- Source/WebCore/bridge/qt/qt_runtime.cpp | 16 +- Source/WebCore/bridge/qt/qt_runtime.h | 4 +- Source/WebCore/bridge/runtime_array.h | 7 +- Source/WebCore/bridge/runtime_method.h | 4 +- Source/WebCore/bridge/runtime_object.h | 4 +- Source/WebCore/config.h | 30 + Source/WebCore/css/CSSComputedStyleDeclaration.cpp | 24 +- Source/WebCore/css/CSSFontFaceSource.cpp | 6 +- Source/WebCore/css/CSSGrammar.y | 206 +- Source/WebCore/css/CSSImageValue.cpp | 4 - Source/WebCore/css/CSSLineBoxContainValue.cpp | 74 + Source/WebCore/css/CSSLineBoxContainValue.h | 63 + Source/WebCore/css/CSSMutableStyleDeclaration.cpp | 83 +- Source/WebCore/css/CSSMutableStyleDeclaration.h | 14 +- Source/WebCore/css/CSSOMUtils.cpp | 6 +- Source/WebCore/css/CSSParser.cpp | 348 +- Source/WebCore/css/CSSParser.h | 13 +- Source/WebCore/css/CSSParserValues.cpp | 20 +- Source/WebCore/css/CSSParserValues.h | 7 +- Source/WebCore/css/CSSPrimitiveValueCache.cpp | 2 +- Source/WebCore/css/CSSPrimitiveValueMappings.h | 126 +- Source/WebCore/css/CSSPropertyNames.in | 2 + Source/WebCore/css/CSSRuleList.h | 5 + Source/WebCore/css/CSSSelector.cpp | 69 +- Source/WebCore/css/CSSSelector.h | 25 +- Source/WebCore/css/CSSSelectorList.cpp | 10 +- Source/WebCore/css/CSSStyleApplyProperty.cpp | 163 + Source/WebCore/css/CSSStyleApplyProperty.h | 104 + Source/WebCore/css/CSSStyleSelector.cpp | 322 +- Source/WebCore/css/CSSStyleSelector.h | 12 +- Source/WebCore/css/CSSValue.h | 3 +- Source/WebCore/css/CSSValueKeywords.in | 16 +- Source/WebCore/css/MediaQueryListListener.cpp | 5 + Source/WebCore/css/StyleSheetList.h | 5 + Source/WebCore/css/fullscreenQuickTime.css | 154 + Source/WebCore/css/html.css | 85 +- Source/WebCore/css/mediaControls.css | 12 + Source/WebCore/css/mediaControlsEfl.css | 174 + Source/WebCore/css/themeChromiumLinux.css | 1 + Source/WebCore/css/tokenizer.flex | 5 + Source/WebCore/css/wml.css | 1 + Source/WebCore/dom/AsyncScriptRunner.cpp | 92 - Source/WebCore/dom/AsyncScriptRunner.h | 65 - Source/WebCore/dom/CheckedRadioButtons.cpp | 2 +- Source/WebCore/dom/Clipboard.h | 7 +- Source/WebCore/dom/Clipboard.idl | 2 + Source/WebCore/dom/ContainerNode.cpp | 2 +- Source/WebCore/dom/DOMAllInOne.cpp | 3 +- Source/WebCore/dom/DOMImplementation.cpp | 3 +- Source/WebCore/dom/DataTransferItem.cpp | 43 + Source/WebCore/dom/DataTransferItem.h | 60 + Source/WebCore/dom/DataTransferItem.idl | 42 + Source/WebCore/dom/DataTransferItems.h | 62 + Source/WebCore/dom/DataTransferItems.idl | 45 + Source/WebCore/dom/DatasetDOMStringMap.cpp | 27 +- Source/WebCore/dom/Document.cpp | 207 +- Source/WebCore/dom/Document.h | 43 +- Source/WebCore/dom/Element.cpp | 44 +- Source/WebCore/dom/Element.h | 3 + Source/WebCore/dom/Element.idl | 2 + Source/WebCore/dom/Event.cpp | 9 + Source/WebCore/dom/Event.h | 3 + Source/WebCore/dom/EventDispatcher.cpp | 396 + Source/WebCore/dom/EventDispatcher.h | 78 + Source/WebCore/dom/ExceptionCode.h | 6 +- Source/WebCore/dom/InputElement.cpp | 22 - Source/WebCore/dom/InputElement.h | 2 - Source/WebCore/dom/KeyboardEvent.cpp | 7 + Source/WebCore/dom/KeyboardEvent.h | 3 + Source/WebCore/dom/MouseEvent.cpp | 34 + Source/WebCore/dom/MouseEvent.h | 19 +- Source/WebCore/dom/MouseRelatedEvent.cpp | 62 +- Source/WebCore/dom/MouseRelatedEvent.h | 10 +- Source/WebCore/dom/NamedNodeMap.cpp | 6 - Source/WebCore/dom/Node.cpp | 482 +- Source/WebCore/dom/Node.h | 28 +- Source/WebCore/dom/Position.cpp | 63 +- Source/WebCore/dom/Position.h | 3 +- Source/WebCore/dom/PositionIterator.cpp | 7 +- Source/WebCore/dom/QualifiedName.h | 2 +- Source/WebCore/dom/Range.cpp | 14 - Source/WebCore/dom/ScriptElement.cpp | 29 +- Source/WebCore/dom/ScriptElement.h | 4 + Source/WebCore/dom/ScriptExecutionContext.cpp | 2 + Source/WebCore/dom/ScriptRunner.cpp | 119 + Source/WebCore/dom/ScriptRunner.h | 68 + Source/WebCore/dom/StringCallback.cpp | 71 + Source/WebCore/dom/StringCallback.h | 52 + Source/WebCore/dom/StringCallback.idl | 37 + Source/WebCore/dom/StyleElement.cpp | 7 + Source/WebCore/dom/StyledElement.cpp | 2 +- Source/WebCore/dom/UIEvent.cpp | 4 +- Source/WebCore/dom/UIEvent.h | 4 +- Source/WebCore/dom/ViewportArguments.cpp | 18 +- Source/WebCore/dom/ViewportArguments.h | 7 +- .../dom/default/PlatformMessagePortChannel.h | 4 +- Source/WebCore/editing/AppendNodeCommand.cpp | 8 +- Source/WebCore/editing/AppendNodeCommand.h | 6 +- .../WebCore/editing/ApplyBlockElementCommand.cpp | 6 +- Source/WebCore/editing/ApplyStyleCommand.cpp | 65 +- Source/WebCore/editing/ApplyStyleCommand.h | 2 +- Source/WebCore/editing/BreakBlockquoteCommand.cpp | 14 +- Source/WebCore/editing/CompositeEditCommand.cpp | 23 +- Source/WebCore/editing/CompositeEditCommand.h | 5 +- Source/WebCore/editing/DeleteButtonController.cpp | 10 +- .../WebCore/editing/DeleteFromTextNodeCommand.cpp | 4 +- Source/WebCore/editing/DeleteSelectionCommand.cpp | 24 +- Source/WebCore/editing/EditingStyle.cpp | 18 +- Source/WebCore/editing/EditingStyle.h | 1 + Source/WebCore/editing/Editor.cpp | 158 +- Source/WebCore/editing/Editor.h | 13 +- Source/WebCore/editing/EditorCommand.cpp | 58 +- Source/WebCore/editing/EditorInsertAction.h | 2 +- Source/WebCore/editing/FormatBlockCommand.cpp | 9 +- Source/WebCore/editing/IndentOutdentCommand.cpp | 4 +- .../WebCore/editing/InsertIntoTextNodeCommand.cpp | 4 +- Source/WebCore/editing/InsertLineBreakCommand.cpp | 2 +- Source/WebCore/editing/InsertListCommand.cpp | 35 +- Source/WebCore/editing/InsertNodeBeforeCommand.cpp | 6 +- Source/WebCore/editing/JoinTextNodesCommand.cpp | 4 +- .../editing/MergeIdenticalElementsCommand.cpp | 4 +- Source/WebCore/editing/RemoveNodeCommand.cpp | 4 +- Source/WebCore/editing/ReplaceSelectionCommand.cpp | 80 +- Source/WebCore/editing/SelectionController.cpp | 79 +- Source/WebCore/editing/SelectionController.h | 2 +- Source/WebCore/editing/SplitElementCommand.cpp | 4 +- Source/WebCore/editing/SplitTextNodeCommand.cpp | 6 +- .../SplitTextNodeContainingElementCommand.cpp | 2 +- Source/WebCore/editing/TextCheckingHelper.cpp | 32 +- Source/WebCore/editing/TextIterator.cpp | 7 +- Source/WebCore/editing/TextIterator.h | 2 - Source/WebCore/editing/TypingCommand.cpp | 26 +- Source/WebCore/editing/VisiblePosition.cpp | 18 +- Source/WebCore/editing/VisiblePosition.h | 7 +- Source/WebCore/editing/VisibleSelection.cpp | 37 +- Source/WebCore/editing/VisibleSelection.h | 2 +- .../editing/WrapContentsInDummySpanCommand.cpp | 4 +- Source/WebCore/editing/htmlediting.cpp | 108 +- Source/WebCore/editing/htmlediting.h | 37 +- Source/WebCore/editing/mac/EditorMac.mm | 9 + Source/WebCore/editing/markup.cpp | 8 +- Source/WebCore/editing/visible_units.cpp | 191 +- Source/WebCore/editing/visible_units.h | 7 +- Source/WebCore/features.pri | 5 +- Source/WebCore/fileapi/BlobURL.cpp | 13 +- Source/WebCore/fileapi/BlobURL.h | 1 - Source/WebCore/fileapi/DOMFileSystem.cpp | 41 +- Source/WebCore/fileapi/DOMFileSystemSync.cpp | 98 + Source/WebCore/fileapi/Entry.idl | 2 +- Source/WebCore/fileapi/EntryBase.cpp | 8 +- Source/WebCore/fileapi/EntryBase.h | 2 +- Source/WebCore/fileapi/EntrySync.idl | 2 +- Source/WebCore/fileapi/FileReaderLoader.cpp | 4 + Source/WebCore/fileapi/FileThread.h | 2 +- Source/WebCore/fileapi/LocalFileSystem.cpp | 2 +- Source/WebCore/fileapi/LocalFileSystem.h | 2 +- Source/WebCore/gyp/WebCore.gyp | 266 +- .../WebCore/gyp/copy-forwarding-and-icu-headers.sh | 4 + Source/WebCore/gyp/copy-inspector-resources.sh | 14 + .../gyp/generate-webcore-export-file-generator.sh | 5 + Source/WebCore/gyp/run-if-exists.sh | 5 + Source/WebCore/gyp/streamline-inspector-source.sh | 19 + Source/WebCore/gyp/update-info-plist.sh | 4 + Source/WebCore/history/CachedFrame.cpp | 2 - Source/WebCore/history/HistoryItem.cpp | 7 +- Source/WebCore/history/HistoryItem.h | 2 - Source/WebCore/html/CollectionCache.h | 2 +- Source/WebCore/html/FormAssociatedElement.cpp | 2 +- Source/WebCore/html/HTMLAnchorElement.cpp | 10 +- Source/WebCore/html/HTMLAnchorElement.idl | 1 + Source/WebCore/html/HTMLAreaElement.cpp | 2 +- Source/WebCore/html/HTMLAreaElement.idl | 1 + Source/WebCore/html/HTMLAttributeNames.in | 1 + Source/WebCore/html/HTMLBodyElement.cpp | 2 +- Source/WebCore/html/HTMLCanvasElement.cpp | 68 +- Source/WebCore/html/HTMLCanvasElement.h | 5 + Source/WebCore/html/HTMLCollection.cpp | 2 +- Source/WebCore/html/HTMLDetailsElement.cpp | 91 +- Source/WebCore/html/HTMLDetailsElement.h | 14 +- Source/WebCore/html/HTMLElement.cpp | 37 +- Source/WebCore/html/HTMLElement.h | 5 +- Source/WebCore/html/HTMLEmbedElement.cpp | 10 +- Source/WebCore/html/HTMLFormControlElement.cpp | 17 +- Source/WebCore/html/HTMLFormControlElement.h | 7 + Source/WebCore/html/HTMLFormElement.cpp | 7 +- Source/WebCore/html/HTMLFrameElementBase.cpp | 7 + Source/WebCore/html/HTMLFrameElementBase.h | 3 + Source/WebCore/html/HTMLFrameSetElement.cpp | 30 +- Source/WebCore/html/HTMLFrameSetElement.h | 10 +- Source/WebCore/html/HTMLInputElement.cpp | 19 +- Source/WebCore/html/HTMLInputElement.h | 4 + Source/WebCore/html/HTMLLinkElement.cpp | 39 +- Source/WebCore/html/HTMLLinkElement.h | 1 + Source/WebCore/html/HTMLMediaElement.cpp | 70 +- Source/WebCore/html/HTMLMediaElement.h | 12 +- Source/WebCore/html/HTMLObjectElement.cpp | 11 +- Source/WebCore/html/HTMLPlugInElement.cpp | 2 +- Source/WebCore/html/HTMLPlugInImageElement.cpp | 10 +- Source/WebCore/html/HTMLPlugInImageElement.h | 11 +- Source/WebCore/html/HTMLScriptElement.cpp | 18 + Source/WebCore/html/HTMLScriptElement.h | 4 + Source/WebCore/html/HTMLScriptElement.idl | 2 +- Source/WebCore/html/HTMLSelectElement.cpp | 5 + Source/WebCore/html/HTMLSummaryElement.cpp | 7 + Source/WebCore/html/HTMLSummaryElement.h | 2 + Source/WebCore/html/HTMLTextAreaElement.cpp | 9 + Source/WebCore/html/HTMLTextAreaElement.h | 4 +- Source/WebCore/html/HTMLTitleElement.cpp | 9 +- Source/WebCore/html/NumberInputType.cpp | 5 +- Source/WebCore/html/RangeInputType.cpp | 2 +- Source/WebCore/html/ValidationMessage.cpp | 21 +- .../html/canvas/CanvasRenderingContext2D.cpp | 2 +- .../WebCore/html/canvas/WebGLContextAttributes.cpp | 10 + .../WebCore/html/canvas/WebGLContextAttributes.h | 5 + .../WebCore/html/canvas/WebGLContextAttributes.idl | 1 + .../WebCore/html/canvas/WebGLRenderingContext.cpp | 122 +- Source/WebCore/html/canvas/WebGLRenderingContext.h | 14 + Source/WebCore/html/parser/HTMLDocumentParser.cpp | 14 +- Source/WebCore/html/parser/HTMLDocumentParser.h | 1 - Source/WebCore/html/parser/HTMLElementStack.cpp | 44 +- Source/WebCore/html/parser/HTMLElementStack.h | 10 + Source/WebCore/html/parser/HTMLParserScheduler.cpp | 10 + Source/WebCore/html/parser/HTMLParserScheduler.h | 1 + Source/WebCore/html/parser/HTMLPreloadScanner.cpp | 17 +- Source/WebCore/html/parser/HTMLScriptRunnerHost.h | 2 - Source/WebCore/html/parser/HTMLToken.h | 48 +- Source/WebCore/html/parser/HTMLTreeBuilder.cpp | 21 +- Source/WebCore/html/shadow/MediaControls.cpp | 332 +- Source/WebCore/html/shadow/MediaControls.h | 40 +- Source/WebCore/html/shadow/SliderThumbElement.cpp | 20 +- Source/WebCore/html/shadow/SliderThumbElement.h | 3 +- Source/WebCore/inspector/CodeGeneratorInspector.pm | 142 +- Source/WebCore/inspector/ConsoleMessage.cpp | 12 +- Source/WebCore/inspector/ConsoleMessage.h | 5 +- Source/WebCore/inspector/DOMNodeHighlighter.cpp | 292 + Source/WebCore/inspector/DOMNodeHighlighter.h | 46 + Source/WebCore/inspector/InjectedScript.cpp | 85 +- Source/WebCore/inspector/InjectedScript.h | 30 +- Source/WebCore/inspector/InjectedScriptHost.cpp | 128 +- Source/WebCore/inspector/InjectedScriptHost.h | 85 +- Source/WebCore/inspector/InjectedScriptHost.idl | 6 +- Source/WebCore/inspector/InjectedScriptManager.cpp | 117 + Source/WebCore/inspector/InjectedScriptManager.h | 80 + Source/WebCore/inspector/InjectedScriptSource.js | 64 +- Source/WebCore/inspector/Inspector.idl | 275 - Source/WebCore/inspector/Inspector.json | 1445 ++ Source/WebCore/inspector/InspectorAgent.cpp | 775 +- Source/WebCore/inspector/InspectorAgent.h | 79 +- .../inspector/InspectorApplicationCacheAgent.cpp | 2 +- .../inspector/InspectorApplicationCacheAgent.h | 2 +- .../inspector/InspectorBrowserDebuggerAgent.cpp | 142 +- .../inspector/InspectorBrowserDebuggerAgent.h | 27 +- Source/WebCore/inspector/InspectorCSSAgent.cpp | 99 +- Source/WebCore/inspector/InspectorCSSAgent.h | 36 +- Source/WebCore/inspector/InspectorConsoleAgent.cpp | 50 +- Source/WebCore/inspector/InspectorConsoleAgent.h | 13 +- Source/WebCore/inspector/InspectorController.cpp | 75 +- Source/WebCore/inspector/InspectorController.h | 3 + Source/WebCore/inspector/InspectorDOMAgent.cpp | 394 +- Source/WebCore/inspector/InspectorDOMAgent.h | 104 +- .../WebCore/inspector/InspectorDOMStorageAgent.cpp | 10 +- .../WebCore/inspector/InspectorDOMStorageAgent.h | 12 +- .../inspector/InspectorDOMStorageResource.cpp | 2 +- .../inspector/InspectorDOMStorageResource.h | 6 +- .../WebCore/inspector/InspectorDatabaseAgent.cpp | 36 +- Source/WebCore/inspector/InspectorDatabaseAgent.h | 8 +- .../inspector/InspectorDatabaseResource.cpp | 2 +- .../WebCore/inspector/InspectorDatabaseResource.h | 4 +- .../WebCore/inspector/InspectorDebuggerAgent.cpp | 123 +- Source/WebCore/inspector/InspectorDebuggerAgent.h | 54 +- Source/WebCore/inspector/InspectorFrontendClient.h | 3 + Source/WebCore/inspector/InspectorFrontendHost.cpp | 14 + Source/WebCore/inspector/InspectorFrontendHost.h | 3 + Source/WebCore/inspector/InspectorFrontendHost.idl | 3 + .../WebCore/inspector/InspectorInstrumentation.cpp | 92 +- .../WebCore/inspector/InspectorInstrumentation.h | 37 +- Source/WebCore/inspector/InspectorPageAgent.cpp | 258 + Source/WebCore/inspector/InspectorPageAgent.h | 95 + .../WebCore/inspector/InspectorProfilerAgent.cpp | 90 +- Source/WebCore/inspector/InspectorProfilerAgent.h | 28 +- .../WebCore/inspector/InspectorResourceAgent.cpp | 241 +- Source/WebCore/inspector/InspectorResourceAgent.h | 16 +- Source/WebCore/inspector/InspectorRuntimeAgent.cpp | 55 +- Source/WebCore/inspector/InspectorRuntimeAgent.h | 33 +- Source/WebCore/inspector/InspectorStyleSheet.cpp | 62 +- Source/WebCore/inspector/InspectorStyleSheet.h | 1 + .../WebCore/inspector/InspectorTimelineAgent.cpp | 116 +- Source/WebCore/inspector/InspectorTimelineAgent.h | 35 +- Source/WebCore/inspector/InstrumentingAgents.h | 14 +- Source/WebCore/inspector/PageDebuggerAgent.cpp | 72 + Source/WebCore/inspector/PageDebuggerAgent.h | 63 + Source/WebCore/inspector/ScriptCallStack.cpp | 2 +- Source/WebCore/inspector/ScriptCallStack.h | 2 +- Source/WebCore/inspector/TimelineRecordFactory.cpp | 3 +- Source/WebCore/inspector/WorkerDebuggerAgent.cpp | 70 + Source/WebCore/inspector/WorkerDebuggerAgent.h | 64 + .../front-end/ApplicationCacheItemsView.js | 30 + .../WebCore/inspector/front-end/AuditFormatters.js | 2 +- Source/WebCore/inspector/front-end/AuditRules.js | 33 +- Source/WebCore/inspector/front-end/AuditsPanel.js | 2 +- .../inspector/front-end/BreakpointManager.js | 211 +- .../inspector/front-end/BreakpointsSidebarPane.js | 476 +- .../WebCore/inspector/front-end/CSSStyleModel.js | 88 +- .../inspector/front-end/CallStackSidebarPane.js | 70 +- Source/WebCore/inspector/front-end/Color.js | 4 +- Source/WebCore/inspector/front-end/ConsoleView.js | 28 +- .../WebCore/inspector/front-end/CookieItemsView.js | 56 +- Source/WebCore/inspector/front-end/DOMAgent.js | 428 +- .../inspector/front-end/DOMStorageItemsView.js | 8 +- Source/WebCore/inspector/front-end/Database.js | 11 +- .../WebCore/inspector/front-end/DebuggerModel.js | 261 +- .../front-end/DebuggerPresentationModel.js | 547 +- .../front-end/DetailedHeapshotGridNodes.js | 68 +- .../inspector/front-end/DetailedHeapshotView.js | 109 +- .../WebCore/inspector/front-end/ElementsPanel.js | 102 +- .../inspector/front-end/ElementsTreeOutline.js | 172 +- .../front-end/EventListenersSidebarPane.js | 14 +- Source/WebCore/inspector/front-end/ExtensionAPI.js | 2 + .../inspector/front-end/ExtensionAPISchema.json | 54 +- .../WebCore/inspector/front-end/ExtensionPanel.js | 5 +- .../WebCore/inspector/front-end/ExtensionServer.js | 16 +- .../WebCore/inspector/front-end/GoToLineDialog.js | 4 +- Source/WebCore/inspector/front-end/HeapSnapshot.js | 363 +- Source/WebCore/inspector/front-end/HelpScreen.js | 4 +- .../front-end/Images/applicationCache.png | Bin 1964 -> 1735 bytes .../inspector/front-end/Images/auditsIcon.png | Bin 3997 -> 3778 bytes Source/WebCore/inspector/front-end/Images/back.png | Bin 4205 -> 216 bytes .../front-end/Images/breakpointBorder.png | Bin 377 -> 261 bytes .../Images/breakpointConditionalBorder.png | Bin 379 -> 262 bytes .../Images/breakpointConditionalCounterBorder.png | Bin 529 -> 422 bytes .../front-end/Images/breakpointCounterBorder.png | Bin 526 -> 414 bytes .../Images/breakpointsActivateButtonGlyph.png | Bin 250 -> 211 bytes .../Images/breakpointsDeactivateButtonGlyph.png | Bin 426 -> 386 bytes .../WebCore/inspector/front-end/Images/checker.png | Bin 3471 -> 82 bytes .../front-end/Images/clearConsoleButtonGlyph.png | Bin 396 -> 364 bytes .../inspector/front-end/Images/closeButtons.png | Bin 4355 -> 369 bytes .../front-end/Images/consoleButtonGlyph.png | Bin 183 -> 177 bytes .../inspector/front-end/Images/consoleIcon.png | Bin 2930 -> 2927 bytes .../WebCore/inspector/front-end/Images/cookie.png | Bin 2246 -> 2189 bytes .../inspector/front-end/Images/database.png | Bin 2329 -> 1461 bytes .../inspector/front-end/Images/databaseTable.png | Bin 4325 -> 308 bytes .../front-end/Images/debuggerContinue.png | Bin 4190 -> 203 bytes .../inspector/front-end/Images/debuggerPause.png | Bin 4081 -> 120 bytes .../front-end/Images/debuggerStepInto.png | Bin 4282 -> 253 bytes .../inspector/front-end/Images/debuggerStepOut.png | Bin 4271 -> 246 bytes .../front-end/Images/debuggerStepOver.png | Bin 4366 -> 312 bytes .../Images/disclosureTriangleSmallDown.png | Bin 3919 -> 235 bytes .../Images/disclosureTriangleSmallDownBlack.png | Bin 3802 -> 138 bytes .../Images/disclosureTriangleSmallDownWhite.png | Bin 3820 -> 145 bytes .../Images/disclosureTriangleSmallRight.png | Bin 3898 -> 216 bytes .../Images/disclosureTriangleSmallRightBlack.png | Bin 3807 -> 125 bytes .../Images/disclosureTriangleSmallRightDown.png | Bin 3953 -> 262 bytes .../disclosureTriangleSmallRightDownBlack.png | Bin 3816 -> 160 bytes .../disclosureTriangleSmallRightDownWhite.png | Bin 3838 -> 169 bytes .../Images/disclosureTriangleSmallRightWhite.png | Bin 3818 -> 135 bytes .../inspector/front-end/Images/dockButtonGlyph.png | Bin 164 -> 153 bytes .../inspector/front-end/Images/elementsIcon.png | Bin 6639 -> 3267 bytes .../front-end/Images/enableOutlineButtonGlyph.png | Bin 363 -> 374 bytes .../front-end/Images/enableSolidButtonGlyph.png | Bin 302 -> 333 bytes .../inspector/front-end/Images/errorIcon.png | Bin 4337 -> 375 bytes .../inspector/front-end/Images/errorMediumIcon.png | Bin 4059 -> 652 bytes .../inspector/front-end/Images/errorRedDot.png | Bin 549 -> 434 bytes .../front-end/Images/excludeButtonGlyph.png | Bin 212 -> 255 bytes .../front-end/Images/focusButtonGlyph.png | Bin 285 -> 312 bytes .../WebCore/inspector/front-end/Images/forward.png | Bin 4202 -> 214 bytes .../WebCore/inspector/front-end/Images/frame.png | Bin 448 -> 482 bytes .../front-end/Images/garbageCollectButtonGlyph.png | Bin 0 -> 399 bytes .../inspector/front-end/Images/gearButtonGlyph.png | Bin 323 -> 268 bytes .../inspector/front-end/Images/glossyHeader.png | Bin 3720 -> 103 bytes .../front-end/Images/glossyHeaderPressed.png | Bin 3721 -> 103 bytes .../front-end/Images/glossyHeaderSelected.png | Bin 3738 -> 121 bytes .../Images/glossyHeaderSelectedPressed.png | Bin 3739 -> 121 bytes .../WebCore/inspector/front-end/Images/goArrow.png | Bin 3591 -> 146 bytes .../front-end/Images/graphLabelCalloutLeft.png | Bin 3790 -> 160 bytes .../front-end/Images/graphLabelCalloutRight.png | Bin 3789 -> 161 bytes .../inspector/front-end/Images/helpButtonGlyph.png | Bin 271 -> 289 bytes .../Images/largerResourcesButtonGlyph.png | Bin 192 -> 222 bytes .../inspector/front-end/Images/localStorage.png | Bin 1081 -> 1053 bytes .../inspector/front-end/Images/networkIcon.png | Bin 4628 -> 4607 bytes .../front-end/Images/nodeSearchButtonGlyph.png | Bin 283 -> 310 bytes .../inspector/front-end/Images/paneAddButtons.png | Bin 929 -> 738 bytes .../inspector/front-end/Images/paneBottomGrow.png | Bin 3457 -> 85 bytes .../front-end/Images/paneBottomGrowActive.png | Bin 3457 -> 85 bytes .../front-end/Images/paneGrowHandleLine.png | Bin 3443 -> 69 bytes .../front-end/Images/paneSettingsButtons.png | Bin 1422 -> 1122 bytes .../Images/pauseOnExceptionButtonGlyph.png | Bin 331 -> 345 bytes .../front-end/Images/percentButtonGlyph.png | Bin 357 -> 361 bytes .../inspector/front-end/Images/popoverArrows.png | Bin 784 -> 546 bytes .../front-end/Images/popoverBackground.png | Bin 2233 -> 2231 bytes .../front-end/Images/profileGroupIcon.png | Bin 5126 -> 1486 bytes .../inspector/front-end/Images/profileIcon.png | Bin 4953 -> 1295 bytes .../front-end/Images/profileSmallIcon.png | Bin 579 -> 568 bytes .../inspector/front-end/Images/profilesIcon.png | Bin 4158 -> 3623 bytes .../front-end/Images/profilesSilhouette.png | Bin 48600 -> 42067 bytes .../front-end/Images/programCounterBorder.png | Bin 352 -> 331 bytes .../inspector/front-end/Images/radioDot.png | Bin 235 -> 224 bytes .../front-end/Images/recordButtonGlyph.png | Bin 213 -> 241 bytes .../front-end/Images/recordToggledButtonGlyph.png | Bin 510 -> 385 bytes .../front-end/Images/reloadButtonGlyph.png | Bin 267 -> 294 bytes .../inspector/front-end/Images/resourceCSSIcon.png | Bin 1066 -> 1057 bytes .../front-end/Images/resourceDocumentIcon.png | Bin 4959 -> 979 bytes .../front-end/Images/resourceDocumentIconSmall.png | Bin 787 -> 158 bytes .../inspector/front-end/Images/resourceJSIcon.png | Bin 879 -> 859 bytes .../front-end/Images/resourcePlainIcon.png | Bin 4321 -> 378 bytes .../front-end/Images/resourcePlainIconSmall.png | Bin 731 -> 130 bytes .../inspector/front-end/Images/resourcesIcon.png | Bin 6431 -> 2366 bytes .../front-end/Images/resourcesSizeGraphIcon.png | Bin 5606 -> 1640 bytes .../front-end/Images/resourcesTimeGraphIcon.png | Bin 5743 -> 1427 bytes .../inspector/front-end/Images/scriptsIcon.png | Bin 7428 -> 2863 bytes .../front-end/Images/scriptsSilhouette.png | Bin 49028 -> 43110 bytes .../inspector/front-end/Images/searchSmallBlue.png | Bin 3968 -> 311 bytes .../front-end/Images/searchSmallBrightBlue.png | Bin 3966 -> 304 bytes .../inspector/front-end/Images/searchSmallGray.png | Bin 3936 -> 264 bytes .../front-end/Images/searchSmallWhite.png | Bin 3844 -> 217 bytes .../WebCore/inspector/front-end/Images/segment.png | Bin 4349 -> 297 bytes .../inspector/front-end/Images/segmentEnd.png | Bin 4070 -> 141 bytes .../inspector/front-end/Images/segmentHover.png | Bin 4310 -> 320 bytes .../inspector/front-end/Images/segmentHoverEnd.png | Bin 4074 -> 145 bytes .../inspector/front-end/Images/segmentSelected.png | Bin 4302 -> 309 bytes .../front-end/Images/segmentSelectedEnd.png | Bin 4070 -> 139 bytes .../inspector/front-end/Images/sessionStorage.png | Bin 1097 -> 1069 bytes .../inspector/front-end/Images/splitviewDimple.png | Bin 216 -> 189 bytes .../Images/splitviewDividerBackground.png | Bin 149 -> 147 bytes .../front-end/Images/statusbarButtons.png | Bin 4175 -> 216 bytes .../front-end/Images/statusbarMenuButton.png | Bin 4293 -> 328 bytes .../Images/statusbarMenuButtonSelected.png | Bin 4291 -> 295 bytes .../Images/statusbarResizerHorizontal.png | Bin 4026 -> 90 bytes .../front-end/Images/statusbarResizerVertical.png | Bin 4036 -> 92 bytes .../inspector/front-end/Images/successGreenDot.png | Bin 585 -> 492 bytes .../front-end/Images/thumbActiveHoriz.png | Bin 647 -> 663 bytes .../inspector/front-end/Images/thumbActiveVert.png | Bin 599 -> 567 bytes .../inspector/front-end/Images/thumbHoriz.png | Bin 657 -> 665 bytes .../inspector/front-end/Images/thumbHoverHoriz.png | Bin 667 -> 667 bytes .../inspector/front-end/Images/thumbHoverVert.png | Bin 583 -> 565 bytes .../inspector/front-end/Images/thumbVert.png | Bin 568 -> 567 bytes .../inspector/front-end/Images/timelineBarBlue.png | Bin 419 -> 403 bytes .../inspector/front-end/Images/timelineBarGray.png | Bin 378 -> 366 bytes .../front-end/Images/timelineBarGreen.png | Bin 414 -> 404 bytes .../front-end/Images/timelineBarOrange.png | Bin 394 -> 376 bytes .../front-end/Images/timelineBarPurple.png | Bin 420 -> 403 bytes .../inspector/front-end/Images/timelineBarRed.png | Bin 408 -> 401 bytes .../front-end/Images/timelineBarYellow.png | Bin 400 -> 382 bytes .../front-end/Images/timelineCheckmarks.png | Bin 3528 -> 3284 bytes .../inspector/front-end/Images/timelineDots.png | Bin 2436 -> 2294 bytes .../front-end/Images/timelineHollowPillBlue.png | Bin 3450 -> 806 bytes .../front-end/Images/timelineHollowPillGray.png | Bin 3392 -> 713 bytes .../front-end/Images/timelineHollowPillGreen.png | Bin 3452 -> 806 bytes .../front-end/Images/timelineHollowPillOrange.png | Bin 3452 -> 807 bytes .../front-end/Images/timelineHollowPillPurple.png | Bin 3453 -> 810 bytes .../front-end/Images/timelineHollowPillRed.png | Bin 3460 -> 810 bytes .../front-end/Images/timelineHollowPillYellow.png | Bin 3444 -> 804 bytes .../inspector/front-end/Images/timelineIcon.png | Bin 4419 -> 4312 bytes .../front-end/Images/timelinePillBlue.png | Bin 3346 -> 706 bytes .../front-end/Images/timelinePillGray.png | Bin 3297 -> 636 bytes .../front-end/Images/timelinePillGreen.png | Bin 3350 -> 712 bytes .../front-end/Images/timelinePillOrange.png | Bin 3352 -> 712 bytes .../front-end/Images/timelinePillPurple.png | Bin 3353 -> 716 bytes .../inspector/front-end/Images/timelinePillRed.png | Bin 3343 -> 706 bytes .../front-end/Images/timelinePillYellow.png | Bin 3336 -> 699 bytes .../front-end/Images/toolbarItemSelected.png | Bin 4197 -> 266 bytes .../inspector/front-end/Images/trackHoriz.png | Bin 520 -> 530 bytes .../inspector/front-end/Images/trackVert.png | Bin 523 -> 565 bytes .../front-end/Images/treeDownTriangleBlack.png | Bin 3570 -> 166 bytes .../front-end/Images/treeDownTriangleWhite.png | Bin 3531 -> 148 bytes .../front-end/Images/treeRightTriangleBlack.png | Bin 3561 -> 155 bytes .../front-end/Images/treeRightTriangleWhite.png | Bin 3535 -> 142 bytes .../front-end/Images/treeUpTriangleBlack.png | Bin 3584 -> 180 bytes .../front-end/Images/treeUpTriangleWhite.png | Bin 3558 -> 162 bytes .../front-end/Images/undockButtonGlyph.png | Bin 179 -> 219 bytes .../inspector/front-end/Images/userInputIcon.png | Bin 777 -> 189 bytes .../front-end/Images/userInputPreviousIcon.png | Bin 765 -> 162 bytes .../front-end/Images/userInputResultIcon.png | Bin 259 -> 221 bytes .../inspector/front-end/Images/warningIcon.png | Bin 4244 -> 273 bytes .../front-end/Images/warningMediumIcon.png | Bin 3833 -> 592 bytes .../front-end/Images/warningOrangeDot.png | Bin 580 -> 484 bytes .../inspector/front-end/Images/warningsErrors.png | Bin 5192 -> 1832 bytes .../front-end/InspectorFrontendHostStub.js | 4 + .../inspector/front-end/MetricsSidebarPane.js | 2 +- .../WebCore/inspector/front-end/NetworkItemView.js | 11 + .../WebCore/inspector/front-end/NetworkManager.js | 187 +- Source/WebCore/inspector/front-end/NetworkPanel.js | 50 +- .../inspector/front-end/ObjectPropertiesSection.js | 16 +- Source/WebCore/inspector/front-end/ProfileView.js | 8 +- .../WebCore/inspector/front-end/ProfilesPanel.js | 29 +- .../inspector/front-end/PropertiesSidebarPane.js | 11 +- Source/WebCore/inspector/front-end/RemoteObject.js | 73 +- Source/WebCore/inspector/front-end/Resource.js | 16 +- .../inspector/front-end/ResourceJSONView.js | 75 + .../inspector/front-end/ResourceTreeModel.js | 214 +- Source/WebCore/inspector/front-end/ResourceView.js | 68 +- .../WebCore/inspector/front-end/ResourcesPanel.js | 129 +- Source/WebCore/inspector/front-end/Script.js | 4 +- .../WebCore/inspector/front-end/ScriptFormatter.js | 63 +- Source/WebCore/inspector/front-end/ScriptsPanel.js | 465 +- Source/WebCore/inspector/front-end/Section.js | 8 +- Source/WebCore/inspector/front-end/Settings.js | 12 +- .../WebCore/inspector/front-end/ShortcutsHelp.js | 4 +- Source/WebCore/inspector/front-end/SourceFile.js | 311 + Source/WebCore/inspector/front-end/SourceFrame.js | 154 +- .../inspector/front-end/SourceFrameContent.js | 13 +- .../inspector/front-end/StylesSidebarPane.js | 11 +- .../inspector/front-end/TextEditorHighlighter.js | 232 +- .../WebCore/inspector/front-end/TextEditorModel.js | 5 + Source/WebCore/inspector/front-end/TextViewer.js | 283 +- .../WebCore/inspector/front-end/TimelineAgent.js | 47 +- .../WebCore/inspector/front-end/TimelinePanel.js | 41 +- .../front-end/WatchExpressionsSidebarPane.js | 4 +- Source/WebCore/inspector/front-end/WebKit.qrc | 4 +- .../inspector/front-end/WorkersSidebarPane.js | 4 +- .../WebCore/inspector/front-end/heapProfiler.css | 19 + Source/WebCore/inspector/front-end/inspector.css | 17 + Source/WebCore/inspector/front-end/inspector.html | 2 + Source/WebCore/inspector/front-end/inspector.js | 92 +- Source/WebCore/inspector/front-end/utilities.js | 86 +- Source/WebCore/inspector/generate-inspector-idl | 125 + Source/WebCore/inspector/xxd.pl | 90 +- Source/WebCore/loader/DocumentLoader.cpp | 40 +- Source/WebCore/loader/DocumentLoader.h | 12 +- Source/WebCore/loader/DocumentThreadableLoader.cpp | 14 +- Source/WebCore/loader/DocumentThreadableLoader.h | 6 +- .../loader/DocumentThreadableLoaderClient.h | 3 + Source/WebCore/loader/EmptyClients.h | 12 +- Source/WebCore/loader/FrameLoader.cpp | 185 +- Source/WebCore/loader/FrameLoader.h | 11 +- Source/WebCore/loader/FrameLoaderClient.h | 4 +- Source/WebCore/loader/FrameLoaderTypes.h | 2 +- Source/WebCore/loader/MainResourceLoader.cpp | 4 +- Source/WebCore/loader/PolicyCallback.cpp | 1 + Source/WebCore/loader/ResourceLoadNotifier.cpp | 22 +- Source/WebCore/loader/ResourceLoadNotifier.h | 6 +- Source/WebCore/loader/ResourceLoadScheduler.cpp | 7 +- Source/WebCore/loader/ResourceLoadScheduler.h | 3 +- Source/WebCore/loader/ResourceLoader.h | 6 + Source/WebCore/loader/SubframeLoader.cpp | 51 +- Source/WebCore/loader/SubframeLoader.h | 7 +- Source/WebCore/loader/SubresourceLoader.cpp | 20 +- Source/WebCore/loader/SubresourceLoader.h | 9 +- .../WebCore/loader/ThreadableLoaderClientWrapper.h | 158 +- Source/WebCore/loader/WorkerThreadableLoader.cpp | 16 +- Source/WebCore/loader/WorkerThreadableLoader.h | 4 +- .../WebCore/loader/appcache/ApplicationCache.cpp | 25 +- Source/WebCore/loader/appcache/ApplicationCache.h | 4 + .../loader/appcache/ApplicationCacheGroup.cpp | 15 +- .../WebCore/loader/appcache/ApplicationCacheHost.h | 7 +- .../loader/appcache/ApplicationCacheResource.cpp | 3 +- .../loader/appcache/ApplicationCacheResource.h | 10 +- .../loader/appcache/ApplicationCacheStorage.cpp | 225 +- .../loader/appcache/ApplicationCacheStorage.h | 7 +- .../WebCore/loader/archive/cf/LegacyWebArchive.cpp | 6 +- Source/WebCore/loader/cache/CachedFont.cpp | 4 +- Source/WebCore/loader/cache/CachedFont.h | 3 +- Source/WebCore/loader/cache/CachedImage.cpp | 10 - Source/WebCore/loader/cache/CachedImage.h | 2 - Source/WebCore/loader/cache/CachedResource.cpp | 33 +- Source/WebCore/loader/cache/CachedResource.h | 7 +- .../WebCore/loader/cache/CachedResourceLoader.cpp | 32 +- Source/WebCore/loader/cache/CachedResourceLoader.h | 3 + Source/WebCore/loader/cache/CachedScript.cpp | 14 +- Source/WebCore/loader/cache/CachedScript.h | 2 - Source/WebCore/loader/cf/SubresourceLoaderCF.cpp | 53 + Source/WebCore/loader/icon/IconDatabase.cpp | 184 +- Source/WebCore/loader/icon/IconDatabase.h | 92 +- Source/WebCore/loader/icon/IconDatabaseBase.cpp | 69 + Source/WebCore/loader/icon/IconDatabaseBase.h | 221 + Source/WebCore/loader/icon/IconDatabaseClient.h | 19 +- Source/WebCore/loader/icon/IconDatabaseNone.cpp | 218 - Source/WebCore/loader/mac/ResourceLoaderMac.mm | 42 + .../close-window-when-correction-is-shown.html | 48 + .../manual-tests/database-callback-deferred.html | 17 - .../manual-tests/input-number-localization.html | 6 +- .../manual-tests/media-default-playback-rate.html | 90 + .../manual-tests/print-after-window-close.html | 8 + ...art-after-inserting-line-break-in-textarea.html | 25 + Source/WebCore/page/Chrome.cpp | 4 +- Source/WebCore/page/Chrome.h | 2 +- Source/WebCore/page/ChromeClient.h | 6 +- Source/WebCore/page/ContentSecurityPolicy.cpp | 488 +- Source/WebCore/page/ContentSecurityPolicy.h | 18 +- Source/WebCore/page/ContextMenuController.cpp | 46 +- Source/WebCore/page/DOMSelection.cpp | 16 +- Source/WebCore/page/DOMTimer.cpp | 40 +- Source/WebCore/page/DOMTimer.h | 5 +- Source/WebCore/page/DOMWindow.cpp | 31 +- Source/WebCore/page/DOMWindow.h | 8 +- Source/WebCore/page/DOMWindow.idl | 25 +- Source/WebCore/page/DragController.cpp | 7 +- Source/WebCore/page/DragController.h | 1 - Source/WebCore/page/EditorClient.h | 7 +- Source/WebCore/page/EventHandler.cpp | 106 +- Source/WebCore/page/EventHandler.h | 8 + Source/WebCore/page/FocusController.cpp | 17 +- Source/WebCore/page/Frame.cpp | 15 +- Source/WebCore/page/Frame.h | 2 +- Source/WebCore/page/FrameView.cpp | 64 +- Source/WebCore/page/FrameView.h | 13 +- Source/WebCore/page/Geolocation.cpp | 46 +- Source/WebCore/page/Geolocation.h | 3 + Source/WebCore/page/GeolocationController.cpp | 6 +- Source/WebCore/page/Navigator.cpp | 6 + Source/WebCore/page/Navigator.h | 1 + Source/WebCore/page/NavigatorBase.cpp | 2 +- Source/WebCore/page/Page.cpp | 34 + Source/WebCore/page/Page.h | 17 + Source/WebCore/page/PageGroup.cpp | 50 + Source/WebCore/page/PageGroup.h | 10 + Source/WebCore/page/PageGroupLoadDeferrer.cpp | 32 +- Source/WebCore/page/PrintContext.cpp | 6 +- Source/WebCore/page/SecurityOrigin.cpp | 30 +- Source/WebCore/page/SecurityOrigin.h | 4 +- Source/WebCore/page/SecurityOriginHash.h | 2 +- Source/WebCore/page/Settings.cpp | 50 +- Source/WebCore/page/Settings.h | 24 + Source/WebCore/page/WebKitAnimation.cpp | 120 + Source/WebCore/page/WebKitAnimation.h | 81 + Source/WebCore/page/WebKitAnimation.idl | 58 + Source/WebCore/page/WebKitAnimationList.cpp | 82 + Source/WebCore/page/WebKitAnimationList.h | 61 + Source/WebCore/page/WebKitAnimationList.idl | 36 + Source/WebCore/page/animation/AnimationBase.cpp | 41 +- Source/WebCore/page/animation/AnimationBase.h | 17 +- .../WebCore/page/animation/AnimationController.cpp | 144 +- .../WebCore/page/animation/AnimationController.h | 3 + .../page/animation/AnimationControllerPrivate.h | 27 +- .../WebCore/page/animation/CompositeAnimation.cpp | 29 +- Source/WebCore/page/animation/CompositeAnimation.h | 3 + Source/WebCore/page/mac/WebCoreViewFactory.m | 2 +- Source/WebCore/platform/ColorData.gperf | 4 +- Source/WebCore/platform/CrossThreadCopier.h | 6 +- .../platform/DefaultLocalizationStrategy.cpp | 874 + .../WebCore/platform/DefaultLocalizationStrategy.h | 187 + Source/WebCore/platform/FileMetadata.h | 4 + Source/WebCore/platform/FileSystem.cpp | 7 +- Source/WebCore/platform/FileSystem.h | 2 +- Source/WebCore/platform/HostWindow.h | 2 +- Source/WebCore/platform/KURL.cpp | 24 +- Source/WebCore/platform/KURL.h | 2 + Source/WebCore/platform/KURLGoogle.cpp | 16 + Source/WebCore/platform/KillRingNone.cpp | 4 +- Source/WebCore/platform/Length.h | 127 +- Source/WebCore/platform/LinkHash.cpp | 2 +- Source/WebCore/platform/LocalizationStrategy.h | 9 +- Source/WebCore/platform/LocalizedStrings.cpp | 34 +- Source/WebCore/platform/LocalizedStrings.h | 15 +- Source/WebCore/platform/MIMETypeRegistry.cpp | 41 + Source/WebCore/platform/MIMETypeRegistry.h | 5 + .../WebCore/platform/PlatformGestureRecognizer.cpp | 46 + .../WebCore/platform/PlatformGestureRecognizer.h | 64 + Source/WebCore/platform/PlatformKeyboardEvent.h | 2 +- Source/WebCore/platform/PlatformStrategies.cpp | 9 +- Source/WebCore/platform/PlatformStrategies.h | 2 +- Source/WebCore/platform/ScrollAnimator.h | 2 + Source/WebCore/platform/ScrollTypes.h | 4 +- Source/WebCore/platform/ScrollView.cpp | 51 +- Source/WebCore/platform/ScrollView.h | 14 +- Source/WebCore/platform/ScrollableArea.h | 19 + Source/WebCore/platform/SharedBuffer.cpp | 6 + Source/WebCore/platform/SharedBuffer.h | 8 + Source/WebCore/platform/UUID.cpp | 16 +- .../WebCore/platform/android/FileSystemAndroid.cpp | 11 +- .../platform/android/LocalizedStringsAndroid.cpp | 2 +- Source/WebCore/platform/audio/AudioBus.cpp | 87 + Source/WebCore/platform/audio/AudioBus.h | 12 + Source/WebCore/platform/audio/HRTFKernel.cpp | 13 +- Source/WebCore/platform/audio/SincResampler.cpp | 342 + Source/WebCore/platform/audio/SincResampler.h | 79 + .../platform/audio/chromium/AudioBusChromium.cpp | 28 +- .../platform/audio/mac/AudioDestinationMac.cpp | 4 +- Source/WebCore/platform/brew/FileSystemBrew.cpp | 12 +- .../WebCore/platform/brew/LocalizedStringsBrew.cpp | 2 +- Source/WebCore/platform/cf/BinaryPropertyList.cpp | 2 +- Source/WebCore/platform/cf/SchedulePair.h | 2 +- Source/WebCore/platform/cf/SharedBufferCF.cpp | 26 + .../WebCore/platform/cf/win/CertificateCFWin.cpp | 52 + Source/WebCore/platform/cf/win/CertificateCFWin.h | 38 + .../platform/chromium/ClipboardChromium.cpp | 19 + .../WebCore/platform/chromium/ClipboardChromium.h | 4 + .../platform/chromium/DataTransferItemChromium.cpp | 108 + .../platform/chromium/DataTransferItemChromium.h | 75 + .../chromium/DataTransferItemsChromium.cpp | 111 + .../platform/chromium/DataTransferItemsChromium.h | 77 + .../platform/chromium/FileSystemChromium.cpp | 7 + .../WebCore/platform/chromium/PasteboardPrivate.h | 1 + .../chromium/ScrollbarThemeChromiumWin.cpp | 24 +- Source/WebCore/platform/chromium/TraceEvent.h | 74 + .../WebCore/platform/chromium/WindowsVersion.cpp | 52 - Source/WebCore/platform/chromium/WindowsVersion.h | 40 - Source/WebCore/platform/efl/ContextMenuEfl.cpp | 14 +- Source/WebCore/platform/efl/ContextMenuItemEfl.cpp | 16 +- Source/WebCore/platform/efl/FileSystemEfl.cpp | 8 +- .../WebCore/platform/efl/GeolocationServiceEfl.cpp | 80 + .../WebCore/platform/efl/GeolocationServiceEfl.h | 56 + .../WebCore/platform/efl/LocalizedStringsEfl.cpp | 2 +- .../platform/efl/PlatformKeyboardEventEfl.cpp | 28 +- .../WebCore/platform/efl/PlatformMouseEventEfl.cpp | 52 +- Source/WebCore/platform/efl/RenderThemeEfl.cpp | 65 +- Source/WebCore/platform/efl/RenderThemeEfl.h | 11 + Source/WebCore/platform/efl/ScrollbarEfl.cpp | 72 +- Source/WebCore/platform/efl/ScrollbarEfl.h | 4 +- Source/WebCore/platform/efl/WidgetEfl.cpp | 18 +- Source/WebCore/platform/graphics/BitmapImage.h | 2 +- Source/WebCore/platform/graphics/Color.cpp | 27 +- Source/WebCore/platform/graphics/ContextShadow.h | 2 +- Source/WebCore/platform/graphics/Font.cpp | 2 +- Source/WebCore/platform/graphics/Font.h | 11 +- Source/WebCore/platform/graphics/FontCache.cpp | 14 +- Source/WebCore/platform/graphics/FontDescription.h | 10 +- .../WebCore/platform/graphics/FontFallbackList.cpp | 17 - .../WebCore/platform/graphics/FontFallbackList.h | 3 +- Source/WebCore/platform/graphics/FontFastPath.cpp | 64 +- .../WebCore/platform/graphics/FontPlatformData.cpp | 63 + .../WebCore/platform/graphics/FontPlatformData.h | 359 + Source/WebCore/platform/graphics/GraphicsContext.h | 7 +- .../WebCore/platform/graphics/GraphicsContext3D.h | 30 +- Source/WebCore/platform/graphics/GraphicsLayer.h | 5 +- Source/WebCore/platform/graphics/ImageBuffer.h | 4 + Source/WebCore/platform/graphics/MediaPlayer.cpp | 31 +- Source/WebCore/platform/graphics/MediaPlayer.h | 35 +- Source/WebCore/platform/graphics/Path.cpp | 8 +- Source/WebCore/platform/graphics/Path.h | 8 +- .../WebCore/platform/graphics/SimpleFontData.cpp | 42 +- Source/WebCore/platform/graphics/SimpleFontData.h | 30 +- Source/WebCore/platform/graphics/TextRun.h | 23 +- Source/WebCore/platform/graphics/Tile.h | 2 +- .../platform/graphics/TiledBackingStore.cpp | 10 +- .../WebCore/platform/graphics/WOFFFileFormat.cpp | 4 +- Source/WebCore/platform/graphics/WidthIterator.cpp | 24 +- .../MediaPlayerPrivateAVFoundation.cpp | 731 + .../avfoundation/MediaPlayerPrivateAVFoundation.h | 262 + .../MediaPlayerPrivateAVFoundationObjC.h | 131 + .../MediaPlayerPrivateAVFoundationObjC.mm | 811 + .../platform/graphics/ca/GraphicsLayerCA.cpp | 12 +- .../platform/graphics/ca/PlatformCAAnimation.h | 5 +- .../platform/graphics/ca/win/CACFLayerTreeHost.cpp | 7 +- .../platform/graphics/cairo/ContextShadowCairo.cpp | 7 +- .../WebCore/platform/graphics/cairo/FontCairo.cpp | 9 +- .../graphics/cairo/FontCustomPlatformData.h | 3 +- .../platform/graphics/cairo/GradientCairo.cpp | 3 +- .../graphics/cairo/GraphicsContextCairo.cpp | 116 +- .../cairo/GraphicsContextPlatformPrivateCairo.h | 30 +- .../platform/graphics/cairo/ImageBufferCairo.cpp | 11 +- .../platform/graphics/cairo/ImageBufferData.h | 5 +- .../WebCore/platform/graphics/cairo/ImageCairo.cpp | 6 +- .../platform/graphics/cairo/OwnPtrCairo.cpp | 4 +- .../WebCore/platform/graphics/cairo/OwnPtrCairo.h | 4 +- .../WebCore/platform/graphics/cairo/PathCairo.cpp | 2 +- .../graphics/cairo/PlatformContextCairo.cpp | 38 + .../platform/graphics/cairo/PlatformContextCairo.h | 52 + .../platform/graphics/cairo/RefPtrCairo.cpp | 4 +- .../WebCore/platform/graphics/cairo/RefPtrCairo.h | 4 +- .../platform/graphics/cg/FontPlatformData.h | 105 - .../platform/graphics/cg/GraphicsContextCG.cpp | 36 +- .../graphics/cg/GraphicsContextPlatformPrivateCG.h | 13 +- .../WebCore/platform/graphics/cg/ImageBufferCG.cpp | 60 +- Source/WebCore/platform/graphics/cg/PathCG.cpp | 2 +- .../graphics/chromium/Canvas2DLayerChromium.cpp | 2 +- .../graphics/chromium/Canvas2DLayerChromium.h | 4 +- .../graphics/chromium/CanvasLayerChromium.cpp | 28 +- .../graphics/chromium/CanvasLayerChromium.h | 7 +- .../graphics/chromium/ContentLayerChromium.cpp | 51 +- .../graphics/chromium/ContentLayerChromium.h | 6 +- .../graphics/chromium/CrossProcessFontLoading.mm | 2 +- .../graphics/chromium/DrawingBufferChromium.cpp | 19 +- .../platform/graphics/chromium/FontCacheLinux.cpp | 3 +- .../platform/graphics/chromium/FontChromiumWin.cpp | 30 +- .../platform/graphics/chromium/FontLinux.cpp | 2 +- .../chromium/FontPlatformDataChromiumWin.h | 3 +- .../graphics/chromium/FontPlatformDataLinux.cpp | 10 +- .../graphics/chromium/FontPlatformDataLinux.h | 11 +- .../platform/graphics/chromium/GLES2Canvas.cpp | 394 +- .../platform/graphics/chromium/GLES2Canvas.h | 19 +- .../chromium/GlyphPageTreeNodeChromiumWin.cpp | 4 +- .../graphics/chromium/ImageLayerChromium.cpp | 4 +- .../graphics/chromium/ImageLayerChromium.h | 2 +- .../platform/graphics/chromium/LayerChromium.cpp | 101 +- .../platform/graphics/chromium/LayerChromium.h | 38 +- .../graphics/chromium/LayerRendererChromium.cpp | 313 +- .../graphics/chromium/LayerRendererChromium.h | 61 +- .../graphics/chromium/LayerTilerChromium.cpp | 148 +- .../graphics/chromium/LayerTilerChromium.h | 51 +- .../graphics/chromium/PluginLayerChromium.cpp | 38 +- .../graphics/chromium/PluginLayerChromium.h | 13 +- .../platform/graphics/chromium/ShaderChromium.cpp | 17 +- .../platform/graphics/chromium/ShaderChromium.h | 4 +- .../graphics/chromium/SimpleFontDataLinux.cpp | 6 +- .../graphics/chromium/VideoLayerChromium.cpp | 227 +- .../graphics/chromium/VideoLayerChromium.h | 45 +- .../graphics/chromium/WebGLLayerChromium.cpp | 16 +- .../graphics/chromium/WebGLLayerChromium.h | 4 +- .../graphics/chromium/cc/CCCanvasLayerImpl.cpp | 80 + .../graphics/chromium/cc/CCCanvasLayerImpl.h | 61 + .../graphics/chromium/cc/CCHeadsUpDisplay.cpp | 4 +- .../graphics/chromium/cc/CCHeadsUpDisplay.h | 2 +- .../platform/graphics/chromium/cc/CCLayerImpl.cpp | 27 +- .../platform/graphics/chromium/cc/CCLayerImpl.h | 62 +- .../graphics/chromium/cc/CCPluginLayerImpl.cpp | 84 + .../graphics/chromium/cc/CCPluginLayerImpl.h | 60 + .../graphics/chromium/cc/CCVideoLayerImpl.cpp | 173 + .../graphics/chromium/cc/CCVideoLayerImpl.h | 75 + .../platform/graphics/cocoa/FontPlatformData.h | 176 - .../graphics/cocoa/FontPlatformDataCocoa.mm | 42 +- .../freetype/FontCustomPlatformDataFreeType.cpp | 2 +- .../platform/graphics/freetype/FontPlatformData.h | 1 + .../platform/graphics/gpu/BicubicShader.cpp | 137 + .../WebCore/platform/graphics/gpu/BicubicShader.h | 58 + .../platform/graphics/gpu/ConvolutionShader.cpp | 125 + .../platform/graphics/gpu/ConvolutionShader.h | 58 + .../WebCore/platform/graphics/gpu/DrawingBuffer.h | 13 + .../graphics/gpu/LoopBlinnPathProcessor.cpp | 5 + .../platform/graphics/gpu/PODRedBlackTree.h | 4 +- .../graphics/gpu/SharedGraphicsContext3D.cpp | 69 +- .../graphics/gpu/SharedGraphicsContext3D.h | 28 +- .../WebCore/platform/graphics/gpu/TilingData.cpp | 2 +- .../gstreamer/MediaPlayerPrivateGStreamer.cpp | 36 +- .../gstreamer/MediaPlayerPrivateGStreamer.h | 2 +- .../gstreamer/WebKitWebSourceGStreamer.cpp | 2 +- Source/WebCore/platform/graphics/gtk/FontGtk.cpp | 23 +- Source/WebCore/platform/graphics/gtk/IconGtk.cpp | 6 +- .../platform/graphics/gtk/ImageBufferGtk.cpp | 2 +- Source/WebCore/platform/graphics/gtk/ImageGtk.cpp | 5 +- .../graphics/haiku/FontCustomPlatformData.cpp | 2 +- .../graphics/haiku/FontCustomPlatformData.h | 3 +- .../graphics/mac/ComplexTextController.cpp | 24 +- .../platform/graphics/mac/ComplexTextController.h | 1 + .../graphics/mac/ComplexTextControllerATSUI.cpp | 2 +- .../graphics/mac/ComplexTextControllerCoreText.cpp | 6 +- .../WebCore/platform/graphics/mac/FontCacheMac.mm | 2 +- .../platform/graphics/mac/FontComplexTextMac.cpp | 4 +- .../graphics/mac/FontCustomPlatformData.cpp | 4 +- .../platform/graphics/mac/FontCustomPlatformData.h | 3 +- Source/WebCore/platform/graphics/mac/FontMac.mm | 86 +- .../platform/graphics/mac/GlyphPageTreeNodeMac.cpp | 4 +- .../platform/graphics/mac/GraphicsContext3DMac.mm | 12 + .../graphics/mac/MediaPlayerPrivateQTKit.h | 6 + .../graphics/mac/MediaPlayerPrivateQTKit.mm | 88 +- .../graphics/mac/SimpleFontDataCoreText.cpp | 10 +- .../platform/graphics/mac/SimpleFontDataMac.mm | 56 +- Source/WebCore/platform/graphics/mac/WebLayer.h | 3 +- Source/WebCore/platform/graphics/mac/WebLayer.mm | 6 +- .../WebCore/platform/graphics/mac/WebTiledLayer.mm | 2 +- .../graphics/opengl/GraphicsContext3DOpenGL.cpp | 125 +- .../platform/graphics/opengl/TextureMapperGL.cpp | 6 +- .../platform/graphics/opengl/TextureMapperGL.h | 2 +- .../platform/graphics/openvg/PathOpenVG.cpp | 8 +- .../graphics/pango/FontCustomPlatformDataPango.cpp | 2 +- .../platform/graphics/pango/FontPlatformData.h | 2 +- .../platform/graphics/qt/Extensions3DQt.cpp | 1 + .../platform/graphics/qt/FontCustomPlatformData.h | 4 +- .../graphics/qt/FontCustomPlatformDataQt.cpp | 2 +- .../platform/graphics/qt/FontPlatformData.h | 1 + .../platform/graphics/qt/FontPlatformDataQt.cpp | 2 - Source/WebCore/platform/graphics/qt/FontQt.cpp | 32 - .../platform/graphics/qt/GraphicsContext3DQt.cpp | 324 +- .../platform/graphics/qt/GraphicsContextQt.cpp | 3 +- .../platform/graphics/qt/GraphicsLayerQt.cpp | 44 +- .../WebCore/platform/graphics/qt/GraphicsLayerQt.h | 8 +- .../WebCore/platform/graphics/qt/ImageBufferData.h | 2 + .../WebCore/platform/graphics/qt/ImageBufferQt.cpp | 23 +- .../platform/graphics/qt/ImageDecoderQt.cpp | 10 +- .../platform/graphics/qt/MediaPlayerPrivateQt.cpp | 70 +- .../platform/graphics/qt/MediaPlayerPrivateQt.h | 7 +- Source/WebCore/platform/graphics/qt/PathQt.cpp | 22 +- Source/WebCore/platform/graphics/qt/TileQt.cpp | 8 +- .../graphics/skia/FontCustomPlatformData.cpp | 5 +- .../graphics/skia/FontCustomPlatformData.h | 5 +- .../graphics/skia/GlyphPageTreeNodeSkia.cpp | 2 +- .../platform/graphics/skia/GraphicsContextSkia.cpp | 13 +- .../platform/graphics/skia/ImageBufferSkia.cpp | 42 +- .../WebCore/platform/graphics/skia/ImageSkia.cpp | 1 + Source/WebCore/platform/graphics/skia/PathSkia.cpp | 2 +- .../platform/graphics/skia/PlatformContextSkia.cpp | 27 +- .../WebCore/platform/graphics/skia/SkiaFontWin.cpp | 7 +- .../graphics/texmap/GraphicsLayerTextureMapper.cpp | 9 +- .../graphics/texmap/GraphicsLayerTextureMapper.h | 1 - .../platform/graphics/texmap/TextureMapper.h | 4 +- .../platform/graphics/texmap/TextureMapperNode.h | 8 +- .../graphics/texmap/TextureMapperPlatformLayer.h | 8 +- .../transforms/TranslateTransformOperation.cpp | 9 +- .../WebCore/platform/graphics/win/FontCacheWin.cpp | 2 +- .../graphics/win/FontCustomPlatformData.cpp | 2 +- .../platform/graphics/win/FontCustomPlatformData.h | 4 +- .../graphics/win/FontCustomPlatformDataCairo.cpp | 5 +- .../graphics/win/FontCustomPlatformDataCairo.h | 2 +- .../graphics/win/FontPlatformDataCGWin.cpp | 33 +- .../graphics/win/FontPlatformDataCairoWin.cpp | 69 +- .../platform/graphics/win/FontPlatformDataWin.cpp | 19 +- Source/WebCore/platform/graphics/win/FontWin.cpp | 4 +- .../graphics/win/GraphicsContextCairoWin.cpp | 34 +- .../MediaPlayerPrivateQuickTimeVisualContext.cpp | 14 +- Source/WebCore/platform/graphics/win/QTMovie.cpp | 11 + Source/WebCore/platform/graphics/win/QTMovie.h | 1 + .../platform/graphics/win/SimpleFontDataCGWin.cpp | 10 +- .../platform/graphics/win/cairo/FontPlatformData.h | 114 - .../graphics/wince/FontCustomPlatformData.cpp | 2 +- .../graphics/wince/FontCustomPlatformData.h | 3 +- .../platform/graphics/wince/FontPlatformData.cpp | 2 +- .../platform/graphics/wince/FontPlatformData.h | 1 + .../WebCore/platform/graphics/wince/PathWinCE.cpp | 2 +- .../platform/graphics/wx/FontPlatformData.h | 1 + .../platform/graphics/wx/FontPlatformDataWx.cpp | 4 +- Source/WebCore/platform/graphics/wx/PathWx.cpp | 2 +- Source/WebCore/platform/gtk/FileSystemGtk.cpp | 8 +- .../WebCore/platform/gtk/LocalizedStringsGtk.cpp | 2 +- Source/WebCore/platform/gtk/RenderThemeGtk.cpp | 3 +- Source/WebCore/platform/gtk/RenderThemeGtk.h | 2 + Source/WebCore/platform/gtk/RenderThemeGtk2.cpp | 94 +- Source/WebCore/platform/gtk/RenderThemeGtk3.cpp | 4 +- Source/WebCore/platform/gtk/ScrollViewGtk.cpp | 5 +- Source/WebCore/platform/gtk/ScrollbarThemeGtk3.cpp | 36 +- Source/WebCore/platform/gtk/WidgetGtk.cpp | 7 - .../platform/gtk/WidgetRenderingContext.cpp | 3 +- Source/WebCore/platform/haiku/FileSystemHaiku.cpp | 4 +- .../platform/haiku/LocalizedStringsHaiku.cpp | 2 +- .../WebCore/platform/image-decoders/ImageDecoder.h | 2 +- .../image-decoders/png/PNGImageDecoder.cpp | 15 +- .../image-encoders/skia/JPEGImageEncoder.cpp | 49 +- .../image-encoders/skia/JPEGImageEncoder.h | 7 +- .../image-encoders/skia/PNGImageEncoder.cpp | 43 +- .../platform/image-encoders/skia/PNGImageEncoder.h | 5 +- Source/WebCore/platform/mac/FileSystemMac.mm | 13 +- Source/WebCore/platform/mac/HTMLConverter.h | 88 + Source/WebCore/platform/mac/HTMLConverter.mm | 1682 ++ Source/WebCore/platform/mac/LoggingMac.mm | 2 + Source/WebCore/platform/mac/PasteboardMac.mm | 29 +- Source/WebCore/platform/mac/PlatformScreenMac.mm | 13 +- Source/WebCore/platform/mac/SSLKeyGeneratorMac.cpp | 70 + Source/WebCore/platform/mac/SSLKeyGeneratorMac.mm | 49 - Source/WebCore/platform/mac/ScrollAnimatorMac.h | 17 +- Source/WebCore/platform/mac/ScrollAnimatorMac.mm | 161 +- Source/WebCore/platform/mac/ScrollbarThemeMac.h | 3 +- Source/WebCore/platform/mac/ScrollbarThemeMac.mm | 8 +- Source/WebCore/platform/mac/ThemeMac.mm | 5 + Source/WebCore/platform/mac/WebCoreKeyGenerator.h | 32 - Source/WebCore/platform/mac/WebCoreKeyGenerator.m | 63 - Source/WebCore/platform/mac/WebCoreObjCExtras.mm | 5 + .../WebCore/platform/mac/WebCoreSystemInterface.h | 15 +- .../WebCore/platform/mac/WebCoreSystemInterface.mm | 10 +- Source/WebCore/platform/mac/WidgetMac.mm | 11 +- .../platform/mock/GeolocationClientMock.cpp | 5 + .../WebCore/platform/mock/GeolocationClientMock.h | 1 + Source/WebCore/platform/network/BlobData.h | 4 +- .../WebCore/platform/network/FormDataBuilder.cpp | 6 +- Source/WebCore/platform/network/ProtectionSpace.h | 2 +- .../WebCore/platform/network/ProtectionSpaceHash.h | 2 +- .../WebCore/platform/network/ResourceErrorBase.cpp | 1 + .../WebCore/platform/network/ResourceErrorBase.h | 3 + .../platform/network/ResourceHandleClient.h | 7 +- .../WebCore/platform/network/ResourceRequestBase.h | 2 +- .../platform/network/cf/CookieStorageCFNet.cpp | 27 +- .../platform/network/cf/CookieStorageCFNet.h | 2 + .../WebCore/platform/network/cf/LoaderRunLoopCF.h | 2 +- Source/WebCore/platform/network/cf/ResourceError.h | 35 +- .../platform/network/cf/ResourceErrorCF.cpp | 106 +- .../platform/network/cf/ResourceRequestCFNet.h | 5 +- .../WebCore/platform/network/cf/ResourceResponse.h | 4 +- .../platform/network/cf/ResourceResponseCFNet.cpp | 9 +- .../platform/network/cf/SocketStreamHandle.h | 6 +- .../network/cf/SocketStreamHandleCFNet.cpp | 4 +- .../platform/network/mac/CookieStorageMac.mm | 7 +- .../platform/network/mac/FormDataStreamMac.mm | 4 +- .../platform/network/mac/ResourceErrorMac.mm | 34 +- .../platform/network/mac/ResourceHandleMac.mm | 30 +- .../platform/network/mac/WebCoreURLResponse.h | 11 +- .../platform/network/mac/WebCoreURLResponse.mm | 743 +- .../platform/network/qt/DnsPrefetchHelper.h | 23 +- .../network/qt/NetworkStateNotifierPrivate.h | 10 - .../platform/network/qt/NetworkStateNotifierQt.cpp | 4 - .../platform/network/qt/QNetworkReplyHandler.cpp | 512 +- .../platform/network/qt/QNetworkReplyHandler.h | 70 +- .../platform/network/qt/ResourceHandleQt.cpp | 12 +- .../platform/network/qt/ResourceRequestQt.cpp | 2 - .../platform/network/soup/ResourceHandleSoup.cpp | 5 +- .../platform/network/win/ResourceHandleWin.cpp | 10 +- Source/WebCore/platform/posix/FileSystemPOSIX.cpp | 37 +- Source/WebCore/platform/qt/CookieJarQt.cpp | 9 +- Source/WebCore/platform/qt/FileSystemQt.cpp | 8 +- Source/WebCore/platform/qt/LanguageQt.cpp | 2 +- Source/WebCore/platform/qt/PasteboardQt.cpp | 2 +- Source/WebCore/platform/qt/RenderThemeQt.cpp | 2 - Source/WebCore/platform/text/BidiContext.cpp | 50 +- Source/WebCore/platform/text/BidiContext.h | 25 +- Source/WebCore/platform/text/BidiResolver.h | 375 +- Source/WebCore/platform/text/LocalizedNumber.h | 4 +- .../WebCore/platform/text/LocalizedNumberICU.cpp | 4 +- .../WebCore/platform/text/LocalizedNumberNone.cpp | 2 +- Source/WebCore/platform/text/TextCheckerClient.h | 4 +- Source/WebCore/platform/text/TextChecking.h | 47 + Source/WebCore/platform/text/TextCodec.h | 2 +- Source/WebCore/platform/text/TextCodecICU.cpp | 7 - .../WebCore/platform/text/TextEncodingRegistry.cpp | 2 - Source/WebCore/platform/text/TextOrientation.h | 35 + .../platform/text/mac/LocalizedNumberMac.mm | 6 +- .../platform/text/qt/TextBreakIteratorQt.cpp | 3 +- .../WebCore/platform/win/ClipboardUtilitiesWin.cpp | 2 +- Source/WebCore/platform/win/CursorWin.cpp | 11 +- Source/WebCore/platform/win/FileSystemWin.cpp | 46 +- .../WebCore/platform/win/LocalizedStringsWin.cpp | 39 + Source/WebCore/platform/win/PathWalker.cpp | 51 + Source/WebCore/platform/win/PathWalker.h | 51 + Source/WebCore/platform/win/SSLKeyGeneratorWin.cpp | 1 + Source/WebCore/platform/win/ScrollbarThemeWin.cpp | 2 +- Source/WebCore/platform/win/SystemInfo.cpp | 149 +- Source/WebCore/platform/win/SystemInfo.h | 37 +- Source/WebCore/platform/wince/FileSystemWinCE.cpp | 29 +- Source/WebCore/platform/wx/FileSystemWx.cpp | 4 +- Source/WebCore/platform/wx/LocalizedStringsWx.cpp | 2 +- Source/WebCore/plugins/PluginPackage.cpp | 2 +- Source/WebCore/plugins/PluginStream.cpp | 10 +- Source/WebCore/plugins/PluginStream.h | 4 +- Source/WebCore/plugins/PluginViewNone.cpp | 1 + Source/WebCore/plugins/gtk/PluginViewGtk.cpp | 5 +- Source/WebCore/plugins/qt/PluginPackageQt.cpp | 2 +- Source/WebCore/plugins/qt/PluginViewQt.cpp | 2 +- Source/WebCore/plugins/win/PluginPackageWin.cpp | 5 +- Source/WebCore/plugins/win/PluginViewWin.cpp | 4 +- Source/WebCore/rendering/AutoTableLayout.cpp | 52 +- Source/WebCore/rendering/CounterNode.cpp | 99 +- Source/WebCore/rendering/CounterNode.h | 25 +- Source/WebCore/rendering/FixedTableLayout.cpp | 16 +- Source/WebCore/rendering/HitTestResult.cpp | 39 +- Source/WebCore/rendering/HitTestResult.h | 12 +- Source/WebCore/rendering/InlineBox.cpp | 5 +- Source/WebCore/rendering/InlineBox.h | 9 +- Source/WebCore/rendering/InlineFlowBox.cpp | 398 +- Source/WebCore/rendering/InlineFlowBox.h | 20 +- Source/WebCore/rendering/InlineIterator.h | 173 +- Source/WebCore/rendering/InlineTextBox.cpp | 79 +- Source/WebCore/rendering/InlineTextBox.h | 10 +- Source/WebCore/rendering/MediaControlElements.cpp | 182 +- Source/WebCore/rendering/MediaControlElements.h | 53 +- Source/WebCore/rendering/RenderBlock.cpp | 292 +- Source/WebCore/rendering/RenderBlock.h | 55 +- Source/WebCore/rendering/RenderBlockLineLayout.cpp | 602 +- Source/WebCore/rendering/RenderBox.cpp | 170 +- Source/WebCore/rendering/RenderBox.h | 7 +- Source/WebCore/rendering/RenderBoxModelObject.cpp | 7 +- Source/WebCore/rendering/RenderCombineText.cpp | 11 +- Source/WebCore/rendering/RenderCombineText.h | 6 +- Source/WebCore/rendering/RenderCounter.cpp | 72 +- Source/WebCore/rendering/RenderCounter.h | 14 +- Source/WebCore/rendering/RenderDataGrid.cpp | 14 + Source/WebCore/rendering/RenderDataGrid.h | 5 + Source/WebCore/rendering/RenderDetails.cpp | 302 +- Source/WebCore/rendering/RenderDetails.h | 55 +- Source/WebCore/rendering/RenderDetailsMarker.cpp | 177 +- Source/WebCore/rendering/RenderDetailsMarker.h | 37 +- Source/WebCore/rendering/RenderFlexibleBox.cpp | 26 +- Source/WebCore/rendering/RenderFullScreen.cpp | 2 +- Source/WebCore/rendering/RenderInline.cpp | 21 +- Source/WebCore/rendering/RenderInline.h | 4 +- Source/WebCore/rendering/RenderLayer.cpp | 111 +- Source/WebCore/rendering/RenderLayer.h | 46 +- Source/WebCore/rendering/RenderLayerBacking.cpp | 53 +- Source/WebCore/rendering/RenderLayerBacking.h | 3 - Source/WebCore/rendering/RenderLayerCompositor.cpp | 19 +- Source/WebCore/rendering/RenderLayerCompositor.h | 3 +- Source/WebCore/rendering/RenderListBox.cpp | 60 +- Source/WebCore/rendering/RenderListBox.h | 5 + Source/WebCore/rendering/RenderMedia.cpp | 2 - Source/WebCore/rendering/RenderMenuList.cpp | 1 + Source/WebCore/rendering/RenderObject.cpp | 40 +- Source/WebCore/rendering/RenderObject.h | 59 +- Source/WebCore/rendering/RenderObjectChildList.cpp | 25 - Source/WebCore/rendering/RenderObjectChildList.h | 1 - Source/WebCore/rendering/RenderRubyRun.cpp | 6 +- Source/WebCore/rendering/RenderSlider.cpp | 2 +- Source/WebCore/rendering/RenderSummary.cpp | 36 +- Source/WebCore/rendering/RenderSummary.h | 9 +- Source/WebCore/rendering/RenderTable.cpp | 27 +- Source/WebCore/rendering/RenderTable.h | 2 +- Source/WebCore/rendering/RenderTableCell.cpp | 19 +- Source/WebCore/rendering/RenderTableCell.h | 9 +- Source/WebCore/rendering/RenderTableRow.cpp | 11 + Source/WebCore/rendering/RenderTableRow.h | 1 + Source/WebCore/rendering/RenderTableSection.cpp | 14 +- Source/WebCore/rendering/RenderText.cpp | 24 +- Source/WebCore/rendering/RenderText.h | 2 + .../rendering/RenderTextControlSingleLine.cpp | 2 +- Source/WebCore/rendering/RenderTheme.cpp | 8 +- Source/WebCore/rendering/RenderTheme.h | 3 + .../WebCore/rendering/RenderThemeChromiumWin.cpp | 6 +- Source/WebCore/rendering/RenderThemeMac.h | 3 + Source/WebCore/rendering/RenderThemeMac.mm | 27 +- Source/WebCore/rendering/RenderThemeWin.cpp | 14 +- Source/WebCore/rendering/RenderTreeAsText.cpp | 36 +- Source/WebCore/rendering/RenderVideo.cpp | 2 + Source/WebCore/rendering/RenderWidget.cpp | 2 +- Source/WebCore/rendering/RootInlineBox.cpp | 282 +- Source/WebCore/rendering/RootInlineBox.h | 15 +- .../WebCore/rendering/mathml/RenderMathMLRoot.cpp | 5 +- Source/WebCore/rendering/style/BorderData.h | 8 +- Source/WebCore/rendering/style/FillLayer.cpp | 18 +- Source/WebCore/rendering/style/RenderStyle.cpp | 49 +- Source/WebCore/rendering/style/RenderStyle.h | 11 +- .../WebCore/rendering/style/RenderStyleConstants.h | 5 +- .../rendering/style/StyleRareInheritedData.cpp | 3 + .../rendering/style/StyleRareInheritedData.h | 1 + .../rendering/style/StyleRareNonInheritedData.h | 2 +- Source/WebCore/rendering/svg/RenderSVGAllInOne.cpp | 1 + Source/WebCore/rendering/svg/RenderSVGText.cpp | 7 +- Source/WebCore/rendering/svg/RenderSVGText.h | 8 +- Source/WebCore/rendering/svg/SVGInlineTextBox.cpp | 6 +- .../WebCore/rendering/svg/SVGRenderTreeAsText.cpp | 6 +- Source/WebCore/rendering/svg/SVGRootInlineBox.cpp | 102 +- Source/WebCore/rendering/svg/SVGRootInlineBox.h | 1 + .../rendering/svg/SVGShadowTreeElements.cpp | 4 + .../WebCore/rendering/svg/SVGShadowTreeElements.h | 1 + Source/WebCore/rendering/svg/SVGTextChunk.cpp | 24 +- Source/WebCore/rendering/svg/SVGTextChunk.h | 31 +- .../WebCore/rendering/svg/SVGTextChunkBuilder.cpp | 46 +- Source/WebCore/rendering/svg/SVGTextFragment.h | 8 +- .../rendering/svg/SVGTextLayoutAttributes.cpp | 5 +- .../rendering/svg/SVGTextLayoutAttributes.h | 7 +- .../svg/SVGTextLayoutAttributesBuilder.cpp | 31 +- .../rendering/svg/SVGTextLayoutAttributesBuilder.h | 2 +- .../WebCore/rendering/svg/SVGTextLayoutEngine.cpp | 237 +- Source/WebCore/rendering/svg/SVGTextLayoutEngine.h | 19 +- Source/WebCore/rendering/svg/SVGTextMetrics.cpp | 28 +- Source/WebCore/rendering/svg/SVGTextMetrics.h | 5 +- Source/WebCore/rendering/svg/SVGTextQuery.cpp | 10 +- Source/WebCore/storage/AbstractDatabase.h | 4 +- Source/WebCore/storage/DatabaseAuthorizer.h | 4 +- Source/WebCore/storage/DatabaseCallback.h | 4 +- Source/WebCore/storage/DatabaseThread.h | 2 +- Source/WebCore/storage/IDBBackingStore.cpp | 996 - Source/WebCore/storage/IDBBackingStore.h | 62 +- Source/WebCore/storage/IDBCallbacks.h | 4 +- Source/WebCore/storage/IDBCursorBackendInterface.h | 2 +- Source/WebCore/storage/IDBDatabase.cpp | 9 +- Source/WebCore/storage/IDBDatabase.h | 10 +- .../WebCore/storage/IDBDatabaseBackendInterface.h | 2 +- .../WebCore/storage/IDBDatabaseCallbacksImpl.cpp | 63 + Source/WebCore/storage/IDBDatabaseCallbacksImpl.h | 58 + Source/WebCore/storage/IDBFactory.cpp | 2 +- Source/WebCore/storage/IDBFactoryBackendImpl.cpp | 6 +- Source/WebCore/storage/IDBFactoryBackendImpl.h | 2 +- .../WebCore/storage/IDBFactoryBackendInterface.h | 9 +- Source/WebCore/storage/IDBIndexBackendInterface.h | 2 +- Source/WebCore/storage/IDBKey.h | 6 +- Source/WebCore/storage/IDBKeyRange.h | 2 +- .../storage/IDBObjectStoreBackendInterface.h | 2 +- Source/WebCore/storage/IDBRequest.cpp | 6 - Source/WebCore/storage/IDBRequest.h | 5 +- Source/WebCore/storage/IDBSQLiteBackingStore.cpp | 996 + Source/WebCore/storage/IDBSQLiteBackingStore.h | 82 + .../storage/IDBTransactionBackendInterface.h | 2 +- Source/WebCore/storage/LocalStorageTask.cpp | 34 + Source/WebCore/storage/LocalStorageTask.h | 12 +- Source/WebCore/storage/SQLCallbackWrapper.h | 108 + Source/WebCore/storage/SQLError.h | 4 +- Source/WebCore/storage/SQLResultSet.h | 4 +- Source/WebCore/storage/SQLStatement.cpp | 25 +- Source/WebCore/storage/SQLStatement.h | 15 +- Source/WebCore/storage/SQLStatementCallback.h | 4 +- Source/WebCore/storage/SQLStatementErrorCallback.h | 4 +- Source/WebCore/storage/SQLTransaction.cpp | 45 +- Source/WebCore/storage/SQLTransaction.h | 12 +- Source/WebCore/storage/SQLTransactionCallback.h | 4 +- .../WebCore/storage/SQLTransactionErrorCallback.h | 4 +- Source/WebCore/storage/StorageAreaImpl.cpp | 25 + Source/WebCore/storage/StorageAreaImpl.h | 5 + Source/WebCore/storage/StorageAreaSync.cpp | 51 +- Source/WebCore/storage/StorageAreaSync.h | 5 + Source/WebCore/storage/StorageNamespace.h | 6 + Source/WebCore/storage/StorageNamespaceImpl.cpp | 27 + Source/WebCore/storage/StorageNamespaceImpl.h | 11 + Source/WebCore/storage/StorageTracker.cpp | 539 + Source/WebCore/storage/StorageTracker.h | 117 + Source/WebCore/storage/StorageTrackerClient.h | 41 + Source/WebCore/svg/SVGAElement.cpp | 2 +- .../svg/SVGComponentTransferFunctionElement.cpp | 11 + .../svg/SVGComponentTransferFunctionElement.h | 1 + Source/WebCore/svg/SVGElement.cpp | 9 +- Source/WebCore/svg/SVGElementInstance.cpp | 18 +- Source/WebCore/svg/SVGElementInstance.h | 19 +- Source/WebCore/svg/SVGFEDisplacementMapElement.cpp | 18 +- Source/WebCore/svg/SVGTitleElement.cpp | 4 +- Source/WebCore/svg/SVGUseElement.cpp | 79 +- Source/WebCore/svg/SVGUseElement.h | 4 +- .../properties/SVGAnimatedPropertyDescription.h | 2 +- .../ThreadableWebSocketChannelClientWrapper.h | 2 +- Source/WebCore/websockets/WebSocket.cpp | 5 +- Source/WebCore/wml/WMLInputElement.cpp | 4 +- Source/WebCore/wml/WMLInputElement.h | 2 + .../workers/DefaultSharedWorkerRepository.cpp | 2 +- Source/WebCore/workers/WorkerContext.cpp | 50 + Source/WebCore/workers/WorkerContext.h | 6 +- Source/WebCore/workers/WorkerContext.idl | 4 + Source/WebCore/xml/XMLTreeViewer.cpp | 12 +- Source/WebCore/xml/XMLTreeViewer.h | 2 +- Source/WebCore/xml/XMLViewer.xsl | 13 +- Source/WebCore/xml/XPathResult.cpp | 2 + Source/WebCore/xml/XPathResult.h | 2 +- Source/WebKit.pri | 8 +- Source/WebKit/ChangeLog | 53 + Source/WebKit/English.lproj/Localizable.strings | Bin 54008 -> 37390 bytes Source/WebKit/WebKit.xcodeproj/project.pbxproj | 36 +- Source/WebKit/cf/ChangeLog | 12 + .../cf/WebCoreSupport/WebInspectorClientCF.cpp | 17 + Source/WebKit/chromium/ChangeLog | 1710 ++ Source/WebKit/chromium/DEPS | 2 +- Source/WebKit/chromium/WebKit.grd | 1 - Source/WebKit/chromium/WebKit.gyp | 151 +- Source/WebKit/chromium/features.gypi | 3 +- .../chromium/public/WebAccessibilityObject.h | 1 + .../WebKit/chromium/public/WebAccessibilityRole.h | 5 + .../chromium/public/WebApplicationCacheHost.h | 5 +- Source/WebKit/chromium/public/WebAudioDevice.h | 1 + Source/WebKit/chromium/public/WebBindings.h | 25 +- Source/WebKit/chromium/public/WebClipboard.h | 6 +- .../WebKit/chromium/public/WebCommonWorkerClient.h | 6 - Source/WebKit/chromium/public/WebConsoleMessage.h | 2 +- Source/WebKit/chromium/public/WebDOMMouseEvent.h | 8 +- Source/WebKit/chromium/public/WebDevToolsAgent.h | 17 - .../chromium/public/WebDevToolsAgentClient.h | 3 - Source/WebKit/chromium/public/WebDocument.h | 2 + Source/WebKit/chromium/public/WebElement.h | 1 + Source/WebKit/chromium/public/WebFileInfo.h | 4 + .../WebKit/chromium/public/WebFormControlElement.h | 1 + Source/WebKit/chromium/public/WebFrame.h | 17 +- .../chromium/public/WebGeolocationClientMock.h | 1 + Source/WebKit/chromium/public/WebIDBCallbacks.h | 2 +- Source/WebKit/chromium/public/WebIDBFactory.h | 12 +- Source/WebKit/chromium/public/WebInputElement.h | 2 - Source/WebKit/chromium/public/WebKitClient.h | 1 + .../WebKit/chromium/public/WebMediaPlayerClient.h | 1 + Source/WebKit/chromium/public/WebMenuItemInfo.h | 2 + Source/WebKit/chromium/public/WebNode.h | 1 + Source/WebKit/chromium/public/WebPageSerializer.h | 12 +- Source/WebKit/chromium/public/WebPlugin.h | 4 - Source/WebKit/chromium/public/WebPluginContainer.h | 4 + Source/WebKit/chromium/public/WebRuntimeFeatures.h | 6 +- Source/WebKit/chromium/public/WebSettings.h | 1 + .../WebKit/chromium/public/WebSpellCheckClient.h | 73 + .../chromium/public/WebTextCheckingCompletion.h | 2 +- .../WebKit/chromium/public/WebTextCheckingResult.h | 24 +- Source/WebKit/chromium/public/WebURL.h | 10 + Source/WebKit/chromium/public/WebURLLoader.h | 17 +- Source/WebKit/chromium/public/WebURLLoaderClient.h | 4 + Source/WebKit/chromium/public/WebVector.h | 11 +- Source/WebKit/chromium/public/WebView.h | 26 +- Source/WebKit/chromium/public/WebViewClient.h | 27 - Source/WebKit/chromium/public/gtk/WebFontInfo.h | 2 +- .../chromium/scripts/generate_devtools_grd.py | 121 + .../chromium/scripts/generate_devtools_html.py | 12 +- .../WebKit/chromium/src/ApplicationCacheHost.cpp | 5 +- Source/WebKit/chromium/src/AssertMatchingEnums.cpp | 10 + Source/WebKit/chromium/src/AssociatedURLLoader.cpp | 189 +- Source/WebKit/chromium/src/AssociatedURLLoader.h | 31 +- .../chromium/src/AudioDestinationChromium.cpp | 3 +- Source/WebKit/chromium/src/ChromeClientImpl.cpp | 2 +- Source/WebKit/chromium/src/ChromeClientImpl.h | 2 +- .../WebKit/chromium/src/DebuggerAgentManager.cpp | 4 +- Source/WebKit/chromium/src/EditorClientImpl.cpp | 24 +- .../WebKit/chromium/src/FrameLoaderClientImpl.cpp | 14 +- Source/WebKit/chromium/src/FrameLoaderClientImpl.h | 3 +- .../chromium/src/GraphicsContext3DChromium.cpp | 55 + .../chromium/src/GraphicsContext3DInternal.h | 6 + Source/WebKit/chromium/src/IDBCallbacksProxy.cpp | 6 - Source/WebKit/chromium/src/IDBCallbacksProxy.h | 1 - .../WebKit/chromium/src/IDBFactoryBackendProxy.cpp | 5 +- .../WebKit/chromium/src/IDBFactoryBackendProxy.h | 3 +- .../chromium/src/LocalFileSystemChromium.cpp | 31 +- Source/WebKit/chromium/src/LocalizedStrings.cpp | 2 +- .../chromium/src/PlatformMessagePortChannel.h | 2 +- Source/WebKit/chromium/src/ResourceHandle.cpp | 18 +- .../WebKit/chromium/src/StorageNamespaceProxy.cpp | 15 + Source/WebKit/chromium/src/StorageNamespaceProxy.h | 5 + .../WebKit/chromium/src/WebAccessibilityObject.cpp | 6 + Source/WebKit/chromium/src/WebBindings.cpp | 209 +- Source/WebKit/chromium/src/WebDOMMouseEvent.cpp | 16 +- Source/WebKit/chromium/src/WebDataSourceImpl.cpp | 2 +- .../WebKit/chromium/src/WebDevToolsAgentImpl.cpp | 83 +- Source/WebKit/chromium/src/WebDevToolsAgentImpl.h | 9 - Source/WebKit/chromium/src/WebDocument.cpp | 9 + Source/WebKit/chromium/src/WebElement.cpp | 5 + .../chromium/src/WebFileSystemCallbacksImpl.cpp | 1 + .../WebKit/chromium/src/WebFormControlElement.cpp | 5 + Source/WebKit/chromium/src/WebFrameImpl.cpp | 33 +- Source/WebKit/chromium/src/WebFrameImpl.h | 7 +- .../chromium/src/WebGeolocationClientMock.cpp | 5 + Source/WebKit/chromium/src/WebIDBCallbacksImpl.cpp | 7 - Source/WebKit/chromium/src/WebIDBCallbacksImpl.h | 1 - Source/WebKit/chromium/src/WebIDBFactoryImpl.cpp | 4 +- Source/WebKit/chromium/src/WebIDBFactoryImpl.h | 2 +- .../WebKit/chromium/src/WebIDBObjectStoreImpl.cpp | 1 + Source/WebKit/chromium/src/WebInputElement.cpp | 12 +- .../chromium/src/WebMediaPlayerClientImpl.cpp | 6 + .../WebKit/chromium/src/WebMediaPlayerClientImpl.h | 1 + Source/WebKit/chromium/src/WebNode.cpp | 7 +- Source/WebKit/chromium/src/WebPageSerializer.cpp | 177 +- .../WebKit/chromium/src/WebPluginContainerImpl.cpp | 27 +- .../WebKit/chromium/src/WebPluginContainerImpl.h | 1 + Source/WebKit/chromium/src/WebRuntimeFeatures.cpp | 32 +- Source/WebKit/chromium/src/WebSettingsImpl.cpp | 5 + Source/WebKit/chromium/src/WebSettingsImpl.h | 1 + .../chromium/src/WebTextCheckingCompletionImpl.cpp | 2 +- Source/WebKit/chromium/src/WebViewImpl.cpp | 345 +- Source/WebKit/chromium/src/WebViewImpl.h | 40 +- Source/WebKit/chromium/src/WebWorkerBase.cpp | 8 +- Source/WebKit/chromium/src/WebWorkerBase.h | 2 +- .../src/WorkerFileSystemCallbacksBridge.cpp | 28 +- .../chromium/src/WorkerFileSystemCallbacksBridge.h | 8 +- .../chromium/src/WorkerFileWriterCallbacksBridge.h | 4 +- Source/WebKit/chromium/src/js/DevTools.js | 1 - .../chromium/src/js/Images/segmentChromium.png | Bin 4272 -> 4276 bytes .../src/js/Images/segmentHoverChromium.png | Bin 4160 -> 4125 bytes .../src/js/Images/segmentHoverEndChromium.png | Bin 4143 -> 4112 bytes .../src/js/Images/segmentSelectedChromium.png | Bin 4113 -> 4071 bytes .../src/js/Images/segmentSelectedEndChromium.png | Bin 4104 -> 4070 bytes .../src/js/Images/statusbarBackgroundChromium.png | Bin 4116 -> 4235 bytes .../Images/statusbarBottomBackgroundChromium.png | Bin 4120 -> 4239 bytes .../src/js/Images/statusbarMenuButtonChromium.png | Bin 4654 -> 4570 bytes .../Images/statusbarMenuButtonSelectedChromium.png | Bin 4372 -> 4274 bytes Source/WebKit/chromium/tests/PopupMenuTest.cpp | 2 +- Source/WebKit/chromium/tests/TilingDataTest.cpp | 52 + Source/WebKit/chromium/tests/WebFrameTest.cpp | 4 +- .../chromium/tests/WebPageSerializerTest.cpp | 193 + .../tests/data/pageserialization/awesome.png | 1 + .../tests/data/pageserialization/embed_iframe.html | 5 + .../data/pageserialization/object_iframe.html | 5 + .../data/pageserialization/simple_iframe.html | 14 + .../tests/data/pageserialization/simple_page.html | 50 + .../tests/data/pageserialization/top_frame.html | 28 + Source/WebKit/efl/ChangeLog | 260 + Source/WebKit/efl/DefaultTheme/default.edc | 2 + .../widget/mediacontrol/mutebutton/mute_button.edc | 60 + .../widget/mediacontrol/mutebutton/mutebutton.png | Bin 0 -> 832 bytes .../mediacontrol/mutebutton/unmutebutton.png | Bin 0 -> 1182 bytes .../mediacontrol/playpausebutton/pausebutton.png | Bin 0 -> 2250 bytes .../mediacontrol/playpausebutton/playbutton.png | Bin 0 -> 2632 bytes .../playpausebutton/playpause_button.edc | 60 + .../WebKit/efl/WebCoreSupport/ChromeClientEfl.cpp | 7 + Source/WebKit/efl/WebCoreSupport/ChromeClientEfl.h | 2 +- .../efl/WebCoreSupport/FrameLoaderClientEfl.cpp | 65 +- .../efl/WebCoreSupport/FrameLoaderClientEfl.h | 4 +- Source/WebKit/efl/ewk/ewk_contextmenu.cpp | 203 +- Source/WebKit/efl/ewk/ewk_contextmenu.h | 37 +- Source/WebKit/efl/ewk/ewk_cookies.cpp | 4 +- Source/WebKit/efl/ewk/ewk_cookies.h | 6 +- Source/WebKit/efl/ewk/ewk_frame.cpp | 9 +- Source/WebKit/efl/ewk/ewk_history.cpp | 7 +- Source/WebKit/efl/ewk/ewk_main.cpp | 5 +- Source/WebKit/efl/ewk/ewk_private.h | 9 +- Source/WebKit/efl/ewk/ewk_settings.cpp | 67 +- Source/WebKit/efl/ewk/ewk_settings.h | 11 +- Source/WebKit/efl/ewk/ewk_view.cpp | 44 +- Source/WebKit/efl/ewk/ewk_view.h | 2 - Source/WebKit/efl/ewk/ewk_window_features.cpp | 67 +- Source/WebKit/efl/ewk/ewk_window_features.h | 6 + Source/WebKit/gtk/ChangeLog | 334 + Source/WebKit/gtk/GNUmakefile.am | 2 + Source/WebKit/gtk/NEWS | 51 + .../WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp | 8 +- Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.h | 2 +- .../WebCoreSupport/DumpRenderTreeSupportGtk.cpp | 40 +- .../gtk/WebCoreSupport/DumpRenderTreeSupportGtk.h | 3 +- .../gtk/WebCoreSupport/FrameLoaderClientGtk.cpp | 10 +- .../gtk/WebCoreSupport/FrameLoaderClientGtk.h | 4 +- .../WebCoreSupport/TextCheckerClientEnchant.cpp | 27 +- Source/WebKit/gtk/po/ChangeLog | 8 + Source/WebKit/gtk/po/it.po | 947 +- Source/WebKit/gtk/tests/testapplicationcache.c | 21 - Source/WebKit/gtk/tests/testatk.c | 23 +- Source/WebKit/gtk/tests/testdomdomwindow.c | 6 +- Source/WebKit/gtk/tests/testwebview.c | 5 +- Source/WebKit/gtk/webkit/webkit.h | 1 + .../WebKit/gtk/webkit/webkitapplicationcache.cpp | 28 +- Source/WebKit/gtk/webkit/webkitapplicationcache.h | 7 +- Source/WebKit/gtk/webkit/webkitdefines.h | 3 + Source/WebKit/gtk/webkit/webkitglobals.cpp | 45 +- Source/WebKit/gtk/webkit/webkitglobals.h | 3 + Source/WebKit/gtk/webkit/webkitglobalsprivate.h | 1 - Source/WebKit/gtk/webkit/webkiticondatabase.cpp | 317 + Source/WebKit/gtk/webkit/webkiticondatabase.h | 78 + .../WebKit/gtk/webkit/webkitviewportattributes.cpp | 2 +- Source/WebKit/gtk/webkit/webkitwebframe.cpp | 17 +- .../WebKit/gtk/webkit/webkitwebplugindatabase.cpp | 3 +- Source/WebKit/gtk/webkit/webkitwebsettings.cpp | 31 +- Source/WebKit/gtk/webkit/webkitwebview.cpp | 63 +- Source/WebKit/gtk/webkit/webkitwebview.h | 3 + Source/WebKit/haiku/ChangeLog | 55 + .../haiku/WebCoreSupport/EditorClientHaiku.cpp | 2 +- .../WebCoreSupport/FrameLoaderClientHaiku.cpp | 4 +- .../haiku/WebCoreSupport/FrameLoaderClientHaiku.h | 4 +- Source/WebKit/mac/Carbon/CarbonWindowAdapter.mm | 4 +- Source/WebKit/mac/ChangeLog | 788 + Source/WebKit/mac/Configurations/Base.xcconfig | 14 +- Source/WebKit/mac/Configurations/Version.xcconfig | 2 +- Source/WebKit/mac/DOM/WebDOMOperations.mm | 5 + Source/WebKit/mac/DOM/WebDOMOperationsPrivate.h | 1 + .../WebDefaultContextMenuDelegate.mm | 27 +- Source/WebKit/mac/History/WebHistoryItem.mm | 6 - Source/WebKit/mac/Misc/WebIconDatabase.mm | 14 +- Source/WebKit/mac/Misc/WebNSControlExtras.m | 10 +- Source/WebKit/mac/Misc/WebNSPasteboardExtras.mm | 5 - Source/WebKit/mac/Plugins/Hosted/ProxyInstance.mm | 4 +- .../WebKit/mac/Plugins/Hosted/ProxyRuntimeObject.h | 4 +- Source/WebKit/mac/Plugins/WebBasePluginPackage.mm | 12 +- .../WebKit/mac/Plugins/WebPluginContainerPrivate.h | 2 +- Source/WebKit/mac/Storage/WebStorageManager.mm | 113 + .../WebKit/mac/Storage/WebStorageManagerInternal.h | 30 + .../WebKit/mac/Storage/WebStorageManagerPrivate.h | 45 + .../WebKit/mac/Storage/WebStorageTrackerClient.h | 45 + .../WebKit/mac/Storage/WebStorageTrackerClient.mm | 82 + Source/WebKit/mac/WebCoreSupport/CorrectionPanel.h | 60 + .../WebKit/mac/WebCoreSupport/CorrectionPanel.mm | 157 + .../mac/WebCoreSupport/WebApplicationCache.h | 5 + .../mac/WebCoreSupport/WebApplicationCache.mm | 26 + Source/WebKit/mac/WebCoreSupport/WebChromeClient.h | 4 +- .../WebKit/mac/WebCoreSupport/WebChromeClient.mm | 52 +- Source/WebKit/mac/WebCoreSupport/WebEditorClient.h | 14 +- .../WebKit/mac/WebCoreSupport/WebEditorClient.mm | 72 +- .../mac/WebCoreSupport/WebFrameLoaderClient.h | 4 +- .../mac/WebCoreSupport/WebFrameLoaderClient.mm | 23 +- .../mac/WebCoreSupport/WebIconDatabaseClient.h | 7 +- .../mac/WebCoreSupport/WebIconDatabaseClient.mm | 19 +- .../WebKit/mac/WebCoreSupport/WebInspectorClient.h | 10 + .../mac/WebCoreSupport/WebInspectorClient.mm | 28 +- Source/WebKit/mac/WebCoreSupport/WebKeyGenerator.h | 46 +- Source/WebKit/mac/WebCoreSupport/WebKeyGenerator.m | 104 - .../WebKit/mac/WebCoreSupport/WebKeyGenerator.mm | 61 + .../mac/WebCoreSupport/WebPlatformStrategies.h | 6 +- .../mac/WebCoreSupport/WebPlatformStrategies.mm | 26 +- .../WebKit/mac/WebCoreSupport/WebSecurityOrigin.mm | 15 +- .../mac/WebCoreSupport/WebSecurityOriginPrivate.h | 6 +- .../mac/WebCoreSupport/WebSystemInterface.mm | 10 +- Source/WebKit/mac/WebKit.exp | 3 + Source/WebKit/mac/WebKitPrefix.h | 14 +- Source/WebKit/mac/WebView/WebClipView.mm | 17 + Source/WebKit/mac/WebView/WebFrame.mm | 91 +- Source/WebKit/mac/WebView/WebFrameInternal.h | 1 - Source/WebKit/mac/WebView/WebFramePrivate.h | 9 +- Source/WebKit/mac/WebView/WebFrameView.mm | 1 - .../WebKit/mac/WebView/WebFullScreenController.h | 2 +- .../WebKit/mac/WebView/WebFullScreenController.mm | 2 +- Source/WebKit/mac/WebView/WebHTMLRepresentation.h | 1 + Source/WebKit/mac/WebView/WebHTMLRepresentation.mm | 6 + Source/WebKit/mac/WebView/WebHTMLView.mm | 325 +- Source/WebKit/mac/WebView/WebHTMLViewInternal.h | 2 +- .../WebKit/mac/WebView/WebPreferenceKeysPrivate.h | 2 + Source/WebKit/mac/WebView/WebPreferences.mm | 35 +- Source/WebKit/mac/WebView/WebPreferencesPrivate.h | 5 + .../WebKit/mac/WebView/WebScriptDebugDelegate.mm | 2 +- Source/WebKit/mac/WebView/WebView.mm | 60 +- Source/WebKit/mac/WebView/WebViewData.h | 3 + Source/WebKit/mac/WebView/WebViewData.mm | 4 + Source/WebKit/mac/WebView/WebViewInternal.h | 3 +- Source/WebKit/mac/WebView/WebViewPrivate.h | 10 +- Source/WebKit/qt/Api/DerivedSources.pro | 1 - Source/WebKit/qt/Api/qgraphicswebview.cpp | 67 +- Source/WebKit/qt/Api/qgraphicswebview.h | 7 + Source/WebKit/qt/Api/qwebframe.cpp | 25 +- Source/WebKit/qt/Api/qwebhistory.cpp | 7 +- Source/WebKit/qt/Api/qwebhistoryinterface.cpp | 4 +- Source/WebKit/qt/Api/qwebkitplatformplugin.h | 5 + Source/WebKit/qt/Api/qwebkitversion.cpp | 2 +- Source/WebKit/qt/Api/qwebpage.cpp | 71 +- Source/WebKit/qt/Api/qwebsettings.cpp | 23 +- Source/WebKit/qt/ChangeLog | 713 + Source/WebKit/qt/QtWebKit.pro | 19 + Source/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp | 7 +- Source/WebKit/qt/WebCoreSupport/ChromeClientQt.h | 2 +- .../qt/WebCoreSupport/DumpRenderTreeSupportQt.cpp | 30 +- .../qt/WebCoreSupport/DumpRenderTreeSupportQt.h | 1 + Source/WebKit/qt/WebCoreSupport/EditorClientQt.cpp | 24 +- .../qt/WebCoreSupport/FrameLoaderClientQt.cpp | 64 +- .../WebKit/qt/WebCoreSupport/FrameLoaderClientQt.h | 10 +- .../qt/WebCoreSupport/FullScreenVideoWidget.cpp | 2 + .../qt/WebCoreSupport/GeolocationClientQt.cpp | 7 +- .../qt/WebCoreSupport/IconDatabaseClientQt.cpp | 83 + .../qt/WebCoreSupport/IconDatabaseClientQt.h | 58 + .../WebKit/qt/WebCoreSupport/InspectorClientQt.cpp | 24 +- .../WebKit/qt/WebCoreSupport/InspectorServerQt.cpp | 37 +- Source/WebKit/qt/WebCoreSupport/PopupMenuQt.cpp | 6 + .../qt/WebCoreSupport/QtFallbackWebPopup.cpp | 13 + .../qt/WebCoreSupport/WebPlatformStrategies.cpp | 2 +- .../qt/WebCoreSupport/WebPlatformStrategies.h | 2 +- Source/WebKit/qt/declarative/plugin.cpp | 5 + .../WebKit/qt/declarative/qdeclarativewebview.cpp | 27 +- .../WebKit/qt/declarative/qdeclarativewebview_p.h | 11 + .../qt/tests/benchmarks/webgl/10000_triangles.html | 59 + .../WebKit/qt/tests/benchmarks/webgl/tst_webgl.cpp | 130 + .../WebKit/qt/tests/benchmarks/webgl/tst_webgl.qrc | 5 + Source/WebKit/qt/tests/benchmarks/webgl/webgl.pro | 4 + .../resources/webviewbackgroundcolor.qml | 10 + .../tst_qdeclarativewebview.cpp | 34 + .../tst_qdeclarativewebview.qrc | 1 + .../qt/tests/qgraphicswebview/qgraphicswebview.pro | 3 + .../qgraphicswebview/resources/pointing_right.html | 45 + .../qgraphicswebview/resources/pointing_up.html | 46 + .../qgraphicswebview/tst_qgraphicswebview.cpp | 157 +- .../qgraphicswebview/tst_qgraphicswebview.qrc | 11 +- Source/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp | 146 + Source/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp | 104 + Source/WebKit/qt/tests/qwebview/tst_qwebview.cpp | 62 +- Source/WebKit/qt/tests/tests.pri | 2 + Source/WebKit/qt/tests/tests.pro | 3 + Source/WebKit/win/AccessibleBase.h | 3 +- Source/WebKit/win/AccessibleDocument.h | 7 +- Source/WebKit/win/CFDictionaryPropertyBag.h | 1 + Source/WebKit/win/COMPropertyBag.h | 469 +- Source/WebKit/win/COMVariantSetter.h | 388 +- Source/WebKit/win/ChangeLog | 440 + Source/WebKit/win/DOMCSSClasses.cpp | 2 - Source/WebKit/win/DOMCoreClasses.cpp | 2 - Source/WebKit/win/DOMCreateInstance.cpp | 357 - Source/WebKit/win/DOMCreateInstance.h | 38 - Source/WebKit/win/DOMEventsClasses.cpp | 2 - Source/WebKit/win/DOMHTMLClasses.cpp | 2 - Source/WebKit/win/DOMHTMLClasses.h | 4 +- Source/WebKit/win/DefaultDownloadDelegate.cpp | 15 +- Source/WebKit/win/DefaultDownloadDelegate.h | 1 - Source/WebKit/win/DefaultPolicyDelegate.cpp | 5 +- Source/WebKit/win/DefaultPolicyDelegate.h | 1 - Source/WebKit/win/GEN_DOMObject.cpp | 79 - Source/WebKit/win/GEN_DOMObject.h | 48 - Source/WebKit/win/MarshallingHelpers.cpp | 2 - Source/WebKit/win/WebActionPropertyBag.cpp | 5 +- Source/WebKit/win/WebActionPropertyBag.h | 3 - Source/WebKit/win/WebCache.cpp | 3 - Source/WebKit/win/WebCoreStatistics.cpp | 1 + Source/WebKit/win/WebCoreSupport/EmbeddedWidget.h | 1 + .../WebKit/win/WebCoreSupport/WebChromeClient.cpp | 18 +- .../win/WebCoreSupport/WebContextMenuClient.cpp | 2 - Source/WebKit/win/WebCoreSupport/WebDragClient.cpp | 2 - .../WebKit/win/WebCoreSupport/WebEditorClient.cpp | 2 - Source/WebKit/win/WebCoreSupport/WebEditorClient.h | 2 - .../win/WebCoreSupport/WebFrameLoaderClient.cpp | 2 - .../win/WebCoreSupport/WebFrameLoaderClient.h | 3 +- .../win/WebCoreSupport/WebInspectorClient.cpp | 14 +- .../WebKit/win/WebCoreSupport/WebInspectorClient.h | 10 + .../win/WebCoreSupport/WebInspectorDelegate.h | 666 +- .../win/WebCoreSupport/WebPlatformStrategies.cpp | 2 +- .../win/WebCoreSupport/WebPlatformStrategies.h | 2 +- Source/WebKit/win/WebDataSource.h | 4 +- Source/WebKit/win/WebDatabaseManager.h | 3 +- Source/WebKit/win/WebDocumentLoader.h | 3 - Source/WebKit/win/WebDownload.cpp | 2 - Source/WebKit/win/WebDownloadCFNet.cpp | 2 - Source/WebKit/win/WebDownloadCurl.cpp | 2 - Source/WebKit/win/WebElementPropertyBag.cpp | 2 - Source/WebKit/win/WebElementPropertyBag.h | 5 +- Source/WebKit/win/WebError.cpp | 4 +- Source/WebKit/win/WebError.h | 4 - Source/WebKit/win/WebFrame.cpp | 42 +- Source/WebKit/win/WebFrame.h | 11 +- Source/WebKit/win/WebFramePolicyListener.cpp | 3 - Source/WebKit/win/WebFramePolicyListener.h | 7 +- Source/WebKit/win/WebGeolocationPolicyListener.h | 6 +- Source/WebKit/win/WebHistory.cpp | 2 - Source/WebKit/win/WebHistory.h | 3 +- Source/WebKit/win/WebHistoryItem.cpp | 4 - Source/WebKit/win/WebIconDatabase.cpp | 41 +- Source/WebKit/win/WebIconDatabase.h | 11 +- Source/WebKit/win/WebInspector.cpp | 2 - Source/WebKit/win/WebJavaScriptCollector.cpp | 2 - Source/WebKit/win/WebKit.vcproj/Interfaces.vcproj | 180 +- .../win/WebKit.vcproj/InterfacesDebug.vsprops | 12 + .../win/WebKit.vcproj/InterfacesDebugAll.vsprops | 12 + .../InterfacesDebugCairoCFLite.vsprops | 13 + .../win/WebKit.vcproj/InterfacesProduction.vsprops | 13 + .../win/WebKit.vcproj/InterfacesRelease.vsprops | 12 + .../InterfacesReleaseCairoCFLite.vsprops | 13 + Source/WebKit/win/WebKit.vcproj/WebKit.make | 3 +- Source/WebKit/win/WebKit.vcproj/WebKit.sln | 118 +- Source/WebKit/win/WebKit.vcproj/WebKit.submit.sln | 14 +- Source/WebKit/win/WebKit.vcproj/WebKit.vcproj | 22 +- Source/WebKit/win/WebKit.vcproj/WebKitGUID.vcproj | 14 +- .../win/WebKit.vcproj/WebKitGUIDDebug.vsprops | 12 + .../win/WebKit.vcproj/WebKitGUIDDebugAll.vsprops | 13 + .../WebKitGUIDDebugCairoCFLite.vsprops | 13 + .../win/WebKit.vcproj/WebKitGUIDProduction.vsprops | 13 + .../win/WebKit.vcproj/WebKitGUIDRelease.vsprops | 12 + .../WebKitGUIDReleaseCairoCFLite.vsprops | 13 + .../win/WebKit.vcproj/WebKitLibDebug.vsprops | 12 + .../win/WebKit.vcproj/WebKitLibDebugAll.vsprops | 13 + .../WebKitLibDebugCairoCFLite.vsprops | 15 + .../win/WebKit.vcproj/WebKitLibProduction.vsprops | 13 + .../win/WebKit.vcproj/WebKitLibRelease.vsprops | 12 + .../WebKitLibReleaseCairoCFLite.vsprops | 15 + Source/WebKit/win/WebKitCOMAPI.h | 2 + Source/WebKit/win/WebKitClassFactory.h | 2 + Source/WebKit/win/WebKitDLL.cpp | 4 +- Source/WebKit/win/WebKitGraphics.cpp | 2 - Source/WebKit/win/WebKitSystemBits.cpp | 5 +- Source/WebKit/win/WebLocalizableStrings.cpp | 2 - Source/WebKit/win/WebMutableURLRequest.cpp | 29 +- Source/WebKit/win/WebMutableURLRequest.h | 2 - Source/WebKit/win/WebNodeHighlight.cpp | 2 - Source/WebKit/win/WebNodeHighlight.h | 3 - Source/WebKit/win/WebNotificationCenter.cpp | 4 +- Source/WebKit/win/WebPreferences.cpp | 6 +- Source/WebKit/win/WebResource.cpp | 3 - Source/WebKit/win/WebResource.h | 3 - Source/WebKit/win/WebScriptWorld.h | 1 + Source/WebKit/win/WebScrollBar.cpp | 3 +- Source/WebKit/win/WebScrollBar.h | 2 - Source/WebKit/win/WebSerializedJSValue.h | 1 + .../WebKit/win/WebURLAuthenticationChallenge.cpp | 3 - Source/WebKit/win/WebURLAuthenticationChallenge.h | 3 - .../win/WebURLAuthenticationChallengeSender.cpp | 3 - .../WebURLAuthenticationChallengeSenderCFNet.cpp | 3 - .../WebURLAuthenticationChallengeSenderCurl.cpp | 3 - Source/WebKit/win/WebURLCredential.cpp | 2 - Source/WebKit/win/WebURLCredential.h | 3 - Source/WebKit/win/WebURLProtectionSpace.cpp | 2 - Source/WebKit/win/WebURLProtectionSpace.h | 3 - Source/WebKit/win/WebURLResponse.cpp | 20 +- Source/WebKit/win/WebURLResponse.h | 3 - Source/WebKit/win/WebUserContentURLPattern.h | 1 + Source/WebKit/win/WebView.cpp | 67 +- Source/WebKit/wince/CMakeListsWinCE.txt | 1 + Source/WebKit/wince/ChangeLog | 58 + .../WebCoreSupport/FrameLoaderClientWinCE.cpp | 17 +- .../wince/WebCoreSupport/FrameLoaderClientWinCE.h | 3 +- .../WebCoreSupport/PlatformStrategiesWinCE.cpp | 2 +- .../wince/WebCoreSupport/PlatformStrategiesWinCE.h | 2 +- Source/WebKit/wx/ChangeLog | 77 + Source/WebKit/wx/WebFrame.cpp | 8 +- .../wx/WebKitSupport/FrameLoaderClientWx.cpp | 3 +- .../WebKit/wx/WebKitSupport/FrameLoaderClientWx.h | 3 +- Source/WebKit/wx/WebView.cpp | 3 +- Source/WebKit/wx/bindings/python/webview.i | 1 + Source/WebKit2/ChangeLog | 4868 +++++ Source/WebKit2/Configurations/Base.xcconfig | 14 +- .../WebKit2/Configurations/PluginProcess.xcconfig | 29 + .../Configurations/PluginProcessShim.xcconfig | 4 +- Source/WebKit2/Configurations/Version.xcconfig | 2 +- Source/WebKit2/DerivedSources.make | 9 + Source/WebKit2/DerivedSources.pro | 9 + Source/WebKit2/GNUmakefile.am | 53 +- .../WebKit2/Platform/CoreIPC/ArgumentDecoder.cpp | 14 +- .../WebKit2/Platform/CoreIPC/ArgumentEncoder.cpp | 14 +- Source/WebKit2/Platform/CoreIPC/Connection.cpp | 139 +- Source/WebKit2/Platform/CoreIPC/Connection.h | 14 +- Source/WebKit2/Platform/CoreIPC/MessageID.h | 6 + Source/WebKit2/Platform/Logging.cpp | 12 +- Source/WebKit2/Platform/Logging.h | 10 +- Source/WebKit2/Platform/Module.cpp | 3 + Source/WebKit2/Platform/Module.h | 7 + Source/WebKit2/Platform/WorkQueue.h | 2 +- Source/WebKit2/Platform/cg/CGUtilities.cpp | 34 +- Source/WebKit2/Platform/cg/CGUtilities.h | 1 + Source/WebKit2/Platform/mac/Logging.mac.mm | 49 + Source/WebKit2/Platform/mac/ModuleMac.mm | 17 + Source/WebKit2/Platform/mac/RunLoopMac.mm | 19 +- Source/WebKit2/Platform/qt/SharedMemoryQt.cpp | 2 +- Source/WebKit2/Platform/win/WorkQueueWin.cpp | 2 +- Source/WebKit2/PluginProcess/Info.plist | 30 + .../PluginProcess/PluginControllerProxy.cpp | 42 +- .../WebKit2/PluginProcess/PluginControllerProxy.h | 6 +- .../PluginControllerProxy.messages.in | 4 +- Source/WebKit2/PluginProcess/PluginProcess.cpp | 15 + Source/WebKit2/PluginProcess/PluginProcess.h | 3 + .../WebKit2/PluginProcess/WebProcessConnection.cpp | 18 +- .../WebKit2/PluginProcess/WebProcessConnection.h | 2 +- .../WebKit2/PluginProcess/mac/PluginProcessMac.mm | 133 +- .../PluginProcess/mac/PluginProcessShim.cpp | 76 - .../WebKit2/PluginProcess/mac/PluginProcessShim.h | 7 + .../WebKit2/PluginProcess/mac/PluginProcessShim.mm | 190 + .../WebKit2/Scripts/generate-forwarding-headers.pl | 2 +- Source/WebKit2/Scripts/webkit2/messages.py | 50 +- .../WebKit2/Scripts/webkit2/messages_unittest.py | 18 +- Source/WebKit2/Shared/API/c/WKBase.h | 2 + .../WebKit2/Shared/API/c/WKMutableDictionary.cpp | 5 + Source/WebKit2/Shared/API/c/WKMutableDictionary.h | 1 + Source/WebKit2/Shared/API/c/WKString.cpp | 5 + Source/WebKit2/Shared/API/c/WKString.h | 1 + Source/WebKit2/Shared/API/c/WKURL.cpp | 10 + Source/WebKit2/Shared/API/c/WKURL.h | 4 +- Source/WebKit2/Shared/API/c/cf/WKErrorCF.cpp | 45 + Source/WebKit2/Shared/API/c/cf/WKErrorCF.h | 43 + Source/WebKit2/Shared/API/c/cf/WKURLResponseCF.cpp | 10 + Source/WebKit2/Shared/API/c/cg/WKImageCG.cpp | 12 +- Source/WebKit2/Shared/API/c/cg/WKImageCG.h | 3 + .../Shared/API/c/mac/WKCertificateInfoMac.h | 1 + .../Shared/API/c/mac/WKCertificateInfoMac.mm | 6 + Source/WebKit2/Shared/API/c/win/WKBaseWin.h | 1 + .../Shared/API/c/win/WKCertificateInfoWin.cpp | 5 + .../Shared/API/c/win/WKCertificateInfoWin.h | 1 + Source/WebKit2/Shared/APIObject.h | 6 +- Source/WebKit2/Shared/DictionaryPopupInfo.cpp | 12 + Source/WebKit2/Shared/DictionaryPopupInfo.h | 7 + Source/WebKit2/Shared/HTTPCookieAcceptPolicy.h | 40 + Source/WebKit2/Shared/LayerTreeContext.h | 4 +- Source/WebKit2/Shared/MutableDictionary.cpp | 5 + Source/WebKit2/Shared/MutableDictionary.h | 1 + Source/WebKit2/Shared/PlatformPopupMenuData.cpp | 15 +- Source/WebKit2/Shared/PlatformPopupMenuData.h | 1 - Source/WebKit2/Shared/Plugins/NPIdentifierData.h | 2 +- .../Shared/Plugins/NPObjectMessageReceiver.cpp | 34 +- .../Shared/Plugins/NPObjectMessageReceiver.h | 8 +- Source/WebKit2/Shared/Plugins/NPObjectProxy.cpp | 28 +- Source/WebKit2/Shared/Plugins/NPObjectProxy.h | 9 +- .../WebKit2/Shared/Plugins/NPRemoteObjectMap.cpp | 57 +- Source/WebKit2/Shared/Plugins/NPRemoteObjectMap.h | 16 +- .../Plugins/Netscape/NetscapePluginModule.cpp | 27 +- .../Shared/Plugins/Netscape/NetscapePluginModule.h | 9 +- .../Netscape/mac/NetscapePluginModuleMac.mm | 61 +- .../Netscape/x11/NetscapePluginModuleX11.cpp | 2 +- Source/WebKit2/Shared/Plugins/PluginQuirks.h | 17 + Source/WebKit2/Shared/ResourceCachesToClear.h | 38 + Source/WebKit2/Shared/ShareableBitmap.cpp | 56 +- Source/WebKit2/Shared/ShareableBitmap.h | 62 +- Source/WebKit2/Shared/UpdateInfo.h | 4 +- Source/WebKit2/Shared/UserMessageCoders.h | 41 +- Source/WebKit2/Shared/WebCoreArgumentCoders.cpp | 12 +- Source/WebKit2/Shared/WebCoreArgumentCoders.h | 16 +- Source/WebKit2/Shared/WebData.h | 50 +- Source/WebKit2/Shared/WebImage.cpp | 4 +- Source/WebKit2/Shared/WebMemorySampler.cpp | 2 +- .../WebKit2/Shared/WebPageCreationParameters.cpp | 3 + Source/WebKit2/Shared/WebPageCreationParameters.h | 2 + Source/WebKit2/Shared/WebPreferencesStore.cpp | 11 + Source/WebKit2/Shared/WebPreferencesStore.h | 6 + .../Shared/WebProcessCreationParameters.cpp | 9 + .../WebKit2/Shared/WebProcessCreationParameters.h | 5 + Source/WebKit2/Shared/WebString.h | 1 + Source/WebKit2/Shared/WebURL.h | 23 + Source/WebKit2/Shared/cf/ArgumentCodersCF.cpp | 40 +- Source/WebKit2/Shared/cf/ArgumentCodersCF.h | 10 + Source/WebKit2/Shared/cg/ShareableBitmapCG.cpp | 44 +- .../WebKit2/Shared/cg/WebCoreArgumentCodersCG.cpp | 2 +- .../Shared/gtk/WebCoreArgumentCodersGtk.cpp | 29 +- Source/WebKit2/Shared/gtk/WebEventFactory.cpp | 3 +- .../WebKit2/Shared/mac/PlatformCertificateInfo.h | 1 + .../WebKit2/Shared/mac/PlatformCertificateInfo.mm | 41 +- .../WebKit2/Shared/mac/WebCoreArgumentCodersMac.mm | 106 +- Source/WebKit2/Shared/mac/WebEventFactory.mm | 15 + .../WebKit2/Shared/qt/WebCoreArgumentCodersQt.cpp | 17 + .../WebKit2/Shared/win/PlatformCertificateInfo.cpp | 21 +- .../WebKit2/Shared/win/PlatformCertificateInfo.h | 1 + .../Shared/win/WebCoreArgumentCodersWin.cpp | 37 + Source/WebKit2/UIProcess/API/C/WKAPICast.h | 51 + Source/WebKit2/UIProcess/API/C/WKContext.cpp | 24 +- Source/WebKit2/UIProcess/API/C/WKContext.h | 12 +- Source/WebKit2/UIProcess/API/C/WKContextPrivate.h | 7 +- Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp | 10 + Source/WebKit2/UIProcess/API/C/WKCookieManager.h | 11 + Source/WebKit2/UIProcess/API/C/WKIconDatabase.cpp | 52 + Source/WebKit2/UIProcess/API/C/WKIconDatabase.h | 45 + .../UIProcess/API/C/WKMediaCacheManager.cpp | 52 + .../WebKit2/UIProcess/API/C/WKMediaCacheManager.h | 47 + Source/WebKit2/UIProcess/API/C/WKPage.cpp | 2 +- Source/WebKit2/UIProcess/API/C/WKPage.h | 2 + Source/WebKit2/UIProcess/API/C/WKPreferences.cpp | 50 + Source/WebKit2/UIProcess/API/C/WKPreferences.h | 5 + .../WebKit2/UIProcess/API/C/WKPreferencesPrivate.h | 16 + .../UIProcess/API/C/cg/WKIconDatabaseCG.cpp | 41 + .../WebKit2/UIProcess/API/C/cg/WKIconDatabaseCG.h | 42 + Source/WebKit2/UIProcess/API/C/win/WKAPICastWin.h | 2 + Source/WebKit2/UIProcess/API/C/win/WKBaseWin.h | 35 - .../UIProcess/API/C/win/WKContextPrivateWin.h | 4 + .../WebKit2/UIProcess/API/C/win/WKContextWin.cpp | 5 + Source/WebKit2/UIProcess/API/C/win/WKView.cpp | 22 + Source/WebKit2/UIProcess/API/C/win/WKView.h | 24 + .../WebKit2/UIProcess/API/mac/PDFViewController.h | 6 + .../WebKit2/UIProcess/API/mac/PDFViewController.mm | 46 +- Source/WebKit2/UIProcess/API/mac/PageClientImpl.h | 18 +- Source/WebKit2/UIProcess/API/mac/PageClientImpl.mm | 98 +- Source/WebKit2/UIProcess/API/mac/WKPrintingView.h | 3 +- Source/WebKit2/UIProcess/API/mac/WKPrintingView.mm | 49 +- Source/WebKit2/UIProcess/API/mac/WKView.mm | 248 +- Source/WebKit2/UIProcess/API/mac/WKViewInternal.h | 15 +- Source/WebKit2/UIProcess/API/mac/WKViewPrivate.h | 2 + Source/WebKit2/UIProcess/API/qt/qwkpage.cpp | 14 +- Source/WebKit2/UIProcess/API/qt/qwkpage_p.h | 7 +- .../tests/qgraphicswkview/tst_qgraphicswkview.cpp | 14 +- .../UIProcess/API/qt/tests/qwkpage/qwkpage.pro | 1 + .../UIProcess/API/qt/tests/qwkpage/tst_qwkpage.cpp | 59 + Source/WebKit2/UIProcess/API/qt/tests/tests.pri | 2 +- Source/WebKit2/UIProcess/API/qt/tests/tests.pro | 2 +- .../AuthenticationChallengeProxy.cpp | 14 +- .../Authentication/AuthenticationChallengeProxy.h | 10 +- Source/WebKit2/UIProcess/BackingStore.cpp | 3 +- .../WebKit2/UIProcess/Downloads/DownloadProxy.cpp | 10 + Source/WebKit2/UIProcess/Downloads/DownloadProxy.h | 2 + .../UIProcess/Downloads/DownloadProxy.messages.in | 2 + Source/WebKit2/UIProcess/DrawingAreaProxy.h | 1 + .../WebKit2/UIProcess/DrawingAreaProxy.messages.in | 3 +- Source/WebKit2/UIProcess/DrawingAreaProxyImpl.cpp | 14 + Source/WebKit2/UIProcess/DrawingAreaProxyImpl.h | 8 +- Source/WebKit2/UIProcess/FindIndicator.cpp | 5 +- Source/WebKit2/UIProcess/FindIndicator.h | 6 +- .../WebKit2/UIProcess/Launcher/ProcessLauncher.h | 2 +- Source/WebKit2/UIProcess/Launcher/ThreadLauncher.h | 2 +- .../UIProcess/Launcher/mac/ProcessLauncherMac.mm | 13 +- .../UIProcess/Launcher/qt/ProcessLauncherQt.cpp | 12 +- Source/WebKit2/UIProcess/PageClient.h | 15 +- .../UIProcess/Plugins/PluginProcessProxy.cpp | 24 +- .../WebKit2/UIProcess/Plugins/PluginProcessProxy.h | 32 + .../Plugins/PluginProcessProxy.messages.in | 5 + .../UIProcess/Plugins/WebPluginSiteDataManager.cpp | 12 +- .../UIProcess/Plugins/mac/PluginProcessProxyMac.mm | 138 +- .../UIProcess/Plugins/win/PluginInfoStoreWin.cpp | 34 +- .../UIProcess/WebApplicationCacheManagerProxy.cpp | 16 +- .../UIProcess/WebApplicationCacheManagerProxy.h | 3 + Source/WebKit2/UIProcess/WebContext.cpp | 98 +- Source/WebKit2/UIProcess/WebContext.h | 32 +- Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp | 53 +- Source/WebKit2/UIProcess/WebCookieManagerProxy.h | 13 + .../UIProcess/WebCookieManagerProxy.messages.in | 1 + .../WebKit2/UIProcess/WebDatabaseManagerProxy.cpp | 27 +- Source/WebKit2/UIProcess/WebDatabaseManagerProxy.h | 3 + Source/WebKit2/UIProcess/WebDownloadClient.cpp | 8 + Source/WebKit2/UIProcess/WebDownloadClient.h | 2 + Source/WebKit2/UIProcess/WebEditCommandProxy.cpp | 4 +- Source/WebKit2/UIProcess/WebEditCommandProxy.h | 5 +- .../UIProcess/WebFullScreenManagerProxy.cpp | 113 + .../WebKit2/UIProcess/WebFullScreenManagerProxy.h | 110 + .../WebFullScreenManagerProxy.messages.in | 38 + Source/WebKit2/UIProcess/WebIconDatabase.cpp | 255 + Source/WebKit2/UIProcess/WebIconDatabase.h | 110 + .../WebKit2/UIProcess/WebIconDatabase.messages.in | 35 + .../UIProcess/WebKeyValueStorageManagerProxy.cpp | 17 +- .../UIProcess/WebKeyValueStorageManagerProxy.h | 3 + .../UIProcess/WebMediaCacheManagerProxy.cpp | 103 + .../WebKit2/UIProcess/WebMediaCacheManagerProxy.h | 83 + .../WebMediaCacheManagerProxy.messages.in | 25 + Source/WebKit2/UIProcess/WebPageProxy.cpp | 356 +- Source/WebKit2/UIProcess/WebPageProxy.h | 55 +- Source/WebKit2/UIProcess/WebPageProxy.messages.in | 18 +- Source/WebKit2/UIProcess/WebProcessProxy.cpp | 5 +- .../UIProcess/WebResourceCacheManagerProxy.cpp | 16 +- .../UIProcess/WebResourceCacheManagerProxy.h | 3 + Source/WebKit2/UIProcess/WebUIClient.cpp | 10 +- Source/WebKit2/UIProcess/WebUIClient.h | 3 + Source/WebKit2/UIProcess/cf/WebPageProxyCF.cpp | 25 +- Source/WebKit2/UIProcess/gtk/WebContextGtk.cpp | 15 + .../UIProcess/gtk/WebFullScreenManagerProxyGtk.cpp | 81 + Source/WebKit2/UIProcess/gtk/WebView.cpp | 23 +- Source/WebKit2/UIProcess/gtk/WebView.h | 3 + Source/WebKit2/UIProcess/mac/CorrectionPanel.h | 63 + Source/WebKit2/UIProcess/mac/CorrectionPanel.mm | 166 + .../UIProcess/mac/WKFullScreenWindowController.h | 74 + .../UIProcess/mac/WKFullScreenWindowController.mm | 608 + Source/WebKit2/UIProcess/mac/WebContextMac.mm | 33 + .../UIProcess/mac/WebContextMenuProxyMac.mm | 13 +- .../UIProcess/mac/WebCookieManagerProxyMac.mm | 39 + .../UIProcess/mac/WebFullScreenManagerProxyMac.mm | 101 + .../WebKit2/UIProcess/mac/WebInspectorProxyMac.mm | 4 +- Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm | 137 +- .../WebKit2/UIProcess/qt/WebContextMenuProxyQt.cpp | 3 + Source/WebKit2/UIProcess/qt/WebContextQt.cpp | 16 + .../UIProcess/win/WebContextMenuProxyWin.cpp | 3 + Source/WebKit2/UIProcess/win/WebContextWin.cpp | 21 +- Source/WebKit2/UIProcess/win/WebPageProxyWin.cpp | 31 +- Source/WebKit2/UIProcess/win/WebUndoClient.cpp | 53 + Source/WebKit2/UIProcess/win/WebUndoClient.h | 46 + Source/WebKit2/UIProcess/win/WebView.cpp | 159 +- Source/WebKit2/UIProcess/win/WebView.h | 17 + Source/WebKit2/WebKit2.pri | 4 + Source/WebKit2/WebKit2.pro | 29 +- Source/WebKit2/WebKit2.xcodeproj/project.pbxproj | 438 +- .../WebApplicationCacheManager.cpp | 6 +- .../Authentication/AuthenticationManager.cpp | 50 +- .../Authentication/AuthenticationManager.h | 2 + .../WebProcess/Cookies/WebCookieManager.cpp | 16 + .../WebKit2/WebProcess/Cookies/WebCookieManager.h | 7 + .../Cookies/WebCookieManager.messages.in | 3 + .../Cookies/cf/WebCookieManagerCFNet.cpp | 50 + .../Cookies/curl/WebCookieManagerCurl.cpp | 47 + .../WebProcess/Cookies/gtk/WebCookieManagerGtk.cpp | 42 + .../WebProcess/Cookies/mac/WebCookieManagerMac.mm | 45 + .../WebProcess/Cookies/qt/WebCookieManagerQt.cpp | 42 + Source/WebKit2/WebProcess/Downloads/Download.cpp | 6 + Source/WebKit2/WebProcess/Downloads/Download.h | 10 +- .../WebProcess/Downloads/cf/DownloadCFNet.cpp | 209 - .../Downloads/cf/win/DownloadCFNetWin.cpp | 56 - .../WebProcess/Downloads/cf/win/DownloadCFWin.cpp | 56 + .../WebProcess/Downloads/cfnet/DownloadCFNet.cpp | 226 + .../WebProcess/Downloads/curl/DownloadCurl.cpp | 12 +- .../WebProcess/Downloads/mac/DownloadMac.mm | 24 +- .../WebKit2/WebProcess/Downloads/qt/DownloadQt.cpp | 15 + .../WebProcess/Downloads/soup/DownloadSoup.cpp | 81 + .../WebProcess/FullScreen/WebFullScreenManager.cpp | 147 + .../WebProcess/FullScreen/WebFullScreenManager.h | 90 + .../FullScreen/WebFullScreenManager.messages.in | 32 + .../FullScreen/gtk/WebFullScreenManagerGtk.cpp | 56 + .../FullScreen/gtk/WebFullScreenManagerGtk.h | 50 + .../FullScreen/mac/WebFullScreenManagerMac.h | 67 + .../FullScreen/mac/WebFullScreenManagerMac.mm | 277 + .../IconDatabase/WebIconDatabaseProxy.cpp | 151 + .../WebProcess/IconDatabase/WebIconDatabaseProxy.h | 89 + .../IconDatabase/WebIconDatabaseProxy.messages.in | 26 + Source/WebKit2/WebProcess/Info.plist | 10 +- .../WebProcess/InjectedBundle/API/c/WKBundle.cpp | 5 + .../InjectedBundle/API/c/WKBundleNodeHandle.cpp | 10 + .../API/c/WKBundleNodeHandlePrivate.h | 4 + .../WebProcess/InjectedBundle/API/c/WKBundlePage.h | 3 + .../InjectedBundle/API/c/WKBundlePrivate.h | 1 + .../API/c/win/WKBundlePrivateWin.cpp | 43 + .../InjectedBundle/API/c/win/WKBundlePrivateWin.h | 42 + .../DOM/InjectedBundleNodeHandle.cpp | 20 +- .../InjectedBundle/DOM/InjectedBundleNodeHandle.h | 3 + .../WebProcess/InjectedBundle/InjectedBundle.cpp | 10 + .../WebProcess/InjectedBundle/InjectedBundle.h | 6 + .../InjectedBundle/InjectedBundlePageUIClient.cpp | 16 + .../InjectedBundle/InjectedBundlePageUIClient.h | 3 + .../InjectedBundle/win/InjectedBundleWin.cpp | 29 + .../KeyValueStorage/WebKeyValueStorageManager.cpp | 34 +- .../WebProcess/MediaCache/WebMediaCacheManager.cpp | 82 + .../WebProcess/MediaCache/WebMediaCacheManager.h | 60 + .../MediaCache/WebMediaCacheManager.messages.in | 27 + .../WebProcess/Plugins/Netscape/JSNPMethod.cpp | 2 +- .../WebProcess/Plugins/Netscape/JSNPMethod.h | 4 +- .../WebProcess/Plugins/Netscape/JSNPObject.cpp | 2 +- .../WebProcess/Plugins/Netscape/JSNPObject.h | 4 +- .../Plugins/Netscape/NetscapeBrowserFuncs.cpp | 41 +- .../WebProcess/Plugins/Netscape/NetscapePlugin.cpp | 39 +- .../WebProcess/Plugins/Netscape/NetscapePlugin.h | 10 +- .../Plugins/Netscape/NetscapePluginStream.cpp | 6 +- .../Plugins/Netscape/NetscapePluginStream.h | 2 +- .../Plugins/Netscape/gtk/NetscapePluginGtk.cpp | 105 - .../Plugins/Netscape/mac/NetscapePluginMac.mm | 19 +- .../Plugins/Netscape/qt/NetscapePluginQt.cpp | 125 - .../Plugins/Netscape/x11/NetscapePluginX11.cpp | 425 + Source/WebKit2/WebProcess/Plugins/Plugin.h | 3 + .../WebProcess/Plugins/PluginProcessConnection.cpp | 9 +- Source/WebKit2/WebProcess/Plugins/PluginProxy.cpp | 50 +- Source/WebKit2/WebProcess/Plugins/PluginProxy.h | 1 + Source/WebKit2/WebProcess/Plugins/PluginView.cpp | 14 +- .../ResourceCache/WebResourceCacheManager.cpp | 3 + .../WebProcess/WebCoreSupport/WebChromeClient.cpp | 58 +- .../WebProcess/WebCoreSupport/WebChromeClient.h | 9 +- .../WebCoreSupport/WebDatabaseManager.cpp | 6 + .../WebProcess/WebCoreSupport/WebEditorClient.h | 8 +- .../WebCoreSupport/WebFrameLoaderClient.cpp | 77 +- .../WebCoreSupport/WebFrameLoaderClient.h | 4 +- .../WebCoreSupport/WebPlatformStrategies.cpp | 848 +- .../WebCoreSupport/WebPlatformStrategies.h | 149 +- .../WebCoreSupport/mac/WebContextMenuClientMac.mm | 6 +- .../WebCoreSupport/mac/WebDragClientMac.mm | 327 +- .../WebCoreSupport/mac/WebEditorClientMac.mm | 21 +- .../WebProcess/WebCoreSupport/mac/WebErrorsMac.mm | 22 +- .../WebCoreSupport/mac/WebSystemInterface.mm | 10 +- .../WebCoreSupport/win/WebPopupMenuWin.cpp | 8 +- .../WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp | 46 +- .../WebKit2/WebProcess/WebPage/DrawingAreaImpl.h | 3 + .../WebKit2/WebProcess/WebPage/FindController.cpp | 10 +- .../WebKit2/WebProcess/WebPage/LayerTreeHost.cpp | 4 +- Source/WebKit2/WebProcess/WebPage/WebFrame.cpp | 20 +- Source/WebKit2/WebProcess/WebPage/WebPage.cpp | 99 +- Source/WebKit2/WebProcess/WebPage/WebPage.h | 44 +- .../WebKit2/WebProcess/WebPage/WebPage.messages.in | 8 + .../WebProcess/WebPage/ca/LayerTreeHostCA.cpp | 262 + .../WebProcess/WebPage/ca/LayerTreeHostCA.h | 119 + .../WebPage/ca/mac/LayerTreeHostCAMac.mm | 109 + .../WebPage/ca/win/LayerTreeHostCAWin.cpp | 69 + .../WebPage/mac/AccessibilityWebPageObject.mm | 12 +- .../WebProcess/WebPage/mac/LayerTreeHostMac.h | 102 - .../WebProcess/WebPage/mac/LayerTreeHostMac.mm | 302 - .../WebKit2/WebProcess/WebPage/mac/WebPageMac.mm | 165 +- Source/WebKit2/WebProcess/WebPage/qt/WebPageQt.cpp | 2 +- .../WebKit2/WebProcess/WebPage/win/WebPageWin.cpp | 37 +- Source/WebKit2/WebProcess/WebProcess.cpp | 45 +- Source/WebKit2/WebProcess/WebProcess.h | 16 +- Source/WebKit2/WebProcess/WebProcess.messages.in | 4 +- Source/WebKit2/WebProcess/com.apple.WebProcess.sb | 10 +- Source/WebKit2/WebProcess/gtk/WebProcessGtk.cpp | 2 +- Source/WebKit2/WebProcess/mac/WebProcessMac.mm | 27 +- Source/WebKit2/WebProcess/qt/WebProcessMainQt.cpp | 15 +- Source/WebKit2/WebProcess/qt/WebProcessQt.cpp | 2 +- Source/WebKit2/WebProcess/win/WebProcessWin.cpp | 7 +- Source/WebKit2/config.h | 25 +- Source/WebKit2/qt/MainQt.cpp | 10 +- Source/WebKit2/win/WebKit2.def | 8 - Source/WebKit2/win/WebKit2.make | 3 +- Source/WebKit2/win/WebKit2.submit.sln | 14 +- Source/WebKit2/win/WebKit2.vcproj | 396 +- Source/WebKit2/win/WebKit2Apple.vsprops | 4 + Source/WebKit2/win/WebKit2Common.vsprops | 2 +- Source/WebKit2/win/WebKit2Debug.vsprops | 14 + Source/WebKit2/win/WebKit2DebugAll.vsprops | 15 + Source/WebKit2/win/WebKit2DebugCairoCFLite.vsprops | 16 + Source/WebKit2/win/WebKit2Generated.make | 3 + Source/WebKit2/win/WebKit2Generated.vcproj | 2 +- Source/WebKit2/win/WebKit2Production.vsprops | 15 + Source/WebKit2/win/WebKit2Release.vsprops | 14 + .../WebKit2/win/WebKit2ReleaseCairoCFLite.vsprops | 15 + Source/WebKit2/win/WebKit2WebProcess.vcproj | 14 +- Source/WebKit2/win/WebKit2WebProcessDebug.vsprops | 12 + .../WebKit2/win/WebKit2WebProcessDebugAll.vsprops | 13 + .../win/WebKit2WebProcessDebugCairoCFLite.vsprops | 13 + .../win/WebKit2WebProcessProduction.vsprops | 13 + .../WebKit2/win/WebKit2WebProcessRelease.vsprops | 12 + .../WebKit2WebProcessReleaseCairoCFLite.vsprops | 13 + Source/cmake/OptionsEfl.cmake | 4 +- Source/gyp/common.gypi | 6 +- Source/gyp/configure | 88 +- Source/gyp/remove-headers-if-needed.sh | 3 - Source/gyp/run-if-exists.sh | 5 - Source/gyp/update-info-plist.sh | 4 - .../build.webkit.org-config/config.json | 10 +- .../build.webkit.org-config/master.cfg | 6 +- .../public_html/LeaksViewer/LeaksLoader.js | 65 + .../public_html/LeaksViewer/LeaksParser.js | 40 + .../public_html/LeaksViewer/LeaksParserWorker.js | 101 + .../public_html/LeaksViewer/LeaksViewer.css | 91 + .../public_html/LeaksViewer/LeaksViewer.js | 202 + .../public_html/LeaksViewer/RecentBuildsLoader.js | 80 + .../public_html/LeaksViewer/Utilities.js | 42 + .../public_html/LeaksViewer/WebInspectorShims.js | 67 + .../public_html/LeaksViewer/index.html | 80 + .../build.webkit.org-config/templates/root.html | 1 + Tools/BuildSlaveSupport/test-result-archive | 6 +- Tools/BuildSlaveSupport/win/kill-old-processes | 2 +- Tools/ChangeLog | 2711 +++ Tools/DumpRenderTree/DumpRenderTree.sln | 18 +- .../DumpRenderTree.xcodeproj/project.pbxproj | 12 + .../ForwardingHeaders/wtf/OwnArrayPtr.h | 1 + .../ForwardingHeaders/wtf/ThreadSafeRefCounted.h | 1 + .../ForwardingHeaders/wtf/ThreadSafeShared.h | 1 - Tools/DumpRenderTree/LayoutTestController.cpp | 133 +- Tools/DumpRenderTree/LayoutTestController.h | 11 + Tools/DumpRenderTree/StorageTrackerDelegate.h | 37 + Tools/DumpRenderTree/StorageTrackerDelegate.mm | 82 + .../TestNetscapePlugIn/PluginTest.cpp | 16 + .../DumpRenderTree/TestNetscapePlugIn/PluginTest.h | 4 + .../Tests/NPDeallocateCalledBeforeNPShutdown.cpp | 102 + .../TestNetscapePlugIn/mac/Info.plist | 11 +- Tools/DumpRenderTree/TestNetscapePlugIn/main.cpp | 3 +- .../TestNetscapePlugIn/win/TestNetscapePlugin.rc | 6 +- .../win/TestNetscapePlugin.vcproj | 18 +- .../win/TestNetscapePluginDebug.vsprops | 11 + .../win/TestNetscapePluginDebugAll.vsprops | 12 + .../win/TestNetscapePluginDebugCairoCFLite.vsprops | 12 + .../win/TestNetscapePluginProduction.vsprops | 12 + .../win/TestNetscapePluginRelease.vsprops | 11 + .../TestNetscapePluginReleaseCairoCFLite.vsprops | 12 + Tools/DumpRenderTree/cf/WebArchiveDumpSupport.cpp | 9 +- Tools/DumpRenderTree/cg/ImageDiffCG.cpp | 4 + Tools/DumpRenderTree/chromium/DRTDevToolsAgent.cpp | 5 - Tools/DumpRenderTree/chromium/DRTDevToolsAgent.h | 1 - Tools/DumpRenderTree/chromium/DumpRenderTree.cpp | 14 +- Tools/DumpRenderTree/chromium/EventSender.cpp | 4 +- .../chromium/LayoutTestController.cpp | 134 +- .../DumpRenderTree/chromium/LayoutTestController.h | 33 +- Tools/DumpRenderTree/chromium/TestShell.cpp | 21 +- Tools/DumpRenderTree/chromium/TestShell.h | 6 + Tools/DumpRenderTree/chromium/TestShellWin.cpp | 51 +- Tools/DumpRenderTree/chromium/WebPreferences.cpp | 2 + Tools/DumpRenderTree/chromium/WebPreferences.h | 1 + Tools/DumpRenderTree/chromium/WebViewHost.cpp | 6 + Tools/DumpRenderTree/chromium/WebViewHost.h | 13 +- Tools/DumpRenderTree/chromium/config.h | 3 + Tools/DumpRenderTree/config.h | 31 +- .../DumpRenderTree/gtk/AccessibilityCallbacks.cpp | 3 + Tools/DumpRenderTree/gtk/DumpRenderTree.cpp | 49 +- .../DumpRenderTree/gtk/LayoutTestControllerGtk.cpp | 68 +- .../mac/Configurations/Base.xcconfig | 6 +- Tools/DumpRenderTree/mac/DumpRenderTree.mm | 9 + Tools/DumpRenderTree/mac/DumpRenderTreeMac.h | 3 + .../DumpRenderTree/mac/LayoutTestControllerMac.mm | 89 +- Tools/DumpRenderTree/mac/PerlSupport/Makefile | 2 +- Tools/DumpRenderTree/mac/UIDelegate.h | 1 + Tools/DumpRenderTree/mac/UIDelegate.mm | 10 +- .../DumpRenderTree/mac/WebArchiveDumpSupportMac.mm | 1 + Tools/DumpRenderTree/qt/DumpRenderTree.pro | 2 + Tools/DumpRenderTree/qt/DumpRenderTreeQt.cpp | 24 +- Tools/DumpRenderTree/qt/DumpRenderTreeQt.h | 6 +- Tools/DumpRenderTree/qt/GCControllerQt.cpp | 2 +- Tools/DumpRenderTree/qt/ImageDiff.pro | 1 + Tools/DumpRenderTree/qt/LayoutTestControllerQt.cpp | 51 +- Tools/DumpRenderTree/qt/LayoutTestControllerQt.h | 11 +- Tools/DumpRenderTree/qt/PlainTextControllerQt.cpp | 2 +- .../qt/TestNetscapePlugin/TestNetscapePlugin.pro | 3 + Tools/DumpRenderTree/qt/TextInputControllerQt.cpp | 2 +- Tools/DumpRenderTree/qt/WorkQueueItemQt.cpp | 13 + Tools/DumpRenderTree/qt/WorkQueueItemQt.h | 18 + Tools/DumpRenderTree/qt/main.cpp | 89 +- Tools/DumpRenderTree/win/DumpRenderTree.vcproj | 18 +- .../DumpRenderTree/win/DumpRenderTreeDebug.vsprops | 13 + .../win/DumpRenderTreeDebugAll.vsprops | 14 + .../win/DumpRenderTreeDebugCairoCFLite.vsprops | 9 + .../win/DumpRenderTreeProduction.vsprops | 14 + .../win/DumpRenderTreeRelease.vsprops | 13 + .../win/DumpRenderTreeReleaseCairoCFLite.vsprops | 16 + Tools/DumpRenderTree/win/ImageDiff.vcproj | 14 +- Tools/DumpRenderTree/win/ImageDiffDebug.vsprops | 11 + Tools/DumpRenderTree/win/ImageDiffDebugAll.vsprops | 12 + .../win/ImageDiffDebugCairoCFLite.vsprops | 12 + .../DumpRenderTree/win/ImageDiffProduction.vsprops | 12 + Tools/DumpRenderTree/win/ImageDiffRelease.vsprops | 11 + .../win/ImageDiffReleaseCairoCFLite.vsprops | 12 + .../DumpRenderTree/win/LayoutTestControllerWin.cpp | 76 +- Tools/DumpRenderTree/wx/LayoutTestControllerWx.cpp | 59 +- Tools/EWebLauncher/main.c | 2 +- Tools/FindSafari/FindSafari.vcproj | 16 +- Tools/FindSafari/FindSafariDebug.vsprops | 11 + Tools/FindSafari/FindSafariDebugAll.vsprops | 11 + .../FindSafari/FindSafariDebugCairoCFLite.vsprops | 12 + Tools/FindSafari/FindSafariProduction.vsprops | 12 + Tools/FindSafari/FindSafariRelease.vsprops | 11 + .../FindSafariReleaseCairoCFLite.vsprops | 12 + Tools/FindSafari/FindSafariReleasePGO.vsprops | 12 + Tools/GNUmakefile.am | 1 + Tools/MiniBrowser/Configurations/Base.xcconfig | 13 +- .../Configurations/MiniBrowserDebug.vsprops | 12 + .../Configurations/MiniBrowserDebugAll.vsprops | 13 + .../MiniBrowserDebugCairoCFLite.vsprops | 13 + .../Configurations/MiniBrowserProduction.vsprops | 13 + .../Configurations/MiniBrowserRelease.vsprops | 12 + .../MiniBrowserReleaseCairoCFLite.vsprops | 13 + Tools/MiniBrowser/MiniBrowser.vcproj | 16 +- .../MiniBrowser.xcodeproj/project.pbxproj | 8 +- Tools/MiniBrowser/mac/BrowserWindowController.m | 1 + Tools/MiniBrowser/qt/BrowserWindow.cpp | 9 + Tools/MiniBrowser/qt/BrowserWindow.h | 2 + Tools/MiniBrowser/qt/MiniBrowser.pro | 2 + Tools/MiniBrowser/qt/MiniBrowserApplication.cpp | 4 + Tools/MiniBrowser/qt/MiniBrowserApplication.h | 2 + Tools/QtTestBrowser/QtTestBrowser.pro | 8 + Tools/QtTestBrowser/QtTestBrowser.qrc | 1 + Tools/QtTestBrowser/favicon.png | Bin 0 -> 891 bytes Tools/QtTestBrowser/launcherwindow.cpp | 15 +- Tools/QtTestBrowser/launcherwindow.h | 12 +- Tools/QtTestBrowser/locationedit.cpp | 48 + Tools/QtTestBrowser/locationedit.h | 6 + Tools/QtTestBrowser/main.cpp | 81 + Tools/QtTestBrowser/mainwindow.cpp | 27 +- Tools/QtTestBrowser/mainwindow.h | 3 + Tools/Scripts/build-jsc | 8 +- Tools/Scripts/build-webkit | 74 +- Tools/Scripts/check-inspector-strings | 14 +- Tools/Scripts/do-webcore-rename | 2 - Tools/Scripts/extract-localizable-strings | 14 +- Tools/Scripts/generate-project-files | 38 + Tools/Scripts/new-run-webkit-httpd | 6 +- Tools/Scripts/old-run-webkit-tests | 36 +- Tools/Scripts/read-checksum-from-png | 39 + Tools/Scripts/run-gtk-tests | 15 +- Tools/Scripts/show-pretty-diff | 77 + Tools/Scripts/update-webkit | 8 + Tools/Scripts/update-webkit-localizable-strings | 15 +- Tools/Scripts/webkitdirs.pm | 258 +- Tools/Scripts/webkitpy/common/checkout/api.py | 6 +- .../Scripts/webkitpy/common/checkout/changelog.py | 4 +- Tools/Scripts/webkitpy/common/checkout/scm.py | 22 +- Tools/Scripts/webkitpy/common/config/build.py | 20 +- .../webkitpy/common/config/build_unittest.py | 7 +- Tools/Scripts/webkitpy/common/config/committers.py | 9 +- Tools/Scripts/webkitpy/common/config/ports.py | 25 +- .../webkitpy/common/net/bugzilla/__init__.py | 2 +- .../webkitpy/common/net/bugzilla/bugzilla.py | 24 +- .../common/net/bugzilla/bugzilla_unittest.py | 29 +- .../webkitpy/common/net/buildbot/buildbot.py | 20 +- .../common/net/buildbot/buildbot_unittest.py | 59 +- .../Scripts/webkitpy/common/system/autoinstall.py | 4 +- Tools/Scripts/webkitpy/common/system/filesystem.py | 3 + .../webkitpy/common/system/filesystem_mock.py | 30 + .../layout_package/dump_render_tree_thread.py | 2 +- .../layout_package/single_test_runner.py | 114 +- .../layout_tests/layout_package/test_failures.py | 77 +- .../layout_package/test_result_writer.py | 23 +- .../layout_tests/layout_package/test_runner.py | 5 - .../layout_tests/layout_package/test_runner2.py | 2 +- Tools/Scripts/webkitpy/layout_tests/port/base.py | 47 +- .../webkitpy/layout_tests/port/chromium_linux.py | 5 - .../webkitpy/layout_tests/port/chromium_mac.py | 40 +- .../webkitpy/layout_tests/port/chromium_win.py | 4 + Tools/Scripts/webkitpy/layout_tests/port/dryrun.py | 20 +- .../webkitpy/layout_tests/port/http_server.py | 13 +- Tools/Scripts/webkitpy/layout_tests/port/mac.py | 4 +- .../layout_tests/port/mock_drt_unittest.py | 3 + .../webkitpy/layout_tests/port/port_testcase.py | 2 +- Tools/Scripts/webkitpy/layout_tests/port/test.py | 36 +- .../webkitpy/layout_tests/port/test_files.py | 5 +- .../layout_tests/read_checksum_from_png.py | 40 + .../read_checksum_from_png_unittest.py | 44 + .../rebaseline_chromium_webkit_tests.py | 271 +- .../rebaseline_chromium_webkit_tests_unittest.py | 14 + .../layout_tests/run_webkit_tests_unittest.py | 77 +- Tools/Scripts/webkitpy/style/checker.py | 21 +- Tools/Scripts/webkitpy/style/checker_unittest.py | 31 +- Tools/Scripts/webkitpy/style/checkers/changelog.py | 74 + .../webkitpy/style/checkers/changelog_unittest.py | 155 + Tools/Scripts/webkitpy/style/error_handlers.py | 10 +- Tools/Scripts/webkitpy/test/cat.py | 2 +- Tools/Scripts/webkitpy/test/echo.py | 2 +- Tools/Scripts/webkitpy/thirdparty/__init__.py | 2 +- Tools/Scripts/webkitpy/tool/bot/commitqueuetask.py | 13 +- .../webkitpy/tool/commands/queues_unittest.py | 2 - Tools/Scripts/webkitpy/tool/commands/upload.py | 21 +- .../webkitpy/tool/commands/upload_unittest.py | 19 + Tools/Scripts/webkitpy/tool/steps/__init__.py | 1 + Tools/Scripts/webkitpy/tool/steps/abstractstep.py | 2 +- Tools/Scripts/webkitpy/tool/steps/attachtobug.py | 51 + Tools/Scripts/webkitpy/tool/steps/commit.py | 2 +- Tools/Scripts/webkitpy/tool/steps/options.py | 2 +- .../webkitpy/tool/steps/preparechangelog.py | 2 +- .../TestResultServer/handlers/dashboardhandler.py | 10 +- Tools/TestWebKitAPI/Configurations/Base.xcconfig | 13 +- .../Configurations/InjectedBundle.xcconfig | 3 +- .../Configurations/TestWebKitAPICFNetwork.vsprops | 11 + .../Configurations/TestWebKitAPIDebug.vsprops | 2 +- .../Configurations/TestWebKitAPIDebugAll.vsprops | 2 +- .../TestWebKitAPIDebugCairoCFLite.vsprops | 2 +- .../Configurations/TestWebKitAPIRelease.vsprops | 2 +- Tools/TestWebKitAPI/PlatformUtilities.h | 1 + .../TestWebKitAPI.xcodeproj/project.pbxproj | 20 + Tools/TestWebKitAPI/TestWebKitAPIPrefix.h | 4 + .../TestWebKitAPI/Tests/WebKit2/AboutBlankLoad.cpp | 60 + .../Tests/WebKit2/CanHandleRequest.cpp | 72 + .../Tests/WebKit2/CanHandleRequest_Bundle.cpp | 66 + .../TestWebKitAPI/Tests/WebKit2/CookieManager.cpp | 88 + ...ndingMessagesToTheWebProcessBeforeItIsValid.cpp | 42 + .../WebKit2/win/DoNotCopyANullCFURLResponse.cpp | 41 + Tools/TestWebKitAPI/mac/PlatformUtilitiesMac.mm | 8 + Tools/TestWebKitAPI/win/PlatformUtilitiesWin.cpp | 14 + Tools/TestWebKitAPI/win/TestWebKitAPI.sln | 14 +- Tools/TestWebKitAPI/win/TestWebKitAPI.vcproj | 42 +- .../win/TestWebKitAPIGenerated.vcproj | 2 +- .../win/TestWebKitAPIInjectedBundle.vcproj | 6 +- Tools/WebKitAPITest/HostWindow.cpp | 1 + Tools/WebKitAPITest/TestsController.cpp | 1 + Tools/WebKitAPITest/WebKitAPITest.vcproj | 14 +- Tools/WebKitAPITest/WebKitAPITestDebug.vsprops | 11 + Tools/WebKitAPITest/WebKitAPITestDebugAll.vsprops | 12 + .../WebKitAPITestDebugCairoCFLite.vsprops | 12 + .../WebKitAPITest/WebKitAPITestProduction.vsprops | 12 + Tools/WebKitAPITest/WebKitAPITestRelease.vsprops | 11 + .../WebKitAPITestReleaseCairoCFLite.vsprops | 12 + Tools/WebKitAPITest/config.h | 57 + Tools/WebKitAPITest/main.cpp | 2 + Tools/WebKitAPITest/tests/WebViewDestruction.cpp | 2 + Tools/WebKitLauncherWin/WebKitLauncherWin.vcproj | 14 +- .../WebKitLauncherWinDebug.vsprops | 11 + .../WebKitLauncherWinDebugAll.vsprops | 12 + .../WebKitLauncherWinDebugCairoCFLite.vsprops | 12 + .../WebKitLauncherWinProduction.vsprops | 12 + .../WebKitLauncherWinRelease.vsprops | 11 + .../WebKitLauncherWinReleaseCairoCFLite.vsprops | 12 + .../WebKitTestRunner/Configurations/Base.xcconfig | 13 +- .../Configurations/InjectedBundle.xcconfig | 2 +- .../WebKitTestRunnerCoreGraphics.vsprops | 11 + .../InjectedBundle/Bindings/JSWrapper.cpp | 1 + .../InjectedBundle/EventSendingController.cpp | 1 + .../InjectedBundle/GCController.cpp | 1 + .../InjectedBundle/InjectedBundle.cpp | 14 +- .../InjectedBundle/InjectedBundle.h | 8 + .../InjectedBundle/InjectedBundleMain.cpp | 2 + .../InjectedBundle/InjectedBundlePage.cpp | 30 +- .../InjectedBundle/LayoutTestController.cpp | 6 + .../InjectedBundle/LayoutTestController.h | 1 + .../InjectedBundle/qt/ActivateFontsQt.cpp | 14 +- .../InjectedBundle/qt/InjectedBundleQt.cpp | 1 + .../InjectedBundle/qt/LayoutTestControllerQt.cpp | 1 + .../InjectedBundle/win/ActivateFonts.cpp | 1 + .../InjectedBundle/win/InjectedBundleWin.cpp | 1 + .../InjectedBundle/win/LayoutTestControllerWin.cpp | 1 + Tools/WebKitTestRunner/StringFunctions.h | 20 +- Tools/WebKitTestRunner/TestController.cpp | 5 + Tools/WebKitTestRunner/TestInvocation.cpp | 17 +- Tools/WebKitTestRunner/TestInvocation.h | 2 +- Tools/WebKitTestRunner/WebKitTestRunner.sln | 26 +- .../WebKitTestRunner.xcodeproj/project.pbxproj | 24 +- .../WebKitTestRunner/cairo/TestInvocationCairo.cpp | 38 + Tools/WebKitTestRunner/cg/TestInvocationCG.cpp | 154 + Tools/WebKitTestRunner/config.h | 68 + Tools/WebKitTestRunner/mac/TestControllerMac.mm | 9 +- Tools/WebKitTestRunner/mac/TestInvocationMac.mm | 156 - Tools/WebKitTestRunner/mac/main.mm | 2 + Tools/WebKitTestRunner/qt/PlatformWebViewQt.cpp | 2 + Tools/WebKitTestRunner/qt/TestControllerQt.cpp | 1 + Tools/WebKitTestRunner/qt/TestInvocationQt.cpp | 3 +- Tools/WebKitTestRunner/qt/WebKitTestRunner.pro | 1 + Tools/WebKitTestRunner/qt/main.cpp | 2 + Tools/WebKitTestRunner/win/InjectedBundle.vcproj | 14 +- .../win/InjectedBundleDebug.vsprops | 12 + .../win/InjectedBundleDebugAll.vsprops | 13 + .../win/InjectedBundleDebugCairoCFLite.vsprops | 13 + .../win/InjectedBundleGenerated.vcproj | 2 +- .../win/InjectedBundleProduction.vsprops | 13 + .../win/InjectedBundleRelease.vsprops | 12 + .../win/InjectedBundleReleaseCairoCFLite.vsprops | 13 + Tools/WebKitTestRunner/win/PlatformWebViewWin.cpp | 1 + Tools/WebKitTestRunner/win/TestControllerWin.cpp | 1 + Tools/WebKitTestRunner/win/TestInvocationWin.cpp | 5 +- Tools/WebKitTestRunner/win/WebKitTestRunner.vcproj | 78 +- .../win/WebKitTestRunnerDebug.vsprops | 13 + .../win/WebKitTestRunnerDebugAll.vsprops | 14 + .../win/WebKitTestRunnerDebugCairoCFLite.vsprops | 13 + .../win/WebKitTestRunnerProduction.vsprops | 14 + .../win/WebKitTestRunnerRelease.vsprops | 13 + .../win/WebKitTestRunnerReleaseCairoCFLite.vsprops | 13 + Tools/WebKitTestRunner/win/main.cpp | 2 + Tools/WinLauncher/WinLauncher.vcproj | 16 +- Tools/WinLauncher/WinLauncherDebug.vsprops | 11 + Tools/WinLauncher/WinLauncherDebugAll.vsprops | 12 + .../WinLauncherDebugCairoCFLite.vsprops | 12 + Tools/WinLauncher/WinLauncherProduction.vsprops | 12 + Tools/WinLauncher/WinLauncherRelease.vsprops | 11 + .../WinLauncherReleaseCairoCFLite.vsprops | 12 + Tools/record-memory-win/record-memory-win.vcproj | 14 +- .../record-memory-winDebug.vsprops | 11 + .../record-memory-winDebugAll.vsprops | 12 + .../record-memory-winDebugCairoCFLite.vsprops | 12 + .../record-memory-winProduction.vsprops | 12 + .../record-memory-winRelease.vsprops | 11 + .../record-memory-winReleaseCairoCFLite.vsprops | 12 + Tools/wx/build/settings.py | 30 +- Tools/wx/build/waf_extensions.py | 19 +- WebKitLibraries/ChangeLog | 134 + WebKitLibraries/WebKitSystemInterface.h | 15 +- WebKitLibraries/libWebKitSystemInterfaceLeopard.a | Bin 1724672 -> 1823936 bytes .../libWebKitSystemInterfaceSnowLeopard.a | Bin 1447876 -> 1453828 bytes .../WebKitSystemInterface/WebKitSystemInterface.h | 7 +- WebKitLibraries/win/lib/WebKitSystemInterface.lib | Bin 658846 -> 660276 bytes .../win/lib/WebKitSystemInterface_debug.lib | Bin 567246 -> 0 bytes .../win/tools/vsprops/FeatureDefinesCairo.vsprops | 2 +- WebKitLibraries/win/tools/vsprops/common.vsprops | 9 +- .../win/tools/vsprops/production.vsprops | 28 + 2865 files changed, 115503 insertions(+), 33434 deletions(-) create mode 100644 LayoutTests/fast/dom/Geolocation/page-reload-cancel-permission-requests-expected.txt create mode 100644 LayoutTests/fast/dom/Geolocation/page-reload-cancel-permission-requests.html create mode 100644 LayoutTests/fast/dom/Geolocation/resources/page-reload-cancel-permission-requests-inner.html create mode 100644 LayoutTests/fast/dom/Geolocation/script-tests/page-reload-cancel-permission-requests.js create mode 100644 LayoutTests/fast/dom/HTMLFormElement/invalid-form-field-expected.txt create mode 100644 LayoutTests/fast/dom/HTMLFormElement/invalid-form-field.html create mode 100644 LayoutTests/fast/dom/HTMLFormElement/move-option-between-documents-expected.txt create mode 100644 LayoutTests/fast/dom/HTMLFormElement/move-option-between-documents.html create mode 100644 LayoutTests/fast/dom/HTMLLinkElement/prefetch-beforeload-expected.txt create mode 100644 LayoutTests/fast/dom/HTMLLinkElement/prefetch-beforeload.html create mode 100644 LayoutTests/fast/dom/HTMLLinkElement/prefetch-onerror-expected.txt create mode 100644 LayoutTests/fast/dom/HTMLLinkElement/prefetch-onerror.html create mode 100644 LayoutTests/fast/js/resources/js-constructors-use-correct-global.js create mode 100644 LayoutTests/http/tests/appcache/origin-delete-expected.txt create mode 100644 LayoutTests/http/tests/appcache/origin-delete.html create mode 100644 LayoutTests/http/tests/appcache/origins-with-appcache-expected.txt create mode 100644 LayoutTests/http/tests/appcache/origins-with-appcache.html create mode 100644 LayoutTests/http/tests/appcache/resources/origin-delete-iframe.html create mode 100644 LayoutTests/http/tests/appcache/resources/origin-delete-iframe.manifest create mode 100644 LayoutTests/http/tests/appcache/resources/origins-with-appcache-iframe.html create mode 100644 LayoutTests/http/tests/appcache/resources/origins-with-appcache-iframe.manifest create mode 100644 LayoutTests/storage/domstorage/localstorage/storagetracker/storage-tracker-1-prepare-expected.txt create mode 100644 LayoutTests/storage/domstorage/localstorage/storagetracker/storage-tracker-1-prepare.html create mode 100644 LayoutTests/storage/domstorage/localstorage/storagetracker/storage-tracker-2-create-expected.txt create mode 100644 LayoutTests/storage/domstorage/localstorage/storagetracker/storage-tracker-2-create.html create mode 100644 LayoutTests/storage/domstorage/localstorage/storagetracker/storage-tracker-3-delete-all-expected.txt create mode 100644 LayoutTests/storage/domstorage/localstorage/storagetracker/storage-tracker-3-delete-all.html create mode 100644 LayoutTests/storage/domstorage/localstorage/storagetracker/storage-tracker-4-create-expected.txt create mode 100644 LayoutTests/storage/domstorage/localstorage/storagetracker/storage-tracker-4-create.html create mode 100644 LayoutTests/storage/domstorage/localstorage/storagetracker/storage-tracker-5-delete-one-expected.txt create mode 100644 LayoutTests/storage/domstorage/localstorage/storagetracker/storage-tracker-5-delete-one.html create mode 100644 PerformanceTests/PageLoad/svg/files/Sierpinski_carpet_6.svg create mode 100644 Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreDebug.vsprops create mode 100644 Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreDebugAll.vsprops create mode 100644 Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreDebugCairoCFLite.vsprops create mode 100644 Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreProduction.vsprops create mode 100644 Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreRelease.vsprops create mode 100644 Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleaseCairoCFLite.vsprops create mode 100644 Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleasePGO.vsprops create mode 100644 Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleasePGOOptimize.vsprops create mode 100644 Source/JavaScriptCore/JavaScriptCore.vcproj/WTF/WTFDebug.vsprops create mode 100644 Source/JavaScriptCore/JavaScriptCore.vcproj/WTF/WTFDebugAll.vsprops create mode 100644 Source/JavaScriptCore/JavaScriptCore.vcproj/WTF/WTFDebugCairoCFLite.vsprops create mode 100644 Source/JavaScriptCore/JavaScriptCore.vcproj/WTF/WTFProduction.vsprops create mode 100644 Source/JavaScriptCore/JavaScriptCore.vcproj/WTF/WTFRelease.vsprops create mode 100644 Source/JavaScriptCore/JavaScriptCore.vcproj/WTF/WTFReleaseCairoCFLite.vsprops create mode 100644 Source/JavaScriptCore/JavaScriptCore.vcproj/WTF/WTFReleasePGO.vsprops create mode 100644 Source/JavaScriptCore/JavaScriptCore.vcproj/jsc/jscDebug.vsprops create mode 100644 Source/JavaScriptCore/JavaScriptCore.vcproj/jsc/jscDebugAll.vsprops create mode 100644 Source/JavaScriptCore/JavaScriptCore.vcproj/jsc/jscDebugCairoCFLite.vsprops create mode 100644 Source/JavaScriptCore/JavaScriptCore.vcproj/jsc/jscProduction.vsprops create mode 100644 Source/JavaScriptCore/JavaScriptCore.vcproj/jsc/jscRelease.vsprops create mode 100644 Source/JavaScriptCore/JavaScriptCore.vcproj/jsc/jscReleaseCairoCFLite.vsprops create mode 100644 Source/JavaScriptCore/JavaScriptCore.vcproj/jsc/jscReleasePGO.vsprops create mode 100644 Source/JavaScriptCore/JavaScriptCore.vcproj/testapi/testapiDebug.vsprops create mode 100644 Source/JavaScriptCore/JavaScriptCore.vcproj/testapi/testapiDebugAll.vsprops create mode 100644 Source/JavaScriptCore/JavaScriptCore.vcproj/testapi/testapiDebugCairoCFLite.vsprops create mode 100644 Source/JavaScriptCore/JavaScriptCore.vcproj/testapi/testapiProduction.vsprops create mode 100644 Source/JavaScriptCore/JavaScriptCore.vcproj/testapi/testapiRelease.vsprops create mode 100644 Source/JavaScriptCore/JavaScriptCore.vcproj/testapi/testapiReleaseCairoCFLite.vsprops create mode 100644 Source/JavaScriptCore/collector/handles/HandleStack.cpp create mode 100644 Source/JavaScriptCore/collector/handles/HandleStack.h create mode 100644 Source/JavaScriptCore/collector/handles/Local.h create mode 100644 Source/JavaScriptCore/collector/handles/LocalScope.h create mode 100644 Source/JavaScriptCore/dfg/DFGAliasTracker.h create mode 100644 Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp create mode 100644 Source/JavaScriptCore/dfg/DFGByteCodeParser.h create mode 100644 Source/JavaScriptCore/dfg/DFGGenerationInfo.h create mode 100644 Source/JavaScriptCore/dfg/DFGGraph.cpp create mode 100644 Source/JavaScriptCore/dfg/DFGGraph.h create mode 100644 Source/JavaScriptCore/dfg/DFGJITCodeGenerator.cpp create mode 100644 Source/JavaScriptCore/dfg/DFGJITCodeGenerator.h create mode 100644 Source/JavaScriptCore/dfg/DFGJITCompiler.cpp create mode 100644 Source/JavaScriptCore/dfg/DFGJITCompiler.h create mode 100644 Source/JavaScriptCore/dfg/DFGNode.h create mode 100644 Source/JavaScriptCore/dfg/DFGNonSpeculativeJIT.cpp create mode 100644 Source/JavaScriptCore/dfg/DFGNonSpeculativeJIT.h create mode 100644 Source/JavaScriptCore/dfg/DFGOperations.cpp create mode 100644 Source/JavaScriptCore/dfg/DFGOperations.h create mode 100644 Source/JavaScriptCore/dfg/DFGRegisterBank.h create mode 100644 Source/JavaScriptCore/dfg/DFGScoreBoard.h create mode 100644 Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp create mode 100644 Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h create mode 100755 Source/JavaScriptCore/gyp/generate-dtrace-header.sh create mode 100755 Source/JavaScriptCore/gyp/run-if-exists.sh create mode 100755 Source/JavaScriptCore/gyp/update-info-plist.sh create mode 100644 Source/JavaScriptCore/wtf/ExportMacros.h create mode 100644 Source/JavaScriptCore/wtf/HexNumber.h create mode 100644 Source/JavaScriptCore/wtf/ThreadSafeRefCounted.h delete mode 100644 Source/JavaScriptCore/wtf/ThreadSafeShared.h create mode 100644 Source/JavaScriptGlue/ForwardingHeaders/wtf/ThreadSafeRefCounted.h delete mode 100644 Source/JavaScriptGlue/ForwardingHeaders/wtf/ThreadSafeShared.h delete mode 100644 Source/JavaScriptGlue/gyp/JavaScriptGlue.gyp delete mode 100644 Source/JavaScriptGlue/gyp/JavaScriptGlue.gypi create mode 100644 Source/WebCore/ForwardingHeaders/wtf/HexNumber.h create mode 100644 Source/WebCore/ForwardingHeaders/wtf/ThreadSafeRefCounted.h delete mode 100644 Source/WebCore/ForwardingHeaders/wtf/ThreadSafeShared.h delete mode 100644 Source/WebCore/StringsNotToBeLocalized.txt create mode 100644 Source/WebCore/UseJSC.cmake create mode 100644 Source/WebCore/WebCore.vcproj/QTMovieWinDebug.vsprops create mode 100644 Source/WebCore/WebCore.vcproj/QTMovieWinDebugAll.vsprops create mode 100644 Source/WebCore/WebCore.vcproj/QTMovieWinDebugCairoCFLite.vsprops create mode 100644 Source/WebCore/WebCore.vcproj/QTMovieWinProduction.vsprops create mode 100644 Source/WebCore/WebCore.vcproj/QTMovieWinRelease.vsprops create mode 100644 Source/WebCore/WebCore.vcproj/QTMovieWinReleaseCairoCFLite.vsprops create mode 100644 Source/WebCore/WebCore.vcproj/WebCoreDebug.vsprops create mode 100644 Source/WebCore/WebCore.vcproj/WebCoreDebugAll.vsprops create mode 100644 Source/WebCore/WebCore.vcproj/WebCoreDebugCairoCFLite.vsprops create mode 100644 Source/WebCore/WebCore.vcproj/WebCoreProduction.vsprops create mode 100644 Source/WebCore/WebCore.vcproj/WebCoreRelease.vsprops create mode 100644 Source/WebCore/WebCore.vcproj/WebCoreReleaseCairoCFLite.vsprops create mode 100644 Source/WebCore/bindings/js/JSInjectedScriptManager.cpp create mode 100644 Source/WebCore/bindings/js/JSWebKitAnimationCustom.cpp create mode 100644 Source/WebCore/bindings/js/JSWebKitAnimationListCustom.cpp create mode 100755 Source/WebCore/bindings/js/PageScriptDebugServer.cpp create mode 100755 Source/WebCore/bindings/js/PageScriptDebugServer.h create mode 100755 Source/WebCore/bindings/js/WorkerScriptDebugServer.cpp create mode 100755 Source/WebCore/bindings/js/WorkerScriptDebugServer.h create mode 100755 Source/WebCore/bindings/v8/PageScriptDebugServer.cpp create mode 100755 Source/WebCore/bindings/v8/PageScriptDebugServer.h create mode 100644 Source/WebCore/bindings/v8/RetainedDOMInfo.cpp create mode 100644 Source/WebCore/bindings/v8/RetainedDOMInfo.h create mode 100644 Source/WebCore/bindings/v8/RetainedObjectInfo.h create mode 100755 Source/WebCore/bindings/v8/WorkerScriptDebugServer.cpp create mode 100755 Source/WebCore/bindings/v8/WorkerScriptDebugServer.h create mode 100644 Source/WebCore/bindings/v8/custom/V8InjectedScriptManager.cpp create mode 100644 Source/WebCore/bindings/v8/custom/V8WebKitAnimationCustom.cpp delete mode 100644 Source/WebCore/bridge/jni/JavaMethod.cpp create mode 100644 Source/WebCore/bridge/jni/JavaMethodJobject.cpp create mode 100644 Source/WebCore/bridge/jni/JavaMethodJobject.h create mode 100644 Source/WebCore/bridge/jni/JavaType.h create mode 100644 Source/WebCore/bridge/jni/v8/JavaValueV8.h create mode 100644 Source/WebCore/css/CSSLineBoxContainValue.cpp create mode 100644 Source/WebCore/css/CSSLineBoxContainValue.h create mode 100644 Source/WebCore/css/CSSStyleApplyProperty.cpp create mode 100644 Source/WebCore/css/CSSStyleApplyProperty.h create mode 100644 Source/WebCore/css/fullscreenQuickTime.css create mode 100644 Source/WebCore/css/mediaControlsEfl.css delete mode 100644 Source/WebCore/dom/AsyncScriptRunner.cpp delete mode 100644 Source/WebCore/dom/AsyncScriptRunner.h create mode 100644 Source/WebCore/dom/DataTransferItem.cpp create mode 100644 Source/WebCore/dom/DataTransferItem.h create mode 100644 Source/WebCore/dom/DataTransferItem.idl create mode 100644 Source/WebCore/dom/DataTransferItems.h create mode 100644 Source/WebCore/dom/DataTransferItems.idl create mode 100644 Source/WebCore/dom/EventDispatcher.cpp create mode 100644 Source/WebCore/dom/EventDispatcher.h create mode 100644 Source/WebCore/dom/ScriptRunner.cpp create mode 100644 Source/WebCore/dom/ScriptRunner.h create mode 100644 Source/WebCore/dom/StringCallback.cpp create mode 100644 Source/WebCore/dom/StringCallback.h create mode 100644 Source/WebCore/dom/StringCallback.idl create mode 100755 Source/WebCore/gyp/copy-forwarding-and-icu-headers.sh create mode 100755 Source/WebCore/gyp/copy-inspector-resources.sh create mode 100755 Source/WebCore/gyp/generate-webcore-export-file-generator.sh create mode 100755 Source/WebCore/gyp/run-if-exists.sh create mode 100755 Source/WebCore/gyp/streamline-inspector-source.sh create mode 100755 Source/WebCore/gyp/update-info-plist.sh create mode 100644 Source/WebCore/inspector/DOMNodeHighlighter.cpp create mode 100644 Source/WebCore/inspector/DOMNodeHighlighter.h create mode 100644 Source/WebCore/inspector/InjectedScriptManager.cpp create mode 100644 Source/WebCore/inspector/InjectedScriptManager.h delete mode 100644 Source/WebCore/inspector/Inspector.idl create mode 100644 Source/WebCore/inspector/Inspector.json create mode 100644 Source/WebCore/inspector/InspectorPageAgent.cpp create mode 100644 Source/WebCore/inspector/InspectorPageAgent.h create mode 100755 Source/WebCore/inspector/PageDebuggerAgent.cpp create mode 100755 Source/WebCore/inspector/PageDebuggerAgent.h create mode 100755 Source/WebCore/inspector/WorkerDebuggerAgent.cpp create mode 100755 Source/WebCore/inspector/WorkerDebuggerAgent.h create mode 100644 Source/WebCore/inspector/front-end/Images/garbageCollectButtonGlyph.png create mode 100644 Source/WebCore/inspector/front-end/ResourceJSONView.js create mode 100644 Source/WebCore/inspector/front-end/SourceFile.js create mode 100755 Source/WebCore/inspector/generate-inspector-idl create mode 100644 Source/WebCore/loader/cf/SubresourceLoaderCF.cpp create mode 100644 Source/WebCore/loader/icon/IconDatabaseBase.cpp create mode 100644 Source/WebCore/loader/icon/IconDatabaseBase.h delete mode 100644 Source/WebCore/loader/icon/IconDatabaseNone.cpp create mode 100644 Source/WebCore/manual-tests/autocorrection/close-window-when-correction-is-shown.html delete mode 100644 Source/WebCore/manual-tests/database-callback-deferred.html create mode 100644 Source/WebCore/manual-tests/media-default-playback-rate.html create mode 100644 Source/WebCore/manual-tests/print-after-window-close.html create mode 100644 Source/WebCore/manual-tests/selection-start-after-inserting-line-break-in-textarea.html create mode 100644 Source/WebCore/page/WebKitAnimation.cpp create mode 100644 Source/WebCore/page/WebKitAnimation.h create mode 100644 Source/WebCore/page/WebKitAnimation.idl create mode 100644 Source/WebCore/page/WebKitAnimationList.cpp create mode 100644 Source/WebCore/page/WebKitAnimationList.h create mode 100644 Source/WebCore/page/WebKitAnimationList.idl create mode 100644 Source/WebCore/platform/DefaultLocalizationStrategy.cpp create mode 100644 Source/WebCore/platform/DefaultLocalizationStrategy.h create mode 100644 Source/WebCore/platform/PlatformGestureRecognizer.cpp create mode 100644 Source/WebCore/platform/PlatformGestureRecognizer.h create mode 100644 Source/WebCore/platform/audio/SincResampler.cpp create mode 100644 Source/WebCore/platform/audio/SincResampler.h create mode 100644 Source/WebCore/platform/cf/win/CertificateCFWin.cpp create mode 100644 Source/WebCore/platform/cf/win/CertificateCFWin.h create mode 100644 Source/WebCore/platform/chromium/DataTransferItemChromium.cpp create mode 100644 Source/WebCore/platform/chromium/DataTransferItemChromium.h create mode 100644 Source/WebCore/platform/chromium/DataTransferItemsChromium.cpp create mode 100644 Source/WebCore/platform/chromium/DataTransferItemsChromium.h create mode 100644 Source/WebCore/platform/chromium/TraceEvent.h delete mode 100644 Source/WebCore/platform/chromium/WindowsVersion.cpp delete mode 100644 Source/WebCore/platform/chromium/WindowsVersion.h create mode 100644 Source/WebCore/platform/efl/GeolocationServiceEfl.cpp create mode 100644 Source/WebCore/platform/efl/GeolocationServiceEfl.h create mode 100644 Source/WebCore/platform/graphics/FontPlatformData.cpp create mode 100644 Source/WebCore/platform/graphics/FontPlatformData.h create mode 100644 Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp create mode 100644 Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h create mode 100644 Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundationObjC.h create mode 100644 Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundationObjC.mm create mode 100644 Source/WebCore/platform/graphics/cairo/PlatformContextCairo.cpp create mode 100644 Source/WebCore/platform/graphics/cairo/PlatformContextCairo.h delete mode 100644 Source/WebCore/platform/graphics/cg/FontPlatformData.h create mode 100644 Source/WebCore/platform/graphics/chromium/cc/CCCanvasLayerImpl.cpp create mode 100644 Source/WebCore/platform/graphics/chromium/cc/CCCanvasLayerImpl.h create mode 100644 Source/WebCore/platform/graphics/chromium/cc/CCPluginLayerImpl.cpp create mode 100644 Source/WebCore/platform/graphics/chromium/cc/CCPluginLayerImpl.h create mode 100644 Source/WebCore/platform/graphics/chromium/cc/CCVideoLayerImpl.cpp create mode 100644 Source/WebCore/platform/graphics/chromium/cc/CCVideoLayerImpl.h delete mode 100644 Source/WebCore/platform/graphics/cocoa/FontPlatformData.h create mode 100644 Source/WebCore/platform/graphics/gpu/BicubicShader.cpp create mode 100644 Source/WebCore/platform/graphics/gpu/BicubicShader.h create mode 100644 Source/WebCore/platform/graphics/gpu/ConvolutionShader.cpp create mode 100644 Source/WebCore/platform/graphics/gpu/ConvolutionShader.h delete mode 100644 Source/WebCore/platform/graphics/win/cairo/FontPlatformData.h create mode 100644 Source/WebCore/platform/mac/HTMLConverter.h create mode 100644 Source/WebCore/platform/mac/HTMLConverter.mm create mode 100644 Source/WebCore/platform/mac/SSLKeyGeneratorMac.cpp delete mode 100644 Source/WebCore/platform/mac/SSLKeyGeneratorMac.mm delete mode 100644 Source/WebCore/platform/mac/WebCoreKeyGenerator.h delete mode 100644 Source/WebCore/platform/mac/WebCoreKeyGenerator.m create mode 100644 Source/WebCore/platform/text/TextChecking.h create mode 100644 Source/WebCore/platform/text/TextOrientation.h create mode 100644 Source/WebCore/platform/win/LocalizedStringsWin.cpp create mode 100644 Source/WebCore/platform/win/PathWalker.cpp create mode 100644 Source/WebCore/platform/win/PathWalker.h delete mode 100644 Source/WebCore/storage/IDBBackingStore.cpp create mode 100644 Source/WebCore/storage/IDBDatabaseCallbacksImpl.cpp create mode 100644 Source/WebCore/storage/IDBDatabaseCallbacksImpl.h create mode 100644 Source/WebCore/storage/IDBSQLiteBackingStore.cpp create mode 100644 Source/WebCore/storage/IDBSQLiteBackingStore.h create mode 100644 Source/WebCore/storage/SQLCallbackWrapper.h create mode 100644 Source/WebCore/storage/StorageTracker.cpp create mode 100644 Source/WebCore/storage/StorageTracker.h create mode 100644 Source/WebCore/storage/StorageTrackerClient.h create mode 100755 Source/WebKit/chromium/public/WebSpellCheckClient.h create mode 100644 Source/WebKit/chromium/scripts/generate_devtools_grd.py create mode 100644 Source/WebKit/chromium/tests/WebPageSerializerTest.cpp create mode 100644 Source/WebKit/chromium/tests/data/pageserialization/awesome.png create mode 100644 Source/WebKit/chromium/tests/data/pageserialization/embed_iframe.html create mode 100644 Source/WebKit/chromium/tests/data/pageserialization/object_iframe.html create mode 100644 Source/WebKit/chromium/tests/data/pageserialization/simple_iframe.html create mode 100644 Source/WebKit/chromium/tests/data/pageserialization/simple_page.html create mode 100755 Source/WebKit/chromium/tests/data/pageserialization/top_frame.html create mode 100644 Source/WebKit/efl/DefaultTheme/widget/mediacontrol/mutebutton/mute_button.edc create mode 100644 Source/WebKit/efl/DefaultTheme/widget/mediacontrol/mutebutton/mutebutton.png create mode 100644 Source/WebKit/efl/DefaultTheme/widget/mediacontrol/mutebutton/unmutebutton.png create mode 100755 Source/WebKit/efl/DefaultTheme/widget/mediacontrol/playpausebutton/pausebutton.png create mode 100755 Source/WebKit/efl/DefaultTheme/widget/mediacontrol/playpausebutton/playbutton.png create mode 100644 Source/WebKit/efl/DefaultTheme/widget/mediacontrol/playpausebutton/playpause_button.edc create mode 100644 Source/WebKit/gtk/webkit/webkiticondatabase.cpp create mode 100644 Source/WebKit/gtk/webkit/webkiticondatabase.h create mode 100644 Source/WebKit/mac/Storage/WebStorageManager.mm create mode 100644 Source/WebKit/mac/Storage/WebStorageManagerInternal.h create mode 100644 Source/WebKit/mac/Storage/WebStorageManagerPrivate.h create mode 100644 Source/WebKit/mac/Storage/WebStorageTrackerClient.h create mode 100644 Source/WebKit/mac/Storage/WebStorageTrackerClient.mm create mode 100644 Source/WebKit/mac/WebCoreSupport/CorrectionPanel.h create mode 100644 Source/WebKit/mac/WebCoreSupport/CorrectionPanel.mm delete mode 100644 Source/WebKit/mac/WebCoreSupport/WebKeyGenerator.m create mode 100644 Source/WebKit/mac/WebCoreSupport/WebKeyGenerator.mm create mode 100644 Source/WebKit/qt/WebCoreSupport/IconDatabaseClientQt.cpp create mode 100644 Source/WebKit/qt/WebCoreSupport/IconDatabaseClientQt.h create mode 100644 Source/WebKit/qt/tests/benchmarks/webgl/10000_triangles.html create mode 100644 Source/WebKit/qt/tests/benchmarks/webgl/tst_webgl.cpp create mode 100644 Source/WebKit/qt/tests/benchmarks/webgl/tst_webgl.qrc create mode 100644 Source/WebKit/qt/tests/benchmarks/webgl/webgl.pro create mode 100644 Source/WebKit/qt/tests/qdeclarativewebview/resources/webviewbackgroundcolor.qml create mode 100644 Source/WebKit/qt/tests/qgraphicswebview/resources/pointing_right.html create mode 100644 Source/WebKit/qt/tests/qgraphicswebview/resources/pointing_up.html delete mode 100644 Source/WebKit/win/DOMCreateInstance.cpp delete mode 100644 Source/WebKit/win/DOMCreateInstance.h delete mode 100644 Source/WebKit/win/GEN_DOMObject.cpp delete mode 100644 Source/WebKit/win/GEN_DOMObject.h create mode 100644 Source/WebKit/win/WebKit.vcproj/InterfacesDebug.vsprops create mode 100644 Source/WebKit/win/WebKit.vcproj/InterfacesDebugAll.vsprops create mode 100644 Source/WebKit/win/WebKit.vcproj/InterfacesDebugCairoCFLite.vsprops create mode 100644 Source/WebKit/win/WebKit.vcproj/InterfacesProduction.vsprops create mode 100644 Source/WebKit/win/WebKit.vcproj/InterfacesRelease.vsprops create mode 100644 Source/WebKit/win/WebKit.vcproj/InterfacesReleaseCairoCFLite.vsprops create mode 100644 Source/WebKit/win/WebKit.vcproj/WebKitGUIDDebug.vsprops create mode 100644 Source/WebKit/win/WebKit.vcproj/WebKitGUIDDebugAll.vsprops create mode 100644 Source/WebKit/win/WebKit.vcproj/WebKitGUIDDebugCairoCFLite.vsprops create mode 100644 Source/WebKit/win/WebKit.vcproj/WebKitGUIDProduction.vsprops create mode 100644 Source/WebKit/win/WebKit.vcproj/WebKitGUIDRelease.vsprops create mode 100644 Source/WebKit/win/WebKit.vcproj/WebKitGUIDReleaseCairoCFLite.vsprops create mode 100644 Source/WebKit/win/WebKit.vcproj/WebKitLibDebug.vsprops create mode 100644 Source/WebKit/win/WebKit.vcproj/WebKitLibDebugAll.vsprops create mode 100644 Source/WebKit/win/WebKit.vcproj/WebKitLibDebugCairoCFLite.vsprops create mode 100644 Source/WebKit/win/WebKit.vcproj/WebKitLibProduction.vsprops create mode 100644 Source/WebKit/win/WebKit.vcproj/WebKitLibRelease.vsprops create mode 100644 Source/WebKit/win/WebKit.vcproj/WebKitLibReleaseCairoCFLite.vsprops create mode 100644 Source/WebKit2/Configurations/PluginProcess.xcconfig create mode 100644 Source/WebKit2/Platform/mac/Logging.mac.mm create mode 100644 Source/WebKit2/PluginProcess/Info.plist delete mode 100644 Source/WebKit2/PluginProcess/mac/PluginProcessShim.cpp create mode 100644 Source/WebKit2/PluginProcess/mac/PluginProcessShim.mm create mode 100644 Source/WebKit2/Shared/API/c/cf/WKErrorCF.cpp create mode 100644 Source/WebKit2/Shared/API/c/cf/WKErrorCF.h create mode 100644 Source/WebKit2/Shared/HTTPCookieAcceptPolicy.h create mode 100644 Source/WebKit2/Shared/ResourceCachesToClear.h create mode 100644 Source/WebKit2/UIProcess/API/C/WKIconDatabase.cpp create mode 100644 Source/WebKit2/UIProcess/API/C/WKIconDatabase.h create mode 100644 Source/WebKit2/UIProcess/API/C/WKMediaCacheManager.cpp create mode 100644 Source/WebKit2/UIProcess/API/C/WKMediaCacheManager.h create mode 100644 Source/WebKit2/UIProcess/API/C/cg/WKIconDatabaseCG.cpp create mode 100644 Source/WebKit2/UIProcess/API/C/cg/WKIconDatabaseCG.h delete mode 100644 Source/WebKit2/UIProcess/API/C/win/WKBaseWin.h create mode 100644 Source/WebKit2/UIProcess/API/qt/tests/qwkpage/qwkpage.pro create mode 100644 Source/WebKit2/UIProcess/API/qt/tests/qwkpage/tst_qwkpage.cpp create mode 100644 Source/WebKit2/UIProcess/WebFullScreenManagerProxy.cpp create mode 100644 Source/WebKit2/UIProcess/WebFullScreenManagerProxy.h create mode 100644 Source/WebKit2/UIProcess/WebFullScreenManagerProxy.messages.in create mode 100644 Source/WebKit2/UIProcess/WebIconDatabase.cpp create mode 100644 Source/WebKit2/UIProcess/WebIconDatabase.h create mode 100644 Source/WebKit2/UIProcess/WebIconDatabase.messages.in create mode 100644 Source/WebKit2/UIProcess/WebMediaCacheManagerProxy.cpp create mode 100644 Source/WebKit2/UIProcess/WebMediaCacheManagerProxy.h create mode 100644 Source/WebKit2/UIProcess/WebMediaCacheManagerProxy.messages.in create mode 100644 Source/WebKit2/UIProcess/gtk/WebFullScreenManagerProxyGtk.cpp create mode 100644 Source/WebKit2/UIProcess/mac/CorrectionPanel.h create mode 100644 Source/WebKit2/UIProcess/mac/CorrectionPanel.mm create mode 100644 Source/WebKit2/UIProcess/mac/WKFullScreenWindowController.h create mode 100644 Source/WebKit2/UIProcess/mac/WKFullScreenWindowController.mm create mode 100644 Source/WebKit2/UIProcess/mac/WebCookieManagerProxyMac.mm create mode 100644 Source/WebKit2/UIProcess/mac/WebFullScreenManagerProxyMac.mm create mode 100644 Source/WebKit2/UIProcess/win/WebUndoClient.cpp create mode 100755 Source/WebKit2/UIProcess/win/WebUndoClient.h create mode 100644 Source/WebKit2/WebProcess/Cookies/cf/WebCookieManagerCFNet.cpp create mode 100644 Source/WebKit2/WebProcess/Cookies/curl/WebCookieManagerCurl.cpp create mode 100644 Source/WebKit2/WebProcess/Cookies/gtk/WebCookieManagerGtk.cpp create mode 100644 Source/WebKit2/WebProcess/Cookies/mac/WebCookieManagerMac.mm create mode 100644 Source/WebKit2/WebProcess/Cookies/qt/WebCookieManagerQt.cpp delete mode 100644 Source/WebKit2/WebProcess/Downloads/cf/DownloadCFNet.cpp delete mode 100644 Source/WebKit2/WebProcess/Downloads/cf/win/DownloadCFNetWin.cpp create mode 100644 Source/WebKit2/WebProcess/Downloads/cf/win/DownloadCFWin.cpp create mode 100644 Source/WebKit2/WebProcess/Downloads/cfnet/DownloadCFNet.cpp create mode 100644 Source/WebKit2/WebProcess/Downloads/soup/DownloadSoup.cpp create mode 100644 Source/WebKit2/WebProcess/FullScreen/WebFullScreenManager.cpp create mode 100644 Source/WebKit2/WebProcess/FullScreen/WebFullScreenManager.h create mode 100644 Source/WebKit2/WebProcess/FullScreen/WebFullScreenManager.messages.in create mode 100644 Source/WebKit2/WebProcess/FullScreen/gtk/WebFullScreenManagerGtk.cpp create mode 100644 Source/WebKit2/WebProcess/FullScreen/gtk/WebFullScreenManagerGtk.h create mode 100644 Source/WebKit2/WebProcess/FullScreen/mac/WebFullScreenManagerMac.h create mode 100644 Source/WebKit2/WebProcess/FullScreen/mac/WebFullScreenManagerMac.mm create mode 100644 Source/WebKit2/WebProcess/IconDatabase/WebIconDatabaseProxy.cpp create mode 100644 Source/WebKit2/WebProcess/IconDatabase/WebIconDatabaseProxy.h create mode 100644 Source/WebKit2/WebProcess/IconDatabase/WebIconDatabaseProxy.messages.in create mode 100644 Source/WebKit2/WebProcess/InjectedBundle/API/c/win/WKBundlePrivateWin.cpp create mode 100644 Source/WebKit2/WebProcess/InjectedBundle/API/c/win/WKBundlePrivateWin.h create mode 100644 Source/WebKit2/WebProcess/MediaCache/WebMediaCacheManager.cpp create mode 100644 Source/WebKit2/WebProcess/MediaCache/WebMediaCacheManager.h create mode 100644 Source/WebKit2/WebProcess/MediaCache/WebMediaCacheManager.messages.in delete mode 100644 Source/WebKit2/WebProcess/Plugins/Netscape/gtk/NetscapePluginGtk.cpp delete mode 100644 Source/WebKit2/WebProcess/Plugins/Netscape/qt/NetscapePluginQt.cpp create mode 100644 Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp create mode 100644 Source/WebKit2/WebProcess/WebPage/ca/LayerTreeHostCA.cpp create mode 100644 Source/WebKit2/WebProcess/WebPage/ca/LayerTreeHostCA.h create mode 100644 Source/WebKit2/WebProcess/WebPage/ca/mac/LayerTreeHostCAMac.mm create mode 100644 Source/WebKit2/WebProcess/WebPage/ca/win/LayerTreeHostCAWin.cpp delete mode 100644 Source/WebKit2/WebProcess/WebPage/mac/LayerTreeHostMac.h delete mode 100644 Source/WebKit2/WebProcess/WebPage/mac/LayerTreeHostMac.mm create mode 100644 Source/WebKit2/win/WebKit2Debug.vsprops create mode 100644 Source/WebKit2/win/WebKit2DebugAll.vsprops create mode 100644 Source/WebKit2/win/WebKit2DebugCairoCFLite.vsprops create mode 100644 Source/WebKit2/win/WebKit2Production.vsprops create mode 100644 Source/WebKit2/win/WebKit2Release.vsprops create mode 100644 Source/WebKit2/win/WebKit2ReleaseCairoCFLite.vsprops create mode 100644 Source/WebKit2/win/WebKit2WebProcessDebug.vsprops create mode 100644 Source/WebKit2/win/WebKit2WebProcessDebugAll.vsprops create mode 100644 Source/WebKit2/win/WebKit2WebProcessDebugCairoCFLite.vsprops create mode 100644 Source/WebKit2/win/WebKit2WebProcessProduction.vsprops create mode 100644 Source/WebKit2/win/WebKit2WebProcessRelease.vsprops create mode 100644 Source/WebKit2/win/WebKit2WebProcessReleaseCairoCFLite.vsprops delete mode 100644 Source/gyp/remove-headers-if-needed.sh delete mode 100644 Source/gyp/run-if-exists.sh delete mode 100755 Source/gyp/update-info-plist.sh create mode 100644 Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksLoader.js create mode 100644 Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksParser.js create mode 100644 Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksParserWorker.js create mode 100644 Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksViewer.css create mode 100644 Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksViewer.js create mode 100644 Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/RecentBuildsLoader.js create mode 100644 Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/Utilities.js create mode 100644 Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/WebInspectorShims.js create mode 100644 Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/index.html create mode 100644 Tools/DumpRenderTree/ForwardingHeaders/wtf/OwnArrayPtr.h create mode 100644 Tools/DumpRenderTree/ForwardingHeaders/wtf/ThreadSafeRefCounted.h delete mode 100644 Tools/DumpRenderTree/ForwardingHeaders/wtf/ThreadSafeShared.h create mode 100644 Tools/DumpRenderTree/StorageTrackerDelegate.h create mode 100644 Tools/DumpRenderTree/StorageTrackerDelegate.mm create mode 100644 Tools/DumpRenderTree/TestNetscapePlugIn/Tests/NPDeallocateCalledBeforeNPShutdown.cpp create mode 100644 Tools/DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePluginDebug.vsprops create mode 100644 Tools/DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePluginDebugAll.vsprops create mode 100644 Tools/DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePluginDebugCairoCFLite.vsprops create mode 100644 Tools/DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePluginProduction.vsprops create mode 100644 Tools/DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePluginRelease.vsprops create mode 100644 Tools/DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePluginReleaseCairoCFLite.vsprops create mode 100644 Tools/DumpRenderTree/win/DumpRenderTreeDebug.vsprops create mode 100644 Tools/DumpRenderTree/win/DumpRenderTreeDebugAll.vsprops create mode 100644 Tools/DumpRenderTree/win/DumpRenderTreeDebugCairoCFLite.vsprops create mode 100644 Tools/DumpRenderTree/win/DumpRenderTreeProduction.vsprops create mode 100644 Tools/DumpRenderTree/win/DumpRenderTreeRelease.vsprops create mode 100644 Tools/DumpRenderTree/win/DumpRenderTreeReleaseCairoCFLite.vsprops create mode 100644 Tools/DumpRenderTree/win/ImageDiffDebug.vsprops create mode 100644 Tools/DumpRenderTree/win/ImageDiffDebugAll.vsprops create mode 100644 Tools/DumpRenderTree/win/ImageDiffDebugCairoCFLite.vsprops create mode 100644 Tools/DumpRenderTree/win/ImageDiffProduction.vsprops create mode 100644 Tools/DumpRenderTree/win/ImageDiffRelease.vsprops create mode 100644 Tools/DumpRenderTree/win/ImageDiffReleaseCairoCFLite.vsprops create mode 100644 Tools/FindSafari/FindSafariDebug.vsprops create mode 100644 Tools/FindSafari/FindSafariDebugAll.vsprops create mode 100644 Tools/FindSafari/FindSafariDebugCairoCFLite.vsprops create mode 100644 Tools/FindSafari/FindSafariProduction.vsprops create mode 100644 Tools/FindSafari/FindSafariRelease.vsprops create mode 100644 Tools/FindSafari/FindSafariReleaseCairoCFLite.vsprops create mode 100644 Tools/FindSafari/FindSafariReleasePGO.vsprops create mode 100644 Tools/MiniBrowser/Configurations/MiniBrowserDebug.vsprops create mode 100644 Tools/MiniBrowser/Configurations/MiniBrowserDebugAll.vsprops create mode 100644 Tools/MiniBrowser/Configurations/MiniBrowserDebugCairoCFLite.vsprops create mode 100644 Tools/MiniBrowser/Configurations/MiniBrowserProduction.vsprops create mode 100644 Tools/MiniBrowser/Configurations/MiniBrowserRelease.vsprops create mode 100644 Tools/MiniBrowser/Configurations/MiniBrowserReleaseCairoCFLite.vsprops create mode 100644 Tools/QtTestBrowser/favicon.png create mode 100755 Tools/Scripts/generate-project-files create mode 100755 Tools/Scripts/read-checksum-from-png create mode 100755 Tools/Scripts/show-pretty-diff create mode 100644 Tools/Scripts/webkitpy/layout_tests/read_checksum_from_png.py create mode 100644 Tools/Scripts/webkitpy/layout_tests/read_checksum_from_png_unittest.py create mode 100644 Tools/Scripts/webkitpy/style/checkers/changelog.py create mode 100644 Tools/Scripts/webkitpy/style/checkers/changelog_unittest.py create mode 100644 Tools/Scripts/webkitpy/tool/steps/attachtobug.py create mode 100644 Tools/TestWebKitAPI/Configurations/TestWebKitAPICFNetwork.vsprops create mode 100644 Tools/TestWebKitAPI/Tests/WebKit2/AboutBlankLoad.cpp create mode 100644 Tools/TestWebKitAPI/Tests/WebKit2/CanHandleRequest.cpp create mode 100644 Tools/TestWebKitAPI/Tests/WebKit2/CanHandleRequest_Bundle.cpp create mode 100644 Tools/TestWebKitAPI/Tests/WebKit2/CookieManager.cpp create mode 100644 Tools/TestWebKitAPI/Tests/WebKit2/SendingMessagesToTheWebProcessBeforeItIsValid.cpp create mode 100644 Tools/TestWebKitAPI/Tests/WebKit2/win/DoNotCopyANullCFURLResponse.cpp create mode 100644 Tools/WebKitAPITest/WebKitAPITestDebug.vsprops create mode 100644 Tools/WebKitAPITest/WebKitAPITestDebugAll.vsprops create mode 100644 Tools/WebKitAPITest/WebKitAPITestDebugCairoCFLite.vsprops create mode 100644 Tools/WebKitAPITest/WebKitAPITestProduction.vsprops create mode 100644 Tools/WebKitAPITest/WebKitAPITestRelease.vsprops create mode 100644 Tools/WebKitAPITest/WebKitAPITestReleaseCairoCFLite.vsprops create mode 100644 Tools/WebKitAPITest/config.h create mode 100644 Tools/WebKitLauncherWin/WebKitLauncherWinDebug.vsprops create mode 100644 Tools/WebKitLauncherWin/WebKitLauncherWinDebugAll.vsprops create mode 100644 Tools/WebKitLauncherWin/WebKitLauncherWinDebugCairoCFLite.vsprops create mode 100644 Tools/WebKitLauncherWin/WebKitLauncherWinProduction.vsprops create mode 100644 Tools/WebKitLauncherWin/WebKitLauncherWinRelease.vsprops create mode 100644 Tools/WebKitLauncherWin/WebKitLauncherWinReleaseCairoCFLite.vsprops create mode 100644 Tools/WebKitTestRunner/Configurations/WebKitTestRunnerCoreGraphics.vsprops create mode 100644 Tools/WebKitTestRunner/cairo/TestInvocationCairo.cpp create mode 100644 Tools/WebKitTestRunner/cg/TestInvocationCG.cpp create mode 100644 Tools/WebKitTestRunner/config.h delete mode 100644 Tools/WebKitTestRunner/mac/TestInvocationMac.mm create mode 100644 Tools/WebKitTestRunner/win/InjectedBundleDebug.vsprops create mode 100644 Tools/WebKitTestRunner/win/InjectedBundleDebugAll.vsprops create mode 100644 Tools/WebKitTestRunner/win/InjectedBundleDebugCairoCFLite.vsprops create mode 100644 Tools/WebKitTestRunner/win/InjectedBundleProduction.vsprops create mode 100644 Tools/WebKitTestRunner/win/InjectedBundleRelease.vsprops create mode 100644 Tools/WebKitTestRunner/win/InjectedBundleReleaseCairoCFLite.vsprops create mode 100644 Tools/WebKitTestRunner/win/WebKitTestRunnerDebug.vsprops create mode 100644 Tools/WebKitTestRunner/win/WebKitTestRunnerDebugAll.vsprops create mode 100644 Tools/WebKitTestRunner/win/WebKitTestRunnerDebugCairoCFLite.vsprops create mode 100644 Tools/WebKitTestRunner/win/WebKitTestRunnerProduction.vsprops create mode 100644 Tools/WebKitTestRunner/win/WebKitTestRunnerRelease.vsprops create mode 100644 Tools/WebKitTestRunner/win/WebKitTestRunnerReleaseCairoCFLite.vsprops create mode 100644 Tools/WinLauncher/WinLauncherDebug.vsprops create mode 100644 Tools/WinLauncher/WinLauncherDebugAll.vsprops create mode 100644 Tools/WinLauncher/WinLauncherDebugCairoCFLite.vsprops create mode 100644 Tools/WinLauncher/WinLauncherProduction.vsprops create mode 100644 Tools/WinLauncher/WinLauncherRelease.vsprops create mode 100644 Tools/WinLauncher/WinLauncherReleaseCairoCFLite.vsprops create mode 100644 Tools/record-memory-win/record-memory-winDebug.vsprops create mode 100644 Tools/record-memory-win/record-memory-winDebugAll.vsprops create mode 100644 Tools/record-memory-win/record-memory-winDebugCairoCFLite.vsprops create mode 100644 Tools/record-memory-win/record-memory-winProduction.vsprops create mode 100644 Tools/record-memory-win/record-memory-winRelease.vsprops create mode 100644 Tools/record-memory-win/record-memory-winReleaseCairoCFLite.vsprops delete mode 100644 WebKitLibraries/win/lib/WebKitSystemInterface_debug.lib create mode 100644 WebKitLibraries/win/tools/vsprops/production.vsprops diff --git a/Examples/ChangeLog b/Examples/ChangeLog index b7c0770..80cf1da 100644 --- a/Examples/ChangeLog +++ b/Examples/ChangeLog @@ -1,3 +1,18 @@ +2011-03-17 Jeff Miller + + Use a consistent set of file patterns in the svn:ignore property for all .xcodeproj directories, specifically: + + *.mode* + *.pbxuser + *.perspective* + project.xcworkspace + xcuserdata + + * NetscapeCocoaPlugin/NetscapeCocoaPlugin.xcodeproj: Modified property svn:ignore. + * NetscapeCoreAnimationMoviePlugin/NetscapeCoreAnimationMoviePlugin.xcodeproj: Modified property svn:ignore. + * NetscapeCoreAnimationPlugin/NetscapeCoreAnimationPlugin.xcodeproj: Modified property svn:ignore. + * NetscapeInputMethodPlugin/NetscapeInputMethodPlugin.xcodeproj: Modified property svn:ignore. + 2011-01-17 Dan Bernstein Rubber-stamped by Mark Rowe. diff --git a/LayoutTests/dom/html/level1/core/hc_elementwrongdocumenterr-expected.txt b/LayoutTests/dom/html/level1/core/hc_elementwrongdocumenterr-expected.txt index 7b6e36d..523b7df 100644 --- a/LayoutTests/dom/html/level1/core/hc_elementwrongdocumenterr-expected.txt +++ b/LayoutTests/dom/html/level1/core/hc_elementwrongdocumenterr-expected.txt @@ -1,2 +1,3 @@ -Test: http://www.w3.org/2001/DOM-Test-Suite/level1/core/hc_elementwrongdocumenterr -Status: Success +Test: http://www.w3.org/2001/DOM-Test-Suite/level1/core/hc_elementwrongdocumenterr +Status: failure +Detail: throw_WRONG_DOCUMENT_ERR: assertTrue failed diff --git a/LayoutTests/dom/html/level1/core/hc_namednodemapwrongdocumenterr-expected.txt b/LayoutTests/dom/html/level1/core/hc_namednodemapwrongdocumenterr-expected.txt index 63a88c9..3e453f6 100644 --- a/LayoutTests/dom/html/level1/core/hc_namednodemapwrongdocumenterr-expected.txt +++ b/LayoutTests/dom/html/level1/core/hc_namednodemapwrongdocumenterr-expected.txt @@ -1,2 +1,3 @@ -Test: http://www.w3.org/2001/DOM-Test-Suite/level1/core/hc_namednodemapwrongdocumenterr -Status: Success +Test: http://www.w3.org/2001/DOM-Test-Suite/level1/core/hc_namednodemapwrongdocumenterr +Status: failure +Detail: throw_WRONG_DOCUMENT_ERR: assertTrue failed diff --git a/LayoutTests/dom/xhtml/level1/core/hc_elementwrongdocumenterr-expected.txt b/LayoutTests/dom/xhtml/level1/core/hc_elementwrongdocumenterr-expected.txt index 86c1d64..9870840 100644 --- a/LayoutTests/dom/xhtml/level1/core/hc_elementwrongdocumenterr-expected.txt +++ b/LayoutTests/dom/xhtml/level1/core/hc_elementwrongdocumenterr-expected.txt @@ -1,2 +1,3 @@ Test http://www.w3.org/2001/DOM-Test-Suite/level1/core/hc_elementwrongdocumenterr -Status Success +Status failure +Message throw_WRONG_DOCUMENT_ERR: assertTrue failed diff --git a/LayoutTests/dom/xhtml/level1/core/hc_namednodemapwrongdocumenterr-expected.txt b/LayoutTests/dom/xhtml/level1/core/hc_namednodemapwrongdocumenterr-expected.txt index ab021e2..aea8102 100644 --- a/LayoutTests/dom/xhtml/level1/core/hc_namednodemapwrongdocumenterr-expected.txt +++ b/LayoutTests/dom/xhtml/level1/core/hc_namednodemapwrongdocumenterr-expected.txt @@ -1,2 +1,3 @@ Test http://www.w3.org/2001/DOM-Test-Suite/level1/core/hc_namednodemapwrongdocumenterr -Status Success +Status failure +Message throw_WRONG_DOCUMENT_ERR: assertTrue failed diff --git a/LayoutTests/fast/dom/Geolocation/page-reload-cancel-permission-requests-expected.txt b/LayoutTests/fast/dom/Geolocation/page-reload-cancel-permission-requests-expected.txt new file mode 100644 index 0000000..c7f2d2b --- /dev/null +++ b/LayoutTests/fast/dom/Geolocation/page-reload-cancel-permission-requests-expected.txt @@ -0,0 +1,10 @@ +Tests that when a page is reloaded, the frame is properly detached from the Geolocation object to ensure that no permission requests are in progress. + +On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". + + +PASS numPendingRequests is 0 +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/fast/dom/Geolocation/page-reload-cancel-permission-requests.html b/LayoutTests/fast/dom/Geolocation/page-reload-cancel-permission-requests.html new file mode 100644 index 0000000..5b6aa5c --- /dev/null +++ b/LayoutTests/fast/dom/Geolocation/page-reload-cancel-permission-requests.html @@ -0,0 +1,13 @@ + + + + + + + +

+
+ + + + diff --git a/LayoutTests/fast/dom/Geolocation/resources/page-reload-cancel-permission-requests-inner.html b/LayoutTests/fast/dom/Geolocation/resources/page-reload-cancel-permission-requests-inner.html new file mode 100644 index 0000000..4a4a715 --- /dev/null +++ b/LayoutTests/fast/dom/Geolocation/resources/page-reload-cancel-permission-requests-inner.html @@ -0,0 +1,7 @@ + + + + + + + diff --git a/LayoutTests/fast/dom/Geolocation/resources/window-close-popup.html b/LayoutTests/fast/dom/Geolocation/resources/window-close-popup.html index cfeabae..5370b4c 100644 --- a/LayoutTests/fast/dom/Geolocation/resources/window-close-popup.html +++ b/LayoutTests/fast/dom/Geolocation/resources/window-close-popup.html @@ -11,9 +11,7 @@ function loadNext() { layoutTestController.setMockGeolocationPosition(mockLatitude, mockLongitude, mockAccuracy); } - navigator.geolocation.watchPosition( - function(p) { window.opener.gotPosition(); }, - function(e) { window.opener.failedToCreateWatch(e); }); + navigator.geolocation.watchPosition(window.opener.gotPosition); } diff --git a/LayoutTests/fast/dom/Geolocation/script-tests/page-reload-cancel-permission-requests.js b/LayoutTests/fast/dom/Geolocation/script-tests/page-reload-cancel-permission-requests.js new file mode 100644 index 0000000..7ac291b --- /dev/null +++ b/LayoutTests/fast/dom/Geolocation/script-tests/page-reload-cancel-permission-requests.js @@ -0,0 +1,44 @@ +description("Tests that when a page is reloaded, the frame is properly detached from the Geolocation object " + + "to ensure that no permission requests are in progress."); + +window.jsTestIsAsync = true; + +var numPendingRequests; +var isReload = false; + +if ("#reload" == location.hash) + isReload = true; + +if (window.layoutTestController) { + numPendingRequests = layoutTestController.numberOfPendingGeolocationPermissionRequests(); + shouldBe('numPendingRequests', '0'); + + if (isReload) + finishJSTest(); +} + +if (!isReload) { + // Kick off a position request and then reload the page, this should set up + // a permission request. Permission should be undecided at this point, so the + // permission request should still be outstanding by page reload. + + function onIframeReady() + { + // Make request on remote frame's Geolocation object. + iframe.contentWindow.navigator.geolocation.getCurrentPosition( + function(p) { + testFailed('Permission should not be determined for this page: ' + p); + finishJSTest(); + }); + + location.hash = '#reload'; + location.reload(); + } + + debug("Create IFrame"); + var iframe = document.createElement('iframe'); + iframe.src = 'resources/page-reload-cancel-permission-requests-inner.html'; + document.body.appendChild(iframe); +} + +window.successfullyParsed = true; diff --git a/LayoutTests/fast/dom/Geolocation/script-tests/window-close-crash.js b/LayoutTests/fast/dom/Geolocation/script-tests/window-close-crash.js index b27df61..a8f2bda 100644 --- a/LayoutTests/fast/dom/Geolocation/script-tests/window-close-crash.js +++ b/LayoutTests/fast/dom/Geolocation/script-tests/window-close-crash.js @@ -28,12 +28,6 @@ function waitForWindowToClose() finishJSTest(); } -function failedToCreateWatch(e) -{ - testFailed("Failed to create watch: " + e); - finishJSTest(); -} - debug("Main page opening resources/window-close-popup.html"); otherWindow = window.open("resources/window-close-popup.html"); diff --git a/LayoutTests/fast/dom/HTMLFormElement/invalid-form-field-expected.txt b/LayoutTests/fast/dom/HTMLFormElement/invalid-form-field-expected.txt new file mode 100644 index 0000000..a2dc689 --- /dev/null +++ b/LayoutTests/fast/dom/HTMLFormElement/invalid-form-field-expected.txt @@ -0,0 +1,5 @@ +PASS str is 'threw exception' +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/fast/dom/HTMLFormElement/invalid-form-field.html b/LayoutTests/fast/dom/HTMLFormElement/invalid-form-field.html new file mode 100644 index 0000000..309ab10 --- /dev/null +++ b/LayoutTests/fast/dom/HTMLFormElement/invalid-form-field.html @@ -0,0 +1,45 @@ + + + + + + +
+
+ + + + diff --git a/LayoutTests/fast/dom/HTMLFormElement/move-option-between-documents-expected.txt b/LayoutTests/fast/dom/HTMLFormElement/move-option-between-documents-expected.txt new file mode 100644 index 0000000..da58066 --- /dev/null +++ b/LayoutTests/fast/dom/HTMLFormElement/move-option-between-documents-expected.txt @@ -0,0 +1,5 @@ +PASS typeof select.options.namedItem('option') is 'undefined' +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/fast/dom/HTMLFormElement/move-option-between-documents.html b/LayoutTests/fast/dom/HTMLFormElement/move-option-between-documents.html new file mode 100644 index 0000000..bf8ffd1 --- /dev/null +++ b/LayoutTests/fast/dom/HTMLFormElement/move-option-between-documents.html @@ -0,0 +1,45 @@ + + + + + + +
+
+ + + + diff --git a/LayoutTests/fast/dom/HTMLLinkElement/prefetch-beforeload-expected.txt b/LayoutTests/fast/dom/HTMLLinkElement/prefetch-beforeload-expected.txt new file mode 100644 index 0000000..c7fb018 --- /dev/null +++ b/LayoutTests/fast/dom/HTMLLinkElement/prefetch-beforeload-expected.txt @@ -0,0 +1,2 @@ +PASS beforeload called +This test will only print "PASS" or "FAIL" if link prefetches are enabled, otherwise it will show nothing below. diff --git a/LayoutTests/fast/dom/HTMLLinkElement/prefetch-beforeload.html b/LayoutTests/fast/dom/HTMLLinkElement/prefetch-beforeload.html new file mode 100644 index 0000000..27a62af --- /dev/null +++ b/LayoutTests/fast/dom/HTMLLinkElement/prefetch-beforeload.html @@ -0,0 +1,14 @@ + +
+ + + +

This test will only print "PASS" or "FAIL" if link prefetches are +enabled, otherwise it will show nothing below.

+ + + diff --git a/LayoutTests/fast/dom/HTMLLinkElement/prefetch-onerror-expected.txt b/LayoutTests/fast/dom/HTMLLinkElement/prefetch-onerror-expected.txt new file mode 100644 index 0000000..47fc987 --- /dev/null +++ b/LayoutTests/fast/dom/HTMLLinkElement/prefetch-onerror-expected.txt @@ -0,0 +1,6 @@ +This tests that onerror events can be attached to link elements with rel=prefetch. Since prefetch links are just there as a performance optimization, the onerror/onload event is their only programatic side-effect. + +If it works you should see a message below saying the test has passed. + +PASS onerror was called + diff --git a/LayoutTests/fast/dom/HTMLLinkElement/prefetch-onerror.html b/LayoutTests/fast/dom/HTMLLinkElement/prefetch-onerror.html new file mode 100644 index 0000000..07ced9e --- /dev/null +++ b/LayoutTests/fast/dom/HTMLLinkElement/prefetch-onerror.html @@ -0,0 +1,25 @@ + + + + + + +

This tests that onerror events can be attached to link elements with rel=prefetch. Since prefetch links are just there as a performance optimization, the onerror/onload event is their only programatic side-effect.

+

If it works you should see a message below saying the test has passed.

+ +
+
+ + + diff --git a/LayoutTests/fast/encoding/dumpAsText/utf-16-no-bom-expected.txt b/LayoutTests/fast/encoding/dumpAsText/utf-16-no-bom-expected.txt index 4aea68a..15ca8a8 100644 --- a/LayoutTests/fast/encoding/dumpAsText/utf-16-no-bom-expected.txt +++ b/LayoutTests/fast/encoding/dumpAsText/utf-16-no-bom-expected.txt @@ -2,4 +2,3 @@ This XML file does not appear to have any style information associated with it. Should be "CYRILLIC SMALL LETTER IO" (like e with diaeresis): Ñ‘ - diff --git a/LayoutTests/fast/js/resources/js-constructors-use-correct-global.js b/LayoutTests/fast/js/resources/js-constructors-use-correct-global.js new file mode 100644 index 0000000..df8cb08 --- /dev/null +++ b/LayoutTests/fast/js/resources/js-constructors-use-correct-global.js @@ -0,0 +1,16 @@ +description("Test to ensure that js constructors create objects with the correct constructor"); + +var otherGlobal = document.getElementsByTagName("iframe")[0].contentWindow; +var constructors = ["Object", "Function", "Array", "Number", "String", "Boolean", "RegExp", "Date", "Error", "RangeError", "ReferenceError", "SyntaxError", "TypeError", "URIError", "Image"]; + +for (var i = 0; i < constructors.length; i++) { + shouldBeTrue("new otherGlobal." + constructors[i] + "() instanceof otherGlobal." + constructors[i]); + try { + if ((typeof (otherGlobal[constructors[i]]())) === "object" || (typeof (otherGlobal[constructors[i]]())) === "function") + shouldBeTrue("otherGlobal." + constructors[i] + "() instanceof otherGlobal." + constructors[i]); + } catch(e) { + + } +} + +successfullyParsed = true; diff --git a/LayoutTests/http/tests/appcache/origin-delete-expected.txt b/LayoutTests/http/tests/appcache/origin-delete-expected.txt new file mode 100644 index 0000000..e91767d --- /dev/null +++ b/LayoutTests/http/tests/appcache/origin-delete-expected.txt @@ -0,0 +1,7 @@ +This test checks that application cache groups correctly become obsolete after application cache is deletion for a specific origin. + +PASS - cached iframe-1 +clearing cache for origin +appcache_status=5 +SUCCESS - cache was made obsolete + diff --git a/LayoutTests/http/tests/appcache/origin-delete.html b/LayoutTests/http/tests/appcache/origin-delete.html new file mode 100644 index 0000000..26c4890 --- /dev/null +++ b/LayoutTests/http/tests/appcache/origin-delete.html @@ -0,0 +1,58 @@ + + + + + +

This test checks that application cache groups correctly become obsolete after application cache is deletion for a specific origin. +

+

+
+
diff --git a/LayoutTests/http/tests/appcache/origins-with-appcache-expected.txt b/LayoutTests/http/tests/appcache/origins-with-appcache-expected.txt
new file mode 100644
index 0000000..e3b20f6
--- /dev/null
+++ b/LayoutTests/http/tests/appcache/origins-with-appcache-expected.txt
@@ -0,0 +1,5 @@
+This test verifies that ApplicationCacheStorage can report the set of origins that have an application cache. First, it tests that no origins are reported after all application caches are removed. Then, it loads an iframe that places a PNG into an application cache for the DumpRenderTree origin, and tests that this origin is now reported to have application cache.
+
+Origins with application cache after deletion: 
+Origins with application cache after frame was cached: http_127.0.0.1_8000
+
diff --git a/LayoutTests/http/tests/appcache/origins-with-appcache.html b/LayoutTests/http/tests/appcache/origins-with-appcache.html
new file mode 100644
index 0000000..0730f12
--- /dev/null
+++ b/LayoutTests/http/tests/appcache/origins-with-appcache.html
@@ -0,0 +1,57 @@
+
+
+
+
+
+

+This test verifies that ApplicationCacheStorage can report the set of origins that have an application cache. First, it tests that no origins are reported after all application caches are removed. Then, it loads an iframe that places a PNG into an application cache for the DumpRenderTree origin, and tests that this origin is now reported to have application cache. +

+

+
+
diff --git a/LayoutTests/http/tests/appcache/resources/origin-delete-iframe.html b/LayoutTests/http/tests/appcache/resources/origin-delete-iframe.html
new file mode 100644
index 0000000..e2565f7
--- /dev/null
+++ b/LayoutTests/http/tests/appcache/resources/origin-delete-iframe.html
@@ -0,0 +1,20 @@
+
+
+
diff --git a/LayoutTests/http/tests/appcache/resources/origin-delete-iframe.manifest b/LayoutTests/http/tests/appcache/resources/origin-delete-iframe.manifest
new file mode 100644
index 0000000..6b48448
--- /dev/null
+++ b/LayoutTests/http/tests/appcache/resources/origin-delete-iframe.manifest
@@ -0,0 +1,6 @@
+CACHE MANIFEST
+
+# This adds ~13K to the app cache
+
+CACHE:
+abe.png
diff --git a/LayoutTests/http/tests/appcache/resources/origins-with-appcache-iframe.html b/LayoutTests/http/tests/appcache/resources/origins-with-appcache-iframe.html
new file mode 100644
index 0000000..92cf1ff
--- /dev/null
+++ b/LayoutTests/http/tests/appcache/resources/origins-with-appcache-iframe.html
@@ -0,0 +1,9 @@
+
+
+
diff --git a/LayoutTests/http/tests/appcache/resources/origins-with-appcache-iframe.manifest b/LayoutTests/http/tests/appcache/resources/origins-with-appcache-iframe.manifest
new file mode 100644
index 0000000..6b48448
--- /dev/null
+++ b/LayoutTests/http/tests/appcache/resources/origins-with-appcache-iframe.manifest
@@ -0,0 +1,6 @@
+CACHE MANIFEST
+
+# This adds ~13K to the app cache
+
+CACHE:
+abe.png
diff --git a/LayoutTests/storage/domstorage/localstorage/storagetracker/storage-tracker-1-prepare-expected.txt b/LayoutTests/storage/domstorage/localstorage/storagetracker/storage-tracker-1-prepare-expected.txt
new file mode 100644
index 0000000..5cca432
--- /dev/null
+++ b/LayoutTests/storage/domstorage/localstorage/storagetracker/storage-tracker-1-prepare-expected.txt
@@ -0,0 +1,10 @@
+Prepare for StorageTracker tests by ensuring that every origin with local storage is deleted.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+This test should have no visible output on success.
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/storage/domstorage/localstorage/storagetracker/storage-tracker-1-prepare.html b/LayoutTests/storage/domstorage/localstorage/storagetracker/storage-tracker-1-prepare.html
new file mode 100644
index 0000000..a0a09ff
--- /dev/null
+++ b/LayoutTests/storage/domstorage/localstorage/storagetracker/storage-tracker-1-prepare.html
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+

+
+ + + diff --git a/LayoutTests/storage/domstorage/localstorage/storagetracker/storage-tracker-2-create-expected.txt b/LayoutTests/storage/domstorage/localstorage/storagetracker/storage-tracker-2-create-expected.txt new file mode 100644 index 0000000..5ae4ee1 --- /dev/null +++ b/LayoutTests/storage/domstorage/localstorage/storagetracker/storage-tracker-2-create-expected.txt @@ -0,0 +1,10 @@ +Origin identifier: 'file__0' +StorageTracker test - write local storage for this origin. Should be called after origins-prepare.html. + +On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". + + +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/storage/domstorage/localstorage/storagetracker/storage-tracker-2-create.html b/LayoutTests/storage/domstorage/localstorage/storagetracker/storage-tracker-2-create.html new file mode 100644 index 0000000..20f4f3d --- /dev/null +++ b/LayoutTests/storage/domstorage/localstorage/storagetracker/storage-tracker-2-create.html @@ -0,0 +1,47 @@ + + + + + + + +

+
+ + + diff --git a/LayoutTests/storage/domstorage/localstorage/storagetracker/storage-tracker-3-delete-all-expected.txt b/LayoutTests/storage/domstorage/localstorage/storagetracker/storage-tracker-3-delete-all-expected.txt new file mode 100644 index 0000000..da480d9 --- /dev/null +++ b/LayoutTests/storage/domstorage/localstorage/storagetracker/storage-tracker-3-delete-all-expected.txt @@ -0,0 +1,10 @@ +Test API to view origins that have local storage and to delete local storage by origin. + +On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". + + +PASS layoutTestController.originsWithLocalStorage().toString() is "file__0" +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/storage/domstorage/localstorage/storagetracker/storage-tracker-3-delete-all.html b/LayoutTests/storage/domstorage/localstorage/storagetracker/storage-tracker-3-delete-all.html new file mode 100644 index 0000000..16da440 --- /dev/null +++ b/LayoutTests/storage/domstorage/localstorage/storagetracker/storage-tracker-3-delete-all.html @@ -0,0 +1,47 @@ + + + + + + + +

+
+ + + diff --git a/LayoutTests/storage/domstorage/localstorage/storagetracker/storage-tracker-4-create-expected.txt b/LayoutTests/storage/domstorage/localstorage/storagetracker/storage-tracker-4-create-expected.txt new file mode 100644 index 0000000..ab6ea2b --- /dev/null +++ b/LayoutTests/storage/domstorage/localstorage/storagetracker/storage-tracker-4-create-expected.txt @@ -0,0 +1,11 @@ +Origin identifier: 'file__0' +StorageTracker test - write local storage for this origin. Should be called after storage-tracker-3-delete-all.html. + +On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". + + +This test should have no visible output on success. +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/storage/domstorage/localstorage/storagetracker/storage-tracker-4-create.html b/LayoutTests/storage/domstorage/localstorage/storagetracker/storage-tracker-4-create.html new file mode 100644 index 0000000..c066fb4 --- /dev/null +++ b/LayoutTests/storage/domstorage/localstorage/storagetracker/storage-tracker-4-create.html @@ -0,0 +1,47 @@ + + + + + + + +

+
+ + + diff --git a/LayoutTests/storage/domstorage/localstorage/storagetracker/storage-tracker-5-delete-one-expected.txt b/LayoutTests/storage/domstorage/localstorage/storagetracker/storage-tracker-5-delete-one-expected.txt new file mode 100644 index 0000000..da480d9 --- /dev/null +++ b/LayoutTests/storage/domstorage/localstorage/storagetracker/storage-tracker-5-delete-one-expected.txt @@ -0,0 +1,10 @@ +Test API to view origins that have local storage and to delete local storage by origin. + +On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". + + +PASS layoutTestController.originsWithLocalStorage().toString() is "file__0" +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/storage/domstorage/localstorage/storagetracker/storage-tracker-5-delete-one.html b/LayoutTests/storage/domstorage/localstorage/storagetracker/storage-tracker-5-delete-one.html new file mode 100644 index 0000000..3a61a73 --- /dev/null +++ b/LayoutTests/storage/domstorage/localstorage/storagetracker/storage-tracker-5-delete-one.html @@ -0,0 +1,47 @@ + + + + + + + +

+
+ + + diff --git a/PerformanceTests/ChangeLog b/PerformanceTests/ChangeLog index 02bcc1d..34732ab 100644 --- a/PerformanceTests/ChangeLog +++ b/PerformanceTests/ChangeLog @@ -1,3 +1,17 @@ +2011-03-25 Leo Yang + + Reviewed by Dirk Schulze. + + SVG element performance improvement + https://bugs.webkit.org/show_bug.cgi?id=57077 + + Add a manual test case which is from + http://upload.wikimedia.org/wikipedia/commons/4/4e/Sierpinski_carpet_6.svg + for svg element performance test. + + * PageLoad/svg/files/Sierpinski_carpet_6.svg: Added. + * PageLoad/svg/svg.pltsuite: + 2011-02-05 Eric Seidel Reviewed by Adam Barth. diff --git a/PerformanceTests/PageLoad/svg/files/Sierpinski_carpet_6.svg b/PerformanceTests/PageLoad/svg/files/Sierpinski_carpet_6.svg new file mode 100644 index 0000000..af583a1 --- /dev/null +++ b/PerformanceTests/PageLoad/svg/files/Sierpinski_carpet_6.svg @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PerformanceTests/PageLoad/svg/svg.pltsuite b/PerformanceTests/PageLoad/svg/svg.pltsuite index ca161e8..8242e48 100644 --- a/PerformanceTests/PageLoad/svg/svg.pltsuite +++ b/PerformanceTests/PageLoad/svg/svg.pltsuite @@ -17,3 +17,4 @@ file:///WEBKIT_PATH/PerformanceTests/PageLoad/svg/files/hereGear4.svg file:///WEBKIT_PATH/PerformanceTests/PageLoad/svg/files/mtsthelens.svg file:///WEBKIT_PATH/PerformanceTests/PageLoad/svg/files/world-iso.svg file:///WEBKIT_PATH/PerformanceTests/PageLoad/svg/files/worldcup.svg +file:///WEBKIT_PATH/PerformanceTests/PageLoad/svg/files/Sierpinski_carpet_6.svg diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt index 13ea13c..d6368c0 100644 --- a/Source/CMakeLists.txt +++ b/Source/CMakeLists.txt @@ -23,8 +23,13 @@ INCLUDE(WebKitFeatures) # ----------------------------------------------------------------------------- # Determine which port will be built # ----------------------------------------------------------------------------- -SET(ALL_PORTS Efl) -OPTION(PORT "choose which WebKit port to build (one of ${ALL_PORTS})" "NOPORT") +SET(ALL_PORTS Efl WinCE) +SET(PORT "NOPORT" CACHE STRING "choose which WebKit port to build (one of ${ALL_PORTS})") + +LIST(FIND ALL_PORTS ${PORT} RET) +IF (${RET} EQUAL -1) + MESSAGE(FATAL_ERROR "Please choose which WebKit port to build (one of ${ALL_PORTS})") +ENDIF () # ----------------------------------------------------------------------------- # Find common packages (used by all ports) diff --git a/Source/JavaScriptCore/API/APIShims.h b/Source/JavaScriptCore/API/APIShims.h index 26db2dc..2e13851 100644 --- a/Source/JavaScriptCore/API/APIShims.h +++ b/Source/JavaScriptCore/API/APIShims.h @@ -42,7 +42,7 @@ protected: UNUSED_PARAM(registerThread); #if ENABLE(JSC_MULTIPLE_THREADS) if (registerThread) - globalData->heap.machineStackMarker().registerThread(); + globalData->heap.machineThreads().addCurrentThread(); #endif m_globalData->heap.activityCallback()->synchronize(); m_globalData->timeoutChecker.start(); diff --git a/Source/JavaScriptCore/API/JSBase.h b/Source/JavaScriptCore/API/JSBase.h index d962b01..fed54fe 100644 --- a/Source/JavaScriptCore/API/JSBase.h +++ b/Source/JavaScriptCore/API/JSBase.h @@ -80,6 +80,11 @@ typedef struct OpaqueJSValue* JSObjectRef; #define JS_EXPORT #endif /* defined(JS_NO_EXPORT) */ +/* JS tests uses WTF but has no config.h, so we need to set the export defines here. */ +#ifndef WTF_EXPORT_PRIVATE +#define WTF_EXPORT_PRIVATE JS_EXPORT +#endif + #ifdef __cplusplus extern "C" { #endif diff --git a/Source/JavaScriptCore/API/JSCallbackConstructor.h b/Source/JavaScriptCore/API/JSCallbackConstructor.h index cd307a6..001c416 100644 --- a/Source/JavaScriptCore/API/JSCallbackConstructor.h +++ b/Source/JavaScriptCore/API/JSCallbackConstructor.h @@ -39,9 +39,9 @@ public: JSObjectCallAsConstructorCallback callback() const { return m_callback; } static const ClassInfo s_info; - static PassRefPtr createStructure(JSValue proto) + static PassRefPtr createStructure(JSGlobalData& globalData, JSValue proto) { - return Structure::create(proto, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info); + return Structure::create(globalData, proto, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info); } protected: diff --git a/Source/JavaScriptCore/API/JSCallbackFunction.h b/Source/JavaScriptCore/API/JSCallbackFunction.h index d8ae608..11fb95c 100644 --- a/Source/JavaScriptCore/API/JSCallbackFunction.h +++ b/Source/JavaScriptCore/API/JSCallbackFunction.h @@ -39,9 +39,9 @@ public: // InternalFunction mish-mashes constructor and function behavior -- we should // refactor the code so this override isn't necessary - static PassRefPtr createStructure(JSValue proto) + static PassRefPtr createStructure(JSGlobalData& globalData, JSValue proto) { - return Structure::create(proto, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info); + return Structure::create(globalData, proto, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info); } private: diff --git a/Source/JavaScriptCore/API/JSCallbackObject.h b/Source/JavaScriptCore/API/JSCallbackObject.h index 732cc1d..a0adb44 100644 --- a/Source/JavaScriptCore/API/JSCallbackObject.h +++ b/Source/JavaScriptCore/API/JSCallbackObject.h @@ -128,9 +128,9 @@ public: JSClassRef classRef() const { return m_callbackObjectData->jsClass; } bool inherits(JSClassRef) const; - static PassRefPtr createStructure(JSValue proto) + static PassRefPtr createStructure(JSGlobalData& globalData, JSValue proto) { - return Structure::create(proto, TypeInfo(ObjectType, StructureFlags), Base::AnonymousSlotCount, &s_info); + return Structure::create(globalData, proto, TypeInfo(ObjectType, StructureFlags), Base::AnonymousSlotCount, &s_info); } JSValue getPrivateProperty(const Identifier& propertyName) const diff --git a/Source/JavaScriptCore/API/JSClassRef.cpp b/Source/JavaScriptCore/API/JSClassRef.cpp index d953dce..70668bd 100644 --- a/Source/JavaScriptCore/API/JSClassRef.cpp +++ b/Source/JavaScriptCore/API/JSClassRef.cpp @@ -84,8 +84,9 @@ OpaqueJSClass::OpaqueJSClass(const JSClassDefinition* definition, OpaqueJSClass* // Use a local variable here to sidestep an RVCT compiler bug. StaticValueEntry* entry = new StaticValueEntry(staticValue->getProperty, staticValue->setProperty, staticValue->attributes); StringImpl* impl = valueName.impl(); - impl->ref(); - m_staticValues->add(impl, entry); + StaticValueEntry* existingEntry = m_staticValues->get(impl); + m_staticValues->set(impl, entry); + delete existingEntry; } ++staticValue; } @@ -99,8 +100,9 @@ OpaqueJSClass::OpaqueJSClass(const JSClassDefinition* definition, OpaqueJSClass* // Use a local variable here to sidestep an RVCT compiler bug. StaticFunctionEntry* entry = new StaticFunctionEntry(staticFunction->callAsFunction, staticFunction->attributes); StringImpl* impl = functionName.impl(); - impl->ref(); - m_staticFunctions->add(impl, entry); + StaticFunctionEntry* existingEntry = m_staticFunctions->get(impl); + m_staticFunctions->set(impl, entry); + delete existingEntry; } ++staticFunction; } diff --git a/Source/JavaScriptCore/API/JSClassRef.h b/Source/JavaScriptCore/API/JSClassRef.h index 0f4119a..239c5a4 100644 --- a/Source/JavaScriptCore/API/JSClassRef.h +++ b/Source/JavaScriptCore/API/JSClassRef.h @@ -85,7 +85,7 @@ public: JSC::WeakGCPtr cachedPrototype; }; -struct OpaqueJSClass : public ThreadSafeShared { +struct OpaqueJSClass : public ThreadSafeRefCounted { static PassRefPtr create(const JSClassDefinition*); static PassRefPtr createNoAutomaticPrototype(const JSClassDefinition*); ~OpaqueJSClass(); diff --git a/Source/JavaScriptCore/API/JSContextRef.cpp b/Source/JavaScriptCore/API/JSContextRef.cpp index ccab953..e5c778f 100644 --- a/Source/JavaScriptCore/API/JSContextRef.cpp +++ b/Source/JavaScriptCore/API/JSContextRef.cpp @@ -93,11 +93,11 @@ JSGlobalContextRef JSGlobalContextCreateInGroup(JSContextGroupRef group, JSClass #endif if (!globalObjectClass) { - JSGlobalObject* globalObject = new (globalData.get()) JSGlobalObject; + JSGlobalObject* globalObject = new (globalData.get()) JSGlobalObject(*globalData); return JSGlobalContextRetain(toGlobalRef(globalObject->globalExec())); } - JSGlobalObject* globalObject = new (globalData.get()) JSCallbackObject(globalObjectClass, JSCallbackObject::createStructure(jsNull())); + JSGlobalObject* globalObject = new (globalData.get()) JSCallbackObject(globalObjectClass, JSCallbackObject::createStructure(*globalData, jsNull())); ExecState* exec = globalObject->globalExec(); JSValue prototype = globalObjectClass->prototype(exec); if (!prototype) diff --git a/Source/JavaScriptCore/API/JSObjectRef.cpp b/Source/JavaScriptCore/API/JSObjectRef.cpp index 36ca338..b7030e4 100644 --- a/Source/JavaScriptCore/API/JSObjectRef.cpp +++ b/Source/JavaScriptCore/API/JSObjectRef.cpp @@ -124,7 +124,7 @@ JSObjectRef JSObjectMakeFunction(JSContextRef ctx, JSStringRef name, unsigned pa args.append(jsString(exec, parameterNames[i]->ustring())); args.append(jsString(exec, body->ustring())); - JSObject* result = constructFunction(exec, args, nameID, sourceURL->ustring(), startingLineNumber); + JSObject* result = constructFunction(exec, exec->lexicalGlobalObject(), args, nameID, sourceURL->ustring(), startingLineNumber); if (exec->hadException()) { if (exception) *exception = toRef(exec, exec->exception()); @@ -168,7 +168,7 @@ JSObjectRef JSObjectMakeDate(JSContextRef ctx, size_t argumentCount, const JSVal for (size_t i = 0; i < argumentCount; ++i) argList.append(toJS(exec, arguments[i])); - JSObject* result = constructDate(exec, argList); + JSObject* result = constructDate(exec, exec->lexicalGlobalObject(), argList); if (exec->hadException()) { if (exception) *exception = toRef(exec, exec->exception()); @@ -207,7 +207,7 @@ JSObjectRef JSObjectMakeRegExp(JSContextRef ctx, size_t argumentCount, const JSV for (size_t i = 0; i < argumentCount; ++i) argList.append(toJS(exec, arguments[i])); - JSObject* result = constructRegExp(exec, argList); + JSObject* result = constructRegExp(exec, exec->lexicalGlobalObject(), argList); if (exec->hadException()) { if (exception) *exception = toRef(exec, exec->exception()); diff --git a/Source/JavaScriptCore/API/JSWeakObjectMapRefPrivate.cpp b/Source/JavaScriptCore/API/JSWeakObjectMapRefPrivate.cpp index bc5e383..54dfda6 100644 --- a/Source/JavaScriptCore/API/JSWeakObjectMapRefPrivate.cpp +++ b/Source/JavaScriptCore/API/JSWeakObjectMapRefPrivate.cpp @@ -68,14 +68,11 @@ JSObjectRef JSWeakObjectMapGet(JSContextRef ctx, JSWeakObjectMapRef map, void* k return toRef(static_cast(map->map().get(key))); } -bool JSWeakObjectMapClear(JSContextRef ctx, JSWeakObjectMapRef map, void* key, JSObjectRef object) +// We need to keep this function in the build to keep the nightlies running. +JS_EXPORT bool JSWeakObjectMapClear(JSContextRef, JSWeakObjectMapRef, void*, JSObjectRef); +bool JSWeakObjectMapClear(JSContextRef, JSWeakObjectMapRef, void*, JSObjectRef) { - ExecState* exec = toJS(ctx); - APIEntryShim entryShim(exec); - JSObject* obj = toJS(object); - if (map->map().deprecatedRemove(key, obj)) - return true; - return false; + return true; } #ifdef __cplusplus diff --git a/Source/JavaScriptCore/API/JSWeakObjectMapRefPrivate.h b/Source/JavaScriptCore/API/JSWeakObjectMapRefPrivate.h index bb3fe96..01e0611 100644 --- a/Source/JavaScriptCore/API/JSWeakObjectMapRefPrivate.h +++ b/Source/JavaScriptCore/API/JSWeakObjectMapRefPrivate.h @@ -76,17 +76,6 @@ JS_EXPORT void JSWeakObjectMapSet(JSContextRef ctx, JSWeakObjectMapRef map, void */ JS_EXPORT JSObjectRef JSWeakObjectMapGet(JSContextRef ctx, JSWeakObjectMapRef map, void* key); -/*! - @function - @abstract Clears the association between a key and an object in a JSWeakObjectMapRef - @param ctx The execution context to use. - @param map The map to clear the key association from. - @param key The key to use. - @param object The old object value. - @result Returns true if the key/object association was present in map, and has been removed. - */ -JS_EXPORT bool JSWeakObjectMapClear(JSContextRef ctx, JSWeakObjectMapRef map, void* key, JSObjectRef object); - #ifdef __cplusplus } #endif diff --git a/Source/JavaScriptCore/API/OpaqueJSString.h b/Source/JavaScriptCore/API/OpaqueJSString.h index 473c815..69c0962 100644 --- a/Source/JavaScriptCore/API/OpaqueJSString.h +++ b/Source/JavaScriptCore/API/OpaqueJSString.h @@ -33,7 +33,7 @@ namespace JSC { class JSGlobalData; } -struct OpaqueJSString : public ThreadSafeShared { +struct OpaqueJSString : public ThreadSafeRefCounted { static PassRefPtr create() // null { @@ -54,7 +54,7 @@ struct OpaqueJSString : public ThreadSafeShared { JSC::Identifier identifier(JSC::JSGlobalData*) const; private: - friend class WTF::ThreadSafeShared; + friend class WTF::ThreadSafeRefCounted; OpaqueJSString() : m_characters(0) diff --git a/Source/JavaScriptCore/CMakeLists.txt b/Source/JavaScriptCore/CMakeLists.txt index 97f100e..247d372 100644 --- a/Source/JavaScriptCore/CMakeLists.txt +++ b/Source/JavaScriptCore/CMakeLists.txt @@ -42,6 +42,7 @@ SET(JavaScriptCore_SOURCES bytecompiler/NodesCodegen.cpp collector/handles/HandleHeap.cpp + collector/handles/HandleStack.cpp debugger/Debugger.cpp debugger/DebuggerActivation.cpp diff --git a/Source/JavaScriptCore/ChangeLog b/Source/JavaScriptCore/ChangeLog index 162f23f..7cc1d15 100644 --- a/Source/JavaScriptCore/ChangeLog +++ b/Source/JavaScriptCore/ChangeLog @@ -1,3 +1,3318 @@ +2011-03-30 Oliver Hunt + + Reviewed by Geoffrey Garen. + + Make StructureChain GC allocated + https://bugs.webkit.org/show_bug.cgi?id=56695 + + Make StructureChain GC allocated, and make the various owners + mark it correctly. + + * bytecode/CodeBlock.cpp: + (JSC::CodeBlock::dump): + (JSC::CodeBlock::derefStructures): + (JSC::CodeBlock::refStructures): + (JSC::CodeBlock::markAggregate): + * bytecode/Instruction.h: + (JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::set): + (JSC::PolymorphicAccessStructureList::PolymorphicAccessStructureList): + (JSC::PolymorphicAccessStructureList::derefStructures): + (JSC::PolymorphicAccessStructureList::markAggregate): + (JSC::Instruction::Instruction): + * bytecode/StructureStubInfo.cpp: + (JSC::StructureStubInfo::deref): + (JSC::StructureStubInfo::markAggregate): + * bytecode/StructureStubInfo.h: + (JSC::StructureStubInfo::initGetByIdChain): + (JSC::StructureStubInfo::initPutByIdTransition): + * bytecompiler/BytecodeGenerator.cpp: + (JSC::BytecodeGenerator::emitJumpIfNotFunctionCall): + (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply): + * interpreter/Interpreter.cpp: + (JSC::Interpreter::privateExecute): + * jit/JITOpcodes.cpp: + (JSC::JIT::emit_op_jneq_ptr): + * jit/JITOpcodes32_64.cpp: + (JSC::JIT::emit_op_jneq_ptr): + * jit/JITPropertyAccess.cpp: + (JSC::JIT::privateCompileGetByIdChainList): + * jit/JITPropertyAccess32_64.cpp: + (JSC::JIT::privateCompileGetByIdChainList): + * jit/JITStubs.cpp: + (JSC::getPolymorphicAccessStructureListSlot): + (JSC::DEFINE_STUB_FUNCTION): + * runtime/JSCell.h: + * runtime/JSGlobalData.cpp: + (JSC::JSGlobalData::JSGlobalData): + * runtime/JSGlobalData.h: + * runtime/JSGlobalObject.cpp: + (JSC::markIfNeeded): + * runtime/JSGlobalObject.h: + (JSC::Structure::prototypeChain): + * runtime/JSObject.h: + (JSC::JSObject::markChildrenDirect): + * runtime/JSPropertyNameIterator.cpp: + (JSC::JSPropertyNameIterator::create): + (JSC::JSPropertyNameIterator::get): + (JSC::JSPropertyNameIterator::markChildren): + * runtime/JSPropertyNameIterator.h: + (JSC::JSPropertyNameIterator::setCachedPrototypeChain): + * runtime/MarkStack.h: + (JSC::MarkStack::append): + * runtime/Structure.h: + (JSC::Structure::cachedPrototypeChainSlot): + * runtime/StructureChain.cpp: + (JSC::StructureChain::StructureChain): + * runtime/StructureChain.h: + (JSC::StructureChain::create): + (JSC::StructureChain::createStructure): + +2011-03-30 Steve Falkenburg + + Reviewed by Adam Roben. + + Update Windows production build logic for new production configurations + https://bugs.webkit.org/show_bug.cgi?id=57494 + + * JavaScriptCore.vcproj/JavaScriptCore.make: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreProduction.vsprops: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleasePGO.vsprops: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleasePGOOptimize.vsprops: + * JavaScriptCore.vcproj/WTF/WTFProduction.vsprops: + * JavaScriptCore.vcproj/WTF/WTFReleasePGO.vsprops: + * JavaScriptCore.vcproj/jsc/jscProduction.vsprops: + * JavaScriptCore.vcproj/jsc/jscReleasePGO.vsprops: + * JavaScriptCore.vcproj/testapi/testapiProduction.vsprops: + +2011-03-30 Steve Falkenburg + + Reviewed by Adam Roben. + + Rename Windows configuration Release_LTCG to Production for clarity + https://bugs.webkit.org/show_bug.cgi?id=57465 + + * JavaScriptCore.vcproj/JavaScriptCore.sln: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreProduction.vsprops: Copied from Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleaseLTCG.vsprops. + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleaseLTCG.vsprops: Removed. + * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln: + * JavaScriptCore.vcproj/WTF/WTF.vcproj: + * JavaScriptCore.vcproj/WTF/WTFProduction.vsprops: Copied from Source/JavaScriptCore/JavaScriptCore.vcproj/WTF/WTFReleaseLTCG.vsprops. + * JavaScriptCore.vcproj/WTF/WTFReleaseLTCG.vsprops: Removed. + * JavaScriptCore.vcproj/jsc/jsc.vcproj: + * JavaScriptCore.vcproj/jsc/jscProduction.vsprops: Copied from Source/JavaScriptCore/JavaScriptCore.vcproj/jsc/jscReleaseLTCG.vsprops. + * JavaScriptCore.vcproj/jsc/jscReleaseLTCG.vsprops: Removed. + * JavaScriptCore.vcproj/testapi/testapi.vcproj: + * JavaScriptCore.vcproj/testapi/testapiProduction.vsprops: Copied from Source/JavaScriptCore/JavaScriptCore.vcproj/testapi/testapiReleaseLTCG.vsprops. + * JavaScriptCore.vcproj/testapi/testapiReleaseLTCG.vsprops: Removed. + +2011-03-30 Zoltan Herczeg + + Reviewed by Maciej Stachowiak. + + Add the NEXT_OPCODE() macro to the DFG-JIT parser + https://bugs.webkit.org/show_bug.cgi?id=57322 + + In JavaScriptCore we use macros to jump to the next opcode + (both in interpreter and JIT). This macro is added to the + DFG-JIT parser as well. + + * dfg/DFGByteCodeParser.cpp: + (JSC::DFG::ByteCodeParser::parse): + +2011-03-29 Geoffrey Garen + + Reviewed by Darin Adler. + + ~25% regression on v8-splay in the SunSpider harness + https://bugs.webkit.org/show_bug.cgi?id=56128 + + I'm not sure if this is the root cause of the regression Stephanie + measured, but it seems to get us back to previous v8-splay times. + + SunSpider reports no change. v8-splay says 41% faster. + + * runtime/Heap.cpp: + (JSC::Heap::reset): Make marking proportional to 1X the size of the heap, + not .5X the size of the heap. When the heap is large, this makes a big + difference. (Our old heap growth policy matched this. You can see by + looking at resizeBlocks in revisions prior to r77699.) + +2011-03-29 Steve Falkenburg + + Reviewed by Darin Adler. + + Use per-configuration vsprops in JavaScriptCore to avoid WebKitVSPropsRedirectionDir removal by MSVC IDE + https://bugs.webkit.org/show_bug.cgi?id=57350 + + Visual Studio's IDE was removing instances of $(WebKitVSPropsRedirectionDir) from + InheritedPropertySheet rules in our vcproj files when the vcproj was edited from within + the IDE. To avoid this, add a separate vsprops file for each project configuration that + contains the required inherited property sheets. + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreDebug.vsprops: Added. + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreDebugAll.vsprops: Added. + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreDebugCairoCFLite.vsprops: Added. + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreRelease.vsprops: Added. + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleaseCairoCFLite.vsprops: Added. + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleaseLTCG.vsprops: Added. + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleasePGO.vsprops: Added. + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleasePGOOptimize.vsprops: Added. + * JavaScriptCore.vcproj/WTF/WTF.vcproj: + * JavaScriptCore.vcproj/WTF/WTFDebug.vsprops: Added. + * JavaScriptCore.vcproj/WTF/WTFDebugAll.vsprops: Added. + * JavaScriptCore.vcproj/WTF/WTFDebugCairoCFLite.vsprops: Added. + * JavaScriptCore.vcproj/WTF/WTFRelease.vsprops: Added. + * JavaScriptCore.vcproj/WTF/WTFReleaseCairoCFLite.vsprops: Added. + * JavaScriptCore.vcproj/WTF/WTFReleaseLTCG.vsprops: Added. + * JavaScriptCore.vcproj/WTF/WTFReleasePGO.vsprops: Added. + * JavaScriptCore.vcproj/jsc/jsc.vcproj: + * JavaScriptCore.vcproj/jsc/jscDebug.vsprops: Added. + * JavaScriptCore.vcproj/jsc/jscDebugAll.vsprops: Added. + * JavaScriptCore.vcproj/jsc/jscDebugCairoCFLite.vsprops: Added. + * JavaScriptCore.vcproj/jsc/jscRelease.vsprops: Added. + * JavaScriptCore.vcproj/jsc/jscReleaseCairoCFLite.vsprops: Added. + * JavaScriptCore.vcproj/jsc/jscReleaseLTCG.vsprops: Added. + * JavaScriptCore.vcproj/jsc/jscReleasePGO.vsprops: Added. + * JavaScriptCore.vcproj/testapi/testapi.vcproj: + * JavaScriptCore.vcproj/testapi/testapiDebug.vsprops: Added. + * JavaScriptCore.vcproj/testapi/testapiDebugAll.vsprops: Added. + * JavaScriptCore.vcproj/testapi/testapiDebugCairoCFLite.vsprops: Added. + * JavaScriptCore.vcproj/testapi/testapiRelease.vsprops: Added. + * JavaScriptCore.vcproj/testapi/testapiReleaseCairoCFLite.vsprops: Added. + * JavaScriptCore.vcproj/testapi/testapiReleaseLTCG.vsprops: Added. + +2011-03-29 Oliver Hunt + + Reviewed by Eric Seidel. + + REGRESSION(r82173): Causes assertion and test failures in run-javascriptcore-tests on Windows (Requested by aroben on #webkit). + https://bugs.webkit.org/show_bug.cgi?id=57333 + + constructDate now takes the global object explicitly as it may be called + by functions other than the constructor itself. + + * API/JSObjectRef.cpp: + (JSObjectMakeDate): + * runtime/DateConstructor.cpp: + (JSC::constructDate): + (JSC::constructWithDateConstructor): + * runtime/DateConstructor.h: + +2011-03-29 Ben Taylor + + Reviewed by Benjamin Poulain. + + https://bugs.webkit.org/show_bug.cgi?id=41953 + + Fix compile error on Solaris 10/Sun Studio 12 CC emanating from MathExtras.h + + * wtf/MathExtras.h: + +2011-03-29 Ben Taylor + + Reviewed by Darin Adler. + + https://bugs.webkit.org/show_bug.cgi?id=57231 + Add conditional for SUNCC supporting alignment macros + + Compile fix for Solaris 10/Sun Studio 12 CC + + * wtf/Vector.h: + +2011-03-29 Ben Taylor + + Reviewed by Darin Adler. + + https://bugs.webkit.org/show_bug.cgi?id=57256 + + Fix crash on misaligned reads on Solaris 10/Sparc + + * wtf/text/AtomicString.cpp: + (WTF::equal): + +2011-03-28 Oliver Hunt + + Reviewed by Geoffrey Garen. + + instanceof Array test fails when using iframes + https://bugs.webkit.org/show_bug.cgi?id=17250 + + This is a problem with all built in constructors, the use of + lexicalGlobalObject rather than the constructors own + global object reference means that a builtin will always use + the prototype from the lexical global object rather than that + of the constructors origin. + + * API/JSObjectRef.cpp: + (JSObjectMakeFunction): + (JSObjectMakeRegExp): + * JavaScriptCore.exp: + * runtime/ArrayConstructor.cpp: + (JSC::constructArrayWithSizeQuirk): + * runtime/BooleanConstructor.cpp: + (JSC::constructBoolean): + (JSC::constructBooleanFromImmediateBoolean): + * runtime/BooleanConstructor.h: + * runtime/DateConstructor.cpp: + (JSC::constructDate): + * runtime/DateInstance.cpp: + * runtime/DateInstance.h: + * runtime/ErrorConstructor.cpp: + (JSC::constructWithErrorConstructor): + (JSC::callErrorConstructor): + * runtime/FunctionConstructor.cpp: + (JSC::constructWithFunctionConstructor): + (JSC::callFunctionConstructor): + (JSC::constructFunction): + * runtime/FunctionConstructor.h: + * runtime/JSCell.cpp: + (JSC::JSCell::getOwnPropertySlot): + (JSC::JSCell::put): + (JSC::JSCell::deleteProperty): + (JSC::JSCell::toThisObject): + (JSC::JSCell::toObject): + * runtime/JSCell.h: + (JSC::JSCell::JSValue::toObject): + * runtime/JSNotAnObject.cpp: + (JSC::JSNotAnObject::toObject): + * runtime/JSNotAnObject.h: + * runtime/JSObject.cpp: + (JSC::JSObject::toObject): + * runtime/JSObject.h: + * runtime/JSString.cpp: + (JSC::StringObject::create): + (JSC::JSString::toObject): + (JSC::JSString::toThisObject): + * runtime/JSString.h: + * runtime/JSValue.cpp: + (JSC::JSValue::toObjectSlowCase): + (JSC::JSValue::toThisObjectSlowCase): + (JSC::JSValue::synthesizeObject): + * runtime/JSValue.h: + * runtime/NumberConstructor.cpp: + (JSC::constructWithNumberConstructor): + * runtime/NumberObject.cpp: + (JSC::constructNumber): + * runtime/NumberObject.h: + * runtime/ObjectConstructor.cpp: + (JSC::constructObject): + (JSC::constructWithObjectConstructor): + (JSC::callObjectConstructor): + * runtime/RegExpConstructor.cpp: + (JSC::constructRegExp): + (JSC::constructWithRegExpConstructor): + (JSC::callRegExpConstructor): + * runtime/RegExpConstructor.h: + * runtime/StringConstructor.cpp: + (JSC::constructWithStringConstructor): + * runtime/StringObject.h: + +2011-03-28 Geoffrey Garen + + Reviewed by Oliver Hunt. + + REGRESSION [r78794-r79249] Allocation of memory is slow when number of active objects is large + https://bugs.webkit.org/show_bug.cgi?id=56823 + + Partial fix for most of the problem. (TOT still shows a regression, though.) + + * runtime/Heap.cpp: + (JSC::Heap::reportExtraMemoryCostSlowCase): Use highWaterMark(), instead of + capacity(), since capacity() is O(n) relative to the size of the heap. + + In limited circumstances, capacity() is also worse than highWaterMark() + for measuring extra cost relative to heap size, since capacity() only + measures the *current* capacity of the heap, but the heap will grow if + necessary to attain highWaterMark(). + +2011-03-28 Oliver Hunt + + REGRESSION(r82130): It made all tests crash (Requested by Ossy on #webkit). + https://bugs.webkit.org/show_bug.cgi?id=57251 + + Build fix, had remnant of another patch in r82130 + + * jit/JITPropertyAccess.cpp: + (JSC::JIT::privateCompileGetByIdChainList): + +2011-03-27 Oliver Hunt + + Reviewed by Maciej Stachowiak. + + Add additional immediate types to allow us to distinguish the source of a JIT immediate + https://bugs.webkit.org/show_bug.cgi?id=57190 + + Allow us to distinguish whether a JIT immediate is a value that we + control (TrustedImm32 and TrustedImmPtr) vs. ones that can be controlled + or influenced by code we are compiling. Currently we do nothing with this + information -- this change is large and mechanical but would obscure any + logic changes that we would have made. + + * assembler/AbstractMacroAssembler.h: + (JSC::AbstractMacroAssembler::TrustedImmPtr::TrustedImmPtr): + (JSC::AbstractMacroAssembler::ImmPtr::ImmPtr): + (JSC::AbstractMacroAssembler::TrustedImm32::TrustedImm32): + (JSC::AbstractMacroAssembler::Imm32::Imm32): + * assembler/MacroAssembler.h: + (JSC::MacroAssembler::pop): + (JSC::MacroAssembler::poke): + (JSC::MacroAssembler::branchPtr): + (JSC::MacroAssembler::branch32): + (JSC::MacroAssembler::addPtr): + (JSC::MacroAssembler::andPtr): + (JSC::MacroAssembler::orPtr): + (JSC::MacroAssembler::subPtr): + (JSC::MacroAssembler::xorPtr): + (JSC::MacroAssembler::setPtr): + (JSC::MacroAssembler::storePtr): + (JSC::MacroAssembler::branchTestPtr): + (JSC::MacroAssembler::branchSubPtr): + (JSC::MacroAssembler::branchTest8): + * assembler/MacroAssemblerARM.h: + (JSC::MacroAssemblerARM::add32): + (JSC::MacroAssemblerARM::and32): + (JSC::MacroAssemblerARM::lshift32): + (JSC::MacroAssemblerARM::mul32): + (JSC::MacroAssemblerARM::or32): + (JSC::MacroAssemblerARM::rshift32): + (JSC::MacroAssemblerARM::urshift32): + (JSC::MacroAssemblerARM::sub32): + (JSC::MacroAssemblerARM::xor32): + (JSC::MacroAssemblerARM::store32): + (JSC::MacroAssemblerARM::push): + (JSC::MacroAssemblerARM::move): + (JSC::MacroAssemblerARM::branch8): + (JSC::MacroAssemblerARM::branch32): + (JSC::MacroAssemblerARM::branch32WithUnalignedHalfWords): + (JSC::MacroAssemblerARM::branch16): + (JSC::MacroAssemblerARM::branchTest8): + (JSC::MacroAssemblerARM::branchTest32): + (JSC::MacroAssemblerARM::branchAdd32): + (JSC::MacroAssemblerARM::branchMul32): + (JSC::MacroAssemblerARM::branchSub32): + (JSC::MacroAssemblerARM::set32Compare32): + (JSC::MacroAssemblerARM::set8Compare32): + (JSC::MacroAssemblerARM::set32Test32): + (JSC::MacroAssemblerARM::set32Test8): + (JSC::MacroAssemblerARM::moveWithPatch): + (JSC::MacroAssemblerARM::branchPtrWithPatch): + (JSC::MacroAssemblerARM::storePtrWithPatch): + * assembler/MacroAssemblerARMv7.h: + (JSC::MacroAssemblerARMv7::add32): + (JSC::MacroAssemblerARMv7::and32): + (JSC::MacroAssemblerARMv7::lshift32): + (JSC::MacroAssemblerARMv7::mul32): + (JSC::MacroAssemblerARMv7::or32): + (JSC::MacroAssemblerARMv7::rshift32): + (JSC::MacroAssemblerARMv7::urshift32): + (JSC::MacroAssemblerARMv7::sub32): + (JSC::MacroAssemblerARMv7::xor32): + (JSC::MacroAssemblerARMv7::load32): + (JSC::MacroAssemblerARMv7::load32WithAddressOffsetPatch): + (JSC::MacroAssemblerARMv7::load16): + (JSC::MacroAssemblerARMv7::store32WithAddressOffsetPatch): + (JSC::MacroAssemblerARMv7::store32): + (JSC::MacroAssemblerARMv7::loadDouble): + (JSC::MacroAssemblerARMv7::storeDouble): + (JSC::MacroAssemblerARMv7::push): + (JSC::MacroAssemblerARMv7::move): + (JSC::MacroAssemblerARMv7::compare32): + (JSC::MacroAssemblerARMv7::test32): + (JSC::MacroAssemblerARMv7::branch32): + (JSC::MacroAssemblerARMv7::branch32WithUnalignedHalfWords): + (JSC::MacroAssemblerARMv7::branch16): + (JSC::MacroAssemblerARMv7::branch8): + (JSC::MacroAssemblerARMv7::branchTest32): + (JSC::MacroAssemblerARMv7::branchTest8): + (JSC::MacroAssemblerARMv7::branchAdd32): + (JSC::MacroAssemblerARMv7::branchMul32): + (JSC::MacroAssemblerARMv7::branchSub32): + (JSC::MacroAssemblerARMv7::nearCall): + (JSC::MacroAssemblerARMv7::call): + (JSC::MacroAssemblerARMv7::set32Compare32): + (JSC::MacroAssemblerARMv7::set8Compare32): + (JSC::MacroAssemblerARMv7::set32Test32): + (JSC::MacroAssemblerARMv7::set32Test8): + (JSC::MacroAssemblerARMv7::moveWithPatch): + (JSC::MacroAssemblerARMv7::branchPtrWithPatch): + (JSC::MacroAssemblerARMv7::storePtrWithPatch): + (JSC::MacroAssemblerARMv7::tailRecursiveCall): + (JSC::MacroAssemblerARMv7::makeJump): + (JSC::MacroAssemblerARMv7::makeBranch): + (JSC::MacroAssemblerARMv7::setupArmAddress): + (JSC::MacroAssemblerARMv7::makeBaseIndexBase): + (JSC::MacroAssemblerARMv7::moveFixedWidthEncoding): + * assembler/MacroAssemblerMIPS.h: + (JSC::MacroAssemblerMIPS::add32): + (JSC::MacroAssemblerMIPS::and32): + (JSC::MacroAssemblerMIPS::lshift32): + (JSC::MacroAssemblerMIPS::mul32): + (JSC::MacroAssemblerMIPS::or32): + (JSC::MacroAssemblerMIPS::rshift32): + (JSC::MacroAssemblerMIPS::urshift32): + (JSC::MacroAssemblerMIPS::sub32): + (JSC::MacroAssemblerMIPS::xor32): + (JSC::MacroAssemblerMIPS::load32): + (JSC::MacroAssemblerMIPS::load32WithAddressOffsetPatch): + (JSC::MacroAssemblerMIPS::store32WithAddressOffsetPatch): + (JSC::MacroAssemblerMIPS::store32): + (JSC::MacroAssemblerMIPS::push): + (JSC::MacroAssemblerMIPS::move): + (JSC::MacroAssemblerMIPS::branch8): + (JSC::MacroAssemblerMIPS::branch32): + (JSC::MacroAssemblerMIPS::branch32WithUnalignedHalfWords): + (JSC::MacroAssemblerMIPS::branch16): + (JSC::MacroAssemblerMIPS::branchTest32): + (JSC::MacroAssemblerMIPS::branchTest8): + (JSC::MacroAssemblerMIPS::branchAdd32): + (JSC::MacroAssemblerMIPS::branchMul32): + (JSC::MacroAssemblerMIPS::branchSub32): + (JSC::MacroAssemblerMIPS::set8Compare32): + (JSC::MacroAssemblerMIPS::set32Compare32): + (JSC::MacroAssemblerMIPS::set32Test8): + (JSC::MacroAssemblerMIPS::set32Test32): + (JSC::MacroAssemblerMIPS::moveWithPatch): + (JSC::MacroAssemblerMIPS::branchPtrWithPatch): + (JSC::MacroAssemblerMIPS::storePtrWithPatch): + (JSC::MacroAssemblerMIPS::tailRecursiveCall): + (JSC::MacroAssemblerMIPS::loadDouble): + (JSC::MacroAssemblerMIPS::storeDouble): + (JSC::MacroAssemblerMIPS::branchTruncateDoubleToInt32): + * assembler/MacroAssemblerX86.h: + (JSC::MacroAssemblerX86::add32): + (JSC::MacroAssemblerX86::addWithCarry32): + (JSC::MacroAssemblerX86::and32): + (JSC::MacroAssemblerX86::or32): + (JSC::MacroAssemblerX86::sub32): + (JSC::MacroAssemblerX86::store32): + (JSC::MacroAssemblerX86::branch32): + (JSC::MacroAssemblerX86::moveWithPatch): + (JSC::MacroAssemblerX86::branchPtrWithPatch): + (JSC::MacroAssemblerX86::storePtrWithPatch): + * assembler/MacroAssemblerX86Common.h: + (JSC::MacroAssemblerX86Common::add32): + (JSC::MacroAssemblerX86Common::and32): + (JSC::MacroAssemblerX86Common::lshift32): + (JSC::MacroAssemblerX86Common::mul32): + (JSC::MacroAssemblerX86Common::or32): + (JSC::MacroAssemblerX86Common::rshift32): + (JSC::MacroAssemblerX86Common::urshift32): + (JSC::MacroAssemblerX86Common::sub32): + (JSC::MacroAssemblerX86Common::xor32): + (JSC::MacroAssemblerX86Common::store32): + (JSC::MacroAssemblerX86Common::branchTruncateDoubleToInt32): + (JSC::MacroAssemblerX86Common::push): + (JSC::MacroAssemblerX86Common::move): + (JSC::MacroAssemblerX86Common::branch8): + (JSC::MacroAssemblerX86Common::branch32): + (JSC::MacroAssemblerX86Common::branch32WithUnalignedHalfWords): + (JSC::MacroAssemblerX86Common::branch16): + (JSC::MacroAssemblerX86Common::branchTest32): + (JSC::MacroAssemblerX86Common::branchTest8): + (JSC::MacroAssemblerX86Common::branchAdd32): + (JSC::MacroAssemblerX86Common::branchMul32): + (JSC::MacroAssemblerX86Common::branchSub32): + (JSC::MacroAssemblerX86Common::set8Compare32): + (JSC::MacroAssemblerX86Common::set32Compare32): + (JSC::MacroAssemblerX86Common::set32Test8): + (JSC::MacroAssemblerX86Common::set32Test32): + * assembler/MacroAssemblerX86_64.h: + (JSC::MacroAssemblerX86_64::add32): + (JSC::MacroAssemblerX86_64::and32): + (JSC::MacroAssemblerX86_64::or32): + (JSC::MacroAssemblerX86_64::sub32): + (JSC::MacroAssemblerX86_64::loadDouble): + (JSC::MacroAssemblerX86_64::addDouble): + (JSC::MacroAssemblerX86_64::convertInt32ToDouble): + (JSC::MacroAssemblerX86_64::store32): + (JSC::MacroAssemblerX86_64::call): + (JSC::MacroAssemblerX86_64::tailRecursiveCall): + (JSC::MacroAssemblerX86_64::makeTailRecursiveCall): + (JSC::MacroAssemblerX86_64::addPtr): + (JSC::MacroAssemblerX86_64::andPtr): + (JSC::MacroAssemblerX86_64::orPtr): + (JSC::MacroAssemblerX86_64::subPtr): + (JSC::MacroAssemblerX86_64::xorPtr): + (JSC::MacroAssemblerX86_64::storePtr): + (JSC::MacroAssemblerX86_64::setPtr): + (JSC::MacroAssemblerX86_64::branchPtr): + (JSC::MacroAssemblerX86_64::branchTestPtr): + (JSC::MacroAssemblerX86_64::branchSubPtr): + (JSC::MacroAssemblerX86_64::moveWithPatch): + (JSC::MacroAssemblerX86_64::branchPtrWithPatch): + (JSC::MacroAssemblerX86_64::storePtrWithPatch): + (JSC::MacroAssemblerX86_64::branchTest8): + * dfg/DFGJITCodeGenerator.h: + (JSC::DFG::JITCodeGenerator::callOperation): + * dfg/DFGJITCompiler.cpp: + (JSC::DFG::JITCompiler::jitAssertIsInt32): + (JSC::DFG::JITCompiler::emitCount): + * dfg/DFGJITCompiler.h: + (JSC::DFG::JITCompiler::emitPutImmediateToCallFrameHeader): + * dfg/DFGNonSpeculativeJIT.cpp: + (JSC::DFG::NonSpeculativeJIT::compile): + * dfg/DFGSpeculativeJIT.cpp: + (JSC::DFG::SpeculativeJIT::fillSpeculateCell): + (JSC::DFG::SpeculativeJIT::compile): + * jit/JIT.cpp: + (JSC::JIT::emitTimeoutCheck): + (JSC::JIT::privateCompile): + * jit/JIT.h: + * jit/JITArithmetic.cpp: + (JSC::JIT::emit_op_urshift): + (JSC::JIT::emitSlow_op_urshift): + (JSC::JIT::emit_op_post_inc): + (JSC::JIT::emit_op_post_dec): + (JSC::JIT::emit_op_pre_inc): + (JSC::JIT::emit_op_pre_dec): + (JSC::JIT::emit_op_mod): + * jit/JITArithmetic32_64.cpp: + (JSC::JIT::emit_op_negate): + (JSC::JIT::emit_op_jnless): + (JSC::JIT::emit_op_jless): + (JSC::JIT::emit_op_jlesseq): + (JSC::JIT::emit_op_lshift): + (JSC::JIT::emitRightShift): + (JSC::JIT::emitRightShiftSlowCase): + (JSC::JIT::emit_op_bitand): + (JSC::JIT::emit_op_bitor): + (JSC::JIT::emit_op_bitxor): + (JSC::JIT::emit_op_bitnot): + (JSC::JIT::emit_op_post_inc): + (JSC::JIT::emit_op_post_dec): + (JSC::JIT::emitSlow_op_post_dec): + (JSC::JIT::emit_op_pre_inc): + (JSC::JIT::emit_op_pre_dec): + (JSC::JIT::emit_op_add): + (JSC::JIT::emitAdd32Constant): + (JSC::JIT::emit_op_sub): + (JSC::JIT::emitSub32Constant): + (JSC::JIT::emitBinaryDoubleOp): + (JSC::JIT::emit_op_mul): + (JSC::JIT::emitSlow_op_mul): + (JSC::JIT::emit_op_div): + (JSC::JIT::emit_op_mod): + * jit/JITCall.cpp: + (JSC::JIT::compileOpCallVarargs): + (JSC::JIT::compileOpCall): + (JSC::JIT::compileOpCallSlowCase): + * jit/JITCall32_64.cpp: + (JSC::JIT::compileOpCallVarargs): + (JSC::JIT::emit_op_ret_object_or_this): + (JSC::JIT::compileOpCall): + (JSC::JIT::compileOpCallSlowCase): + * jit/JITInlineMethods.h: + (JSC::JIT::emitPutCellToCallFrameHeader): + (JSC::JIT::emitPutIntToCallFrameHeader): + (JSC::JIT::emitPutImmediateToCallFrameHeader): + (JSC::JIT::emitLoadCharacterString): + (JSC::JIT::restoreArgumentReferenceForTrampoline): + (JSC::JIT::checkStructure): + (JSC::JIT::setSamplingFlag): + (JSC::JIT::clearSamplingFlag): + (JSC::JIT::emitCount): + (JSC::JIT::sampleInstruction): + (JSC::JIT::sampleCodeBlock): + (JSC::JIT::emitStoreInt32): + (JSC::JIT::emitStoreCell): + (JSC::JIT::emitStoreBool): + (JSC::JIT::emitJumpSlowCaseIfNotJSCell): + (JSC::JIT::emitInitRegister): + (JSC::JIT::emitJumpIfJSCell): + (JSC::JIT::emitJumpIfNotJSCell): + (JSC::JIT::emitJumpIfImmediateInteger): + (JSC::JIT::emitJumpIfNotImmediateInteger): + (JSC::JIT::emitFastArithDeTagImmediate): + (JSC::JIT::emitFastArithDeTagImmediateJumpIfZero): + (JSC::JIT::emitFastArithReTagImmediate): + (JSC::JIT::emitTagAsBoolImmediate): + * jit/JITOpcodes.cpp: + (JSC::JIT::privateCompileCTIMachineTrampolines): + (JSC::JIT::privateCompileCTINativeCall): + (JSC::JIT::emit_op_check_has_instance): + (JSC::JIT::emit_op_instanceof): + (JSC::JIT::emit_op_ret_object_or_this): + (JSC::JIT::emit_op_resolve): + (JSC::JIT::emit_op_to_primitive): + (JSC::JIT::emit_op_resolve_base): + (JSC::JIT::emit_op_ensure_property_exists): + (JSC::JIT::emit_op_resolve_skip): + (JSC::JIT::emit_op_resolve_global): + (JSC::JIT::emitSlow_op_resolve_global): + (JSC::JIT::emit_op_not): + (JSC::JIT::emit_op_jfalse): + (JSC::JIT::emit_op_jeq_null): + (JSC::JIT::emit_op_jneq_null): + (JSC::JIT::emit_op_jneq_ptr): + (JSC::JIT::emit_op_jsr): + (JSC::JIT::emit_op_resolve_with_base): + (JSC::JIT::emit_op_new_func_exp): + (JSC::JIT::emit_op_jtrue): + (JSC::JIT::emit_op_get_pnames): + (JSC::JIT::emit_op_next_pname): + (JSC::JIT::emit_op_to_jsnumber): + (JSC::JIT::emit_op_push_new_scope): + (JSC::JIT::emit_op_catch): + (JSC::JIT::emit_op_eq_null): + (JSC::JIT::emit_op_neq_null): + (JSC::JIT::emit_op_init_lazy_reg): + (JSC::JIT::emit_op_convert_this): + (JSC::JIT::emit_op_convert_this_strict): + (JSC::JIT::emitSlow_op_not): + (JSC::JIT::emitSlow_op_neq): + (JSC::JIT::emit_op_get_arguments_length): + (JSC::JIT::emitSlow_op_get_arguments_length): + (JSC::JIT::emit_op_get_argument_by_val): + (JSC::JIT::emitSlow_op_resolve_global_dynamic): + (JSC::JIT::emit_op_new_regexp): + (JSC::JIT::emit_op_load_varargs): + (JSC::JIT::emitSlow_op_load_varargs): + (JSC::JIT::emit_op_new_func): + * jit/JITOpcodes32_64.cpp: + (JSC::JIT::privateCompileCTIMachineTrampolines): + (JSC::JIT::privateCompileCTINativeCall): + (JSC::JIT::emit_op_loop_if_lesseq): + (JSC::JIT::emit_op_check_has_instance): + (JSC::JIT::emit_op_instanceof): + (JSC::JIT::emit_op_get_scoped_var): + (JSC::JIT::emit_op_put_scoped_var): + (JSC::JIT::emit_op_tear_off_activation): + (JSC::JIT::emit_op_tear_off_arguments): + (JSC::JIT::emit_op_resolve): + (JSC::JIT::emit_op_to_primitive): + (JSC::JIT::emit_op_resolve_base): + (JSC::JIT::emit_op_ensure_property_exists): + (JSC::JIT::emit_op_resolve_skip): + (JSC::JIT::emit_op_resolve_global): + (JSC::JIT::emitSlow_op_resolve_global): + (JSC::JIT::emit_op_not): + (JSC::JIT::emit_op_jfalse): + (JSC::JIT::emit_op_jtrue): + (JSC::JIT::emit_op_jeq_null): + (JSC::JIT::emit_op_jneq_null): + (JSC::JIT::emit_op_jneq_ptr): + (JSC::JIT::emit_op_jsr): + (JSC::JIT::emit_op_eq): + (JSC::JIT::emitSlow_op_eq): + (JSC::JIT::emit_op_neq): + (JSC::JIT::emitSlow_op_neq): + (JSC::JIT::compileOpStrictEq): + (JSC::JIT::emit_op_eq_null): + (JSC::JIT::emit_op_neq_null): + (JSC::JIT::emit_op_resolve_with_base): + (JSC::JIT::emit_op_new_func_exp): + (JSC::JIT::emit_op_get_pnames): + (JSC::JIT::emit_op_next_pname): + (JSC::JIT::emit_op_to_jsnumber): + (JSC::JIT::emit_op_push_new_scope): + (JSC::JIT::emit_op_catch): + (JSC::JIT::emit_op_create_activation): + (JSC::JIT::emit_op_create_arguments): + (JSC::JIT::emit_op_convert_this): + (JSC::JIT::emit_op_convert_this_strict): + (JSC::JIT::emit_op_get_arguments_length): + (JSC::JIT::emitSlow_op_get_arguments_length): + (JSC::JIT::emit_op_get_argument_by_val): + (JSC::JIT::softModulo): + * jit/JITPropertyAccess.cpp: + (JSC::JIT::stringGetByValStubGenerator): + (JSC::JIT::emit_op_get_by_val): + (JSC::JIT::emitSlow_op_get_by_val): + (JSC::JIT::emit_op_get_by_pname): + (JSC::JIT::emit_op_put_by_val): + (JSC::JIT::emit_op_put_by_index): + (JSC::JIT::emit_op_put_getter): + (JSC::JIT::emit_op_put_setter): + (JSC::JIT::emit_op_del_by_id): + (JSC::JIT::emit_op_get_by_id): + (JSC::JIT::emit_op_put_by_id): + (JSC::JIT::emit_op_method_check): + (JSC::JIT::compileGetByIdHotPath): + (JSC::JIT::compileGetByIdSlowCase): + (JSC::JIT::emitSlow_op_put_by_id): + (JSC::JIT::testPrototype): + (JSC::JIT::privateCompilePutByIdTransition): + (JSC::JIT::privateCompilePatchGetArrayLength): + (JSC::JIT::privateCompileGetByIdProto): + (JSC::JIT::privateCompileGetByIdSelfList): + (JSC::JIT::privateCompileGetByIdProtoList): + (JSC::JIT::privateCompileGetByIdChainList): + (JSC::JIT::privateCompileGetByIdChain): + * jit/JITPropertyAccess32_64.cpp: + (JSC::JIT::emit_op_put_getter): + (JSC::JIT::emit_op_put_setter): + (JSC::JIT::emit_op_del_by_id): + (JSC::JIT::emit_op_get_by_id): + (JSC::JIT::emit_op_put_by_id): + (JSC::JIT::emit_op_method_check): + (JSC::JIT::stringGetByValStubGenerator): + (JSC::JIT::emit_op_get_by_val): + (JSC::JIT::emitSlow_op_get_by_val): + (JSC::JIT::emit_op_put_by_val): + (JSC::JIT::compileGetByIdHotPath): + (JSC::JIT::compileGetByIdSlowCase): + (JSC::JIT::emitSlow_op_put_by_id): + (JSC::JIT::testPrototype): + (JSC::JIT::privateCompilePutByIdTransition): + (JSC::JIT::privateCompilePatchGetArrayLength): + (JSC::JIT::privateCompileGetByIdProto): + (JSC::JIT::privateCompileGetByIdSelfList): + (JSC::JIT::privateCompileGetByIdProtoList): + (JSC::JIT::privateCompileGetByIdChainList): + (JSC::JIT::privateCompileGetByIdChain): + (JSC::JIT::emit_op_get_by_pname): + * jit/JITStubCall.h: + (JSC::JITStubCall::addArgument): + * jit/JITStubs.cpp: + (JSC::getPolymorphicAccessStructureListSlot): + (JSC::DEFINE_STUB_FUNCTION): + * jit/JSInterfaceJIT.h: + (JSC::JSInterfaceJIT::emitJumpIfNotJSCell): + (JSC::JSInterfaceJIT::emitLoadInt32): + (JSC::JSInterfaceJIT::emitLoadDouble): + * jit/SpecializedThunkJIT.h: + (JSC::SpecializedThunkJIT::SpecializedThunkJIT): + (JSC::SpecializedThunkJIT::loadJSStringArgument): + (JSC::SpecializedThunkJIT::tagReturnAsInt32): + (JSC::SpecializedThunkJIT::tagReturnAsJSCell): + * jit/ThunkGenerators.cpp: + (JSC::charToString): + (JSC::powThunkGenerator): + * yarr/YarrJIT.cpp: + (JSC::Yarr::YarrGenerator::matchCharacterClass): + (JSC::Yarr::YarrGenerator::storeToFrame): + (JSC::Yarr::YarrGenerator::storeToFrameWithPatch): + (JSC::Yarr::YarrGenerator::ParenthesesTail::generateCode): + (JSC::Yarr::YarrGenerator::generatePatternCharacterSingle): + (JSC::Yarr::YarrGenerator::generatePatternCharacterFixed): + (JSC::Yarr::YarrGenerator::generatePatternCharacterGreedy): + (JSC::Yarr::YarrGenerator::generatePatternCharacterNonGreedy): + (JSC::Yarr::YarrGenerator::generateCharacterClassFixed): + (JSC::Yarr::YarrGenerator::generateCharacterClassGreedy): + (JSC::Yarr::YarrGenerator::generateCharacterClassNonGreedy): + (JSC::Yarr::YarrGenerator::generateParenthesesSingle): + (JSC::Yarr::YarrGenerator::generateDisjunction): + +2011-03-28 Andras Becsi + + Reviewed by Csaba Osztrogonác. + + [Qt] Fix the linking of jsc with MinGW after r81963. + + * jsc.pro: add -l and remove the lib suffix. + +2011-03-27 Ben Taylor + + Reviewed by Alexey Proskuryakov. + + https://bugs.webkit.org/show_bug.cgi?id=57170 Fix last elements + in an enum to remove a trailing comma. Sun Studio 12 CC errors out. + + Compile fix only, no actual code change. + + * wtf/MessageQueue.h: + +2011-03-25 Oliver Hunt + + Reviewed by Darin Adler. + + Allow defineOwnProperty to work on DOMObjects + https://bugs.webkit.org/show_bug.cgi?id=57129 + + Fix a couple of places where we uses getter()/setter() rather + than [gs]etterPresent(). + + * runtime/JSObject.cpp: + (JSC::JSObject::defineOwnProperty): + +2011-03-25 Geoffrey Garen + + Reviewed by Oliver Hunt. + + Crash when paused at a breakpoint caused by inaccurate Activation records. + https://bugs.webkit.org/show_bug.cgi?id=57120 + + * runtime/JSActivation.cpp: + (JSC::JSActivation::symbolTableGet): + (JSC::JSActivation::symbolTablePut): + (JSC::JSActivation::getOwnPropertyNames): + (JSC::JSActivation::symbolTablePutWithAttributes): + +2011-03-24 Geoffrey Garen + + Reviewed by Oliver Hunt. + + Crash in debugger beneath MarkStack::drain @ me.com, ibm.com + https://bugs.webkit.org/show_bug.cgi?id=57080 + + + The crash was caused by changes in the executable after recompilation. + + The fix is for the activation to copy the data it needs instead of + relying on the data in the executable. + + SunSpider and v8 report no change. + + * runtime/Arguments.h: + (JSC::JSActivation::copyRegisters): Use our own data members instead of + reading data out of the executable. + + * runtime/JSActivation.cpp: + (JSC::JSActivation::JSActivation): Initialize our data members. + + (JSC::JSActivation::markChildren): + (JSC::JSActivation::symbolTableGet): + (JSC::JSActivation::symbolTablePut): + (JSC::JSActivation::getOwnPropertyNames): + (JSC::JSActivation::symbolTablePutWithAttributes): + (JSC::JSActivation::isDynamicScope): + (JSC::JSActivation::argumentsGetter): Use our own data members instead of + reading data out of the executable. + + * runtime/JSActivation.h: Added new data members to track data previously + tracked by the executable. Since I've removed the executable pointer, + on a 64bit system, I've only made activations bigger by an int. + +2011-03-25 David Kilzer + + Remove duplicate entry from JavaScriptCore.exp + + JSC::createStackOverflowError(JSC::ExecState*) was originally + exported in r60057, then duplicated in r60392. + + * JavaScriptCore.exp: Removed duplicate entry. + +2011-03-25 Jarred Nicholls + + Reviewed by Ariya Hidayat. + + [Qt] MSVC Build Error - need to link advapi32.lib for jsc.exe + https://bugs.webkit.org/show_bug.cgi?id=56098 + + Need to link advapi32.lib for jsc.exe since wtf/OSRandomSource.cpp uses the Win32 Crypto API + + * jsc.pro: + +2011-03-24 Nikolas Zimmermann + + Reviewed by Darin Adler. + + Introduce WTF HexNumber.h + https://bugs.webkit.org/show_bug.cgi?id=56099 + + Introduce a set of functions that ease converting from a bye or a number to a hex string, + replacing several of these conversions and String::format("%x") usages all over WebCore. + + * GNUmakefile.am: Add HexNumber.h to build. + * JavaScriptCore.exp: Export StringBuilder::reserveCapacity. + * JavaScriptCore.gypi: Add HexNumber.h to build. + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export StringBuilder::reserveCapacity. + * JavaScriptCore.vcproj/WTF/WTF.vcproj: Add HexNumber.h to build. + * JavaScriptCore.xcodeproj/project.pbxproj: Ditto. + * wtf/CMakeLists.txt: Ditto. + * wtf/HexNumber.h: Added. + (WTF::Internal::hexDigitsForMode): Internal helper. + (WTF::appendByteAsHex): Free function, that appends a byte as hex string into a destination. + (WTF::placeByteAsHex): Ditto, but places the result using *foo++ = '..' or foo[index++] = '..' + (WTF::appendUnsignedAsHex): Free function, that appends a number as hex string into a destination. + +2011-03-24 Geoffrey Garen + + Windows build fix take 2: Add new symobl. + + (I should have used the EWS bots for this!) + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: + +2011-03-24 Geoffrey Garen + + Windows build fix take 1: Removed old symobl. + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: + +2011-03-24 Geoffrey Garen + + Reviewed by Oliver Hunt. + + Ensure that all compilation takes place within a dynamic global object scope + https://bugs.webkit.org/show_bug.cgi?id=57054 + + + Otherwise, entry to the global object scope might throw away the code + we just compiled, causing a crash. + + * JavaScriptCore.exp: Updated for signature change. + + * debugger/Debugger.cpp: + (JSC::evaluateInGlobalCallFrame): + * debugger/DebuggerCallFrame.cpp: + (JSC::DebuggerCallFrame::evaluate): Removed explicit compilation calls + here because (a) they took place outside a dynamic global object scope + and (b) they were redundant. + + * interpreter/CachedCall.h: + (JSC::CachedCall::CachedCall): Updated for signature change. + + * interpreter/Interpreter.cpp: + (JSC::Interpreter::execute): + (JSC::Interpreter::executeCall): + (JSC::Interpreter::executeConstruct): Declare our dynamic global object + scope earlier, to ensure that compilation takes place within it. + + * runtime/Completion.cpp: + (JSC::evaluate): Removed explicit compilation calls here because (a) + they took place outside a dynamic global object scope and (b) they were + redundant. + + * runtime/Executable.h: + (JSC::EvalExecutable::compile): + (JSC::ProgramExecutable::compile): + (JSC::FunctionExecutable::compileForCall): + (JSC::FunctionExecutable::compileForConstruct): Added an ASSERT to + verify our new invariant that all compilation takes place within a + dynamic global object scope. + + * runtime/JSGlobalObject.cpp: + (JSC::DynamicGlobalObjectScope::DynamicGlobalObjectScope): + * runtime/JSGlobalObject.h: Changed the signature of DynamicGlobalObjectScope + to require a JSGlobalData instead of an ExecState* since it is often + easier to provide the former, and the latter was not necessary. + +2011-03-24 Oliver Hunt + + Reviewed by Geoffrey Garen. + + REGRESSION (r79987-r80210): Crash in JSWeakObjectMapClear + https://bugs.webkit.org/show_bug.cgi?id=55671 + + This is no longer necessary, and it seems that with the new weakmap + model it's simply unsafe, so this reduces it to a no-op. + + * API/JSWeakObjectMapRefPrivate.cpp: + +2011-03-24 Ben Taylor + + Reviewed by Darin Adler. + + https://bugs.webkit.org/show_bug.cgi?id=20302 + Correct implementation of signbit on Solaris + + * wtf/MathExtras.h: + (signbit): + +2011-03-23 Mark Rowe + + Reviewed by Darin Adler. + + Threads that use APIs above the BSD layer must be registered with the Obj-C GC. + + * wtf/ThreadingPthreads.cpp: + (WTF::initializeCurrentThreadInternal): + +2011-03-23 Mark Rowe + + Stop setting OTHER_OPTIONS in JavaScriptCore's Makefile. + + It's not necessary to pass "-target All" as xcodebuild always builds the + first target in the project unless otherwise specified. The presence of + that option also breaks "make clean" since that results in both the + -target and -alltargets options being passed to xcodebuild. + + * Makefile: + +2011-03-23 Pavel Feldman + + Not reviewed: bring back Vector::contains that was removed as a part of roll back. + + * wtf/Vector.h: + (WTF::::contains): + +2011-03-23 Sheriff Bot + + Unreviewed, rolling out r81686. + http://trac.webkit.org/changeset/81686 + https://bugs.webkit.org/show_bug.cgi?id=56914 + + Breaks webkit_tests in Chromium again. (Requested by pfeldman + on #webkit). + + * wtf/Vector.h: + +2011-03-23 Adam Barth + + Reviewed by Eric Seidel. + + JavaScriptCore GYP build should work on a case-sensitive file system + https://bugs.webkit.org/show_bug.cgi?id=56911 + + The issue is that there are two UString.h headers, one named UString.h + and one named ustring.h. This patch excludes ustring.h from the header + map to avoid confusion. While I was editing this part of the GYP file, + I cleaned up the exclude rules to be more modern. + + * gyp/JavaScriptCore.gyp: + +2011-03-22 Geoffrey Garen + + Reviewed by Maciej Stachowiak. + + REGRESSION (r78382): No scripts appear in the Web Inspector's Scripts + panel on Windows, and many inspector regression tests are failing + https://bugs.webkit.org/show_bug.cgi?id=54490 + + The bug was caused by two different classes using the same name (Recompiler). + + * debugger/Debugger.cpp: + * runtime/JSGlobalData.cpp: + (WTF::Recompiler::operator()): Put Recompiler in an anonymous namespace, + so our two recompilers' inline functions don't stomp each other at + link time. + +2011-03-22 Sam Weinig + + Reviewed by Mark Rowe. + + Remove USE_WK_SCROLLBAR_PAINTER_AND_CONTROLLER. + + + * DerivedSources.make: + Remove generation of USE_WK_SCROLLBAR_PAINTER_AND_CONTROLLER. + +2011-03-22 Gabor Loki + + Reviewed by Csaba Osztrogonác. + + [Qt] Add DFG module to build system (disabled by default). + https://bugs.webkit.org/show_bug.cgi?id=56845 + + * JavaScriptCore.pri: + * JavaScriptCore.pro: + +2011-03-22 Eric Seidel + + Reviewed by Adam Barth. + + Add support to build-webkit for building with gyp-generated project files + https://bugs.webkit.org/show_bug.cgi?id=56877 + + Found a couple missing Private headers while trying to make WebCore build. + + * JavaScriptCore.gypi: + +2011-03-22 Eric Seidel + + Reviewed by Adam Barth. + + Make it possible to build JavaScriptCore and WebCore gyp builds outside of Source + https://bugs.webkit.org/show_bug.cgi?id=56867 + + This should make it possible to build the gyp-generated JavaScriptCore.xcodeproj + from a JavaScriptCore directory outside of Source. + + * gyp/JavaScriptCore.gyp: + * gyp/run-if-exists.sh: Added. + * gyp/update-info-plist.sh: Added. + +2011-03-22 Eric Seidel + + Reviewed by Adam Barth. + + Add Profiling Configuration to JavaScriptCore gyp build + https://bugs.webkit.org/show_bug.cgi?id=56862 + + It appears this is identical to Release, but I suspect + there is someone/thing who uses the Profiling target + so we're adding it for completeness. + + * gyp/JavaScriptCore.gyp: + +2011-03-22 Adam Barth + + Reviewed by Eric Seidel. + + Remove os_win32_files variable from the GYP build + https://bugs.webkit.org/show_bug.cgi?id=56804 + + Now that our understanding of GYP is sufficiently advanced, we don't + need os_win32_files any more. (Turns out Eric was right, as he always + is.) + + * JavaScriptCore.gypi: + +2011-03-22 Adam Barth + + Reviewed by Eric Seidel. + + GYP build of JavaScriptCore should be able to link from an empty WebKitBuild directory + https://bugs.webkit.org/show_bug.cgi?id=56803 + + Previously, we thought we should generate the derived source files in + the shared intermediate build products directory, but there are + assumptions built into other parts of the Mac build system that the + derived source files will be generated in a particular subdirectory of + the build products directory. + + This patch is a partial revert of the change that moved the derived + source files to the shared intermediate directory. After this patch, + the GYP build can build JavaScriptCore without help from the main + normal build system. + + * JavaScriptCore.gypi: + * gyp/JavaScriptCore.gyp: + * gyp/generate-derived-sources.sh: + * gyp/generate-dtrace-header.sh: + +2011-03-22 Jay Civelli + + Reviewed by David Levin. + + Adding a contains method to Vector. + https://bugs.webkit.org/show_bug.cgi?id=55859 + + * wtf/Vector.h: + (WTF::Vector::contains): + +2011-03-22 Gabor Loki + + Reviewed by Alexey Proskuryakov. + + Fix a bunch of typos in DFG. + https://bugs.webkit.org/show_bug.cgi?id=56813 + + * dfg/DFGByteCodeParser.cpp: + (JSC::DFG::parse): + * dfg/DFGGenerationInfo.h: + (JSC::DFG::GenerationInfo::setSpilled): + * dfg/DFGGraph.cpp: + (JSC::DFG::Graph::dump): + * dfg/DFGGraph.h: + * dfg/DFGJITCodeGenerator.h: + (JSC::DFG::JITCodeGenerator::setupStubArguments): + * dfg/DFGJITCompiler.cpp: + (JSC::DFG::JITCompiler::compileFunction): + * dfg/DFGJITCompiler.h: + * dfg/DFGNode.h: + * dfg/DFGNonSpeculativeJIT.h: + * dfg/DFGOperations.h: + * dfg/DFGRegisterBank.h: + (JSC::DFG::RegisterBank::allocate): + * dfg/DFGScoreBoard.h: + (JSC::DFG::ScoreBoard::~ScoreBoard): + (JSC::DFG::ScoreBoard::allocate): + * dfg/DFGSpeculativeJIT.cpp: + (JSC::DFG::SpeculativeJIT::compile): + * dfg/DFGSpeculativeJIT.h: + +2011-03-22 Adam Barth + + Reviewed by Eric Seidel. + + Production configuration in GYP isn't set up correctly + https://bugs.webkit.org/show_bug.cgi?id=56786 + + Update JavaScriptCore.gyp with information mined from + JavaScriptCore.xcodeproj. + + * JavaScriptCore.gypi: + * gyp/JavaScriptCore.gyp: + +2011-03-22 Kent Tamura + + Reviewed by Eric Seidel. + + REGRESSION(r80096): Number type input unexpectedly rounds fractional values + https://bugs.webkit.org/show_bug.cgi?id=56367 + + Introduce clampToInteger(unsigned). + + * wtf/MathExtras.h: + (clampToInteger): Added. + +2011-03-21 Adam Barth + + Reviewed by Eric Seidel. + + GYP build should not have include paths that point within the source tree + https://bugs.webkit.org/show_bug.cgi?id=56788 + + Turns out we don't need these include paths anymore now that we have + header maps working properly. + + * gyp/JavaScriptCore.gyp: + - Also, remove jsc.cpp from the excluded list because it's not part + of the jsc_files variable instead of the javascriptcore_files + variable. + +2011-03-21 Adam Barth + + Reviewed by Eric Seidel. + + Solve the Assertions.cpp / -Wno-missing-format-attribute mystery + https://bugs.webkit.org/show_bug.cgi?id=56780 + + The reason we couldn't resolve this warning in the GYP build was that + the normal build disables this warning specifically for this file. + This patch takes the same approach as the previous patch to + WebCoreObjCExtras.mm in that it uses a pragma to suppress the warning + (rather than a build system configuration). + + * JavaScriptCore.xcodeproj/project.pbxproj: + - Remove the special-case for this file. + * gyp/JavaScriptCore.gyp: + - Remove the work-around for this issue. + * wtf/Assertions.cpp: + - Add a pragma disabling this warning for this file. + +2011-03-21 Adam Barth + + Reviewed by Dimitri Glazkov. + + WebCore GYP build shouldn't crash on startup + https://bugs.webkit.org/show_bug.cgi?id=56776 + + Debug builds shouldn't define NDEBUG. This same logic exists in the + project.pbxproj file. + + * gyp/JavaScriptCore.gyp: + +2011-03-21 Robert Kroeger + + Reviewed by Antonio Gomes. + + Flag to enable/disable a GestureReocognizer framework + + https://bugs.webkit.org/show_bug.cgi?id=49345 + + * wtf/Platform.h: + +2011-03-21 Adam Barth + + Reviewed by Dimitri Glazkov. + + Add new files to JavaScriptCore.gypi + https://bugs.webkit.org/show_bug.cgi?id=56766 + + * JavaScriptCore.gypi: + +2011-03-21 Sheriff Bot + + Unreviewed, rolling out r81377. + http://trac.webkit.org/changeset/81377 + https://bugs.webkit.org/show_bug.cgi?id=56765 + + WebPageSerializerTest.MultipleFrames is broken (Requested by + simonjam on #webkit). + + * wtf/Vector.h: + +2011-03-21 Gabor Loki + + Reviewed by Csaba Osztrogonác. + + Extend constant pool to be able to store 16 bit instructions with a constant + https://bugs.webkit.org/show_bug.cgi?id=46796 + + The putShortWithConstantInt function inserts a 16 bit instruction which + refers a 32 bits constant or literal. This is a vital function for those + target which loads a PC relative value with a 16 bit instruction (like + Thumb-2 instruction set and SH4 architecture). + + * assembler/AssemblerBuffer.h: + (JSC::AssemblerBuffer::putIntegral): + (JSC::AssemblerBuffer::putIntegralUnchecked): + * assembler/AssemblerBufferWithConstantPool.h: + +2011-03-21 Philippe Normand + + Unreviewed, GTK distcheck build fix. + + * GNUmakefile.am: + +2011-03-20 Bill Budge + + Reviewed by Adam Barth. + + Rename ThreadSafeShared to ThreadSafeRefCounted + https://bugs.webkit.org/show_bug.cgi?id=56714 + + No new tests. Exposes no new functionality. + + * API/JSClassRef.h: + * API/OpaqueJSString.h: + * GNUmakefile.am: + * JavaScriptCore.gypi: + * JavaScriptCore.vcproj/WTF/WTF.vcproj: + * JavaScriptCore.xcodeproj/project.pbxproj: + * wtf/Atomics.h: + * wtf/CMakeLists.txt: + * wtf/CrossThreadRefCounted.h: + (WTF::CrossThreadRefCounted::CrossThreadRefCounted): + (WTF::::crossThreadCopy): + * wtf/ThreadSafeRefCounted.h: Copied from wtf/ThreadSafeShared.h. + (WTF::ThreadSafeRefCountedBase::ThreadSafeRefCountedBase): + (WTF::ThreadSafeRefCountedBase::ref): + (WTF::ThreadSafeRefCountedBase::refCount): + (WTF::ThreadSafeRefCountedBase::derefBase): + (WTF::ThreadSafeRefCounted::ThreadSafeRefCounted): + * wtf/ThreadSafeShared.h: Removed. + * wtf/Threading.h: + +2011-03-19 Patrick Gansterer + + Reviewed by Darin Adler. + + Remove StringImpl::computeHash() + https://bugs.webkit.org/show_bug.cgi?id=49894 + + Replace remainig StringImpl::computeHash with StringImpl::computeHashStringHasher. + + * wtf/text/AtomicString.cpp: + (WTF::CStringTranslator::hash): + (WTF::UCharBufferTranslator::hash): + (WTF::HashAndCharactersTranslator::hash): + * wtf/text/StringImpl.h: + (WTF::StringImpl::setHash): + (WTF::StringImpl::hash): + +2011-03-19 Patrick Gansterer + + Reviewed by Darin Adler. + + Rename WTF::StringHasher methods + https://bugs.webkit.org/show_bug.cgi?id=53532 + + Rename createHash to computeHash and createBlobHash to hashMemory. + Also add a using WTF::StringHasher in the header file. + + * profiler/CallIdentifier.h: + (JSC::CallIdentifier::Hash::hash): + * runtime/Identifier.cpp: + (JSC::IdentifierCStringTranslator::hash): + (JSC::IdentifierUCharBufferTranslator::hash): + * wtf/StringHasher.h: + (WTF::StringHasher::computeHash): + (WTF::StringHasher::hashMemory): + * wtf/text/StringHash.h: + (WTF::CaseFoldingHash::hash): + * wtf/text/StringImpl.h: + (WTF::StringImpl::computeHash): + * wtf/unicode/UTF8.cpp: + (WTF::Unicode::calculateStringHashAndLengthFromUTF8Internal): + +2011-03-18 Geoffrey Garen + + Reviewed by Oliver Hunt. + + [GTK] JSC crashes in 32bit Release bots after r80743 + https://bugs.webkit.org/show_bug.cgi?id=56180 + + The crash was caused by referencing GC memory from a GC destructor. This + is not safe because destruction time / order is not guaranteed. + + * profiler/ProfileGenerator.cpp: + (JSC::ProfileGenerator::create): + (JSC::ProfileGenerator::ProfileGenerator): + (JSC::ProfileGenerator::willExecute): + (JSC::ProfileGenerator::didExecute): + * profiler/ProfileGenerator.h: + (JSC::ProfileGenerator::origin): Made ExecState* the first argument, + to match the rest of this class and JSC. + + Use a JSGlobalObject* instead of an ExecState* with an indirect reference + to a JSGlobalObject* to track our origin. This is simpler and more + efficient, and it removes the destruction order dependency that was causing + our crash. + + * profiler/Profiler.cpp: + (JSC::Profiler::startProfiling): Updated for change to JSGlobalObject*. + (JSC::Profiler::stopProfiling): New function for stopping all profiles + for a given global object. This is more straight-forward than multiplexing + through the old function. + + (JSC::dispatchFunctionToProfiles): Updated for change to JSGlobalObject*. + * profiler/Profiler.h: Ditto. + + * runtime/JSGlobalObject.cpp: + (JSC::JSGlobalObject::~JSGlobalObject): Ditto. + +2011-03-17 Geoffrey Garen + + Reviewed by Oliver Hunt. + + 1 Structure leaked beneath JSGlobalData::storeVPtrs() + https://bugs.webkit.org/show_bug.cgi?id=56595 + + * runtime/Executable.cpp: + (JSC::EvalExecutable::EvalExecutable): + (JSC::ProgramExecutable::ProgramExecutable): + (JSC::FunctionExecutable::FunctionExecutable): + * runtime/Executable.h: + (JSC::ExecutableBase::ExecutableBase): + (JSC::NativeExecutable::NativeExecutable): + (JSC::VPtrHackExecutable::VPtrHackExecutable): + (JSC::ScriptExecutable::ScriptExecutable): Use a raw pointer instead of + PassRefPtr, like JSString does, since JSGlobalData owns the singleton + exectuable structure. + +2011-03-17 Geoffrey Garen + + Reviewed by Mark Rowe. + + Fixed some string leaks seen on the buildbot + https://bugs.webkit.org/show_bug.cgi?id=56619 + + * runtime/PropertyMapHashTable.h: + (JSC::PropertyTable::~PropertyTable): DEref! + +2011-03-17 Oliver Hunt + + Reviewed by Geoffrey Garen. + + Crash in JSC::MarkStack::drain Under Stress + https://bugs.webkit.org/show_bug.cgi?id=56470 + + We perform a number of gc allocations while when + we are setting up new globals in a piece of global + code. We do this by adding new properties to the + symbol table, and then expanding the storage to fit + at the end. + + If a GC happens during this time we will report an + incorrect size for the global object's symbol table + storage. + + This patch corrects this by growing the storage size + before we starting adding entries to the symbol table. + + * bytecompiler/BytecodeGenerator.cpp: + (JSC::BytecodeGenerator::BytecodeGenerator): + * runtime/JSGlobalObject.cpp: + (JSC::JSGlobalObject::resizeRegisters): + +2011-03-17 Geoffrey Garen + + Reviewed by Oliver Hunt. + + 1 Structure leaked beneath JSGlobalData::storeVPtrs() + https://bugs.webkit.org/show_bug.cgi?id=56595 + + * runtime/JSGlobalData.cpp: + (JSC::JSGlobalData::storeVPtrs): Take local ownership of the Structure + we're using, since the Executable is not designed to own the Structure. + +2011-03-17 Gavin Barraclough + + Rubber Stamped by Sam Weinig. + + Add missing register-register branchTest8 to MacroAssemblerX86Common/X86Assembler. + + * assembler/MacroAssemblerX86Common.h: + (JSC::MacroAssemblerX86Common::branchTest8): + * assembler/X86Assembler.h: + (JSC::X86Assembler::testb_rr): + +2011-03-17 Gavin Barraclough + + Reviewed by Sam Weinig. + + Bug 56603 - DFG JIT related cleanup + Move node generation out to separate function, move binarySearch algorithm out + to StdLibExtras, fix Graph::dump() to print comma between non-node children, + even if there are no node children. + + * bytecode/CodeBlock.h: + (JSC::getCallReturnOffset): + (JSC::CodeBlock::getStubInfo): + (JSC::CodeBlock::getCallLinkInfo): + (JSC::CodeBlock::getMethodCallLinkInfo): + (JSC::CodeBlock::bytecodeOffset): + - Move binaryChop to binarySearch in StdLibExtras + * dfg/DFGByteCodeParser.cpp: + (JSC::DFG::ByteCodeParser::ByteCodeParser): + (JSC::DFG::ByteCodeParser::parse): + (JSC::DFG::parse): + - Make m_noArithmetic a member, initialize m_currentIndex in the constructor. + * dfg/DFGByteCodeParser.h: + - Change parse() to not take a start index (always 0). + * dfg/DFGGraph.cpp: + (JSC::DFG::Graph::dump): + - Fix Graph::dump() to print comma between non-node children, even if there are no node children. + * dfg/DFGJITCodeGenerator.h: + (JSC::DFG::JITCodeGenerator::JITCodeGenerator): + - Initialize m_compileIndex in constructor. + * dfg/DFGNonSpeculativeJIT.cpp: + (JSC::DFG::NonSpeculativeJIT::compile): + * dfg/DFGNonSpeculativeJIT.h: + - Spilt out compilation of individual node. + * dfg/DFGOperations.cpp: + (JSC::DFG::operationConvertThis): + * dfg/DFGOperations.h: + - Cleanup parameter name. + * dfg/DFGSpeculativeJIT.cpp: + (JSC::DFG::SpeculativeJIT::compile): + * dfg/DFGSpeculativeJIT.h: + - Spilt out compilation of individual node. + * runtime/Executable.cpp: + (JSC::tryDFGCompile): + - Change parse() to not take a start index (always 0). + * wtf/StdLibExtras.h: + (WTF::binarySearch): + - Move binaryChop to binarySearch in StdLibExtras + +2011-03-17 Anders Carlsson + + Reviewed by Geoffrey Garen. + + Fix clang build. + + * runtime/JSGlobalData.cpp: + (JSC::JSGlobalData::storeVPtrs): + +2011-03-17 Geoffrey Garen + + Reviewed by Darin Adler. + + 1 Structure leaked beneath JSGlobalData::storeVPtrs() + https://bugs.webkit.org/show_bug.cgi?id=56595 + + * JavaScriptCore.xcodeproj/project.pbxproj: + * runtime/JSGlobalData.cpp: + (JSC::JSGlobalData::storeVPtrs): Now that we have an executable, we need + to explicitly run its destructor. + +2011-03-17 Jeff Miller + + Use a consistent set of file patterns in the svn:ignore property for all .xcodeproj directories, specifically: + + *.mode* + *.pbxuser + *.perspective* + project.xcworkspace + xcuserdata + + * JavaScriptCore.xcodeproj: Modified property svn:ignore. + +2011-03-17 Gavin Barraclough + + Reverting r81197, breaks JIT + INTERPRETER build. + + * bytecode/CodeBlock.cpp: + (JSC::CodeBlock::hasGlobalResolveInstructionAtBytecodeOffset): + (JSC::CodeBlock::hasGlobalResolveInfoAtBytecodeOffset): + * bytecode/CodeBlock.h: + (JSC::CodeBlock::addPropertyAccessInstruction): + (JSC::CodeBlock::addGlobalResolveInstruction): + (JSC::CodeBlock::addStructureStubInfo): + * bytecode/Opcode.h: + * bytecode/StructureStubInfo.h: + * bytecompiler/BytecodeGenerator.cpp: + (JSC::BytecodeGenerator::emitResolve): + (JSC::BytecodeGenerator::emitResolveWithBase): + (JSC::BytecodeGenerator::emitGetById): + (JSC::BytecodeGenerator::emitPutById): + (JSC::BytecodeGenerator::emitDirectPutById): + (JSC::BytecodeGenerator::emitCall): + (JSC::BytecodeGenerator::emitConstruct): + (JSC::BytecodeGenerator::emitCatch): + +2011-03-17 Ben Taylor + + Reviewed by Alexey Proskuryakov. + + Add a COMPILER(SUNCC) define for Sun Studio 12. + https://bugs.webkit.org/show_bug.cgi?56444 + derived from patch 1 of 16 originally from https://bugs.webkit.org/show_bug.cgi?id=24932 + + * wtf/Platform.h: + +2011-03-17 Jay Civelli + + Reviewed by David Levin. + + Adding a contains method to Vector. + https://bugs.webkit.org/show_bug.cgi?id=55859 + + * wtf/Vector.h: + (WTF::::operator): + (WTF::::contains): + +2011-03-17 Patrick Gansterer + + Fix the interpreter build. + + * interpreter/Interpreter.cpp: + (JSC::Interpreter::privateExecute): Added globalData to inheritorID(). + +2011-03-16 Sam Weinig + + Fix the interpreter build. + + * interpreter/Interpreter.cpp: + (JSC::Interpreter::resolve): + (JSC::Interpreter::resolveSkip): + (JSC::Interpreter::resolveGlobal): + (JSC::Interpreter::resolveGlobalDynamic): + (JSC::Interpreter::resolveBaseAndProperty): + (JSC::Interpreter::privateExecute): + Remove .get()s. + +2011-03-16 Adam Barth + + Reviewed by James Robinson. + + Remove USE(BUILTIN_UTF8_CODEC) + https://bugs.webkit.org/show_bug.cgi?id=56508 + + We added this recently when we were unsure about the stability of the + built-in UTF-8 codec. However, the codec seems to be stable, so we + don't need the macro. + + * wtf/Platform.h: + +2011-03-16 Daniel Bates + + Reviewed by Darin Adler. + + Make JIT build for ARM Thumb-2 with RVCT + https://bugs.webkit.org/show_bug.cgi?id=56440 + + Derived from a patch by Dave Tapuska. + + Also, modify the RVCT stub template to indicate that it preserves 8 byte stack alignment. + + * jit/JITStubs.cpp: + +2011-03-16 Chao-ying Fu + + Reviewed by Darin Adler. + + Fix MIPS build with const *void + https://bugs.webkit.org/show_bug.cgi?id=56513 + + * assembler/MacroAssemblerMIPS.h: + (JSC::MacroAssemblerMIPS::load32): + (JSC::MacroAssemblerMIPS::store32): + +2011-03-16 Oliver Hunt + + Reviewed by Darin Adler. + + Remove unnecessary caller tracking shenanigans from CodeBlock + https://bugs.webkit.org/show_bug.cgi?id=56483 + + This removes some leftover cruft from when we made CodeBlock + mark its callees. Removing it gives us a 0.7% progression, + reducing the overall regression to ~1.3%. + + * bytecode/CodeBlock.cpp: + (JSC::CodeBlock::shrinkToFit): + * bytecode/CodeBlock.h: + (JSC::CallLinkInfo::CallLinkInfo): + * jit/JIT.cpp: + (JSC::JIT::linkCall): + (JSC::JIT::linkConstruct): + +2011-03-15 Oliver Hunt + + Reviewed by Geoffrey Garen. + + Make Structure creation require a JSGlobalData + https://bugs.webkit.org/show_bug.cgi?id=56438 + + Mechanical change to make Structure::create require JSGlobalData&, and + require all users to provide the globalData. + + * API/JSCallbackConstructor.h: + (JSC::JSCallbackConstructor::createStructure): + * API/JSCallbackFunction.h: + (JSC::JSCallbackFunction::createStructure): + * API/JSCallbackObject.h: + (JSC::JSCallbackObject::createStructure): + * API/JSContextRef.cpp: + * JavaScriptCore.exp: + * debugger/DebuggerActivation.cpp: + (JSC::DebuggerActivation::DebuggerActivation): + * debugger/DebuggerActivation.h: + (JSC::DebuggerActivation::createStructure): + * jit/JITStubs.cpp: + (JSC::DEFINE_STUB_FUNCTION): + * jsc.cpp: + (GlobalObject::GlobalObject): + (functionRun): + (jscmain): + * runtime/Arguments.h: + (JSC::Arguments::createStructure): + * runtime/ArrayPrototype.h: + (JSC::ArrayPrototype::createStructure): + * runtime/BooleanObject.h: + (JSC::BooleanObject::createStructure): + * runtime/DateInstance.h: + (JSC::DateInstance::createStructure): + * runtime/DatePrototype.h: + (JSC::DatePrototype::createStructure): + * runtime/ErrorInstance.h: + (JSC::ErrorInstance::createStructure): + * runtime/Executable.h: + (JSC::ExecutableBase::createStructure): + (JSC::EvalExecutable::createStructure): + (JSC::ProgramExecutable::createStructure): + (JSC::FunctionExecutable::createStructure): + * runtime/FunctionPrototype.h: + (JSC::FunctionPrototype::createStructure): + * runtime/GetterSetter.h: + (JSC::GetterSetter::createStructure): + * runtime/InternalFunction.h: + (JSC::InternalFunction::createStructure): + * runtime/JSAPIValueWrapper.h: + (JSC::JSAPIValueWrapper::createStructure): + * runtime/JSActivation.h: + (JSC::JSActivation::createStructure): + * runtime/JSArray.cpp: + (JSC::JSArray::JSArray): + * runtime/JSArray.h: + (JSC::JSArray::createStructure): + * runtime/JSByteArray.cpp: + (JSC::JSByteArray::createStructure): + * runtime/JSByteArray.h: + (JSC::JSByteArray::JSByteArray): + * runtime/JSCell.h: + (JSC::JSCell::JSCell::createDummyStructure): + * runtime/JSFunction.h: + (JSC::JSFunction::createStructure): + * runtime/JSGlobalData.cpp: + (JSC::JSGlobalData::storeVPtrs): + (JSC::JSGlobalData::JSGlobalData): + * runtime/JSGlobalObject.cpp: + (JSC::JSGlobalObject::reset): + * runtime/JSGlobalObject.h: + (JSC::JSGlobalObject::JSGlobalObject): + (JSC::JSGlobalObject::createStructure): + * runtime/JSNotAnObject.h: + (JSC::JSNotAnObject::createStructure): + * runtime/JSONObject.h: + (JSC::JSONObject::createStructure): + * runtime/JSObject.cpp: + (JSC::JSObject::createInheritorID): + * runtime/JSObject.h: + (JSC::JSObject::createStructure): + (JSC::JSNonFinalObject::createStructure): + (JSC::JSFinalObject::createStructure): + (JSC::createEmptyObjectStructure): + (JSC::JSObject::inheritorID): + * runtime/JSObjectWithGlobalObject.h: + (JSC::JSObjectWithGlobalObject::createStructure): + * runtime/JSPropertyNameIterator.h: + (JSC::JSPropertyNameIterator::createStructure): + * runtime/JSStaticScopeObject.h: + (JSC::JSStaticScopeObject::createStructure): + * runtime/JSString.h: + (JSC::RopeBuilder::createStructure): + * runtime/JSVariableObject.h: + (JSC::JSVariableObject::createStructure): + * runtime/JSWrapperObject.h: + (JSC::JSWrapperObject::createStructure): + * runtime/JSZombie.h: + (JSC::JSZombie::createStructure): + * runtime/MathObject.h: + (JSC::MathObject::createStructure): + * runtime/NativeErrorConstructor.cpp: + (JSC::NativeErrorConstructor::NativeErrorConstructor): + * runtime/NativeErrorConstructor.h: + (JSC::NativeErrorConstructor::createStructure): + * runtime/NumberConstructor.h: + (JSC::NumberConstructor::createStructure): + * runtime/NumberObject.h: + (JSC::NumberObject::createStructure): + * runtime/ObjectConstructor.h: + (JSC::ObjectConstructor::createStructure): + * runtime/RegExpConstructor.h: + (JSC::RegExpConstructor::createStructure): + * runtime/RegExpObject.h: + (JSC::RegExpObject::createStructure): + * runtime/ScopeChain.h: + (JSC::ScopeChainNode::createStructure): + * runtime/StringObject.h: + (JSC::StringObject::createStructure): + * runtime/StringObjectThatMasqueradesAsUndefined.h: + (JSC::StringObjectThatMasqueradesAsUndefined::createStructure): + * runtime/StringPrototype.h: + (JSC::StringPrototype::createStructure): + * runtime/Structure.h: + (JSC::Structure::create): + +2011-03-16 Geoffrey Garen + + Reviewed by Oliver Hunt. + + Some conservative root gathering cleanup + https://bugs.webkit.org/show_bug.cgi?id=56447 + + SunSpider says 0.5% - 1.8% faster. + + * interpreter/RegisterFile.cpp: + (JSC::RegisterFile::gatherConservativeRoots): + * interpreter/RegisterFile.h: New helper function for doing the + conservative gathering of the register file. It's still conservative, + since the register file may contain uninitialized values, but it's + moving-safe, because it only visits values tagged as pointers, so there's + no risk of mistaking an integer for a pointer and accidentally changing it. + + * runtime/ConservativeSet.cpp: + (JSC::ConservativeRoots::add): + * runtime/ConservativeSet.h: Added a single-value add function, used above. + + * runtime/Heap.cpp: + (JSC::Heap::markRoots): Separated machine stack conservative roots from + register file conservative roots because machine stack roots must be + pinned, but register file roots need not be pinned. + + Adopted new interface for passing the current stack extent to the machine + stack root gathering routine. This allows us to exclude marking-related + data structures on the stack, and thus avoid double-marking the set of + machine roots. + + * runtime/MachineStackMarker.cpp: + (JSC::MachineThreads::gatherFromCurrentThread): + (JSC::MachineThreads::gatherConservativeRoots): + * runtime/MachineStackMarker.h: Added new interface, described above. + + * runtime/MarkedBlock.h: + (JSC::MarkedBlock::firstAtom): + * wtf/StdLibExtras.h: + (WTF::roundUpToMultipleOf): Moved roundUpToMultipleOf so it could be used + by MachineStacks. + +2011-03-16 Geoffrey Garen + + Reviewed by Oliver Hunt. + + A little bit of MarkStack cleanup + https://bugs.webkit.org/show_bug.cgi?id=56443 + + Moved MarkStack functions into MarkStack.h/.cpp. + + SunSpider reports no change. + + * runtime/JSArray.h: + * runtime/JSCell.h: Moved from here... + * runtime/MarkStack.cpp: + (JSC::MarkStack::markChildren): + (JSC::MarkStack::drain): ...to here. Also, no need to inline drain. It's + a huge function, and not called many times. + + * runtime/MarkStack.h: + (JSC::MarkStack::~MarkStack): Moved near constructor, per style guide. + (JSC::MarkStack::append): + (JSC::MarkStack::deprecatedAppend): + (JSC::MarkStack::internalAppend): Moved to here. + +2011-03-15 Geoffrey Garen + + Reviewed by Oliver Hunt. + + Removed another deprecatedAppend + https://bugs.webkit.org/show_bug.cgi?id=56429 + + * collector/handles/HandleHeap.cpp: + (JSC::HandleHeap::markStrongHandles): + * collector/handles/HandleHeap.h: Use HeapRootMarker, since handles are + marked directly by the Heap. + + * runtime/Heap.cpp: + (JSC::Heap::markRoots): Ditto. + +2011-03-15 Geoffrey Garen + + Reviewed by Oliver Hunt. + + Removed some more deprecated / unsafe append + https://bugs.webkit.org/show_bug.cgi?id=56428 + + * collector/handles/HandleStack.cpp: + (JSC::HandleStack::mark): + * collector/handles/HandleStack.h: Mark the handle stack using a HeapRoot + marker, since it's a heap root. + + * runtime/ArgList.cpp: + (JSC::MarkedArgumentBuffer::markLists): + (JSC::MarkedArgumentBuffer::slowAppend): + * runtime/ArgList.h: Ditto. + + * runtime/Heap.cpp: + (JSC::Heap::markRoots): Added a mark call for marking the handle stack. + It seems like Oliver forgot this in his last patch. (!) + + * runtime/MarkStack.h: Removed appendSlots, since it would allow an + object to embed JSValues directly instead of using WriteBarrier. + + (JSC::MarkStack::append): Added a private append for a list of values. + + (JSC::HeapRootMarker::mark): Access to the above. + +2011-03-15 Geoffrey Garen + + Reviewed by Oliver Hunt. + + Removed a few more deprecatedAppends, and removed HeapRoot + https://bugs.webkit.org/show_bug.cgi?id=56422 + + Added HeapRootMarker, a privileged class for marking direct heap roots + that are iterated during each garbage collection. This is easier to use + and more reliable than HeapRoot, so I've removed HeapRoot. + + * debugger/Debugger.cpp: + (JSC::evaluateInGlobalCallFrame): + * debugger/DebuggerCallFrame.cpp: + (JSC::DebuggerCallFrame::evaluate): + * interpreter/CallFrame.h: + (JSC::ExecState::exception): + * jit/JITStubs.cpp: + (JSC::DEFINE_STUB_FUNCTION): + * runtime/Completion.cpp: + (JSC::evaluate): exception is no longer a HeapRoot, so no need to + call .get() on it. + + * runtime/Heap.cpp: + (JSC::Heap::markProtectedObjects): + (JSC::Heap::markTempSortVectors): + (JSC::Heap::markRoots): + * runtime/Heap.h: Updated to use HeapRootMarker. + + * runtime/JSCell.h: + (JSC::JSCell::MarkStack::append): Added private functions for + HeapRootMarker to use. + + * runtime/JSGlobalData.h: exception is no longer a HeapRoot. + + * runtime/MarkStack.h: + (JSC::HeapRootMarker::HeapRootMarker): + (JSC::HeapRootMarker::mark): Added private functions for + HeapRootMarker to use. + + * runtime/SmallStrings.cpp: + (JSC::SmallStrings::markChildren): Updated to use HeapRootMarker. + + * runtime/SmallStrings.h: + (JSC::SmallStrings::emptyString): + (JSC::SmallStrings::singleCharacterString): + (JSC::SmallStrings::singleCharacterStrings): Updated to use HeapRootMarker. + + * runtime/WriteBarrier.h: Removed HeapRoot. + +2011-03-14 Geoffrey Garen + + Reviewed by Oliver Hunt. + + Made the global object moving-GC-safe + https://bugs.webkit.org/show_bug.cgi?id=56348 + + SunSpider reports no change. + + * runtime/JSGlobalObject.cpp: + (JSC::JSGlobalObject::markChildren): Removed a dubious comment that + suggested we do not need to visit all our references during GC, since + that is not true in a moving GC. + + Re-sorted data members by type, removed one duplicate, and added back + the one missing mark I found. + + * runtime/JSGlobalObject.h: Re-sorted data members by type. + +2011-03-15 Oliver Hunt + + Reviewed by Geoffrey Garen. + + Introduce Local to allow us to start moving to precise marking of locals + https://bugs.webkit.org/show_bug.cgi?id=56394 + + Introduce a new handle type, Local and a scoping mechanism + LocalScope to allow us to start moving towards precise marking + of temporaries and local variables. + + We also start to use the new Local<> type in the JSON stringifier + so that we can have some coverage of their behaviour in the initial + checkin. + + * GNUmakefile.am: + * JavaScriptCore.gypi: + * JavaScriptCore.pro: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: + * JavaScriptCore.xcodeproj/project.pbxproj: + * collector/handles/Handle.h: + (JSC::::asObject): + * collector/handles/HandleStack.cpp: Added. + (JSC::HandleStack::HandleStack): + (JSC::HandleStack::mark): + (JSC::HandleStack::grow): + * collector/handles/HandleStack.h: Added. + (JSC::HandleStack::enterScope): + (JSC::HandleStack::zapTo): + (JSC::HandleStack::leaveScope): + (JSC::HandleStack::push): + * collector/handles/Local.h: Added. + (JSC::Local::internalSet): + (JSC::::Local): + (JSC::::operator): + (JSC::LocalStack::LocalStack): + (JSC::LocalStack::peek): + (JSC::LocalStack::pop): + (JSC::LocalStack::push): + (JSC::LocalStack::isEmpty): + (JSC::LocalStack::size): + * collector/handles/LocalScope.h: Added. + (JSC::LocalScope::LocalScope): + (JSC::LocalScope::~LocalScope): + (JSC::LocalScope::release): + * runtime/Heap.cpp: + (JSC::Heap::markRoots): + * runtime/Heap.h: + (JSC::Heap::allocateLocalHandle): + (JSC::Heap::handleStack): + * runtime/JSCell.h: + (JSC::JSCell::::getString): + * runtime/JSGlobalData.cpp: + (JSC::JSGlobalData::JSGlobalData): + * runtime/JSGlobalData.h: + (JSC::JSGlobalData::allocateLocalHandle): + * runtime/JSONObject.cpp: + (JSC::Stringifier::Stringifier): + (JSC::Stringifier::stringify): + (JSC::Stringifier::appendStringifiedValue): + (JSC::Stringifier::Holder::Holder): + (JSC::Walker::Walker): + (JSC::Walker::walk): + (JSC::JSONProtoFuncParse): + (JSC::JSONProtoFuncStringify): + (JSC::JSONStringify): + * runtime/JSONObject.h: + * runtime/MarkStack.h: + (JSC::MarkStack::appendValues): + (JSC::MarkStack::appendSlots): + +2011-03-15 Gavin Barraclough + + Rubber Stamped by Sam Weinig. + + Bug 56420 - Remove ENABLE(JIT) code from ByteCompiler + Some methods have unnecessary differences in name/arguments for interpreter/JIT. + + * bytecode/CodeBlock.cpp: + * bytecode/CodeBlock.h: + (JSC::HandlerInfo::HandlerInfo): + (JSC::CodeBlock::addPropertyAccessInfo): + (JSC::CodeBlock::addGlobalResolveInfo): + (JSC::CodeBlock::addCallLinkInfo): + (JSC::CodeBlock::globalResolveInfo): + * bytecode/Opcode.h: + * bytecode/StructureStubInfo.h: + * bytecompiler/BytecodeGenerator.cpp: + (JSC::BytecodeGenerator::emitResolve): + (JSC::BytecodeGenerator::emitResolveWithBase): + (JSC::BytecodeGenerator::emitGetById): + (JSC::BytecodeGenerator::emitPutById): + (JSC::BytecodeGenerator::emitDirectPutById): + (JSC::BytecodeGenerator::emitCall): + (JSC::BytecodeGenerator::emitConstruct): + (JSC::BytecodeGenerator::emitCatch): + +2011-03-15 Gavin Barraclough + + Reviewed by Sam Weinig. + + Fix broken assert in new code. + + * dfg/DFGAliasTracker.h: + (JSC::DFG::AliasTracker::recordPutByVal): + - recordPutByVal is called for both PutByVal & PutByValAlias. + +2011-03-15 Gavin Barraclough + + Rubber stamped by Sam Weinig. + + Removed redundant code from BytecodeGenerator. + + * bytecompiler/BytecodeGenerator.cpp: + * bytecompiler/BytecodeGenerator.h: + - delete uncalled code missed when reparsing was removed. + +2011-03-15 Kevin Ollivier + + Reviewed by Darin Adler. + + Introduce WTF_USE_EXPORT_MACROS, which will allow us to put shared library import/export + info into the headers rather than in export symbol definition files, but disable it on + all platforms initially so we can deal with port build issues one port at a time. + + https://bugs.webkit.org/show_bug.cgi?id=27551 + + * API/JSBase.h: + * config.h: + * wtf/Assertions.h: + * wtf/ExportMacros.h: Added. + * wtf/Platform.h: + +2011-03-14 Laszlo Gombos + + Unreviewed build fix. + + Buildfix when JIT is not enabled after r81079 + https://bugs.webkit.org/show_bug.cgi?id=56361 + + * runtime/Executable.cpp: + +2011-03-14 Geoffrey Garen + + Reviewed by Oliver Hunt. + + Made the global object moving-GC-safe + https://bugs.webkit.org/show_bug.cgi?id=56348 + + SunSpider reports no change. + + * runtime/JSGlobalObject.cpp: + (JSC::JSGlobalObject::markChildren): Removed a dubious comment that + suggested we do not need to visit all our references during GC, since + that is not true in a moving GC. + + Re-sorted data members by type, removed one duplicate, and added back + the one missing mark I found. + + * runtime/JSGlobalObject.h: Re-sorted data members by type. + +2011-03-14 Geoffrey Garen + + Reviewed by Oliver Hunt. + + Made JSWrapperObject and subclasses moving-GC-safe + https://bugs.webkit.org/show_bug.cgi?id=56346 + + SunSpider reports no change. + + * runtime/BooleanObject.cpp: + (JSC::BooleanObject::BooleanObject): + * runtime/DateInstance.cpp: + (JSC::DateInstance::DateInstance): No more need for JSGlobalData, since + we don't initialize the wrapped value in our constructor. + + * runtime/DateInstance.h: Don't set the OverridesMarkChildren flag because + we do not in fact override markChildren. + + * runtime/DatePrototype.h: Declare an anonymous slot, since wrapper object + no longer does so for us. Also added an ASSERT to catch a latent bug, + where DatePrototype stomped on its base class's anonymous slot. Hard-coded + anonymous slots are a plague on our code. This doesn't cause any problems + in our existing code since the base class never reads the anonymous slot + it declares, but it caused crashes when I tried to start using the slot + in an initial version of this patch. + + * runtime/JSWrapperObject.h: + (JSC::JSWrapperObject::JSWrapperObject): + (JSC::JSWrapperObject::internalValue): + (JSC::JSWrapperObject::setInternalValue): Resolved a problem where + our internal value was stored in two places: an anonymous slot, and a + data member which was not always visited during GC. Now, we only use the + data member, and we always visit it. (Instead of relying on certain + subclasses to set the OverridesMarkChildren bit, we set it ourselves.) + + * runtime/NumberObject.cpp: + (JSC::NumberObject::NumberObject): No more need for JSGlobalData, since + we don't initialize the wrapped value in our constructor. + + * runtime/NumberObject.h: Removed meaningless declaration. + + * runtime/StringObject.cpp: + (JSC::StringObject::StringObject): No more need for JSGlobalData, since + we don't initialize the wrapped value in our constructor. + + * runtime/StringObject.h: Don't set the OverridesMarkChildren flag because + we do not in fact override markChildren. + + * runtime/StringPrototype.h: Declare an anonymous slot, since wrapper object + no longer does so for us. Also added an ASSERT to catch a latent bug, + where DatePrototype stomped on its base class's anonymous slot. Hard-coded + anonymous slots are a plague on our code. + +2011-03-14 Michael Saboff + + Reviewed by Gavin Barraclough. + + Look-ahead assertions with back references don’t work as expected + https://bugs.webkit.org/show_bug.cgi?id=56082 + + Changed parentheses assertion processing to temporarily back out the + number of known characters after the assertion while processing the + assertion. This was done so that assertions don't fail due to + checking the number of required characters as additional to the + rest of the express since assertions don't "consume" input. + Added a byte code to uncheck characters to support the change. + + * yarr/YarrInterpreter.cpp: + (JSC::Yarr::Interpreter::matchDisjunction): + (JSC::Yarr::ByteCompiler::uncheckInput): + (JSC::Yarr::ByteCompiler::emitDisjunction): + * yarr/YarrInterpreter.h: + (JSC::Yarr::ByteTerm::UncheckInput): + +2011-03-14 Viatcheslav Ostapenko + + Reviewed by Laszlo Gombos. + + [Qt] Warning that round/roundf functions are already defined when compiled with RVCT 4 on symbian. + https://bugs.webkit.org/show_bug.cgi?id=56133 + + Add condition to not compile webkit internal math round functions on RVCT compiler versions + from 3.0.0 because they are already defined in compiler math library. + + * wtf/MathExtras.h: + +2011-03-14 Gavin Barraclough + + Reviewed by Geoffrey Garen & Oliver Hunt. + + Bug 56284 - Add a dataflow intermediate representation for use in JIT generation. + + The JSC JIT presently generates code directly from the bytecode used by the interpreter. + This is not an optimal intermediate representation for JIT code generation, since it does + not capture liveness information of values, and provides little opportunity to perform + any static analysis for even primitive types. The JIT currently generates two code paths, + a fast path handling common cases, and a slower path handling less common operand types. + However the slow path jumps back into the fast path, meaning that information arising + from the earlier type checks cannot be propagated to later operations. + + This patch adds: + * a dataflow intermediate representation capable of describing a single basic block + of operations, + * a mechanism to convert a simple, single-block bytecode functions to the new IR, + * and a JIT code generator capable of generating code from this representation. + + The JIT generates two code paths, with the slower path not reentering the fast path + mid-block, allowing speculative optimizations to be made on the hot path, with type + information arising from these speculative decisions able to be propagated through the + dataflow. Code generation of both speculative and non-speculative paths exploits the type + and liveness information represented in the dataflow graph to attempt to avoid redundant + boxing and type-checking of values, and to remove unnecessary spills of temporary values + to the RegisterFile. + + The dataflow JIT currently can only support a subset of bytecode operations, limited to + arithmetic, bit-ops, and basic property access. Functions that cannot be compiled by the + dataflow JIT will be run using the existing JIT. The coverage of the dataflow JIT will be + expanded to include, control-flow, function calls, and then the long-tail of remaining + bytecode instructions. The JIT presently only support JSVALUE64, and as a consequence of + this only supports x86-64. + + The status of the dataflow JIT is currently work-in-progress. Limitations of the present + JIT code generation may cause performance regressions, particularly: + * the policy to only generate arithmetic code on the speculative path using integer + instructions, never using floating point. + * the policy to only generate arithmetic code on the non-speculative path using + floating point instructions, never using integer. + * always generating JSValue adds on the non-speculative path as a call out to a + C-function, never handling this in JIT code. + * always assuming by-Value property accesses on the speculative path to be array + accesses. + * generating all by-Value property accesses from the non-speculative path as a call + out to a C-function. + * generating all by-Indentifer property accesses as a call out to a C-function. + Due to these regressions, the code is landed in a state where it is disabled in most + cases by the ENABLE_DFG_JIT_RESTRICTIONS guard in Platform.h. As these regressions are + addressed, the JIT will be allowed to trigger in more cases. + + * JavaScriptCore.xcodeproj/project.pbxproj: + - Added new files to Xcode project. + * dfg: Added. + - Added directory for new code. + * dfg/DFGByteCodeParser.cpp: Added. + * dfg/DFGByteCodeParser.h: Added. + - Contruct a DFG::Graph representation from a bytecode CodeBlock. + * dfg/DFGGenerationInfo.h: Added. + - Track type & register information for VirtualRegisters during JIT code generation. + * dfg/DFGGraph.cpp: Added. + * dfg/DFGGraph.h: Added. + - Dataflow graph intermediate representation for code generation. + * dfg/DFGJITCodeGenerator.cpp: Added. + * dfg/DFGJITCodeGenerator.h: Added. + - Base class for SpeculativeJIT & NonSpeculativeJIT to share common functionality. + * dfg/DFGJITCompiler.cpp: Added. + * dfg/DFGJITCompiler.h: Added. + - Class responsible for driving code generation of speculativeJIT & non-speculative + code paths from the dataflow graph. + * dfg/DFGNonSpeculativeJIT.cpp: Added. + * dfg/DFGNonSpeculativeJIT.h: Added. + - Used to generate the non-speculative code path, this make no assumptions + about operand types. + * dfg/DFGOperations.cpp: Added. + * dfg/DFGOperations.h: Added. + - Helper functions called from the JIT generated code. + * dfg/DFGRegisterBank.h: Added. + - Used to track contents of physical registers during JIT code generation. + * dfg/DFGSpeculativeJIT.cpp: Added. + * dfg/DFGSpeculativeJIT.h: Added. + - Used to generate the speculative code path, this make assumptions about + operand types to enable optimization. + * runtime/Executable.cpp: + - Add code to attempt to use the DFG JIT to compile a function, with fallback + to the existing JIT. + * wtf/Platform.h: + - Added compile guards to enable the DFG JIT. + +2011-03-14 Geoffrey Garen + + Reviewed by Oliver Hunt. + + Removed more cases of DeprecatedPtr (exception, SmallStrings) + https://bugs.webkit.org/show_bug.cgi?id=56332 + + * runtime/Identifier.cpp: + (JSC::Identifier::add): + (JSC::Identifier::addSlowCase): Use a variable instead of a hard-coded + constant, to make this code less brittle. + + * runtime/JSGlobalData.h: Use HeapRoot instead of DeprecatedPtr because + this reference is owned and managed directly by the heap. + + * runtime/JSString.cpp: + (JSC::JSString::substringFromRope): + * runtime/JSString.h: + (JSC::jsSingleCharacterString): + (JSC::jsSingleCharacterSubstring): + (JSC::jsString): + (JSC::jsStringWithFinalizer): + (JSC::jsSubstring): + (JSC::jsOwnedString): Use a variable instead of a hard-coded + constant, to make this code less brittle. + + * runtime/SmallStrings.cpp: + (JSC::SmallStringsStorage::rep): + (JSC::SmallStringsStorage::SmallStringsStorage): + (JSC::SmallStrings::SmallStrings): + (JSC::SmallStrings::markChildren): + (JSC::SmallStrings::clear): + (JSC::SmallStrings::count): Use a variable instead of a hard-coded + constant, to make this code less brittle. + + * runtime/SmallStrings.h: + (JSC::SmallStrings::singleCharacterString): Use HeapRoot instead of + DeprecatedPtr because these references are owned and managed directly by + the heap. + + Stop using FixedArray because we only want a very limited set + of classes to be able to use HeapRoot. (Replaced with manual ASSERTs.) + + * runtime/WriteBarrier.h: + (JSC::operator==): + (JSC::WriteBarrier::WriteBarrier): + (JSC::HeapRoot::HeapRoot): + (JSC::HeapRoot::operator=): Added HeapRoot, which is allowed to set + without write barrier because we assume all HeapRoots are scanned during + all GC passes. + +2011-03-14 Brian Weinstein + + Reviewed by Adam Roben and Gavin Barraclough. + + FileSystemWin.cpp needs listDirectory() implementation + https://bugs.webkit.org/show_bug.cgi?id=56331 + + + Give StringConcatenate the ability to deal with const UChar*'s as a String type to append. + + * wtf/text/StringConcatenate.h: + +2011-03-14 Mark Rowe + + Reviewed by Oliver Hunt. + + REGRESSION(r80892): 100,000+ leaks seen on the build bot + + * API/JSClassRef.cpp: + (OpaqueJSClass::OpaqueJSClass): Don't leak any existing entry for the given name if + the class definition contains duplicates. This also removes what look to be leaks + of the StringImpl instances that are used as keys: the HashMap key type is a RefPtr + which retains / releases the instances at the appropriate time, so explicitly calling + ref is not necessary. + +2011-03-14 Oliver Hunt + + Fix windows build + + * jit/JSInterfaceJIT.h: + (JSC::JSInterfaceJIT::emitLoadInt32): + (JSC::JSInterfaceJIT::tagFor): + (JSC::JSInterfaceJIT::payloadFor): + (JSC::JSInterfaceJIT::intPayloadFor): + (JSC::JSInterfaceJIT::intTagFor): + (JSC::JSInterfaceJIT::addressFor): + +2011-03-11 Oliver Hunt + + 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-13 Geoffrey Garen + + Reviewed by Sam Weinig. + + A few Heap-related renames (sans file moves, which should come next) + https://bugs.webkit.org/show_bug.cgi?id=56283 + + ConservativeSet => ConservativeRoots. "Set" was misleading, since items + are not uniqued. Also, "Roots" is more specific about what's in the set. + + MachineStackMarker => MachineThreads. "Threads" is more descriptive of + the fact that this class maintains a set of all threads using JSC. + "Stack" was misleading, since this class traverses stacks and registers. + "Mark" was misleading, since this class doesn't mark anything anymore. + + registerThread => addCurrentThread. "Current" is more specific. + unregisterThread => removeCurrentThread. "Current" is more specific. + + "currentThreadRegistrar" => threadSpecific. The only point of this data + structure is to register a thread-specific destructor with a pointer to + this. + + "mark...Conservatively" => "gather". "Mark" is not true, since these + functions don't mark anything. "Conservatively" is redundant, since they + take "ConservativeRoots" as an argument. + + * API/APIShims.h: + (JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock): + * JavaScriptCore.exp: + * runtime/ConservativeSet.cpp: + (JSC::ConservativeRoots::grow): + (JSC::ConservativeRoots::add): + * runtime/ConservativeSet.h: + (JSC::ConservativeRoots::ConservativeRoots): + (JSC::ConservativeRoots::~ConservativeRoots): + (JSC::ConservativeRoots::size): + (JSC::ConservativeRoots::roots): + * runtime/Heap.cpp: + (JSC::Heap::Heap): + (JSC::Heap::markRoots): + * runtime/Heap.h: + (JSC::Heap::machineThreads): + * runtime/JSGlobalData.h: + (JSC::JSGlobalData::makeUsableFromMultipleThreads): + * runtime/MachineStackMarker.cpp: + (JSC::MachineThreads::MachineThreads): + (JSC::MachineThreads::~MachineThreads): + (JSC::MachineThreads::makeUsableFromMultipleThreads): + (JSC::MachineThreads::addCurrentThread): + (JSC::MachineThreads::removeThread): + (JSC::MachineThreads::removeCurrentThread): + (JSC::MachineThreads::gatherFromCurrentThreadInternal): + (JSC::MachineThreads::gatherFromCurrentThread): + (JSC::MachineThreads::gatherFromOtherThread): + (JSC::MachineThreads::gatherConservativeRoots): + * runtime/MachineStackMarker.h: + * runtime/MarkStack.h: + (JSC::MarkStack::append): + +2011-03-13 David Kilzer + + BUILD FIX for armv7 after r80969 + + Bug 56270 - The JIT 'friend's many classes in JSC; start unwinding this. + + + * assembler/MacroAssemblerARMv7.h: + (JSC::MacroAssemblerARMv7::load32): Made void* address argument + const. + (JSC::MacroAssemblerARMv7::store32): Ditto. + +2011-03-13 Geoffrey Garen + + Not reviewed. + + Try to fix the Mac build. + + * JavaScriptCore.xcodeproj/project.pbxproj: Make sure to forward + ConervativeSet.h, since it's now visible when compiling other projects. + +2011-03-13 Geoffrey Garen + + Reviewed by Oliver Hunt. + + Removed another case of DeprecatedPtr (ConservativeSet) + https://bugs.webkit.org/show_bug.cgi?id=56281 + + The ConservativeSet is an internal data structure used during marking, + so direct pointers are fine. + + * runtime/ConservativeSet.cpp: + (JSC::ConservativeSet::grow): + * runtime/ConservativeSet.h: Added some accessors, for use by MarkStack::append. + (JSC::ConservativeSet::~ConservativeSet): Fixed a typo where we calculated + the size of the set based on sizeof(DeprecatedPtr*) instead of + sizeof(DeprecatedPtr). I'm not sure if this had real-world implications or not. + (JSC::ConservativeSet::size): + (JSC::ConservativeSet::set): Use direct pointers, as stated above. + + * runtime/Heap.cpp: + (JSC::Heap::markRoots): + * runtime/MarkStack.h: + (JSC::MarkStack::append): Created a special case of append for + ConservativeSet. I didn't want to add back a generic "append JSCell*" + function, since other class might start using that wrong. (In the end, + this function might go away, since the Heap will want to do something + slightly more interesting with the conservative set, but this is OK for + now.) + +2011-03-13 Geoffrey Garen + + Reviewed by Oliver Hunt. + + Removed another case of DeprecatedPtr (PutPropertySlot) + https://bugs.webkit.org/show_bug.cgi?id=56278 + + * runtime/PutPropertySlot.h: + (JSC::PutPropertySlot::setExistingProperty): + (JSC::PutPropertySlot::setNewProperty): + (JSC::PutPropertySlot::base): Direct pointer is fine for PutPropertySlot, + since it's a stack-allocated temporary. + +2011-03-13 Geoffrey Garen + + Reviewed by Oliver Hunt. + + Removed one case of DeprecatedPtr (ScopeChainIterator) + https://bugs.webkit.org/show_bug.cgi?id=56277 + + * runtime/ScopeChain.h: Direct pointer is fine for ScopeChainIterator, + since it's a stack-allocated temporary. + +2011-03-13 Gavin Barraclough + + Reviewed by Sam Weinig. + + Bug 56273 - Add three operand forms to MacroAssember operations. + + Adding for X86(_64) for now, should be rolled out to other backends as necessary. + These may allow more efficient code generation in some cases, avoiding the need + for unnecessary register-register move instructions. + + * assembler/AbstractMacroAssembler.h: + (JSC::AbstractMacroAssembler::Jump::link): + (JSC::AbstractMacroAssembler::Jump::linkTo): + - marked these methods const. + (JSC::AbstractMacroAssembler::Jump::isSet): + - add a method to check whether a Jump object has been set to + reference an instruction, or is in a null, unset state. + * assembler/MacroAssemblerCodeRef.h: + (JSC::FunctionPtr::FunctionPtr): + - add non-explicit constructor, for FunctionPtr's to C/C++ functions. + * assembler/MacroAssemblerX86Common.h: + (JSC::MacroAssemblerX86Common::and32): + (JSC::MacroAssemblerX86Common::lshift32): + (JSC::MacroAssemblerX86Common::or32): + (JSC::MacroAssemblerX86Common::rshift32): + (JSC::MacroAssemblerX86Common::urshift32): + (JSC::MacroAssemblerX86Common::xor32): + (JSC::MacroAssemblerX86Common::moveDouble): + (JSC::MacroAssemblerX86Common::addDouble): + (JSC::MacroAssemblerX86Common::divDouble): + (JSC::MacroAssemblerX86Common::subDouble): + (JSC::MacroAssemblerX86Common::mulDouble): + (JSC::MacroAssemblerX86Common::branchTruncateDoubleToInt32): + (JSC::MacroAssemblerX86Common::branchTest32): + (JSC::MacroAssemblerX86Common::branchTest8): + (JSC::MacroAssemblerX86Common::branchAdd32): + (JSC::MacroAssemblerX86Common::branchMul32): + (JSC::MacroAssemblerX86Common::branchSub32): + - add three operand forms of these instructions. + * assembler/MacroAssemblerX86_64.h: + (JSC::MacroAssemblerX86_64::addDouble): + (JSC::MacroAssemblerX86_64::convertInt32ToDouble): + (JSC::MacroAssemblerX86_64::loadPtr): + (JSC::MacroAssemblerX86_64::branchTestPtr): + * assembler/X86Assembler.h: + (JSC::X86Assembler::JmpSrc::isSet): + - add a method to check whether a JmpSrc object has been set to + reference an instruction, or is in a null, unset state. + (JSC::X86Assembler::movsd_rr): + - added FP register-register move. + (JSC::X86Assembler::linkJump): + - Add an assert to check jumps aren't linked more than once. + * jit/JITInlineMethods.h: + (JSC::JIT::emitLoadInt32ToDouble): + - load integers to the FPU via regsiters on x86-64. + +2011-03-13 Gavin Barraclough + + ARM build fix. + + * assembler/MacroAssemblerARM.h: + (JSC::MacroAssemblerARM::load32): + +2011-03-13 Gavin Barraclough + + Reviewed by Sam Weinig. + + Bug 56270 - The JIT 'friend's many classes in JSC; start unwinding this. + + The JIT need to 'friend' other classes in order to be able to calculate offsets + of various properties, or the absolute addresses of members within specific objects, + in order to JIT generate code that will access members within the class when run. + + Instead of using friends in these cases, switch to providing specific accessor + methods to provide this information. In the case of offsets, these can be static + functions, and in the case of pointers to members within a specific object these can + be const methods returning pointers to const values, to prevent clients from + modifying values otherwise encapsulated within classes. + + * bytecode/SamplingTool.h: + * interpreter/Register.h: + * interpreter/RegisterFile.h: + * runtime/JSArray.h: + * runtime/JSCell.h: + * runtime/JSTypeInfo.h: + * runtime/JSVariableObject.h: + * runtime/Structure.h: + * wtf/RefCounted.h: + - Change these classes to no longer friend the JIT, add accessors for member offsets. + * jit/JIT.cpp: + * jit/JITCall32_64.cpp: + * jit/JITInlineMethods.h: + * jit/JITOpcodes.cpp: + * jit/JITOpcodes32_64.cpp: + * jit/JITPropertyAccess.cpp: + * jit/JITPropertyAccess32_64.cpp: + - Change the JIT to use class accessors, rather than taking object ofsets directly. + * assembler/AbstractMacroAssembler.h: + * assembler/MacroAssemblerX86_64.h: + * assembler/X86Assembler.h: + - Since the accessors for objects members return const pointers to retain encapsulation, + methods generating code with absolute addresses must be able to handle const pointers + (the JIT doesn't write to these values, do dies treat the pointer to value as const + from within the C++ code of the JIT, if not at runtime!). + +2011-03-12 Sheriff Bot + + Unreviewed, rolling out r80919. + http://trac.webkit.org/changeset/80919 + https://bugs.webkit.org/show_bug.cgi?id=56251 + + all windows bots failed to compile this change (Requested by + loislo on #webkit). + + * JavaScriptCore.xcodeproj/project.pbxproj: + * bytecode/StructureStubInfo.cpp: + * 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): + * 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::payloadFor): + * jit/SpecializedThunkJIT.h: + (JSC::SpecializedThunkJIT::returnJSValue): + (JSC::SpecializedThunkJIT::returnDouble): + (JSC::SpecializedThunkJIT::returnInt32): + (JSC::SpecializedThunkJIT::returnJSCell): + * runtime/ArgList.cpp: + * runtime/DateConversion.cpp: + * runtime/GCActivityCallbackCF.cpp: + * runtime/Identifier.cpp: + * runtime/JSActivation.h: + (JSC::asActivation): + * runtime/JSLock.cpp: + * runtime/JSNumberCell.cpp: + * runtime/JSObject.h: + * runtime/JSPropertyNameIterator.h: + * runtime/JSValue.h: + * runtime/JSZombie.cpp: + * runtime/MarkedBlock.cpp: + * runtime/MarkedSpace.cpp: + * runtime/PropertyNameArray.cpp: + * runtime/ScopeChain.h: + (JSC::ExecState::globalThisValue): + * wtf/DateMath.cpp: + +2011-03-11 Oliver Hunt + + 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 Dimitri Glazkov + + Reviewed by Eric Seidel. + + Introduce project_dir variable and make paths a whole lot saner. Ok, a little bit saner. + https://bugs.webkit.org/show_bug.cgi?id=56231 + + * JavaScriptCore.gypi: Added project_dir variable. + * gyp/JavaScriptCore.gyp: Changed to use project_dir, rather than DEPTH/JavaScriptCore. + * gyp/generate-dtrace-header.sh: Changed to use project_dir. + +2011-03-11 Dimitri Glazkov + + Reviewed by Adam Barth. + + Start using derived sources correctly and link minidom with JavaScriptCore gyp project. + https://bugs.webkit.org/show_bug.cgi?id=56217 + + * gyp/JavaScriptCore.gyp: Added derived source files and passing of shared directory + to the scripts. + * gyp/generate-derived-sources.sh: Changed to use passed directory. + * gyp/generate-dtrace-header.sh: Ditto. + +2011-03-11 Eric Carlson + + Reviewed by Sam Weinig. + + Adopt AVFoundation media back end on Lion. + + No new tests, existing media tests cover this. + + * JavaScriptCore.exp: Export cancelCallOnMainThread + * wtf/Platform.h: Define WTF_USE_AVFOUNDATION. + +2011-03-11 Dimitri Glazkov + + Reviewed by Adam Barth. + + Tweak dylib paths and add dtrace header generation action to JavaScriptCore gyp project. + https://bugs.webkit.org/show_bug.cgi?id=56207 + + * JavaScriptCore.gypi: Added Tracing.d to the sources. + * gyp/generate-dtrace-header.sh: Added. + * gyp/JavaScriptCore.gyp: Updated dylib paths (now the project can see them), + and added DTrace header generating step. + +2011-03-10 Oliver Hunt + + Reviewed by Gavin Barraclough. + + Fix allocation of native function with a cached thunk + https://bugs.webkit.org/show_bug.cgi?id=56127 + + Fix this race condition found while fixing zombies. + + * collector/handles/HandleHeap.cpp: + (JSC::HandleHeap::clearWeakPointers): + * runtime/Heap.cpp: + (JSC::Heap::reset): + * runtime/JSFunction.cpp: + (JSC::JSFunction::JSFunction): + (JSC::JSFunction::markChildren): + * runtime/JSValue.h: + (JSC::JSValue::decode): + * runtime/JSZombie.cpp: + (JSC::JSZombie::leakedZombieStructure): + * runtime/JSZombie.h: + (JSC::JSZombie::createStructure): + * runtime/MarkedBlock.cpp: + +2011-03-10 Luiz Agostini + + Reviewed by Andreas Kling. + + [Qt] fast/workers/stress-js-execution.html is crashing on Qt bot (intermittently) + https://bugs.webkit.org/show_bug.cgi?id=33008 + + Defining WTF_USE_PTHREAD_BASED_QT=1 for platforms where QThread uses pthread internally. + Symbian is excluded because pthread_kill does not work on it. Mac is excluded because + it has its own ways to do JSC threading. + + Defining WTF_USE_PTHREADS inside MachineStackMarker.cpp if USE(PTHREAD_BASED_QT) is true. + + * runtime/MachineStackMarker.cpp: + * wtf/Platform.h: + +2011-03-10 Gavin Barraclough + + Reviewed by Oliver Hunt. + + Bug 56077 - ES5 conformance issues with RegExp.prototype + + There are three issues causing test failures in sputnik. + + (1) lastIndex should be converted at the point it is used, not the point it is set (this is visible if valueOf is overridden). + (2) The 'length' property of the test/exec functions should be 1. + (3) If no input is specified, the input to test()/exec() is "undefined" (i.e. ToString(undefined)) - not RegExp.input. + + * runtime/RegExpObject.cpp: + (JSC::RegExpObject::markChildren): + - Added to mark lastIndex + (JSC::regExpObjectLastIndex): + (JSC::setRegExpObjectLastIndex): + - lastIndex is now stored as a JSValue. + (JSC::RegExpObject::match): + - Use accessor methods to get/set lastIndex, add fast case for isUInt32 (don't convert to double). + * runtime/RegExpObject.h: + (JSC::RegExpObject::setLastIndex): + (JSC::RegExpObject::setLastIndex): + - Set lastIndex, either from a size_t or a JSValue. + (JSC::RegExpObject::getLastIndex): + - Get lastIndex. + (JSC::RegExpObject::RegExpObjectData::RegExpObjectData): + - Initialize as a JSValue. + * runtime/RegExpPrototype.cpp: + (JSC::RegExpPrototype::RegExpPrototype): + - Add test/exec properties with length 1. + * runtime/StringPrototype.cpp: + (JSC::stringProtoFuncMatch): + (JSC::stringProtoFuncSearch): + - Do not read RegExp.input if none is provided. + * tests/mozilla/js1_2/regexp/RegExp_input.js: + * tests/mozilla/js1_2/regexp/RegExp_input_as_array.js: + - Update these tests (they relied on non-ES5 behaviour). + +2011-03-10 Geoffrey Garen + + Reviewed by Oliver Hunt. + + Rolled back in 80277 and 80280 with event handler layout test failures fixed. + https://bugs.webkit.org/show_bug.cgi?id=55653 + + The failures were caused by a last minute typo: assigning to currentEvent + instead of m_currentEvent. + + * JavaScriptCore.exp: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: + * JavaScriptCore.xcodeproj/project.pbxproj: + * bytecompiler/BytecodeGenerator.cpp: + * jit/JITOpcodes.cpp: + * jit/JITOpcodes32_64.cpp: + * runtime/Arguments.h: + * runtime/JSActivation.cpp: + * runtime/JSActivation.h: + * runtime/JSCell.h: + * runtime/JSGlobalObject.cpp: + * runtime/JSGlobalObject.h: + * runtime/JSObject.cpp: + * runtime/JSStaticScopeObject.cpp: + * runtime/JSStaticScopeObject.h: + * runtime/JSVariableObject.h: + * runtime/MarkedSpace.cpp: + * runtime/MarkedSpace.h: + +2011-03-09 Oliver Hunt + + Reviewed by Gavin Barraclough. + + jquery/manipulation.html fails after r80598 + https://bugs.webkit.org/show_bug.cgi?id=56019 + + When linking a call, codeblock now takes ownership of the linked function + This removes the need for unlinking, and thus the incorrectness that was + showing up in these tests. + + * bytecode/CodeBlock.cpp: + (JSC::CodeBlock::~CodeBlock): + (JSC::CodeBlock::markAggregate): + * bytecode/CodeBlock.h: + (JSC::CallLinkInfo::CallLinkInfo): + (JSC::CallLinkInfo::setUnlinked): + (JSC::CodeBlock::addCaller): + * jit/JIT.cpp: + (JSC::JIT::privateCompile): + (JSC::JIT::linkCall): + (JSC::JIT::linkConstruct): + * jit/JIT.h: + * runtime/Executable.cpp: + * runtime/Executable.h: + +2011-03-09 Daniel Bates + + Attempt to fix the WinCE build after changeset 80684 + (Bug #56041). + + * interpreter/Interpreter.cpp: + (JSC::Interpreter::privateExecute): Substitute variable callFrame for exec in call to createSyntaxError(). + +2011-03-09 Gavin Barraclough + + Reviewed by Sam Weinig. + + Bug 56041 - RexExp constructor should only accept flags "gim" + Fix for issues introduced in r80667. + + Invalid flags to a RegExp literal are a late syntax error! + + * bytecode/CodeBlock.h: + (JSC::CodeBlock::addRegExp): + - Pass a PassRefPtr + * bytecompiler/BytecodeGenerator.cpp: + (JSC::BytecodeGenerator::addRegExp): + (JSC::BytecodeGenerator::emitNewRegExp): + * bytecompiler/BytecodeGenerator.h: + - Pass a PassRefPtr + * bytecompiler/NodesCodegen.cpp: + (JSC::RegExpNode::emitBytecode): + - Should not be ASSERTing that the flags are valid - this is a late(er) error. + * interpreter/Interpreter.cpp: + (JSC::Interpreter::privateExecute): + - Need to check for error from RegExp constructor. + * jit/JITStubs.cpp: + (JSC::DEFINE_STUB_FUNCTION): + - Need to check for error from RegExp constructor. + * runtime/RegExp.h: + (JSC::RegExp::isValid): + - Make isValid check that the regexp was created with valid flags. + * runtime/RegExpKey.h: + - Since we'll not create RegExp objects with invalid flags, separate out the deleted value. + +2011-03-09 Gavin Barraclough + + Windows build fix part 2. + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: + +2011-03-09 Gavin Barraclough + + Windows build fix part 1. + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: + +2011-03-09 Gavin Barraclough + + Reviewed by Darin Adler. + + Bug 56041 - RexExp constructor should only accept flags "gim" + We also should be passing the flags around as a bitfield rather than a string, + and should not have redundant, incompatible code for converting the string to a bitfield! + + * JavaScriptCore.exp: + * bytecompiler/NodesCodegen.cpp: + (JSC::RegExpNode::emitBytecode): + - Need to parse flags string to enum. + * runtime/RegExp.cpp: + (JSC::regExpFlags): + (JSC::RegExp::RegExp): + (JSC::RegExp::create): + - Add method to parse flags string to enum, change constructor/create args to take enum. + * runtime/RegExp.h: + (JSC::RegExp::global): + (JSC::RegExp::ignoreCase): + (JSC::RegExp::multiline): + - Change to use new enum values. + * runtime/RegExpCache.cpp: + (JSC::RegExpCache::lookupOrCreate): + (JSC::RegExpCache::create): + * runtime/RegExpCache.h: + - Changed to use regExpFlags enum instead of int/const UString&. + * runtime/RegExpConstructor.cpp: + (JSC::constructRegExp): + - Add use new enum parsing, check for error. + * runtime/RegExpKey.h: + (JSC::RegExpKey::RegExpKey): + * runtime/RegExpPrototype.cpp: + (JSC::RegExpPrototype::RegExpPrototype): + - Pass NoFlags value instead of empty string. + (JSC::regExpProtoFuncCompile): + - Add use new enum parsing, check for error. + * runtime/StringPrototype.cpp: + (JSC::stringProtoFuncMatch): + (JSC::stringProtoFuncSearch): + - Pass NoFlags value instead of empty string. + +2011-03-08 Gavin Barraclough + + Reviewed by Sam Weinig + + Bug 55994 - Functions on Array.prototype should check length first. + These methods are designed to work on generic objects too, and if 'length' + is a getter that throws an exception, ensure this is correctly thrown + (even if other exceptions would be thrown, too). + + Make the length check the first thing we do. + This change shows a progression on SunSpider on my machine, but this is likely bogus. + + * runtime/ArrayPrototype.cpp: + (JSC::arrayProtoFuncToString): + (JSC::arrayProtoFuncToLocaleString): + (JSC::arrayProtoFuncJoin): + (JSC::arrayProtoFuncPop): + (JSC::arrayProtoFuncPush): + (JSC::arrayProtoFuncReverse): + (JSC::arrayProtoFuncShift): + (JSC::arrayProtoFuncSlice): + (JSC::arrayProtoFuncSort): + (JSC::arrayProtoFuncSplice): + (JSC::arrayProtoFuncUnShift): + (JSC::arrayProtoFuncFilter): + (JSC::arrayProtoFuncMap): + (JSC::arrayProtoFuncEvery): + (JSC::arrayProtoFuncForEach): + (JSC::arrayProtoFuncSome): + (JSC::arrayProtoFuncReduce): + (JSC::arrayProtoFuncReduceRight): + (JSC::arrayProtoFuncIndexOf): + (JSC::arrayProtoFuncLastIndexOf): + +2011-03-07 Oliver Hunt + + Reviewed by Gavin Barraclough. + + Make CodeBlock GC write barrier safe + https://bugs.webkit.org/show_bug.cgi?id=55910 + + In order to make CodeBlock WriteBarrier safe it was necessary + to make it have a single GC owner, and for that reason I have + made ExecutableBase a GC allocated object. This required + updating their creation routines as well as all sites that hold + a reference to them. GC objects that held Executable's have been + converted to WriteBarriers, and all other sites now use Global<>. + + As an added benefit this gets rid of JSGlobalData's list of + GlobalCodeBlocks. + + Perf testing shows a 0.5% progression on v8, vs. a 0.3% regression + on SunSpider. Given none of the tests that show regressions + demonstrate a regression on their own, and sampling shows up nothing. + I suspect we're just getting one or two additional gc passes at + the end of the run. + + * bytecode/CodeBlock.cpp: + (JSC::CodeBlock::dump): + (JSC::CodeBlock::CodeBlock): + (JSC::EvalCodeCache::markAggregate): + (JSC::CodeBlock::markAggregate): + * bytecode/CodeBlock.h: + (JSC::CodeBlock::ownerExecutable): + (JSC::CodeBlock::addConstant): + (JSC::CodeBlock::constantRegister): + (JSC::CodeBlock::getConstant): + (JSC::CodeBlock::addFunctionDecl): + (JSC::CodeBlock::addFunctionExpr): + (JSC::GlobalCodeBlock::GlobalCodeBlock): + (JSC::ExecState::r): + * bytecode/EvalCodeCache.h: + (JSC::EvalCodeCache::get): + * bytecode/SamplingTool.h: + (JSC::ScriptSampleRecord::ScriptSampleRecord): + * bytecompiler/BytecodeGenerator.cpp: + (JSC::BytecodeGenerator::addConstantValue): + (JSC::BytecodeGenerator::emitEqualityOp): + * bytecompiler/BytecodeGenerator.h: + (JSC::BytecodeGenerator::makeFunction): + * debugger/Debugger.cpp: + (JSC::evaluateInGlobalCallFrame): + * debugger/DebuggerCallFrame.cpp: + (JSC::DebuggerCallFrame::evaluate): + * interpreter/Interpreter.cpp: + (JSC::Interpreter::callEval): + * jit/JITInlineMethods.h: + (JSC::JIT::emitLoadDouble): + (JSC::JIT::emitLoadInt32ToDouble): + * jit/JITStubs.cpp: + (JSC::JITThunks::JITThunks): + (JSC::JITThunks::hostFunctionStub): + (JSC::JITThunks::clearHostFunctionStubs): + * jit/JITStubs.h: + * runtime/Completion.cpp: + (JSC::checkSyntax): + (JSC::evaluate): + * runtime/Executable.cpp: + (JSC::EvalExecutable::EvalExecutable): + (JSC::ProgramExecutable::ProgramExecutable): + (JSC::FunctionExecutable::FunctionExecutable): + (JSC::FunctionExecutable::~FunctionExecutable): + (JSC::EvalExecutable::markChildren): + (JSC::ProgramExecutable::markChildren): + (JSC::FunctionExecutable::markChildren): + (JSC::FunctionExecutable::fromGlobalCode): + * runtime/Executable.h: + (JSC::ExecutableBase::ExecutableBase): + (JSC::ExecutableBase::createStructure): + (JSC::NativeExecutable::create): + (JSC::NativeExecutable::NativeExecutable): + (JSC::VPtrHackExecutable::VPtrHackExecutable): + (JSC::ScriptExecutable::ScriptExecutable): + (JSC::EvalExecutable::create): + (JSC::EvalExecutable::createStructure): + (JSC::ProgramExecutable::create): + (JSC::ProgramExecutable::createStructure): + (JSC::FunctionExecutable::create): + (JSC::FunctionExecutable::createStructure): + * runtime/FunctionConstructor.cpp: + (JSC::constructFunction): + * runtime/Heap.cpp: + (JSC::Heap::destroy): + (JSC::Heap::markRoots): + * runtime/Heap.h: + * runtime/JSActivation.cpp: + (JSC::JSActivation::JSActivation): + (JSC::JSActivation::markChildren): + * runtime/JSActivation.h: + (JSC::JSActivation::JSActivationData::JSActivationData): + * runtime/JSCell.h: + * runtime/JSFunction.cpp: + (JSC::JSFunction::JSFunction): + (JSC::JSFunction::~JSFunction): + (JSC::JSFunction::markChildren): + * runtime/JSFunction.h: + * runtime/JSGlobalData.cpp: + (JSC::JSGlobalData::storeVPtrs): + (JSC::JSGlobalData::JSGlobalData): + (JSC::JSGlobalData::getHostFunction): + * runtime/JSGlobalData.h: + * runtime/JSGlobalObjectFunctions.cpp: + (JSC::globalFuncEval): + * runtime/JSObject.cpp: + * runtime/JSStaticScopeObject.cpp: + (JSC::JSStaticScopeObject::markChildren): + * runtime/JSStaticScopeObject.h: + (JSC::JSStaticScopeObject::JSStaticScopeObjectData::JSStaticScopeObjectData): + (JSC::JSStaticScopeObject::JSStaticScopeObject): + * runtime/JSZombie.cpp: + (JSC::JSZombie::leakedZombieStructure): + * runtime/JSZombie.h: + (JSC::JSZombie::createStructure): + * runtime/MarkedSpace.h: + +2011-03-07 Andy Estes + + Reviewed by Dan Bernstein. + + REGRESSION (r79060): Timestamp is missing from tweets in twitter. + https://bugs.webkit.org/show_bug.cgi?id=55228 + + A change to the date parser to handle the case where the year is + specified before the time zone inadvertently started accepting strings + such as '+0000' as valid years. Those strings actually represent time + zones in an offset of hours and minutes from UTC, not years. + + * wtf/DateMath.cpp: + (WTF::parseDateFromNullTerminatedCharacters): If the current character + in dateString is '+' or '-', do not try to parse the next token as a + year. + 2011-03-06 Yuta Kitamura Reviewed by Kent Tamura. diff --git a/Source/JavaScriptCore/Configurations/Base.xcconfig b/Source/JavaScriptCore/Configurations/Base.xcconfig index 8d91d70..12d0efd 100644 --- a/Source/JavaScriptCore/Configurations/Base.xcconfig +++ b/Source/JavaScriptCore/Configurations/Base.xcconfig @@ -25,7 +25,6 @@ DEBUG_INFORMATION_FORMAT = dwarf; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DEBUGGING_SYMBOLS = default; GCC_DYNAMIC_NO_PIC = NO; -GCC_ENABLE_CPP_EXCEPTIONS = NO; GCC_ENABLE_CPP_RTTI = NO; GCC_ENABLE_OBJC_EXCEPTIONS = YES; GCC_ENABLE_OBJC_GC = $(GCC_ENABLE_OBJC_GC_$(REAL_PLATFORM_NAME)); @@ -118,12 +117,23 @@ TARGET_GCC_VERSION_macosx_1050_ = $(TARGET_GCC_VERSION_macosx_1050_$(XCODE_VERSI TARGET_GCC_VERSION_macosx_1050_0310 = GCC_42; TARGET_GCC_VERSION_macosx_1050_0320 = GCC_42; TARGET_GCC_VERSION_macosx_1060 = GCC_42; -TARGET_GCC_VERSION_macosx_1070 = LLVM_GCC_42; +TARGET_GCC_VERSION_macosx_1070 = $(TARGET_GCC_VERSION_macosx_1070_$(CONFIGURATION)); +TARGET_GCC_VERSION_macosx_1070_Debug = LLVM_COMPILER; +TARGET_GCC_VERSION_macosx_1070_Release = LLVM_GCC_42; +TARGET_GCC_VERSION_macosx_1070_Production = LLVM_GCC_42; GCC_VERSION = $(GCC_VERSION_$(TARGET_GCC_VERSION)); GCC_VERSION_GCC_40 = 4.0; GCC_VERSION_GCC_42 = 4.2; GCC_VERSION_LLVM_GCC_42 = com.apple.compilers.llvmgcc42; +GCC_VERSION_LLVM_COMPILER = com.apple.compilers.llvm.clang.1_0; + +// FIXME: Disable C++ exceptions in the LLVM Compiler once it supports enabling Obj-C exceptions without C++ exceptions. +GCC_ENABLE_CPP_EXCEPTIONS = $(GCC_ENABLE_CPP_EXCEPTIONS_$(TARGET_GCC_VERSION)); +GCC_ENABLE_CPP_EXCEPTIONS_GCC_40 = NO; +GCC_ENABLE_CPP_EXCEPTIONS_GCC_42 = NO; +GCC_ENABLE_CPP_EXCEPTIONS_LLVM_GCC = NO; +GCC_ENABLE_CPP_EXCEPTIONS_LLVM_COMPILER = YES; // If the target Mac OS X version does not match the current Mac OS X version then we'll want to build using the target version's SDK. SDKROOT = $(SDKROOT_$(MAC_OS_X_VERSION_MAJOR)_$(TARGET_MAC_OS_X_VERSION_MAJOR)); diff --git a/Source/JavaScriptCore/Configurations/Version.xcconfig b/Source/JavaScriptCore/Configurations/Version.xcconfig index ae9167c..59988e3 100644 --- a/Source/JavaScriptCore/Configurations/Version.xcconfig +++ b/Source/JavaScriptCore/Configurations/Version.xcconfig @@ -22,7 +22,7 @@ // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. MAJOR_VERSION = 534; -MINOR_VERSION = 24; +MINOR_VERSION = 27; TINY_VERSION = 0; FULL_VERSION = $(MAJOR_VERSION).$(MINOR_VERSION); diff --git a/Source/JavaScriptCore/DerivedSources.make b/Source/JavaScriptCore/DerivedSources.make index 8abb17c..9a8c2cc 100644 --- a/Source/JavaScriptCore/DerivedSources.make +++ b/Source/JavaScriptCore/DerivedSources.make @@ -84,7 +84,6 @@ HeaderDetection.h : DerivedSources.make /System/Library/CoreServices/SystemVersi rm -f $@ echo "/* This is a generated file. Do not edit. */" > $@ if [ -f $(SDKROOT)/System/Library/Frameworks/System.framework/PrivateHeaders/pthread_machdep.h ]; then echo "#define HAVE_PTHREAD_MACHDEP_H 1" >> $@; else echo >> $@; fi - if [ -f $(SDKROOT)/System/Library/Frameworks/AppKit.framework/PrivateHeaders/NSScrollerImpPair_Private.h ]; then echo "#define USE_WK_SCROLLBAR_PAINTER_AND_CONTROLLER 1" >> $@; else echo >> $@; fi else diff --git a/Source/JavaScriptCore/GNUmakefile.am b/Source/JavaScriptCore/GNUmakefile.am index 977cb18..31e70a0 100644 --- a/Source/JavaScriptCore/GNUmakefile.am +++ b/Source/JavaScriptCore/GNUmakefile.am @@ -115,6 +115,10 @@ javascriptcore_sources += \ Source/JavaScriptCore/collector/handles/Handle.h \ Source/JavaScriptCore/collector/handles/HandleHeap.cpp \ Source/JavaScriptCore/collector/handles/HandleHeap.h \ + Source/JavaScriptCore/collector/handles/HandleStack.cpp \ + Source/JavaScriptCore/collector/handles/HandleStack.h \ + Source/JavaScriptCore/collector/handles/Local.h \ + Source/JavaScriptCore/collector/handles/LocalScope.h \ Source/JavaScriptCore/config.h \ Source/JavaScriptCore/debugger/DebuggerActivation.cpp \ Source/JavaScriptCore/debugger/DebuggerActivation.h \ @@ -468,6 +472,7 @@ javascriptcore_sources += \ Source/JavaScriptCore/wtf/HashTable.cpp \ Source/JavaScriptCore/wtf/HashTable.h \ Source/JavaScriptCore/wtf/HashTraits.h \ + Source/JavaScriptCore/wtf/HexNumber.h \ Source/JavaScriptCore/wtf/ListHashSet.h \ Source/JavaScriptCore/wtf/ListRefPtr.h \ Source/JavaScriptCore/wtf/Locker.h \ @@ -549,7 +554,7 @@ javascriptcore_sources += \ Source/JavaScriptCore/wtf/Threading.h \ Source/JavaScriptCore/wtf/ThreadingPrimitives.h \ Source/JavaScriptCore/wtf/ThreadingPthreads.cpp \ - Source/JavaScriptCore/wtf/ThreadSafeShared.h \ + Source/JavaScriptCore/wtf/ThreadSafeRefCounted.h \ Source/JavaScriptCore/wtf/ThreadSpecific.h \ Source/JavaScriptCore/wtf/TypeTraits.cpp \ Source/JavaScriptCore/wtf/TypeTraits.h \ diff --git a/Source/JavaScriptCore/JavaScriptCore.exp b/Source/JavaScriptCore/JavaScriptCore.exp index 914c2ac..e2647d1 100644 --- a/Source/JavaScriptCore/JavaScriptCore.exp +++ b/Source/JavaScriptCore/JavaScriptCore.exp @@ -1,4 +1,3 @@ -__ZN3JSC22objectConstructorTableE _JSCheckScriptSyntax _JSClassCreate _JSClassRelease @@ -114,15 +113,15 @@ __ZN3JSC10JSFunction6s_infoE __ZN3JSC10throwErrorEPNS_9ExecStateENS_7JSValueE __ZN3JSC10throwErrorEPNS_9ExecStateEPNS_8JSObjectE __ZN3JSC11JSByteArray13s_defaultInfoE -__ZN3JSC11JSByteArray15createStructureENS_7JSValueEPKNS_9ClassInfoE +__ZN3JSC11JSByteArray15createStructureERNS_12JSGlobalDataENS_7JSValueEPKNS_9ClassInfoE __ZN3JSC11JSByteArrayC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEPNS3_9ByteArrayE __ZN3JSC11MarkedSpace21allocateFromSizeClassERNS0_9SizeClassE __ZN3JSC11ParserArena5resetEv __ZN3JSC11checkSyntaxEPNS_9ExecStateERKNS_10SourceCodeE __ZN3JSC11createErrorEPNS_9ExecStateERKNS_7UStringE +__ZN3JSC11regExpFlagsERKNS_7UStringE __ZN3JSC12DateInstance6s_infoE __ZN3JSC12DateInstanceC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEd -__ZN3JSC12DateInstanceC1EPNS_9ExecStateEd __ZN3JSC12JSGlobalData10ClientDataD2Ev __ZN3JSC12JSGlobalData11jsArrayVPtrE __ZN3JSC12JSGlobalData12createLeakedENS_15ThreadStackTypeE @@ -159,11 +158,11 @@ __ZN3JSC14JSGlobalObject12defineGetterEPNS_9ExecStateERKNS_10IdentifierEPNS_8JSO __ZN3JSC14JSGlobalObject12defineSetterEPNS_9ExecStateERKNS_10IdentifierEPNS_8JSObjectEj __ZN3JSC14JSGlobalObject12markChildrenERNS_9MarkStackE __ZN3JSC14JSGlobalObject17putWithAttributesEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueEj -__ZN3JSC14JSGlobalObject25destroyJSGlobalObjectDataEPv __ZN3JSC14JSGlobalObject3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE __ZN3JSC14JSGlobalObject4initEPNS_8JSObjectE __ZN3JSC14JSGlobalObjectD2Ev __ZN3JSC14JSGlobalObjectnwEmPNS_12JSGlobalDataE +__ZN3JSC14MachineThreads16addCurrentThreadEv __ZN3JSC14SamplingThread4stopEv __ZN3JSC14SamplingThread5startEj __ZN3JSC14TimeoutChecker10didTimeOutEPNS_9ExecStateE @@ -182,10 +181,9 @@ __ZN3JSC16createRangeErrorEPNS_9ExecStateERKNS_7UStringE __ZN3JSC16throwSyntaxErrorEPNS_9ExecStateE __ZN3JSC17BytecodeGenerator21setDumpsGeneratedCodeEb __ZN3JSC17PropertyNameArray3addEPN3WTF10StringImplE -__ZN3JSC17constructFunctionEPNS_9ExecStateERKNS_7ArgListERKNS_10IdentifierERKNS_7UStringEi +__ZN3JSC17constructFunctionEPNS_9ExecStateEPNS_14JSGlobalObjectERKNS_7ArgListERKNS_10IdentifierERKNS_7UStringEi __ZN3JSC17createSyntaxErrorEPNS_9ExecStateERKNS_7UStringE __ZN3JSC18DebuggerActivationC1ERNS_12JSGlobalDataEPNS_8JSObjectE -__ZN3JSC18MachineStackMarker14registerThreadEv __ZN3JSC18PropertyDescriptor11setWritableEb __ZN3JSC18PropertyDescriptor12setUndefinedEv __ZN3JSC18PropertyDescriptor13setDescriptorENS_7JSValueEj @@ -201,13 +199,13 @@ __ZN3JSC19initializeThreadingEv __ZN3JSC20MarkedArgumentBuffer10slowAppendENS_7JSValueE __ZN3JSC20createReferenceErrorEPNS_9ExecStateERKNS_7UStringE __ZN3JSC22globalMemoryStatisticsEv +__ZN3JSC22objectConstructorTableE __ZN3JSC23AbstractSamplingCounter4dumpEv __ZN3JSC23objectProtoFuncToStringEPNS_9ExecStateE __ZN3JSC23setUpStaticFunctionSlotEPNS_9ExecStateEPKNS_9HashEntryEPNS_8JSObjectERKNS_10IdentifierERNS_12PropertySlotE -__ZN3JSC24DynamicGlobalObjectScopeC1EPNS_9ExecStateEPNS_14JSGlobalObjectE +__ZN3JSC24DynamicGlobalObjectScopeC1ERNS_12JSGlobalDataEPNS_14JSGlobalObjectE __ZN3JSC24JSObjectWithGlobalObjectC2EPNS_14JSGlobalObjectEN3WTF17NonNullPassRefPtrINS_9StructureEEE __ZN3JSC24createStackOverflowErrorEPNS_9ExecStateE -__ZN3JSC24createStackOverflowErrorEPNS_9ExecStateE __ZN3JSC25evaluateInGlobalCallFrameERKNS_7UStringERNS_7JSValueEPNS_14JSGlobalObjectE __ZN3JSC35createInterruptedExecutionExceptionEPNS_12JSGlobalDataE __ZN3JSC3NaNE @@ -248,7 +246,7 @@ __ZN3JSC6JSLock4lockENS_14JSLockBehaviorE __ZN3JSC6JSLock6unlockENS_14JSLockBehaviorE __ZN3JSC6JSLock9lockCountEv __ZN3JSC6JSLockC1EPNS_9ExecStateE -__ZN3JSC6RegExp6createEPNS_12JSGlobalDataERKNS_7UStringES5_ +__ZN3JSC6RegExp6createEPNS_12JSGlobalDataERKNS_7UStringENS_11RegExpFlagsE __ZN3JSC6RegExpD1Ev __ZN3JSC7JSArray12markChildrenERNS_9MarkStackE __ZN3JSC7JSArray15setSubclassDataEPv @@ -287,7 +285,6 @@ __ZN3JSC8JSObject14deletePropertyEPNS_9ExecStateERKNS_10IdentifierE __ZN3JSC8JSObject14deletePropertyEPNS_9ExecStateEj __ZN3JSC8JSObject15unwrappedObjectEv __ZN3JSC8JSObject16getPropertyNamesEPNS_9ExecStateERNS_17PropertyNameArrayENS_15EnumerationModeE -__ZN3JSC8JSObject17createInheritorIDEv __ZN3JSC8JSObject17defineOwnPropertyEPNS_9ExecStateERKNS_10IdentifierERNS_18PropertyDescriptorEb __ZN3JSC8JSObject17putDirectFunctionEPNS_9ExecStateEPNS_10JSFunctionEj __ZN3JSC8JSObject17putDirectFunctionEPNS_9ExecStateEPNS_16InternalFunctionEj @@ -387,6 +384,7 @@ __ZN3WTF12createThreadEPFPvS0_ES0_PKc __ZN3WTF12detachThreadEj __ZN3WTF12isMainThreadEv __ZN3WTF12randomNumberEv +__ZN3WTF13StringBuilder15reserveCapacityEj __ZN3WTF13StringBuilder11reifyStringEv __ZN3WTF13StringBuilder11shrinkToFitEv __ZN3WTF13StringBuilder6appendEPKcj @@ -431,6 +429,7 @@ __ZN3WTF21RefCountedLeakCounter9incrementEv __ZN3WTF21RefCountedLeakCounterC1EPKc __ZN3WTF21RefCountedLeakCounterD1Ev __ZN3WTF21charactersToIntStrictEPKtmPbi +__ZN3WTF22cancelCallOnMainThreadEPFvPvES0_ __ZN3WTF22charactersToUIntStrictEPKtmPbi __ZN3WTF23callOnMainThreadAndWaitEPFvPvES0_ __ZN3WTF23dayInMonthFromDayInYearEib @@ -446,10 +445,10 @@ __ZN3WTF39initializeMainThreadToProcessMainThreadEv __ZN3WTF3MD58addBytesEPKhm __ZN3WTF3MD58checksumERNS_6VectorIhLm16EEE __ZN3WTF3MD5C1Ev -__ZN3WTF4dtoaEPcdRbRiRj __ZN3WTF4SHA111computeHashERNS_6VectorIhLm20EEE __ZN3WTF4SHA18addBytesEPKhm __ZN3WTF4SHA1C1Ev +__ZN3WTF4dtoaEPcdRbRiRj __ZN3WTF5Mutex4lockEv __ZN3WTF5Mutex6unlockEv __ZN3WTF5Mutex7tryLockEv @@ -535,7 +534,7 @@ __ZNK3JSC6JSCell11toPrimitiveEPNS_9ExecStateENS_22PreferredPrimitiveTypeE __ZNK3JSC6JSCell12toThisObjectEPNS_9ExecStateE __ZNK3JSC6JSCell14isGetterSetterEv __ZNK3JSC6JSCell8toNumberEPNS_9ExecStateE -__ZNK3JSC6JSCell8toObjectEPNS_9ExecStateE +__ZNK3JSC6JSCell8toObjectEPNS_9ExecStateEPNS_14JSGlobalObjectE __ZNK3JSC6JSCell8toStringEPNS_9ExecStateE __ZNK3JSC6JSCell9getStringEPNS_9ExecStateE __ZNK3JSC6JSCell9getStringEPNS_9ExecStateERNS_7UStringE @@ -543,7 +542,7 @@ __ZNK3JSC6JSCell9getUInt32ERj __ZNK3JSC6JSCell9toBooleanEPNS_9ExecStateE __ZNK3JSC7ArgList8getSliceEiRS0_ __ZNK3JSC7JSArray12subclassDataEv -__ZNK3JSC7JSValue16toObjectSlowCaseEPNS_9ExecStateE +__ZNK3JSC7JSValue16toObjectSlowCaseEPNS_9ExecStateEPNS_14JSGlobalObjectE __ZNK3JSC7JSValue19synthesizePrototypeEPNS_9ExecStateE __ZNK3JSC7JSValue20toThisObjectSlowCaseEPNS_9ExecStateE __ZNK3JSC7JSValue9toIntegerEPNS_9ExecStateE @@ -556,7 +555,7 @@ __ZNK3JSC8JSObject12defaultValueEPNS_9ExecStateENS_22PreferredPrimitiveTypeE __ZNK3JSC8JSObject12toThisObjectEPNS_9ExecStateE __ZNK3JSC8JSObject18toStrictThisObjectEPNS_9ExecStateE __ZNK3JSC8JSObject8toNumberEPNS_9ExecStateE -__ZNK3JSC8JSObject8toObjectEPNS_9ExecStateE +__ZNK3JSC8JSObject8toObjectEPNS_9ExecStateEPNS_14JSGlobalObjectE __ZNK3JSC8JSObject8toStringEPNS_9ExecStateE __ZNK3JSC8JSObject9classNameEv __ZNK3JSC8JSObject9toBooleanEPNS_9ExecStateE diff --git a/Source/JavaScriptCore/JavaScriptCore.gypi b/Source/JavaScriptCore/JavaScriptCore.gypi index 292473c..cb93a29 100644 --- a/Source/JavaScriptCore/JavaScriptCore.gypi +++ b/Source/JavaScriptCore/JavaScriptCore.gypi @@ -1,5 +1,6 @@ { 'variables': { + 'project_dir': ['.'], # These headers are part of JavaScriptCore's public API in the Apple Mac build. 'javascriptcore_publicheader_files': [ 'API/JSBase.h', @@ -29,6 +30,9 @@ 'collector/handles/Global.h', 'collector/handles/Handle.h', 'collector/handles/HandleHeap.h', + 'collector/handles/HandleStack.h', + 'collector/handles/Local.h', + 'collector/handles/LocalScope.h', 'config.h', 'debugger/Debugger.h', 'debugger/DebuggerActivation.h', @@ -64,6 +68,7 @@ 'runtime/ExceptionHelpers.h', 'runtime/FunctionConstructor.h', 'runtime/FunctionPrototype.h', + 'runtime/GCActivityCallback.h', 'runtime/Heap.h', 'runtime/Identifier.h', 'runtime/InitializeThreading.h', @@ -105,7 +110,9 @@ 'runtime/Protect.h', 'runtime/PutPropertySlot.h', 'runtime/RegExp.h', + 'runtime/RegExpKey.h', 'runtime/RegExpCache.h', + 'runtime/RegExpObject.h', 'runtime/RopeImpl.h', 'runtime/ScopeChain.h', 'runtime/SmallStrings.h', @@ -157,6 +164,7 @@ 'wtf/HashSet.h', 'wtf/HashTable.h', 'wtf/HashTraits.h', + 'wtf/HexNumber.h', 'wtf/ListHashSet.h', 'wtf/ListRefPtr.h', 'wtf/Locker.h', @@ -195,7 +203,7 @@ 'wtf/StdLibExtras.h', 'wtf/StringExtras.h', 'wtf/StringHasher.h', - 'wtf/ThreadSafeShared.h', + 'wtf/ThreadSafeRefCounted.h', 'wtf/ThreadSpecific.h', 'wtf/Threading.h', 'wtf/ThreadingPrimitives.h', @@ -303,9 +311,29 @@ 'bytecompiler/NodesCodegen.cpp', 'bytecompiler/RegisterID.h', 'collector/handles/HandleHeap.cpp', + 'collector/handles/HandleStack.cpp', 'debugger/Debugger.cpp', 'debugger/DebuggerActivation.cpp', 'debugger/DebuggerCallFrame.cpp', + 'dfg/DFGAliasTracker.h', + 'dfg/DFGByteCodeParser.cpp', + 'dfg/DFGByteCodeParser.h', + 'dfg/DFGGenerationInfo.h', + 'dfg/DFGGraph.cpp', + 'dfg/DFGGraph.h', + 'dfg/DFGJITCodeGenerator.cpp', + 'dfg/DFGJITCodeGenerator.h', + 'dfg/DFGJITCompiler.cpp', + 'dfg/DFGJITCompiler.h', + 'dfg/DFGNode.h', + 'dfg/DFGNonSpeculativeJIT.cpp', + 'dfg/DFGNonSpeculativeJIT.h', + 'dfg/DFGOperations.cpp', + 'dfg/DFGOperations.h', + 'dfg/DFGRegisterBank.h', + 'dfg/DFGScoreBoard.h', + 'dfg/DFGSpeculativeJIT.cpp', + 'dfg/DFGSpeculativeJIT.h', 'icu/unicode/parseerr.h', 'icu/unicode/platform.h', 'icu/unicode/putil.h', @@ -351,6 +379,10 @@ 'jit/JSInterfaceJIT.h', 'jit/SpecializedThunkJIT.h', 'jit/ThunkGenerators.cpp', + 'os-win32/WinMain.cpp', + 'os-win32/inttypes.h', + 'os-win32/stdbool.h', + 'os-win32/stdint.h', 'parser/ASTBuilder.h', 'parser/JSParser.cpp', 'parser/JSParser.h', @@ -447,7 +479,6 @@ 'runtime/FunctionConstructor.cpp', 'runtime/FunctionPrototype.cpp', 'runtime/GCActivityCallback.cpp', - 'runtime/GCActivityCallback.h', 'runtime/GCActivityCallbackCF.cpp', 'runtime/GetterSetter.cpp', 'runtime/GetterSetter.h', @@ -517,10 +548,8 @@ 'runtime/RegExpCache.cpp', 'runtime/RegExpConstructor.cpp', 'runtime/RegExpConstructor.h', - 'runtime/RegExpKey.h', 'runtime/RegExpMatchesArray.h', 'runtime/RegExpObject.cpp', - 'runtime/RegExpObject.h', 'runtime/RegExpPrototype.cpp', 'runtime/RegExpPrototype.h', 'runtime/RopeImpl.cpp', @@ -538,6 +567,7 @@ 'runtime/Structure.cpp', 'runtime/StructureChain.cpp', 'runtime/TimeoutChecker.cpp', + 'runtime/Tracing.d', 'runtime/Tracing.h', 'runtime/UString.cpp', 'runtime/UStringConcatenate.h', @@ -564,9 +594,9 @@ 'wtf/RandomNumber.cpp', 'wtf/RandomNumberSeed.h', 'wtf/RefCountedLeakCounter.cpp', - 'wtf/SegmentedVector.h', 'wtf/SHA1.cpp', 'wtf/SHA1.h', + 'wtf/SegmentedVector.h', 'wtf/SizeLimits.cpp', 'wtf/StackBounds.cpp', 'wtf/StringExtras.cpp', @@ -656,13 +686,20 @@ 'yarr/YarrSyntaxChecker.cpp', 'yarr/YarrSyntaxChecker.h', ], - # These files are separate from javascriptcore_files so we can use a - # header map in the Apple Mac Xcode build. - 'os_win32_files': [ - 'os-win32/WinMain.cpp', - 'os-win32/inttypes.h', - 'os-win32/stdbool.h', - 'os-win32/stdint.h', + 'javascriptcore_derived_source_files': [ + '<(PRODUCT_DIR)/DerivedSources/JavaScriptCore/ArrayPrototype.lut.h', + '<(PRODUCT_DIR)/DerivedSources/JavaScriptCore/DatePrototype.lut.h', + '<(PRODUCT_DIR)/DerivedSources/JavaScriptCore/HeaderDetection.h', + '<(PRODUCT_DIR)/DerivedSources/JavaScriptCore/JSONObject.lut.h', + '<(PRODUCT_DIR)/DerivedSources/JavaScriptCore/Lexer.lut.h', + '<(PRODUCT_DIR)/DerivedSources/JavaScriptCore/MathObject.lut.h', + '<(PRODUCT_DIR)/DerivedSources/JavaScriptCore/NumberConstructor.lut.h', + '<(PRODUCT_DIR)/DerivedSources/JavaScriptCore/RegExpConstructor.lut.h', + '<(PRODUCT_DIR)/DerivedSources/JavaScriptCore/RegExpJitTables.h', + '<(PRODUCT_DIR)/DerivedSources/JavaScriptCore/RegExpObject.lut.h', + '<(PRODUCT_DIR)/DerivedSources/JavaScriptCore/StringPrototype.lut.h', + '<(PRODUCT_DIR)/DerivedSources/JavaScriptCore/TracingDtrace.h', + '<(PRODUCT_DIR)/DerivedSources/JavaScriptCore/ObjectConstructor.lut.h', ], 'minidom_files': [ 'API/tests/JSNode.c', diff --git a/Source/JavaScriptCore/JavaScriptCore.pri b/Source/JavaScriptCore/JavaScriptCore.pri index 391c74f..941a708 100644 --- a/Source/JavaScriptCore/JavaScriptCore.pri +++ b/Source/JavaScriptCore/JavaScriptCore.pri @@ -26,6 +26,7 @@ JAVASCRIPTCORE_INCLUDEPATH = \ $$PWD/bytecode \ $$PWD/bytecompiler \ $$PWD/collector/handles \ + $$PWD/dfg \ $$PWD/debugger \ $$PWD/interpreter \ $$PWD/jit \ diff --git a/Source/JavaScriptCore/JavaScriptCore.pro b/Source/JavaScriptCore/JavaScriptCore.pro index e41f04d..80ad3e8 100644 --- a/Source/JavaScriptCore/JavaScriptCore.pro +++ b/Source/JavaScriptCore/JavaScriptCore.pro @@ -69,10 +69,18 @@ SOURCES += \ bytecode/StructureStubInfo.cpp \ bytecompiler/BytecodeGenerator.cpp \ bytecompiler/NodesCodegen.cpp \ + collector/handles/HandleHeap.cpp \ + collector/handles/HandleStack.cpp \ debugger/DebuggerActivation.cpp \ debugger/DebuggerCallFrame.cpp \ debugger/Debugger.cpp \ - collector/handles/HandleHeap.cpp \ + dfg/DFGByteCodeParser.cpp \ + dfg/DFGGraph.cpp \ + dfg/DFGJITCodeGenerator.cpp \ + dfg/DFGJITCompiler.cpp \ + dfg/DFGNonSpeculativeJIT.cpp \ + dfg/DFGOperations.cpp \ + dfg/DFGSpeculativeJIT.cpp \ interpreter/CallFrame.cpp \ interpreter/Interpreter.cpp \ interpreter/RegisterFile.cpp \ diff --git a/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore.make b/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore.make index 68075f9..b5461e4 100644 --- a/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore.make +++ b/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore.make @@ -5,7 +5,6 @@ BUILDSTYLE=Release_PGO !ENDIF install: - set PRODUCTION=1 set WebKitLibrariesDir=$(SRCROOT)\AppleInternal set WebKitOutputDir=$(OBJROOT) set ConfigurationBuildDir=$(OBJROOT)\$(BUILDSTYLE) diff --git a/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore.sln b/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore.sln index a4832ed..0b610e2 100644 --- a/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore.sln +++ b/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore.sln @@ -22,7 +22,7 @@ Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug_All|Win32 = Debug_All|Win32 Debug|Win32 = Debug|Win32 - Release_LTCG|Win32 = Release_LTCG|Win32 + Production|Win32 = Production|Win32 Release_PGO_Optimize|Win32 = Release_PGO_Optimize|Win32 Release_PGO|Win32 = Release_PGO|Win32 Release|Win32 = Release|Win32 @@ -32,8 +32,8 @@ Global {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Debug_All|Win32.Build.0 = Debug_All|Win32 {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Debug|Win32.ActiveCfg = Debug|Win32 {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Debug|Win32.Build.0 = Debug|Win32 - {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Release_LTCG|Win32.ActiveCfg = Release_LTCG|Win32 - {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Release_LTCG|Win32.Build.0 = Release_LTCG|Win32 + {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Production|Win32.ActiveCfg = Production|Win32 + {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Production|Win32.Build.0 = Production|Win32 {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Release_PGO_Optimize|Win32.ActiveCfg = Release_PGO_Optimize|Win32 {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Release_PGO_Optimize|Win32.Build.0 = Release_PGO_Optimize|Win32 {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Release_PGO|Win32.ActiveCfg = Release_PGO|Win32 @@ -44,8 +44,8 @@ Global {C59E5129-B453-49B7-A52B-1E104715F76E}.Debug_All|Win32.Build.0 = Debug_All|Win32 {C59E5129-B453-49B7-A52B-1E104715F76E}.Debug|Win32.ActiveCfg = Debug|Win32 {C59E5129-B453-49B7-A52B-1E104715F76E}.Debug|Win32.Build.0 = Debug|Win32 - {C59E5129-B453-49B7-A52B-1E104715F76E}.Release_LTCG|Win32.ActiveCfg = Release_LTCG|Win32 - {C59E5129-B453-49B7-A52B-1E104715F76E}.Release_LTCG|Win32.Build.0 = Release_LTCG|Win32 + {C59E5129-B453-49B7-A52B-1E104715F76E}.Production|Win32.ActiveCfg = Production|Win32 + {C59E5129-B453-49B7-A52B-1E104715F76E}.Production|Win32.Build.0 = Production|Win32 {C59E5129-B453-49B7-A52B-1E104715F76E}.Release_PGO_Optimize|Win32.ActiveCfg = Release_PGO|Win32 {C59E5129-B453-49B7-A52B-1E104715F76E}.Release_PGO_Optimize|Win32.Build.0 = Release_PGO|Win32 {C59E5129-B453-49B7-A52B-1E104715F76E}.Release_PGO|Win32.ActiveCfg = Release_PGO|Win32 @@ -56,8 +56,8 @@ Global {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Debug_All|Win32.Build.0 = Debug_All|Win32 {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Debug|Win32.ActiveCfg = Debug|Win32 {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Debug|Win32.Build.0 = Debug|Win32 - {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Release_LTCG|Win32.ActiveCfg = Release_LTCG|Win32 - {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Release_LTCG|Win32.Build.0 = Release_LTCG|Win32 + {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Production|Win32.ActiveCfg = Production|Win32 + {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Production|Win32.Build.0 = Production|Win32 {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Release_PGO_Optimize|Win32.ActiveCfg = Release_PGO|Win32 {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Release_PGO_Optimize|Win32.Build.0 = Release_PGO|Win32 {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Release_PGO|Win32.ActiveCfg = Release_PGO|Win32 @@ -68,8 +68,8 @@ Global {DA31DA52-6675-48D4-89E0-333A7144397C}.Debug_All|Win32.Build.0 = Debug_All|Win32 {DA31DA52-6675-48D4-89E0-333A7144397C}.Debug|Win32.ActiveCfg = Debug|Win32 {DA31DA52-6675-48D4-89E0-333A7144397C}.Debug|Win32.Build.0 = Debug|Win32 - {DA31DA52-6675-48D4-89E0-333A7144397C}.Release_LTCG|Win32.ActiveCfg = Release_LTCG|Win32 - {DA31DA52-6675-48D4-89E0-333A7144397C}.Release_LTCG|Win32.Build.0 = Release_LTCG|Win32 + {DA31DA52-6675-48D4-89E0-333A7144397C}.Production|Win32.ActiveCfg = Production|Win32 + {DA31DA52-6675-48D4-89E0-333A7144397C}.Production|Win32.Build.0 = Production|Win32 {DA31DA52-6675-48D4-89E0-333A7144397C}.Release_PGO_Optimize|Win32.ActiveCfg = Release_PGO|Win32 {DA31DA52-6675-48D4-89E0-333A7144397C}.Release_PGO_Optimize|Win32.Build.0 = Release_PGO|Win32 {DA31DA52-6675-48D4-89E0-333A7144397C}.Release_PGO|Win32.ActiveCfg = Release_PGO|Win32 @@ -80,8 +80,8 @@ Global {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Debug_All|Win32.Build.0 = Debug_All|Win32 {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Debug|Win32.ActiveCfg = Debug|Win32 {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Debug|Win32.Build.0 = Debug|Win32 - {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Release_LTCG|Win32.ActiveCfg = Release_LTCG|Win32 - {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Release_LTCG|Win32.Build.0 = Release_LTCG|Win32 + {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Production|Win32.ActiveCfg = Production|Win32 + {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Production|Win32.Build.0 = Production|Win32 {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Release_PGO_Optimize|Win32.ActiveCfg = Release_PGO|Win32 {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Release_PGO_Optimize|Win32.Build.0 = Release_PGO|Win32 {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Release_PGO|Win32.ActiveCfg = Release_PGO|Win32 diff --git a/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def b/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def index 7a8be2a..d7cddf4 100644 --- a/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def +++ b/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def @@ -3,11 +3,10 @@ EXPORTS ??0CString@WTF@@QAE@PBD@Z ??0CString@WTF@@QAE@PBDI@Z ??0Collator@WTF@@QAE@PBD@Z - ??0DateInstance@JSC@@QAE@PAVExecState@1@N@Z ??0DateInstance@JSC@@QAE@PAVExecState@1@V?$NonNullPassRefPtr@VStructure@JSC@@@WTF@@N@Z ??0DefaultGCActivityCallback@JSC@@QAE@PAVHeap@1@@Z ??0DropAllLocks@JSLock@JSC@@QAE@W4JSLockBehavior@2@@Z - ??0DynamicGlobalObjectScope@JSC@@QAE@PAVExecState@1@PAVJSGlobalObject@1@@Z + ??0DynamicGlobalObjectScope@JSC@@QAE@AAVJSGlobalData@1@PAVJSGlobalObject@1@@Z ??0InternalFunction@JSC@@IAE@PAVJSGlobalData@1@PAVJSGlobalObject@1@V?$NonNullPassRefPtr@VStructure@JSC@@@WTF@@ABVIdentifier@1@@Z ??0JSArray@JSC@@QAE@AAVJSGlobalData@1@V?$NonNullPassRefPtr@VStructure@JSC@@@WTF@@ABVArgList@1@@Z ??0JSArray@JSC@@QAE@V?$NonNullPassRefPtr@VStructure@JSC@@@WTF@@@Z @@ -51,6 +50,7 @@ EXPORTS ?add@PropertyNameArray@JSC@@QAEXPAVStringImpl@WTF@@@Z ?addBytes@MD5@WTF@@QAEXPBEI@Z ?addBytes@SHA1@WTF@@QAEXPBEI@Z + ?addCurrentThread@MachineThreads@JSC@@QAEXXZ ?addPropertyTransition@Structure@JSC@@SA?AV?$PassRefPtr@VStructure@JSC@@@WTF@@PAV12@ABVIdentifier@2@IPAVJSCell@2@AAI@Z ?addPropertyTransitionToExistingStructure@Structure@JSC@@SA?AV?$PassRefPtr@VStructure@JSC@@@WTF@@PAV12@ABVIdentifier@2@IPAVJSCell@2@AAI@Z ?addPropertyWithoutTransition@Structure@JSC@@QAEIABVIdentifier@2@IPAVJSCell@2@@Z @@ -93,23 +93,22 @@ EXPORTS ?constructArray@JSC@@YAPAVJSArray@1@PAVExecState@1@ABVArgList@1@@Z ?constructEmptyArray@JSC@@YAPAVJSArray@1@PAVExecState@1@@Z ?constructEmptyObject@JSC@@YAPAVJSObject@1@PAVExecState@1@@Z - ?constructFunction@JSC@@YAPAVJSObject@1@PAVExecState@1@ABVArgList@1@ABVIdentifier@1@ABVUString@1@H@Z + ?constructFunction@JSC@@YAPAVJSObject@1@PAVExecState@1@PAVJSGlobalObject@1@ABVArgList@1@ABVIdentifier@1@ABVUString@1@H@Z ?convertUTF16ToUTF8@Unicode@WTF@@YA?AW4ConversionResult@12@PAPB_WPB_WPAPADPAD_N@Z ?convertUTF8ToUTF16@Unicode@WTF@@YA?AW4ConversionResult@12@PAPBDPBDPAPA_WPA_W_N@Z ?create@ByteArray@WTF@@SA?AV?$PassRefPtr@VByteArray@WTF@@@2@I@Z ?create@JSGlobalData@JSC@@SA?AV?$PassRefPtr@VJSGlobalData@JSC@@@WTF@@W4ThreadStackType@2@@Z ?create@OpaqueJSString@@SA?AV?$PassRefPtr@UOpaqueJSString@@@WTF@@ABVUString@JSC@@@Z - ?create@RegExp@JSC@@SA?AV?$PassRefPtr@VRegExp@JSC@@@WTF@@PAVJSGlobalData@2@ABVUString@2@1@Z + ?create@RegExp@JSC@@SA?AV?$PassRefPtr@VRegExp@JSC@@@WTF@@PAVJSGlobalData@2@ABVUString@2@W4RegExpFlags@2@@Z ?createEmptyString@SmallStrings@JSC@@AAEXPAVJSGlobalData@2@@Z ?createError@JSC@@YAPAVJSObject@1@PAVExecState@1@ABVUString@1@@Z - ?createInheritorID@JSObject@JSC@@AAEPAVStructure@2@XZ ?createInterruptedExecutionException@JSC@@YAPAVJSObject@1@PAVJSGlobalData@1@@Z ?createLeaked@JSGlobalData@JSC@@SA?AV?$PassRefPtr@VJSGlobalData@JSC@@@WTF@@W4ThreadStackType@2@@Z ?createRangeError@JSC@@YAPAVJSObject@1@PAVExecState@1@ABVUString@1@@Z ?createReferenceError@JSC@@YAPAVJSObject@1@PAVExecState@1@ABVUString@1@@Z ?createSingleCharacterString@SmallStrings@JSC@@AAEXPAVJSGlobalData@2@E@Z ?createStackOverflowError@JSC@@YAPAVJSObject@1@PAVExecState@1@@Z - ?createStructure@JSByteArray@JSC@@SA?AV?$PassRefPtr@VStructure@JSC@@@WTF@@VJSValue@2@PBUClassInfo@2@@Z + ?createStructure@JSByteArray@JSC@@SA?AV?$PassRefPtr@VStructure@JSC@@@WTF@@AAVJSGlobalData@2@VJSValue@2@PBUClassInfo@2@@Z ?createSyntaxError@JSC@@YAPAVJSObject@1@PAVExecState@1@ABVUString@1@@Z ?createTable@HashTable@JSC@@ABEXPAVJSGlobalData@2@@Z ?createThread@WTF@@YAIP6APAXPAX@Z0@Z @@ -147,7 +146,6 @@ EXPORTS ?despecifyDictionaryFunction@Structure@JSC@@QAEXABVIdentifier@2@@Z ?despecifyFunctionTransition@Structure@JSC@@SA?AV?$PassRefPtr@VStructure@JSC@@@WTF@@PAV12@ABVIdentifier@2@@Z ?destroy@Heap@JSC@@QAEXXZ - ?destroyJSGlobalObjectData@JSGlobalObject@JSC@@CAXPAX@Z ?detach@Debugger@JSC@@UAEXPAVJSGlobalObject@2@@Z ?detachThread@WTF@@YAXI@Z ?didTimeOut@TimeoutChecker@JSC@@QAE_NPAVExecState@2@@Z @@ -277,8 +275,9 @@ EXPORTS ?putWithAttributes@JSObject@JSC@@UAEXPAVJSGlobalData@2@IVJSValue@2@I@Z ?randomNumber@WTF@@YANXZ ?recompileAllJSFunctions@Debugger@JSC@@QAEXPAVJSGlobalData@2@@Z - ?registerThread@MachineStackMarker@JSC@@QAEXXZ + ?regExpFlags@JSC@@YA?AW4RegExpFlags@1@ABVUString@1@@Z ?reifyString@StringBuilder@WTF@@AAEXXZ + ?reserveCapacity@StringBuilder@WTF@@QAEXI@Z ?releaseDecommitted@OSAllocator@WTF@@SAXPAXI@Z ?releaseStack@MarkStack@JSC@@CAXPAXI@Z ?reportExtraMemoryCostSlowCase@Heap@JSC@@AAEXI@Z @@ -336,10 +335,9 @@ EXPORTS ?toNumber@JSCell@JSC@@UBENPAVExecState@2@@Z ?toNumber@JSObject@JSC@@UBENPAVExecState@2@@Z ?toNumber@JSString@JSC@@EBENPAVExecState@2@@Z - ?toObject@JSCell@JSC@@UBEPAVJSObject@2@PAVExecState@2@@Z - ?toObject@JSObject@JSC@@UBEPAV12@PAVExecState@2@@Z - ?toObject@JSString@JSC@@EBEPAVJSObject@2@PAVExecState@2@@Z - ?toObjectSlowCase@JSValue@JSC@@ABEPAVJSObject@2@PAVExecState@2@@Z + ?toObject@JSCell@JSC@@UBEPAVJSObject@2@PAVExecState@2@PAVJSGlobalObject@2@@Z + ?toObject@JSObject@JSC@@UBEPAV12@PAVExecState@2@PAVJSGlobalObject@2@@Z + ?toObjectSlowCase@JSValue@JSC@@ABEPAVJSObject@2@PAVExecState@2@PAVJSGlobalObject@2@@Z ?toPrimitive@JSCell@JSC@@UBE?AVJSValue@2@PAVExecState@2@W4PreferredPrimitiveType@2@@Z ?toPrimitive@JSString@JSC@@EBE?AVJSValue@2@PAVExecState@2@W4PreferredPrimitiveType@2@@Z ?toStrictThisObject@JSObject@JSC@@UBE?AVJSValue@2@PAVExecState@2@@Z diff --git a/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj b/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj index 34a9902..30b014a 100644 --- a/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj +++ b/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj @@ -18,7 +18,7 @@ @@ -202,7 +202,7 @@ @@ -447,7 +447,7 @@ @@ -1960,6 +1960,22 @@ RelativePath="..\..\collector\handles\HandleHeap.h" > + + + + + + + + + + diff --git a/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreDebugAll.vsprops b/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreDebugAll.vsprops new file mode 100644 index 0000000..8cd1130 --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreDebugAll.vsprops @@ -0,0 +1,14 @@ + + + diff --git a/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreDebugCairoCFLite.vsprops b/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreDebugCairoCFLite.vsprops new file mode 100644 index 0000000..ea0806d --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreDebugCairoCFLite.vsprops @@ -0,0 +1,14 @@ + + + diff --git a/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj b/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj index 2437071..ebff713 100644 --- a/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj +++ b/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj @@ -43,7 +43,7 @@ /> diff --git a/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreProduction.vsprops b/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreProduction.vsprops new file mode 100644 index 0000000..1d8e82d --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreProduction.vsprops @@ -0,0 +1,14 @@ + + + diff --git a/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreRelease.vsprops b/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreRelease.vsprops new file mode 100644 index 0000000..e4612c3 --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreRelease.vsprops @@ -0,0 +1,13 @@ + + + diff --git a/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleaseCairoCFLite.vsprops b/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleaseCairoCFLite.vsprops new file mode 100644 index 0000000..64699b5 --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleaseCairoCFLite.vsprops @@ -0,0 +1,14 @@ + + + diff --git a/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleasePGO.vsprops b/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleasePGO.vsprops new file mode 100644 index 0000000..ada0b8e --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleasePGO.vsprops @@ -0,0 +1,14 @@ + + + diff --git a/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleasePGOOptimize.vsprops b/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleasePGOOptimize.vsprops new file mode 100644 index 0000000..3e207e7 --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleasePGOOptimize.vsprops @@ -0,0 +1,15 @@ + + + diff --git a/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln b/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln index 1109c33..1e24f28 100644 --- a/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln +++ b/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln @@ -22,7 +22,7 @@ Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug_All|Win32 = Debug_All|Win32 Debug|Win32 = Debug|Win32 - Release_LTCG|Win32 = Release_LTCG|Win32 + Production|Win32 = Production|Win32 Release_PGO_Optimize|Win32 = Release_PGO_Optimize|Win32 Release_PGO|Win32 = Release_PGO|Win32 Release|Win32 = Release|Win32 @@ -32,8 +32,8 @@ Global {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Debug_All|Win32.Build.0 = Debug_All|Win32 {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Debug|Win32.ActiveCfg = Debug|Win32 {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Debug|Win32.Build.0 = Debug|Win32 - {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Release_LTCG|Win32.ActiveCfg = Release_LTCG|Win32 - {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Release_LTCG|Win32.Build.0 = Release_LTCG|Win32 + {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Production|Win32.ActiveCfg = Production|Win32 + {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Production|Win32.Build.0 = Production|Win32 {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Release_PGO_Optimize|Win32.ActiveCfg = Release_PGO_Optimize|Win32 {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Release_PGO_Optimize|Win32.Build.0 = Release_PGO_Optimize|Win32 {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Release_PGO|Win32.ActiveCfg = Release_PGO|Win32 @@ -44,8 +44,8 @@ Global {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Debug_All|Win32.Build.0 = Debug_All|Win32 {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Debug|Win32.ActiveCfg = Debug|Win32 {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Debug|Win32.Build.0 = Debug|Win32 - {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Release_LTCG|Win32.ActiveCfg = Release_LTCG|Win32 - {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Release_LTCG|Win32.Build.0 = Release_LTCG|Win32 + {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Production|Win32.ActiveCfg = Production|Win32 + {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Production|Win32.Build.0 = Production|Win32 {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Release_PGO_Optimize|Win32.ActiveCfg = Release_PGO|Win32 {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Release_PGO_Optimize|Win32.Build.0 = Release_PGO|Win32 {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Release_PGO|Win32.ActiveCfg = Release_PGO|Win32 @@ -56,8 +56,8 @@ Global {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Debug_All|Win32.Build.0 = Debug_All|Win32 {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Debug|Win32.ActiveCfg = Debug|Win32 {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Debug|Win32.Build.0 = Debug|Win32 - {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Release_LTCG|Win32.ActiveCfg = Release_LTCG|Win32 - {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Release_LTCG|Win32.Build.0 = Release_LTCG|Win32 + {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Production|Win32.ActiveCfg = Production|Win32 + {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Production|Win32.Build.0 = Production|Win32 {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Release_PGO_Optimize|Win32.ActiveCfg = Release_PGO|Win32 {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Release_PGO_Optimize|Win32.Build.0 = Release_PGO|Win32 {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Release_PGO|Win32.ActiveCfg = Release_PGO|Win32 @@ -68,8 +68,8 @@ Global {C59E5129-B453-49B7-A52B-1E104715F76E}.Debug_All|Win32.Build.0 = Debug_All|Win32 {C59E5129-B453-49B7-A52B-1E104715F76E}.Debug|Win32.ActiveCfg = Debug|Win32 {C59E5129-B453-49B7-A52B-1E104715F76E}.Debug|Win32.Build.0 = Debug|Win32 - {C59E5129-B453-49B7-A52B-1E104715F76E}.Release_LTCG|Win32.ActiveCfg = Release_LTCG|Win32 - {C59E5129-B453-49B7-A52B-1E104715F76E}.Release_LTCG|Win32.Build.0 = Release_LTCG|Win32 + {C59E5129-B453-49B7-A52B-1E104715F76E}.Production|Win32.ActiveCfg = Production|Win32 + {C59E5129-B453-49B7-A52B-1E104715F76E}.Production|Win32.Build.0 = Production|Win32 {C59E5129-B453-49B7-A52B-1E104715F76E}.Release_PGO_Optimize|Win32.ActiveCfg = Release_PGO|Win32 {C59E5129-B453-49B7-A52B-1E104715F76E}.Release_PGO_Optimize|Win32.Build.0 = Release_PGO|Win32 {C59E5129-B453-49B7-A52B-1E104715F76E}.Release_PGO|Win32.ActiveCfg = Release_PGO|Win32 diff --git a/Source/JavaScriptCore/JavaScriptCore.vcproj/WTF/WTF.vcproj b/Source/JavaScriptCore/JavaScriptCore.vcproj/WTF/WTF.vcproj index 8f0cfcb..aa337b3 100644 --- a/Source/JavaScriptCore/JavaScriptCore.vcproj/WTF/WTF.vcproj +++ b/Source/JavaScriptCore/JavaScriptCore.vcproj/WTF/WTF.vcproj @@ -18,7 +18,7 @@ @@ -227,7 +227,7 @@ + + @@ -965,7 +969,7 @@ > + + diff --git a/Source/JavaScriptCore/JavaScriptCore.vcproj/WTF/WTFDebugAll.vsprops b/Source/JavaScriptCore/JavaScriptCore.vcproj/WTF/WTFDebugAll.vsprops new file mode 100644 index 0000000..061f2ed --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcproj/WTF/WTFDebugAll.vsprops @@ -0,0 +1,13 @@ + + + diff --git a/Source/JavaScriptCore/JavaScriptCore.vcproj/WTF/WTFDebugCairoCFLite.vsprops b/Source/JavaScriptCore/JavaScriptCore.vcproj/WTF/WTFDebugCairoCFLite.vsprops new file mode 100644 index 0000000..7965652 --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcproj/WTF/WTFDebugCairoCFLite.vsprops @@ -0,0 +1,13 @@ + + + diff --git a/Source/JavaScriptCore/JavaScriptCore.vcproj/WTF/WTFProduction.vsprops b/Source/JavaScriptCore/JavaScriptCore.vcproj/WTF/WTFProduction.vsprops new file mode 100644 index 0000000..3de342c --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcproj/WTF/WTFProduction.vsprops @@ -0,0 +1,13 @@ + + + diff --git a/Source/JavaScriptCore/JavaScriptCore.vcproj/WTF/WTFRelease.vsprops b/Source/JavaScriptCore/JavaScriptCore.vcproj/WTF/WTFRelease.vsprops new file mode 100644 index 0000000..3960f98 --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcproj/WTF/WTFRelease.vsprops @@ -0,0 +1,12 @@ + + + diff --git a/Source/JavaScriptCore/JavaScriptCore.vcproj/WTF/WTFReleaseCairoCFLite.vsprops b/Source/JavaScriptCore/JavaScriptCore.vcproj/WTF/WTFReleaseCairoCFLite.vsprops new file mode 100644 index 0000000..3267d79 --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcproj/WTF/WTFReleaseCairoCFLite.vsprops @@ -0,0 +1,13 @@ + + + diff --git a/Source/JavaScriptCore/JavaScriptCore.vcproj/WTF/WTFReleasePGO.vsprops b/Source/JavaScriptCore/JavaScriptCore.vcproj/WTF/WTFReleasePGO.vsprops new file mode 100644 index 0000000..ac4f8a5 --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcproj/WTF/WTFReleasePGO.vsprops @@ -0,0 +1,13 @@ + + + diff --git a/Source/JavaScriptCore/JavaScriptCore.vcproj/jsc/jsc.vcproj b/Source/JavaScriptCore/JavaScriptCore.vcproj/jsc/jsc.vcproj index ebcfd8e..a650cd2 100644 --- a/Source/JavaScriptCore/JavaScriptCore.vcproj/jsc/jsc.vcproj +++ b/Source/JavaScriptCore/JavaScriptCore.vcproj/jsc/jsc.vcproj @@ -18,7 +18,7 @@ @@ -324,7 +324,7 @@ + + diff --git a/Source/JavaScriptCore/JavaScriptCore.vcproj/jsc/jscDebugAll.vsprops b/Source/JavaScriptCore/JavaScriptCore.vcproj/jsc/jscDebugAll.vsprops new file mode 100644 index 0000000..6090c60 --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcproj/jsc/jscDebugAll.vsprops @@ -0,0 +1,12 @@ + + + diff --git a/Source/JavaScriptCore/JavaScriptCore.vcproj/jsc/jscDebugCairoCFLite.vsprops b/Source/JavaScriptCore/JavaScriptCore.vcproj/jsc/jscDebugCairoCFLite.vsprops new file mode 100644 index 0000000..c1868a8 --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcproj/jsc/jscDebugCairoCFLite.vsprops @@ -0,0 +1,12 @@ + + + diff --git a/Source/JavaScriptCore/JavaScriptCore.vcproj/jsc/jscProduction.vsprops b/Source/JavaScriptCore/JavaScriptCore.vcproj/jsc/jscProduction.vsprops new file mode 100644 index 0000000..408871b --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcproj/jsc/jscProduction.vsprops @@ -0,0 +1,12 @@ + + + diff --git a/Source/JavaScriptCore/JavaScriptCore.vcproj/jsc/jscRelease.vsprops b/Source/JavaScriptCore/JavaScriptCore.vcproj/jsc/jscRelease.vsprops new file mode 100644 index 0000000..ba9b288 --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcproj/jsc/jscRelease.vsprops @@ -0,0 +1,11 @@ + + + diff --git a/Source/JavaScriptCore/JavaScriptCore.vcproj/jsc/jscReleaseCairoCFLite.vsprops b/Source/JavaScriptCore/JavaScriptCore.vcproj/jsc/jscReleaseCairoCFLite.vsprops new file mode 100644 index 0000000..2104fe4 --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcproj/jsc/jscReleaseCairoCFLite.vsprops @@ -0,0 +1,12 @@ + + + diff --git a/Source/JavaScriptCore/JavaScriptCore.vcproj/jsc/jscReleasePGO.vsprops b/Source/JavaScriptCore/JavaScriptCore.vcproj/jsc/jscReleasePGO.vsprops new file mode 100644 index 0000000..78f3672 --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcproj/jsc/jscReleasePGO.vsprops @@ -0,0 +1,12 @@ + + + diff --git a/Source/JavaScriptCore/JavaScriptCore.vcproj/testapi/testapi.vcproj b/Source/JavaScriptCore/JavaScriptCore.vcproj/testapi/testapi.vcproj index 5b18032..1dfdd1e 100644 --- a/Source/JavaScriptCore/JavaScriptCore.vcproj/testapi/testapi.vcproj +++ b/Source/JavaScriptCore/JavaScriptCore.vcproj/testapi/testapi.vcproj @@ -18,7 +18,7 @@ @@ -430,7 +430,7 @@ /> + + diff --git a/Source/JavaScriptCore/JavaScriptCore.vcproj/testapi/testapiDebugAll.vsprops b/Source/JavaScriptCore/JavaScriptCore.vcproj/testapi/testapiDebugAll.vsprops new file mode 100644 index 0000000..cc139f8 --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcproj/testapi/testapiDebugAll.vsprops @@ -0,0 +1,13 @@ + + + diff --git a/Source/JavaScriptCore/JavaScriptCore.vcproj/testapi/testapiDebugCairoCFLite.vsprops b/Source/JavaScriptCore/JavaScriptCore.vcproj/testapi/testapiDebugCairoCFLite.vsprops new file mode 100644 index 0000000..4e1e11f --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcproj/testapi/testapiDebugCairoCFLite.vsprops @@ -0,0 +1,13 @@ + + + diff --git a/Source/JavaScriptCore/JavaScriptCore.vcproj/testapi/testapiProduction.vsprops b/Source/JavaScriptCore/JavaScriptCore.vcproj/testapi/testapiProduction.vsprops new file mode 100644 index 0000000..03fceab --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcproj/testapi/testapiProduction.vsprops @@ -0,0 +1,13 @@ + + + diff --git a/Source/JavaScriptCore/JavaScriptCore.vcproj/testapi/testapiRelease.vsprops b/Source/JavaScriptCore/JavaScriptCore.vcproj/testapi/testapiRelease.vsprops new file mode 100644 index 0000000..1c041ff --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcproj/testapi/testapiRelease.vsprops @@ -0,0 +1,12 @@ + + + diff --git a/Source/JavaScriptCore/JavaScriptCore.vcproj/testapi/testapiReleaseCairoCFLite.vsprops b/Source/JavaScriptCore/JavaScriptCore.vcproj/testapi/testapiReleaseCairoCFLite.vsprops new file mode 100644 index 0000000..c025283 --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCore.vcproj/testapi/testapiReleaseCairoCFLite.vsprops @@ -0,0 +1,13 @@ + + + diff --git a/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj b/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj index 9f8d49a..44e108c 100644 --- a/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj +++ b/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj @@ -121,6 +121,7 @@ 14469DEC107EC7E700650446 /* StringObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC18C3C20E16EE3300B34460 /* StringObject.cpp */; }; 14469DED107EC7E700650446 /* StringPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC18C3C50E16EE3300B34460 /* StringPrototype.cpp */; }; 14469DEE107EC7E700650446 /* UString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F692A8850255597D01FF60F7 /* UString.cpp */; }; + 144836E7132DA7BE005BE785 /* ConservativeSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 149DAAF212EB559D0083B12B /* ConservativeSet.h */; settings = {ATTRIBUTES = (Private, ); }; }; 146AAB380B66A94400E55F16 /* JSStringRefCF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 146AAB370B66A94400E55F16 /* JSStringRefCF.cpp */; }; 146B16D812EB5B59001BEC1B /* ConservativeSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 146B14DB12EB5B12001BEC1B /* ConservativeSet.cpp */; }; 146FE51211A710430087AE66 /* JITCall32_64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 146FE51111A710430087AE66 /* JITCall32_64.cpp */; }; @@ -209,7 +210,8 @@ 655EB29B10CE2581001A990E /* NodesCodegen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 655EB29A10CE2581001A990E /* NodesCodegen.cpp */; }; 65DFC93308EA173A00F7300B /* HashTable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 65DFC92D08EA173A00F7300B /* HashTable.cpp */; }; 65E1A3DF122B894500B26097 /* NonCopyingSort.h in Headers */ = {isa = PBXBuildFile; fileRef = 65E1A2F4122B880D00B26097 /* NonCopyingSort.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 65FDE49C0BDD1D4A00E80111 /* Assertions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 65E217B808E7EECC0023E5F6 /* Assertions.cpp */; settings = {COMPILER_FLAGS = "-Wno-missing-format-attribute"; }; }; + 65FDE49C0BDD1D4A00E80111 /* Assertions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 65E217B808E7EECC0023E5F6 /* Assertions.cpp */; }; + 7186A6EC13100BA5004479E1 /* HexNumber.h in Headers */ = {isa = PBXBuildFile; fileRef = 7186A6E813100B57004479E1 /* HexNumber.h */; settings = {ATTRIBUTES = (Private, ); }; }; 76FB9F0F12E851860051A2EB /* SHA1.h in Headers */ = {isa = PBXBuildFile; fileRef = 76FB9F0E12E851860051A2EB /* SHA1.h */; settings = {ATTRIBUTES = (Private, ); }; }; 76FB9F1112E851960051A2EB /* SHA1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 76FB9F1012E851960051A2EB /* SHA1.cpp */; }; 7E4EE7090EBB7963005934AA /* StructureChain.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E4EE7080EBB7963005934AA /* StructureChain.h */; settings = {ATTRIBUTES = (Private, ); }; }; @@ -280,6 +282,25 @@ 86DB64640F95C6FC00D7D921 /* ExecutableAllocatorFixedVMPool.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86DB64630F95C6FC00D7D921 /* ExecutableAllocatorFixedVMPool.cpp */; }; 86E116B10FE75AC800B512BC /* CodeLocation.h in Headers */ = {isa = PBXBuildFile; fileRef = 86E116B00FE75AC800B512BC /* CodeLocation.h */; }; 86E85539111B9968001AF51E /* JSStringBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 86E85538111B9968001AF51E /* JSStringBuilder.h */; }; + 86EC9DC41328DF82002B2AD7 /* DFGByteCodeParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86EC9DB41328DF82002B2AD7 /* DFGByteCodeParser.cpp */; }; + 86EC9DC51328DF82002B2AD7 /* DFGByteCodeParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 86EC9DB51328DF82002B2AD7 /* DFGByteCodeParser.h */; }; + 86EC9DC61328DF82002B2AD7 /* DFGGenerationInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 86EC9DB61328DF82002B2AD7 /* DFGGenerationInfo.h */; }; + 86EC9DC71328DF82002B2AD7 /* DFGGraph.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86EC9DB71328DF82002B2AD7 /* DFGGraph.cpp */; }; + 86EC9DC81328DF82002B2AD7 /* DFGGraph.h in Headers */ = {isa = PBXBuildFile; fileRef = 86EC9DB81328DF82002B2AD7 /* DFGGraph.h */; }; + 86EC9DC91328DF82002B2AD7 /* DFGJITCodeGenerator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86EC9DB91328DF82002B2AD7 /* DFGJITCodeGenerator.cpp */; }; + 86EC9DCA1328DF82002B2AD7 /* DFGJITCodeGenerator.h in Headers */ = {isa = PBXBuildFile; fileRef = 86EC9DBA1328DF82002B2AD7 /* DFGJITCodeGenerator.h */; }; + 86EC9DCB1328DF82002B2AD7 /* DFGJITCompiler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86EC9DBB1328DF82002B2AD7 /* DFGJITCompiler.cpp */; }; + 86EC9DCC1328DF82002B2AD7 /* DFGJITCompiler.h in Headers */ = {isa = PBXBuildFile; fileRef = 86EC9DBC1328DF82002B2AD7 /* DFGJITCompiler.h */; }; + 86EC9DCD1328DF82002B2AD7 /* DFGNonSpeculativeJIT.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86EC9DBD1328DF82002B2AD7 /* DFGNonSpeculativeJIT.cpp */; }; + 86EC9DCE1328DF82002B2AD7 /* DFGNonSpeculativeJIT.h in Headers */ = {isa = PBXBuildFile; fileRef = 86EC9DBE1328DF82002B2AD7 /* DFGNonSpeculativeJIT.h */; }; + 86EC9DCF1328DF82002B2AD7 /* DFGOperations.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86EC9DBF1328DF82002B2AD7 /* DFGOperations.cpp */; }; + 86EC9DD01328DF82002B2AD7 /* DFGOperations.h in Headers */ = {isa = PBXBuildFile; fileRef = 86EC9DC01328DF82002B2AD7 /* DFGOperations.h */; }; + 86EC9DD11328DF82002B2AD7 /* DFGRegisterBank.h in Headers */ = {isa = PBXBuildFile; fileRef = 86EC9DC11328DF82002B2AD7 /* DFGRegisterBank.h */; }; + 86EC9DD21328DF82002B2AD7 /* DFGSpeculativeJIT.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86EC9DC21328DF82002B2AD7 /* DFGSpeculativeJIT.cpp */; }; + 86EC9DD31328DF82002B2AD7 /* DFGSpeculativeJIT.h in Headers */ = {isa = PBXBuildFile; fileRef = 86EC9DC31328DF82002B2AD7 /* DFGSpeculativeJIT.h */; }; + 86ECA3EA132DEF1C002B2AD7 /* DFGNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 86ECA3E9132DEF1C002B2AD7 /* DFGNode.h */; }; + 86ECA3FA132DF25A002B2AD7 /* DFGScoreBoard.h in Headers */ = {isa = PBXBuildFile; fileRef = 86ECA3F9132DF25A002B2AD7 /* DFGScoreBoard.h */; }; + 86ECA4F1132EAA6D002B2AD7 /* DFGAliasTracker.h in Headers */ = {isa = PBXBuildFile; fileRef = 86ECA4F0132EAA6D002B2AD7 /* DFGAliasTracker.h */; }; 86F38859121130CA007A7CE3 /* AtomicStringHash.h in Headers */ = {isa = PBXBuildFile; fileRef = 86F38858121130CA007A7CE3 /* AtomicStringHash.h */; settings = {ATTRIBUTES = (Private, ); }; }; 90213E3D123A40C200D422F3 /* MemoryStatistics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 90213E3B123A40C200D422F3 /* MemoryStatistics.cpp */; }; 90213E3E123A40C200D422F3 /* MemoryStatistics.h in Headers */ = {isa = PBXBuildFile; fileRef = 90213E3C123A40C200D422F3 /* MemoryStatistics.h */; settings = {ATTRIBUTES = (Private, ); }; }; @@ -355,6 +376,10 @@ A74DE1D0120B875600D40D5B /* ARMv7Assembler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A74DE1CB120B86D600D40D5B /* ARMv7Assembler.cpp */; }; A75706DE118A2BCF0057F88F /* JITArithmetic32_64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A75706DD118A2BCF0057F88F /* JITArithmetic32_64.cpp */; }; A766B44F0EE8DCD1009518CA /* ExecutableAllocator.h in Headers */ = {isa = PBXBuildFile; fileRef = A7B48DB50EE74CFC00DCBDB6 /* ExecutableAllocator.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A76BE39F132EEA7C008F7F0B /* HandleStack.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A76BE1B7132DAC68008F7F0B /* HandleStack.cpp */; }; + A76BE3A0132EEA7C008F7F0B /* HandleStack.h in Headers */ = {isa = PBXBuildFile; fileRef = A76BE1B8132DAC68008F7F0B /* HandleStack.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A76BE3A1132EEA7C008F7F0B /* Local.h in Headers */ = {isa = PBXBuildFile; fileRef = A76BE1B5132DABF5008F7F0B /* Local.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A76BE3A2132EEA7C008F7F0B /* LocalScope.h in Headers */ = {isa = PBXBuildFile; fileRef = A76BE1B6132DAC24008F7F0B /* LocalScope.h */; settings = {ATTRIBUTES = (Private, ); }; }; A76C51761182748D00715B05 /* JSInterfaceJIT.h in Headers */ = {isa = PBXBuildFile; fileRef = A76C51741182748D00715B05 /* JSInterfaceJIT.h */; }; A7795590101A74D500114E55 /* MarkStack.h in Headers */ = {isa = PBXBuildFile; fileRef = A779558F101A74D500114E55 /* MarkStack.h */; settings = {ATTRIBUTES = (Private, ); }; }; A783A0D111A36DCA00563D20 /* JSObjectWithGlobalObject.h in Headers */ = {isa = PBXBuildFile; fileRef = A783A0D011A36DCA00563D20 /* JSObjectWithGlobalObject.h */; settings = {ATTRIBUTES = (Private, ); }; }; @@ -531,7 +556,7 @@ BC3135650F302FA3003DFD3A /* DebuggerActivation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC3135630F302FA3003DFD3A /* DebuggerActivation.cpp */; }; BC5F7BBE11823B590052C02C /* Atomics.h in Headers */ = {isa = PBXBuildFile; fileRef = BC5F7BBB11823B590052C02C /* Atomics.h */; settings = {ATTRIBUTES = (Private, ); }; }; BC5F7BBF11823B590052C02C /* ThreadingPrimitives.h in Headers */ = {isa = PBXBuildFile; fileRef = BC5F7BBC11823B590052C02C /* ThreadingPrimitives.h */; settings = {ATTRIBUTES = (Private, ); }; }; - BC5F7BC011823B590052C02C /* ThreadSafeShared.h in Headers */ = {isa = PBXBuildFile; fileRef = BC5F7BBD11823B590052C02C /* ThreadSafeShared.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BC5F7BC011823B590052C02C /* ThreadSafeRefCounted.h in Headers */ = {isa = PBXBuildFile; fileRef = BC5F7BBD11823B590052C02C /* ThreadSafeRefCounted.h */; settings = {ATTRIBUTES = (Private, ); }; }; BC6AAAE50E1F426500AD87D8 /* ClassInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = BC6AAAE40E1F426500AD87D8 /* ClassInfo.h */; settings = {ATTRIBUTES = (Private, ); }; }; BC756FC90E2031B200DE7D12 /* JSGlobalObjectFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = BC756FC70E2031B200DE7D12 /* JSGlobalObjectFunctions.h */; }; BC7F8FB90E19D1C3008632C0 /* JSNumberCell.h in Headers */ = {isa = PBXBuildFile; fileRef = BC7F8FB80E19D1C3008632C0 /* JSNumberCell.h */; settings = {ATTRIBUTES = (Private, ); }; }; @@ -850,6 +875,7 @@ 65EA73620BAE35D1001BB560 /* CommonIdentifiers.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CommonIdentifiers.cpp; sourceTree = ""; }; 65EA73630BAE35D1001BB560 /* CommonIdentifiers.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CommonIdentifiers.h; sourceTree = ""; }; 704FD35305697E6D003DBED9 /* BooleanObject.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = BooleanObject.h; sourceTree = ""; tabWidth = 8; }; + 7186A6E813100B57004479E1 /* HexNumber.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HexNumber.h; sourceTree = ""; }; 76FB9F0E12E851860051A2EB /* SHA1.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SHA1.h; sourceTree = ""; }; 76FB9F1012E851960051A2EB /* SHA1.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SHA1.cpp; sourceTree = ""; }; 7E2C6C980D31C6B6002D44E2 /* ScopeChainMark.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScopeChainMark.h; sourceTree = ""; }; @@ -922,6 +948,25 @@ 86DB64630F95C6FC00D7D921 /* ExecutableAllocatorFixedVMPool.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ExecutableAllocatorFixedVMPool.cpp; sourceTree = ""; }; 86E116B00FE75AC800B512BC /* CodeLocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CodeLocation.h; sourceTree = ""; }; 86E85538111B9968001AF51E /* JSStringBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSStringBuilder.h; sourceTree = ""; }; + 86EC9DB41328DF82002B2AD7 /* DFGByteCodeParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGByteCodeParser.cpp; path = dfg/DFGByteCodeParser.cpp; sourceTree = ""; }; + 86EC9DB51328DF82002B2AD7 /* DFGByteCodeParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGByteCodeParser.h; path = dfg/DFGByteCodeParser.h; sourceTree = ""; }; + 86EC9DB61328DF82002B2AD7 /* DFGGenerationInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGGenerationInfo.h; path = dfg/DFGGenerationInfo.h; sourceTree = ""; }; + 86EC9DB71328DF82002B2AD7 /* DFGGraph.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGGraph.cpp; path = dfg/DFGGraph.cpp; sourceTree = ""; }; + 86EC9DB81328DF82002B2AD7 /* DFGGraph.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGGraph.h; path = dfg/DFGGraph.h; sourceTree = ""; }; + 86EC9DB91328DF82002B2AD7 /* DFGJITCodeGenerator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGJITCodeGenerator.cpp; path = dfg/DFGJITCodeGenerator.cpp; sourceTree = ""; }; + 86EC9DBA1328DF82002B2AD7 /* DFGJITCodeGenerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGJITCodeGenerator.h; path = dfg/DFGJITCodeGenerator.h; sourceTree = ""; }; + 86EC9DBB1328DF82002B2AD7 /* DFGJITCompiler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGJITCompiler.cpp; path = dfg/DFGJITCompiler.cpp; sourceTree = ""; }; + 86EC9DBC1328DF82002B2AD7 /* DFGJITCompiler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGJITCompiler.h; path = dfg/DFGJITCompiler.h; sourceTree = ""; }; + 86EC9DBD1328DF82002B2AD7 /* DFGNonSpeculativeJIT.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGNonSpeculativeJIT.cpp; path = dfg/DFGNonSpeculativeJIT.cpp; sourceTree = ""; }; + 86EC9DBE1328DF82002B2AD7 /* DFGNonSpeculativeJIT.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGNonSpeculativeJIT.h; path = dfg/DFGNonSpeculativeJIT.h; sourceTree = ""; }; + 86EC9DBF1328DF82002B2AD7 /* DFGOperations.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGOperations.cpp; path = dfg/DFGOperations.cpp; sourceTree = ""; }; + 86EC9DC01328DF82002B2AD7 /* DFGOperations.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGOperations.h; path = dfg/DFGOperations.h; sourceTree = ""; }; + 86EC9DC11328DF82002B2AD7 /* DFGRegisterBank.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGRegisterBank.h; path = dfg/DFGRegisterBank.h; sourceTree = ""; }; + 86EC9DC21328DF82002B2AD7 /* DFGSpeculativeJIT.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGSpeculativeJIT.cpp; path = dfg/DFGSpeculativeJIT.cpp; sourceTree = ""; }; + 86EC9DC31328DF82002B2AD7 /* DFGSpeculativeJIT.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGSpeculativeJIT.h; path = dfg/DFGSpeculativeJIT.h; sourceTree = ""; }; + 86ECA3E9132DEF1C002B2AD7 /* DFGNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGNode.h; path = dfg/DFGNode.h; sourceTree = ""; }; + 86ECA3F9132DF25A002B2AD7 /* DFGScoreBoard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGScoreBoard.h; path = dfg/DFGScoreBoard.h; sourceTree = ""; }; + 86ECA4F0132EAA6D002B2AD7 /* DFGAliasTracker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGAliasTracker.h; path = dfg/DFGAliasTracker.h; sourceTree = ""; }; 86F38858121130CA007A7CE3 /* AtomicStringHash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AtomicStringHash.h; path = text/AtomicStringHash.h; sourceTree = ""; }; 90213E3B123A40C200D422F3 /* MemoryStatistics.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MemoryStatistics.cpp; sourceTree = ""; }; 90213E3C123A40C200D422F3 /* MemoryStatistics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MemoryStatistics.h; sourceTree = ""; }; @@ -1030,6 +1075,10 @@ A74B3498102A5F8E0032AB98 /* MarkStack.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MarkStack.cpp; sourceTree = ""; }; A74DE1CB120B86D600D40D5B /* ARMv7Assembler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ARMv7Assembler.cpp; sourceTree = ""; }; A75706DD118A2BCF0057F88F /* JITArithmetic32_64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JITArithmetic32_64.cpp; sourceTree = ""; }; + A76BE1B5132DABF5008F7F0B /* Local.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Local.h; path = collector/handles/Local.h; sourceTree = ""; }; + A76BE1B6132DAC24008F7F0B /* LocalScope.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LocalScope.h; path = collector/handles/LocalScope.h; sourceTree = ""; }; + A76BE1B7132DAC68008F7F0B /* HandleStack.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = HandleStack.cpp; path = collector/handles/HandleStack.cpp; sourceTree = ""; }; + A76BE1B8132DAC68008F7F0B /* HandleStack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HandleStack.h; path = collector/handles/HandleStack.h; sourceTree = ""; }; A76C51741182748D00715B05 /* JSInterfaceJIT.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSInterfaceJIT.h; sourceTree = ""; }; A779558F101A74D500114E55 /* MarkStack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MarkStack.h; sourceTree = ""; }; A783A0D011A36DCA00563D20 /* JSObjectWithGlobalObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSObjectWithGlobalObject.h; sourceTree = ""; }; @@ -1125,7 +1174,7 @@ BC337BEA0E1B00CB0076918A /* Error.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Error.cpp; sourceTree = ""; }; BC5F7BBB11823B590052C02C /* Atomics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Atomics.h; sourceTree = ""; }; BC5F7BBC11823B590052C02C /* ThreadingPrimitives.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ThreadingPrimitives.h; sourceTree = ""; }; - BC5F7BBD11823B590052C02C /* ThreadSafeShared.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ThreadSafeShared.h; sourceTree = ""; }; + BC5F7BBD11823B590052C02C /* ThreadSafeRefCounted.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ThreadSafeRefCounted.h; sourceTree = ""; }; BC6AAAE40E1F426500AD87D8 /* ClassInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ClassInfo.h; sourceTree = ""; }; BC756FC60E2031B200DE7D12 /* JSGlobalObjectFunctions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSGlobalObjectFunctions.cpp; sourceTree = ""; }; BC756FC70E2031B200DE7D12 /* JSGlobalObjectFunctions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSGlobalObjectFunctions.h; sourceTree = ""; }; @@ -1317,6 +1366,7 @@ 7E39D81D0EC38EFA003AF11A /* bytecompiler */, A7E4FC8312F8E4A300AF4CF4 /* collector */, 1480DB9A0DDC2231003CFDF2 /* debugger */, + 86EC9DB31328DF44002B2AD7 /* dfg */, 1429D77A0ED20D7300B89619 /* interpreter */, 1429D92C0ED22D7000B89619 /* jit */, 7E39D8370EC3A388003AF11A /* parser */, @@ -1567,6 +1617,7 @@ 65DFC92D08EA173A00F7300B /* HashTable.cpp */, 65DFC92E08EA173A00F7300B /* HashTable.h */, 65DFC92F08EA173A00F7300B /* HashTraits.h */, + 7186A6E813100B57004479E1 /* HexNumber.h */, 657EB7450B708F540063461B /* ListHashSet.h */, 148A1626095D16BB00666D0D /* ListRefPtr.h */, E1EE79270D6C964500FEA3BA /* Locker.h */, @@ -1634,7 +1685,7 @@ E1EE79220D6C95CD00FEA3BA /* Threading.h */, BC5F7BBC11823B590052C02C /* ThreadingPrimitives.h */, E1EE793C0D6C9B9200FEA3BA /* ThreadingPthreads.cpp */, - BC5F7BBD11823B590052C02C /* ThreadSafeShared.h */, + BC5F7BBD11823B590052C02C /* ThreadSafeRefCounted.h */, E1B7C8BD0DA3A3360074B0DC /* ThreadSpecific.h */, 0B330C260F38C62300692DE3 /* TypeTraits.cpp */, 0B4D7E620F319AC800AD7E58 /* TypeTraits.h */, @@ -1946,6 +1997,32 @@ name = yarr; sourceTree = ""; }; + 86EC9DB31328DF44002B2AD7 /* dfg */ = { + isa = PBXGroup; + children = ( + 86ECA4F0132EAA6D002B2AD7 /* DFGAliasTracker.h */, + 86EC9DB41328DF82002B2AD7 /* DFGByteCodeParser.cpp */, + 86EC9DB51328DF82002B2AD7 /* DFGByteCodeParser.h */, + 86EC9DB61328DF82002B2AD7 /* DFGGenerationInfo.h */, + 86EC9DB71328DF82002B2AD7 /* DFGGraph.cpp */, + 86EC9DB81328DF82002B2AD7 /* DFGGraph.h */, + 86EC9DB91328DF82002B2AD7 /* DFGJITCodeGenerator.cpp */, + 86EC9DBA1328DF82002B2AD7 /* DFGJITCodeGenerator.h */, + 86EC9DBB1328DF82002B2AD7 /* DFGJITCompiler.cpp */, + 86EC9DBC1328DF82002B2AD7 /* DFGJITCompiler.h */, + 86ECA3E9132DEF1C002B2AD7 /* DFGNode.h */, + 86EC9DBD1328DF82002B2AD7 /* DFGNonSpeculativeJIT.cpp */, + 86EC9DBE1328DF82002B2AD7 /* DFGNonSpeculativeJIT.h */, + 86EC9DBF1328DF82002B2AD7 /* DFGOperations.cpp */, + 86EC9DC01328DF82002B2AD7 /* DFGOperations.h */, + 86EC9DC11328DF82002B2AD7 /* DFGRegisterBank.h */, + 86ECA3F9132DF25A002B2AD7 /* DFGScoreBoard.h */, + 86EC9DC21328DF82002B2AD7 /* DFGSpeculativeJIT.cpp */, + 86EC9DC31328DF82002B2AD7 /* DFGSpeculativeJIT.h */, + ); + name = dfg; + sourceTree = ""; + }; 932FC3C20824BB70005B3C75 /* Resources */ = { isa = PBXGroup; children = ( @@ -2074,6 +2151,10 @@ A7E4FC8812F8E4CA00AF4CF4 /* Handle.h */, A7E4FC8912F8E4CA00AF4CF4 /* HandleHeap.cpp */, A7E4FC8A12F8E4CA00AF4CF4 /* HandleHeap.h */, + A76BE1B7132DAC68008F7F0B /* HandleStack.cpp */, + A76BE1B8132DAC68008F7F0B /* HandleStack.h */, + A76BE1B5132DABF5008F7F0B /* Local.h */, + A76BE1B6132DAC24008F7F0B /* LocalScope.h */, ); name = handles; sourceTree = ""; @@ -2160,6 +2241,7 @@ BC18C3F40E16F5CD00B34460 /* Completion.h in Headers */, FDA15C1E12B0305C003A583A /* Complex.h in Headers */, BC18C3F50E16F5CD00B34460 /* config.h in Headers */, + 144836E7132DA7BE005BE785 /* ConservativeSet.h in Headers */, BC18C3F60E16F5CD00B34460 /* ConstructData.h in Headers */, 0BDFFAE00FC6192900D69EF4 /* CrossThreadRefCounted.h in Headers */, 86565743115BE3DA00291F40 /* CString.h in Headers */, @@ -2205,6 +2287,7 @@ BC18C40D0E16F5CD00B34460 /* HashTable.h in Headers */, BC18C40E0E16F5CD00B34460 /* HashTraits.h in Headers */, 140CDE7112DE97B10013CFC5 /* Heap.h in Headers */, + 7186A6EC13100BA5004479E1 /* HexNumber.h in Headers */, BC18C40F0E16F5CD00B34460 /* Identifier.h in Headers */, BC18C4100E16F5CD00B34460 /* InitializeThreading.h in Headers */, 969A07990ED1D3AE00F1F681 /* Instruction.h in Headers */, @@ -2401,7 +2484,7 @@ 18BAB55410DAE066000D945B /* ThreadIdentifierDataPthreads.h in Headers */, BC18C4700E16F5CD00B34460 /* Threading.h in Headers */, BC5F7BBF11823B590052C02C /* ThreadingPrimitives.h in Headers */, - BC5F7BC011823B590052C02C /* ThreadSafeShared.h in Headers */, + BC5F7BC011823B590052C02C /* ThreadSafeRefCounted.h in Headers */, BC18C4710E16F5CD00B34460 /* ThreadSpecific.h in Headers */, A7386556118697B400540279 /* ThunkGenerators.h in Headers */, 14A42E400F4F60EE00599099 /* TimeoutChecker.h in Headers */, @@ -2449,6 +2532,21 @@ A7C40C0A130B057D00D002A1 /* BlockStack.h in Headers */, A7C40C0B130B057D00D002A1 /* SentinelLinkedList.h in Headers */, A7C40C0C130B057D00D002A1 /* SinglyLinkedList.h in Headers */, + A76BE3A0132EEA7C008F7F0B /* HandleStack.h in Headers */, + A76BE3A1132EEA7C008F7F0B /* Local.h in Headers */, + A76BE3A2132EEA7C008F7F0B /* LocalScope.h in Headers */, + 86EC9DC51328DF82002B2AD7 /* DFGByteCodeParser.h in Headers */, + 86EC9DC61328DF82002B2AD7 /* DFGGenerationInfo.h in Headers */, + 86EC9DC81328DF82002B2AD7 /* DFGGraph.h in Headers */, + 86EC9DCA1328DF82002B2AD7 /* DFGJITCodeGenerator.h in Headers */, + 86EC9DCC1328DF82002B2AD7 /* DFGJITCompiler.h in Headers */, + 86EC9DCE1328DF82002B2AD7 /* DFGNonSpeculativeJIT.h in Headers */, + 86EC9DD01328DF82002B2AD7 /* DFGOperations.h in Headers */, + 86EC9DD11328DF82002B2AD7 /* DFGRegisterBank.h in Headers */, + 86EC9DD31328DF82002B2AD7 /* DFGSpeculativeJIT.h in Headers */, + 86ECA3EA132DEF1C002B2AD7 /* DFGNode.h in Headers */, + 86ECA3FA132DF25A002B2AD7 /* DFGScoreBoard.h in Headers */, + 86ECA4F1132EAA6D002B2AD7 /* DFGAliasTracker.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2888,6 +2986,14 @@ 97941A7E1302A098004A3447 /* CryptographicallyRandomNumber.cpp in Sources */, A7E4FC9112F8E4CA00AF4CF4 /* HandleHeap.cpp in Sources */, A7AC25BD1304D146003396DE /* MarkedBlock.cpp in Sources */, + A76BE39F132EEA7C008F7F0B /* HandleStack.cpp in Sources */, + 86EC9DC41328DF82002B2AD7 /* DFGByteCodeParser.cpp in Sources */, + 86EC9DC71328DF82002B2AD7 /* DFGGraph.cpp in Sources */, + 86EC9DC91328DF82002B2AD7 /* DFGJITCodeGenerator.cpp in Sources */, + 86EC9DCB1328DF82002B2AD7 /* DFGJITCompiler.cpp in Sources */, + 86EC9DCD1328DF82002B2AD7 /* DFGNonSpeculativeJIT.cpp in Sources */, + 86EC9DCF1328DF82002B2AD7 /* DFGOperations.cpp in Sources */, + 86EC9DD21328DF82002B2AD7 /* DFGSpeculativeJIT.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/Source/JavaScriptCore/Makefile b/Source/JavaScriptCore/Makefile index b9e2a72..cb4c11a 100644 --- a/Source/JavaScriptCore/Makefile +++ b/Source/JavaScriptCore/Makefile @@ -1,2 +1 @@ -OTHER_OPTIONS = -target All include ../Makefile.shared diff --git a/Source/JavaScriptCore/assembler/AbstractMacroAssembler.h b/Source/JavaScriptCore/assembler/AbstractMacroAssembler.h index 5ebc572..8e81784 100644 --- a/Source/JavaScriptCore/assembler/AbstractMacroAssembler.h +++ b/Source/JavaScriptCore/assembler/AbstractMacroAssembler.h @@ -145,21 +145,21 @@ public: // Describes an memory operand given by a pointer. For regular load & store // operations an unwrapped void* will be used, rather than using this. struct AbsoluteAddress { - explicit AbsoluteAddress(void* ptr) + explicit AbsoluteAddress(const void* ptr) : m_ptr(ptr) { } - void* m_ptr; + const void* m_ptr; }; - // ImmPtr: + // TrustedImmPtr: // // A pointer sized immediate operand to an instruction - this is wrapped // in a class requiring explicit construction in order to differentiate // from pointers used as absolute addresses to memory operations - struct ImmPtr { - explicit ImmPtr(const void* value) + struct TrustedImmPtr { + explicit TrustedImmPtr(const void* value) : m_value(value) { } @@ -172,14 +172,21 @@ public: const void* m_value; }; - // Imm32: + struct ImmPtr : public TrustedImmPtr { + explicit ImmPtr(const void* value) + : TrustedImmPtr(value) + { + } + }; + + // TrustedImm32: // // A 32bit immediate operand to an instruction - this is wrapped in a // class requiring explicit construction in order to prevent RegisterIDs // (which are implemented as an enum) from accidentally being passed as // immediate values. - struct Imm32 { - explicit Imm32(int32_t value) + struct TrustedImm32 { + explicit TrustedImm32(int32_t value) : m_value(value) #if CPU(ARM) || CPU(MIPS) , m_isPointer(false) @@ -188,7 +195,7 @@ public: } #if !CPU(X86_64) - explicit Imm32(ImmPtr ptr) + explicit TrustedImm32(TrustedImmPtr ptr) : m_value(ptr.asIntptr()) #if CPU(ARM) || CPU(MIPS) , m_isPointer(true) @@ -211,6 +218,19 @@ public: }; + struct Imm32 : public TrustedImm32 { + explicit Imm32(int32_t value) + : TrustedImm32(value) + { + } +#if !CPU(X86_64) + explicit Imm32(TrustedImmPtr ptr) + : TrustedImm32(ptr) + { + } +#endif + }; + // Section 2: MacroAssembler code buffer handles // // The following types are used to reference items in the code buffer @@ -358,16 +378,18 @@ public: { } - void link(AbstractMacroAssembler* masm) + void link(AbstractMacroAssembler* masm) const { masm->m_assembler.linkJump(m_jmp, masm->m_assembler.label()); } - void linkTo(Label label, AbstractMacroAssembler* masm) + void linkTo(Label label, AbstractMacroAssembler* masm) const { masm->m_assembler.linkJump(m_jmp, label.m_label); } + bool isSet() const { return m_jmp.isSet(); } + private: JmpSrc m_jmp; }; diff --git a/Source/JavaScriptCore/assembler/AssemblerBuffer.h b/Source/JavaScriptCore/assembler/AssemblerBuffer.h index 0454a99..a90efc6 100644 --- a/Source/JavaScriptCore/assembler/AssemblerBuffer.h +++ b/Source/JavaScriptCore/assembler/AssemblerBuffer.h @@ -114,6 +114,21 @@ namespace JSC { putIntUnchecked(value); } + template + void putIntegral(IntegralType value) + { + if (m_size > m_capacity - sizeof(IntegralType)) + grow(); + putIntegralUnchecked(value); + } + + template + void putIntegralUnchecked(IntegralType value) + { + *reinterpret_cast_ptr(&m_buffer[m_size]) = value; + m_size += sizeof(IntegralType); + } + void* data() const { return m_buffer; diff --git a/Source/JavaScriptCore/assembler/AssemblerBufferWithConstantPool.h b/Source/JavaScriptCore/assembler/AssemblerBufferWithConstantPool.h index 599be14..9a9618f 100644 --- a/Source/JavaScriptCore/assembler/AssemblerBufferWithConstantPool.h +++ b/Source/JavaScriptCore/assembler/AssemblerBufferWithConstantPool.h @@ -188,29 +188,14 @@ public: return AssemblerBuffer::executableCopy(allocator); } - void putIntWithConstantInt(uint32_t insn, uint32_t constant, bool isReusable = false) + void putShortWithConstantInt(uint16_t insn, uint32_t constant, bool isReusable = false) { - if (!m_numConsts) - m_maxDistance = maxPoolSize; - flushIfNoSpaceFor(4, 4); - - m_loadOffsets.append(AssemblerBuffer::size()); - if (isReusable) - for (int i = 0; i < m_numConsts; ++i) { - if (m_mask[i] == ReusableConst && m_pool[i] == constant) { - AssemblerBuffer::putInt(AssemblerType::patchConstantPoolLoad(insn, i)); - correctDeltas(4); - return; - } - } - - m_pool[m_numConsts] = constant; - m_mask[m_numConsts] = static_cast(isReusable ? ReusableConst : UniqueConst); - - AssemblerBuffer::putInt(AssemblerType::patchConstantPoolLoad(insn, m_numConsts)); - ++m_numConsts; + putIntegralWithConstantInt(insn, constant, isReusable); + } - correctDeltas(4, 4); + void putIntWithConstantInt(uint32_t insn, uint32_t constant, bool isReusable = false) + { + putIntegralWithConstantInt(insn, constant, isReusable); } // This flushing mechanism can be called after any unconditional jumps. @@ -248,6 +233,33 @@ private: m_lastConstDelta = constSize; } + template + void putIntegralWithConstantInt(IntegralType insn, uint32_t constant, bool isReusable) + { + if (!m_numConsts) + m_maxDistance = maxPoolSize; + flushIfNoSpaceFor(sizeof(IntegralType), 4); + + m_loadOffsets.append(AssemblerBuffer::size()); + if (isReusable) { + for (int i = 0; i < m_numConsts; ++i) { + if (m_mask[i] == ReusableConst && m_pool[i] == constant) { + putIntegral(static_cast(AssemblerType::patchConstantPoolLoad(insn, i))); + correctDeltas(sizeof(IntegralType)); + return; + } + } + } + + m_pool[m_numConsts] = constant; + m_mask[m_numConsts] = static_cast(isReusable ? ReusableConst : UniqueConst); + + putIntegral(static_cast(AssemblerType::patchConstantPoolLoad(insn, m_numConsts))); + ++m_numConsts; + + correctDeltas(sizeof(IntegralType), 4); + } + void flushConstantPool(bool useBarrier = true) { if (m_numConsts == 0) @@ -259,7 +271,7 @@ private: // Callback to protect the constant pool from execution if (useBarrier) - AssemblerBuffer::putInt(AssemblerType::placeConstantPoolBarrier(m_numConsts * sizeof(uint32_t) + alignPool)); + putIntegral(AssemblerType::placeConstantPoolBarrier(m_numConsts * sizeof(uint32_t) + alignPool)); if (alignPool) { if (alignPool & 1) diff --git a/Source/JavaScriptCore/assembler/MacroAssembler.h b/Source/JavaScriptCore/assembler/MacroAssembler.h index fa165de..bb19a98 100644 --- a/Source/JavaScriptCore/assembler/MacroAssembler.h +++ b/Source/JavaScriptCore/assembler/MacroAssembler.h @@ -74,7 +74,7 @@ public: // described in terms of other macro assembly methods. void pop() { - addPtr(Imm32(sizeof(void*)), stackPointerRegister); + addPtr(TrustedImm32(sizeof(void*)), stackPointerRegister); } void peek(RegisterID dest, int index = 0) @@ -87,19 +87,19 @@ public: storePtr(src, Address(stackPointerRegister, (index * sizeof(void*)))); } - void poke(Imm32 value, int index = 0) + void poke(TrustedImm32 value, int index = 0) { store32(value, Address(stackPointerRegister, (index * sizeof(void*)))); } - void poke(ImmPtr imm, int index = 0) + void poke(TrustedImmPtr imm, int index = 0) { storePtr(imm, Address(stackPointerRegister, (index * sizeof(void*)))); } // Backwards banches, these are currently all implemented using existing forwards branch mechanisms. - void branchPtr(Condition cond, RegisterID op1, ImmPtr imm, Label target) + void branchPtr(Condition cond, RegisterID op1, TrustedImmPtr imm, Label target) { branchPtr(cond, op1, imm).linkTo(target, this); } @@ -109,7 +109,7 @@ public: branch32(cond, op1, op2).linkTo(target, this); } - void branch32(Condition cond, RegisterID op1, Imm32 imm, Label target) + void branch32(Condition cond, RegisterID op1, TrustedImm32 imm, Label target) { branch32(cond, op1, imm).linkTo(target, this); } @@ -144,17 +144,17 @@ public: add32(src, dest); } - void addPtr(Imm32 imm, RegisterID srcDest) + void addPtr(TrustedImm32 imm, RegisterID srcDest) { add32(imm, srcDest); } - void addPtr(ImmPtr imm, RegisterID dest) + void addPtr(TrustedImmPtr imm, RegisterID dest) { - add32(Imm32(imm), dest); + add32(TrustedImm32(imm), dest); } - void addPtr(Imm32 imm, RegisterID src, RegisterID dest) + void addPtr(TrustedImm32 imm, RegisterID src, RegisterID dest) { add32(imm, src, dest); } @@ -164,7 +164,7 @@ public: and32(src, dest); } - void andPtr(Imm32 imm, RegisterID srcDest) + void andPtr(TrustedImm32 imm, RegisterID srcDest) { and32(imm, srcDest); } @@ -174,12 +174,12 @@ public: or32(src, dest); } - void orPtr(ImmPtr imm, RegisterID dest) + void orPtr(TrustedImmPtr imm, RegisterID dest) { - or32(Imm32(imm), dest); + or32(TrustedImm32(imm), dest); } - void orPtr(Imm32 imm, RegisterID dest) + void orPtr(TrustedImm32 imm, RegisterID dest) { or32(imm, dest); } @@ -189,14 +189,14 @@ public: sub32(src, dest); } - void subPtr(Imm32 imm, RegisterID dest) + void subPtr(TrustedImm32 imm, RegisterID dest) { sub32(imm, dest); } - void subPtr(ImmPtr imm, RegisterID dest) + void subPtr(TrustedImmPtr imm, RegisterID dest) { - sub32(Imm32(imm), dest); + sub32(TrustedImm32(imm), dest); } void xorPtr(RegisterID src, RegisterID dest) @@ -204,7 +204,7 @@ public: xor32(src, dest); } - void xorPtr(Imm32 imm, RegisterID srcDest) + void xorPtr(TrustedImm32 imm, RegisterID srcDest) { xor32(imm, srcDest); } @@ -230,7 +230,7 @@ public: return load32WithAddressOffsetPatch(address, dest); } - void setPtr(Condition cond, RegisterID left, Imm32 right, RegisterID dest) + void setPtr(Condition cond, RegisterID left, TrustedImm32 right, RegisterID dest) { set32Compare32(cond, left, right, dest); } @@ -250,14 +250,14 @@ public: store32(src, address); } - void storePtr(ImmPtr imm, ImplicitAddress address) + void storePtr(TrustedImmPtr imm, ImplicitAddress address) { - store32(Imm32(imm), address); + store32(TrustedImm32(imm), address); } - void storePtr(ImmPtr imm, void* address) + void storePtr(TrustedImmPtr imm, void* address) { - store32(Imm32(imm), address); + store32(TrustedImm32(imm), address); } DataLabel32 storePtrWithAddressOffsetPatch(RegisterID src, Address address) @@ -271,9 +271,9 @@ public: return branch32(cond, left, right); } - Jump branchPtr(Condition cond, RegisterID left, ImmPtr right) + Jump branchPtr(Condition cond, RegisterID left, TrustedImmPtr right) { - return branch32(cond, left, Imm32(right)); + return branch32(cond, left, TrustedImm32(right)); } Jump branchPtr(Condition cond, RegisterID left, Address right) @@ -291,14 +291,14 @@ public: return branch32(cond, left, right); } - Jump branchPtr(Condition cond, Address left, ImmPtr right) + Jump branchPtr(Condition cond, Address left, TrustedImmPtr right) { - return branch32(cond, left, Imm32(right)); + return branch32(cond, left, TrustedImm32(right)); } - Jump branchPtr(Condition cond, AbsoluteAddress left, ImmPtr right) + Jump branchPtr(Condition cond, AbsoluteAddress left, TrustedImmPtr right) { - return branch32(cond, left, Imm32(right)); + return branch32(cond, left, TrustedImm32(right)); } Jump branchTestPtr(Condition cond, RegisterID reg, RegisterID mask) @@ -306,17 +306,17 @@ public: return branchTest32(cond, reg, mask); } - Jump branchTestPtr(Condition cond, RegisterID reg, Imm32 mask = Imm32(-1)) + Jump branchTestPtr(Condition cond, RegisterID reg, TrustedImm32 mask = TrustedImm32(-1)) { return branchTest32(cond, reg, mask); } - Jump branchTestPtr(Condition cond, Address address, Imm32 mask = Imm32(-1)) + Jump branchTestPtr(Condition cond, Address address, TrustedImm32 mask = TrustedImm32(-1)) { return branchTest32(cond, address, mask); } - Jump branchTestPtr(Condition cond, BaseIndex address, Imm32 mask = Imm32(-1)) + Jump branchTestPtr(Condition cond, BaseIndex address, TrustedImm32 mask = TrustedImm32(-1)) { return branchTest32(cond, address, mask); } @@ -327,12 +327,12 @@ public: return branchAdd32(cond, src, dest); } - Jump branchSubPtr(Condition cond, Imm32 imm, RegisterID dest) + Jump branchSubPtr(Condition cond, TrustedImm32 imm, RegisterID dest) { return branchSub32(cond, imm, dest); } using MacroAssemblerBase::branchTest8; - Jump branchTest8(Condition cond, ExtendedAddress address, Imm32 mask = Imm32(-1)) + Jump branchTest8(Condition cond, ExtendedAddress address, TrustedImm32 mask = TrustedImm32(-1)) { return MacroAssemblerBase::branchTest8(cond, Address(address.base, address.offset), mask); } diff --git a/Source/JavaScriptCore/assembler/MacroAssemblerARM.h b/Source/JavaScriptCore/assembler/MacroAssemblerARM.h index 66814b5..80f69bf 100644 --- a/Source/JavaScriptCore/assembler/MacroAssemblerARM.h +++ b/Source/JavaScriptCore/assembler/MacroAssemblerARM.h @@ -86,14 +86,14 @@ public: m_assembler.adds_r(dest, dest, src); } - void add32(Imm32 imm, Address address) + void add32(TrustedImm32 imm, Address address) { load32(address, ARMRegisters::S1); add32(imm, ARMRegisters::S1); store32(ARMRegisters::S1, address); } - void add32(Imm32 imm, RegisterID dest) + void add32(TrustedImm32 imm, RegisterID dest) { m_assembler.adds_r(dest, dest, m_assembler.getImm(imm.m_value, ARMRegisters::S0)); } @@ -109,7 +109,7 @@ public: m_assembler.ands_r(dest, dest, src); } - void and32(Imm32 imm, RegisterID dest) + void and32(TrustedImm32 imm, RegisterID dest) { ARMWord w = m_assembler.getImm(imm.m_value, ARMRegisters::S0, true); if (w & ARMAssembler::OP2_INV_IMM) @@ -127,7 +127,7 @@ public: m_assembler.movs_r(dest, m_assembler.lsl_r(dest, ARMRegisters::S0)); } - void lshift32(Imm32 imm, RegisterID dest) + void lshift32(TrustedImm32 imm, RegisterID dest) { m_assembler.movs_r(dest, m_assembler.lsl(dest, imm.m_value & 0x1f)); } @@ -141,7 +141,7 @@ public: m_assembler.muls_r(dest, dest, src); } - void mul32(Imm32 imm, RegisterID src, RegisterID dest) + void mul32(TrustedImm32 imm, RegisterID src, RegisterID dest) { move(imm, ARMRegisters::S0); m_assembler.muls_r(dest, src, ARMRegisters::S0); @@ -162,7 +162,7 @@ public: m_assembler.orrs_r(dest, dest, src); } - void or32(Imm32 imm, RegisterID dest) + void or32(TrustedImm32 imm, RegisterID dest) { m_assembler.orrs_r(dest, dest, m_assembler.getImm(imm.m_value, ARMRegisters::S0)); } @@ -176,7 +176,7 @@ public: m_assembler.movs_r(dest, m_assembler.asr_r(dest, ARMRegisters::S0)); } - void rshift32(Imm32 imm, RegisterID dest) + void rshift32(TrustedImm32 imm, RegisterID dest) { m_assembler.movs_r(dest, m_assembler.asr(dest, imm.m_value & 0x1f)); } @@ -190,7 +190,7 @@ public: m_assembler.movs_r(dest, m_assembler.lsr_r(dest, ARMRegisters::S0)); } - void urshift32(Imm32 imm, RegisterID dest) + void urshift32(TrustedImm32 imm, RegisterID dest) { m_assembler.movs_r(dest, m_assembler.lsr(dest, imm.m_value & 0x1f)); } @@ -200,12 +200,12 @@ public: m_assembler.subs_r(dest, dest, src); } - void sub32(Imm32 imm, RegisterID dest) + void sub32(TrustedImm32 imm, RegisterID dest) { m_assembler.subs_r(dest, dest, m_assembler.getImm(imm.m_value, ARMRegisters::S0)); } - void sub32(Imm32 imm, Address address) + void sub32(TrustedImm32 imm, Address address) { load32(address, ARMRegisters::S1); sub32(imm, ARMRegisters::S1); @@ -223,7 +223,7 @@ public: m_assembler.eors_r(dest, dest, src); } - void xor32(Imm32 imm, RegisterID dest) + void xor32(TrustedImm32 imm, RegisterID dest) { m_assembler.eors_r(dest, dest, m_assembler.getImm(imm.m_value, ARMRegisters::S0)); } @@ -303,7 +303,7 @@ public: m_assembler.baseIndexTransfer32(false, src, address.base, address.index, static_cast(address.scale), address.offset); } - void store32(Imm32 imm, ImplicitAddress address) + void store32(TrustedImm32 imm, ImplicitAddress address) { if (imm.m_isPointer) m_assembler.ldr_un_imm(ARMRegisters::S1, imm.m_value); @@ -318,7 +318,7 @@ public: m_assembler.dtr_u(false, src, ARMRegisters::S0, 0); } - void store32(Imm32 imm, void* address) + void store32(TrustedImm32 imm, void* address) { m_assembler.ldr_un_imm(ARMRegisters::S0, reinterpret_cast(address)); if (imm.m_isPointer) @@ -344,13 +344,13 @@ public: push(ARMRegisters::S1); } - void push(Imm32 imm) + void push(TrustedImm32 imm) { move(imm, ARMRegisters::S0); push(ARMRegisters::S0); } - void move(Imm32 imm, RegisterID dest) + void move(TrustedImm32 imm, RegisterID dest) { if (imm.m_isPointer) m_assembler.ldr_un_imm(dest, imm.m_value); @@ -363,9 +363,9 @@ public: m_assembler.mov_r(dest, src); } - void move(ImmPtr imm, RegisterID dest) + void move(TrustedImmPtr imm, RegisterID dest) { - move(Imm32(imm), dest); + move(TrustedImm32(imm), dest); } void swap(RegisterID reg1, RegisterID reg2) @@ -387,7 +387,7 @@ public: move(src, dest); } - Jump branch8(Condition cond, Address left, Imm32 right) + Jump branch8(Condition cond, Address left, TrustedImm32 right) { load8(left, ARMRegisters::S1); return branch32(cond, ARMRegisters::S1, right); @@ -399,7 +399,7 @@ public: return Jump(m_assembler.jmp(ARMCondition(cond), useConstantPool)); } - Jump branch32(Condition cond, RegisterID left, Imm32 right, int useConstantPool = 0) + Jump branch32(Condition cond, RegisterID left, TrustedImm32 right, int useConstantPool = 0) { if (right.m_isPointer) { m_assembler.ldr_un_imm(ARMRegisters::S0, right.m_value); @@ -426,19 +426,19 @@ public: return branch32(cond, ARMRegisters::S1, right); } - Jump branch32(Condition cond, Address left, Imm32 right) + Jump branch32(Condition cond, Address left, TrustedImm32 right) { load32(left, ARMRegisters::S1); return branch32(cond, ARMRegisters::S1, right); } - Jump branch32(Condition cond, BaseIndex left, Imm32 right) + Jump branch32(Condition cond, BaseIndex left, TrustedImm32 right) { load32(left, ARMRegisters::S1); return branch32(cond, ARMRegisters::S1, right); } - Jump branch32WithUnalignedHalfWords(Condition cond, BaseIndex left, Imm32 right) + Jump branch32WithUnalignedHalfWords(Condition cond, BaseIndex left, TrustedImm32 right) { load32WithUnalignedHalfWords(left, ARMRegisters::S1); return branch32(cond, ARMRegisters::S1, right); @@ -453,7 +453,7 @@ public: return jump(); } - Jump branch16(Condition cond, BaseIndex left, Imm32 right) + Jump branch16(Condition cond, BaseIndex left, TrustedImm32 right) { load16(left, ARMRegisters::S0); move(right, ARMRegisters::S1); @@ -461,7 +461,7 @@ public: return m_assembler.jmp(ARMCondition(cond)); } - Jump branchTest8(Condition cond, Address address, Imm32 mask = Imm32(-1)) + Jump branchTest8(Condition cond, Address address, TrustedImm32 mask = TrustedImm32(-1)) { load8(address, ARMRegisters::S1); return branchTest32(cond, ARMRegisters::S1, mask); @@ -474,7 +474,7 @@ public: return Jump(m_assembler.jmp(ARMCondition(cond))); } - Jump branchTest32(Condition cond, RegisterID reg, Imm32 mask = Imm32(-1)) + Jump branchTest32(Condition cond, RegisterID reg, TrustedImm32 mask = TrustedImm32(-1)) { ASSERT((cond == Zero) || (cond == NonZero)); ARMWord w = m_assembler.getImm(mask.m_value, ARMRegisters::S0, true); @@ -485,13 +485,13 @@ public: return Jump(m_assembler.jmp(ARMCondition(cond))); } - Jump branchTest32(Condition cond, Address address, Imm32 mask = Imm32(-1)) + Jump branchTest32(Condition cond, Address address, TrustedImm32 mask = TrustedImm32(-1)) { load32(address, ARMRegisters::S1); return branchTest32(cond, ARMRegisters::S1, mask); } - Jump branchTest32(Condition cond, BaseIndex address, Imm32 mask = Imm32(-1)) + Jump branchTest32(Condition cond, BaseIndex address, TrustedImm32 mask = TrustedImm32(-1)) { load32(address, ARMRegisters::S1); return branchTest32(cond, ARMRegisters::S1, mask); @@ -519,7 +519,7 @@ public: return Jump(m_assembler.jmp(ARMCondition(cond))); } - Jump branchAdd32(Condition cond, Imm32 imm, RegisterID dest) + Jump branchAdd32(Condition cond, TrustedImm32 imm, RegisterID dest) { ASSERT((cond == Overflow) || (cond == Signed) || (cond == Zero) || (cond == NonZero)); add32(imm, dest); @@ -548,7 +548,7 @@ public: return Jump(m_assembler.jmp(ARMCondition(cond))); } - Jump branchMul32(Condition cond, Imm32 imm, RegisterID src, RegisterID dest) + Jump branchMul32(Condition cond, TrustedImm32 imm, RegisterID src, RegisterID dest) { ASSERT((cond == Overflow) || (cond == Signed) || (cond == Zero) || (cond == NonZero)); if (cond == Overflow) { @@ -568,7 +568,7 @@ public: return Jump(m_assembler.jmp(ARMCondition(cond))); } - Jump branchSub32(Condition cond, Imm32 imm, RegisterID dest) + Jump branchSub32(Condition cond, TrustedImm32 imm, RegisterID dest) { ASSERT((cond == Overflow) || (cond == Signed) || (cond == Zero) || (cond == NonZero)); sub32(imm, dest); @@ -628,7 +628,7 @@ public: m_assembler.mov_r(dest, ARMAssembler::getOp2(1), ARMCondition(cond)); } - void set32Compare32(Condition cond, RegisterID left, Imm32 right, RegisterID dest) + void set32Compare32(Condition cond, RegisterID left, TrustedImm32 right, RegisterID dest) { m_assembler.cmp_r(left, m_assembler.getImm(right.m_value, ARMRegisters::S0)); m_assembler.mov_r(dest, ARMAssembler::getOp2(0)); @@ -648,13 +648,13 @@ public: set32Compare32(cond, ARMRegisters::S1, right, dest); } - void set8Compare32(Condition cond, RegisterID left, Imm32 right, RegisterID dest) + void set8Compare32(Condition cond, RegisterID left, TrustedImm32 right, RegisterID dest) { // ARM doesn't have byte registers set32Compare32(cond, left, right, dest); } - void set32Test32(Condition cond, RegisterID reg, Imm32 mask, RegisterID dest) + void set32Test32(Condition cond, RegisterID reg, TrustedImm32 mask, RegisterID dest) { if (mask.m_value == -1) m_assembler.cmp_r(0, reg); @@ -664,24 +664,24 @@ public: m_assembler.mov_r(dest, ARMAssembler::getOp2(1), ARMCondition(cond)); } - void set32Test32(Condition cond, Address address, Imm32 mask, RegisterID dest) + void set32Test32(Condition cond, Address address, TrustedImm32 mask, RegisterID dest) { load32(address, ARMRegisters::S1); set32Test32(cond, ARMRegisters::S1, mask, dest); } - void set32Test8(Condition cond, Address address, Imm32 mask, RegisterID dest) + void set32Test8(Condition cond, Address address, TrustedImm32 mask, RegisterID dest) { load8(address, ARMRegisters::S1); set32Test32(cond, ARMRegisters::S1, mask, dest); } - void add32(Imm32 imm, RegisterID src, RegisterID dest) + void add32(TrustedImm32 imm, RegisterID src, RegisterID dest) { m_assembler.add_r(dest, src, m_assembler.getImm(imm.m_value, ARMRegisters::S0)); } - void add32(Imm32 imm, AbsoluteAddress address) + void add32(TrustedImm32 imm, AbsoluteAddress address) { m_assembler.ldr_un_imm(ARMRegisters::S1, reinterpret_cast(address.m_ptr)); m_assembler.dtr_u(true, ARMRegisters::S1, ARMRegisters::S1, 0); @@ -690,7 +690,7 @@ public: m_assembler.dtr_u(false, ARMRegisters::S1, ARMRegisters::S0, 0); } - void sub32(Imm32 imm, AbsoluteAddress address) + void sub32(TrustedImm32 imm, AbsoluteAddress address) { m_assembler.ldr_un_imm(ARMRegisters::S1, reinterpret_cast(address.m_ptr)); m_assembler.dtr_u(true, ARMRegisters::S1, ARMRegisters::S1, 0); @@ -699,7 +699,7 @@ public: m_assembler.dtr_u(false, ARMRegisters::S1, ARMRegisters::S0, 0); } - void load32(void* address, RegisterID dest) + void load32(const void* address, RegisterID dest) { m_assembler.ldr_un_imm(ARMRegisters::S0, reinterpret_cast(address)); m_assembler.dtr_u(true, dest, ARMRegisters::S0, 0); @@ -711,7 +711,7 @@ public: return branch32(cond, ARMRegisters::S1, right); } - Jump branch32(Condition cond, AbsoluteAddress left, Imm32 right) + Jump branch32(Condition cond, AbsoluteAddress left, TrustedImm32 right) { load32(left.m_ptr, ARMRegisters::S1); return branch32(cond, ARMRegisters::S1, right); @@ -748,21 +748,21 @@ public: return Call::fromTailJump(oldJump); } - DataLabelPtr moveWithPatch(ImmPtr initialValue, RegisterID dest) + DataLabelPtr moveWithPatch(TrustedImmPtr initialValue, RegisterID dest) { DataLabelPtr dataLabel(this); m_assembler.ldr_un_imm(dest, reinterpret_cast(initialValue.m_value)); return dataLabel; } - Jump branchPtrWithPatch(Condition cond, RegisterID left, DataLabelPtr& dataLabel, ImmPtr initialRightValue = ImmPtr(0)) + Jump branchPtrWithPatch(Condition cond, RegisterID left, DataLabelPtr& dataLabel, TrustedImmPtr initialRightValue = TrustedImmPtr(0)) { dataLabel = moveWithPatch(initialRightValue, ARMRegisters::S1); Jump jump = branch32(cond, left, ARMRegisters::S1, true); return jump; } - Jump branchPtrWithPatch(Condition cond, Address left, DataLabelPtr& dataLabel, ImmPtr initialRightValue = ImmPtr(0)) + Jump branchPtrWithPatch(Condition cond, Address left, DataLabelPtr& dataLabel, TrustedImmPtr initialRightValue = TrustedImmPtr(0)) { load32(left, ARMRegisters::S1); dataLabel = moveWithPatch(initialRightValue, ARMRegisters::S0); @@ -770,7 +770,7 @@ public: return jump; } - DataLabelPtr storePtrWithPatch(ImmPtr initialValue, ImplicitAddress address) + DataLabelPtr storePtrWithPatch(TrustedImmPtr initialValue, ImplicitAddress address) { DataLabelPtr dataLabel = moveWithPatch(initialValue, ARMRegisters::S1); store32(ARMRegisters::S1, address); @@ -779,7 +779,7 @@ public: DataLabelPtr storePtrWithPatch(ImplicitAddress address) { - return storePtrWithPatch(ImmPtr(0), address); + return storePtrWithPatch(TrustedImmPtr(0), address); } // Floating point operators diff --git a/Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h b/Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h index 450a34c..84e0a5e 100644 --- a/Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h +++ b/Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h @@ -139,7 +139,7 @@ public: // Integer arithmetic operations: // // Operations are typically two operand - operation(source, srcDst) - // For many operations the source may be an Imm32, the srcDst operand + // For many operations the source may be an TrustedImm32, the srcDst operand // may often be a memory location (explictly described using an Address // object). @@ -148,12 +148,12 @@ public: m_assembler.add(dest, dest, src); } - void add32(Imm32 imm, RegisterID dest) + void add32(TrustedImm32 imm, RegisterID dest) { add32(imm, dest, dest); } - void add32(Imm32 imm, RegisterID src, RegisterID dest) + void add32(TrustedImm32 imm, RegisterID src, RegisterID dest) { ARMThumbImmediate armImm = ARMThumbImmediate::makeUInt12OrEncodedImm(imm.m_value); if (armImm.isValid()) @@ -164,7 +164,7 @@ public: } } - void add32(Imm32 imm, Address address) + void add32(TrustedImm32 imm, Address address) { load32(address, dataTempRegister); @@ -187,7 +187,7 @@ public: add32(dataTempRegister, dest); } - void add32(Imm32 imm, AbsoluteAddress address) + void add32(TrustedImm32 imm, AbsoluteAddress address) { load32(address.m_ptr, dataTempRegister); @@ -209,7 +209,7 @@ public: m_assembler.ARM_and(dest, dest, src); } - void and32(Imm32 imm, RegisterID dest) + void and32(TrustedImm32 imm, RegisterID dest) { ARMThumbImmediate armImm = ARMThumbImmediate::makeEncodedImm(imm.m_value); if (armImm.isValid()) @@ -235,7 +235,7 @@ public: m_assembler.lsl(dest, dest, dataTempRegister); } - void lshift32(Imm32 imm, RegisterID dest) + void lshift32(TrustedImm32 imm, RegisterID dest) { m_assembler.lsl(dest, dest, imm.m_value & 0x1f); } @@ -245,7 +245,7 @@ public: m_assembler.smull(dest, dataTempRegister, dest, src); } - void mul32(Imm32 imm, RegisterID src, RegisterID dest) + void mul32(TrustedImm32 imm, RegisterID src, RegisterID dest) { move(imm, dataTempRegister); m_assembler.smull(dest, dataTempRegister, src, dataTempRegister); @@ -266,7 +266,7 @@ public: m_assembler.orr(dest, dest, src); } - void or32(Imm32 imm, RegisterID dest) + void or32(TrustedImm32 imm, RegisterID dest) { ARMThumbImmediate armImm = ARMThumbImmediate::makeEncodedImm(imm.m_value); if (armImm.isValid()) @@ -287,7 +287,7 @@ public: m_assembler.asr(dest, dest, dataTempRegister); } - void rshift32(Imm32 imm, RegisterID dest) + void rshift32(TrustedImm32 imm, RegisterID dest) { m_assembler.asr(dest, dest, imm.m_value & 0x1f); } @@ -302,7 +302,7 @@ public: m_assembler.lsr(dest, dest, dataTempRegister); } - void urshift32(Imm32 imm, RegisterID dest) + void urshift32(TrustedImm32 imm, RegisterID dest) { m_assembler.lsr(dest, dest, imm.m_value & 0x1f); } @@ -312,7 +312,7 @@ public: m_assembler.sub(dest, dest, src); } - void sub32(Imm32 imm, RegisterID dest) + void sub32(TrustedImm32 imm, RegisterID dest) { ARMThumbImmediate armImm = ARMThumbImmediate::makeUInt12OrEncodedImm(imm.m_value); if (armImm.isValid()) @@ -323,7 +323,7 @@ public: } } - void sub32(Imm32 imm, Address address) + void sub32(TrustedImm32 imm, Address address) { load32(address, dataTempRegister); @@ -346,7 +346,7 @@ public: sub32(dataTempRegister, dest); } - void sub32(Imm32 imm, AbsoluteAddress address) + void sub32(TrustedImm32 imm, AbsoluteAddress address) { load32(address.m_ptr, dataTempRegister); @@ -368,7 +368,7 @@ public: m_assembler.eor(dest, dest, src); } - void xor32(Imm32 imm, RegisterID dest) + void xor32(TrustedImm32 imm, RegisterID dest) { ARMThumbImmediate armImm = ARMThumbImmediate::makeEncodedImm(imm.m_value); if (armImm.isValid()) @@ -383,7 +383,7 @@ public: // Memory access operations: // // Loads are of the form load(address, destination) and stores of the form - // store(source, address). The source for a store may be an Imm32. Address + // store(source, address). The source for a store may be an TrustedImm32. Address // operand objects to loads and store will be implicitly constructed if a // register is passed. @@ -460,9 +460,9 @@ public: load32(setupArmAddress(address), dest); } - void load32(void* address, RegisterID dest) + void load32(const void* address, RegisterID dest) { - move(ImmPtr(address), addressTempRegister); + move(TrustedImmPtr(address), addressTempRegister); m_assembler.ldr(dest, addressTempRegister, ARMThumbImmediate::makeUInt16(0)); } @@ -473,7 +473,7 @@ public: DataLabel32 load32WithAddressOffsetPatch(Address address, RegisterID dest) { - DataLabel32 label = moveWithPatch(Imm32(address.offset), dataTempRegister); + DataLabel32 label = moveWithPatch(TrustedImm32(address.offset), dataTempRegister); load32(ArmAddress(address.base, dataTempRegister), dest); return label; } @@ -489,14 +489,14 @@ public: if (armImm.isValid()) m_assembler.ldrh(dest, address.base, armImm); else { - move(Imm32(address.offset), dataTempRegister); + move(TrustedImm32(address.offset), dataTempRegister); m_assembler.ldrh(dest, address.base, dataTempRegister); } } DataLabel32 store32WithAddressOffsetPatch(RegisterID src, Address address) { - DataLabel32 label = moveWithPatch(Imm32(address.offset), dataTempRegister); + DataLabel32 label = moveWithPatch(TrustedImm32(address.offset), dataTempRegister); store32(src, ArmAddress(address.base, dataTempRegister)); return label; } @@ -511,19 +511,19 @@ public: store32(src, setupArmAddress(address)); } - void store32(Imm32 imm, ImplicitAddress address) + void store32(TrustedImm32 imm, ImplicitAddress address) { move(imm, dataTempRegister); store32(dataTempRegister, setupArmAddress(address)); } - void store32(RegisterID src, void* address) + void store32(RegisterID src, const void* address) { - move(ImmPtr(address), addressTempRegister); + move(TrustedImmPtr(address), addressTempRegister); m_assembler.str(src, addressTempRegister, ARMThumbImmediate::makeUInt16(0)); } - void store32(Imm32 imm, void* address) + void store32(TrustedImm32 imm, const void* address) { move(imm, dataTempRegister); store32(dataTempRegister, address); @@ -558,7 +558,7 @@ public: // Arm vfp addresses can be offset by a 9-bit ones-comp immediate, left shifted by 2. if ((offset & 3) || (offset > (255 * 4)) || (offset < -(255 * 4))) { - add32(Imm32(offset), base, addressTempRegister); + add32(TrustedImm32(offset), base, addressTempRegister); base = addressTempRegister; offset = 0; } @@ -568,7 +568,7 @@ public: void loadDouble(const void* address, FPRegisterID dest) { - move(ImmPtr(address), addressTempRegister); + move(TrustedImmPtr(address), addressTempRegister); m_assembler.vldr(dest, addressTempRegister, 0); } @@ -579,7 +579,7 @@ public: // Arm vfp addresses can be offset by a 9-bit ones-comp immediate, left shifted by 2. if ((offset & 3) || (offset > (255 * 4)) || (offset < -(255 * 4))) { - add32(Imm32(offset), base, addressTempRegister); + add32(TrustedImm32(offset), base, addressTempRegister); base = addressTempRegister; offset = 0; } @@ -748,7 +748,7 @@ public: push(dataTempRegister); } - void push(Imm32 imm) + void push(TrustedImm32 imm) { move(imm, dataTempRegister); push(dataTempRegister); @@ -758,7 +758,7 @@ public: // // Move values in registers. - void move(Imm32 imm, RegisterID dest) + void move(TrustedImm32 imm, RegisterID dest) { uint32_t value = imm.m_value; @@ -784,9 +784,9 @@ public: m_assembler.mov(dest, src); } - void move(ImmPtr imm, RegisterID dest) + void move(TrustedImmPtr imm, RegisterID dest) { - move(Imm32(imm), dest); + move(TrustedImm32(imm), dest); } void swap(RegisterID reg1, RegisterID reg2) @@ -821,7 +821,7 @@ public: // used (representing the names 'below' and 'above'). // // Operands to the comparision are provided in the expected order, e.g. - // jle32(reg1, Imm32(5)) will branch if the value held in reg1, when + // jle32(reg1, TrustedImm32(5)) will branch if the value held in reg1, when // treated as a signed 32bit value, is less than or equal to 5. // // jz and jnz test whether the first operand is equal to zero, and take @@ -829,7 +829,7 @@ public: private: // Should we be using TEQ for equal/not-equal? - void compare32(RegisterID left, Imm32 right) + void compare32(RegisterID left, TrustedImm32 right) { int32_t imm = right.m_value; if (!imm) @@ -841,13 +841,13 @@ private: else if ((armImm = ARMThumbImmediate::makeEncodedImm(-imm)).isValid()) m_assembler.cmn(left, armImm); else { - move(Imm32(imm), dataTempRegister); + move(TrustedImm32(imm), dataTempRegister); m_assembler.cmp(left, dataTempRegister); } } } - void test32(RegisterID reg, Imm32 mask) + void test32(RegisterID reg, TrustedImm32 mask) { int32_t imm = mask.m_value; @@ -871,7 +871,7 @@ public: return Jump(makeBranch(cond)); } - Jump branch32(Condition cond, RegisterID left, Imm32 right) + Jump branch32(Condition cond, RegisterID left, TrustedImm32 right) { compare32(left, right); return Jump(makeBranch(cond)); @@ -889,21 +889,21 @@ public: return branch32(cond, dataTempRegister, right); } - Jump branch32(Condition cond, Address left, Imm32 right) + Jump branch32(Condition cond, Address left, TrustedImm32 right) { // use addressTempRegister incase the branch32 we call uses dataTempRegister. :-/ load32(left, addressTempRegister); return branch32(cond, addressTempRegister, right); } - Jump branch32(Condition cond, BaseIndex left, Imm32 right) + Jump branch32(Condition cond, BaseIndex left, TrustedImm32 right) { // use addressTempRegister incase the branch32 we call uses dataTempRegister. :-/ load32(left, addressTempRegister); return branch32(cond, addressTempRegister, right); } - Jump branch32WithUnalignedHalfWords(Condition cond, BaseIndex left, Imm32 right) + Jump branch32WithUnalignedHalfWords(Condition cond, BaseIndex left, TrustedImm32 right) { // use addressTempRegister incase the branch32 we call uses dataTempRegister. :-/ load32WithUnalignedHalfWords(left, addressTempRegister); @@ -916,7 +916,7 @@ public: return branch32(cond, dataTempRegister, right); } - Jump branch32(Condition cond, AbsoluteAddress left, Imm32 right) + Jump branch32(Condition cond, AbsoluteAddress left, TrustedImm32 right) { // use addressTempRegister incase the branch32 we call uses dataTempRegister. :-/ load32(left.m_ptr, addressTempRegister); @@ -931,21 +931,21 @@ public: return branch32(cond, dataTempRegister, addressTempRegister); } - Jump branch16(Condition cond, BaseIndex left, Imm32 right) + Jump branch16(Condition cond, BaseIndex left, TrustedImm32 right) { // use addressTempRegister incase the branch32 we call uses dataTempRegister. :-/ load16(left, addressTempRegister); m_assembler.lsl(addressTempRegister, addressTempRegister, 16); - return branch32(cond, addressTempRegister, Imm32(right.m_value << 16)); + return branch32(cond, addressTempRegister, TrustedImm32(right.m_value << 16)); } - Jump branch8(Condition cond, RegisterID left, Imm32 right) + Jump branch8(Condition cond, RegisterID left, TrustedImm32 right) { compare32(left, right); return Jump(makeBranch(cond)); } - Jump branch8(Condition cond, Address left, Imm32 right) + Jump branch8(Condition cond, Address left, TrustedImm32 right) { // use addressTempRegister incase the branch8 we call uses dataTempRegister. :-/ load8(left, addressTempRegister); @@ -959,14 +959,14 @@ public: return Jump(makeBranch(cond)); } - Jump branchTest32(Condition cond, RegisterID reg, Imm32 mask = Imm32(-1)) + Jump branchTest32(Condition cond, RegisterID reg, TrustedImm32 mask = TrustedImm32(-1)) { ASSERT((cond == Zero) || (cond == NonZero)); test32(reg, mask); return Jump(makeBranch(cond)); } - Jump branchTest32(Condition cond, Address address, Imm32 mask = Imm32(-1)) + Jump branchTest32(Condition cond, Address address, TrustedImm32 mask = TrustedImm32(-1)) { ASSERT((cond == Zero) || (cond == NonZero)); // use addressTempRegister incase the branchTest32 we call uses dataTempRegister. :-/ @@ -974,7 +974,7 @@ public: return branchTest32(cond, addressTempRegister, mask); } - Jump branchTest32(Condition cond, BaseIndex address, Imm32 mask = Imm32(-1)) + Jump branchTest32(Condition cond, BaseIndex address, TrustedImm32 mask = TrustedImm32(-1)) { ASSERT((cond == Zero) || (cond == NonZero)); // use addressTempRegister incase the branchTest32 we call uses dataTempRegister. :-/ @@ -982,14 +982,14 @@ public: return branchTest32(cond, addressTempRegister, mask); } - Jump branchTest8(Condition cond, RegisterID reg, Imm32 mask = Imm32(-1)) + Jump branchTest8(Condition cond, RegisterID reg, TrustedImm32 mask = TrustedImm32(-1)) { ASSERT((cond == Zero) || (cond == NonZero)); test32(reg, mask); return Jump(makeBranch(cond)); } - Jump branchTest8(Condition cond, Address address, Imm32 mask = Imm32(-1)) + Jump branchTest8(Condition cond, Address address, TrustedImm32 mask = TrustedImm32(-1)) { ASSERT((cond == Zero) || (cond == NonZero)); // use addressTempRegister incase the branchTest8 we call uses dataTempRegister. :-/ @@ -1032,7 +1032,7 @@ public: return Jump(makeBranch(cond)); } - Jump branchAdd32(Condition cond, Imm32 imm, RegisterID dest) + Jump branchAdd32(Condition cond, TrustedImm32 imm, RegisterID dest) { ASSERT((cond == Overflow) || (cond == Signed) || (cond == Zero) || (cond == NonZero)); ARMThumbImmediate armImm = ARMThumbImmediate::makeEncodedImm(imm.m_value); @@ -1053,7 +1053,7 @@ public: return branch32(NotEqual, addressTempRegister, dataTempRegister); } - Jump branchMul32(Condition cond, Imm32 imm, RegisterID src, RegisterID dest) + Jump branchMul32(Condition cond, TrustedImm32 imm, RegisterID src, RegisterID dest) { ASSERT_UNUSED(cond, cond == Overflow); move(imm, dataTempRegister); @@ -1076,7 +1076,7 @@ public: return Jump(makeBranch(cond)); } - Jump branchSub32(Condition cond, Imm32 imm, RegisterID dest) + Jump branchSub32(Condition cond, TrustedImm32 imm, RegisterID dest) { ASSERT((cond == Overflow) || (cond == Signed) || (cond == Zero) || (cond == NonZero)); ARMThumbImmediate armImm = ARMThumbImmediate::makeEncodedImm(imm.m_value); @@ -1111,13 +1111,13 @@ public: Call nearCall() { - moveFixedWidthEncoding(Imm32(0), dataTempRegister); + moveFixedWidthEncoding(TrustedImm32(0), dataTempRegister); return Call(m_assembler.blx(dataTempRegister, ARMv7Assembler::JumpFixed), Call::LinkableNear); } Call call() { - moveFixedWidthEncoding(Imm32(0), dataTempRegister); + moveFixedWidthEncoding(TrustedImm32(0), dataTempRegister); return Call(m_assembler.blx(dataTempRegister, ARMv7Assembler::JumpFixed), Call::Linkable); } @@ -1151,7 +1151,7 @@ public: set32Compare32(cond, dataTempRegister, right, dest); } - void set32Compare32(Condition cond, RegisterID left, Imm32 right, RegisterID dest) + void set32Compare32(Condition cond, RegisterID left, TrustedImm32 right, RegisterID dest) { compare32(left, right); m_assembler.it(armV7Condition(cond), false); @@ -1169,7 +1169,7 @@ public: set32Compare32(cond, left, right, dest); } - void set8Compare32(Condition cond, RegisterID left, Imm32 right, RegisterID dest) + void set8Compare32(Condition cond, RegisterID left, TrustedImm32 right, RegisterID dest) { set32Compare32(cond, left, right, dest); } @@ -1178,7 +1178,7 @@ public: // The mask should be optional... paerhaps the argument order should be // dest-src, operations always have a dest? ... possibly not true, considering // asm ops like test, or pseudo ops like pop(). - void set32Test32(Condition cond, Address address, Imm32 mask, RegisterID dest) + void set32Test32(Condition cond, Address address, TrustedImm32 mask, RegisterID dest) { load32(address, dataTempRegister); test32(dataTempRegister, mask); @@ -1187,7 +1187,7 @@ public: m_assembler.mov(dest, ARMThumbImmediate::makeUInt16(0)); } - void set32Test8(Condition cond, Address address, Imm32 mask, RegisterID dest) + void set32Test8(Condition cond, Address address, TrustedImm32 mask, RegisterID dest) { load8(address, dataTempRegister); test32(dataTempRegister, mask); @@ -1196,44 +1196,44 @@ public: m_assembler.mov(dest, ARMThumbImmediate::makeUInt16(0)); } - DataLabel32 moveWithPatch(Imm32 imm, RegisterID dst) + DataLabel32 moveWithPatch(TrustedImm32 imm, RegisterID dst) { moveFixedWidthEncoding(imm, dst); return DataLabel32(this); } - DataLabelPtr moveWithPatch(ImmPtr imm, RegisterID dst) + DataLabelPtr moveWithPatch(TrustedImmPtr imm, RegisterID dst) { - moveFixedWidthEncoding(Imm32(imm), dst); + moveFixedWidthEncoding(TrustedImm32(imm), dst); return DataLabelPtr(this); } - Jump branchPtrWithPatch(Condition cond, RegisterID left, DataLabelPtr& dataLabel, ImmPtr initialRightValue = ImmPtr(0)) + Jump branchPtrWithPatch(Condition cond, RegisterID left, DataLabelPtr& dataLabel, TrustedImmPtr initialRightValue = TrustedImmPtr(0)) { dataLabel = moveWithPatch(initialRightValue, dataTempRegister); return branch32(cond, left, dataTempRegister); } - Jump branchPtrWithPatch(Condition cond, Address left, DataLabelPtr& dataLabel, ImmPtr initialRightValue = ImmPtr(0)) + Jump branchPtrWithPatch(Condition cond, Address left, DataLabelPtr& dataLabel, TrustedImmPtr initialRightValue = TrustedImmPtr(0)) { load32(left, addressTempRegister); dataLabel = moveWithPatch(initialRightValue, dataTempRegister); return branch32(cond, addressTempRegister, dataTempRegister); } - DataLabelPtr storePtrWithPatch(ImmPtr initialValue, ImplicitAddress address) + DataLabelPtr storePtrWithPatch(TrustedImmPtr initialValue, ImplicitAddress address) { DataLabelPtr label = moveWithPatch(initialValue, dataTempRegister); store32(dataTempRegister, address); return label; } - DataLabelPtr storePtrWithPatch(ImplicitAddress address) { return storePtrWithPatch(ImmPtr(0), address); } + DataLabelPtr storePtrWithPatch(ImplicitAddress address) { return storePtrWithPatch(TrustedImmPtr(0), address); } Call tailRecursiveCall() { // Like a normal call, but don't link. - moveFixedWidthEncoding(Imm32(0), dataTempRegister); + moveFixedWidthEncoding(TrustedImm32(0), dataTempRegister); return Call(m_assembler.bx(dataTempRegister, ARMv7Assembler::JumpFixed), Call::Linkable); } @@ -1257,14 +1257,14 @@ protected: ARMv7Assembler::JmpSrc makeJump() { - moveFixedWidthEncoding(Imm32(0), dataTempRegister); + moveFixedWidthEncoding(TrustedImm32(0), dataTempRegister); return m_assembler.bx(dataTempRegister, inUninterruptedSequence() ? ARMv7Assembler::JumpNoConditionFixedSize : ARMv7Assembler::JumpNoCondition); } ARMv7Assembler::JmpSrc makeBranch(ARMv7Assembler::Condition cond) { m_assembler.it(cond, true, true); - moveFixedWidthEncoding(Imm32(0), dataTempRegister); + moveFixedWidthEncoding(TrustedImm32(0), dataTempRegister); return m_assembler.bx(dataTempRegister, inUninterruptedSequence() ? ARMv7Assembler::JumpConditionFixedSize : ARMv7Assembler::JumpCondition, cond); } ARMv7Assembler::JmpSrc makeBranch(Condition cond) { return makeBranch(armV7Condition(cond)); } @@ -1277,7 +1277,7 @@ protected: if (imm.isValid()) m_assembler.add(addressTempRegister, address.base, imm); else { - move(Imm32(address.offset), addressTempRegister); + move(TrustedImm32(address.offset), addressTempRegister); m_assembler.add(addressTempRegister, addressTempRegister, address.base); } @@ -1291,7 +1291,7 @@ protected: if ((address.offset >= -0xff) && (address.offset <= 0xfff)) return ArmAddress(address.base, address.offset); - move(Imm32(address.offset), addressTempRegister); + move(TrustedImm32(address.offset), addressTempRegister); return ArmAddress(address.base, addressTempRegister); } @@ -1300,7 +1300,7 @@ protected: if ((address.offset >= -0xff) && (address.offset <= 0xfff)) return ArmAddress(address.base, address.offset); - move(Imm32(address.offset), addressTempRegister); + move(TrustedImm32(address.offset), addressTempRegister); return ArmAddress(address.base, addressTempRegister); } @@ -1313,14 +1313,14 @@ protected: if (imm.isValid()) m_assembler.add(addressTempRegister, address.base, imm); else { - move(Imm32(address.offset), addressTempRegister); + move(TrustedImm32(address.offset), addressTempRegister); m_assembler.add(addressTempRegister, addressTempRegister, address.base); } return addressTempRegister; } - void moveFixedWidthEncoding(Imm32 imm, RegisterID dst) + void moveFixedWidthEncoding(TrustedImm32 imm, RegisterID dst) { uint32_t value = imm.m_value; m_assembler.movT3(dst, ARMThumbImmediate::makeUInt16(value & 0xffff)); diff --git a/Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h b/Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h index 543b0fa..2183b22 100644 --- a/Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h +++ b/Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h @@ -65,15 +65,47 @@ public: { } + template + FunctionPtr(returnType(*value)()) + : m_value((void*)value) + { + ASSERT_VALID_CODE_POINTER(m_value); + } + + template + FunctionPtr(returnType(*value)(argType1)) + : m_value((void*)value) + { + ASSERT_VALID_CODE_POINTER(m_value); + } + + template + FunctionPtr(returnType(*value)(argType1, argType2)) + : m_value((void*)value) + { + ASSERT_VALID_CODE_POINTER(m_value); + } + + template + FunctionPtr(returnType(*value)(argType1, argType2, argType3)) + : m_value((void*)value) + { + ASSERT_VALID_CODE_POINTER(m_value); + } + + template + FunctionPtr(returnType(*value)(argType1, argType2, argType3, argType4)) + : m_value((void*)value) + { + ASSERT_VALID_CODE_POINTER(m_value); + } + template explicit FunctionPtr(FunctionType* value) -#if COMPILER(RVCT) - // RVTC compiler needs C-style cast as it fails with the following error - // Error: #694: reinterpret_cast cannot cast away const or other type qualifiers - : m_value((void*)(value)) -#else - : m_value(reinterpret_cast(value)) -#endif + // Using a C-ctyle cast here to avoid compiler error on RVTC: + // Error: #694: reinterpret_cast cannot cast away const or other type qualifiers + // (I guess on RVTC function pointers have a different constness to GCC/MSVC?) + : m_value((void*)value) { ASSERT_VALID_CODE_POINTER(m_value); } diff --git a/Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h b/Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h index 4697dfc..1bcec38 100644 --- a/Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h +++ b/Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h @@ -95,7 +95,7 @@ public: // Integer arithmetic operations: // // Operations are typically two operand - operation(source, srcDst) - // For many operations the source may be an Imm32, the srcDst operand + // For many operations the source may be an TrustedImm32, the srcDst operand // may often be a memory location (explictly described using an Address // object). @@ -104,12 +104,12 @@ public: m_assembler.addu(dest, dest, src); } - void add32(Imm32 imm, RegisterID dest) + void add32(TrustedImm32 imm, RegisterID dest) { add32(imm, dest, dest); } - void add32(Imm32 imm, RegisterID src, RegisterID dest) + void add32(TrustedImm32 imm, RegisterID src, RegisterID dest) { if (!imm.m_isPointer && imm.m_value >= -32768 && imm.m_value <= 32767 && !m_fixedWidth) { @@ -127,7 +127,7 @@ public: } } - void add32(Imm32 imm, Address address) + void add32(TrustedImm32 imm, Address address) { if (address.offset >= -32768 && address.offset <= 32767 && !m_fixedWidth) { @@ -207,7 +207,7 @@ public: } } - void add32(Imm32 imm, AbsoluteAddress address) + void add32(TrustedImm32 imm, AbsoluteAddress address) { /* li addrTemp, address @@ -216,7 +216,7 @@ public: addu dataTemp, dataTemp, immTemp sw dataTemp, 0(addrTemp) */ - move(ImmPtr(address.m_ptr), addrTempRegister); + move(TrustedImmPtr(address.m_ptr), addrTempRegister); m_assembler.lw(dataTempRegister, addrTempRegister, 0); if (!imm.m_isPointer && imm.m_value >= -32768 && imm.m_value <= 32767 && !m_fixedWidth) @@ -233,7 +233,7 @@ public: m_assembler.andInsn(dest, dest, src); } - void and32(Imm32 imm, RegisterID dest) + void and32(TrustedImm32 imm, RegisterID dest) { if (!imm.m_isPointer && !imm.m_value && !m_fixedWidth) move(MIPSRegisters::zero, dest); @@ -250,7 +250,7 @@ public: } } - void lshift32(Imm32 imm, RegisterID dest) + void lshift32(TrustedImm32 imm, RegisterID dest) { m_assembler.sll(dest, dest, imm.m_value); } @@ -265,7 +265,7 @@ public: m_assembler.mul(dest, dest, src); } - void mul32(Imm32 imm, RegisterID src, RegisterID dest) + void mul32(TrustedImm32 imm, RegisterID src, RegisterID dest) { if (!imm.m_isPointer && !imm.m_value && !m_fixedWidth) move(MIPSRegisters::zero, dest); @@ -296,7 +296,7 @@ public: m_assembler.orInsn(dest, dest, src); } - void or32(Imm32 imm, RegisterID dest) + void or32(TrustedImm32 imm, RegisterID dest) { if (!imm.m_isPointer && !imm.m_value && !m_fixedWidth) return; @@ -320,7 +320,7 @@ public: m_assembler.srav(dest, dest, shiftAmount); } - void rshift32(Imm32 imm, RegisterID dest) + void rshift32(TrustedImm32 imm, RegisterID dest) { m_assembler.sra(dest, dest, imm.m_value); } @@ -330,7 +330,7 @@ public: m_assembler.srlv(dest, dest, shiftAmount); } - void urshift32(Imm32 imm, RegisterID dest) + void urshift32(TrustedImm32 imm, RegisterID dest) { m_assembler.srl(dest, dest, imm.m_value); } @@ -340,7 +340,7 @@ public: m_assembler.subu(dest, dest, src); } - void sub32(Imm32 imm, RegisterID dest) + void sub32(TrustedImm32 imm, RegisterID dest) { if (!imm.m_isPointer && imm.m_value >= -32767 && imm.m_value <= 32768 && !m_fixedWidth) { @@ -358,7 +358,7 @@ public: } } - void sub32(Imm32 imm, Address address) + void sub32(TrustedImm32 imm, Address address) { if (address.offset >= -32768 && address.offset <= 32767 && !m_fixedWidth) { @@ -413,7 +413,7 @@ public: sub32(dataTempRegister, dest); } - void sub32(Imm32 imm, AbsoluteAddress address) + void sub32(TrustedImm32 imm, AbsoluteAddress address) { /* li addrTemp, address @@ -422,7 +422,7 @@ public: subu dataTemp, dataTemp, immTemp sw dataTemp, 0(addrTemp) */ - move(ImmPtr(address.m_ptr), addrTempRegister); + move(TrustedImmPtr(address.m_ptr), addrTempRegister); m_assembler.lw(dataTempRegister, addrTempRegister, 0); if (!imm.m_isPointer && imm.m_value >= -32767 && imm.m_value <= 32768 @@ -441,7 +441,7 @@ public: m_assembler.xorInsn(dest, dest, src); } - void xor32(Imm32 imm, RegisterID dest) + void xor32(TrustedImm32 imm, RegisterID dest) { /* li immTemp, imm @@ -459,7 +459,7 @@ public: // Memory access operations: // // Loads are of the form load(address, destination) and stores of the form - // store(source, address). The source for a store may be an Imm32. Address + // store(source, address). The source for a store may be an TrustedImm32. Address // operand objects to loads and store will be implicitly constructed if a // register is passed. @@ -581,13 +581,13 @@ public: } } - void load32(void* address, RegisterID dest) + void load32(const void* address, RegisterID dest) { /* li addrTemp, address lw dest, 0(addrTemp) */ - move(ImmPtr(address), addrTempRegister); + move(TrustedImmPtr(address), addrTempRegister); m_assembler.lw(dest, addrTempRegister, 0); } @@ -601,7 +601,7 @@ public: lw dest, 0(addrTemp) */ DataLabel32 dataLabel(this); - move(Imm32(address.offset), addrTempRegister); + move(TrustedImm32(address.offset), addrTempRegister); m_assembler.addu(addrTempRegister, addrTempRegister, address.base); m_assembler.lw(dest, addrTempRegister, 0); m_fixedWidth = false; @@ -666,7 +666,7 @@ public: sw src, 0(addrTemp) */ DataLabel32 dataLabel(this); - move(Imm32(address.offset), addrTempRegister); + move(TrustedImm32(address.offset), addrTempRegister); m_assembler.addu(addrTempRegister, addrTempRegister, address.base); m_assembler.sw(src, addrTempRegister, 0); m_fixedWidth = false; @@ -719,7 +719,7 @@ public: } } - void store32(Imm32 imm, ImplicitAddress address) + void store32(TrustedImm32 imm, ImplicitAddress address) { if (address.offset >= -32768 && address.offset <= 32767 && !m_fixedWidth) { @@ -749,17 +749,17 @@ public: } } - void store32(RegisterID src, void* address) + void store32(RegisterID src, const void* address) { /* li addrTemp, address sw src, 0(addrTemp) */ - move(ImmPtr(address), addrTempRegister); + move(TrustedImmPtr(address), addrTempRegister); m_assembler.sw(src, addrTempRegister, 0); } - void store32(Imm32 imm, void* address) + void store32(TrustedImm32 imm, const void* address) { /* li immTemp, imm @@ -767,11 +767,11 @@ public: sw src, 0(addrTemp) */ if (!imm.m_isPointer && !imm.m_value && !m_fixedWidth) { - move(ImmPtr(address), addrTempRegister); + move(TrustedImmPtr(address), addrTempRegister); m_assembler.sw(MIPSRegisters::zero, addrTempRegister, 0); } else { move(imm, immTempRegister); - move(ImmPtr(address), addrTempRegister); + move(TrustedImmPtr(address), addrTempRegister); m_assembler.sw(immTempRegister, addrTempRegister, 0); } } @@ -831,7 +831,7 @@ public: push(dataTempRegister); } - void push(Imm32 imm) + void push(TrustedImm32 imm) { move(imm, immTempRegister); push(immTempRegister); @@ -841,7 +841,7 @@ public: // // Move values in registers. - void move(Imm32 imm, RegisterID dest) + void move(TrustedImm32 imm, RegisterID dest) { if (!imm.m_isPointer && !imm.m_value && !m_fixedWidth) move(MIPSRegisters::zero, dest); @@ -858,9 +858,9 @@ public: m_assembler.move(dest, src); } - void move(ImmPtr imm, RegisterID dest) + void move(TrustedImmPtr imm, RegisterID dest) { - move(Imm32(imm), dest); + move(TrustedImm32(imm), dest); } void swap(RegisterID reg1, RegisterID reg2) @@ -894,13 +894,13 @@ public: // used (representing the names 'below' and 'above'). // // Operands to the comparision are provided in the expected order, e.g. - // jle32(reg1, Imm32(5)) will branch if the value held in reg1, when + // jle32(reg1, TrustedImm32(5)) will branch if the value held in reg1, when // treated as a signed 32bit value, is less than or equal to 5. // // jz and jnz test whether the first operand is equal to zero, and take // an optional second operand of a mask under which to perform the test. - Jump branch8(Condition cond, Address left, Imm32 right) + Jump branch8(Condition cond, Address left, TrustedImm32 right) { // Make sure the immediate value is unsigned 8 bits. ASSERT(!(right.m_value & 0xFFFFFF00)); @@ -985,7 +985,7 @@ public: return Jump(); } - Jump branch32(Condition cond, RegisterID left, Imm32 right) + Jump branch32(Condition cond, RegisterID left, TrustedImm32 right) { move(right, immTempRegister); return branch32(cond, left, immTempRegister); @@ -1003,14 +1003,14 @@ public: return branch32(cond, dataTempRegister, right); } - Jump branch32(Condition cond, Address left, Imm32 right) + Jump branch32(Condition cond, Address left, TrustedImm32 right) { load32(left, dataTempRegister); move(right, immTempRegister); return branch32(cond, dataTempRegister, immTempRegister); } - Jump branch32(Condition cond, BaseIndex left, Imm32 right) + Jump branch32(Condition cond, BaseIndex left, TrustedImm32 right) { load32(left, dataTempRegister); // Be careful that the previous load32() uses immTempRegister. @@ -1019,7 +1019,7 @@ public: return branch32(cond, dataTempRegister, immTempRegister); } - Jump branch32WithUnalignedHalfWords(Condition cond, BaseIndex left, Imm32 right) + Jump branch32WithUnalignedHalfWords(Condition cond, BaseIndex left, TrustedImm32 right) { load32WithUnalignedHalfWords(left, dataTempRegister); // Be careful that the previous load32WithUnalignedHalfWords() @@ -1035,7 +1035,7 @@ public: return branch32(cond, dataTempRegister, right); } - Jump branch32(Condition cond, AbsoluteAddress left, Imm32 right) + Jump branch32(Condition cond, AbsoluteAddress left, TrustedImm32 right) { load32(left.m_ptr, dataTempRegister); move(right, immTempRegister); @@ -1048,7 +1048,7 @@ public: return branch32(cond, dataTempRegister, right); } - Jump branch16(Condition cond, BaseIndex left, Imm32 right) + Jump branch16(Condition cond, BaseIndex left, TrustedImm32 right) { ASSERT(!(right.m_value & 0xFFFF0000)); load16(left, dataTempRegister); @@ -1067,7 +1067,7 @@ public: return branchNotEqual(cmpTempRegister, MIPSRegisters::zero); } - Jump branchTest32(Condition cond, RegisterID reg, Imm32 mask = Imm32(-1)) + Jump branchTest32(Condition cond, RegisterID reg, TrustedImm32 mask = TrustedImm32(-1)) { ASSERT((cond == Zero) || (cond == NonZero)); if (mask.m_value == -1 && !m_fixedWidth) { @@ -1079,19 +1079,19 @@ public: return branchTest32(cond, reg, immTempRegister); } - Jump branchTest32(Condition cond, Address address, Imm32 mask = Imm32(-1)) + Jump branchTest32(Condition cond, Address address, TrustedImm32 mask = TrustedImm32(-1)) { load32(address, dataTempRegister); return branchTest32(cond, dataTempRegister, mask); } - Jump branchTest32(Condition cond, BaseIndex address, Imm32 mask = Imm32(-1)) + Jump branchTest32(Condition cond, BaseIndex address, TrustedImm32 mask = TrustedImm32(-1)) { load32(address, dataTempRegister); return branchTest32(cond, dataTempRegister, mask); } - Jump branchTest8(Condition cond, Address address, Imm32 mask = Imm32(-1)) + Jump branchTest8(Condition cond, Address address, TrustedImm32 mask = TrustedImm32(-1)) { load8(address, dataTempRegister); return branchTest32(cond, dataTempRegister, mask); @@ -1174,7 +1174,7 @@ public: return Jump(); } - Jump branchAdd32(Condition cond, Imm32 imm, RegisterID dest) + Jump branchAdd32(Condition cond, TrustedImm32 imm, RegisterID dest) { move(imm, immTempRegister); return branchAdd32(cond, immTempRegister, dest); @@ -1225,7 +1225,7 @@ public: return Jump(); } - Jump branchMul32(Condition cond, Imm32 imm, RegisterID src, RegisterID dest) + Jump branchMul32(Condition cond, TrustedImm32 imm, RegisterID src, RegisterID dest) { move(imm, immTempRegister); move(src, dest); @@ -1279,7 +1279,7 @@ public: return Jump(); } - Jump branchSub32(Condition cond, Imm32 imm, RegisterID dest) + Jump branchSub32(Condition cond, TrustedImm32 imm, RegisterID dest) { move(imm, immTempRegister); return branchSub32(cond, immTempRegister, dest); @@ -1360,7 +1360,7 @@ public: set32Compare32(cond, left, right, dest); } - void set8Compare32(Condition cond, RegisterID left, Imm32 right, RegisterID dest) + void set8Compare32(Condition cond, RegisterID left, TrustedImm32 right, RegisterID dest) { move(right, immTempRegister); set32Compare32(cond, left, immTempRegister, dest); @@ -1417,13 +1417,13 @@ public: } } - void set32Compare32(Condition cond, RegisterID left, Imm32 right, RegisterID dest) + void set32Compare32(Condition cond, RegisterID left, TrustedImm32 right, RegisterID dest) { move(right, immTempRegister); set32Compare32(cond, left, immTempRegister, dest); } - void set32Test8(Condition cond, Address address, Imm32 mask, RegisterID dest) + void set32Test8(Condition cond, Address address, TrustedImm32 mask, RegisterID dest) { ASSERT((cond == Zero) || (cond == NonZero)); load8(address, dataTempRegister); @@ -1443,7 +1443,7 @@ public: } } - void set32Test32(Condition cond, Address address, Imm32 mask, RegisterID dest) + void set32Test32(Condition cond, Address address, TrustedImm32 mask, RegisterID dest) { ASSERT((cond == Zero) || (cond == NonZero)); load32(address, dataTempRegister); @@ -1463,7 +1463,7 @@ public: } } - DataLabel32 moveWithPatch(Imm32 imm, RegisterID dest) + DataLabel32 moveWithPatch(TrustedImm32 imm, RegisterID dest) { m_fixedWidth = true; DataLabel32 label(this); @@ -1472,7 +1472,7 @@ public: return label; } - DataLabelPtr moveWithPatch(ImmPtr initialValue, RegisterID dest) + DataLabelPtr moveWithPatch(TrustedImmPtr initialValue, RegisterID dest) { m_fixedWidth = true; DataLabelPtr label(this); @@ -1481,7 +1481,7 @@ public: return label; } - Jump branchPtrWithPatch(Condition cond, RegisterID left, DataLabelPtr& dataLabel, ImmPtr initialRightValue = ImmPtr(0)) + Jump branchPtrWithPatch(Condition cond, RegisterID left, DataLabelPtr& dataLabel, TrustedImmPtr initialRightValue = TrustedImmPtr(0)) { m_fixedWidth = true; dataLabel = moveWithPatch(initialRightValue, immTempRegister); @@ -1490,7 +1490,7 @@ public: return temp; } - Jump branchPtrWithPatch(Condition cond, Address left, DataLabelPtr& dataLabel, ImmPtr initialRightValue = ImmPtr(0)) + Jump branchPtrWithPatch(Condition cond, Address left, DataLabelPtr& dataLabel, TrustedImmPtr initialRightValue = TrustedImmPtr(0)) { m_fixedWidth = true; load32(left, dataTempRegister); @@ -1500,7 +1500,7 @@ public: return temp; } - DataLabelPtr storePtrWithPatch(ImmPtr initialValue, ImplicitAddress address) + DataLabelPtr storePtrWithPatch(TrustedImmPtr initialValue, ImplicitAddress address) { m_fixedWidth = true; DataLabelPtr dataLabel = moveWithPatch(initialValue, dataTempRegister); @@ -1511,14 +1511,14 @@ public: DataLabelPtr storePtrWithPatch(ImplicitAddress address) { - return storePtrWithPatch(ImmPtr(0), address); + return storePtrWithPatch(TrustedImmPtr(0), address); } Call tailRecursiveCall() { // Like a normal call, but don't update the returned address register m_fixedWidth = true; - move(Imm32(0), MIPSRegisters::t9); + move(TrustedImm32(0), MIPSRegisters::t9); m_assembler.jr(MIPSRegisters::t9); m_assembler.nop(); m_fixedWidth = false; @@ -1540,7 +1540,7 @@ public: lwc1 dest, 0(addrTemp) lwc1 dest+1, 4(addrTemp) */ - move(Imm32(address.offset), addrTempRegister); + move(TrustedImm32(address.offset), addrTempRegister); m_assembler.addu(addrTempRegister, addrTempRegister, address.base); m_assembler.lwc1(dest, addrTempRegister, 0); m_assembler.lwc1(FPRegisterID(dest + 1), addrTempRegister, 4); @@ -1569,7 +1569,7 @@ public: lwc1 dest, 0(addrTemp) lwc1 dest+1, 4(addrTemp) */ - move(ImmPtr(address), addrTempRegister); + move(TrustedImmPtr(address), addrTempRegister); m_assembler.lwc1(dest, addrTempRegister, 0); m_assembler.lwc1(FPRegisterID(dest + 1), addrTempRegister, 4); #else @@ -1577,7 +1577,7 @@ public: li addrTemp, address ldc1 dest, 0(addrTemp) */ - move(ImmPtr(address), addrTempRegister); + move(TrustedImmPtr(address), addrTempRegister); m_assembler.ldc1(dest, addrTempRegister, 0); #endif } @@ -1592,7 +1592,7 @@ public: swc1 dest, 0(addrTemp) swc1 dest+1, 4(addrTemp) */ - move(Imm32(address.offset), addrTempRegister); + move(TrustedImm32(address.offset), addrTempRegister); m_assembler.addu(addrTempRegister, addrTempRegister, address.base); m_assembler.swc1(src, addrTempRegister, 0); m_assembler.swc1(FPRegisterID(src + 1), addrTempRegister, 4); @@ -1779,7 +1779,7 @@ public: { m_assembler.truncwd(fpTempRegister, src); m_assembler.mfc1(dest, fpTempRegister); - return branch32(Equal, dest, Imm32(0x7fffffff)); + return branch32(Equal, dest, TrustedImm32(0x7fffffff)); } // Convert 'src' to an integer, and places the resulting 'dest'. diff --git a/Source/JavaScriptCore/assembler/MacroAssemblerX86.h b/Source/JavaScriptCore/assembler/MacroAssemblerX86.h index 92da5f0..b180e2b 100644 --- a/Source/JavaScriptCore/assembler/MacroAssemblerX86.h +++ b/Source/JavaScriptCore/assembler/MacroAssemblerX86.h @@ -52,32 +52,32 @@ public: using MacroAssemblerX86Common::loadDouble; using MacroAssemblerX86Common::convertInt32ToDouble; - void add32(Imm32 imm, RegisterID src, RegisterID dest) + void add32(TrustedImm32 imm, RegisterID src, RegisterID dest) { m_assembler.leal_mr(imm.m_value, src, dest); } - void add32(Imm32 imm, AbsoluteAddress address) + void add32(TrustedImm32 imm, AbsoluteAddress address) { m_assembler.addl_im(imm.m_value, address.m_ptr); } - void addWithCarry32(Imm32 imm, AbsoluteAddress address) + void addWithCarry32(TrustedImm32 imm, AbsoluteAddress address) { m_assembler.adcl_im(imm.m_value, address.m_ptr); } - void and32(Imm32 imm, AbsoluteAddress address) + void and32(TrustedImm32 imm, AbsoluteAddress address) { m_assembler.andl_im(imm.m_value, address.m_ptr); } - void or32(Imm32 imm, AbsoluteAddress address) + void or32(TrustedImm32 imm, AbsoluteAddress address) { m_assembler.orl_im(imm.m_value, address.m_ptr); } - void sub32(Imm32 imm, AbsoluteAddress address) + void sub32(TrustedImm32 imm, AbsoluteAddress address) { m_assembler.subl_im(imm.m_value, address.m_ptr); } @@ -98,7 +98,7 @@ public: m_assembler.cvtsi2sd_mr(src.m_ptr, dest); } - void store32(Imm32 imm, void* address) + void store32(TrustedImm32 imm, void* address) { m_assembler.movl_i32m(imm.m_value, address); } @@ -114,7 +114,7 @@ public: return Jump(m_assembler.jCC(x86Condition(cond))); } - Jump branch32(Condition cond, AbsoluteAddress left, Imm32 right) + Jump branch32(Condition cond, AbsoluteAddress left, TrustedImm32 right) { m_assembler.cmpl_im(right.m_value, left.m_ptr); return Jump(m_assembler.jCC(x86Condition(cond))); @@ -136,27 +136,27 @@ public: } - DataLabelPtr moveWithPatch(ImmPtr initialValue, RegisterID dest) + DataLabelPtr moveWithPatch(TrustedImmPtr initialValue, RegisterID dest) { m_assembler.movl_i32r(initialValue.asIntptr(), dest); return DataLabelPtr(this); } - Jump branchPtrWithPatch(Condition cond, RegisterID left, DataLabelPtr& dataLabel, ImmPtr initialRightValue = ImmPtr(0)) + Jump branchPtrWithPatch(Condition cond, RegisterID left, DataLabelPtr& dataLabel, TrustedImmPtr initialRightValue = TrustedImmPtr(0)) { m_assembler.cmpl_ir_force32(initialRightValue.asIntptr(), left); dataLabel = DataLabelPtr(this); return Jump(m_assembler.jCC(x86Condition(cond))); } - Jump branchPtrWithPatch(Condition cond, Address left, DataLabelPtr& dataLabel, ImmPtr initialRightValue = ImmPtr(0)) + Jump branchPtrWithPatch(Condition cond, Address left, DataLabelPtr& dataLabel, TrustedImmPtr initialRightValue = TrustedImmPtr(0)) { m_assembler.cmpl_im_force32(initialRightValue.asIntptr(), left.offset, left.base); dataLabel = DataLabelPtr(this); return Jump(m_assembler.jCC(x86Condition(cond))); } - DataLabelPtr storePtrWithPatch(ImmPtr initialValue, ImplicitAddress address) + DataLabelPtr storePtrWithPatch(TrustedImmPtr initialValue, ImplicitAddress address) { m_assembler.movl_i32m(initialValue.asIntptr(), address.offset, address.base); return DataLabelPtr(this); diff --git a/Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h b/Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h index a02074c..f5829dd 100644 --- a/Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h +++ b/Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h @@ -83,7 +83,7 @@ public: // Integer arithmetic operations: // // Operations are typically two operand - operation(source, srcDst) - // For many operations the source may be an Imm32, the srcDst operand + // For many operations the source may be an TrustedImm32, the srcDst operand // may often be a memory location (explictly described using an Address // object). @@ -92,12 +92,12 @@ public: m_assembler.addl_rr(src, dest); } - void add32(Imm32 imm, Address address) + void add32(TrustedImm32 imm, Address address) { m_assembler.addl_im(imm.m_value, address.offset, address.base); } - void add32(Imm32 imm, RegisterID dest) + void add32(TrustedImm32 imm, RegisterID dest) { m_assembler.addl_ir(imm.m_value, dest); } @@ -117,7 +117,7 @@ public: m_assembler.andl_rr(src, dest); } - void and32(Imm32 imm, RegisterID dest) + void and32(TrustedImm32 imm, RegisterID dest) { m_assembler.andl_ir(imm.m_value, dest); } @@ -132,36 +132,64 @@ public: m_assembler.andl_mr(src.offset, src.base, dest); } - void and32(Imm32 imm, Address address) + void and32(TrustedImm32 imm, Address address) { m_assembler.andl_im(imm.m_value, address.offset, address.base); } - void lshift32(Imm32 imm, RegisterID dest) + void and32(RegisterID op1, RegisterID op2, RegisterID dest) { - m_assembler.shll_i8r(imm.m_value, dest); + if (op1 == op2) + zeroExtend32ToPtr(op1, dest); + else if (op1 == dest) + and32(op2, dest); + else { + move(op2, dest); + and32(op1, dest); + } } - + + void and32(TrustedImm32 imm, RegisterID src, RegisterID dest) + { + move(src, dest); + and32(imm, dest); + } + void lshift32(RegisterID shift_amount, RegisterID dest) { - // On x86 we can only shift by ecx; if asked to shift by another register we'll - // need rejig the shift amount into ecx first, and restore the registers afterwards. - if (shift_amount != X86Registers::ecx) { - swap(shift_amount, X86Registers::ecx); + ASSERT(shift_amount != dest); - // E.g. transform "shll %eax, %eax" -> "xchgl %eax, %ecx; shll %ecx, %ecx; xchgl %eax, %ecx" - if (dest == shift_amount) - m_assembler.shll_CLr(X86Registers::ecx); - // E.g. transform "shll %eax, %ecx" -> "xchgl %eax, %ecx; shll %ecx, %eax; xchgl %eax, %ecx" - else if (dest == X86Registers::ecx) - m_assembler.shll_CLr(shift_amount); - // E.g. transform "shll %eax, %ebx" -> "xchgl %eax, %ecx; shll %ecx, %ebx; xchgl %eax, %ecx" - else - m_assembler.shll_CLr(dest); - - swap(shift_amount, X86Registers::ecx); - } else + if (shift_amount == X86Registers::ecx) m_assembler.shll_CLr(dest); + else { + // On x86 we can only shift by ecx; if asked to shift by another register we'll + // need rejig the shift amount into ecx first, and restore the registers afterwards. + // If we dest is ecx, then shift the swapped register! + swap(shift_amount, X86Registers::ecx); + m_assembler.shll_CLr(dest == X86Registers::ecx ? shift_amount : dest); + swap(shift_amount, X86Registers::ecx); + } + } + + void lshift32(RegisterID src, RegisterID shift_amount, RegisterID dest) + { + ASSERT(shift_amount != dest); + + if (src != dest) + move(src, dest); + lshift32(shift_amount, dest); + } + + void lshift32(TrustedImm32 imm, RegisterID dest) + { + m_assembler.shll_i8r(imm.m_value, dest); + } + + void lshift32(RegisterID src, TrustedImm32 imm, RegisterID dest) + { + if (src != dest) + move(src, dest); + lshift32(imm, dest); } void mul32(RegisterID src, RegisterID dest) @@ -174,7 +202,7 @@ public: m_assembler.imull_mr(src.offset, src.base, dest); } - void mul32(Imm32 imm, RegisterID src, RegisterID dest) + void mul32(TrustedImm32 imm, RegisterID src, RegisterID dest) { m_assembler.imull_i32r(src, imm.m_value, dest); } @@ -204,7 +232,7 @@ public: m_assembler.orl_rr(src, dest); } - void or32(Imm32 imm, RegisterID dest) + void or32(TrustedImm32 imm, RegisterID dest) { m_assembler.orl_ir(imm.m_value, dest); } @@ -219,76 +247,114 @@ public: m_assembler.orl_mr(src.offset, src.base, dest); } - void or32(Imm32 imm, Address address) + void or32(TrustedImm32 imm, Address address) { m_assembler.orl_im(imm.m_value, address.offset, address.base); } + void or32(RegisterID op1, RegisterID op2, RegisterID dest) + { + if (op1 == op2) + zeroExtend32ToPtr(op1, dest); + else if (op1 == dest) + or32(op2, dest); + else { + move(op2, dest); + or32(op1, dest); + } + } + + void or32(TrustedImm32 imm, RegisterID src, RegisterID dest) + { + move(src, dest); + or32(imm, dest); + } + void rshift32(RegisterID shift_amount, RegisterID dest) { - // On x86 we can only shift by ecx; if asked to shift by another register we'll - // need rejig the shift amount into ecx first, and restore the registers afterwards. - if (shift_amount != X86Registers::ecx) { - swap(shift_amount, X86Registers::ecx); + ASSERT(shift_amount != dest); - // E.g. transform "shll %eax, %eax" -> "xchgl %eax, %ecx; shll %ecx, %ecx; xchgl %eax, %ecx" - if (dest == shift_amount) - m_assembler.sarl_CLr(X86Registers::ecx); - // E.g. transform "shll %eax, %ecx" -> "xchgl %eax, %ecx; shll %ecx, %eax; xchgl %eax, %ecx" - else if (dest == X86Registers::ecx) - m_assembler.sarl_CLr(shift_amount); - // E.g. transform "shll %eax, %ebx" -> "xchgl %eax, %ecx; shll %ecx, %ebx; xchgl %eax, %ecx" - else - m_assembler.sarl_CLr(dest); - - swap(shift_amount, X86Registers::ecx); - } else + if (shift_amount == X86Registers::ecx) m_assembler.sarl_CLr(dest); + else { + // On x86 we can only shift by ecx; if asked to shift by another register we'll + // need rejig the shift amount into ecx first, and restore the registers afterwards. + // If we dest is ecx, then shift the swapped register! + swap(shift_amount, X86Registers::ecx); + m_assembler.sarl_CLr(dest == X86Registers::ecx ? shift_amount : dest); + swap(shift_amount, X86Registers::ecx); + } + } + + void rshift32(RegisterID src, RegisterID shift_amount, RegisterID dest) + { + ASSERT(shift_amount != dest); + + if (src != dest) + move(src, dest); + rshift32(shift_amount, dest); } - void rshift32(Imm32 imm, RegisterID dest) + void rshift32(TrustedImm32 imm, RegisterID dest) { m_assembler.sarl_i8r(imm.m_value, dest); } + void rshift32(RegisterID src, TrustedImm32 imm, RegisterID dest) + { + if (src != dest) + move(src, dest); + rshift32(imm, dest); + } + void urshift32(RegisterID shift_amount, RegisterID dest) { - // On x86 we can only shift by ecx; if asked to shift by another register we'll - // need rejig the shift amount into ecx first, and restore the registers afterwards. - if (shift_amount != X86Registers::ecx) { + ASSERT(shift_amount != dest); + + if (shift_amount == X86Registers::ecx) + m_assembler.shrl_CLr(dest); + else { + // On x86 we can only shift by ecx; if asked to shift by another register we'll + // need rejig the shift amount into ecx first, and restore the registers afterwards. + // If we dest is ecx, then shift the swapped register! swap(shift_amount, X86Registers::ecx); - - // E.g. transform "shrl %eax, %eax" -> "xchgl %eax, %ecx; shrl %ecx, %ecx; xchgl %eax, %ecx" - if (dest == shift_amount) - m_assembler.shrl_CLr(X86Registers::ecx); - // E.g. transform "shrl %eax, %ecx" -> "xchgl %eax, %ecx; shrl %ecx, %eax; xchgl %eax, %ecx" - else if (dest == X86Registers::ecx) - m_assembler.shrl_CLr(shift_amount); - // E.g. transform "shrl %eax, %ebx" -> "xchgl %eax, %ecx; shrl %ecx, %ebx; xchgl %eax, %ecx" - else - m_assembler.shrl_CLr(dest); - + m_assembler.shrl_CLr(dest == X86Registers::ecx ? shift_amount : dest); swap(shift_amount, X86Registers::ecx); - } else - m_assembler.shrl_CLr(dest); + } } - - void urshift32(Imm32 imm, RegisterID dest) + + void urshift32(RegisterID src, RegisterID shift_amount, RegisterID dest) { - m_assembler.shrl_i8r(imm.m_value, dest); + ASSERT(shift_amount != dest); + + if (src != dest) + move(src, dest); + urshift32(shift_amount, dest); } + void urshift32(TrustedImm32 imm, RegisterID dest) + { + m_assembler.shrl_i8r(imm.m_value, dest); + } + + void urshift32(RegisterID src, TrustedImm32 imm, RegisterID dest) + { + if (src != dest) + move(src, dest); + urshift32(imm, dest); + } + void sub32(RegisterID src, RegisterID dest) { m_assembler.subl_rr(src, dest); } - void sub32(Imm32 imm, RegisterID dest) + void sub32(TrustedImm32 imm, RegisterID dest) { m_assembler.subl_ir(imm.m_value, dest); } - void sub32(Imm32 imm, Address address) + void sub32(TrustedImm32 imm, Address address) { m_assembler.subl_im(imm.m_value, address.offset, address.base); } @@ -309,12 +375,12 @@ public: m_assembler.xorl_rr(src, dest); } - void xor32(Imm32 imm, Address dest) + void xor32(TrustedImm32 imm, Address dest) { m_assembler.xorl_im(imm.m_value, dest.offset, dest.base); } - void xor32(Imm32 imm, RegisterID dest) + void xor32(TrustedImm32 imm, RegisterID dest) { m_assembler.xorl_ir(imm.m_value, dest); } @@ -329,6 +395,24 @@ public: m_assembler.xorl_mr(src.offset, src.base, dest); } + void xor32(RegisterID op1, RegisterID op2, RegisterID dest) + { + if (op1 == op2) + move(TrustedImm32(0), dest); + else if (op1 == dest) + xor32(op2, dest); + else { + move(op2, dest); + xor32(op1, dest); + } + } + + void xor32(TrustedImm32 imm, RegisterID src, RegisterID dest) + { + move(src, dest); + xor32(imm, dest); + } + void sqrtDouble(FPRegisterID src, FPRegisterID dst) { m_assembler.sqrtsd_rr(src, dst); @@ -337,7 +421,7 @@ public: // Memory access operations: // // Loads are of the form load(address, destination) and stores of the form - // store(source, address). The source for a store may be an Imm32. Address + // store(source, address). The source for a store may be an TrustedImm32. Address // operand objects to loads and store will be implicitly constructed if a // register is passed. @@ -388,7 +472,7 @@ public: m_assembler.movl_rm(src, address.offset, address.base, address.index, address.scale); } - void store32(Imm32 imm, ImplicitAddress address) + void store32(TrustedImm32 imm, ImplicitAddress address) { m_assembler.movl_i32m(imm.m_value, address.offset, address.base); } @@ -398,6 +482,13 @@ public: // // Presently only supports SSE, not x87 floating point. + void moveDouble(FPRegisterID src, FPRegisterID dest) + { + ASSERT(isSSE2Present()); + if (src != dest) + m_assembler.movsd_rr(src, dest); + } + void loadDouble(ImplicitAddress address, FPRegisterID dest) { ASSERT(isSSE2Present()); @@ -416,6 +507,17 @@ public: m_assembler.addsd_rr(src, dest); } + void addDouble(FPRegisterID op1, FPRegisterID op2, FPRegisterID dest) + { + ASSERT(isSSE2Present()); + if (op1 == dest) + addDouble(op2, dest); + else { + moveDouble(op2, dest); + addDouble(op1, dest); + } + } + void addDouble(Address src, FPRegisterID dest) { ASSERT(isSSE2Present()); @@ -428,6 +530,15 @@ public: m_assembler.divsd_rr(src, dest); } + void divDouble(FPRegisterID op1, FPRegisterID op2, FPRegisterID dest) + { + // B := A / B is invalid. + ASSERT(op1 == dest || op2 != dest); + + moveDouble(op1, dest); + divDouble(op2, dest); + } + void divDouble(Address src, FPRegisterID dest) { ASSERT(isSSE2Present()); @@ -440,6 +551,15 @@ public: m_assembler.subsd_rr(src, dest); } + void subDouble(FPRegisterID op1, FPRegisterID op2, FPRegisterID dest) + { + // B := A - B is invalid. + ASSERT(op1 == dest || op2 != dest); + + moveDouble(op1, dest); + subDouble(op2, dest); + } + void subDouble(Address src, FPRegisterID dest) { ASSERT(isSSE2Present()); @@ -452,6 +572,17 @@ public: m_assembler.mulsd_rr(src, dest); } + void mulDouble(FPRegisterID op1, FPRegisterID op2, FPRegisterID dest) + { + ASSERT(isSSE2Present()); + if (op1 == dest) + mulDouble(op2, dest); + else { + moveDouble(op2, dest); + mulDouble(op1, dest); + } + } + void mulDouble(Address src, FPRegisterID dest) { ASSERT(isSSE2Present()); @@ -501,11 +632,12 @@ public: // If the result is not representable as a 32 bit value, branch. // May also branch for some values that are representable in 32 bits // (specifically, in this case, INT_MIN). - Jump branchTruncateDoubleToInt32(FPRegisterID src, RegisterID dest) + enum BranchTruncateType { BranchIfTruncateFailed, BranchIfTruncateSuccessful }; + Jump branchTruncateDoubleToInt32(FPRegisterID src, RegisterID dest, BranchTruncateType branchType = BranchIfTruncateFailed) { ASSERT(isSSE2Present()); m_assembler.cvttsd2si_rr(src, dest); - return branch32(Equal, dest, Imm32(0x80000000)); + return branch32(branchType ? NotEqual : Equal, dest, TrustedImm32(0x80000000)); } // Convert 'src' to an integer, and places the resulting 'dest'. @@ -564,7 +696,7 @@ public: m_assembler.push_m(address.offset, address.base); } - void push(Imm32 imm) + void push(TrustedImm32 imm) { m_assembler.push_i32(imm.m_value); } @@ -574,9 +706,9 @@ public: // // Move values in registers. - void move(Imm32 imm, RegisterID dest) + void move(TrustedImm32 imm, RegisterID dest) { - // Note: on 64-bit the Imm32 value is zero extended into the register, it + // Note: on 64-bit the TrustedImm32 value is zero extended into the register, it // may be useful to have a separate version that sign extends the value? if (!imm.m_value) m_assembler.xorl_rr(dest, dest); @@ -593,7 +725,7 @@ public: m_assembler.movq_rr(src, dest); } - void move(ImmPtr imm, RegisterID dest) + void move(TrustedImmPtr imm, RegisterID dest) { m_assembler.movq_i64r(imm.asIntptr(), dest); } @@ -620,7 +752,7 @@ public: m_assembler.movl_rr(src, dest); } - void move(ImmPtr imm, RegisterID dest) + void move(TrustedImmPtr imm, RegisterID dest) { m_assembler.movl_i32r(imm.asIntptr(), dest); } @@ -655,14 +787,14 @@ public: // used (representing the names 'below' and 'above'). // // Operands to the comparision are provided in the expected order, e.g. - // jle32(reg1, Imm32(5)) will branch if the value held in reg1, when + // jle32(reg1, TrustedImm32(5)) will branch if the value held in reg1, when // treated as a signed 32bit value, is less than or equal to 5. // // jz and jnz test whether the first operand is equal to zero, and take // an optional second operand of a mask under which to perform the test. public: - Jump branch8(Condition cond, Address left, Imm32 right) + Jump branch8(Condition cond, Address left, TrustedImm32 right) { m_assembler.cmpb_im(right.m_value, left.offset, left.base); return Jump(m_assembler.jCC(x86Condition(cond))); @@ -674,7 +806,7 @@ public: return Jump(m_assembler.jCC(x86Condition(cond))); } - Jump branch32(Condition cond, RegisterID left, Imm32 right) + Jump branch32(Condition cond, RegisterID left, TrustedImm32 right) { if (((cond == Equal) || (cond == NotEqual)) && !right.m_value) m_assembler.testl_rr(left, left); @@ -695,19 +827,19 @@ public: return Jump(m_assembler.jCC(x86Condition(cond))); } - Jump branch32(Condition cond, Address left, Imm32 right) + Jump branch32(Condition cond, Address left, TrustedImm32 right) { m_assembler.cmpl_im(right.m_value, left.offset, left.base); return Jump(m_assembler.jCC(x86Condition(cond))); } - Jump branch32(Condition cond, BaseIndex left, Imm32 right) + Jump branch32(Condition cond, BaseIndex left, TrustedImm32 right) { m_assembler.cmpl_im(right.m_value, left.offset, left.base, left.index, left.scale); return Jump(m_assembler.jCC(x86Condition(cond))); } - Jump branch32WithUnalignedHalfWords(Condition cond, BaseIndex left, Imm32 right) + Jump branch32WithUnalignedHalfWords(Condition cond, BaseIndex left, TrustedImm32 right) { return branch32(cond, left, right); } @@ -718,7 +850,7 @@ public: return Jump(m_assembler.jCC(x86Condition(cond))); } - Jump branch16(Condition cond, BaseIndex left, Imm32 right) + Jump branch16(Condition cond, BaseIndex left, TrustedImm32 right) { ASSERT(!(right.m_value & 0xFFFF0000)); @@ -728,14 +860,14 @@ public: Jump branchTest32(Condition cond, RegisterID reg, RegisterID mask) { - ASSERT((cond == Zero) || (cond == NonZero)); + ASSERT((cond == Zero) || (cond == NonZero) || (cond == Signed)); m_assembler.testl_rr(reg, mask); return Jump(m_assembler.jCC(x86Condition(cond))); } - Jump branchTest32(Condition cond, RegisterID reg, Imm32 mask = Imm32(-1)) + Jump branchTest32(Condition cond, RegisterID reg, TrustedImm32 mask = TrustedImm32(-1)) { - ASSERT((cond == Zero) || (cond == NonZero)); + ASSERT((cond == Zero) || (cond == NonZero) || (cond == Signed)); // if we are only interested in the low seven bits, this can be tested with a testb if (mask.m_value == -1) m_assembler.testl_rr(reg, reg); @@ -746,9 +878,9 @@ public: return Jump(m_assembler.jCC(x86Condition(cond))); } - Jump branchTest32(Condition cond, Address address, Imm32 mask = Imm32(-1)) + Jump branchTest32(Condition cond, Address address, TrustedImm32 mask = TrustedImm32(-1)) { - ASSERT((cond == Zero) || (cond == NonZero)); + ASSERT((cond == Zero) || (cond == NonZero) || (cond == Signed)); if (mask.m_value == -1) m_assembler.cmpl_im(0, address.offset, address.base); else @@ -756,9 +888,9 @@ public: return Jump(m_assembler.jCC(x86Condition(cond))); } - Jump branchTest32(Condition cond, BaseIndex address, Imm32 mask = Imm32(-1)) + Jump branchTest32(Condition cond, BaseIndex address, TrustedImm32 mask = TrustedImm32(-1)) { - ASSERT((cond == Zero) || (cond == NonZero)); + ASSERT((cond == Zero) || (cond == NonZero) || (cond == Signed)); if (mask.m_value == -1) m_assembler.cmpl_im(0, address.offset, address.base, address.index, address.scale); else @@ -766,9 +898,23 @@ public: return Jump(m_assembler.jCC(x86Condition(cond))); } - Jump branchTest8(Condition cond, Address address, Imm32 mask = Imm32(-1)) + Jump branchTest8(Condition cond, RegisterID reg, TrustedImm32 mask = TrustedImm32(-1)) + { + // Byte in TrustedImm32 is not well defined, so be a little permisive here, but don't accept nonsense values. + ASSERT(mask.m_value >= -128 && mask.m_value <= 255); + ASSERT((cond == Zero) || (cond == NonZero) || (cond == Signed)); + if (mask.m_value == -1) + m_assembler.testb_rr(reg, reg); + else + m_assembler.testb_i8r(mask.m_value, reg); + return Jump(m_assembler.jCC(x86Condition(cond))); + } + + Jump branchTest8(Condition cond, Address address, TrustedImm32 mask = TrustedImm32(-1)) { - ASSERT((cond == Zero) || (cond == NonZero)); + // Byte in TrustedImm32 is not well defined, so be a little permisive here, but don't accept nonsense values. + ASSERT(mask.m_value >= -128 && mask.m_value <= 255); + ASSERT((cond == Zero) || (cond == NonZero) || (cond == Signed)); if (mask.m_value == -1) m_assembler.cmpb_im(0, address.offset, address.base); else @@ -776,9 +922,11 @@ public: return Jump(m_assembler.jCC(x86Condition(cond))); } - Jump branchTest8(Condition cond, BaseIndex address, Imm32 mask = Imm32(-1)) + Jump branchTest8(Condition cond, BaseIndex address, TrustedImm32 mask = TrustedImm32(-1)) { - ASSERT((cond == Zero) || (cond == NonZero)); + // Byte in TrustedImm32 is not well defined, so be a little permisive here, but don't accept nonsense values. + ASSERT(mask.m_value >= -128 && mask.m_value <= 255); + ASSERT((cond == Zero) || (cond == NonZero) || (cond == Signed)); if (mask.m_value == -1) m_assembler.cmpb_im(0, address.offset, address.base, address.index, address.scale); else @@ -820,14 +968,14 @@ public: return Jump(m_assembler.jCC(x86Condition(cond))); } - Jump branchAdd32(Condition cond, Imm32 imm, RegisterID dest) + Jump branchAdd32(Condition cond, TrustedImm32 imm, RegisterID dest) { ASSERT((cond == Overflow) || (cond == Signed) || (cond == Zero) || (cond == NonZero)); add32(imm, dest); return Jump(m_assembler.jCC(x86Condition(cond))); } - Jump branchAdd32(Condition cond, Imm32 src, Address dest) + Jump branchAdd32(Condition cond, TrustedImm32 src, Address dest) { ASSERT((cond == Overflow) || (cond == Zero) || (cond == NonZero)); add32(src, dest); @@ -848,6 +996,20 @@ public: return Jump(m_assembler.jCC(x86Condition(cond))); } + Jump branchAdd32(Condition cond, RegisterID src1, RegisterID src2, RegisterID dest) + { + if (src1 == dest) + return branchAdd32(cond, src2, dest); + move(src2, dest); + return branchAdd32(cond, src1, dest); + } + + Jump branchAdd32(Condition cond, TrustedImm32 imm, RegisterID src, RegisterID dest) + { + move(src, dest); + return branchAdd32(cond, imm, dest); + } + Jump branchMul32(Condition cond, RegisterID src, RegisterID dest) { ASSERT(cond == Overflow); @@ -862,13 +1024,21 @@ public: return Jump(m_assembler.jCC(x86Condition(cond))); } - Jump branchMul32(Condition cond, Imm32 imm, RegisterID src, RegisterID dest) + Jump branchMul32(Condition cond, TrustedImm32 imm, RegisterID src, RegisterID dest) { ASSERT(cond == Overflow); mul32(imm, src, dest); return Jump(m_assembler.jCC(x86Condition(cond))); } + Jump branchMul32(Condition cond, RegisterID src1, RegisterID src2, RegisterID dest) + { + if (src1 == dest) + return branchMul32(cond, src2, dest); + move(src2, dest); + return branchMul32(cond, src1, dest); + } + Jump branchSub32(Condition cond, RegisterID src, RegisterID dest) { ASSERT((cond == Overflow) || (cond == Signed) || (cond == Zero) || (cond == NonZero)); @@ -876,14 +1046,14 @@ public: return Jump(m_assembler.jCC(x86Condition(cond))); } - Jump branchSub32(Condition cond, Imm32 imm, RegisterID dest) + Jump branchSub32(Condition cond, TrustedImm32 imm, RegisterID dest) { ASSERT((cond == Overflow) || (cond == Signed) || (cond == Zero) || (cond == NonZero)); sub32(imm, dest); return Jump(m_assembler.jCC(x86Condition(cond))); } - Jump branchSub32(Condition cond, Imm32 imm, Address dest) + Jump branchSub32(Condition cond, TrustedImm32 imm, Address dest) { ASSERT((cond == Overflow) || (cond == Zero) || (cond == NonZero)); sub32(imm, dest); @@ -904,6 +1074,15 @@ public: return Jump(m_assembler.jCC(x86Condition(cond))); } + Jump branchSub32(Condition cond, RegisterID src1, RegisterID src2, RegisterID dest) + { + // B := A - B is invalid. + ASSERT(src1 == dest || src2 != dest); + + move(src1, dest); + return branchSub32(cond, src2, dest); + } + Jump branchNeg32(Condition cond, RegisterID srcDest) { ASSERT((cond == Overflow) || (cond == Zero) || (cond == NonZero)); @@ -958,7 +1137,7 @@ public: m_assembler.setCC_r(x86Condition(cond), dest); } - void set8Compare32(Condition cond, RegisterID left, Imm32 right, RegisterID dest) + void set8Compare32(Condition cond, RegisterID left, TrustedImm32 right, RegisterID dest) { if (((cond == Equal) || (cond == NotEqual)) && !right.m_value) m_assembler.testl_rr(left, left); @@ -974,7 +1153,7 @@ public: m_assembler.movzbl_rr(dest, dest); } - void set32Compare32(Condition cond, RegisterID left, Imm32 right, RegisterID dest) + void set32Compare32(Condition cond, RegisterID left, TrustedImm32 right, RegisterID dest) { if (((cond == Equal) || (cond == NotEqual)) && !right.m_value) m_assembler.testl_rr(left, left); @@ -989,7 +1168,7 @@ public: // dest-src, operations always have a dest? ... possibly not true, considering // asm ops like test, or pseudo ops like pop(). - void set32Test8(Condition cond, Address address, Imm32 mask, RegisterID dest) + void set32Test8(Condition cond, Address address, TrustedImm32 mask, RegisterID dest) { if (mask.m_value == -1) m_assembler.cmpb_im(0, address.offset, address.base); @@ -999,7 +1178,7 @@ public: m_assembler.movzbl_rr(dest, dest); } - void set32Test32(Condition cond, Address address, Imm32 mask, RegisterID dest) + void set32Test32(Condition cond, Address address, TrustedImm32 mask, RegisterID dest) { if (mask.m_value == -1) m_assembler.cmpl_im(0, address.offset, address.base); diff --git a/Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h b/Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h index ebbe0bd..bd417aa 100644 --- a/Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h +++ b/Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h @@ -48,30 +48,31 @@ public: using MacroAssemblerX86Common::load32; using MacroAssemblerX86Common::store32; using MacroAssemblerX86Common::call; + using MacroAssemblerX86Common::addDouble; using MacroAssemblerX86Common::loadDouble; using MacroAssemblerX86Common::convertInt32ToDouble; - void add32(Imm32 imm, AbsoluteAddress address) + void add32(TrustedImm32 imm, AbsoluteAddress address) { - move(ImmPtr(address.m_ptr), scratchRegister); + move(TrustedImmPtr(address.m_ptr), scratchRegister); add32(imm, Address(scratchRegister)); } - void and32(Imm32 imm, AbsoluteAddress address) + void and32(TrustedImm32 imm, AbsoluteAddress address) { - move(ImmPtr(address.m_ptr), scratchRegister); + move(TrustedImmPtr(address.m_ptr), scratchRegister); and32(imm, Address(scratchRegister)); } - void or32(Imm32 imm, AbsoluteAddress address) + void or32(TrustedImm32 imm, AbsoluteAddress address) { - move(ImmPtr(address.m_ptr), scratchRegister); + move(TrustedImmPtr(address.m_ptr), scratchRegister); or32(imm, Address(scratchRegister)); } - void sub32(Imm32 imm, AbsoluteAddress address) + void sub32(TrustedImm32 imm, AbsoluteAddress address) { - move(ImmPtr(address.m_ptr), scratchRegister); + move(TrustedImmPtr(address.m_ptr), scratchRegister); sub32(imm, Address(scratchRegister)); } @@ -88,17 +89,23 @@ public: void loadDouble(const void* address, FPRegisterID dest) { - move(ImmPtr(address), scratchRegister); + move(TrustedImmPtr(address), scratchRegister); loadDouble(scratchRegister, dest); } - void convertInt32ToDouble(AbsoluteAddress src, FPRegisterID dest) + void addDouble(AbsoluteAddress address, FPRegisterID dest) { - move(Imm32(*static_cast(src.m_ptr)), scratchRegister); + move(TrustedImmPtr(address.m_ptr), scratchRegister); + m_assembler.addsd_mr(0, scratchRegister, dest); + } + + void convertInt32ToDouble(TrustedImm32 imm, FPRegisterID dest) + { + move(imm, scratchRegister); m_assembler.cvtsi2sd_rr(scratchRegister, dest); } - void store32(Imm32 imm, void* address) + void store32(TrustedImm32 imm, void* address) { move(X86Registers::eax, scratchRegister); move(imm, X86Registers::eax); @@ -108,7 +115,7 @@ public: Call call() { - DataLabelPtr label = moveWithPatch(ImmPtr(0), scratchRegister); + DataLabelPtr label = moveWithPatch(TrustedImmPtr(0), scratchRegister); Call result = Call(m_assembler.call(scratchRegister), Call::Linkable); ASSERT(differenceBetween(label, result) == REPTACH_OFFSET_CALL_R11); return result; @@ -116,7 +123,7 @@ public: Call tailRecursiveCall() { - DataLabelPtr label = moveWithPatch(ImmPtr(0), scratchRegister); + DataLabelPtr label = moveWithPatch(TrustedImmPtr(0), scratchRegister); Jump newJump = Jump(m_assembler.jmp_r(scratchRegister)); ASSERT(differenceBetween(label, newJump) == REPTACH_OFFSET_CALL_R11); return Call::fromTailJump(newJump); @@ -125,7 +132,7 @@ public: Call makeTailRecursiveCall(Jump oldJump) { oldJump.link(this); - DataLabelPtr label = moveWithPatch(ImmPtr(0), scratchRegister); + DataLabelPtr label = moveWithPatch(TrustedImmPtr(0), scratchRegister); Jump newJump = Jump(m_assembler.jmp_r(scratchRegister)); ASSERT(differenceBetween(label, newJump) == REPTACH_OFFSET_CALL_R11); return Call::fromTailJump(newJump); @@ -137,30 +144,30 @@ public: m_assembler.addq_rr(src, dest); } - void addPtr(Imm32 imm, RegisterID srcDest) + void addPtr(TrustedImm32 imm, RegisterID srcDest) { m_assembler.addq_ir(imm.m_value, srcDest); } - void addPtr(ImmPtr imm, RegisterID dest) + void addPtr(TrustedImmPtr imm, RegisterID dest) { move(imm, scratchRegister); m_assembler.addq_rr(scratchRegister, dest); } - void addPtr(Imm32 imm, RegisterID src, RegisterID dest) + void addPtr(TrustedImm32 imm, RegisterID src, RegisterID dest) { m_assembler.leaq_mr(imm.m_value, src, dest); } - void addPtr(Imm32 imm, Address address) + void addPtr(TrustedImm32 imm, Address address) { m_assembler.addq_im(imm.m_value, address.offset, address.base); } - void addPtr(Imm32 imm, AbsoluteAddress address) + void addPtr(TrustedImm32 imm, AbsoluteAddress address) { - move(ImmPtr(address.m_ptr), scratchRegister); + move(TrustedImmPtr(address.m_ptr), scratchRegister); addPtr(imm, Address(scratchRegister)); } @@ -169,7 +176,7 @@ public: m_assembler.andq_rr(src, dest); } - void andPtr(Imm32 imm, RegisterID srcDest) + void andPtr(TrustedImm32 imm, RegisterID srcDest) { m_assembler.andq_ir(imm.m_value, srcDest); } @@ -179,13 +186,13 @@ public: m_assembler.orq_rr(src, dest); } - void orPtr(ImmPtr imm, RegisterID dest) + void orPtr(TrustedImmPtr imm, RegisterID dest) { move(imm, scratchRegister); m_assembler.orq_rr(scratchRegister, dest); } - void orPtr(Imm32 imm, RegisterID dest) + void orPtr(TrustedImm32 imm, RegisterID dest) { m_assembler.orq_ir(imm.m_value, dest); } @@ -195,12 +202,12 @@ public: m_assembler.subq_rr(src, dest); } - void subPtr(Imm32 imm, RegisterID dest) + void subPtr(TrustedImm32 imm, RegisterID dest) { m_assembler.subq_ir(imm.m_value, dest); } - void subPtr(ImmPtr imm, RegisterID dest) + void subPtr(TrustedImmPtr imm, RegisterID dest) { move(imm, scratchRegister); m_assembler.subq_rr(scratchRegister, dest); @@ -211,7 +218,7 @@ public: m_assembler.xorq_rr(src, dest); } - void xorPtr(Imm32 imm, RegisterID srcDest) + void xorPtr(TrustedImm32 imm, RegisterID srcDest) { m_assembler.xorq_ir(imm.m_value, srcDest); } @@ -227,7 +234,7 @@ public: m_assembler.movq_mr(address.offset, address.base, address.index, address.scale, dest); } - void loadPtr(void* address, RegisterID dest) + void loadPtr(const void* address, RegisterID dest) { if (dest == X86Registers::eax) m_assembler.movq_mEAX(address); @@ -265,7 +272,7 @@ public: } } - void storePtr(ImmPtr imm, ImplicitAddress address) + void storePtr(TrustedImmPtr imm, ImplicitAddress address) { move(imm, scratchRegister); storePtr(scratchRegister, address); @@ -287,7 +294,7 @@ public: m_assembler.movq_rr(src, dest); } - void setPtr(Condition cond, RegisterID left, Imm32 right, RegisterID dest) + void setPtr(Condition cond, RegisterID left, TrustedImm32 right, RegisterID dest) { if (((cond == Equal) || (cond == NotEqual)) && !right.m_value) m_assembler.testq_rr(left, left); @@ -303,7 +310,7 @@ public: return Jump(m_assembler.jCC(x86Condition(cond))); } - Jump branchPtr(Condition cond, RegisterID left, ImmPtr right) + Jump branchPtr(Condition cond, RegisterID left, TrustedImmPtr right) { move(right, scratchRegister); return branchPtr(cond, left, scratchRegister); @@ -317,7 +324,7 @@ public: Jump branchPtr(Condition cond, AbsoluteAddress left, RegisterID right) { - move(ImmPtr(left.m_ptr), scratchRegister); + move(TrustedImmPtr(left.m_ptr), scratchRegister); return branchPtr(cond, Address(scratchRegister), right); } @@ -327,7 +334,7 @@ public: return Jump(m_assembler.jCC(x86Condition(cond))); } - Jump branchPtr(Condition cond, Address left, ImmPtr right) + Jump branchPtr(Condition cond, Address left, TrustedImmPtr right) { move(right, scratchRegister); return branchPtr(cond, left, scratchRegister); @@ -339,7 +346,7 @@ public: return Jump(m_assembler.jCC(x86Condition(cond))); } - Jump branchTestPtr(Condition cond, RegisterID reg, Imm32 mask = Imm32(-1)) + Jump branchTestPtr(Condition cond, RegisterID reg, TrustedImm32 mask = TrustedImm32(-1)) { // if we are only interested in the low seven bits, this can be tested with a testb if (mask.m_value == -1) @@ -351,7 +358,13 @@ public: return Jump(m_assembler.jCC(x86Condition(cond))); } - Jump branchTestPtr(Condition cond, Address address, Imm32 mask = Imm32(-1)) + Jump branchTestPtr(Condition cond, AbsoluteAddress address, TrustedImm32 mask = TrustedImm32(-1)) + { + loadPtr(address.m_ptr, scratchRegister); + return branchTestPtr(cond, scratchRegister, mask); + } + + Jump branchTestPtr(Condition cond, Address address, TrustedImm32 mask = TrustedImm32(-1)) { if (mask.m_value == -1) m_assembler.cmpq_im(0, address.offset, address.base); @@ -360,7 +373,7 @@ public: return Jump(m_assembler.jCC(x86Condition(cond))); } - Jump branchTestPtr(Condition cond, BaseIndex address, Imm32 mask = Imm32(-1)) + Jump branchTestPtr(Condition cond, BaseIndex address, TrustedImm32 mask = TrustedImm32(-1)) { if (mask.m_value == -1) m_assembler.cmpq_im(0, address.offset, address.base, address.index, address.scale); @@ -377,32 +390,32 @@ public: return Jump(m_assembler.jCC(x86Condition(cond))); } - Jump branchSubPtr(Condition cond, Imm32 imm, RegisterID dest) + Jump branchSubPtr(Condition cond, TrustedImm32 imm, RegisterID dest) { ASSERT((cond == Overflow) || (cond == Zero) || (cond == NonZero)); subPtr(imm, dest); return Jump(m_assembler.jCC(x86Condition(cond))); } - DataLabelPtr moveWithPatch(ImmPtr initialValue, RegisterID dest) + DataLabelPtr moveWithPatch(TrustedImmPtr initialValue, RegisterID dest) { m_assembler.movq_i64r(initialValue.asIntptr(), dest); return DataLabelPtr(this); } - Jump branchPtrWithPatch(Condition cond, RegisterID left, DataLabelPtr& dataLabel, ImmPtr initialRightValue = ImmPtr(0)) + Jump branchPtrWithPatch(Condition cond, RegisterID left, DataLabelPtr& dataLabel, TrustedImmPtr initialRightValue = TrustedImmPtr(0)) { dataLabel = moveWithPatch(initialRightValue, scratchRegister); return branchPtr(cond, left, scratchRegister); } - Jump branchPtrWithPatch(Condition cond, Address left, DataLabelPtr& dataLabel, ImmPtr initialRightValue = ImmPtr(0)) + Jump branchPtrWithPatch(Condition cond, Address left, DataLabelPtr& dataLabel, TrustedImmPtr initialRightValue = TrustedImmPtr(0)) { dataLabel = moveWithPatch(initialRightValue, scratchRegister); return branchPtr(cond, left, scratchRegister); } - DataLabelPtr storePtrWithPatch(ImmPtr initialValue, ImplicitAddress address) + DataLabelPtr storePtrWithPatch(TrustedImmPtr initialValue, ImplicitAddress address) { DataLabelPtr label = moveWithPatch(initialValue, scratchRegister); storePtr(scratchRegister, address); @@ -410,9 +423,9 @@ public: } using MacroAssemblerX86Common::branchTest8; - Jump branchTest8(Condition cond, ExtendedAddress address, Imm32 mask = Imm32(-1)) + Jump branchTest8(Condition cond, ExtendedAddress address, TrustedImm32 mask = TrustedImm32(-1)) { - ImmPtr addr(reinterpret_cast(address.offset)); + TrustedImmPtr addr(reinterpret_cast(address.offset)); MacroAssemblerX86Common::move(addr, scratchRegister); return MacroAssemblerX86Common::branchTest8(cond, BaseIndex(scratchRegister, address.base, TimesOne), mask); } diff --git a/Source/JavaScriptCore/assembler/X86Assembler.h b/Source/JavaScriptCore/assembler/X86Assembler.h index 587d900..4851c1e 100644 --- a/Source/JavaScriptCore/assembler/X86Assembler.h +++ b/Source/JavaScriptCore/assembler/X86Assembler.h @@ -131,6 +131,7 @@ private: OP_GROUP1_EbIb = 0x80, OP_GROUP1_EvIz = 0x81, OP_GROUP1_EvIb = 0x83, + OP_TEST_EbGb = 0x84, OP_TEST_EvGv = 0x85, OP_XCHG_EvGv = 0x87, OP_MOV_EvGv = 0x89, @@ -228,6 +229,8 @@ public: { } + bool isSet() const { return (m_offset != -1); } + private: JmpSrc(int offset) : m_offset(offset) @@ -299,7 +302,7 @@ public: // Arithmetic operations: #if !CPU(X86_64) - void adcl_im(int imm, void* addr) + void adcl_im(int imm, const void* addr) { if (CAN_SIGN_EXTEND_8_32(imm)) { m_formatter.oneByteOp(OP_GROUP1_EvIb, GROUP1_OP_ADC, addr); @@ -376,7 +379,7 @@ public: } } #else - void addl_im(int imm, void* addr) + void addl_im(int imm, const void* addr) { if (CAN_SIGN_EXTEND_8_32(imm)) { m_formatter.oneByteOp(OP_GROUP1_EvIb, GROUP1_OP_ADD, addr); @@ -442,7 +445,7 @@ public: } } #else - void andl_im(int imm, void* addr) + void andl_im(int imm, const void* addr) { if (CAN_SIGN_EXTEND_8_32(imm)) { m_formatter.oneByteOp(OP_GROUP1_EvIb, GROUP1_OP_AND, addr); @@ -528,7 +531,7 @@ public: } } #else - void orl_im(int imm, void* addr) + void orl_im(int imm, const void* addr) { if (CAN_SIGN_EXTEND_8_32(imm)) { m_formatter.oneByteOp(OP_GROUP1_EvIb, GROUP1_OP_OR, addr); @@ -594,7 +597,7 @@ public: } } #else - void subl_im(int imm, void* addr) + void subl_im(int imm, const void* addr) { if (CAN_SIGN_EXTEND_8_32(imm)) { m_formatter.oneByteOp(OP_GROUP1_EvIb, GROUP1_OP_SUB, addr); @@ -867,12 +870,12 @@ public: } } #else - void cmpl_rm(RegisterID reg, void* addr) + void cmpl_rm(RegisterID reg, const void* addr) { m_formatter.oneByteOp(OP_CMP_EvGv, reg, addr); } - void cmpl_im(int imm, void* addr) + void cmpl_im(int imm, const void* addr) { if (CAN_SIGN_EXTEND_8_32(imm)) { m_formatter.oneByteOp(OP_GROUP1_EvIb, GROUP1_OP_CMP, addr); @@ -919,7 +922,12 @@ public: m_formatter.oneByteOp(OP_GROUP3_EvIz, GROUP3_OP_TEST, base, offset); m_formatter.immediate32(imm); } - + + void testb_rr(RegisterID src, RegisterID dst) + { + m_formatter.oneByteOp(OP_TEST_EbGb, src, dst); + } + void testb_im(int imm, int offset, RegisterID base) { m_formatter.oneByteOp(OP_GROUP3_EbIb, GROUP3_OP_TEST, base, offset); @@ -1039,7 +1047,7 @@ public: m_formatter.oneByteOp(OP_MOV_EvGv, src, base, index, scale, offset); } - void movl_mEAX(void* addr) + void movl_mEAX(const void* addr) { m_formatter.oneByteOp(OP_MOV_EAXOv); #if CPU(X86_64) @@ -1076,7 +1084,7 @@ public: m_formatter.immediate32(imm); } - void movl_EAXm(void* addr) + void movl_EAXm(const void* addr) { m_formatter.oneByteOp(OP_MOV_OvEAX); #if CPU(X86_64) @@ -1107,13 +1115,13 @@ public: m_formatter.oneByteOp64(OP_MOV_EvGv, src, base, index, scale, offset); } - void movq_mEAX(void* addr) + void movq_mEAX(const void* addr) { m_formatter.oneByteOp64(OP_MOV_EAXOv); m_formatter.immediate64(reinterpret_cast(addr)); } - void movq_EAXm(void* addr) + void movq_EAXm(const void* addr) { m_formatter.oneByteOp64(OP_MOV_OvEAX); m_formatter.immediate64(reinterpret_cast(addr)); @@ -1153,7 +1161,7 @@ public: #else - void movl_rm(RegisterID src, void* addr) + void movl_rm(RegisterID src, const void* addr) { if (src == X86Registers::eax) movl_EAXm(addr); @@ -1161,7 +1169,7 @@ public: m_formatter.oneByteOp(OP_MOV_EvGv, src, addr); } - void movl_mr(void* addr, RegisterID dst) + void movl_mr(const void* addr, RegisterID dst) { if (dst == X86Registers::eax) movl_mEAX(addr); @@ -1169,7 +1177,7 @@ public: m_formatter.oneByteOp(OP_MOV_GvEv, dst, addr); } - void movl_i32m(int imm, void* addr) + void movl_i32m(int imm, const void* addr) { m_formatter.oneByteOp(OP_GROUP11_EvIz, GROUP11_MOV, addr); m_formatter.immediate32(imm); @@ -1365,7 +1373,7 @@ public: } #if !CPU(X86_64) - void cvtsi2sd_mr(void* address, XMMRegisterID dst) + void cvtsi2sd_mr(const void* address, XMMRegisterID dst) { m_formatter.prefix(PRE_SSE_F2); m_formatter.twoByteOp(OP2_CVTSI2SD_VsdEd, (RegisterID)dst, address); @@ -1398,6 +1406,12 @@ public: } #endif + void movsd_rr(XMMRegisterID src, XMMRegisterID dst) + { + m_formatter.prefix(PRE_SSE_F2); + m_formatter.twoByteOp(OP2_MOVSD_VsdWsd, (RegisterID)dst, (RegisterID)src); + } + void movsd_rm(XMMRegisterID src, int offset, RegisterID base) { m_formatter.prefix(PRE_SSE_F2); @@ -1536,6 +1550,7 @@ public: ASSERT(to.m_offset != -1); char* code = reinterpret_cast(m_formatter.data()); + ASSERT(!reinterpret_cast(code + from.m_offset)[-1]); setRel32(code + from.m_offset, code + to.m_offset); } @@ -1717,7 +1732,7 @@ private: } #if !CPU(X86_64) - void oneByteOp(OneByteOpcodeID opcode, int reg, void* address) + void oneByteOp(OneByteOpcodeID opcode, int reg, const void* address) { m_buffer.ensureSpace(maxInstructionSize); m_buffer.putByteUnchecked(opcode); diff --git a/Source/JavaScriptCore/bytecode/CodeBlock.cpp b/Source/JavaScriptCore/bytecode/CodeBlock.cpp index 2d235df..98bbb3c 100644 --- a/Source/JavaScriptCore/bytecode/CodeBlock.cpp +++ b/Source/JavaScriptCore/bytecode/CodeBlock.cpp @@ -364,7 +364,7 @@ void CodeBlock::dump(ExecState* exec) const unsigned registerIndex = m_numVars; size_t i = 0; do { - printf(" k%u = %s\n", registerIndex, valueToSourceString(exec, m_constantRegisters[i].jsValue()).utf8().data()); + printf(" k%u = %s\n", registerIndex, valueToSourceString(exec, m_constantRegisters[i].get()).utf8().data()); ++i; ++registerIndex; } while (i < m_constantRegisters.size()); @@ -731,7 +731,7 @@ void CodeBlock::dump(ExecState* exec, const Vector::const_iterator& case op_resolve_global_dynamic: { int r0 = (++it)->u.operand; int id0 = (++it)->u.operand; - JSValue scope = JSValue((++it)->u.jsCell); + JSValue scope = JSValue((++it)->u.jsCell.get()); ++it; int depth = (++it)->u.operand; printf("[%4d] resolve_global_dynamic\t %s, %s, %s, %d\n", location, registerName(exec, r0).data(), valueToSourceString(exec, scope).utf8().data(), idName(id0, m_identifiers[id0]).data(), depth); @@ -1360,13 +1360,13 @@ void CodeBlock::dumpStatistics() } CodeBlock::CodeBlock(ScriptExecutable* ownerExecutable, CodeType codeType, JSGlobalObject *globalObject, PassRefPtr sourceProvider, unsigned sourceOffset, SymbolTable* symTab, bool isConstructor) - : m_globalObject(globalObject) + : m_globalObject(globalObject->globalData(), ownerExecutable, globalObject) , m_heap(&m_globalObject->globalData().heap) , m_numCalleeRegisters(0) , m_numVars(0) , m_numParameters(0) , m_isConstructor(isConstructor) - , m_ownerExecutable(ownerExecutable) + , m_ownerExecutable(globalObject->globalData(), ownerExecutable, ownerExecutable) , m_globalData(0) #ifndef NDEBUG , m_instructionCount(0) @@ -1406,12 +1406,6 @@ CodeBlock::~CodeBlock() for (size_t size = m_structureStubInfos.size(), i = 0; i < size; ++i) m_structureStubInfos[i].deref(); - for (size_t size = m_callLinkInfos.size(), i = 0; i < size; ++i) { - CallLinkInfo* callLinkInfo = &m_callLinkInfos[i]; - if (callLinkInfo->isLinked()) - callLinkInfo->callee->removeCaller(callLinkInfo); - } - for (size_t size = m_methodCallLinkInfos.size(), i = 0; i < size; ++i) { if (Structure* structure = m_methodCallLinkInfos[i].cachedStructure) { structure->deref(); @@ -1421,10 +1415,6 @@ CodeBlock::~CodeBlock() } } -#if ENABLE(JIT_OPTIMIZE_CALL) - unlinkCallers(); -#endif - #endif // ENABLE(JIT) #if DUMP_CODE_BLOCK_STATISTICS @@ -1432,19 +1422,6 @@ CodeBlock::~CodeBlock() #endif } -#if ENABLE(JIT_OPTIMIZE_CALL) -void CodeBlock::unlinkCallers() -{ - size_t size = m_linkedCallerList.size(); - for (size_t i = 0; i < size; ++i) { - CallLinkInfo* currentCaller = m_linkedCallerList[i]; - JIT::unlinkCallOrConstruct(currentCaller); - currentCaller->setUnlinked(); - } - m_linkedCallerList.clear(); -} -#endif - void CodeBlock::derefStructures(Instruction* vPC) const { Interpreter* interpreter = m_globalData->interpreter; @@ -1460,13 +1437,11 @@ void CodeBlock::derefStructures(Instruction* vPC) const } if (vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_chain) || vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_getter_chain) || vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_custom_chain)) { vPC[4].u.structure->deref(); - vPC[5].u.structureChain->deref(); return; } if (vPC[0].u.opcode == interpreter->getOpcode(op_put_by_id_transition)) { vPC[4].u.structure->deref(); vPC[5].u.structure->deref(); - vPC[6].u.structureChain->deref(); return; } if (vPC[0].u.opcode == interpreter->getOpcode(op_put_by_id_replace)) { @@ -1509,13 +1484,11 @@ void CodeBlock::refStructures(Instruction* vPC) const } if (vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_chain) || vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_getter_chain) || vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_custom_chain)) { vPC[4].u.structure->ref(); - vPC[5].u.structureChain->ref(); return; } if (vPC[0].u.opcode == interpreter->getOpcode(op_put_by_id_transition)) { vPC[4].u.structure->ref(); vPC[5].u.structure->ref(); - vPC[6].u.structureChain->ref(); return; } if (vPC[0].u.opcode == interpreter->getOpcode(op_put_by_id_replace)) { @@ -1527,14 +1500,43 @@ void CodeBlock::refStructures(Instruction* vPC) const ASSERT(vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id) || vPC[0].u.opcode == interpreter->getOpcode(op_put_by_id) || vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_generic) || vPC[0].u.opcode == interpreter->getOpcode(op_put_by_id_generic)); } +void EvalCodeCache::markAggregate(MarkStack& markStack) +{ + EvalCacheMap::iterator end = m_cacheMap.end(); + for (EvalCacheMap::iterator ptr = m_cacheMap.begin(); ptr != end; ++ptr) + markStack.append(&ptr->second); +} + void CodeBlock::markAggregate(MarkStack& markStack) { - for (size_t i = 0; i < m_constantRegisters.size(); ++i) - markStack.deprecatedAppend(&m_constantRegisters[i]); + markStack.append(&m_globalObject); + markStack.append(&m_ownerExecutable); + if (m_rareData) + m_rareData->m_evalCodeCache.markAggregate(markStack); + markStack.appendValues(m_constantRegisters.data(), m_constantRegisters.size()); for (size_t i = 0; i < m_functionExprs.size(); ++i) - m_functionExprs[i]->markAggregate(markStack); + markStack.append(&m_functionExprs[i]); for (size_t i = 0; i < m_functionDecls.size(); ++i) - m_functionDecls[i]->markAggregate(markStack); + markStack.append(&m_functionDecls[i]); +#if ENABLE(JIT_OPTIMIZE_CALL) + for (unsigned i = 0; i < numberOfCallLinkInfos(); ++i) + if (callLinkInfo(i).isLinked()) + markStack.append(&callLinkInfo(i).callee); +#endif +#if ENABLE(INTERPRETER) + Interpreter* interpreter = m_globalData->interpreter; + for (size_t size = m_propertyAccessInstructions.size(), i = 0; i < size; ++i) { + Instruction* vPC = &m_instructions[m_propertyAccessInstructions[i]]; + if (vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_chain) || vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_getter_chain) || vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_custom_chain)) + markStack.append(&vPC[5].u.structureChain); + else if (vPC[0].u.opcode == interpreter->getOpcode(op_put_by_id_transition)) + markStack.append(&vPC[6].u.structureChain); + } +#endif +#if ENABLE(JIT) + for (size_t size = m_structureStubInfos.size(), i = 0; i < size; ++i) + m_structureStubInfos[i].markAggregate(markStack); +#endif } HandlerInfo* CodeBlock::handlerForBytecodeOffset(unsigned bytecodeOffset) @@ -1671,7 +1673,6 @@ void CodeBlock::shrinkToFit() m_structureStubInfos.shrinkToFit(); m_globalResolveInfos.shrinkToFit(); m_callLinkInfos.shrinkToFit(); - m_linkedCallerList.shrinkToFit(); #endif m_identifiers.shrinkToFit(); diff --git a/Source/JavaScriptCore/bytecode/CodeBlock.h b/Source/JavaScriptCore/bytecode/CodeBlock.h index bef4561..25e65f4 100644 --- a/Source/JavaScriptCore/bytecode/CodeBlock.h +++ b/Source/JavaScriptCore/bytecode/CodeBlock.h @@ -96,21 +96,17 @@ namespace JSC { #if ENABLE(JIT) struct CallLinkInfo { CallLinkInfo() - : callee(0) - , position(0) - , hasSeenShouldRepatch(0) + : hasSeenShouldRepatch(false) { } CodeLocationNearCall callReturnLocation; CodeLocationDataLabelPtr hotPathBegin; CodeLocationNearCall hotPathOther; - CodeBlock* ownerCodeBlock; - CodeBlock* callee; - unsigned position : 31; - unsigned hasSeenShouldRepatch : 1; + WriteBarrier callee; + bool hasSeenShouldRepatch; - void setUnlinked() { callee = 0; } + void setUnlinked() { callee.clear(); } bool isLinked() { return callee; } bool seenOnce() @@ -183,7 +179,7 @@ namespace JSC { unsigned bytecodeOffset; }; - // valueAtPosition helpers for the binaryChop algorithm below. + // valueAtPosition helpers for the binarySearch algorithm. inline void* getStructureStubInfoReturnLocation(StructureStubInfo* structureStubInfo) { @@ -204,42 +200,6 @@ namespace JSC { { return pc->callReturnOffset; } - - // Binary chop algorithm, calls valueAtPosition on pre-sorted elements in array, - // compares result with key (KeyTypes should be comparable with '--', '<', '>'). - // Optimized for cases where the array contains the key, checked by assertions. - template - inline ArrayType* binaryChop(ArrayType* array, size_t size, KeyType key) - { - // The array must contain at least one element (pre-condition, array does conatin key). - // If the array only contains one element, no need to do the comparison. - while (size > 1) { - // Pick an element to check, half way through the array, and read the value. - int pos = (size - 1) >> 1; - KeyType val = valueAtPosition(&array[pos]); - - // If the key matches, success! - if (val == key) - return &array[pos]; - // The item we are looking for is smaller than the item being check; reduce the value of 'size', - // chopping off the right hand half of the array. - else if (key < val) - size = pos; - // Discard all values in the left hand half of the array, up to and including the item at pos. - else { - size -= (pos + 1); - array += (pos + 1); - } - - // 'size' should never reach zero. - ASSERT(size); - } - - // If we reach this point we've chopped down to one element, no need to check it matches - ASSERT(size == 1); - ASSERT(key == valueAtPosition(&array[0])); - return &array[0]; - } #endif class CodeBlock { @@ -248,7 +208,7 @@ namespace JSC { protected: CodeBlock(ScriptExecutable* ownerExecutable, CodeType, JSGlobalObject*, PassRefPtr, unsigned sourceOffset, SymbolTable* symbolTable, bool isConstructor); - DeprecatedPtr m_globalObject; + WriteBarrier m_globalObject; Heap* m_heap; public: @@ -257,9 +217,6 @@ namespace JSC { void markAggregate(MarkStack&); void refStructures(Instruction* vPC) const; void derefStructures(Instruction* vPC) const; -#if ENABLE(JIT_OPTIMIZE_CALL) - void unlinkCallers(); -#endif static void dumpStatistics(); @@ -292,38 +249,20 @@ namespace JSC { void expressionRangeForBytecodeOffset(unsigned bytecodeOffset, int& divot, int& startOffset, int& endOffset); #if ENABLE(JIT) - void addCaller(CallLinkInfo* caller) - { - caller->callee = this; - caller->position = m_linkedCallerList.size(); - m_linkedCallerList.append(caller); - } - - void removeCaller(CallLinkInfo* caller) - { - unsigned pos = caller->position; - unsigned lastPos = m_linkedCallerList.size() - 1; - - if (pos != lastPos) { - m_linkedCallerList[pos] = m_linkedCallerList[lastPos]; - m_linkedCallerList[pos]->position = pos; - } - m_linkedCallerList.shrink(lastPos); - } StructureStubInfo& getStubInfo(ReturnAddressPtr returnAddress) { - return *(binaryChop(m_structureStubInfos.begin(), m_structureStubInfos.size(), returnAddress.value())); + return *(binarySearch(m_structureStubInfos.begin(), m_structureStubInfos.size(), returnAddress.value())); } CallLinkInfo& getCallLinkInfo(ReturnAddressPtr returnAddress) { - return *(binaryChop(m_callLinkInfos.begin(), m_callLinkInfos.size(), returnAddress.value())); + return *(binarySearch(m_callLinkInfos.begin(), m_callLinkInfos.size(), returnAddress.value())); } MethodCallLinkInfo& getMethodCallLinkInfo(ReturnAddressPtr returnAddress) { - return *(binaryChop(m_methodCallLinkInfos.begin(), m_methodCallLinkInfos.size(), returnAddress.value())); + return *(binarySearch(m_methodCallLinkInfos.begin(), m_methodCallLinkInfos.size(), returnAddress.value())); } unsigned bytecodeOffset(ReturnAddressPtr returnAddress) @@ -333,7 +272,7 @@ namespace JSC { Vector& callIndices = m_rareData->m_callReturnIndexVector; if (!callIndices.size()) return 1; - return binaryChop(callIndices.begin(), callIndices.size(), getJITCode().offsetOf(returnAddress.value()))->bytecodeOffset; + return binarySearch(callIndices.begin(), callIndices.size(), getJITCode().offsetOf(returnAddress.value()))->bytecodeOffset; } #endif #if ENABLE(INTERPRETER) @@ -359,7 +298,7 @@ namespace JSC { ExecutablePool* executablePool() { return getJITCode().getExecutablePool(); } #endif - ScriptExecutable* ownerExecutable() const { return m_ownerExecutable; } + ScriptExecutable* ownerExecutable() const { return m_ownerExecutable.get(); } void setGlobalData(JSGlobalData* globalData) { m_globalData = globalData; } @@ -451,6 +390,8 @@ namespace JSC { bool hasExpressionInfo() { return m_rareData && m_rareData->m_expressionInfo.size(); } bool hasLineInfo() { return m_rareData && m_rareData->m_lineInfo.size(); } + // We only generate exception handling info if the user is debugging + // (and may want line number info), or if the function contains exception handler. bool needsCallReturnIndices() { return m_rareData && @@ -472,18 +413,34 @@ namespace JSC { Identifier& identifier(int index) { return m_identifiers[index]; } size_t numberOfConstantRegisters() const { return m_constantRegisters.size(); } - void addConstantRegister(const Register& r) { return m_constantRegisters.append(r); } - Register& constantRegister(int index) { return m_constantRegisters[index - FirstConstantRegisterIndex]; } + void addConstant(JSValue v) + { + m_constantRegisters.append(WriteBarrier()); + m_constantRegisters.last().set(m_globalObject->globalData(), m_ownerExecutable.get(), v); + } + WriteBarrier& constantRegister(int index) { return m_constantRegisters[index - FirstConstantRegisterIndex]; } ALWAYS_INLINE bool isConstantRegisterIndex(int index) const { return index >= FirstConstantRegisterIndex; } - ALWAYS_INLINE JSValue getConstant(int index) const { return m_constantRegisters[index - FirstConstantRegisterIndex].jsValue(); } + ALWAYS_INLINE JSValue getConstant(int index) const { return m_constantRegisters[index - FirstConstantRegisterIndex].get(); } - unsigned addFunctionDecl(NonNullPassRefPtr n) { unsigned size = m_functionDecls.size(); m_functionDecls.append(n); return size; } + unsigned addFunctionDecl(FunctionExecutable* n) + { + unsigned size = m_functionDecls.size(); + m_functionDecls.append(WriteBarrier()); + m_functionDecls.last().set(m_globalObject->globalData(), m_ownerExecutable.get(), n); + return size; + } FunctionExecutable* functionDecl(int index) { return m_functionDecls[index].get(); } int numberOfFunctionDecls() { return m_functionDecls.size(); } - unsigned addFunctionExpr(NonNullPassRefPtr n) { unsigned size = m_functionExprs.size(); m_functionExprs.append(n); return size; } + unsigned addFunctionExpr(FunctionExecutable* n) + { + unsigned size = m_functionExprs.size(); + m_functionExprs.append(WriteBarrier()); + m_functionExprs.last().set(m_globalObject->globalData(), m_ownerExecutable.get(), n); + return size; + } FunctionExecutable* functionExpr(int index) { return m_functionExprs[index].get(); } - unsigned addRegExp(RegExp* r) { createRareDataIfNecessary(); unsigned size = m_rareData->m_regexps.size(); m_rareData->m_regexps.append(r); return size; } + unsigned addRegExp(PassRefPtr r) { createRareDataIfNecessary(); unsigned size = m_rareData->m_regexps.size(); m_rareData->m_regexps.append(r); return size; } RegExp* regexp(int index) const { ASSERT(m_rareData); return m_rareData->m_regexps[index].get(); } JSGlobalObject* globalObject() { return m_globalObject.get(); } @@ -536,7 +493,7 @@ namespace JSC { m_rareData = adoptPtr(new RareData); } - ScriptExecutable* m_ownerExecutable; + WriteBarrier m_ownerExecutable; JSGlobalData* m_globalData; Vector m_instructions; @@ -567,16 +524,16 @@ namespace JSC { Vector m_globalResolveInfos; Vector m_callLinkInfos; Vector m_methodCallLinkInfos; - Vector m_linkedCallerList; #endif Vector m_jumpTargets; // Constant Pool Vector m_identifiers; - Vector m_constantRegisters; - Vector > m_functionDecls; - Vector > m_functionExprs; + COMPILE_ASSERT(sizeof(Register) == sizeof(WriteBarrier), Register_must_be_same_size_as_WriteBarrier_Unknown); + Vector > m_constantRegisters; + Vector > m_functionDecls; + Vector > m_functionExprs; SymbolTable* m_symbolTable; @@ -617,12 +574,6 @@ namespace JSC { GlobalCodeBlock(ScriptExecutable* ownerExecutable, CodeType codeType, JSGlobalObject* globalObject, PassRefPtr sourceProvider, unsigned sourceOffset) : CodeBlock(ownerExecutable, codeType, globalObject, sourceProvider, sourceOffset, &m_unsharedSymbolTable, false) { - m_heap->codeBlocks().add(this); - } - - ~GlobalCodeBlock() - { - m_heap->codeBlocks().remove(this); } private: @@ -680,7 +631,7 @@ namespace JSC { { CodeBlock* codeBlock = this->codeBlock(); if (codeBlock->isConstantRegisterIndex(index)) - return codeBlock->constantRegister(index); + return *reinterpret_cast(&codeBlock->constantRegister(index)); return this[index]; } diff --git a/Source/JavaScriptCore/bytecode/EvalCodeCache.h b/Source/JavaScriptCore/bytecode/EvalCodeCache.h index edd575f..3e450b1 100644 --- a/Source/JavaScriptCore/bytecode/EvalCodeCache.h +++ b/Source/JavaScriptCore/bytecode/EvalCodeCache.h @@ -41,14 +41,16 @@ namespace JSC { + class MarkStack; + class EvalCodeCache { public: - PassRefPtr get(ExecState* exec, bool inStrictContext, const UString& evalSource, ScopeChainNode* scopeChain, JSValue& exceptionValue) + EvalExecutable* get(ExecState* exec, ScriptExecutable* owner, bool inStrictContext, const UString& evalSource, ScopeChainNode* scopeChain, JSValue& exceptionValue) { - RefPtr evalExecutable; + EvalExecutable* evalExecutable = 0; if (!inStrictContext && evalSource.length() < maxCacheableSourceLength && (*scopeChain->begin())->isVariableObject()) - evalExecutable = m_cacheMap.get(evalSource.impl()); + evalExecutable = m_cacheMap.get(evalSource.impl()).get(); if (!evalExecutable) { evalExecutable = EvalExecutable::create(exec, makeSource(evalSource), inStrictContext); @@ -57,19 +59,21 @@ namespace JSC { return 0; if (!inStrictContext && evalSource.length() < maxCacheableSourceLength && (*scopeChain->begin())->isVariableObject() && m_cacheMap.size() < maxCacheEntries) - m_cacheMap.set(evalSource.impl(), evalExecutable); + m_cacheMap.set(evalSource.impl(), WriteBarrier(exec->globalData(), owner, evalExecutable)); } - return evalExecutable.release(); + return evalExecutable; } bool isEmpty() const { return m_cacheMap.isEmpty(); } + void markAggregate(MarkStack&); + private: static const unsigned maxCacheableSourceLength = 256; static const int maxCacheEntries = 64; - typedef HashMap, RefPtr > EvalCacheMap; + typedef HashMap, WriteBarrier > EvalCacheMap; EvalCacheMap m_cacheMap; }; diff --git a/Source/JavaScriptCore/bytecode/Instruction.h b/Source/JavaScriptCore/bytecode/Instruction.h index f077cbf..da0821d 100644 --- a/Source/JavaScriptCore/bytecode/Instruction.h +++ b/Source/JavaScriptCore/bytecode/Instruction.h @@ -63,7 +63,7 @@ namespace JSC { Structure* base; union { Structure* proto; - StructureChain* chain; + WriteBarrierBase chain; } u; void set(PolymorphicAccessStructureListStubRoutineType _stubRoutine, Structure* _base) @@ -82,11 +82,11 @@ namespace JSC { isChain = false; } - void set(PolymorphicAccessStructureListStubRoutineType _stubRoutine, Structure* _base, StructureChain* _chain) + void set(JSGlobalData& globalData, JSCell* owner, PolymorphicAccessStructureListStubRoutineType _stubRoutine, Structure* _base, StructureChain* _chain) { stubRoutine = _stubRoutine; base = _base; - u.chain = _chain; + u.chain.set(globalData, owner, _chain); isChain = true; } } list[POLYMORPHIC_LIST_CACHE_SIZE]; @@ -101,9 +101,9 @@ namespace JSC { list[0].set(stubRoutine, firstBase, firstProto); } - PolymorphicAccessStructureList(PolymorphicAccessStructureListStubRoutineType stubRoutine, Structure* firstBase, StructureChain* firstChain) + PolymorphicAccessStructureList(JSGlobalData& globalData, JSCell* owner, PolymorphicAccessStructureListStubRoutineType stubRoutine, Structure* firstBase, StructureChain* firstChain) { - list[0].set(stubRoutine, firstBase, firstChain); + list[0].set(globalData, owner, stubRoutine, firstBase, firstChain); } void derefStructures(int count) @@ -115,13 +115,22 @@ namespace JSC { info.base->deref(); if (info.u.proto) { - if (info.isChain) - info.u.chain->deref(); - else + if (!info.isChain) info.u.proto->deref(); } } } + + void markAggregate(MarkStack& markStack, int count) + { + for (int i = 0; i < count; ++i) { + PolymorphicStubInfo& info = list[i]; + ASSERT(info.base); + + if (info.u.proto && info.isChain) + markStack.append(&info.u.chain); + } + } }; struct Instruction { @@ -130,7 +139,7 @@ namespace JSC { #if !ENABLE(COMPUTED_GOTO_INTERPRETER) // We have to initialize one of the pointer members to ensure that // the entire struct is initialized, when opcode is not a pointer. - u.jsCell = 0; + u.jsCell.clear(); #endif u.opcode = opcode; } @@ -139,13 +148,21 @@ namespace JSC { { // We have to initialize one of the pointer members to ensure that // the entire struct is initialized in 64-bit. - u.jsCell = 0; + u.jsCell.clear(); u.operand = operand; } Instruction(Structure* structure) { u.structure = structure; } - Instruction(StructureChain* structureChain) { u.structureChain = structureChain; } - Instruction(JSCell* jsCell) { u.jsCell = jsCell; } + Instruction(JSGlobalData& globalData, JSCell* owner, StructureChain* structureChain) + { + u.structureChain.clear(); + u.structureChain.set(globalData, owner, structureChain); + } + Instruction(JSGlobalData& globalData, JSCell* owner, JSCell* jsCell) + { + u.jsCell.clear(); + u.jsCell.set(globalData, owner, jsCell); + } Instruction(PolymorphicAccessStructureList* polymorphicStructures) { u.polymorphicStructures = polymorphicStructures; } Instruction(PropertySlot::GetValueFunc getterFunc) { u.getterFunc = getterFunc; } @@ -153,8 +170,8 @@ namespace JSC { Opcode opcode; int operand; Structure* structure; - StructureChain* structureChain; - JSCell* jsCell; + WriteBarrierBase structureChain; + WriteBarrierBase jsCell; PolymorphicAccessStructureList* polymorphicStructures; PropertySlot::GetValueFunc getterFunc; } u; diff --git a/Source/JavaScriptCore/bytecode/SamplingTool.h b/Source/JavaScriptCore/bytecode/SamplingTool.h index 9ca54da..a0696b1 100644 --- a/Source/JavaScriptCore/bytecode/SamplingTool.h +++ b/Source/JavaScriptCore/bytecode/SamplingTool.h @@ -95,8 +95,8 @@ namespace JSC { struct Instruction; struct ScriptSampleRecord { - ScriptSampleRecord(ScriptExecutable* executable) - : m_executable(executable) + ScriptSampleRecord(JSGlobalData& globalData, ScriptExecutable* executable) + : m_executable(globalData, executable) , m_codeBlock(0) , m_sampleCount(0) , m_opcodeSampleCount(0) @@ -113,7 +113,7 @@ namespace JSC { void sample(CodeBlock*, Instruction*); - RefPtr m_executable; + Global m_executable; CodeBlock* m_codeBlock; int m_sampleCount; int m_opcodeSampleCount; @@ -280,7 +280,6 @@ namespace JSC { // Implements a named set of counters, printed on exit if ENABLE(SAMPLING_COUNTERS). // See subclasses below, SamplingCounter, GlobalSamplingCounter and DeletableSamplingCounter. class AbstractSamplingCounter { - friend class JIT; friend class DeletableSamplingCounter; public: void count(uint32_t count = 1) @@ -290,6 +289,8 @@ namespace JSC { static void dump(); + int64_t* addressOfCounter() { return &m_counter; } + protected: // Effectively the contructor, however called lazily in the case of GlobalSamplingCounter. void init(const char* name) diff --git a/Source/JavaScriptCore/bytecode/StructureStubInfo.cpp b/Source/JavaScriptCore/bytecode/StructureStubInfo.cpp index 5ec2a3f..4d59ac1 100644 --- a/Source/JavaScriptCore/bytecode/StructureStubInfo.cpp +++ b/Source/JavaScriptCore/bytecode/StructureStubInfo.cpp @@ -26,6 +26,7 @@ #include "config.h" #include "StructureStubInfo.h" +#include "JSObject.h" #include "ScopeChain.h" namespace JSC { @@ -43,7 +44,6 @@ void StructureStubInfo::deref() return; case access_get_by_id_chain: u.getByIdChain.baseObjectStructure->deref(); - u.getByIdChain.chain->deref(); return; case access_get_by_id_self_list: { PolymorphicAccessStructureList* polymorphicStructures = u.getByIdSelfList.structureList; @@ -60,7 +60,6 @@ void StructureStubInfo::deref() case access_put_by_id_transition: u.putByIdTransition.previousStructure->deref(); u.putByIdTransition.structure->deref(); - u.putByIdTransition.chain->deref(); return; case access_put_by_id_replace: u.putByIdReplace.baseObjectStructure->deref(); @@ -77,6 +76,42 @@ void StructureStubInfo::deref() ASSERT_NOT_REACHED(); } } + +void StructureStubInfo::markAggregate(MarkStack& markStack) +{ + switch (accessType) { + case access_get_by_id_self: + return; + case access_get_by_id_proto: + return; + case access_get_by_id_chain: + return; + case access_get_by_id_self_list: { + PolymorphicAccessStructureList* polymorphicStructures = u.getByIdSelfList.structureList; + polymorphicStructures->markAggregate(markStack, u.getByIdSelfList.listSize); + return; + } + case access_get_by_id_proto_list: { + PolymorphicAccessStructureList* polymorphicStructures = u.getByIdProtoList.structureList; + polymorphicStructures->markAggregate(markStack, u.getByIdProtoList.listSize); + return; + } + case access_put_by_id_transition: + return; + case access_put_by_id_replace: + return; + case access_get_by_id: + case access_put_by_id: + case access_get_by_id_generic: + case access_put_by_id_generic: + case access_get_array_length: + case access_get_string_length: + // These instructions don't ref their Structures. + return; + default: + ASSERT_NOT_REACHED(); + } +} #endif } // namespace JSC diff --git a/Source/JavaScriptCore/bytecode/StructureStubInfo.h b/Source/JavaScriptCore/bytecode/StructureStubInfo.h index 8e2c489..28202f9 100644 --- a/Source/JavaScriptCore/bytecode/StructureStubInfo.h +++ b/Source/JavaScriptCore/bytecode/StructureStubInfo.h @@ -85,7 +85,6 @@ namespace JSC { baseObjectStructure->ref(); u.getByIdChain.chain = chain; - chain->ref(); } void initGetByIdSelfList(PolymorphicAccessStructureList* structureList, int listSize) @@ -117,7 +116,6 @@ namespace JSC { structure->ref(); u.putByIdTransition.chain = chain; - chain->ref(); } void initPutByIdReplace(Structure* baseObjectStructure) @@ -129,6 +127,7 @@ namespace JSC { } void deref(); + void markAggregate(MarkStack&); bool seenOnce() { diff --git a/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp b/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp index 08f4bd4..5af3420 100644 --- a/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp +++ b/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp @@ -224,8 +224,6 @@ BytecodeGenerator::BytecodeGenerator(ProgramNode* programNode, ScopeChainNode* s #endif , m_stack(m_globalData->stack()) , m_usesExceptions(false) - , m_regeneratingForExceptionInfo(false) - , m_codeBlockBeingRegeneratedFrom(0) , m_expressionTooDeep(false) { if (m_shouldEmitDebugHooks) @@ -250,7 +248,7 @@ BytecodeGenerator::BytecodeGenerator(ProgramNode* programNode, ScopeChainNode* s SymbolTable::iterator end = symbolTable->end(); for (SymbolTable::iterator it = symbolTable->begin(); it != end; ++it) registerFor(it->second.getIndex()).setIndex(it->second.getIndex() + m_globalVarStorageOffset); - + BatchedTransitionOptimizer optimizer(*m_globalData, globalObject); const VarStack& varStack = programNode->varStack(); @@ -260,27 +258,49 @@ BytecodeGenerator::BytecodeGenerator(ProgramNode* programNode, ScopeChainNode* s // Shift new symbols so they get stored prior to existing symbols. m_nextGlobalIndex -= symbolTable->size(); - size_t oldSymbolTableSize = symbolTable->size(); - + HashSet newGlobals; + Vector, 16> functionInfo(functionStack.size()); for (size_t i = 0; i < functionStack.size(); ++i) { FunctionBodyNode* function = functionStack[i]; globalObject->removeDirect(function->ident()); // Make sure our new function is not shadowed by an old property. - emitNewFunction(addGlobalVar(function->ident(), false), function); + SymbolTableEntry entry = symbolTable->inlineGet(function->ident().impl()); + + if (entry.isNull()) + newGlobals.add(function->ident().impl()); + functionInfo[i] = make_pair(entry.getIndex(), entry.isReadOnly()); } - - Vector newVars; + + Vector shouldCreateVar(varStack.size()); for (size_t i = 0; i < varStack.size(); ++i) { - if (globalObject->symbolTableHasProperty(*varStack[i].first) || globalObject->hasProperty(exec, *varStack[i].first)) + if (newGlobals.contains(varStack[i].first->impl()) || globalObject->hasProperty(exec, *varStack[i].first)) { + shouldCreateVar[i] = false; continue; - newVars.append(addGlobalVar(*varStack[i].first, varStack[i].second & DeclarationStacks::IsConstant)); + } + shouldCreateVar[i] = true; + newGlobals.add(varStack[i].first->impl()); } - globalObject->resizeRegisters(oldSymbolTableSize, symbolTable->size()); + int expectedSize = symbolTable->size() + newGlobals.size(); + globalObject->resizeRegisters(symbolTable->size(), expectedSize); + + for (size_t i = 0; i < functionStack.size(); ++i) { + FunctionBodyNode* function = functionStack[i]; + if (functionInfo[i].second) + continue; + RegisterID* dst = addGlobalVar(function->ident(), false); + JSValue value = new (exec) JSFunction(exec, makeFunction(exec, function), scopeChain); + globalObject->registerAt(dst->index() - m_globalVarStorageOffset).set(*m_globalData, globalObject, value); + } - preserveLastVar(); + for (size_t i = 0; i < varStack.size(); ++i) { + if (!shouldCreateVar[i]) + continue; + addGlobalVar(*varStack[i].first, varStack[i].second & DeclarationStacks::IsConstant); + } + if (symbolTable->size() != expectedSize) + CRASH(); - for (size_t i = 0; i < newVars.size(); ++i) - emitLoad(newVars[i], jsUndefined()); + preserveLastVar(); } else { for (size_t i = 0; i < functionStack.size(); ++i) { FunctionBodyNode* function = functionStack[i]; @@ -325,8 +345,6 @@ BytecodeGenerator::BytecodeGenerator(FunctionBodyNode* functionBody, ScopeChainN #endif , m_stack(m_globalData->stack()) , m_usesExceptions(false) - , m_regeneratingForExceptionInfo(false) - , m_codeBlockBeingRegeneratedFrom(0) , m_expressionTooDeep(false) { if (m_shouldEmitDebugHooks) @@ -491,8 +509,6 @@ BytecodeGenerator::BytecodeGenerator(EvalNode* evalNode, ScopeChainNode* scopeCh #endif , m_stack(m_globalData->stack()) , m_usesExceptions(false) - , m_regeneratingForExceptionInfo(false) - , m_codeBlockBeingRegeneratedFrom(0) , m_expressionTooDeep(false) { if (m_shouldEmitDebugHooks || m_baseScopeDepth) @@ -909,7 +925,7 @@ PassRefPtr