From 4576aa36e9a9671459299c7963ac95aa94beaea9 Mon Sep 17 00:00:00 2001 From: "Shimeng (Simon) Wang" Date: Tue, 7 Dec 2010 17:22:45 -0800 Subject: Merge WebKit at r73109: Initial merge by git. Change-Id: I61f1a66d9642e3d8405d3ac6ccab2a53421c75d8 --- ANGLE/ChangeLog | 10 + ANGLE/src/libEGL/libEGL.vcproj | 504 +- ANGLE/src/libGLESv2/libGLESv2.vcproj | 730 +- JavaScriptCore/CMakeListsEfl.txt | 1 + JavaScriptCore/ChangeLog | 1092 + .../Configurations/JavaScriptCore.xcconfig | 3 +- JavaScriptCore/Configurations/Version.xcconfig | 2 +- JavaScriptCore/GNUmakefile.am | 6 +- JavaScriptCore/JavaScriptCore.exp | 14 +- JavaScriptCore/JavaScriptCore.gypi | 2 + .../JavaScriptCore.vcproj/JavaScriptCore.make | 1 + .../JavaScriptCore.vcproj/JavaScriptCore.sln | 190 +- .../JavaScriptCore/JavaScriptCore.def | 6 +- .../JavaScriptCore/JavaScriptCore.vcproj | 4010 +- .../JavaScriptCore/JavaScriptCoreCF.vsprops | 22 +- .../JavaScriptCore/JavaScriptCoreCFLite.vsprops | 22 +- .../JavaScriptCore/JavaScriptCoreCommon.vsprops | 52 +- .../JavaScriptCore/JavaScriptCoreGenerated.make | 2 +- .../JavaScriptCore/JavaScriptCoreGenerated.vcproj | 144 +- .../JavaScriptCoreGeneratedCommon.vsprops | 15 + .../JavaScriptCore/JavaScriptCorePostBuild.cmd | 1 + .../JavaScriptCore/JavaScriptCorePreBuild.cmd | 8 + .../JavaScriptCore/JavaScriptCorePreLink.cmd | 9 + .../JavaScriptCore/react-to-vsprops-changes.py | 37 + .../JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln | 166 +- .../JavaScriptCore.vcproj/WTF/WTF.vcproj | 1729 +- .../JavaScriptCore.vcproj/WTF/WTFCommon.vsprops | 47 +- .../JavaScriptCore.vcproj/WTF/WTFPostBuild.cmd | 1 + .../JavaScriptCore.vcproj/WTF/WTFPreBuild.cmd | 6 + .../JavaScriptCore.vcproj/jsc/jsc.vcproj | 824 +- .../JavaScriptCore.vcproj/jsc/jscCommon.vsprops | 52 +- .../JavaScriptCore.vcproj/jsc/jscPostBuild.cmd | 23 + .../JavaScriptCore.vcproj/jsc/jscPreBuild.cmd | 6 + .../JavaScriptCore.vcproj/jsc/jscPreLink.cmd | 9 + .../JavaScriptCore.vcproj/testapi/testapi.vcproj | 966 +- .../testapi/testapiCommon.vsprops | 52 +- .../testapi/testapiPostBuild.cmd | 3 + .../testapi/testapiPreBuild.cmd | 6 + .../testapi/testapiPreLink.cmd | 9 + .../JavaScriptCore.xcodeproj/project.pbxproj | 21 +- JavaScriptCore/JavaScriptCoreSources.bkl | 0 JavaScriptCore/assembler/ARMAssembler.h | 31 +- JavaScriptCore/assembler/ARMv7Assembler.h | 8 + JavaScriptCore/assembler/MacroAssemblerARM.h | 24 +- JavaScriptCore/assembler/MacroAssemblerARMv7.h | 17 + JavaScriptCore/bytecode/CodeBlock.cpp | 121 +- JavaScriptCore/bytecode/CodeBlock.h | 96 +- JavaScriptCore/bytecode/SamplingTool.cpp | 4 +- JavaScriptCore/bytecompiler/BytecodeGenerator.cpp | 38 +- JavaScriptCore/bytecompiler/BytecodeGenerator.h | 31 +- JavaScriptCore/create_regex_tables | 4 +- JavaScriptCore/debugger/DebuggerCallFrame.cpp | 2 +- JavaScriptCore/interpreter/CallFrame.h | 2 + JavaScriptCore/interpreter/Interpreter.cpp | 409 +- JavaScriptCore/interpreter/Interpreter.h | 2 +- JavaScriptCore/jit/JIT.cpp | 2 +- JavaScriptCore/jit/JITArithmetic.cpp | 12 - JavaScriptCore/jit/JITOpcodes.cpp | 82 - JavaScriptCore/jit/JITOpcodes32_64.cpp | 90 + JavaScriptCore/jit/JITStubs.cpp | 29 +- JavaScriptCore/jsc.cpp | 11 +- JavaScriptCore/jscore.bkl | 0 JavaScriptCore/profiler/CallIdentifier.h | 2 +- JavaScriptCore/profiler/Profile.cpp | 2 +- JavaScriptCore/profiler/ProfileGenerator.cpp | 29 +- JavaScriptCore/profiler/ProfileGenerator.h | 8 +- JavaScriptCore/profiler/ProfileNode.cpp | 14 +- JavaScriptCore/profiler/ProfileNode.h | 17 +- JavaScriptCore/profiler/Profiler.cpp | 29 +- JavaScriptCore/profiler/Profiler.h | 10 +- JavaScriptCore/runtime/Collector.cpp | 2 - JavaScriptCore/runtime/Executable.cpp | 80 +- JavaScriptCore/runtime/Executable.h | 8 - JavaScriptCore/runtime/Identifier.cpp | 4 +- JavaScriptCore/runtime/JSActivation.cpp | 10 +- JavaScriptCore/runtime/JSFunction.cpp | 2 +- JavaScriptCore/runtime/JSGlobalData.cpp | 1 - JavaScriptCore/runtime/JSGlobalData.h | 4 +- JavaScriptCore/runtime/JSGlobalObject.h | 7 +- JavaScriptCore/runtime/MarkStack.h | 5 +- JavaScriptCore/runtime/MarkStackNone.cpp | 49 - JavaScriptCore/runtime/MarkStackPosix.cpp | 9 - JavaScriptCore/runtime/MarkStackSymbian.cpp | 10 - JavaScriptCore/runtime/MarkStackWin.cpp | 11 - JavaScriptCore/runtime/RegExp.cpp | 99 +- JavaScriptCore/runtime/Structure.cpp | 1 + JavaScriptCore/runtime/UString.h | 2 +- JavaScriptCore/tests/mozilla/expected.html | 294 +- JavaScriptCore/wtf/Assertions.cpp | 4 +- JavaScriptCore/wtf/Assertions.h | 5 +- JavaScriptCore/wtf/BumpPointerAllocator.h | 5 +- JavaScriptCore/wtf/DateMath.cpp | 4 +- JavaScriptCore/wtf/DateMath.h | 7 + JavaScriptCore/wtf/FixedArray.h | 9 +- JavaScriptCore/wtf/OSAllocator.h | 46 + JavaScriptCore/wtf/OSAllocatorPosix.cpp | 87 + JavaScriptCore/wtf/OSAllocatorSymbian.cpp | 60 + JavaScriptCore/wtf/OSAllocatorWin.cpp | 64 + JavaScriptCore/wtf/PageAllocation.h | 19 +- JavaScriptCore/wtf/Platform.h | 14 +- JavaScriptCore/wtf/StdLibExtras.h | 2 +- JavaScriptCore/wtf/Vector3.h | 138 - JavaScriptCore/wtf/text/CString.cpp | 7 +- JavaScriptCore/wtf/text/StringImpl.cpp | 9 +- JavaScriptCore/wtf/text/StringImpl.h | 5 +- JavaScriptCore/wtf/unicode/UTF8.cpp | 90 +- JavaScriptCore/wtf/unicode/UnicodeMacrosFromICU.h | 31 +- JavaScriptCore/wtf/unicode/glib/UnicodeGLib.cpp | 117 +- JavaScriptCore/wtf/wtf.pri | 3 + JavaScriptCore/yarr/RegexCompiler.cpp | 54 +- JavaScriptCore/yarr/RegexCompiler.h | 4 - JavaScriptCore/yarr/RegexInterpreter.cpp | 287 +- JavaScriptCore/yarr/RegexInterpreter.h | 7 +- JavaScriptCore/yarr/RegexJIT.cpp | 103 +- JavaScriptCore/yarr/RegexJIT.h | 30 +- JavaScriptCore/yarr/RegexParser.h | 141 +- JavaScriptCore/yarr/RegexPattern.h | 13 +- JavaScriptGlue/ChangeLog | 6 + JavaScriptGlue/Configurations/Version.xcconfig | 2 +- JavaScriptGlue/ForwardingHeaders/wtf/OSAllocator.h | 1 + .../create-event-onorientationchange-expected.txt | 16 - .../create-event-onorientationchange.html | 13 - .../create-event-onorientationchange.js | 18 - .../script-tests/event-after-navigation.js | 6 +- .../fast/encoding/xml-utf-8-default-expected.txt | 2 + LayoutTests/fast/encoding/xml-utf-8-default.xml | 1 + LayoutTests/fast/js/resources/standalone-pre.js | 2 + .../http/tests/resources/balls-of-the-orient.aif | Bin 0 -> 670184 bytes .../private-browsing-affects-storage-expected.txt | 8 +- .../private-browsing-affects-storage-expected.txt | 8 +- LayoutTests/storage/indexeddb/basics-expected.txt | 8 +- LayoutTests/storage/indexeddb/basics.html | 23 +- .../storage/indexeddb/constants-expected.txt | 8 +- LayoutTests/storage/indexeddb/constants.html | 9 +- .../create-and-remove-object-store-expected.txt | 60 + .../indexeddb/create-and-remove-object-store.html | 96 + .../create-object-store-options-expected.txt | 33 + .../indexeddb/create-object-store-options.html | 102 + .../storage/indexeddb/database-basics-expected.txt | 42 +- LayoutTests/storage/indexeddb/database-basics.html | 22 +- .../storage/indexeddb/database-quota-expected.txt | 18 +- LayoutTests/storage/indexeddb/database-quota.html | 18 +- .../storage/indexeddb/duplicates-expected.txt | 4 +- LayoutTests/storage/indexeddb/duplicates.html | 4 +- .../storage/indexeddb/index-basics-expected.txt | 2 +- LayoutTests/storage/indexeddb/index-basics.html | 2 +- .../storage/indexeddb/index-cursor-expected.txt | 2 +- LayoutTests/storage/indexeddb/index-cursor.html | 17 +- .../storage/indexeddb/keyrange-expected.txt | 268 +- LayoutTests/storage/indexeddb/keyrange.html | 115 +- .../indexeddb/objectstore-basics-expected.txt | 63 +- .../storage/indexeddb/objectstore-basics.html | 79 +- .../indexeddb/objectstore-cursor-expected.txt | 2 +- .../storage/indexeddb/objectstore-cursor.html | 15 +- .../objectstore-removeobjectstore-expected.txt | 6 +- .../indexeddb/objectstore-removeobjectstore.html | 10 +- .../storage/indexeddb/open-cursor-expected.txt | 6 +- LayoutTests/storage/indexeddb/open-cursor.html | 10 +- .../storage/indexeddb/queued-commands-expected.txt | 2 +- LayoutTests/storage/indexeddb/queued-commands.html | 2 +- LayoutTests/storage/indexeddb/resources/shared.js | 16 +- .../transaction-and-objectstore-calls-expected.txt | 81 + .../transaction-and-objectstore-calls.html | 110 + .../indexeddb/transaction-basics-expected.txt | 50 +- .../storage/indexeddb/transaction-basics.html | 26 +- LayoutTests/storage/indexeddb/tutorial.html | 85 +- SunSpider/ChangeLog | 10 + SunSpider/resources/sunspider-standalone-driver.js | 5 +- WebCore/Android.jscbindings.mk | 20 + WebCore/Android.mk | 13 +- WebCore/CMakeLists.txt | 187 +- WebCore/ChangeLog | 8210 +++ WebCore/Configurations/Version.xcconfig | 2 +- WebCore/Configurations/WebCore.xcconfig | 3 +- WebCore/DerivedSources.cpp | 1 + WebCore/DerivedSources.make | 9 +- WebCore/English.lproj/localizedStrings.js | Bin 52406 -> 53080 bytes WebCore/ForwardingHeaders/wtf/OSAllocator.h | 1 + WebCore/GNUmakefile.am | 210 +- WebCore/WebCore.exp.in | 23 +- WebCore/WebCore.gyp/WebCore.gyp | 23 +- WebCore/WebCore.gypi | 76 +- WebCore/WebCore.order | 2 - WebCore/WebCore.pri | 5 + WebCore/WebCore.pro | 135 +- WebCore/WebCore.vcproj/QTMovieWin.vcproj | 911 +- WebCore/WebCore.vcproj/QTMovieWinCommon.vsprops | 48 +- WebCore/WebCore.vcproj/QTMovieWinPostBuild.cmd | 4 + WebCore/WebCore.vcproj/QTMovieWinPreBuild.cmd | 9 + WebCore/WebCore.vcproj/WebCore.make | 1 + WebCore/WebCore.vcproj/WebCore.sln | 107 +- WebCore/WebCore.vcproj/WebCore.submit.sln | 104 +- WebCore/WebCore.vcproj/WebCore.vcproj | 66868 ++++++++++++++++++- WebCore/WebCore.vcproj/WebCoreCFNetwork.vsprops | 22 +- WebCore/WebCore.vcproj/WebCoreCG.vsprops | 22 +- WebCore/WebCore.vcproj/WebCoreCURL.vsprops | 24 +- WebCore/WebCore.vcproj/WebCoreCairo.vsprops | 23 +- WebCore/WebCore.vcproj/WebCoreCommon.vsprops | 42 +- WebCore/WebCore.vcproj/WebCoreGenerated.vcproj | 174 +- .../WebCore.vcproj/WebCoreGeneratedCairo.vsprops | 12 + .../WebCore.vcproj/WebCoreGeneratedCommon.vsprops | 15 + WebCore/WebCore.vcproj/WebCoreMediaQT.vsprops | 22 +- WebCore/WebCore.vcproj/WebCorePostBuild.cmd | 1 + WebCore/WebCore.vcproj/WebCorePreBuild.cmd | 12 + WebCore/WebCore.vcproj/WebCorePthreads.vsprops | 22 +- WebCore/WebCore.vcproj/WebCoreQuartzCore.vsprops | 24 +- WebCore/WebCore.xcodeproj/project.pbxproj | 334 +- WebCore/WebCorePrefix.h | 1 + WebCore/WebCoreSources.bkl | 0 .../accessibility/AccessibilityImageMapLink.cpp | 8 +- WebCore/accessibility/AccessibilityImageMapLink.h | 10 +- .../accessibility/AccessibilityMenuListOption.cpp | 7 +- .../accessibility/AccessibilityMenuListOption.h | 1 + WebCore/accessibility/AccessibilityObject.cpp | 5 +- .../accessibility/AccessibilityRenderObject.cpp | 23 +- WebCore/accessibility/AccessibilityRenderObject.h | 1 + WebCore/accessibility/gtk/AXObjectCacheAtk.cpp | 11 +- .../gtk/AccessibilityObjectWrapperAtk.cpp | 150 +- WebCore/bindings/generic/RuntimeEnabledFeatures.h | 1 + WebCore/bindings/gobject/DOMObjectCache.cpp | 153 + WebCore/bindings/gobject/DOMObjectCache.h | 39 + WebCore/bindings/gobject/GNUmakefile.am | 3 + WebCore/bindings/gobject/GObjectEventListener.cpp | 1 + WebCore/bindings/gobject/WebKitDOMBinding.cpp | 51 +- WebCore/bindings/gobject/WebKitDOMBinding.h | 16 +- WebCore/bindings/js/JSArrayBufferViewCustom.cpp | 93 - WebCore/bindings/js/JSArrayBufferViewHelper.h | 49 +- .../bindings/js/JSAudioBufferSourceNodeCustom.cpp | 47 + WebCore/bindings/js/JSBindingsAllInOne.cpp | 17 +- WebCore/bindings/js/JSCSSFontFaceRuleCustom.cpp | 43 + WebCore/bindings/js/JSCSSImportRuleCustom.cpp | 46 + WebCore/bindings/js/JSCSSMediaRuleCustom.cpp | 46 + WebCore/bindings/js/JSCSSPageRuleCustom.cpp | 43 + WebCore/bindings/js/JSCSSRuleCustom.cpp | 11 + .../bindings/js/JSCSSStyleDeclarationCustom.cpp | 3 + WebCore/bindings/js/JSCSSStyleRuleCustom.cpp | 43 + WebCore/bindings/js/JSConsoleCustom.cpp | 8 +- WebCore/bindings/js/JSConvolverNodeCustom.cpp | 47 + WebCore/bindings/js/JSDOMBinding.cpp | 33 +- WebCore/bindings/js/JSDOMBinding.h | 27 - WebCore/bindings/js/JSDOMWindowBase.cpp | 22 +- WebCore/bindings/js/JSDOMWindowBase.h | 1 + WebCore/bindings/js/JSDOMWindowCustom.cpp | 5 + WebCore/bindings/js/JSDataViewCustom.cpp | 174 + WebCore/bindings/js/JSEventCustom.cpp | 6 + WebCore/bindings/js/JSFloat32ArrayCustom.cpp | 4 +- WebCore/bindings/js/JSHTMLLinkElementCustom.cpp | 43 + WebCore/bindings/js/JSHTMLStyleElementCustom.cpp | 43 + WebCore/bindings/js/JSInjectedScriptHostCustom.cpp | 10 +- WebCore/bindings/js/JSInt16ArrayCustom.cpp | 4 +- WebCore/bindings/js/JSInt32ArrayCustom.cpp | 4 +- WebCore/bindings/js/JSInt8ArrayCustom.cpp | 4 +- .../bindings/js/JSJavaScriptAudioNodeCustom.cpp | 45 + .../bindings/js/JSProcessingInstructionCustom.cpp | 43 + WebCore/bindings/js/JSSVGContextCache.h | 97 - WebCore/bindings/js/JSSVGLengthCustom.cpp | 10 + WebCore/bindings/js/JSSVGPODListCustom.h | 199 - WebCore/bindings/js/JSSVGPODTypeWrapper.h | 410 - WebCore/bindings/js/JSSVGPathSegCustom.cpp | 46 +- WebCore/bindings/js/JSSVGPathSegListCustom.cpp | 173 - WebCore/bindings/js/JSUint16ArrayCustom.cpp | 4 +- WebCore/bindings/js/JSUint32ArrayCustom.cpp | 4 +- WebCore/bindings/js/JSUint8ArrayCustom.cpp | 4 +- .../bindings/js/JSWebKitCSSKeyframeRuleCustom.cpp | 43 + .../bindings/js/JSWebKitCSSKeyframesRuleCustom.cpp | 43 + WebCore/bindings/js/JSXMLHttpRequestCustom.cpp | 71 +- WebCore/bindings/js/OptionsObject.h | 31 + WebCore/bindings/js/ScriptCallStackFactory.cpp | 8 +- WebCore/bindings/js/ScriptCallStackFactory.h | 6 +- WebCore/bindings/js/ScriptHeapSnapshot.h | 13 +- WebCore/bindings/js/ScriptProfile.cpp | 2 + WebCore/bindings/js/ScriptProfile.h | 2 + WebCore/bindings/js/ScriptValue.cpp | 6 + WebCore/bindings/js/ScriptValue.h | 3 + WebCore/bindings/objc/DOMSVG.h | 1 - WebCore/bindings/scripts/CodeGenerator.pm | 5 +- WebCore/bindings/scripts/CodeGeneratorCPP.pm | 2 - WebCore/bindings/scripts/CodeGeneratorGObject.pm | 38 +- WebCore/bindings/scripts/CodeGeneratorJS.pm | 80 +- WebCore/bindings/scripts/CodeGeneratorObjC.pm | 25 +- WebCore/bindings/scripts/CodeGeneratorV8.pm | 169 +- .../bindings/scripts/test/CPP/WebDOMTestObj.cpp | 42 + WebCore/bindings/scripts/test/CPP/WebDOMTestObj.h | 6 + .../scripts/test/GObject/WebKitDOMTestCallback.cpp | 7 +- .../test/GObject/WebKitDOMTestInterface.cpp | 1 + .../WebKitDOMTestMediaQueryListListener.cpp | 18 +- .../GObject/WebKitDOMTestMediaQueryListListener.h | 3 - .../scripts/test/GObject/WebKitDOMTestObj.cpp | 291 +- .../scripts/test/GObject/WebKitDOMTestObj.h | 27 +- .../test/JS/JSTestMediaQueryListListener.cpp | 4 +- WebCore/bindings/scripts/test/JS/JSTestObj.cpp | 139 +- WebCore/bindings/scripts/test/JS/JSTestObj.h | 5 + WebCore/bindings/scripts/test/ObjC/DOMTestObj.h | 6 + WebCore/bindings/scripts/test/ObjC/DOMTestObj.mm | 32 + WebCore/bindings/scripts/test/TestObj.idl | 3 + .../test/V8/V8TestMediaQueryListListener.cpp | 15 +- WebCore/bindings/scripts/test/V8/V8TestObj.cpp | 64 +- WebCore/bindings/v8/DOMDataStore.cpp | 10 - WebCore/bindings/v8/DOMDataStore.h | 7 +- WebCore/bindings/v8/IDBBindingUtilities.cpp | 3 +- WebCore/bindings/v8/OptionsObject.cpp | 156 + WebCore/bindings/v8/OptionsObject.h | 65 + WebCore/bindings/v8/ScopedDOMDataStore.cpp | 2 - WebCore/bindings/v8/ScriptCallStackFactory.cpp | 10 +- WebCore/bindings/v8/ScriptCallStackFactory.h | 13 +- WebCore/bindings/v8/ScriptHeapSnapshot.cpp | 62 +- WebCore/bindings/v8/ScriptHeapSnapshot.h | 10 +- WebCore/bindings/v8/ScriptValue.h | 5 + WebCore/bindings/v8/StaticDOMDataStore.cpp | 2 - WebCore/bindings/v8/StaticDOMDataStore.h | 1 - WebCore/bindings/v8/V8Binding.cpp | 11 +- WebCore/bindings/v8/V8ConsoleMessage.cpp | 6 +- WebCore/bindings/v8/V8ConsoleMessage.h | 2 +- WebCore/bindings/v8/V8DOMMap.cpp | 24 - WebCore/bindings/v8/V8DOMMap.h | 4 - WebCore/bindings/v8/V8NPUtils.cpp | 4 +- WebCore/bindings/v8/V8Proxy.cpp | 37 - WebCore/bindings/v8/V8Proxy.h | 35 - WebCore/bindings/v8/V8SVGPODTypeWrapper.h | 416 - .../bindings/v8/custom/V8ArrayBufferViewCustom.cpp | 95 - .../bindings/v8/custom/V8ArrayBufferViewCustom.h | 77 +- WebCore/bindings/v8/custom/V8ConsoleCustom.cpp | 20 +- WebCore/bindings/v8/custom/V8DataViewCustom.cpp | 124 + WebCore/bindings/v8/custom/V8EventCustom.cpp | 5 + .../v8/custom/V8InjectedScriptHostCustom.cpp | 15 +- WebCore/bindings/v8/custom/V8SVGLengthCustom.cpp | 14 +- .../bindings/v8/custom/V8XMLHttpRequestCustom.cpp | 62 + WebCore/config.h | 2 +- WebCore/css/CSSComputedStyleDeclaration.cpp | 2 +- WebCore/css/CSSFontFaceRule.idl | 2 +- WebCore/css/CSSFontFaceSrcValue.cpp | 2 +- WebCore/css/CSSGrammar.y | 14 +- WebCore/css/CSSImportRule.cpp | 4 +- WebCore/css/CSSImportRule.idl | 2 +- WebCore/css/CSSMediaRule.idl | 2 +- WebCore/css/CSSMutableStyleDeclaration.cpp | 5 +- WebCore/css/CSSPageRule.idl | 2 +- WebCore/css/CSSParser.cpp | 39 +- WebCore/css/CSSParser.h | 3 +- WebCore/css/CSSPropertyLonghand.cpp | 2 +- WebCore/css/CSSRule.idl | 1 + WebCore/css/CSSStyleRule.idl | 2 +- WebCore/css/CSSStyleSelector.cpp | 34 +- WebCore/css/CSSStyleSheet.cpp | 18 + WebCore/css/MediaQueryEvaluator.cpp | 2 +- WebCore/css/MediaQueryList.cpp | 94 + WebCore/css/MediaQueryList.h | 65 + WebCore/css/MediaQueryList.idl | 27 + WebCore/css/MediaQueryListListener.cpp | 45 + WebCore/css/MediaQueryListListener.h | 55 + WebCore/css/MediaQueryListListener.idl | 29 + WebCore/css/MediaQueryMatcher.cpp | 156 + WebCore/css/MediaQueryMatcher.h | 87 + WebCore/css/StyleSheet.cpp | 27 +- WebCore/css/WebKitCSSKeyframeRule.idl | 2 +- WebCore/css/WebKitCSSKeyframesRule.idl | 1 + WebCore/css/html.css | 3 + WebCore/css/makeprop.pl | 71 +- WebCore/css/makevalues.pl | 83 +- WebCore/css/themeChromiumSkia.css | 37 + WebCore/css/tokenizer.flex | 4 +- WebCore/dom/ClientRect.cpp | 5 + WebCore/dom/ClientRect.h | 2 + WebCore/dom/Document.cpp | 70 +- WebCore/dom/Document.h | 8 + WebCore/dom/Element.cpp | 9 +- WebCore/dom/Event.cpp | 7 + WebCore/dom/Event.h | 3 + WebCore/dom/EventContext.cpp | 7 + WebCore/dom/EventContext.h | 1 + WebCore/dom/ExceptionCode.cpp | 16 +- WebCore/dom/Node.cpp | 2 +- WebCore/dom/Node.h | 5 + WebCore/dom/Position.cpp | 4 +- WebCore/dom/Position.h | 6 +- WebCore/dom/ProcessingInstruction.cpp | 2 +- WebCore/dom/ProcessingInstruction.idl | 2 +- WebCore/dom/ProgressEvent.cpp | 10 +- WebCore/dom/ProgressEvent.h | 59 +- WebCore/dom/ProgressEvent.idl | 15 +- WebCore/dom/Range.cpp | 4 +- WebCore/dom/ScriptElement.cpp | 36 +- WebCore/dom/ScriptElement.h | 17 +- WebCore/dom/SelectElement.cpp | 8 +- WebCore/dom/ViewportArguments.cpp | 20 +- WebCore/dom/XMLDocumentParser.cpp | 8 +- WebCore/editing/ApplyStyleCommand.cpp | 2 +- WebCore/editing/CompositeEditCommand.cpp | 4 +- WebCore/editing/CorrectionPanelInfo.h | 3 +- WebCore/editing/DeleteSelectionCommand.cpp | 5 +- WebCore/editing/EditingBehavior.h | 3 + WebCore/editing/EditingBoundary.h | 38 + WebCore/editing/EditingStyle.cpp | 60 +- WebCore/editing/EditingStyle.h | 7 +- WebCore/editing/Editor.cpp | 278 +- WebCore/editing/Editor.h | 19 +- WebCore/editing/EditorCommand.cpp | 3 +- WebCore/editing/FindOptions.h | 46 + WebCore/editing/InsertLineBreakCommand.cpp | 10 +- WebCore/editing/InsertListCommand.cpp | 5 + WebCore/editing/InsertTextCommand.cpp | 23 +- WebCore/editing/MarkupAccumulator.cpp | 4 +- WebCore/editing/SelectionController.cpp | 1 + WebCore/editing/SelectionController.h | 14 +- WebCore/editing/TextCheckingHelper.cpp | 2 +- WebCore/editing/TextCheckingHelper.h | 2 +- WebCore/editing/TextIterator.cpp | 218 +- WebCore/editing/TextIterator.h | 5 +- WebCore/editing/TypingCommand.cpp | 2 +- WebCore/editing/visible_units.cpp | 51 +- WebCore/editing/visible_units.h | 9 +- WebCore/features.pri | 1 + WebCore/fileapi/AsyncFileWriter.h | 4 + WebCore/fileapi/DOMFileSystem.cpp | 27 +- WebCore/fileapi/DOMFileSystemSync.cpp | 101 + WebCore/fileapi/DOMFileSystemSync.h | 2 + WebCore/fileapi/FileEntrySync.cpp | 6 + WebCore/fileapi/FileEntrySync.h | 2 + WebCore/fileapi/FileEntrySync.idl | 1 + WebCore/fileapi/FileError.h | 1 + WebCore/fileapi/FileReader.cpp | 13 +- WebCore/fileapi/FileReaderLoader.cpp | 35 +- WebCore/fileapi/FileSystemCallbacks.cpp | 14 +- WebCore/fileapi/FileSystemCallbacks.h | 14 +- WebCore/fileapi/FileWriter.cpp | 50 +- WebCore/fileapi/FileWriter.h | 32 +- WebCore/fileapi/FileWriterBase.cpp | 76 + WebCore/fileapi/FileWriterBase.h | 94 + WebCore/fileapi/FileWriterBaseCallback.h | 52 + WebCore/fileapi/FileWriterSync.cpp | 97 +- WebCore/fileapi/FileWriterSync.h | 38 +- WebCore/fileapi/FileWriterSync.idl | 1 - WebCore/html/BaseButtonInputType.cpp | 38 + WebCore/html/BaseButtonInputType.h | 3 + WebCore/html/BaseCheckableInputType.cpp | 22 + WebCore/html/BaseCheckableInputType.h | 2 + WebCore/html/BaseDateAndTimeInputType.cpp | 11 + WebCore/html/BaseDateAndTimeInputType.h | 1 + WebCore/html/CheckboxInputType.cpp | 16 + WebCore/html/CheckboxInputType.h | 2 + WebCore/html/DateTimeInputType.cpp | 6 + WebCore/html/DateTimeInputType.h | 1 + WebCore/html/DocTypeStrings.gperf | 13 + WebCore/html/FileInputType.cpp | 6 + WebCore/html/FileInputType.h | 1 + WebCore/html/HTMLAreaElement.cpp | 8 + WebCore/html/HTMLFieldSetElement.h | 1 + WebCore/html/HTMLImageLoader.cpp | 7 +- WebCore/html/HTMLInputElement.cpp | 306 +- WebCore/html/HTMLInputElement.h | 3 +- WebCore/html/HTMLKeygenElement.h | 1 - WebCore/html/HTMLLinkElement.idl | 2 +- WebCore/html/HTMLMeterElement.cpp | 10 +- WebCore/html/HTMLMeterElement.h | 4 +- WebCore/html/HTMLObjectElement.cpp | 8 +- WebCore/html/HTMLOutputElement.cpp | 18 +- WebCore/html/HTMLProgressElement.h | 2 +- WebCore/html/HTMLScriptElement.cpp | 10 +- WebCore/html/HTMLScriptElement.h | 6 +- WebCore/html/HTMLStyleElement.idl | 2 +- WebCore/html/HTMLTagNames.in | 4 +- WebCore/html/InputType.cpp | 38 +- WebCore/html/InputType.h | 8 + WebCore/html/MonthInputType.cpp | 17 + WebCore/html/MonthInputType.h | 1 + WebCore/html/RadioInputType.cpp | 105 +- WebCore/html/RadioInputType.h | 3 + WebCore/html/RangeInputType.cpp | 14 +- WebCore/html/RangeInputType.h | 1 + WebCore/html/TextFieldInputType.cpp | 6 + WebCore/html/TextFieldInputType.h | 1 + WebCore/html/TimeInputType.cpp | 18 + WebCore/html/TimeInputType.h | 1 + WebCore/html/ValidityState.cpp | 15 +- WebCore/html/canvas/ArrayBuffer.cpp | 5 +- WebCore/html/canvas/ArrayBufferView.h | 3 +- WebCore/html/canvas/ArrayBufferView.idl | 3 - WebCore/html/canvas/CanvasRenderingContext2D.cpp | 9 +- WebCore/html/canvas/DataView.cpp | 228 + WebCore/html/canvas/DataView.h | 92 + WebCore/html/canvas/DataView.idl | 83 + WebCore/html/canvas/Float32Array.cpp | 7 +- WebCore/html/canvas/Float32Array.h | 8 +- WebCore/html/canvas/Float32Array.idl | 3 + WebCore/html/canvas/Int16Array.cpp | 7 +- WebCore/html/canvas/Int16Array.h | 8 +- WebCore/html/canvas/Int16Array.idl | 3 + WebCore/html/canvas/Int32Array.cpp | 7 +- WebCore/html/canvas/Int32Array.h | 8 +- WebCore/html/canvas/Int32Array.idl | 3 + WebCore/html/canvas/Int8Array.cpp | 7 +- WebCore/html/canvas/Int8Array.h | 8 +- WebCore/html/canvas/Int8Array.idl | 3 + WebCore/html/canvas/TypedArrayBase.h | 4 +- WebCore/html/canvas/Uint16Array.cpp | 7 +- WebCore/html/canvas/Uint16Array.h | 8 +- WebCore/html/canvas/Uint16Array.idl | 3 + WebCore/html/canvas/Uint32Array.cpp | 7 +- WebCore/html/canvas/Uint32Array.h | 8 +- WebCore/html/canvas/Uint32Array.idl | 3 + WebCore/html/canvas/Uint8Array.cpp | 7 +- WebCore/html/canvas/Uint8Array.h | 8 +- WebCore/html/canvas/Uint8Array.idl | 3 + WebCore/html/canvas/WebGLBuffer.cpp | 7 +- WebCore/html/canvas/WebGLBuffer.h | 2 + WebCore/html/canvas/WebGLFramebuffer.cpp | 1 + WebCore/html/canvas/WebGLFramebuffer.h | 6 + WebCore/html/canvas/WebGLRenderbuffer.cpp | 1 + WebCore/html/canvas/WebGLRenderbuffer.h | 6 + WebCore/html/canvas/WebGLRenderingContext.cpp | 24 +- WebCore/html/canvas/WebGLTexture.h | 2 + WebCore/inspector/CodeGeneratorInspector.pm | 95 +- WebCore/inspector/ConsoleMessage.cpp | 3 +- WebCore/inspector/ConsoleMessage.h | 6 +- WebCore/inspector/InjectedScriptHost.idl | 1 + WebCore/inspector/Inspector.idl | 13 +- WebCore/inspector/InspectorCSSAgent.cpp | 25 +- WebCore/inspector/InspectorCSSAgent.h | 9 +- WebCore/inspector/InspectorController.cpp | 15 +- WebCore/inspector/InspectorController.h | 4 +- WebCore/inspector/InspectorDebuggerAgent.cpp | 4 +- WebCore/inspector/InspectorDebuggerAgent.h | 4 +- WebCore/inspector/InspectorProfilerAgent.cpp | 27 +- WebCore/inspector/InspectorProfilerAgent.h | 4 +- WebCore/inspector/InspectorResourceAgent.cpp | 16 +- WebCore/inspector/InspectorResourceAgent.h | 2 +- WebCore/inspector/InspectorStyleSheet.cpp | 324 +- WebCore/inspector/InspectorStyleSheet.h | 58 +- WebCore/inspector/ScriptArguments.cpp | 5 + WebCore/inspector/ScriptArguments.h | 9 +- WebCore/inspector/ScriptBreakpoint.h | 2 + WebCore/inspector/ScriptCallFrame.h | 2 +- WebCore/inspector/ScriptCallStack.cpp | 9 +- WebCore/inspector/ScriptCallStack.h | 14 +- WebCore/inspector/front-end/AuditRules.js | 4 +- WebCore/inspector/front-end/CSSStyleModel.js | 67 +- WebCore/inspector/front-end/Color.js | 4 +- WebCore/inspector/front-end/CookieItemsView.js | 269 +- WebCore/inspector/front-end/CookiesTable.js | 205 + WebCore/inspector/front-end/ElementsPanel.js | 2 +- WebCore/inspector/front-end/ExtensionAPI.js | 167 +- WebCore/inspector/front-end/ExtensionCommon.js | 8 +- WebCore/inspector/front-end/ExtensionServer.js | 124 +- WebCore/inspector/front-end/FileSystemView.js | 4 +- WebCore/inspector/front-end/FontView.js | 9 +- WebCore/inspector/front-end/HAREntry.js | 8 +- WebCore/inspector/front-end/HeapSnapshotView.js | 203 +- WebCore/inspector/front-end/HelpScreen.js | 16 +- WebCore/inspector/front-end/ImageView.js | 21 +- WebCore/inspector/front-end/InjectedScript.js | 41 +- WebCore/inspector/front-end/NetworkItemView.js | 91 + WebCore/inspector/front-end/NetworkPanel.js | 184 +- WebCore/inspector/front-end/Popover.js | 12 +- WebCore/inspector/front-end/ProfilesPanel.js | 20 + WebCore/inspector/front-end/Resource.js | 92 +- WebCore/inspector/front-end/ResourceCookiesView.js | 69 + WebCore/inspector/front-end/ResourceHeadersView.js | 276 + WebCore/inspector/front-end/ResourceManager.js | 49 +- WebCore/inspector/front-end/ResourceTimingView.js | 157 + WebCore/inspector/front-end/ResourceView.js | 396 +- WebCore/inspector/front-end/ResourcesPanel.js | 109 +- WebCore/inspector/front-end/ScriptsPanel.js | 27 +- WebCore/inspector/front-end/Settings.js | 2 + WebCore/inspector/front-end/SourceFrame.js | 49 + WebCore/inspector/front-end/SourceView.js | 72 +- WebCore/inspector/front-end/StylesSidebarPane.js | 106 +- WebCore/inspector/front-end/TabbedPane.js | 75 +- WebCore/inspector/front-end/TimelinePanel.js | 2 +- WebCore/inspector/front-end/WebKit.qrc | 5 + WebCore/inspector/front-end/WorkersSidebarPane.js | 1 - WebCore/inspector/front-end/inspector.css | 134 +- WebCore/inspector/front-end/inspector.html | 6 + WebCore/inspector/front-end/inspector.js | 16 +- WebCore/inspector/front-end/networkPanel.css | 185 +- WebCore/inspector/front-end/textViewer.css | 17 +- WebCore/inspector/front-end/utilities.js | 48 + WebCore/loader/DocumentLoadTiming.h | 2 + WebCore/loader/EmptyClients.h | 4 +- WebCore/loader/FTPDirectoryParser.cpp | 6 +- WebCore/loader/FrameLoader.cpp | 20 +- WebCore/loader/HistoryController.cpp | 26 +- WebCore/loader/HistoryController.h | 2 + WebCore/loader/NavigationScheduler.h | 6 +- WebCore/loader/ResourceLoadScheduler.cpp | 5 +- WebCore/loader/cache/CachePolicy.h | 2 +- WebCore/loader/cache/CachedImage.cpp | 4 +- WebCore/loader/cache/CachedImage.h | 5 +- WebCore/loader/cache/CachedResource.cpp | 7 +- WebCore/loader/cache/CachedResource.h | 3 +- WebCore/loader/cache/CachedResourceLoader.cpp | 5 +- WebCore/loader/cache/MemoryCache.cpp | 26 +- WebCore/loader/cache/MemoryCache.h | 2 +- WebCore/loader/loader.cpp | 5 +- WebCore/make-hash-tools.pl | 102 +- .../autocorrection/autocorrection-contraction.html | 52 + .../autocorrection/dismiss-multiple-guesses.html | 49 + .../select-from-multiple-guesses.html | 49 + WebCore/manual-tests/indexeddb-persists.html | 4 +- .../input-type-datetime-default-value.html | 80 + WebCore/mathml/MathMLInlineContainerElement.cpp | 26 +- WebCore/mathml/RenderMathMLOperator.cpp | 2 +- WebCore/mathml/RenderMathMLRoot.cpp | 10 +- WebCore/mathml/RenderMathMLSquareRoot.cpp | 12 +- WebCore/page/ChromeClient.h | 13 + WebCore/page/Console.cpp | 36 +- WebCore/page/Console.h | 38 +- WebCore/page/DOMWindow.cpp | 33 +- WebCore/page/DOMWindow.h | 7 +- WebCore/page/DOMWindow.idl | 4 + WebCore/page/EditorClient.h | 5 +- WebCore/page/EventHandler.cpp | 11 +- WebCore/page/EventSource.cpp | 3 + WebCore/page/FocusController.cpp | 428 +- WebCore/page/FocusController.h | 6 +- WebCore/page/Frame.cpp | 9 +- WebCore/page/FrameView.cpp | 33 +- WebCore/page/FrameView.h | 7 +- WebCore/page/Geolocation.cpp | 36 + WebCore/page/Geolocation.h | 3 + WebCore/page/Page.cpp | 19 +- WebCore/page/Page.h | 7 +- WebCore/page/PerformanceTiming.cpp | 9 + WebCore/page/PerformanceTiming.h | 1 + WebCore/page/PerformanceTiming.idl | 1 + WebCore/page/SecurityOrigin.cpp | 3 + WebCore/page/Settings.cpp | 38 +- WebCore/page/Settings.h | 26 +- WebCore/page/SpatialNavigation.cpp | 658 +- WebCore/page/SpatialNavigation.h | 36 +- WebCore/page/SpeechInputEvent.cpp | 54 + WebCore/page/SpeechInputEvent.h | 59 + WebCore/page/SpeechInputEvent.idl | 34 + WebCore/page/SpeechInputListener.h | 2 - WebCore/page/SpeechInputResult.cpp | 5 + WebCore/page/SpeechInputResult.h | 3 + WebCore/page/SpeechInputResult.idl | 35 + WebCore/page/SpeechInputResultList.cpp | 55 + WebCore/page/SpeechInputResultList.h | 57 + WebCore/page/SpeechInputResultList.idl | 36 + WebCore/page/animation/AnimationBase.cpp | 4 +- WebCore/page/mac/WebCoreFrameView.h | 2 + WebCore/page/qt/FrameQt.cpp | 26 +- WebCore/platform/ColorData.gperf | 13 + WebCore/platform/ContextMenu.h | 3 + WebCore/platform/HashTools.h | 59 + WebCore/platform/KURL.cpp | 2 +- WebCore/platform/KURLGoogle.cpp | 2 +- WebCore/platform/LocalizedStrings.cpp | 25 + WebCore/platform/LocalizedStrings.h | 5 + WebCore/platform/MIMETypeRegistry.cpp | 6 +- WebCore/platform/ScrollView.cpp | 68 +- WebCore/platform/ScrollView.h | 31 +- WebCore/platform/UUID.cpp | 2 +- .../platform/android/LocalizedStringsAndroid.cpp | 30 + WebCore/platform/android/PlatformBridge.h | 9 + WebCore/platform/android/ScrollViewAndroid.cpp | 2 +- WebCore/platform/audio/Cone.cpp | 8 +- WebCore/platform/audio/Cone.h | 4 +- WebCore/platform/brew/LocalizedStringsBrew.cpp | 30 + WebCore/platform/chromium/ChromiumBridge.h | 9 + WebCore/platform/efl/LocalizedStringsEfl.cpp | 30 + WebCore/platform/efl/RenderThemeEfl.cpp | 3 +- WebCore/platform/graphics/ContextShadow.h | 3 + WebCore/platform/graphics/FloatPoint3D.h | 22 + WebCore/platform/graphics/GraphicsContext.h | 14 +- WebCore/platform/graphics/GraphicsContextPrivate.h | 3 - WebCore/platform/graphics/GraphicsTypes.cpp | 2 +- WebCore/platform/graphics/MediaPlayer.cpp | 1 + WebCore/platform/graphics/Path.h | 3 - WebCore/platform/graphics/SimpleFontData.h | 5 +- WebCore/platform/graphics/TextRun.h | 5 +- WebCore/platform/graphics/WOFFFileFormat.cpp | 10 +- .../platform/graphics/cairo/ContextShadowCairo.cpp | 16 +- .../graphics/cairo/GraphicsContextCairo.cpp | 50 +- .../cairo/GraphicsContextPlatformPrivateCairo.h | 2 - WebCore/platform/graphics/cg/GraphicsContextCG.cpp | 99 +- .../graphics/chromium/ContentLayerChromium.cpp | 23 +- .../graphics/chromium/CrossProcessFontLoading.mm | 9 +- .../graphics/chromium/FontCacheChromiumWin.cpp | 3 +- WebCore/platform/graphics/chromium/FontLinux.cpp | 41 +- .../graphics/chromium/FontPlatformDataLinux.cpp | 2 +- .../graphics/chromium/FontUtilsChromiumWin.cpp | 4 +- .../chromium/SimpleFontDataChromiumWin.cpp | 15 + .../graphics/chromium/SimpleFontDataLinux.cpp | 15 + WebCore/platform/graphics/cocoa/FontPlatformData.h | 10 +- .../graphics/cocoa/FontPlatformDataCocoa.mm | 10 +- WebCore/platform/graphics/filters/FEBlend.cpp | 16 +- WebCore/platform/graphics/filters/FEBlend.h | 6 +- .../platform/graphics/filters/FEColorMatrix.cpp | 14 +- WebCore/platform/graphics/filters/FEColorMatrix.h | 6 +- .../graphics/filters/FEComponentTransfer.cpp | 14 +- .../graphics/filters/FEComponentTransfer.h | 6 +- WebCore/platform/graphics/filters/FEComposite.cpp | 20 +- WebCore/platform/graphics/filters/FEComposite.h | 8 +- .../platform/graphics/filters/FEConvolveMatrix.cpp | 14 +- .../platform/graphics/filters/FEConvolveMatrix.h | 8 +- .../graphics/filters/FEDiffuseLighting.cpp | 8 +- .../platform/graphics/filters/FEDiffuseLighting.h | 4 +- .../graphics/filters/FEDisplacementMap.cpp | 17 +- .../platform/graphics/filters/FEDisplacementMap.h | 8 +- WebCore/platform/graphics/filters/FEFlood.cpp | 12 +- WebCore/platform/graphics/filters/FEFlood.h | 8 +- .../platform/graphics/filters/FEGaussianBlur.cpp | 20 +- WebCore/platform/graphics/filters/FEGaussianBlur.h | 8 +- WebCore/platform/graphics/filters/FELighting.cpp | 10 +- WebCore/platform/graphics/filters/FELighting.h | 6 +- WebCore/platform/graphics/filters/FEMerge.cpp | 14 +- WebCore/platform/graphics/filters/FEMerge.h | 6 +- WebCore/platform/graphics/filters/FEMorphology.cpp | 18 +- WebCore/platform/graphics/filters/FEMorphology.h | 8 +- WebCore/platform/graphics/filters/FEOffset.cpp | 18 +- WebCore/platform/graphics/filters/FEOffset.h | 8 +- .../graphics/filters/FESpecularLighting.cpp | 8 +- .../platform/graphics/filters/FESpecularLighting.h | 4 +- WebCore/platform/graphics/filters/FETile.cpp | 15 +- WebCore/platform/graphics/filters/FETile.h | 8 +- WebCore/platform/graphics/filters/FETurbulence.cpp | 14 +- WebCore/platform/graphics/filters/FETurbulence.h | 8 +- WebCore/platform/graphics/filters/FilterEffect.cpp | 10 +- WebCore/platform/graphics/filters/FilterEffect.h | 11 +- WebCore/platform/graphics/filters/SourceAlpha.cpp | 12 +- WebCore/platform/graphics/filters/SourceAlpha.h | 11 +- .../platform/graphics/filters/SourceGraphic.cpp | 12 +- WebCore/platform/graphics/filters/SourceGraphic.h | 11 +- .../graphics/freetype/FontPlatformDataFreeType.cpp | 4 +- WebCore/platform/graphics/gpu/DrawingBuffer.cpp | 26 +- .../graphics/gstreamer/GStreamerGWorld.cpp | 7 + .../gstreamer/MediaPlayerPrivateGStreamer.cpp | 56 +- .../gstreamer/MediaPlayerPrivateGStreamer.h | 9 +- .../graphics/haiku/GraphicsContextHaiku.cpp | 16 +- .../graphics/mac/ComplexTextController.cpp | 4 +- .../graphics/mac/ComplexTextControllerATSUI.cpp | 2 +- .../graphics/mac/ComplexTextControllerCoreText.cpp | 4 +- .../graphics/mac/FontCustomPlatformData.cpp | 6 +- .../platform/graphics/mac/FontCustomPlatformData.h | 12 +- .../platform/graphics/mac/GraphicsContextMac.mm | 18 +- .../graphics/mac/MediaPlayerPrivateQTKit.mm | 8 +- .../platform/graphics/mac/SimpleFontDataATSUI.mm | 6 +- .../graphics/mac/SimpleFontDataCoreText.cpp | 6 +- .../graphics/opengl/GraphicsContext3DOpenGL.cpp | 26 +- .../graphics/openvg/GraphicsContextOpenVG.cpp | 26 +- WebCore/platform/graphics/qt/ContextShadowQt.cpp | 12 +- .../platform/graphics/qt/FontPlatformDataQt.cpp | 4 +- WebCore/platform/graphics/qt/FontQt.cpp | 78 +- WebCore/platform/graphics/qt/GraphicsContextQt.cpp | 258 +- WebCore/platform/graphics/qt/ImageQt.cpp | 41 +- .../platform/graphics/skia/GraphicsContextSkia.cpp | 20 +- WebCore/platform/graphics/skia/ImageBufferSkia.cpp | 6 + .../platform/graphics/win/GraphicsContextCGWin.cpp | 11 +- .../MediaPlayerPrivateQuickTimeVisualContext.cpp | 5 +- WebCore/platform/graphics/win/QTMovie.cpp | 2 +- .../platform/graphics/win/cairo/FontPlatformData.h | 8 +- .../graphics/wince/GraphicsContextWinCE.cpp | 14 +- WebCore/platform/graphics/wx/GraphicsContextWx.cpp | 22 +- WebCore/platform/graphics/wx/ImageBufferWx.cpp | 2 +- WebCore/platform/gtk/FileSystemGtk.cpp | 6 + WebCore/platform/gtk/GtkVersioning.c | 10 + WebCore/platform/gtk/GtkVersioning.h | 4 + WebCore/platform/gtk/LocalizedStringsGtk.cpp | 30 + WebCore/platform/gtk/PopupMenuGtk.cpp | 112 +- WebCore/platform/gtk/PopupMenuGtk.h | 11 +- WebCore/platform/haiku/LocalizedStringsHaiku.cpp | 30 + WebCore/platform/image-decoders/ImageDecoder.h | 3 + .../platform/image-decoders/cg/ImageDecoderCG.cpp | 2 +- .../image-decoders/jpeg/JPEGImageDecoder.cpp | 3 +- .../image-decoders/png/PNGImageDecoder.cpp | 2 +- WebCore/platform/mac/ScrollViewMac.mm | 10 +- WebCore/platform/mock/GeolocationClientMock.cpp | 135 + WebCore/platform/mock/GeolocationClientMock.h | 84 + WebCore/platform/mock/SpeechInputClientMock.cpp | 27 +- WebCore/platform/mock/SpeechInputClientMock.h | 7 +- WebCore/platform/network/ResourceLoadInfo.h | 46 + WebCore/platform/network/ResourceRawHeaders.h | 41 - WebCore/platform/network/ResourceResponseBase.cpp | 8 +- WebCore/platform/network/ResourceResponseBase.h | 8 +- .../network/cf/SocketStreamHandleCFNet.cpp | 4 +- .../platform/network/soup/ResourceHandleSoup.cpp | 45 +- .../network/soup/cache/soup-http-input-stream.c | 1 + .../network/soup/cache/soup-request-http.c | 17 +- .../network/soup/cache/webkit/soup-cache.c | 56 +- WebCore/platform/qt/DragImageQt.cpp | 26 +- WebCore/platform/qt/PasteboardQt.cpp | 2 + WebCore/platform/qt/ScrollViewQt.cpp | 8 - WebCore/platform/text/TextBoundaries.cpp | 28 + WebCore/platform/text/TextBoundaries.h | 3 + WebCore/platform/text/TextCodecUTF16.cpp | 11 +- WebCore/platform/text/TextEncodingRegistry.cpp | 3 +- WebCore/platform/text/brew/StringBrew.cpp | 4 +- .../platform/text/transcoder/FontTranscoder.cpp | 10 +- .../platform/text/wince/TextBoundariesWinCE.cpp | 74 - .../platform/text/wince/TextBreakIteratorWinCE.cpp | 49 +- WebCore/platform/win/ContextMenuWin.cpp | 76 +- WebCore/platform/win/FileSystemWin.cpp | 5 +- WebCore/platform/wince/FileSystemWinCE.cpp | 42 +- WebCore/platform/wx/LocalizedStringsWx.cpp | 32 +- WebCore/plugins/gtk/PluginViewGtk.cpp | 2 +- WebCore/rendering/InlineBox.h | 7 + WebCore/rendering/InlineFlowBox.cpp | 83 +- WebCore/rendering/InlineFlowBox.h | 4 +- WebCore/rendering/InlineTextBox.cpp | 5 +- WebCore/rendering/InlineTextBox.h | 2 +- WebCore/rendering/RenderBlock.cpp | 45 +- WebCore/rendering/RenderBlock.h | 7 +- WebCore/rendering/RenderBlockLineLayout.cpp | 10 +- WebCore/rendering/RenderBox.cpp | 15 +- WebCore/rendering/RenderBox.h | 2 + WebCore/rendering/RenderBoxModelObject.cpp | 49 +- WebCore/rendering/RenderBoxModelObject.h | 2 +- WebCore/rendering/RenderEmbeddedObject.cpp | 6 +- WebCore/rendering/RenderFieldset.cpp | 2 +- WebCore/rendering/RenderFieldset.h | 2 +- WebCore/rendering/RenderFlexibleBox.cpp | 19 +- WebCore/rendering/RenderIFrame.cpp | 1 + WebCore/rendering/RenderImage.cpp | 13 +- WebCore/rendering/RenderImage.h | 2 +- WebCore/rendering/RenderLayer.cpp | 43 +- WebCore/rendering/RenderLayer.h | 33 +- WebCore/rendering/RenderLayerBacking.cpp | 2 +- WebCore/rendering/RenderLayerCompositor.cpp | 33 +- WebCore/rendering/RenderLayerCompositor.h | 7 +- WebCore/rendering/RenderListItem.cpp | 1 + WebCore/rendering/RenderObject.cpp | 8 +- WebCore/rendering/RenderObject.h | 17 +- WebCore/rendering/RenderReplaced.cpp | 1 + WebCore/rendering/RenderReplica.cpp | 1 + WebCore/rendering/RenderRubyRun.cpp | 66 +- WebCore/rendering/RenderRubyRun.h | 3 + WebCore/rendering/RenderSVGResource.h | 3 +- WebCore/rendering/RenderSVGResourceClipper.cpp | 4 +- WebCore/rendering/RenderSVGResourceFilter.cpp | 18 +- WebCore/rendering/RenderSVGResourceFilter.h | 4 +- WebCore/rendering/RenderSVGResourceGradient.cpp | 8 +- WebCore/rendering/RenderSVGResourceGradient.h | 2 +- WebCore/rendering/RenderSVGResourcePattern.cpp | 8 +- WebCore/rendering/RenderSVGResourcePattern.h | 2 +- WebCore/rendering/RenderSVGResourceSolidColor.cpp | 11 +- WebCore/rendering/RenderSVGResourceSolidColor.h | 2 +- WebCore/rendering/RenderSlider.cpp | 1 + WebCore/rendering/RenderTable.cpp | 2 + WebCore/rendering/RenderTableRow.cpp | 1 + WebCore/rendering/RenderTableSection.cpp | 1 + WebCore/rendering/RenderText.cpp | 2 +- WebCore/rendering/RenderTextControl.cpp | 6 +- WebCore/rendering/RenderTextControlSingleLine.cpp | 20 +- WebCore/rendering/RenderTextControlSingleLine.h | 4 + WebCore/rendering/RenderThemeChromiumSkia.cpp | 3 +- WebCore/rendering/RenderView.cpp | 30 +- WebCore/rendering/RenderView.h | 8 + WebCore/rendering/RootInlineBox.cpp | 39 +- WebCore/rendering/RootInlineBox.h | 7 + WebCore/rendering/SVGRenderSupport.cpp | 2 +- WebCore/rendering/SVGRenderTreeAsText.cpp | 10 +- WebCore/rendering/TextControlInnerElements.cpp | 9 +- WebCore/rendering/TextControlInnerElements.h | 1 - WebCore/rendering/break_lines.cpp | 4 +- WebCore/rendering/style/RenderStyle.h | 5 + WebCore/rendering/svg/RenderSVGPath.cpp | 23 +- WebCore/rendering/svg/SVGInlineTextBox.cpp | 10 +- WebCore/rendering/svg/SVGInlineTextBox.h | 2 +- WebCore/storage/IDBCursor.idl | 10 +- WebCore/storage/IDBDatabase.cpp | 59 +- WebCore/storage/IDBDatabase.h | 16 +- WebCore/storage/IDBDatabase.idl | 11 +- WebCore/storage/IDBDatabaseBackendImpl.cpp | 57 +- WebCore/storage/IDBDatabaseBackendImpl.h | 17 +- WebCore/storage/IDBDatabaseBackendInterface.h | 5 +- WebCore/storage/IDBFactory.cpp | 8 +- WebCore/storage/IDBFactory.h | 2 +- WebCore/storage/IDBFactory.idl | 2 +- WebCore/storage/IDBFactoryBackendImpl.cpp | 14 +- WebCore/storage/IDBFactoryBackendImpl.h | 4 +- WebCore/storage/IDBFactoryBackendInterface.h | 2 +- WebCore/storage/IDBIndex.cpp | 29 +- WebCore/storage/IDBIndex.h | 11 +- WebCore/storage/IDBIndex.idl | 4 +- WebCore/storage/IDBIndexBackendImpl.cpp | 20 +- WebCore/storage/IDBKey.cpp | 4 +- WebCore/storage/IDBKey.h | 6 +- WebCore/storage/IDBKeyRange.cpp | 68 +- WebCore/storage/IDBKeyRange.h | 41 +- WebCore/storage/IDBKeyRange.idl | 20 +- WebCore/storage/IDBObjectStore.cpp | 33 +- WebCore/storage/IDBObjectStore.h | 14 +- WebCore/storage/IDBObjectStore.idl | 8 +- WebCore/storage/IDBObjectStoreBackendImpl.cpp | 40 +- WebCore/storage/IDBObjectStoreBackendImpl.h | 8 +- WebCore/storage/IDBObjectStoreBackendInterface.h | 4 +- WebCore/storage/IDBTransaction.cpp | 4 +- WebCore/storage/IDBTransaction.h | 3 +- WebCore/storage/IDBTransaction.idl | 3 +- WebCore/storage/IDBTransactionBackendImpl.cpp | 26 +- WebCore/storage/IDBTransactionBackendImpl.h | 2 +- WebCore/storage/IDBTransactionBackendInterface.h | 2 +- WebCore/storage/Storage.cpp | 11 +- WebCore/svg/DeprecatedSVGAnimatedProperty.h | 217 - WebCore/svg/DeprecatedSVGAnimatedPropertyTraits.h | 35 - WebCore/svg/DeprecatedSVGAnimatedTemplate.h | 157 - WebCore/svg/SVGAElement.cpp | 3 + WebCore/svg/SVGAllInOne.cpp | 12 - WebCore/svg/SVGAngle.h | 8 +- WebCore/svg/SVGAnimatedLength.h | 7 + WebCore/svg/SVGAnimatedLengthList.h | 7 + WebCore/svg/SVGAnimatedNumber.h | 11 + WebCore/svg/SVGAnimatedNumberList.h | 7 + WebCore/svg/SVGAnimatedPathData.cpp | 1 - WebCore/svg/SVGAnimatedPathData.h | 45 - WebCore/svg/SVGAnimatedPathData.idl | 35 - WebCore/svg/SVGAnimatedTransformList.h | 7 + WebCore/svg/SVGAnimationElement.cpp | 10 +- WebCore/svg/SVGCircleElement.cpp | 8 + WebCore/svg/SVGCircleElement.h | 41 +- WebCore/svg/SVGClipPathElement.cpp | 3 + .../svg/SVGComponentTransferFunctionElement.cpp | 10 +- WebCore/svg/SVGComponentTransferFunctionElement.h | 43 +- WebCore/svg/SVGCursorElement.cpp | 7 + WebCore/svg/SVGCursorElement.h | 49 +- WebCore/svg/SVGDefsElement.cpp | 10 +- WebCore/svg/SVGElement.h | 3 - WebCore/svg/SVGEllipseElement.cpp | 9 + WebCore/svg/SVGEllipseElement.h | 45 +- WebCore/svg/SVGFEBlendElement.cpp | 4 +- WebCore/svg/SVGFEBlendElement.h | 2 +- WebCore/svg/SVGFEColorMatrixElement.cpp | 9 +- WebCore/svg/SVGFEColorMatrixElement.h | 7 +- WebCore/svg/SVGFEComponentTransferElement.cpp | 4 +- WebCore/svg/SVGFEComponentTransferElement.h | 2 +- WebCore/svg/SVGFECompositeElement.cpp | 10 +- WebCore/svg/SVGFECompositeElement.h | 12 +- WebCore/svg/SVGFEConvolveMatrixElement.cpp | 17 +- WebCore/svg/SVGFEConvolveMatrixElement.h | 18 +- WebCore/svg/SVGFEDiffuseLightingElement.cpp | 10 +- WebCore/svg/SVGFEDiffuseLightingElement.h | 11 +- WebCore/svg/SVGFEDisplacementMapElement.cpp | 7 +- WebCore/svg/SVGFEDisplacementMapElement.h | 8 +- WebCore/svg/SVGFEFloodElement.cpp | 4 +- WebCore/svg/SVGFEFloodElement.h | 2 +- WebCore/svg/SVGFEGaussianBlurElement.cpp | 8 +- WebCore/svg/SVGFEGaussianBlurElement.h | 8 +- WebCore/svg/SVGFEImageElement.cpp | 4 +- WebCore/svg/SVGFEImageElement.h | 2 +- WebCore/svg/SVGFELightElement.cpp | 12 + WebCore/svg/SVGFELightElement.h | 23 +- WebCore/svg/SVGFEMergeElement.cpp | 4 +- WebCore/svg/SVGFEMergeElement.h | 2 +- WebCore/svg/SVGFEMorphologyElement.cpp | 8 +- WebCore/svg/SVGFEMorphologyElement.h | 8 +- WebCore/svg/SVGFEOffsetElement.cpp | 8 +- WebCore/svg/SVGFEOffsetElement.h | 8 +- WebCore/svg/SVGFESpecularLightingElement.cpp | 11 +- WebCore/svg/SVGFESpecularLightingElement.h | 14 +- WebCore/svg/SVGFETileElement.cpp | 4 +- WebCore/svg/SVGFETileElement.h | 2 +- WebCore/svg/SVGFETurbulenceElement.cpp | 9 +- WebCore/svg/SVGFETurbulenceElement.h | 10 +- WebCore/svg/SVGFilterElement.cpp | 6 + WebCore/svg/SVGFilterElement.h | 9 +- .../svg/SVGFilterPrimitiveStandardAttributes.cpp | 6 + WebCore/svg/SVGFilterPrimitiveStandardAttributes.h | 11 +- WebCore/svg/SVGFont.cpp | 5 +- WebCore/svg/SVGFontFaceElement.cpp | 1 + WebCore/svg/SVGForeignObjectElement.cpp | 11 +- WebCore/svg/SVGForeignObjectElement.h | 50 +- WebCore/svg/SVGGElement.cpp | 10 +- WebCore/svg/SVGGradientElement.cpp | 5 +- WebCore/svg/SVGGradientElement.h | 44 +- WebCore/svg/SVGImageElement.cpp | 9 + WebCore/svg/SVGImageElement.h | 77 +- WebCore/svg/SVGLength.h | 9 +- WebCore/svg/SVGLengthList.cpp | 2 +- WebCore/svg/SVGLengthList.h | 8 + WebCore/svg/SVGLengthList.idl | 12 +- WebCore/svg/SVGLineElement.cpp | 9 + WebCore/svg/SVGLineElement.h | 49 +- WebCore/svg/SVGLinearGradientElement.cpp | 6 + WebCore/svg/SVGLinearGradientElement.h | 38 +- WebCore/svg/SVGList.h | 280 - WebCore/svg/SVGListTraits.h | 73 - WebCore/svg/SVGMarkerElement.cpp | 8 +- WebCore/svg/SVGMarkerElement.h | 11 +- WebCore/svg/SVGMaskElement.cpp | 12 +- WebCore/svg/SVGMaskElement.h | 55 +- WebCore/svg/SVGNumberList.cpp | 2 +- WebCore/svg/SVGNumberList.h | 10 +- WebCore/svg/SVGNumberList.idl | 12 +- WebCore/svg/SVGParserUtilities.cpp | 24 +- WebCore/svg/SVGPathElement.cpp | 186 +- WebCore/svg/SVGPathElement.h | 170 +- WebCore/svg/SVGPathElement.idl | 8 +- WebCore/svg/SVGPathParserFactory.cpp | 75 +- WebCore/svg/SVGPathParserFactory.h | 18 +- WebCore/svg/SVGPathSeg.cpp | 40 - WebCore/svg/SVGPathSeg.h | 33 +- WebCore/svg/SVGPathSeg.idl | 40 +- WebCore/svg/SVGPathSegArc.cpp | 42 - WebCore/svg/SVGPathSegArc.h | 185 +- WebCore/svg/SVGPathSegArcAbs.idl | 21 +- WebCore/svg/SVGPathSegArcRel.idl | 21 +- WebCore/svg/SVGPathSegClosePath.cpp | 1 - WebCore/svg/SVGPathSegClosePath.h | 16 +- WebCore/svg/SVGPathSegCurvetoCubic.cpp | 42 - WebCore/svg/SVGPathSegCurvetoCubic.h | 161 +- WebCore/svg/SVGPathSegCurvetoCubicAbs.idl | 20 +- WebCore/svg/SVGPathSegCurvetoCubicRel.idl | 20 +- WebCore/svg/SVGPathSegCurvetoCubicSmooth.cpp | 41 - WebCore/svg/SVGPathSegCurvetoCubicSmooth.h | 133 +- WebCore/svg/SVGPathSegCurvetoCubicSmoothAbs.idl | 14 +- WebCore/svg/SVGPathSegCurvetoCubicSmoothRel.idl | 14 +- WebCore/svg/SVGPathSegCurvetoQuadratic.cpp | 42 - WebCore/svg/SVGPathSegCurvetoQuadratic.h | 135 +- WebCore/svg/SVGPathSegCurvetoQuadraticAbs.idl | 12 +- WebCore/svg/SVGPathSegCurvetoQuadraticRel.idl | 12 +- WebCore/svg/SVGPathSegCurvetoQuadraticSmooth.cpp | 42 - WebCore/svg/SVGPathSegCurvetoQuadraticSmooth.h | 50 +- .../svg/SVGPathSegCurvetoQuadraticSmoothAbs.idl | 6 +- .../svg/SVGPathSegCurvetoQuadraticSmoothRel.idl | 6 +- WebCore/svg/SVGPathSegLineto.cpp | 42 - WebCore/svg/SVGPathSegLineto.h | 50 +- WebCore/svg/SVGPathSegLinetoAbs.idl | 6 +- WebCore/svg/SVGPathSegLinetoHorizontal.cpp | 42 - WebCore/svg/SVGPathSegLinetoHorizontal.h | 90 +- WebCore/svg/SVGPathSegLinetoHorizontalAbs.idl | 3 +- WebCore/svg/SVGPathSegLinetoHorizontalRel.idl | 3 +- WebCore/svg/SVGPathSegLinetoRel.idl | 6 +- WebCore/svg/SVGPathSegLinetoVertical.cpp | 41 - WebCore/svg/SVGPathSegLinetoVertical.h | 90 +- WebCore/svg/SVGPathSegLinetoVerticalAbs.idl | 3 +- WebCore/svg/SVGPathSegLinetoVerticalRel.idl | 3 +- WebCore/svg/SVGPathSegList.cpp | 16 +- WebCore/svg/SVGPathSegList.h | 25 +- WebCore/svg/SVGPathSegList.idl | 14 +- WebCore/svg/SVGPathSegListBuilder.cpp | 72 +- WebCore/svg/SVGPathSegListBuilder.h | 14 +- WebCore/svg/SVGPathSegListSource.cpp | 23 +- WebCore/svg/SVGPathSegListSource.h | 6 +- WebCore/svg/SVGPathSegMoveto.cpp | 41 - WebCore/svg/SVGPathSegMoveto.h | 51 +- WebCore/svg/SVGPathSegMovetoAbs.idl | 6 +- WebCore/svg/SVGPathSegMovetoRel.idl | 6 +- WebCore/svg/SVGPathSegWithContext.h | 109 + WebCore/svg/SVGPatternElement.cpp | 24 +- WebCore/svg/SVGPatternElement.h | 96 +- WebCore/svg/SVGPointList.h | 8 +- WebCore/svg/SVGPointList.idl | 12 +- WebCore/svg/SVGPolyElement.cpp | 3 + WebCore/svg/SVGPolygonElement.cpp | 2 + WebCore/svg/SVGPolylineElement.cpp | 2 + WebCore/svg/SVGPreserveAspectRatio.h | 8 +- WebCore/svg/SVGRadialGradientElement.cpp | 8 +- WebCore/svg/SVGRadialGradientElement.h | 40 +- WebCore/svg/SVGRect.h | 51 + WebCore/svg/SVGRectElement.cpp | 11 + WebCore/svg/SVGRectElement.h | 49 +- WebCore/svg/SVGSVGElement.cpp | 21 +- WebCore/svg/SVGSVGElement.h | 218 +- WebCore/svg/SVGScriptElement.cpp | 16 +- WebCore/svg/SVGScriptElement.h | 4 +- WebCore/svg/SVGStopElement.cpp | 3 + WebCore/svg/SVGStopElement.h | 29 +- WebCore/svg/SVGStringList.cpp | 16 + WebCore/svg/SVGStringList.h | 9 +- WebCore/svg/SVGStringList.idl | 12 +- WebCore/svg/SVGStyledTransformableElement.cpp | 5 +- WebCore/svg/SVGStyledTransformableElement.h | 7 +- WebCore/svg/SVGSwitchElement.cpp | 10 +- WebCore/svg/SVGSymbolElement.h | 2 + WebCore/svg/SVGTests.cpp | 88 +- WebCore/svg/SVGTests.h | 20 +- WebCore/svg/SVGTextContentElement.cpp | 6 + WebCore/svg/SVGTextContentElement.h | 73 +- WebCore/svg/SVGTextElement.cpp | 6 +- WebCore/svg/SVGTextElement.h | 51 +- WebCore/svg/SVGTextPathElement.cpp | 9 +- WebCore/svg/SVGTextPathElement.h | 78 +- WebCore/svg/SVGTextPositioningElement.cpp | 17 +- WebCore/svg/SVGTextPositioningElement.h | 37 +- WebCore/svg/SVGTransform.cpp | 42 +- WebCore/svg/SVGTransform.h | 1 + WebCore/svg/SVGTransformList.cpp | 14 +- WebCore/svg/SVGTransformList.h | 9 +- WebCore/svg/SVGTransformable.cpp | 18 +- WebCore/svg/SVGUseElement.cpp | 9 + WebCore/svg/SVGUseElement.h | 130 +- WebCore/svg/SVGViewElement.h | 6 +- WebCore/svg/SVGViewSpec.cpp | 12 +- WebCore/svg/SVGViewSpec.h | 2 + WebCore/svg/SVGZoomAndPan.cpp | 4 +- WebCore/svg/graphics/filters/SVGFEImage.cpp | 14 +- WebCore/svg/graphics/filters/SVGFEImage.h | 8 +- WebCore/svg/graphics/filters/SVGFilterBuilder.cpp | 6 +- WebCore/svg/graphics/filters/SVGFilterBuilder.h | 4 +- .../SVGAnimatedPathSegListPropertyTearOff.h | 72 + WebCore/svg/properties/SVGAnimatedPropertyMacros.h | 61 +- WebCore/svg/properties/SVGListProperty.h | 30 +- .../properties/SVGPathSegListPropertyTearOff.cpp | 110 + .../svg/properties/SVGPathSegListPropertyTearOff.h | 160 + WebCore/svg/properties/SVGProperty.h | 1 + WebCore/svg/properties/SVGPropertyTearOff.h | 11 +- WebCore/svg/properties/SVGPropertyTraits.h | 81 +- WebCore/svg/properties/SVGStaticPropertyTearOff.h | 2 +- .../SVGStaticPropertyWithParentTearOff.h | 2 +- .../properties/SVGTransformListPropertyTearOff.h | 5 + WebCore/webaudio/AudioBufferSourceNode.idl | 2 +- WebCore/webaudio/AudioContext.cpp | 1 - WebCore/webaudio/AudioListener.h | 34 +- WebCore/webaudio/AudioPannerNode.cpp | 48 +- WebCore/webaudio/AudioPannerNode.h | 21 +- WebCore/webaudio/ConvolverNode.idl | 2 +- WebCore/webcore-base.bkl | 0 WebCore/webcore-wx.bkl | 0 WebCore/xml/XMLHttpRequest.cpp | 138 +- WebCore/xml/XMLHttpRequest.h | 37 +- WebCore/xml/XMLHttpRequest.idl | 6 + WebCore/xml/XMLHttpRequestProgressEvent.h | 50 +- WebCore/xml/XMLHttpRequestProgressEvent.idl | 6 +- .../xml/XMLHttpRequestProgressEventThrottle.cpp | 2 +- WebCore/xml/XMLHttpRequestProgressEventThrottle.h | 6 +- WebCore/xml/XPathFunctions.cpp | 3 +- WebCore/xml/XSLStyleSheet.h | 14 +- WebCore/xml/XSLTProcessorLibxslt.cpp | 5 +- WebCore/xml/XSLTProcessorQt.cpp | 5 +- WebKit/ChangeLog | 4 + WebKit/StringsNotToBeLocalized.txt | 71 +- WebKit/chromium/ChangeLog | 771 + WebKit/chromium/DEPS | 19 +- WebKit/chromium/WebKit.gyp | 55 +- WebKit/chromium/public/WebAudioBus.h | 69 + WebKit/chromium/public/WebDevToolsAgent.h | 11 +- WebKit/chromium/public/WebFrame.h | 7 + WebKit/chromium/public/WebFrameClient.h | 2 +- WebKit/chromium/public/WebGeolocationError.h | 68 + WebKit/chromium/public/WebGeolocationPosition.h | 65 + WebKit/chromium/public/WebGraphicsContext3D.h | 2 + WebKit/chromium/public/WebHTTPLoadInfo.h | 79 + WebKit/chromium/public/WebIDBCursor.h | 3 + WebKit/chromium/public/WebIDBDatabase.h | 17 +- WebKit/chromium/public/WebIDBFactory.h | 14 +- WebKit/chromium/public/WebIDBIndex.h | 42 +- WebKit/chromium/public/WebIDBKeyRange.h | 14 +- WebKit/chromium/public/WebIDBObjectStore.h | 9 +- WebKit/chromium/public/WebIDBTransaction.h | 5 +- WebKit/chromium/public/WebInputElement.h | 3 + WebKit/chromium/public/WebKitClient.h | 12 +- WebKit/chromium/public/WebLocalizedString.h | 5 + WebKit/chromium/public/WebResourceRawHeaders.h | 74 - WebKit/chromium/public/WebSettings.h | 5 + .../chromium/public/WebSpeechInputControllerMock.h | 2 +- WebKit/chromium/public/WebURLResponse.h | 6 +- WebKit/chromium/scripts/concatenate_js_files.py | 4 +- WebKit/chromium/scripts/jsmin.py | 229 + WebKit/chromium/src/AssertMatchingEnums.cpp | 9 + WebKit/chromium/src/AssociatedURLLoader.cpp | 87 + WebKit/chromium/src/AssociatedURLLoader.h | 64 + WebKit/chromium/src/ChromeClientImpl.cpp | 21 +- WebKit/chromium/src/ChromeClientImpl.h | 3 +- WebKit/chromium/src/ChromiumBridge.cpp | 24 +- WebKit/chromium/src/EditorClientImpl.cpp | 3 +- WebKit/chromium/src/EditorClientImpl.h | 1 + WebKit/chromium/src/Extensions3DChromium.cpp | 3 +- WebKit/chromium/src/ExternalPopupMenu.cpp | 2 + WebKit/chromium/src/GraphicsContext3DChromium.cpp | 5 + WebKit/chromium/src/GraphicsContext3DInternal.h | 2 + WebKit/chromium/src/IDBDatabaseProxy.cpp | 12 +- WebKit/chromium/src/IDBDatabaseProxy.h | 4 +- WebKit/chromium/src/IDBFactoryBackendProxy.cpp | 4 +- WebKit/chromium/src/IDBFactoryBackendProxy.h | 2 +- WebKit/chromium/src/IDBObjectStoreProxy.cpp | 8 +- WebKit/chromium/src/IDBObjectStoreProxy.h | 4 +- WebKit/chromium/src/IDBTransactionBackendProxy.cpp | 7 +- WebKit/chromium/src/IDBTransactionBackendProxy.h | 2 +- WebKit/chromium/src/LocalizedStrings.cpp | 58 +- WebKit/chromium/src/WebAudioBus.cpp | 130 + WebKit/chromium/src/WebBindings.cpp | 2 +- WebKit/chromium/src/WebDevToolsAgentImpl.cpp | 11 + WebKit/chromium/src/WebDevToolsAgentImpl.h | 1 + WebKit/chromium/src/WebFrameImpl.cpp | 6 + WebKit/chromium/src/WebFrameImpl.h | 1 + WebKit/chromium/src/WebGeolocationError.cpp | 67 + WebKit/chromium/src/WebGeolocationPosition.cpp | 61 + .../src/WebGraphicsContext3DDefaultImpl.cpp | 31 +- .../chromium/src/WebGraphicsContext3DDefaultImpl.h | 2 + WebKit/chromium/src/WebHTTPLoadInfo.cpp | 111 + WebKit/chromium/src/WebIDBDatabaseImpl.cpp | 21 +- WebKit/chromium/src/WebIDBDatabaseImpl.h | 5 +- WebKit/chromium/src/WebIDBFactory.cpp | 53 - WebKit/chromium/src/WebIDBFactoryImpl.cpp | 4 +- WebKit/chromium/src/WebIDBFactoryImpl.h | 2 +- WebKit/chromium/src/WebIDBKeyRange.cpp | 53 +- WebKit/chromium/src/WebIDBObjectStoreImpl.cpp | 8 +- WebKit/chromium/src/WebIDBObjectStoreImpl.h | 4 +- WebKit/chromium/src/WebIDBTransactionImpl.cpp | 4 +- WebKit/chromium/src/WebIDBTransactionImpl.h | 2 +- WebKit/chromium/src/WebInputElement.cpp | 2 + WebKit/chromium/src/WebResourceRawHeaders.cpp | 87 - WebKit/chromium/src/WebSettingsImpl.cpp | 25 + WebKit/chromium/src/WebSettingsImpl.h | 5 + .../src/WebSpeechInputControllerMockImpl.cpp | 4 +- .../src/WebSpeechInputControllerMockImpl.h | 2 +- WebKit/chromium/src/WebURLResponse.cpp | 9 +- WebKit/chromium/src/WebURLResponsePrivate.h | 1 - WebKit/chromium/src/WebViewImpl.cpp | 50 +- .../chromium/src/WorkerAsyncFileWriterChromium.cpp | 5 + .../chromium/src/WorkerAsyncFileWriterChromium.h | 2 + .../src/WorkerFileWriterCallbacksBridge.cpp | 29 +- .../chromium/src/WorkerFileWriterCallbacksBridge.h | 9 + WebKit/chromium/src/js/DevTools.js | 2 + WebKit/efl/CMakeListsEfl.txt | 4 + WebKit/efl/ChangeLog | 228 + WebKit/efl/WebCoreSupport/EditorClientEfl.cpp | 2 +- WebKit/efl/WebCoreSupport/EditorClientEfl.h | 2 +- WebKit/efl/ewk/ewk_tiled_backing_store.c | 2137 + WebKit/efl/ewk/ewk_tiled_backing_store.h | 130 + WebKit/efl/ewk/ewk_tiled_matrix.c | 771 + WebKit/efl/ewk/ewk_tiled_matrix.h | 60 + WebKit/efl/ewk/ewk_tiled_model.c | 905 + WebKit/efl/ewk/ewk_tiled_model.h | 58 + WebKit/efl/ewk/ewk_tiled_private.h | 62 + WebKit/efl/ewk/ewk_view.cpp | 162 +- WebKit/efl/ewk/ewk_view.h | 36 +- WebKit/efl/ewk/ewk_view_tiled.c | 346 + WebKit/gtk/ChangeLog | 359 + WebKit/gtk/GNUmakefile.am | 550 + WebKit/gtk/NEWS | 17 + WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp | 9 + WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp | 108 +- WebKit/gtk/WebCoreSupport/EditorClientGtk.h | 2 +- WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp | 6 +- WebKit/gtk/tests/testatk.c | 114 + WebKit/gtk/tests/testdomdocument.c | 147 +- WebKit/gtk/tests/testdomnode.c | 5 + WebKit/gtk/webkit/webkithittestresult.cpp | 8 + WebKit/gtk/webkit/webkitprivate.cpp | 3 +- WebKit/gtk/webkit/webkitprivate.h | 2 + WebKit/gtk/webkit/webkitwebdatasource.cpp | 2 +- WebKit/gtk/webkit/webkitwebframe.cpp | 11 +- WebKit/gtk/webkit/webkitwebinspector.cpp | 18 + WebKit/gtk/webkit/webkitwebinspector.h | 4 + WebKit/gtk/webkit/webkitwebview.cpp | 136 +- WebKit/gtk/webkit/webkitwebview.h | 15 +- WebKit/gtk/webkitmarshal.list | 3 + WebKit/haiku/ChangeLog | 14 + WebKit/haiku/WebCoreSupport/EditorClientHaiku.cpp | 2 +- WebKit/haiku/WebCoreSupport/EditorClientHaiku.h | 2 +- WebKit/mac/ChangeLog | 166 + WebKit/mac/Configurations/Version.xcconfig | 2 +- WebKit/mac/Configurations/WebKit.xcconfig | 3 +- WebKit/mac/MigrateHeaders.make | 1 - WebKit/mac/WebCoreSupport/WebEditorClient.h | 4 +- WebKit/mac/WebCoreSupport/WebEditorClient.mm | 71 +- WebKit/mac/WebView/WebDocumentInternal.h | 9 +- WebKit/mac/WebView/WebDynamicScrollBarsView.h | 6 + WebKit/mac/WebView/WebDynamicScrollBarsView.mm | 73 + WebKit/mac/WebView/WebFrame.mm | 7 +- WebKit/mac/WebView/WebFrameView.mm | 4 + WebKit/mac/WebView/WebHTMLView.mm | 38 +- WebKit/mac/WebView/WebPDFView.mm | 10 +- WebKit/mac/WebView/WebRenderLayer.mm | 1 + WebKit/mac/WebView/WebView.mm | 82 +- WebKit/mac/WebView/WebViewPrivate.h | 46 +- WebKit/qt/Api/qgraphicswebview.cpp | 4 +- WebKit/qt/Api/qwebelement.cpp | 2 +- WebKit/qt/Api/qwebframe.cpp | 9 + WebKit/qt/Api/qwebinspector.cpp | 2 + WebKit/qt/Api/qwebpage.cpp | 70 +- WebKit/qt/Api/qwebpage.h | 16 +- WebKit/qt/Api/qwebpage_p.h | 2 + WebKit/qt/Api/qwebsettings.h | 4 +- WebKit/qt/ChangeLog | 449 + WebKit/qt/WebCoreSupport/ChromeClientQt.cpp | 14 +- WebKit/qt/WebCoreSupport/ChromeClientQt.h | 2 +- WebKit/qt/WebCoreSupport/DragClientQt.cpp | 6 +- .../qt/WebCoreSupport/DumpRenderTreeSupportQt.cpp | 28 +- WebKit/qt/WebCoreSupport/DumpRenderTreeSupportQt.h | 1 + WebKit/qt/WebCoreSupport/EditCommandQt.cpp | 17 +- WebKit/qt/WebCoreSupport/EditCommandQt.h | 4 + WebKit/qt/WebCoreSupport/EditorClientQt.cpp | 2 +- WebKit/qt/WebCoreSupport/EditorClientQt.h | 2 +- WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp | 9 +- .../GeolocationPermissionClientQt.cpp | 8 +- WebKit/qt/WebCoreSupport/InspectorClientQt.cpp | 11 +- WebKit/qt/WebCoreSupport/InspectorServerQt.cpp | 2 + .../NotificationPresenterClientQt.cpp | 4 +- WebKit/qt/WebCoreSupport/PageClientQt.h | 5 +- WebKit/qt/WebCoreSupport/QtPlatformPlugin.cpp | 14 + WebKit/qt/WebCoreSupport/QtPlatformPlugin.h | 1 + WebKit/qt/symbian/eabi/QtWebKitu.def | 1673 +- WebKit/qt/tests/qwebelement/tst_qwebelement.cpp | 11 + WebKit/qt/tests/qwebframe/tst_qwebframe.cpp | 8 +- WebKit/qt/tests/qwebpage/tst_qwebpage.cpp | 332 +- WebKit/win/ChangeLog | 192 + WebKit/win/WebCoreSupport/WebEditorClient.cpp | 2 +- WebKit/win/WebCoreSupport/WebEditorClient.h | 2 +- WebKit/win/WebKit.vcproj/Interfaces.vcproj | 7239 +- WebKit/win/WebKit.vcproj/InterfacesCommon.vsprops | 14 + WebKit/win/WebKit.vcproj/InterfacesPostBuild.cmd | 7 + WebKit/win/WebKit.vcproj/InterfacesPreBuild.cmd | 9 + WebKit/win/WebKit.vcproj/WebKit.make | 1 + WebKit/win/WebKit.vcproj/WebKit.sln | 830 +- WebKit/win/WebKit.vcproj/WebKit.submit.sln | 113 +- WebKit/win/WebKit.vcproj/WebKit.vcproj | 2724 +- WebKit/win/WebKit.vcproj/WebKitGUID.vcproj | 643 +- WebKit/win/WebKit.vcproj/WebKitGUIDCommon.vsprops | 46 +- WebKit/win/WebKit.vcproj/WebKitGUIDPostBuild.cmd | 1 + WebKit/win/WebKit.vcproj/WebKitGUIDPreBuild.cmd | 6 + WebKit/win/WebKit.vcproj/WebKitLibCommon.vsprops | 52 +- WebKit/win/WebKit.vcproj/WebKitLibPostBuild.cmd | 19 + WebKit/win/WebKit.vcproj/WebKitLibPreBuild.cmd | 16 + WebKit/win/WebKitPrefix.h | 1 - WebKit/wince/ChangeLog | 24 + WebKit/wince/WebCoreSupport/EditorClientWinCE.cpp | 2 +- WebKit/wince/WebCoreSupport/EditorClientWinCE.h | 2 +- WebKit/wince/WebView.cpp | 454 + WebKit/wince/WebView.h | 100 + WebKit/wx/Bakefiles.bkgen | 123 - WebKit/wx/ChangeLog | 32 + WebKit/wx/WebKitSupport/EditorClientWx.cpp | 6 +- WebKit/wx/WebKitSupport/EditorClientWx.h | 4 +- WebKit/wx/bindings/python/wxwebkit-py.bkl | 0 WebKit/wx/dependencies.bkl | 0 WebKit/wx/presets/wxwebkit.bkl | 0 WebKit/wx/wxwebkit.bkl | 0 WebKit/wx/wxwk-settings.bkl | 0 WebKitLibraries/ChangeLog | 144 + WebKitLibraries/WebKitSystemInterface.h | 21 +- WebKitLibraries/win/tools/WinTools.make | 2 +- WebKitLibraries/win/tools/vsprops/WinCairo.vsprops | 34 +- WebKitLibraries/win/tools/vsprops/cURL.vsprops | 26 +- WebKitLibraries/win/tools/vsprops/common.vsprops | 14 +- WebKitLibraries/win/tools/vsprops/debug.vsprops | 2 +- .../win/tools/vsprops/debug_internal.vsprops | 25 - .../win/tools/vsprops/debug_wincairo.vsprops | 68 +- WebKitLibraries/win/tools/vsprops/release.vsprops | 4 - .../build.webkit.org-config/config.json | 14 +- WebKitTools/CLWrapper/CLWrapper.sln | 40 +- WebKitTools/CLWrapper/CLWrapper.vcproj | 398 +- WebKitTools/ChangeLog | 1507 + WebKitTools/DumpRenderTree/DumpRenderTree.sln | 148 +- .../DumpRenderTree.xcodeproj/project.pbxproj | 4 + .../DumpRenderTree/LayoutTestController.cpp | 33 +- WebKitTools/DumpRenderTree/LayoutTestController.h | 5 +- .../TestNetscapePlugIn/PluginObject.cpp | 19 +- .../TestNetscapePlugIn/PluginTest.cpp | 5 + .../DumpRenderTree/TestNetscapePlugIn/PluginTest.h | 1 + .../TestNetscapePlugIn/TestObject.cpp | 16 + .../DumpRenderTree/TestNetscapePlugIn/TestObject.h | 3 +- .../Tests/GetUserAgentWithNullNPPFromNPPNew.cpp | 56 + .../DumpRenderTree/TestNetscapePlugIn/main.cpp | 6 +- .../win/TestNetscapePlugin.vcproj | 1025 +- .../win/TestNetscapePluginCommon.vsprops | 46 +- .../win/TestNetscapePluginPostBuild.cmd | 1 + .../win/TestNetscapePluginPreBuild.cmd | 6 + .../chromium/LayoutTestController.cpp | 20 +- .../DumpRenderTree/chromium/LayoutTestController.h | 2 +- .../gtk/AccessibilityUIElementGtk.cpp | 15 +- WebKitTools/DumpRenderTree/gtk/DumpRenderTree.cpp | 16 +- .../DumpRenderTree/gtk/EditingCallbacks.cpp | 206 + WebKitTools/DumpRenderTree/gtk/EditingCallbacks.h | 35 + .../DumpRenderTree/gtk/LayoutTestControllerGtk.cpp | 8 +- WebKitTools/DumpRenderTree/mac/DumpRenderTree.mm | 9 +- .../DumpRenderTree/mac/LayoutTestControllerMac.mm | 38 +- .../DumpRenderTreeSupportPregenerated.pm | 54 + .../mac/PerlSupport/DumpRenderTreeSupportTiger.pm | 54 - .../DumpRenderTreeSupport_wrapPregenerated.c | 1167 + .../PerlSupport/DumpRenderTreeSupport_wrapTiger.c | 1167 - .../DumpRenderTree/mac/PerlSupport/Makefile | 19 +- WebKitTools/DumpRenderTree/qt/DumpRenderTreeQt.cpp | 38 +- WebKitTools/DumpRenderTree/qt/DumpRenderTreeQt.h | 6 +- .../DumpRenderTree/qt/LayoutTestControllerQt.cpp | 9 +- .../DumpRenderTree/qt/LayoutTestControllerQt.h | 3 +- .../qt/TestNetscapePlugin/TestNetscapePlugin.pro | 1 + .../unix/TestNetscapePlugin/TestNetscapePlugin.cpp | 20 +- WebKitTools/DumpRenderTree/win/DumpRenderTree.cpp | 10 +- .../DumpRenderTree/win/DumpRenderTree.vcproj | 1518 +- .../DumpRenderTree/win/DumpRenderTreeApple.vsprops | 30 +- .../win/DumpRenderTreeCFLite.vsprops | 22 +- .../DumpRenderTree/win/DumpRenderTreeCairo.vsprops | 22 +- .../win/DumpRenderTreeCommon.vsprops | 48 +- .../DumpRenderTree/win/DumpRenderTreePostBuild.cmd | 40 + .../DumpRenderTree/win/DumpRenderTreePreBuild.cmd | 14 + WebKitTools/DumpRenderTree/win/ImageDiff.vcproj | 790 +- .../DumpRenderTree/win/ImageDiffCommon.vsprops | 42 +- .../DumpRenderTree/win/ImageDiffPostBuild.cmd | 1 + .../DumpRenderTree/win/ImageDiffPreBuild.cmd | 6 + .../DumpRenderTree/win/LayoutTestControllerWin.cpp | 16 +- WebKitTools/DumpRenderTree/wx/DumpRenderTree.bkl | 0 .../DumpRenderTree/wx/LayoutTestControllerWx.cpp | 8 +- WebKitTools/EWebLauncher/main.c | 67 +- WebKitTools/FindSafari/FindSafari.vcproj | 535 +- WebKitTools/FindSafari/FindSafariCommon.vsprops | 26 +- WebKitTools/GNUmakefile.am | 3 + WebKitTools/MIDLWrapper/MIDLWrapper.sln | 40 +- WebKitTools/MIDLWrapper/MIDLWrapper.vcproj | 398 +- .../Configurations/MiniBrowserCFLite.vsprops | 26 +- .../Configurations/MiniBrowserCommon.vsprops | 28 +- .../MiniBrowserCoreFoundation.vsprops | 26 +- WebKitTools/MiniBrowser/MiniBrowser.vcproj | 1091 +- WebKitTools/MiniBrowser/MiniBrowserPostBuild.cmd | 33 + WebKitTools/MiniBrowser/MiniBrowserPreBuild.cmd | 5 + .../MiniBrowser/mac/BrowserWindowController.m | 3 +- .../MiniBrowser/mac/WebBundle/WebBundleMain.m | 1 + WebKitTools/MiniBrowser/qt/BrowserWindow.cpp | 7 +- WebKitTools/MiniBrowser/win/BrowserView.cpp | 2 +- WebKitTools/MiniBrowser/win/stdafx.h | 3 + WebKitTools/QtTestBrowser/mainwindow.cpp | 3 + WebKitTools/QtTestBrowser/webpage.cpp | 10 +- WebKitTools/QtTestBrowser/webpage.h | 4 +- WebKitTools/QtTestBrowser/webview.cpp | 1 + WebKitTools/Scripts/build-webkit | 4 + WebKitTools/Scripts/generate-forwarding-headers.pl | 5 +- WebKitTools/Scripts/old-run-webkit-tests | 4 +- WebKitTools/Scripts/run-api-tests | 4 +- WebKitTools/Scripts/run-javascriptcore-tests | 7 +- WebKitTools/Scripts/sunspider-compare-results | 2 +- WebKitTools/Scripts/update-webkit | 3 + WebKitTools/Scripts/update-webkit-support-libs | 50 +- WebKitTools/Scripts/webkitdirs.pm | 41 +- .../Scripts/webkitpy/common/checkout/scm.py | 27 +- .../webkitpy/common/checkout/scm_unittest.py | 4 + .../Scripts/webkitpy/common/config/committers.py | 3 +- .../Scripts/webkitpy/common/config/ports.py | 1 + .../webkitpy/common/config/ports_unittest.py | 4 +- .../webkitpy/common/system/executive_mock.py | 6 +- .../webkitpy/common/system/filesystem_mock.py | 6 +- .../Scripts/webkitpy/layout_tests/driver_test.py | 81 - .../layout_package/dump_render_tree_thread.py | 117 +- .../dump_render_tree_thread_unittest.py | 49 - .../json_layout_results_generator.py | 4 + .../layout_package/json_results_generator.py | 21 +- .../json_results_generator_unittest.py | 17 +- .../layout_tests/layout_package/message_broker.py | 197 + .../layout_package/message_broker_unittest.py | 183 + .../layout_tests/layout_package/printing.py | 5 +- .../layout_package/printing_unittest.py | 24 +- .../layout_package/test_results_uploader.py | 76 +- .../Scripts/webkitpy/layout_tests/port/base.py | 28 +- .../webkitpy/layout_tests/port/base_unittest.py | 6 +- .../Scripts/webkitpy/layout_tests/port/chromium.py | 92 +- .../layout_tests/port/chromium_unittest.py | 3 +- .../Scripts/webkitpy/layout_tests/port/config.py | 3 +- .../webkitpy/layout_tests/port/config_unittest.py | 51 +- .../Scripts/webkitpy/layout_tests/port/dryrun.py | 25 +- .../webkitpy/layout_tests/port/port_testcase.py | 8 + .../Scripts/webkitpy/layout_tests/port/test.py | 18 +- .../webkitpy/layout_tests/port/test_files.py | 19 +- .../layout_tests/port/test_files_unittest.py | 7 + .../Scripts/webkitpy/layout_tests/port/webkit.py | 42 +- .../webkitpy/layout_tests/run_webkit_tests.py | 233 +- .../layout_tests/run_webkit_tests_unittest.py | 214 +- .../webkitpy/layout_tests/test_types/image_diff.py | 4 +- .../webkitpy/layout_tests/test_types/text_diff.py | 3 +- .../tool/commands/data/rebaselineserver/index.html | 45 +- .../tool/commands/data/rebaselineserver/main.css | 108 +- .../tool/commands/data/rebaselineserver/main.js | 130 +- .../tool/commands/data/rebaselineserver/queue.js | 158 + .../tool/commands/data/rebaselineserver/util.js | 47 + .../webkitpy/tool/commands/rebaselineserver.py | 90 +- .../tool/commands/rebaselineserver_unittest.py | 99 + .../TestResultServer/handlers/testfilehandler.py | 6 +- .../TestResultServer/model/dashboardfile.py | 8 +- WebKitTools/TestResultServer/model/jsonresults.py | 14 +- .../Configurations/TestWebKitAPICFLite.vsprops | 22 +- .../Configurations/TestWebKitAPICommon.vsprops | 42 +- .../TestWebKitAPICoreFoundation.vsprops | 22 +- .../TestWebKitAPI/InjectedBundleController.cpp | 22 +- .../TestWebKitAPI/InjectedBundleController.h | 9 +- WebKitTools/TestWebKitAPI/InjectedBundleTest.h | 3 +- WebKitTools/TestWebKitAPI/PlatformUtilities.cpp | 12 +- WebKitTools/TestWebKitAPI/PlatformUtilities.h | 2 +- WebKitTools/TestWebKitAPI/PlatformWebView.h | 2 +- .../TestWebKitAPI.xcodeproj/project.pbxproj | 14 +- .../WebKit2/DocumentStartUserScriptAlertCrash.cpp | 6 +- .../DocumentStartUserScriptAlertCrash_Bundle.cpp | 14 +- .../TestWebKitAPI/Tests/WebKit2/WKPreferences.cpp | 98 + .../TestWebKitAPI/mac/PlatformWebViewMac.mm | 4 +- .../TestWebKitAPI/win/PlatformUtilitiesWin.cpp | 2 +- .../TestWebKitAPI/win/PlatformWebViewWin.cpp | 4 +- WebKitTools/TestWebKitAPI/win/TestWebKitAPI.sln | 108 +- WebKitTools/TestWebKitAPI/win/TestWebKitAPI.vcproj | 1112 +- .../win/TestWebKitAPIGenerated.vcproj | 129 +- .../win/TestWebKitAPIGeneratedCommon.vsprops | 13 + .../TestWebKitAPI/win/TestWebKitAPIPostBuild.cmd | 1 + .../TestWebKitAPI/win/TestWebKitAPIPreBuild.cmd | 6 + WebKitTools/WebKitAPITest/WebKitAPITest.vcproj | 720 +- .../WebKitAPITest/WebKitAPITestCommon.vsprops | 46 +- .../WebKitAPITest/WebKitAPITestPostBuild.cmd | 1 + .../WebKitAPITest/WebKitAPITestPreBuild.cmd | 6 + .../WebKitLauncherWin/WebKitLauncherWin.vcproj | 608 +- .../WebKitLauncherWinCommon.vsprops | 24 +- .../Configurations/InjectedBundleCFLite.vsprops | 24 +- .../Configurations/InjectedBundleCommon.vsprops | 32 +- .../InjectedBundleCoreFoundation.vsprops | 24 +- .../Configurations/WebKitTestRunnerCFLite.vsprops | 11 + .../Configurations/WebKitTestRunnerCommon.vsprops | 20 + .../WebKitTestRunnerCoreFoundation.vsprops | 11 + .../Bindings/LayoutTestController.idl | 3 + .../InjectedBundle/InjectedBundle.cpp | 13 +- .../InjectedBundle/InjectedBundle.h | 6 +- .../InjectedBundle/LayoutTestController.cpp | 44 +- .../InjectedBundle/LayoutTestController.h | 3 + .../InjectedBundle/qt/InjectedBundle.pro | 18 +- WebKitTools/WebKitTestRunner/TestController.cpp | 2 + WebKitTools/WebKitTestRunner/WebKitTestRunner.sln | 182 +- .../WebKitTestRunner/qt/WebKitTestRunner.pro | 3 + .../WebKitTestRunner/win/InjectedBundle.vcproj | 1050 +- .../win/InjectedBundleGenerated.vcproj | 140 +- .../win/InjectedBundleGeneratedCommon.vsprops | 15 + .../win/InjectedBundlePostBuild.cmd | 1 + .../win/InjectedBundlePreBuild.cmd | 6 + .../WebKitTestRunner/win/PlatformWebViewWin.cpp | 2 +- .../WebKitTestRunner/win/TestControllerWin.cpp | 2 +- .../WebKitTestRunner/win/WebKitTestRunner.vcproj | 998 +- .../win/WebKitTestRunnerPostBuild.cmd | 38 + .../win/WebKitTestRunnerPreBuild.cmd | 6 + WebKitTools/WinCELauncher/main.cpp | 132 + WebKitTools/WinLauncher/WinLauncher.vcproj | 996 +- WebKitTools/WinLauncher/WinLauncherCommon.vsprops | 40 +- WebKitTools/WinLauncher/WinLauncherPostBuild.cmd | 1 + WebKitTools/WinLauncher/WinLauncherPreBuild.cmd | 6 + .../record-memory-win-common.vsprops | 11 + .../record-memory-win/record-memory-win.vcproj | 614 +- WebKitTools/wx/browser/browser.bkl | 0 WebKitTools/wx/build-wxwebkit | 0 WebKitTools/wx/build/settings.py | 8 +- 1522 files changed, 131959 insertions(+), 33762 deletions(-) create mode 100644 JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedCommon.vsprops create mode 100644 JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePostBuild.cmd create mode 100644 JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePreBuild.cmd create mode 100644 JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePreLink.cmd create mode 100644 JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/react-to-vsprops-changes.py create mode 100644 JavaScriptCore/JavaScriptCore.vcproj/WTF/WTFPostBuild.cmd create mode 100644 JavaScriptCore/JavaScriptCore.vcproj/WTF/WTFPreBuild.cmd create mode 100644 JavaScriptCore/JavaScriptCore.vcproj/jsc/jscPostBuild.cmd create mode 100644 JavaScriptCore/JavaScriptCore.vcproj/jsc/jscPreBuild.cmd create mode 100644 JavaScriptCore/JavaScriptCore.vcproj/jsc/jscPreLink.cmd create mode 100644 JavaScriptCore/JavaScriptCore.vcproj/testapi/testapiPostBuild.cmd create mode 100644 JavaScriptCore/JavaScriptCore.vcproj/testapi/testapiPreBuild.cmd create mode 100644 JavaScriptCore/JavaScriptCore.vcproj/testapi/testapiPreLink.cmd delete mode 100644 JavaScriptCore/JavaScriptCoreSources.bkl delete mode 100644 JavaScriptCore/jscore.bkl delete mode 100644 JavaScriptCore/runtime/MarkStackNone.cpp create mode 100644 JavaScriptCore/wtf/OSAllocator.h create mode 100644 JavaScriptCore/wtf/OSAllocatorPosix.cpp create mode 100644 JavaScriptCore/wtf/OSAllocatorSymbian.cpp create mode 100644 JavaScriptCore/wtf/OSAllocatorWin.cpp delete mode 100644 JavaScriptCore/wtf/Vector3.h create mode 100644 JavaScriptGlue/ForwardingHeaders/wtf/OSAllocator.h delete mode 100644 LayoutTests/fast/dom/DeviceOrientation/create-event-onorientationchange-expected.txt delete mode 100644 LayoutTests/fast/dom/DeviceOrientation/create-event-onorientationchange.html delete mode 100644 LayoutTests/fast/dom/DeviceOrientation/script-tests/create-event-onorientationchange.js create mode 100644 LayoutTests/http/tests/resources/balls-of-the-orient.aif create mode 100644 LayoutTests/storage/indexeddb/create-and-remove-object-store-expected.txt create mode 100644 LayoutTests/storage/indexeddb/create-and-remove-object-store.html create mode 100644 LayoutTests/storage/indexeddb/create-object-store-options-expected.txt create mode 100644 LayoutTests/storage/indexeddb/create-object-store-options.html create mode 100644 LayoutTests/storage/indexeddb/transaction-and-objectstore-calls-expected.txt create mode 100644 LayoutTests/storage/indexeddb/transaction-and-objectstore-calls.html create mode 100644 WebCore/ForwardingHeaders/wtf/OSAllocator.h create mode 100644 WebCore/WebCore.vcproj/QTMovieWinPostBuild.cmd create mode 100644 WebCore/WebCore.vcproj/QTMovieWinPreBuild.cmd mode change 100644 => 100755 WebCore/WebCore.vcproj/WebCore.vcproj create mode 100644 WebCore/WebCore.vcproj/WebCoreGeneratedCairo.vsprops create mode 100644 WebCore/WebCore.vcproj/WebCoreGeneratedCommon.vsprops create mode 100644 WebCore/WebCore.vcproj/WebCorePostBuild.cmd create mode 100644 WebCore/WebCore.vcproj/WebCorePreBuild.cmd delete mode 100644 WebCore/WebCoreSources.bkl create mode 100644 WebCore/bindings/gobject/DOMObjectCache.cpp create mode 100644 WebCore/bindings/gobject/DOMObjectCache.h delete mode 100644 WebCore/bindings/js/JSArrayBufferViewCustom.cpp create mode 100644 WebCore/bindings/js/JSAudioBufferSourceNodeCustom.cpp create mode 100644 WebCore/bindings/js/JSCSSFontFaceRuleCustom.cpp create mode 100644 WebCore/bindings/js/JSCSSImportRuleCustom.cpp create mode 100644 WebCore/bindings/js/JSCSSMediaRuleCustom.cpp create mode 100644 WebCore/bindings/js/JSCSSPageRuleCustom.cpp create mode 100644 WebCore/bindings/js/JSCSSStyleRuleCustom.cpp create mode 100644 WebCore/bindings/js/JSConvolverNodeCustom.cpp create mode 100644 WebCore/bindings/js/JSDataViewCustom.cpp create mode 100644 WebCore/bindings/js/JSHTMLLinkElementCustom.cpp create mode 100644 WebCore/bindings/js/JSHTMLStyleElementCustom.cpp create mode 100644 WebCore/bindings/js/JSJavaScriptAudioNodeCustom.cpp create mode 100644 WebCore/bindings/js/JSProcessingInstructionCustom.cpp delete mode 100644 WebCore/bindings/js/JSSVGContextCache.h delete mode 100644 WebCore/bindings/js/JSSVGPODListCustom.h delete mode 100644 WebCore/bindings/js/JSSVGPODTypeWrapper.h delete mode 100644 WebCore/bindings/js/JSSVGPathSegListCustom.cpp create mode 100644 WebCore/bindings/js/JSWebKitCSSKeyframeRuleCustom.cpp create mode 100644 WebCore/bindings/js/JSWebKitCSSKeyframesRuleCustom.cpp create mode 100644 WebCore/bindings/js/OptionsObject.h create mode 100644 WebCore/bindings/v8/OptionsObject.cpp create mode 100644 WebCore/bindings/v8/OptionsObject.h delete mode 100644 WebCore/bindings/v8/V8SVGPODTypeWrapper.h delete mode 100644 WebCore/bindings/v8/custom/V8ArrayBufferViewCustom.cpp create mode 100755 WebCore/bindings/v8/custom/V8DataViewCustom.cpp create mode 100644 WebCore/css/MediaQueryList.cpp create mode 100644 WebCore/css/MediaQueryList.h create mode 100644 WebCore/css/MediaQueryList.idl create mode 100644 WebCore/css/MediaQueryListListener.cpp create mode 100644 WebCore/css/MediaQueryListListener.h create mode 100644 WebCore/css/MediaQueryListListener.idl create mode 100644 WebCore/css/MediaQueryMatcher.cpp create mode 100644 WebCore/css/MediaQueryMatcher.h create mode 100644 WebCore/css/themeChromiumSkia.css create mode 100644 WebCore/editing/EditingBoundary.h create mode 100644 WebCore/editing/FindOptions.h create mode 100644 WebCore/fileapi/FileWriterBase.cpp create mode 100644 WebCore/fileapi/FileWriterBase.h create mode 100644 WebCore/fileapi/FileWriterBaseCallback.h create mode 100755 WebCore/html/canvas/DataView.cpp create mode 100755 WebCore/html/canvas/DataView.h create mode 100755 WebCore/html/canvas/DataView.idl create mode 100644 WebCore/inspector/front-end/CookiesTable.js create mode 100644 WebCore/inspector/front-end/NetworkItemView.js create mode 100644 WebCore/inspector/front-end/ResourceCookiesView.js create mode 100644 WebCore/inspector/front-end/ResourceHeadersView.js create mode 100644 WebCore/inspector/front-end/ResourceTimingView.js create mode 100644 WebCore/manual-tests/autocorrection/autocorrection-contraction.html create mode 100644 WebCore/manual-tests/autocorrection/dismiss-multiple-guesses.html create mode 100644 WebCore/manual-tests/autocorrection/select-from-multiple-guesses.html create mode 100644 WebCore/manual-tests/input-type-datetime-default-value.html create mode 100644 WebCore/page/SpeechInputEvent.cpp create mode 100644 WebCore/page/SpeechInputEvent.h create mode 100644 WebCore/page/SpeechInputEvent.idl create mode 100644 WebCore/page/SpeechInputResult.idl create mode 100644 WebCore/page/SpeechInputResultList.cpp create mode 100644 WebCore/page/SpeechInputResultList.h create mode 100644 WebCore/page/SpeechInputResultList.idl create mode 100644 WebCore/platform/HashTools.h create mode 100644 WebCore/platform/mock/GeolocationClientMock.cpp create mode 100644 WebCore/platform/mock/GeolocationClientMock.h create mode 100644 WebCore/platform/network/ResourceLoadInfo.h delete mode 100644 WebCore/platform/network/ResourceRawHeaders.h delete mode 100644 WebCore/platform/text/wince/TextBoundariesWinCE.cpp delete mode 100644 WebCore/svg/DeprecatedSVGAnimatedProperty.h delete mode 100644 WebCore/svg/DeprecatedSVGAnimatedPropertyTraits.h delete mode 100644 WebCore/svg/DeprecatedSVGAnimatedTemplate.h delete mode 100644 WebCore/svg/SVGAnimatedPathData.cpp delete mode 100644 WebCore/svg/SVGAnimatedPathData.h delete mode 100644 WebCore/svg/SVGAnimatedPathData.idl delete mode 100644 WebCore/svg/SVGList.h delete mode 100644 WebCore/svg/SVGListTraits.h delete mode 100644 WebCore/svg/SVGPathSeg.cpp delete mode 100644 WebCore/svg/SVGPathSegArc.cpp delete mode 100644 WebCore/svg/SVGPathSegClosePath.cpp delete mode 100644 WebCore/svg/SVGPathSegCurvetoCubic.cpp delete mode 100644 WebCore/svg/SVGPathSegCurvetoCubicSmooth.cpp delete mode 100644 WebCore/svg/SVGPathSegCurvetoQuadratic.cpp delete mode 100644 WebCore/svg/SVGPathSegCurvetoQuadraticSmooth.cpp delete mode 100644 WebCore/svg/SVGPathSegLineto.cpp delete mode 100644 WebCore/svg/SVGPathSegLinetoHorizontal.cpp delete mode 100644 WebCore/svg/SVGPathSegLinetoVertical.cpp delete mode 100644 WebCore/svg/SVGPathSegMoveto.cpp create mode 100644 WebCore/svg/SVGPathSegWithContext.h create mode 100644 WebCore/svg/SVGRect.h create mode 100644 WebCore/svg/properties/SVGAnimatedPathSegListPropertyTearOff.h create mode 100644 WebCore/svg/properties/SVGPathSegListPropertyTearOff.cpp create mode 100644 WebCore/svg/properties/SVGPathSegListPropertyTearOff.h delete mode 100644 WebCore/webcore-base.bkl delete mode 100644 WebCore/webcore-wx.bkl create mode 100644 WebKit/chromium/public/WebAudioBus.h create mode 100644 WebKit/chromium/public/WebGeolocationError.h create mode 100644 WebKit/chromium/public/WebGeolocationPosition.h create mode 100644 WebKit/chromium/public/WebHTTPLoadInfo.h delete mode 100644 WebKit/chromium/public/WebResourceRawHeaders.h create mode 100644 WebKit/chromium/scripts/jsmin.py create mode 100644 WebKit/chromium/src/AssociatedURLLoader.cpp create mode 100644 WebKit/chromium/src/AssociatedURLLoader.h create mode 100644 WebKit/chromium/src/WebAudioBus.cpp create mode 100644 WebKit/chromium/src/WebGeolocationError.cpp create mode 100644 WebKit/chromium/src/WebGeolocationPosition.cpp create mode 100644 WebKit/chromium/src/WebHTTPLoadInfo.cpp delete mode 100755 WebKit/chromium/src/WebIDBFactory.cpp delete mode 100644 WebKit/chromium/src/WebResourceRawHeaders.cpp create mode 100644 WebKit/efl/ewk/ewk_tiled_backing_store.c create mode 100644 WebKit/efl/ewk/ewk_tiled_backing_store.h create mode 100644 WebKit/efl/ewk/ewk_tiled_matrix.c create mode 100644 WebKit/efl/ewk/ewk_tiled_matrix.h create mode 100644 WebKit/efl/ewk/ewk_tiled_model.c create mode 100644 WebKit/efl/ewk/ewk_tiled_model.h create mode 100644 WebKit/efl/ewk/ewk_tiled_private.h create mode 100644 WebKit/efl/ewk/ewk_view_tiled.c create mode 100644 WebKit/gtk/GNUmakefile.am create mode 100644 WebKit/win/WebKit.vcproj/InterfacesCommon.vsprops create mode 100644 WebKit/win/WebKit.vcproj/InterfacesPostBuild.cmd create mode 100644 WebKit/win/WebKit.vcproj/InterfacesPreBuild.cmd create mode 100644 WebKit/win/WebKit.vcproj/WebKitGUIDPostBuild.cmd create mode 100644 WebKit/win/WebKit.vcproj/WebKitGUIDPreBuild.cmd create mode 100644 WebKit/win/WebKit.vcproj/WebKitLibPostBuild.cmd create mode 100644 WebKit/win/WebKit.vcproj/WebKitLibPreBuild.cmd create mode 100644 WebKit/wince/WebView.cpp create mode 100644 WebKit/wince/WebView.h delete mode 100644 WebKit/wx/Bakefiles.bkgen delete mode 100644 WebKit/wx/bindings/python/wxwebkit-py.bkl delete mode 100644 WebKit/wx/dependencies.bkl delete mode 100644 WebKit/wx/presets/wxwebkit.bkl delete mode 100644 WebKit/wx/wxwebkit.bkl delete mode 100644 WebKit/wx/wxwk-settings.bkl delete mode 100644 WebKitLibraries/win/tools/vsprops/debug_internal.vsprops create mode 100644 WebKitTools/DumpRenderTree/TestNetscapePlugIn/Tests/GetUserAgentWithNullNPPFromNPPNew.cpp create mode 100644 WebKitTools/DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePluginPostBuild.cmd create mode 100644 WebKitTools/DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePluginPreBuild.cmd create mode 100644 WebKitTools/DumpRenderTree/gtk/EditingCallbacks.cpp create mode 100644 WebKitTools/DumpRenderTree/gtk/EditingCallbacks.h create mode 100644 WebKitTools/DumpRenderTree/mac/PerlSupport/DumpRenderTreeSupportPregenerated.pm delete mode 100644 WebKitTools/DumpRenderTree/mac/PerlSupport/DumpRenderTreeSupportTiger.pm create mode 100644 WebKitTools/DumpRenderTree/mac/PerlSupport/DumpRenderTreeSupport_wrapPregenerated.c delete mode 100644 WebKitTools/DumpRenderTree/mac/PerlSupport/DumpRenderTreeSupport_wrapTiger.c create mode 100644 WebKitTools/DumpRenderTree/win/DumpRenderTreePostBuild.cmd create mode 100644 WebKitTools/DumpRenderTree/win/DumpRenderTreePreBuild.cmd create mode 100644 WebKitTools/DumpRenderTree/win/ImageDiffPostBuild.cmd create mode 100644 WebKitTools/DumpRenderTree/win/ImageDiffPreBuild.cmd delete mode 100644 WebKitTools/DumpRenderTree/wx/DumpRenderTree.bkl create mode 100644 WebKitTools/MiniBrowser/MiniBrowserPostBuild.cmd create mode 100644 WebKitTools/MiniBrowser/MiniBrowserPreBuild.cmd delete mode 100644 WebKitTools/Scripts/webkitpy/layout_tests/driver_test.py delete mode 100644 WebKitTools/Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread_unittest.py create mode 100644 WebKitTools/Scripts/webkitpy/layout_tests/layout_package/message_broker.py create mode 100644 WebKitTools/Scripts/webkitpy/layout_tests/layout_package/message_broker_unittest.py create mode 100644 WebKitTools/Scripts/webkitpy/tool/commands/data/rebaselineserver/queue.js create mode 100644 WebKitTools/Scripts/webkitpy/tool/commands/rebaselineserver_unittest.py create mode 100644 WebKitTools/TestWebKitAPI/Tests/WebKit2/WKPreferences.cpp create mode 100644 WebKitTools/TestWebKitAPI/win/TestWebKitAPIGeneratedCommon.vsprops create mode 100644 WebKitTools/TestWebKitAPI/win/TestWebKitAPIPostBuild.cmd create mode 100644 WebKitTools/TestWebKitAPI/win/TestWebKitAPIPreBuild.cmd create mode 100644 WebKitTools/WebKitAPITest/WebKitAPITestPostBuild.cmd create mode 100644 WebKitTools/WebKitAPITest/WebKitAPITestPreBuild.cmd create mode 100644 WebKitTools/WebKitTestRunner/Configurations/WebKitTestRunnerCFLite.vsprops create mode 100644 WebKitTools/WebKitTestRunner/Configurations/WebKitTestRunnerCommon.vsprops create mode 100644 WebKitTools/WebKitTestRunner/Configurations/WebKitTestRunnerCoreFoundation.vsprops create mode 100644 WebKitTools/WebKitTestRunner/win/InjectedBundleGeneratedCommon.vsprops create mode 100644 WebKitTools/WebKitTestRunner/win/InjectedBundlePostBuild.cmd create mode 100644 WebKitTools/WebKitTestRunner/win/InjectedBundlePreBuild.cmd create mode 100644 WebKitTools/WebKitTestRunner/win/WebKitTestRunnerPostBuild.cmd create mode 100644 WebKitTools/WebKitTestRunner/win/WebKitTestRunnerPreBuild.cmd create mode 100644 WebKitTools/WinCELauncher/main.cpp create mode 100644 WebKitTools/WinLauncher/WinLauncherPostBuild.cmd create mode 100644 WebKitTools/WinLauncher/WinLauncherPreBuild.cmd create mode 100644 WebKitTools/record-memory-win/record-memory-win-common.vsprops delete mode 100644 WebKitTools/wx/browser/browser.bkl delete mode 100755 WebKitTools/wx/build-wxwebkit diff --git a/ANGLE/ChangeLog b/ANGLE/ChangeLog index 78a4d12..4246845 100644 --- a/ANGLE/ChangeLog +++ b/ANGLE/ChangeLog @@ -1,3 +1,13 @@ +2010-12-01 Steve Falkenburg + + Reviewed by Adam Roben. + + vcproj changes can't be applied cleanly by the Windows EWS bot + https://bugs.webkit.org/show_bug.cgi?id=50328 + + * src/libEGL/libEGL.vcproj: Added property svn:eol-style. + * src/libGLESv2/libGLESv2.vcproj: Added property svn:eol-style. + 2010-11-03 Darin Adler Updated Xcode projects by opening them with Xcode 3.2.4. diff --git a/ANGLE/src/libEGL/libEGL.vcproj b/ANGLE/src/libEGL/libEGL.vcproj index 505f4d9..4f8d0b2 100644 --- a/ANGLE/src/libEGL/libEGL.vcproj +++ b/ANGLE/src/libEGL/libEGL.vcproj @@ -1,252 +1,252 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ANGLE/src/libGLESv2/libGLESv2.vcproj b/ANGLE/src/libGLESv2/libGLESv2.vcproj index f9e34d0..1f43e7a 100644 --- a/ANGLE/src/libGLESv2/libGLESv2.vcproj +++ b/ANGLE/src/libGLESv2/libGLESv2.vcproj @@ -1,365 +1,365 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/JavaScriptCore/CMakeListsEfl.txt b/JavaScriptCore/CMakeListsEfl.txt index 90ee22b..9d3c71e 100644 --- a/JavaScriptCore/CMakeListsEfl.txt +++ b/JavaScriptCore/CMakeListsEfl.txt @@ -2,6 +2,7 @@ LIST(APPEND JavaScriptCore_SOURCES jit/ExecutableAllocatorFixedVMPool.cpp jit/ExecutableAllocator.cpp runtime/MarkStackPosix.cpp + wtf/OSAllocatorPosix.cpp ) LIST(APPEND JavaScriptCore_LIBRARIES diff --git a/JavaScriptCore/ChangeLog b/JavaScriptCore/ChangeLog index bf45cd8..7175c5d 100644 --- a/JavaScriptCore/ChangeLog +++ b/JavaScriptCore/ChangeLog @@ -1,3 +1,1095 @@ +2010-12-01 Geoffrey Garen + + Try to fix the GTK build. + + * GNUmakefile.am: Use a full path to OSAllocator*.cpp. + +2010-12-01 Geoffrey Garen + + Try to fix the EFL Linux build. + + * CMakeListsEfl.txt: Added OSAllocator to the project. + +2010-12-01 Geoffrey Garen + + Try to fix the Qt build: Include all OS files for Qt's sake, and then + use #ifdefs in the files to exclude things based on OS. + + This is a pretty bad way to manage platforms -- hopefully we can + fix the Qt build system and move away from this in the future. + + * wtf/OSAllocatorPosix.cpp: + * wtf/OSAllocatorSymbian.cpp: + * wtf/OSAllocatorWin.cpp: + * wtf/wtf.pri: + +2010-12-01 Geoffrey Garen + + Try to fix the Chromium build. + + * JavaScriptCore.gypi: This is a Windows build file, so use OSAllocatorWin.cpp. + +2010-12-01 Geoffrey Garen + + Try to fix the GTK build. + + * GNUmakefile.am: Added OSAllocator to another project. + +2010-12-01 Geoffrey Garen + + Try to fix the GTK Linux build. + + * JavaScriptCore.gypi: Added OSAllocator to the project. + +2010-12-01 Geoffrey Garen + + Try to fix the Qt Linux build. + + * wtf/OSAllocatorPosix.cpp: Use the right errno.h. + +2010-12-01 Geoffrey Garen + + Try to fix Windows build: export some more symbols. + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: + +2010-12-01 Geoffrey Garen + + Try to fix the Qt Linux build. + + * wtf/wtf.pri: Use the POSIX OSAllocator for Qt Linux. + +2010-12-01 Geoffrey Garen + + Windows build fix: commit doesn't have a return value. + + * wtf/OSAllocatorWin.cpp: + (WTF::OSAllocator::commit): + +2010-12-01 Geoffrey Garen + + Build fix: Export some symbols. + + * JavaScriptCore.exp: + +2010-12-01 Geoffrey Garen + + Build fix. + + * JavaScriptCore.xcodeproj/project.pbxproj: Export OSAllocator.h as private + so other projects can see it. + + * wtf/OSAllocatorPosix.cpp: #include UnusedParam.h for UNUSED_PARAM. + +2010-12-01 Geoffrey Garen + + Reviewed by Sam Weinig. + + Baby step toward a cross-platform virtual memory abstraction: created + an all-static OSAllocator class and changed MarkStack to use it. + + * JavaScriptCore.exp: These functions are inlined now. + + * JavaScriptCore.vcproj/WTF/WTF.vcproj: Added OSAllocatorWin.cpp. + + * JavaScriptCore.xcodeproj/project.pbxproj: Added OSAllocatorPosix.cpp. + + * runtime/MarkStack.h: + (JSC::MarkStack::allocateStack): + (JSC::MarkStack::releaseStack): Use OSAllocator instead of rolling our + own platform-specific code. + + * runtime/MarkStackNone.cpp: Removed. Nothing used this. + + * runtime/MarkStackPosix.cpp: + * runtime/MarkStackSymbian.cpp: + * runtime/MarkStackWin.cpp: Removed custom platform-specific code, since + we use the OSAllocator abstraction now. + + * wtf/OSAllocator.h: Added. + * wtf/OSAllocatorPosix.cpp: Added. + (WTF::OSAllocator::reserve): + (WTF::OSAllocator::reserveAndCommit): + (WTF::OSAllocator::commit): + (WTF::OSAllocator::decommit): + (WTF::OSAllocator::release): + * wtf/OSAllocatorSymbian.cpp: Added. + (WTF::OSAllocator::reserve): + (WTF::OSAllocator::reserveAndCommit): + (WTF::OSAllocator::commit): + (WTF::OSAllocator::decommit): + (WTF::OSAllocator::release): + * wtf/OSAllocatorWin.cpp: Added. + (WTF::OSAllocator::reserve): + (WTF::OSAllocator::reserveAndCommit): + (WTF::OSAllocator::commit): + (WTF::OSAllocator::decommit): + (WTF::OSAllocator::release): The new OSAllocator abstraction. + + * wtf/wtf.pri: Added OSAllocatorSymbian.cpp. + +2010-12-01 Steve Falkenburg + + Reviewed by Adam Roben. + + WinCairo build should not use link-time code generation (LTCG) + https://bugs.webkit.org/show_bug.cgi?id=50353 + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: + * JavaScriptCore.vcproj/WTF/WTF.vcproj: + * JavaScriptCore.vcproj/jsc/jsc.vcproj: + * JavaScriptCore.vcproj/testapi/testapi.vcproj: + +010-12-01 Steve Falkenburg + + Reviewed by Adam Roben. + + vcproj changes can't be applied cleanly by the Windows EWS bot + https://bugs.webkit.org/show_bug.cgi?id=50328 + + * JavaScriptCore.vcproj/JavaScriptCore.sln: Modified property svn:eol-style. + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Modified property svn:eol-style. + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCF.vsprops: Added property svn:eol-style. + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCFLite.vsprops: Added property svn:eol-style. + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: Added property svn:eol-style. + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: Modified property svn:eol-style. + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedCommon.vsprops: Added property svn:eol-style. + * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln: Modified property svn:eol-style. + * JavaScriptCore.vcproj/WTF/WTF.vcproj: Modified property svn:eol-style. + * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops: Added property svn:eol-style. + * JavaScriptCore.vcproj/jsc/jsc.vcproj: Modified property svn:eol-style. + * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: Added property svn:eol-style. + * JavaScriptCore.vcproj/testapi/testapi.vcproj: Modified property svn:eol-style. + * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: Added property svn:eol-style. + +2010-12-01 Gavin Barraclough + + Reviewed by Sam Weinig. + + Bug 50298 - /()()()()()()()()()(?:(\10a|b)(X|Y))+/.exec("bXXaYYaY") ASSERTs + + For unmatched subpattens we previously used to set the subpattern end to -1, + but now we only set the start value. E.g. consider the following: + /a(b)?c/.exec("ac"); + Previously we would generate an internal results array of: + [ 0, 2, -1, -1 ] + Since fairly recently we have generated results of: + [ 0, 2, -1, ??? ] + (With the end index of the subpattern uninitialized). + + Update these ASSERTs to account for this. + + Also, when stripping out self-referencing backreferences, (e.g. /(\1)/) we + were checking the wrong property on the pattern term. We should have been + looking at term.parentheses.subpatternId, but instead were checking + term.subpatternId. The latter is actually only the subpatternId for + back reference terms. Rename this to backReferenceSubpatternId. + + * yarr/RegexInterpreter.cpp: + (JSC::Yarr::Interpreter::matchBackReference): + (JSC::Yarr::Interpreter::backtrackBackReference): + +2010-11-30 Gavin Barraclough + + Rubber stamped by Sam Weinig. + + Bug 50297 - \s in YARR should match BOMs. + + From section 15.10.2.12 CharacterClassEscape contains: + + The production CharacterClassEscape :: s evaluates by returning the set of characters containing the + characters that are on the right-hand side of the WhiteSpace (7.2) or LineTerminator (7.3) productions. + + Table 2 in section 7.2 contains: + + \uFEFF Byte Order Mark + + * create_regex_tables: + Add BOM to spaces table. + +2010-11-30 Gavin Barraclough + + Reviewed by Darin Adler. + + Fixed review comments following bug #48101. + Mostly typos, plus gave quantifyInfinite a symbolic name. + + * yarr/RegexCompiler.cpp: + (JSC::Yarr::RegexPatternConstructor::quantifyAtom): + (JSC::Yarr::RegexPatternConstructor::checkForTerminalParentheses): + * yarr/RegexInterpreter.cpp: + (JSC::Yarr::Interpreter::backtrackParenthesesOnceEnd): + (JSC::Yarr::Interpreter::matchParenthesesTerminalBegin): + (JSC::Yarr::Interpreter::backtrackParenthesesTerminalBegin): + (JSC::Yarr::Interpreter::backtrackParenthesesTerminalEnd): + * yarr/RegexJIT.cpp: + (JSC::Yarr::RegexGenerator::generatePatternCharacterGreedy): + (JSC::Yarr::RegexGenerator::generatePatternCharacterNonGreedy): + (JSC::Yarr::RegexGenerator::generateCharacterClassGreedy): + * yarr/RegexParser.h: + (JSC::Yarr::Parser::parseTokens): + (JSC::Yarr::parse): + +2010-11-30 Steve Falkenburg + + Reviewed by Darin Adler. + + WTF project missing build-stopping code from its pre-build event + https://bugs.webkit.org/show_bug.cgi?id=50281 + + * JavaScriptCore.vcproj/WTF/WTFPreBuild.cmd: + +2010-11-30 Patrick Gansterer + + Reviewed by Darin Adler. + + Cleanup UTF8.cpp + https://bugs.webkit.org/show_bug.cgi?id=49581 + + Use macros and functions instead of range values directly. + + * wtf/unicode/UTF8.cpp: + (WTF::Unicode::inlineUTF8SequenceLength): + (WTF::Unicode::UTF8SequenceLength): + (WTF::Unicode::convertUTF16ToUTF8): + (WTF::Unicode::readUTF8Sequence): + (WTF::Unicode::convertUTF8ToUTF16): + * wtf/unicode/UnicodeMacrosFromICU.h: Added U_IS_SUPPLEMENTARY macro. + +2010-11-30 Geoffrey Garen + + Reviewed by Gavin Barraclough. + + Fixed a crash seen when using a PageAllocation to store itself. + + * wtf/PageAllocation.h: + (WTF::PageAllocation::systemDeallocate): Zero out m_base before unmapping + it, in case unmapping m_base unmaps the PageAllocation. + + * wtf/BumpPointerAllocator.h: + (WTF::BumpPointerPool::destroy): Now this work-around isn't needed! + +2010-11-30 Xan Lopez + + Reviewed by Darin Adler. + + m_hasNonEnumerableProperties is never initialized in Structure + https://bugs.webkit.org/show_bug.cgi?id=50266 + + * runtime/Structure.cpp: + (JSC::Structure::Structure): initialize member variable. + +2010-11-29 Steve Falkenburg + + Windows build fix (part 1). Use correct environment variable syntax in cmd files. + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePostBuild.cmd: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePreBuild.cmd: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePreLink.cmd: + * JavaScriptCore.vcproj/WTF/WTFPostBuild.cmd: + * JavaScriptCore.vcproj/jsc/jscPostBuild.cmd: + * JavaScriptCore.vcproj/jsc/jscPreBuild.cmd: + * JavaScriptCore.vcproj/jsc/jscPreLink.cmd: + * JavaScriptCore.vcproj/testapi/testapiPostBuild.cmd: + * JavaScriptCore.vcproj/testapi/testapiPreBuild.cmd: + * JavaScriptCore.vcproj/testapi/testapiPreLink.cmd: + +2010-11-29 Dan Bernstein + + Reviewed by Darin Adler. + + WTF support for adding word-prefix search options to the text search API. + https://bugs.webkit.org/show_bug.cgi?id=50038 + + * wtf/unicode/UnicodeMacrosFromICU.h: Copied additional macros from icu/unicode/utf16.h. + +2010-11-29 Steve Falkenburg + + Reviewed by Darin Adler. + + JavaScriptCore projects on Windows should use cmd files for build events + https://bugs.webkit.org/show_bug.cgi?id=50193 + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePostBuild.cmd: Added. + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePreBuild.cmd: Added. + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePreLink.cmd: Added. + * JavaScriptCore.vcproj/WTF/WTFPostBuild.cmd: Added property svn:eol-style. + * JavaScriptCore.vcproj/WTF/WTFPreBuild.cmd: Added property svn:eol-style. + * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: + * JavaScriptCore.vcproj/jsc/jscPostBuild.cmd: Added. + * JavaScriptCore.vcproj/jsc/jscPreBuild.cmd: Added. + * JavaScriptCore.vcproj/jsc/jscPreLink.cmd: Added. + * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: + * JavaScriptCore.vcproj/testapi/testapiPostBuild.cmd: Added. + * JavaScriptCore.vcproj/testapi/testapiPreBuild.cmd: Added. + * JavaScriptCore.vcproj/testapi/testapiPreLink.cmd: Added. + +2010-11-29 Dai Mikurube + + Reviewed by Kent Tamura. + + when empty, clicking "down" on outer-spin-button returns "max value" + https://bugs.webkit.org/show_bug.cgi?id=45491 + + It is required to calculate UTC/DST offsets to retrieve the current local milliseconds for + date/time type inputs. WTF::currentTimeMS() returns a UTC time, and WTF::getLocalTime() + returns a struct tm, not milliseconds. + + Calculating milliseconds from a struct tm is not simple since timegm() cannot be used in all + environments. This calculation is already done in calculateUTCOffset(), and complicated. + Duplicating this complicated calculation is unreasonable because of maintainability. + To achieve this without duplication, we must call calculate{UTC|DST}Offset in some way. + + * JavaScriptCore.exp: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: + * wtf/DateMath.cpp: Changed calculateUTCOffset() and calculateDSTOffset() to external functions. + (WTF::calculateUTCOffset): + (WTF::calculateDSTOffset): + * wtf/DateMath.h: + +2010-11-29 Chris Rogers + + Reviewed by Kenneth Russell. + + Switch web audio code to use FloatPoint3D instead of Vector3 + https://bugs.webkit.org/show_bug.cgi?id=50186 + + * wtf/Vector3.h: Removed. + +2010-11-29 Steve Falkenburg + + Reviewed by Adam Roben. + + Add a mechanism for Windows pre-build/pre-link/post-build events to be separated into individual cmd files + https://bugs.webkit.org/show_bug.cgi?id=49858 + + We're migrating our prebuild/prelink/postbuild steps out of vcproj and vsprops files: + - To simplify editing (editing vsprops build steps is confusing). + - For more readable diffs. + + * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops: + * JavaScriptCore.vcproj/WTF/WTFPostBuild.cmd: Added. + * JavaScriptCore.vcproj/WTF/WTFPreBuild.cmd: Added. + +2010-11-29 Geoffrey Garen + + Reviewed by Gavin Barraclough. + + Improved accuracy of command-line SunSpider. + + * jsc.cpp: + (functionRun): Changed the "run" function to run a given test in + its own global object. Previously, all tests ran in the same global + object, which created name conflicts, and made globals from previous + tests artificially survive into later tests. + + Also changed "run" to return the elapsed milliseconds when running a + given test, for slightly more accurate numbers. + + (functionCheckSyntax): Ditto on returning elapsed milliseconds. + +2010-11-29 Darin Adler + + Reviewed by Andreas Kling. + + Remove a couple unneeded overflow checks + https://bugs.webkit.org/show_bug.cgi?id=49816 + + * wtf/text/CString.cpp: + (WTF::CString::init): Use an ASSERT instead of + an overflow check with CRASH. + +2010-11-29 Adam Roben + + Robustify react-to-vsprops-changes.py against changes to its location + or the location of the .vsprops files + + Suggested by John Sullivan. + + * JavaScriptCore.vcproj/JavaScriptCore/react-to-vsprops-changes.py: + Removed file_modification_times. + (main): Use glob.glob to find the .vsprops files and assert that we found some. + +2010-11-29 Adam Roben + + Touch wtf/Platform.h whenever any .vsprops file changes + + This will cause all files to be recompiled, which will make changes to + preprocessor macros (e.g., ENABLE_*) actually take effect. + + Fixes Windows build fails when ENABLE_* + macros are changed (because not enough files are rebuilt) + + Reviewed by John Sullivan. + + * JavaScriptCore.vcproj/JavaScriptCore/react-to-vsprops-changes.py: + (main): Touch wtf/Platform.h if it's older than any .vsprops file. Also + added some comments and logging to make it clearer what the script is + doing and why. + +2010-11-29 Adam Roben + + Update react-to-vsprops-changes.py after r72555 + + .vsprops files are no longer accessed relative to $WebKitLibrariesDir. + + Fixes REGRESSION (r72555): + react-to-vsprops-changes.py no longer works for people with a + non-default $WebKitLibrariesDir + + Reviewed by John Sullivan. + + * JavaScriptCore.vcproj/JavaScriptCore/react-to-vsprops-changes.py: + (main): Always look in WebKitLibraries/win for .vsprops files, not in + $WebKitLibrariesDir. + +2010-11-28 Gavin Barraclough + + Reviewed by Sam Weinig. + + Bug 48100 - YARR allows what seems like a bogus character-class range + + Per ECMA-262 character classes containing character ranges containing + character classes are invalid, eg: + /[\d-x]/ + /[x-\d]/ + /[\d-\d]/ + These should throw a syntax error. + + * yarr/RegexParser.h: + +2010-11-27 Gavin Barraclough + + Reviewed by Sam Weinig. + + Bug 48101 - Yarr gives different results for /(?:a*?){2,}/ + + The test cases in the linked mozilla bug demonstrate a couple of + problems in subpattern matching. These bugs lie in the optimized + cases - for matching parentheses with a quantity count of 1, and + for matching greedy quantified parentheses at the end of a regex + (which do not backtrack). + + In both of these cases we are failing to correctly handle empty + matches. In the case of parentheses-single matches (quantity count + one) we are failing to test for empty matches at all. In the case + of terminal subpattern matches we do currently check, however there + is a subtler bug here too. In the case of an empty match we will + presently immediately fall through to the next alternative (or + complete the regex match), whereas upon a failed match we should + be backtracking into the failing alternative, to give it a chance + to match further (e.g. consider /a??b?|a/.exec("ab") - upon first + attempting to match the first alternative this will match the empty + string - since a?? is non-greedy, however rather than moving on to + the second alternative we should be re-matching the first one, at + which point the non-greedy a?? will match, and as such the result + should be "ab", not "a"). + + Terminal subpattern matching contains a second bug, too. The frame + location values in the subpattern should be being allocated with + the outer disjunction's frame (as we do for the parentheses-single + optimization). Consider the following three regexes: + /a*(?:b*)*c*/ + /a*(?:b*)c*/ + /a*(?:b*)*/ + Considering only the frame location required by the atoms a,b, and + c, (ignoring space associated with the nested subpattern) the first + regex (a normal subpattern match) requires a frame size of 2 for + the outer disjunction, (to backtrack terms a & c), with each + iteration of the subpattern requiring a frame of size 1 (in order + to backtrack b). In the case of the second regex (where the + parentheses-single optimization will kick in) the outer frame must + be set up with a frame size of 3, since the outer frame will also + be used when running the nested subpattern. We will currently only + allocate a farme of size 1 for the outer disjuntion (to contain a), + howver the frame size should be 2 (since the subpattern will be + evaluated in the outer frame). In addition to failing to allocate + frame space the frame offsets are also presently invalid - in the + case of the last regex b's frame location will be set assuming it + to be the first term in the frame, whereas in this case b lies + after the term a, and should be taking a separate frame location. + + In order to correctly allocate the frame for terminal subpattern + matches we must move this optimization back up from the JIT into + the compiler (and thus interpreter too), since this is where the + frame allocation takes place. + + * yarr/RegexCompiler.cpp: + (JSC::Yarr::RegexPatternConstructor::setupAlternativeOffsets): + (JSC::Yarr::RegexPatternConstructor::checkForTerminalParentheses): + (JSC::Yarr::compileRegex): + * yarr/RegexInterpreter.cpp: + (JSC::Yarr::Interpreter::matchParenthesesOnceBegin): + (JSC::Yarr::Interpreter::matchParenthesesOnceEnd): + (JSC::Yarr::Interpreter::backtrackParenthesesOnceBegin): + (JSC::Yarr::Interpreter::backtrackParenthesesOnceEnd): + (JSC::Yarr::Interpreter::matchParenthesesTerminalBegin): + (JSC::Yarr::Interpreter::matchParenthesesTerminalEnd): + (JSC::Yarr::Interpreter::backtrackParenthesesTerminalBegin): + (JSC::Yarr::Interpreter::backtrackParenthesesTerminalEnd): + (JSC::Yarr::Interpreter::matchDisjunction): + (JSC::Yarr::ByteCompiler::atomParenthesesOnceBegin): + (JSC::Yarr::ByteCompiler::atomParenthesesTerminalBegin): + (JSC::Yarr::ByteCompiler::atomParenthesesSubpatternBegin): + (JSC::Yarr::ByteCompiler::atomParentheticalAssertionEnd): + (JSC::Yarr::ByteCompiler::atomParenthesesSubpatternEnd): + (JSC::Yarr::ByteCompiler::atomParenthesesOnceEnd): + (JSC::Yarr::ByteCompiler::atomParenthesesTerminalEnd): + (JSC::Yarr::ByteCompiler::emitDisjunction): + * yarr/RegexInterpreter.h: + * yarr/RegexJIT.cpp: + (JSC::Yarr::RegexGenerator::generateParenthesesSingle): + (JSC::Yarr::RegexGenerator::generateParenthesesGreedyNoBacktrack): + (JSC::Yarr::RegexGenerator::generateTerm): + * yarr/RegexPattern.h: + (JSC::Yarr::PatternTerm::PatternTerm): + +2010-11-24 Patrick Gansterer + + Reviewed by Csaba Osztrogonác. + + Remove Bakefile build system files + https://bugs.webkit.org/show_bug.cgi?id=49983 + + r53757 only removed the content, but not the files. + This patch removes that empty files. + + * JavaScriptCoreSources.bkl: Removed. + * jscore.bkl: Removed. + +2010-11-24 Gabor Loki + + Reviewed by Csaba Osztrogonác. + + Merge the usage of jumps and calls at ARM-JIT + https://bugs.webkit.org/show_bug.cgi?id=50008 + + Those JmpSrc objects which represent jumps (not calls) should point to + after the jump instruction. + + * assembler/ARMAssembler.h: + (JSC::ARMAssembler::blx): + (JSC::ARMAssembler::loadBranchTarget): + (JSC::ARMAssembler::getAbsoluteJumpAddress): + (JSC::ARMAssembler::linkJump): + (JSC::ARMAssembler::relinkJump): + (JSC::ARMAssembler::linkCall): + (JSC::ARMAssembler::relinkCall): + (JSC::ARMAssembler::getRelocatedAddress): + (JSC::ARMAssembler::getDifferenceBetweenLabels): + (JSC::ARMAssembler::getCallReturnOffset): + * assembler/MacroAssemblerARM.h: + (JSC::MacroAssemblerARM::call): + +2010-11-24 Carlos Garcia Campos + + Reviewed by Xan Lopez. + + [GTK] Optimize foldCase, toLower and toUpper methods in glib unicode backend + https://bugs.webkit.org/show_bug.cgi?id=48625 + + GLib methods use UTF-8 strings, so we have to convert from UTF-16 to + UTF-8 to perform the case operations and then convert back the result to + UTF-16. GLib conversion methods return a new allocated string, so we + have to memcpy the result into the destination buffer too. Using our + own methods to convert between UTF-8 and UTF-16 from wtf/unicode/UTF8.h + we don't need such memcpy, since they take an already allocated buffer + rather than returning a new one. There's another optimization for the + case when the destination buffer is not large enough. In that case, + methods should return the expected destination buffer size and are + called again with a new buffer. We can avoid the conversion to UTF-16 by + pre-calculating the required size for the destination buffer. + + * wtf/unicode/glib/UnicodeGLib.cpp: + (WTF::Unicode::getUTF16LengthFromUTF8): + (WTF::Unicode::convertCase): + (WTF::Unicode::foldCase): + (WTF::Unicode::toLower): + (WTF::Unicode::toUpper): + +2010-11-23 Patrick Gansterer + + Reviewed by Sam Weinig. + + Use WTF::StringHasher directly in JavaScriptCore + https://bugs.webkit.org/show_bug.cgi?id=49893 + + * profiler/CallIdentifier.h: + (JSC::CallIdentifier::Hash::hash): + * runtime/Identifier.cpp: + (JSC::IdentifierCStringTranslator::hash): + (JSC::IdentifierUCharBufferTranslator::hash): + +2010-11-22 Patrick Gansterer + + Reviewed by Sam Weinig. + + Add WTF::FixedArray::size() + https://bugs.webkit.org/show_bug.cgi?id=49891 + + Add a method to get the size of a FixedArray. + + * wtf/FixedArray.h: + (WTF::FixedArray::size): + +2010-11-22 Patrick Gansterer + + Reviewed by Adam Roben. + + [WINCE] Set correct preprocessor definitions + https://bugs.webkit.org/show_bug.cgi?id=49887 + + * wtf/Platform.h: + +2010-11-22 Adam Roben + + Use paths relative to $WebKitVSPropsRedirectionDir to access shared .vsprops files + + Apple's Windows build allows placing header files and import libraries for WebKit's + dependencies (CoreGraphics, CFNetwork, SQLite, etc.) outside the source tree via the + $WebKitLibrariesDir environment variable. This is both required for production builds and + convenient for Apple-internal developer builds. Apple's production builds also require that + WebKit's shared .vsprops files be accessed relative to $WebKitLibrariesDir. In production + builds, the files are copied into that directory tree by the + WebKitLibraries/win/tools/WinTools.make file. In Apple-internal developer builds, the + copying is done by + JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make. + + This .vsprops copying is problematic in one very important case: when a developer updates + their source tree and then tries to build. Visual Studio only reads .vsprops files when a + project is first loaded. So, when Visual Studio is first opened after the .vsprops files are + updated, it reads in the old files that were already residing in $WebKitLibrariesDir. When a + build is started, JavaScriptCoreGenerated.make copies the new .vsprops files into + $WebKitLibrariesDir, but Visual Studio will not pick up the changes. The rest of the build + will proceed with out-of-date .vsprops files, which will likely result in a build failure. + + To fix this, we now use normal relative paths to access the .vsprops files in the source + tree rather than in $WebKitLibrariesDir, but prefix those paths with a new environment + variable, $WebKitVSPropsRedirectionDir. In developer builds, this environment variable is + unset, so the normal relative paths are used to read the .vsprops files out of the source + tree directly. In production builds, this environment variable is set to a fake directory + that will cause the .vsprops files in $WebKitLibrariesDir to be found when the relative path + is resolved. + + For example, JavaScriptCore.vcproj uses this path for FeatureDefines.vsprops: + + $(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\FeatureDefines.vsprops + + In developer builds, where $WebKitVSPropsRedirectionDir is unset, this will point to the + files in WebKitLibraries\win\tools\vsprops in the source tree. In production builds, + JavaScriptCore.make sets $WebKitVSPropsRedirectionDir to + "$(SRCROOT)\AppleInternal\tools\vsprops\OpenSource\1\2\3\", so the full path for + FeatureDefines.vsprops becomes: + + $(SRCROOT)\AppleInternal\tools\vsprops\OpenSource\1\2\3\..\..\..\WebKitLibraries\win\tools\vsprops\FeatureDefines.vsprops + + which resolves to: + + $(SRCROOT)\AppleInternal\tools\vsprops\OpenSource\WebKitLibraries\win\tools\vsprops\FeatureDefines.vsprops + + (We rely on the fact that Windows doesn't care whether the directories "1", "2", and "3" + actually exist since they are matched by an equal number of ".." path components.) + + Note that Visual Studio still won't pick up changes made to .vsprops files while Visual + Studio is open, but that problem hasn't seemed to cause developers many headaches so far. + + Fixes Windows build fails mysteriously when .vsprops files are + updated + + Reviewed by Dave Hyatt. + + * JavaScriptCore.vcproj/JavaScriptCore.make: Set $WebKitVSPropsRedirectionDir so that + production builds can find the .vsprops files. + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: Stopy copying the + .vsprops files. It isn't needed anymore. + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: + * JavaScriptCore.vcproj/WTF/WTF.vcproj: + * JavaScriptCore.vcproj/jsc/jsc.vcproj: + * JavaScriptCore.vcproj/testapi/testapi.vcproj: + Changed to use paths relative to $WebKitVSPropsRedirectionDir to access shared .vsprops + files. + +2010-11-19 Peter Varga + + Reviewed by Gavin Barraclough. + + YARR JIT should fallback to YARR Interpreter instead of PCRE. + https://bugs.webkit.org/show_bug.cgi?id=46719 + + Remove the ENABLE_YARR macro and the option of matching regular + expressions with PCRE from JavaScriptCore. + + * runtime/JSGlobalData.h: + * runtime/RegExp.cpp: + (JSC::RegExp::compile): + (JSC::RegExp::match): + * tests/mozilla/expected.html: + * wtf/Platform.h: + * yarr/RegexCompiler.cpp: + * yarr/RegexCompiler.h: + * yarr/RegexInterpreter.cpp: + (JSC::Yarr::byteCompileRegex): + * yarr/RegexInterpreter.h: + * yarr/RegexJIT.cpp: + (JSC::Yarr::jitCompileRegex): + * yarr/RegexJIT.h: + (JSC::Yarr::RegexCodeBlock::RegexCodeBlock): + (JSC::Yarr::RegexCodeBlock::~RegexCodeBlock): + (JSC::Yarr::RegexCodeBlock::getFallback): + (JSC::Yarr::RegexCodeBlock::isFallback): + (JSC::Yarr::RegexCodeBlock::setFallback): + (JSC::Yarr::executeRegex): + * yarr/RegexParser.h: + * yarr/RegexPattern.h: + +2010-11-20 Kwang Yul Seo + + Reviewed by David Kilzer. + + [BREWMP] Replace DBGPRINTF and DBGPRINTF_FATAL with dbg_Message + https://bugs.webkit.org/show_bug.cgi?id=49520 + + DBGPRINTF and DBGPRINTF_FATAL macros are prohibited in Mod1. Use dbg_Message instead. + + * wtf/Assertions.cpp: + * wtf/Assertions.h: + +2010-11-20 Gabor Loki + + Reviewed by Gavin Barraclough. + + Support JIT_OPTIMIZE_MOD on Thumb-2 + https://bugs.webkit.org/show_bug.cgi?id=49432 + + Rewrite the soft modulo operation into macroassembler form, and move it + to JSValue32_64 section. + Add support for soft modulo on Thumb-2 JIT also. + + * assembler/ARMv7Assembler.h: + (JSC::ARMv7Assembler::clz): + * assembler/MacroAssemblerARM.h: + (JSC::MacroAssemblerARM::countLeadingZeros32): + (JSC::MacroAssemblerARM::relativeTableJump): + * assembler/MacroAssemblerARMv7.h: + (JSC::MacroAssemblerARMv7::countLeadingZeros32): + (JSC::MacroAssemblerARMv7::relativeTableJump): + * jit/JITArithmetic.cpp: + (JSC::JIT::emit_op_mod): + * jit/JITOpcodes.cpp: + (JSC::JIT::privateCompileCTIMachineTrampolines): + * jit/JITOpcodes32_64.cpp: + (JSC::JIT::softModulo): + * jit/JITStubs.cpp: + (JSC::JITThunks::JITThunks): + * wtf/Platform.h: + +2010-11-20 David Kilzer + + Make it possible to display the last character of a secure text field unobscured + + Reviewed by Darin Adler. + + * JavaScriptCore.exp: + * wtf/text/StringImpl.cpp: + (WTF::StringImpl::secure): Added argument that controls whether + the last character is obscured or not. Implemented behavior. + * wtf/text/StringImpl.h: + (WTF::StringImpl::LastCharacterBehavior): Added enum. + (WTF::StringImpl::secure): Updated method signature. + +2010-11-19 William Chan + + Reviewed by David Levin. + + Add USE(CHROMIUM_NET) + + Indicates the use of Chromium's network stack. Chromium's network + stack performs better when it has full view of all resource requests, + so USE(CHROMIUM_NET) can be used to bypass throttles. + + https://bugs.webkit.org/show_bug.cgi?id=49778 + + * wtf/Platform.h: + +2010-11-19 Steve Falkenburg + + Reviewed by Adam Roben. + + Add Debug_Cairo_CFLite and Release_Cairo_CFLite configurations for all vcproj files + https://bugs.webkit.org/show_bug.cgi?id=49819 + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: + * JavaScriptCore.vcproj/WTF/WTF.vcproj: + * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops: + * JavaScriptCore.vcproj/jsc/jsc.vcproj: + * JavaScriptCore.vcproj/testapi/testapi.vcproj: + +2010-11-19 Oliver Hunt + + Reviewed by Geoffrey Garen. + + Don't check for constant registers when we can guarantee that the register won't be in the constant pool + https://bugs.webkit.org/show_bug.cgi?id=49814 + + Add uncheckedR(int) to CallFrame, and replace all the uses of r() with uncheckedR() + when we can guarantee that the register is not referring to a constant. + This makes the interpreter about 0.5% faster, and makes the CallFrame initialisation + logic correct when we're using a faked callframe (as in the case of the globalExec). + + * bytecode/CodeBlock.cpp: + (JSC::CodeBlock::createActivation): + * debugger/DebuggerCallFrame.cpp: + (JSC::DebuggerCallFrame::thisObject): + * interpreter/CallFrame.h: + (JSC::ExecState::uncheckedR): + * interpreter/Interpreter.cpp: + (JSC::Interpreter::resolve): + (JSC::Interpreter::resolveSkip): + (JSC::Interpreter::resolveGlobal): + (JSC::Interpreter::resolveGlobalDynamic): + (JSC::Interpreter::resolveBase): + (JSC::Interpreter::resolveBaseAndProperty): + (JSC::Interpreter::callEval): + (JSC::Interpreter::unwindCallFrame): + (JSC::Interpreter::throwException): + (JSC::Interpreter::execute): + (JSC::Interpreter::executeCall): + (JSC::Interpreter::executeConstruct): + (JSC::Interpreter::prepareForRepeatCall): + (JSC::Interpreter::createExceptionScope): + (JSC::Interpreter::privateExecute): + * jit/JITStubs.cpp: + (JSC::DEFINE_STUB_FUNCTION): + * runtime/JSActivation.cpp: + (JSC::JSActivation::argumentsGetter): + +2010-11-19 Steve Falkenburg + + Reviewed by Darin Adler. + + Normalize Cairo/CFLite project/solution configuration names + https://bugs.webkit.org/show_bug.cgi?id=49818 + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: + * JavaScriptCore.vcproj/jsc/jsc.vcproj: + * JavaScriptCore.vcproj/testapi/testapi.vcproj: + +2010-11-18 Steve Falkenburg + + Reviewed by Adam Roben. + + Windows vcproj configuration names should be normalized across projects + https://bugs.webkit.org/show_bug.cgi?id=49776 + + * JavaScriptCore.vcproj/JavaScriptCore.sln: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedCommon.vsprops: Added. + * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln: + +2010-11-19 Patrick Gansterer + + Unreviewed, build fix after r72360. + + * bytecode/CodeBlock.h: + (JSC::CodeBlock::bytecodeOffset): + +2010-11-18 Gavin Barraclough + + Rubber stamped by Geoff Garen. + + Bug 49577 - Function.prototype should be non-configurable + + Ooops, Function.prototype should not be enumerable! + + * runtime/JSFunction.cpp: + (JSC::JSFunction::getOwnPropertySlot): + +2010-11-18 Gavin Barraclough + + Reviewed by Oliver Hunt. + + Bug 49708 - Stop recompiling functions to regenerate exception info. + + Instead only hold info as necessary – keep divot info is the inspector + is enabled, line number info is debugging or profiling, and handler + info for functions with try/catch. + + * bytecode/CodeBlock.cpp: + (JSC::CodeBlock::dumpStatistics): + (JSC::CodeBlock::CodeBlock): + (JSC::CodeBlock::lineNumberForBytecodeOffset): + (JSC::CodeBlock::expressionRangeForBytecodeOffset): + (JSC::CodeBlock::shrinkToFit): + * bytecode/CodeBlock.h: + (JSC::CodeBlock::bytecodeOffset): + (JSC::CodeBlock::addExpressionInfo): + (JSC::CodeBlock::addLineInfo): + (JSC::CodeBlock::hasExpressionInfo): + (JSC::CodeBlock::hasLineInfo): + (JSC::CodeBlock::needsCallReturnIndices): + (JSC::CodeBlock::callReturnIndexVector): + * bytecode/SamplingTool.cpp: + (JSC::SamplingTool::dump): + * bytecompiler/BytecodeGenerator.cpp: + (JSC::BytecodeGenerator::generate): + (JSC::BytecodeGenerator::BytecodeGenerator): + * bytecompiler/BytecodeGenerator.h: + (JSC::BytecodeGenerator::emitNode): + (JSC::BytecodeGenerator::emitNodeInConditionContext): + (JSC::BytecodeGenerator::emitExpressionInfo): + (JSC::BytecodeGenerator::addLineInfo): + * interpreter/Interpreter.cpp: + (JSC::Interpreter::unwindCallFrame): + (JSC::appendSourceToError): + (JSC::Interpreter::throwException): + (JSC::Interpreter::privateExecute): + (JSC::Interpreter::retrieveLastCaller): + * interpreter/Interpreter.h: + * jit/JIT.cpp: + (JSC::JIT::privateCompile): + * jit/JITStubs.cpp: + (JSC::jitThrow): + (JSC::DEFINE_STUB_FUNCTION): + * runtime/Collector.cpp: + (JSC::Heap::markRoots): + * runtime/Executable.cpp: + (JSC::EvalExecutable::compileInternal): + (JSC::ProgramExecutable::compileInternal): + (JSC::FunctionExecutable::compileForCallInternal): + (JSC::FunctionExecutable::compileForConstructInternal): + * runtime/Executable.h: + * runtime/JSGlobalData.cpp: + (JSC::JSGlobalData::JSGlobalData): + * runtime/JSGlobalData.h: + (JSC::JSGlobalData::usingAPI): + * runtime/JSGlobalObject.h: + (JSC::JSGlobalObject::supportsRichSourceInfo): + (JSC::JSGlobalObject::globalData): + +2010-11-18 Adam Roben + + Add a script to delete manifest-related files when they are older than + any .vsprops file + + Changes to .vsprops files can cause the manifest files to become + invalid, and Visual Studio doesn't always figure out that it needs to + rebuild them. + + Reviewed by Sam Weinig. + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: + Call the new script. + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: + Added the new script. + + * JavaScriptCore.vcproj/JavaScriptCore/react-to-vsprops-changes.py: Added. + (file_modification_times): Generator to return the modification time of + each file in a directory hierarchy. + (main): Get the modification time of the newest vsprops file, then find + all manifest-related files in the obj directory. Delete all + manifest-related files that are older than the newest vsprops file. + +2010-11-18 Mark Rowe + + Rubber-stamped by Adam Roben. + + Enable compaction support. + + * Configurations/JavaScriptCore.xcconfig: + +2010-11-18 Gavin Barraclough + + Reviewed by Oliver Hunt. + + Bug 49635 - Profiler implementation is fragile + + The profile presently requires the exception handling mechanism to explicitly + remove all stack frames that are exited during the exception unwind mechanism. + This is fragile in a number of ways: + * We have to change bytecode register allocation when compiling code to run + when profiling, to preserve the callee function (this is also required to + call did_call after the call has returned). + * In the JIT we have to maintain additional data structures + (CodeBlock::RareData::m_functionRegisterInfos) to map back to the register + containing the callee. + * In the interpreter we use 'magic values' to offset into the instruction + stream to rediscover the register containing the function. + + Instead, move profiling into the head and tail of functions. + * This correctly accounts the cost of the call itself to the caller. + * This allows us to access the callee function object from the callframe. + * This means that at the point a call is made we can track the stack depth + on the ProfileNode. + * When unwinding we can simply report the depth at which the exception is + being handled - all call frames above this level are freed. + + * bytecode/CodeBlock.cpp: + (JSC::CodeBlock::shrinkToFit): + * bytecode/CodeBlock.h: + (JSC::CodeBlock::bytecodeOffset): + (JSC::CodeBlock::methodCallLinkInfo): + * bytecompiler/BytecodeGenerator.cpp: + (JSC::BytecodeGenerator::emitCall): + (JSC::BytecodeGenerator::emitCallVarargs): + * interpreter/Interpreter.cpp: + (JSC::Interpreter::unwindCallFrame): + (JSC::Interpreter::throwException): + (JSC::Interpreter::execute): + (JSC::Interpreter::executeCall): + (JSC::Interpreter::executeConstruct): + (JSC::Interpreter::privateExecute): + * jit/JITStubs.cpp: + (JSC::DEFINE_STUB_FUNCTION): + * profiler/Profile.cpp: + (JSC::Profile::Profile): + * profiler/ProfileGenerator.cpp: + (JSC::ProfileGenerator::addParentForConsoleStart): + (JSC::ProfileGenerator::willExecute): + (JSC::ProfileGenerator::didExecute): + (JSC::ProfileGenerator::exceptionUnwind): + (JSC::ProfileGenerator::stopProfiling): + * profiler/ProfileGenerator.h: + * profiler/ProfileNode.cpp: + (JSC::ProfileNode::ProfileNode): + (JSC::ProfileNode::willExecute): + * profiler/ProfileNode.h: + (JSC::ProfileNode::create): + (JSC::ProfileNode::callerCallFrame): + * profiler/Profiler.cpp: + (JSC::dispatchFunctionToProfiles): + (JSC::Profiler::_willExecute): + (JSC::Profiler::_didExecute): + (JSC::Profiler::exceptionUnwind): + * profiler/Profiler.h: + +2010-11-18 Steve Falkenburg + + Reviewed by Adam Roben. + + Remove leftover Windows Debug_Internal configurations + https://bugs.webkit.org/show_bug.cgi?id=49758 + + * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: + * JavaScriptCore.vcproj/WTF/WTF.vcproj: + * JavaScriptCore.vcproj/jsc/jsc.vcproj: + * JavaScriptCore.vcproj/testapi/testapi.vcproj: + +2010-11-18 Chao-ying Fu + + Reviewed by Csaba Osztrogonác. + + Avoid increasing required alignment of target type warning + https://bugs.webkit.org/show_bug.cgi?id=43963 + + * runtime/UString.h: + (JSC::UStringHash::equal): + * wtf/StdLibExtras.h: + 2010-11-17 Sam Weinig Reviewed by Anders Carlsson. diff --git a/JavaScriptCore/Configurations/JavaScriptCore.xcconfig b/JavaScriptCore/Configurations/JavaScriptCore.xcconfig index 5db3e00..69b2491 100644 --- a/JavaScriptCore/Configurations/JavaScriptCore.xcconfig +++ b/JavaScriptCore/Configurations/JavaScriptCore.xcconfig @@ -38,7 +38,8 @@ OTHER_LDFLAGS_BASE = -lobjc -Wl,-Y,3; OTHER_LDFLAGS = $(OTHER_LDFLAGS_$(REAL_PLATFORM_NAME)); OTHER_LDFLAGS_iphoneos = $(OTHER_LDFLAGS_BASE); OTHER_LDFLAGS_iphonesimulator = $(OTHER_LDFLAGS_iphoneos); -OTHER_LDFLAGS_macosx = $(OTHER_LDFLAGS_BASE) -sub_library libobjc -framework CoreServices; +OTHER_LDFLAGS_macosx = $(OTHER_LDFLAGS_BASE) -sub_library libobjc -framework CoreServices $(OTHER_LDFLAGS_macosx_$(TARGET_MAC_OS_X_VERSION_MAJOR)); +OTHER_LDFLAGS_macosx_1070 = -Xlinker -objc_gc_compaction; GCC_PREFIX_HEADER = JavaScriptCorePrefix.h; HEADER_SEARCH_PATHS = "${BUILT_PRODUCTS_DIR}/DerivedSources/JavaScriptCore" $(HEADER_SEARCH_PATHS); INFOPLIST_FILE = Info.plist; diff --git a/JavaScriptCore/Configurations/Version.xcconfig b/JavaScriptCore/Configurations/Version.xcconfig index d4cb8e7..ee86a20 100644 --- a/JavaScriptCore/Configurations/Version.xcconfig +++ b/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 = 13; +MINOR_VERSION = 14; TINY_VERSION = 0; FULL_VERSION = $(MAJOR_VERSION).$(MINOR_VERSION); diff --git a/JavaScriptCore/GNUmakefile.am b/JavaScriptCore/GNUmakefile.am index f7806b4..89f9ab7 100644 --- a/JavaScriptCore/GNUmakefile.am +++ b/JavaScriptCore/GNUmakefile.am @@ -554,11 +554,13 @@ javascriptcore_sources += \ if TARGET_WIN32 javascriptcore_sources += \ - JavaScriptCore/runtime/MarkStackWin.cpp + JavaScriptCore/runtime/MarkStackWin.cpp \ + JavaScriptCore/wtf/OSAllocatorWin.cpp else javascriptcore_sources += \ JavaScriptCore/jit/ExecutableAllocatorFixedVMPool.cpp \ - JavaScriptCore/runtime/MarkStackPosix.cpp + JavaScriptCore/runtime/MarkStackPosix.cpp \ + JavaScriptCore/wtf/OSAllocatorPosix.cpp endif # ---- diff --git a/JavaScriptCore/JavaScriptCore.exp b/JavaScriptCore/JavaScriptCore.exp index 3715a43..193fa08 100644 --- a/JavaScriptCore/JavaScriptCore.exp +++ b/JavaScriptCore/JavaScriptCore.exp @@ -306,8 +306,6 @@ __ZN3JSC8evaluateEPNS_9ExecStateERNS_10ScopeChainERKNS_10SourceCodeENS_7JSValueE __ZN3JSC9CodeBlockD1Ev __ZN3JSC9CodeBlockD2Ev __ZN3JSC9MarkStack10s_pageSizeE -__ZN3JSC9MarkStack12releaseStackEPvm -__ZN3JSC9MarkStack13allocateStackEm __ZN3JSC9MarkStack18initializePagesizeEv __ZN3JSC9Structure13hasTransitionEPN3WTF10StringImplEj __ZN3JSC9Structure17stopIgnoringLeaksEv @@ -350,7 +348,7 @@ __ZN3WTF10StringImpl5upperEv __ZN3WTF10StringImpl6createEPKc __ZN3WTF10StringImpl6createEPKcj __ZN3WTF10StringImpl6createEPKtj -__ZN3WTF10StringImpl6secureEt +__ZN3WTF10StringImpl6secureEtNS0_21LastCharacterBehaviorE __ZN3WTF10StringImpl7replaceEPS0_S1_ __ZN3WTF10StringImpl7replaceEjjPS0_ __ZN3WTF10StringImpl7replaceEtPS0_ @@ -361,8 +359,12 @@ __ZN3WTF10StringImplD1Ev __ZN3WTF10fastCallocEmm __ZN3WTF10fastMallocEm __ZN3WTF10fastStrDupEPKc +__ZN3WTF11OSAllocator16reserveAndCommitEm +__ZN3WTF11OSAllocator7releaseEPvm __ZN3WTF11commentAtomE __ZN3WTF11currentTimeEv +__ZN3WTF11dtoaRoundDPEPcdiRbRiRj +__ZN3WTF11dtoaRoundSFEPcdiRbRiRj __ZN3WTF11fastReallocEPvm __ZN3WTF12AtomicString11addSlowCaseEPNS_10StringImplE __ZN3WTF12AtomicString3addEPKc @@ -404,6 +406,8 @@ __ZN3WTF17charactersToFloatEPKtmPb __ZN3WTF17equalIgnoringCaseEPKtPKcj __ZN3WTF17equalIgnoringCaseEPNS_10StringImplEPKc __ZN3WTF17equalIgnoringCaseEPNS_10StringImplES1_ +__ZN3WTF18calculateDSTOffsetEdd +__ZN3WTF18calculateUTCOffsetEv __ZN3WTF18charactersToDoubleEPKtmPb __ZN3WTF18dateToDaysFrom1970Eiii __ZN3WTF18monthFromDayInYearEib @@ -431,6 +435,7 @@ __ZN3WTF39initializeMainThreadToProcessMainThreadEv __ZN3WTF3MD58addBytesEPKhm __ZN3WTF3MD58checksumERNS_6VectorIhLm16EEE __ZN3WTF3MD5C1Ev +__ZN3WTF4dtoaEPcdRbRiRj __ZN3WTF5Mutex4lockEv __ZN3WTF5Mutex6unlockEv __ZN3WTF5Mutex7tryLockEv @@ -545,9 +550,6 @@ __ZNK3JSC8JSObject9toBooleanEPNS_9ExecStateE __ZNK3JSC8JSString11resolveRopeEPNS_9ExecStateE __ZNK3JSC9HashTable11createTableEPNS_12JSGlobalDataE __ZNK3JSC9HashTable11deleteTableEv -__ZN3WTF11dtoaRoundSFEPcdiRbRiRj -__ZN3WTF11dtoaRoundDPEPcdiRbRiRj -__ZN3WTF4dtoaEPcdRbRiRj __ZNK3WTF12AtomicString5lowerEv __ZNK3WTF13DecimalNumber15toStringDecimalEPtj __ZNK3WTF13DecimalNumber28bufferLengthForStringDecimalEv diff --git a/JavaScriptCore/JavaScriptCore.gypi b/JavaScriptCore/JavaScriptCore.gypi index deb36fb..676a35d 100644 --- a/JavaScriptCore/JavaScriptCore.gypi +++ b/JavaScriptCore/JavaScriptCore.gypi @@ -400,6 +400,8 @@ 'wtf/NonCopyingSort.h', 'wtf/Noncopyable.h', 'wtf/NotFound.h', + 'wtf/OSAllocatorWin.cpp', + 'wtf/OSAllocator.h', 'wtf/OwnArrayPtr.h', 'wtf/OwnFastMallocPtr.h', 'wtf/OwnPtr.h', diff --git a/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore.make b/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore.make index 4f049c9..d7e2826 100644 --- a/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore.make +++ b/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore.make @@ -8,6 +8,7 @@ install: set PRODUCTION=1 set WebKitLibrariesDir=$(SRCROOT)\AppleInternal set WebKitOutputDir=$(OBJROOT) + set WebKitVSPropsRedirectionDir=$(SRCROOT)\AppleInternal\tools\vsprops\OpenSource\1\2\3\ !IF "$(BUILDSTYLE)"=="Release" devenv "JavaScriptCoreSubmit.sln" /rebuild Release_PGOInstrument set PATH=$(SYSTEMDRIVE)\cygwin\bin;$(PATH) diff --git a/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore.sln b/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore.sln index 69c21bc..b67d254 100644 --- a/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore.sln +++ b/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore.sln @@ -1,95 +1,95 @@ - -Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual Studio 2005 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "JavaScriptCore", "JavaScriptCore\JavaScriptCore.vcproj", "{011D10F1-B656-4A1B-A0C3-3842F02122C5}" - ProjectSection(ProjectDependencies) = postProject - {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A} = {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jsc", "jsc\jsc.vcproj", "{C59E5129-B453-49B7-A52B-1E104715F76E}" - ProjectSection(ProjectDependencies) = postProject - {AA8A5A85-592B-4357-BC60-E0E91E026AF6} = {AA8A5A85-592B-4357-BC60-E0E91E026AF6} - {011D10F1-B656-4A1B-A0C3-3842F02122C5} = {011D10F1-B656-4A1B-A0C3-3842F02122C5} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WTF", "WTF\WTF.vcproj", "{AA8A5A85-592B-4357-BC60-E0E91E026AF6}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FindSafari", "..\..\WebKitTools\FindSafari\FindSafari.vcproj", "{DA31DA52-6675-48D4-89E0-333A7144397C}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "JavaScriptCoreGenerated", "JavaScriptCore\JavaScriptCoreGenerated.vcproj", "{4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug_All|Win32 = Debug_All|Win32 - Debug_Internal|Win32 = Debug_Internal|Win32 - Debug|Win32 = Debug|Win32 - Release_PGOInstrument|Win32 = Release_PGOInstrument|Win32 - Release_PGOOptimize|Win32 = Release_PGOOptimize|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Debug_All|Win32.ActiveCfg = Debug_All|Win32 - {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Debug_All|Win32.Build.0 = Debug_All|Win32 - {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Debug_Internal|Win32.ActiveCfg = Debug_Internal|Win32 - {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Debug_Internal|Win32.Build.0 = Debug_Internal|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_PGOInstrument|Win32.ActiveCfg = Release_PGOInstrument|Win32 - {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Release_PGOInstrument|Win32.Build.0 = Release_PGOInstrument|Win32 - {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Release_PGOOptimize|Win32.ActiveCfg = Release_PGOOptimize|Win32 - {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Release_PGOOptimize|Win32.Build.0 = Release_PGOOptimize|Win32 - {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Release|Win32.ActiveCfg = Release|Win32 - {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Release|Win32.Build.0 = Release|Win32 - {C59E5129-B453-49B7-A52B-1E104715F76E}.Debug_All|Win32.ActiveCfg = Debug_All|Win32 - {C59E5129-B453-49B7-A52B-1E104715F76E}.Debug_All|Win32.Build.0 = Debug_All|Win32 - {C59E5129-B453-49B7-A52B-1E104715F76E}.Debug_Internal|Win32.ActiveCfg = Debug_Internal|Win32 - {C59E5129-B453-49B7-A52B-1E104715F76E}.Debug_Internal|Win32.Build.0 = Debug_Internal|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_PGOInstrument|Win32.ActiveCfg = Release|Win32 - {C59E5129-B453-49B7-A52B-1E104715F76E}.Release_PGOInstrument|Win32.Build.0 = Release|Win32 - {C59E5129-B453-49B7-A52B-1E104715F76E}.Release_PGOOptimize|Win32.ActiveCfg = Release|Win32 - {C59E5129-B453-49B7-A52B-1E104715F76E}.Release_PGOOptimize|Win32.Build.0 = Release|Win32 - {C59E5129-B453-49B7-A52B-1E104715F76E}.Release|Win32.ActiveCfg = Release|Win32 - {C59E5129-B453-49B7-A52B-1E104715F76E}.Release|Win32.Build.0 = Release|Win32 - {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Debug_All|Win32.ActiveCfg = Debug_All|Win32 - {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Debug_All|Win32.Build.0 = Debug_All|Win32 - {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Debug_Internal|Win32.ActiveCfg = Debug_Internal|Win32 - {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Debug_Internal|Win32.Build.0 = Debug_Internal|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_PGOInstrument|Win32.ActiveCfg = Release|Win32 - {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Release_PGOInstrument|Win32.Build.0 = Release|Win32 - {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Release_PGOOptimize|Win32.ActiveCfg = Release|Win32 - {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Release_PGOOptimize|Win32.Build.0 = Release|Win32 - {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Release|Win32.ActiveCfg = Release|Win32 - {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Release|Win32.Build.0 = Release|Win32 - {DA31DA52-6675-48D4-89E0-333A7144397C}.Debug_All|Win32.ActiveCfg = all|Win32 - {DA31DA52-6675-48D4-89E0-333A7144397C}.Debug_All|Win32.Build.0 = all|Win32 - {DA31DA52-6675-48D4-89E0-333A7144397C}.Debug_Internal|Win32.ActiveCfg = all|Win32 - {DA31DA52-6675-48D4-89E0-333A7144397C}.Debug_Internal|Win32.Build.0 = all|Win32 - {DA31DA52-6675-48D4-89E0-333A7144397C}.Debug|Win32.ActiveCfg = all|Win32 - {DA31DA52-6675-48D4-89E0-333A7144397C}.Debug|Win32.Build.0 = all|Win32 - {DA31DA52-6675-48D4-89E0-333A7144397C}.Release_PGOInstrument|Win32.ActiveCfg = all|Win32 - {DA31DA52-6675-48D4-89E0-333A7144397C}.Release_PGOInstrument|Win32.Build.0 = all|Win32 - {DA31DA52-6675-48D4-89E0-333A7144397C}.Release_PGOOptimize|Win32.ActiveCfg = all|Win32 - {DA31DA52-6675-48D4-89E0-333A7144397C}.Release_PGOOptimize|Win32.Build.0 = all|Win32 - {DA31DA52-6675-48D4-89E0-333A7144397C}.Release|Win32.ActiveCfg = all|Win32 - {DA31DA52-6675-48D4-89E0-333A7144397C}.Release|Win32.Build.0 = all|Win32 - {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Debug_All|Win32.ActiveCfg = all|Win32 - {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Debug_All|Win32.Build.0 = all|Win32 - {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Debug_Internal|Win32.ActiveCfg = all|Win32 - {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Debug_Internal|Win32.Build.0 = all|Win32 - {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Debug|Win32.ActiveCfg = all|Win32 - {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Debug|Win32.Build.0 = all|Win32 - {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Release_PGOInstrument|Win32.ActiveCfg = all|Win32 - {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Release_PGOInstrument|Win32.Build.0 = all|Win32 - {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Release_PGOOptimize|Win32.ActiveCfg = all|Win32 - {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Release_PGOOptimize|Win32.Build.0 = all|Win32 - {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Release|Win32.ActiveCfg = all|Win32 - {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Release|Win32.Build.0 = all|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual Studio 2005 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "JavaScriptCore", "JavaScriptCore\JavaScriptCore.vcproj", "{011D10F1-B656-4A1B-A0C3-3842F02122C5}" + ProjectSection(ProjectDependencies) = postProject + {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A} = {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jsc", "jsc\jsc.vcproj", "{C59E5129-B453-49B7-A52B-1E104715F76E}" + ProjectSection(ProjectDependencies) = postProject + {AA8A5A85-592B-4357-BC60-E0E91E026AF6} = {AA8A5A85-592B-4357-BC60-E0E91E026AF6} + {011D10F1-B656-4A1B-A0C3-3842F02122C5} = {011D10F1-B656-4A1B-A0C3-3842F02122C5} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WTF", "WTF\WTF.vcproj", "{AA8A5A85-592B-4357-BC60-E0E91E026AF6}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FindSafari", "..\..\WebKitTools\FindSafari\FindSafari.vcproj", "{DA31DA52-6675-48D4-89E0-333A7144397C}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "JavaScriptCoreGenerated", "JavaScriptCore\JavaScriptCoreGenerated.vcproj", "{4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug_All|Win32 = Debug_All|Win32 + Debug|Win32 = Debug|Win32 + Release_LTCG|Win32 = Release_LTCG|Win32 + Release_PGOInstrument|Win32 = Release_PGOInstrument|Win32 + Release_PGOOptimize|Win32 = Release_PGOOptimize|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Debug_All|Win32.ActiveCfg = Debug_All|Win32 + {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}.Release_PGOInstrument|Win32.ActiveCfg = Release_PGOInstrument|Win32 + {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Release_PGOInstrument|Win32.Build.0 = Release_PGOInstrument|Win32 + {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Release_PGOOptimize|Win32.ActiveCfg = Release_PGOOptimize|Win32 + {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Release_PGOOptimize|Win32.Build.0 = Release_PGOOptimize|Win32 + {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Release|Win32.ActiveCfg = Release|Win32 + {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Release|Win32.Build.0 = Release|Win32 + {C59E5129-B453-49B7-A52B-1E104715F76E}.Debug_All|Win32.ActiveCfg = Debug_All|Win32 + {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}.Release_PGOInstrument|Win32.ActiveCfg = Release|Win32 + {C59E5129-B453-49B7-A52B-1E104715F76E}.Release_PGOInstrument|Win32.Build.0 = Release|Win32 + {C59E5129-B453-49B7-A52B-1E104715F76E}.Release_PGOOptimize|Win32.ActiveCfg = Release|Win32 + {C59E5129-B453-49B7-A52B-1E104715F76E}.Release_PGOOptimize|Win32.Build.0 = Release|Win32 + {C59E5129-B453-49B7-A52B-1E104715F76E}.Release|Win32.ActiveCfg = Release|Win32 + {C59E5129-B453-49B7-A52B-1E104715F76E}.Release|Win32.Build.0 = Release|Win32 + {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Debug_All|Win32.ActiveCfg = Debug_All|Win32 + {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}.Release_PGOInstrument|Win32.ActiveCfg = Release|Win32 + {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Release_PGOInstrument|Win32.Build.0 = Release|Win32 + {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Release_PGOOptimize|Win32.ActiveCfg = Release|Win32 + {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Release_PGOOptimize|Win32.Build.0 = Release|Win32 + {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Release|Win32.ActiveCfg = Release|Win32 + {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Release|Win32.Build.0 = Release|Win32 + {DA31DA52-6675-48D4-89E0-333A7144397C}.Debug_All|Win32.ActiveCfg = Debug_All|Win32 + {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}.Release_PGOInstrument|Win32.ActiveCfg = Release|Win32 + {DA31DA52-6675-48D4-89E0-333A7144397C}.Release_PGOInstrument|Win32.Build.0 = Release|Win32 + {DA31DA52-6675-48D4-89E0-333A7144397C}.Release_PGOOptimize|Win32.ActiveCfg = Release|Win32 + {DA31DA52-6675-48D4-89E0-333A7144397C}.Release_PGOOptimize|Win32.Build.0 = Release|Win32 + {DA31DA52-6675-48D4-89E0-333A7144397C}.Release|Win32.ActiveCfg = Release|Win32 + {DA31DA52-6675-48D4-89E0-333A7144397C}.Release|Win32.Build.0 = Release|Win32 + {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Debug_All|Win32.ActiveCfg = Debug_All|Win32 + {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}.Release_PGOInstrument|Win32.ActiveCfg = Release|Win32 + {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Release_PGOInstrument|Win32.Build.0 = Release|Win32 + {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Release_PGOOptimize|Win32.ActiveCfg = Release|Win32 + {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Release_PGOOptimize|Win32.Build.0 = Release|Win32 + {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Release|Win32.ActiveCfg = Release|Win32 + {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def b/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def index 449c0bb..1bc488f 100644 --- a/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def +++ b/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def @@ -58,6 +58,8 @@ EXPORTS ?attach@Debugger@JSC@@QAEXPAVJSGlobalObject@2@@Z ?broadcast@ThreadCondition@WTF@@QAEXXZ ?bufferLengthForStringDecimal@DecimalNumber@WTF@@QBEIXZ + ?calculateDSTOffset@WTF@@YANNN@Z + ?calculateUTCOffset@WTF@@YAHXZ ?calculatedFunctionName@DebuggerCallFrame@JSC@@QBE?AVUString@2@XZ ?call@JSC@@YA?AVJSValue@1@PAVExecState@1@V21@W4CallType@1@ABTCallData@1@1ABVArgList@1@@Z ?callOnMainThread@WTF@@YAXP6AXPAX@Z0@Z @@ -261,7 +263,9 @@ EXPORTS ?recompileAllJSFunctions@Debugger@JSC@@QAEXPAVJSGlobalData@2@@Z ?recordExtraCost@Heap@JSC@@AAEXI@Z ?reifyString@StringBuilder@WTF@@AAEXXZ + ?release@OSAllocator@WTF@@SAXPAXI@Z ?releaseStack@MarkStack@JSC@@CAXPAXI@Z + ?reserveAndCommit@OSAllocator@WTF@@SAPAXI@Z ?reset@ParserArena@JSC@@QAEXXZ ?reset@TimeoutChecker@JSC@@QAEXXZ ?resetDateCache@JSGlobalData@JSC@@QAEXXZ @@ -322,10 +326,10 @@ EXPORTS ?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 - ?toStringDecimal@DecimalNumber@WTF@@QBEIPA_WI@Z ?toString@JSCell@JSC@@UBE?AVUString@2@PAVExecState@2@@Z ?toString@JSObject@JSC@@UBE?AVUString@2@PAVExecState@2@@Z ?toString@JSString@JSC@@EBE?AVUString@2@PAVExecState@2@@Z + ?toStringDecimal@DecimalNumber@WTF@@QBEIPA_WI@Z ?toThisObject@JSCell@JSC@@UBEPAVJSObject@2@PAVExecState@2@@Z ?toThisObject@JSObject@JSC@@UBEPAV12@PAVExecState@2@@Z ?toThisObject@JSString@JSC@@EBEPAVJSObject@2@PAVExecState@2@@Z diff --git a/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj b/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj index 8c83526..202742d 100644 --- a/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj +++ b/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj @@ -1,2036 +1,1974 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCF.vsprops b/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCF.vsprops index fe884aa..61e10b4 100644 --- a/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCF.vsprops +++ b/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCF.vsprops @@ -1,11 +1,11 @@ - - - - + + + + diff --git a/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCFLite.vsprops b/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCFLite.vsprops index 8c9e31f..1e7aed7 100644 --- a/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCFLite.vsprops +++ b/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCFLite.vsprops @@ -1,11 +1,11 @@ - - - - + + + + diff --git a/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops b/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops index 6929c8a..f0b759f 100644 --- a/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops +++ b/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops @@ -1,32 +1,20 @@ - - - - - - - - + + + + + diff --git a/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make b/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make index d1e5d46..1a4e7b3 100644 --- a/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make +++ b/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make @@ -1,7 +1,7 @@ all: - -xcopy /y/d/e/i "..\..\..\WebKitLibraries\win\tools" "$(WEBKITLIBRARIESDIR)\tools" touch "$(WEBKITOUTPUTDIR)\buildfailed" bash build-generated-files.sh "$(WEBKITOUTPUTDIR)" "$(WEBKITLIBRARIESDIR)" + bash -c "python react-to-vsprops-changes.py" -mkdir 2>NUL "$(WEBKITOUTPUTDIR)\include\JavaScriptCore" xcopy /y /d "..\..\API\APICast.h" "$(WEBKITOUTPUTDIR)\include\JavaScriptCore" xcopy /y /d "..\..\API\JavaScript.h" "$(WEBKITOUTPUTDIR)\include\JavaScriptCore" diff --git a/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj b/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj index 7d5ca69..6dad054 100644 --- a/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj +++ b/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj @@ -1,53 +1,91 @@ - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedCommon.vsprops b/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedCommon.vsprops new file mode 100644 index 0000000..786be86 --- /dev/null +++ b/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedCommon.vsprops @@ -0,0 +1,15 @@ + + + + diff --git a/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePostBuild.cmd b/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePostBuild.cmd new file mode 100644 index 0000000..f011495 --- /dev/null +++ b/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePostBuild.cmd @@ -0,0 +1 @@ +if exist "%WEBKITOUTPUTDIR%\buildfailed" del "%WEBKITOUTPUTDIR%\buildfailed" diff --git a/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePreBuild.cmd b/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePreBuild.cmd new file mode 100644 index 0000000..cdacbf1 --- /dev/null +++ b/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePreBuild.cmd @@ -0,0 +1,8 @@ +%SystemDrive%\cygwin\bin\which.exe bash +if errorlevel 1 set PATH=%SystemDrive%\cygwin\bin;%PATH% +cmd /c +if exist "%WEBKITOUTPUTDIR%\buildfailed" grep XX%PROJECTNAME%XX "%WEBKITOUTPUTDIR%\buildfailed" +if errorlevel 1 exit 1 +echo XX%PROJECTNAME%XX > "%WEBKITOUTPUTDIR%\buildfailed" + +bash "%WEBKITLIBRARIESDIR%\tools\scripts\auto-version.sh" "%INTDIR%" diff --git a/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePreLink.cmd b/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePreLink.cmd new file mode 100644 index 0000000..3ff5069 --- /dev/null +++ b/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCorePreLink.cmd @@ -0,0 +1,9 @@ +mkdir 2>NUL "%IntDir%\lib" + +if exist "%WebKitLibrariesDir%\lib\icuuc%LibraryConfigSuffix%.lib" copy /y "%WebKitLibrariesDir%\lib\icuuc%LibraryConfigSuffix%.lib" "%IntDir%\lib\libicuuc%LibraryConfigSuffix%.lib" +if exist "%WebKitLibrariesDir%\lib\icuin%LibraryConfigSuffix%.lib" copy /y "%WebKitLibrariesDir%\lib\icuin%LibraryConfigSuffix%.lib" "%IntDir%\lib\libicuin%LibraryConfigSuffix%.lib" + +if exist "%WebKitLibrariesDir%\lib\libicuuc%LibraryConfigSuffix%.lib" copy /y "%WebKitLibrariesDir%\lib\libicuuc%LibraryConfigSuffix%.lib" "%IntDir%\lib" +if exist "%WebKitLibrariesDir%\lib\libicuin%LibraryConfigSuffix%.lib" copy /y "%WebKitLibrariesDir%\lib\libicuin%LibraryConfigSuffix%.lib" "%IntDir%\lib" + +cmd /c diff --git a/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/react-to-vsprops-changes.py b/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/react-to-vsprops-changes.py new file mode 100644 index 0000000..0d5d6fb --- /dev/null +++ b/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/react-to-vsprops-changes.py @@ -0,0 +1,37 @@ +#!/usr/bin/env python + +import glob +import os +import re +import sys + + +def main(): + # It's a little unfortunate that we're relying on the location of this + # script to find the top-level source directory. + top_level_directory = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))) + + vsprops_directory = os.path.join(top_level_directory, 'WebKitLibraries', 'win', 'tools', 'vsprops') + vsprops_files = glob.glob(os.path.join(vsprops_directory, '*.vsprops')) + assert len(vsprops_files), "Couldn't find any .vsprops files in %s" % vsprops_directory + newest_vsprops_time = max(map(os.path.getmtime, vsprops_files)) + + # Delete any manifest-related files because Visual Studio isn't smart + # enough to figure out that it might need to rebuild them. + obj_directory = os.path.join(os.environ['WEBKITOUTPUTDIR'], 'obj') + for manifest_file in glob.iglob(os.path.join(obj_directory, '*', '*', '*.manifest*')): + manifest_time = os.path.getmtime(manifest_file) + if manifest_time < newest_vsprops_time: + print 'Deleting %s' % manifest_file + os.remove(manifest_file) + + # Touch wtf/Platform.h so all files will be recompiled. This is necessary + # to pick up changes to preprocessor macros (e.g., ENABLE_*). + wtf_platform_h = os.path.join(top_level_directory, 'JavaScriptCore', 'wtf', 'Platform.h') + if os.path.getmtime(wtf_platform_h) < newest_vsprops_time: + print 'Touching wtf/Platform.h' + os.utime(wtf_platform_h, None) + + +if __name__ == '__main__': + sys.exit(main()) diff --git a/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln b/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln index 142e5bc..f55e7d6 100644 --- a/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln +++ b/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln @@ -1,83 +1,83 @@ - -Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual Studio 2005 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "JavaScriptCore", "JavaScriptCore\JavaScriptCore.vcproj", "{011D10F1-B656-4A1B-A0C3-3842F02122C5}" - ProjectSection(ProjectDependencies) = postProject - {AA8A5A85-592B-4357-BC60-E0E91E026AF6} = {AA8A5A85-592B-4357-BC60-E0E91E026AF6} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WTF", "WTF\WTF.vcproj", "{AA8A5A85-592B-4357-BC60-E0E91E026AF6}" - ProjectSection(ProjectDependencies) = postProject - {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A} = {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "JavaScriptCoreGenerated", "JavaScriptCore\JavaScriptCoreGenerated.vcproj", "{4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jsc", "jsc\jsc.vcproj", "{C59E5129-B453-49B7-A52B-1E104715F76E}" - ProjectSection(ProjectDependencies) = postProject - {011D10F1-B656-4A1B-A0C3-3842F02122C5} = {011D10F1-B656-4A1B-A0C3-3842F02122C5} - EndProjectSection -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug_All|Win32 = Debug_All|Win32 - Debug_Internal|Win32 = Debug_Internal|Win32 - Debug|Win32 = Debug|Win32 - Release_PGOInstrument|Win32 = Release_PGOInstrument|Win32 - Release_PGOOptimize|Win32 = Release_PGOOptimize|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Debug_All|Win32.ActiveCfg = Debug_All|Win32 - {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Debug_All|Win32.Build.0 = Debug_All|Win32 - {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Debug_Internal|Win32.ActiveCfg = Debug_Internal|Win32 - {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Debug_Internal|Win32.Build.0 = Debug_Internal|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_PGOInstrument|Win32.ActiveCfg = Release_PGOInstrument|Win32 - {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Release_PGOInstrument|Win32.Build.0 = Release_PGOInstrument|Win32 - {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Release_PGOOptimize|Win32.ActiveCfg = Release_PGOOptimize|Win32 - {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Release_PGOOptimize|Win32.Build.0 = Release_PGOOptimize|Win32 - {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Release|Win32.ActiveCfg = Release|Win32 - {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Release|Win32.Build.0 = Release|Win32 - {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Debug_All|Win32.ActiveCfg = Debug_All|Win32 - {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Debug_All|Win32.Build.0 = Debug_All|Win32 - {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Debug_Internal|Win32.ActiveCfg = Debug_Internal|Win32 - {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Debug_Internal|Win32.Build.0 = Debug_Internal|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_PGOInstrument|Win32.ActiveCfg = Release|Win32 - {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Release_PGOInstrument|Win32.Build.0 = Release|Win32 - {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Release_PGOOptimize|Win32.ActiveCfg = Release|Win32 - {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Release_PGOOptimize|Win32.Build.0 = Release|Win32 - {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Release|Win32.ActiveCfg = Release|Win32 - {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Release|Win32.Build.0 = Release|Win32 - {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Debug_All|Win32.ActiveCfg = all|Win32 - {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Debug_All|Win32.Build.0 = all|Win32 - {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Debug_Internal|Win32.ActiveCfg = all|Win32 - {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Debug_Internal|Win32.Build.0 = all|Win32 - {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Debug|Win32.ActiveCfg = all|Win32 - {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Debug|Win32.Build.0 = all|Win32 - {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Release_PGOInstrument|Win32.ActiveCfg = all|Win32 - {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Release_PGOInstrument|Win32.Build.0 = all|Win32 - {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Release_PGOOptimize|Win32.ActiveCfg = all|Win32 - {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Release_PGOOptimize|Win32.Build.0 = all|Win32 - {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Release|Win32.ActiveCfg = all|Win32 - {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Release|Win32.Build.0 = all|Win32 - {C59E5129-B453-49B7-A52B-1E104715F76E}.Debug_All|Win32.ActiveCfg = Debug_All|Win32 - {C59E5129-B453-49B7-A52B-1E104715F76E}.Debug_All|Win32.Build.0 = Debug_All|Win32 - {C59E5129-B453-49B7-A52B-1E104715F76E}.Debug_Internal|Win32.ActiveCfg = Debug_Internal|Win32 - {C59E5129-B453-49B7-A52B-1E104715F76E}.Debug_Internal|Win32.Build.0 = Debug_Internal|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_PGOInstrument|Win32.ActiveCfg = Release|Win32 - {C59E5129-B453-49B7-A52B-1E104715F76E}.Release_PGOInstrument|Win32.Build.0 = Release|Win32 - {C59E5129-B453-49B7-A52B-1E104715F76E}.Release_PGOOptimize|Win32.ActiveCfg = Release|Win32 - {C59E5129-B453-49B7-A52B-1E104715F76E}.Release_PGOOptimize|Win32.Build.0 = Release|Win32 - {C59E5129-B453-49B7-A52B-1E104715F76E}.Release|Win32.ActiveCfg = Release|Win32 - {C59E5129-B453-49B7-A52B-1E104715F76E}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual Studio 2005 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "JavaScriptCore", "JavaScriptCore\JavaScriptCore.vcproj", "{011D10F1-B656-4A1B-A0C3-3842F02122C5}" + ProjectSection(ProjectDependencies) = postProject + {AA8A5A85-592B-4357-BC60-E0E91E026AF6} = {AA8A5A85-592B-4357-BC60-E0E91E026AF6} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WTF", "WTF\WTF.vcproj", "{AA8A5A85-592B-4357-BC60-E0E91E026AF6}" + ProjectSection(ProjectDependencies) = postProject + {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A} = {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "JavaScriptCoreGenerated", "JavaScriptCore\JavaScriptCoreGenerated.vcproj", "{4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jsc", "jsc\jsc.vcproj", "{C59E5129-B453-49B7-A52B-1E104715F76E}" + ProjectSection(ProjectDependencies) = postProject + {011D10F1-B656-4A1B-A0C3-3842F02122C5} = {011D10F1-B656-4A1B-A0C3-3842F02122C5} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug_All|Win32 = Debug_All|Win32 + Debug|Win32 = Debug|Win32 + Release_LTCG|Win32 = Release_LTCG|Win32 + Release_PGOInstrument|Win32 = Release_PGOInstrument|Win32 + Release_PGOOptimize|Win32 = Release_PGOOptimize|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Debug_All|Win32.ActiveCfg = Debug_All|Win32 + {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}.Release_PGOInstrument|Win32.ActiveCfg = Release_PGOInstrument|Win32 + {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Release_PGOInstrument|Win32.Build.0 = Release_PGOInstrument|Win32 + {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Release_PGOOptimize|Win32.ActiveCfg = Release_PGOOptimize|Win32 + {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Release_PGOOptimize|Win32.Build.0 = Release_PGOOptimize|Win32 + {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Release|Win32.ActiveCfg = Release|Win32 + {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Release|Win32.Build.0 = Release|Win32 + {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Debug_All|Win32.ActiveCfg = Debug_All|Win32 + {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}.Release_PGOInstrument|Win32.ActiveCfg = Release|Win32 + {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Release_PGOInstrument|Win32.Build.0 = Release|Win32 + {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Release_PGOOptimize|Win32.ActiveCfg = Release|Win32 + {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Release_PGOOptimize|Win32.Build.0 = Release|Win32 + {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Release|Win32.ActiveCfg = Release|Win32 + {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Release|Win32.Build.0 = Release|Win32 + {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Debug_All|Win32.ActiveCfg = Debug_All|Win32 + {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}.Release_PGOInstrument|Win32.ActiveCfg = Release|Win32 + {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Release_PGOInstrument|Win32.Build.0 = Release|Win32 + {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Release_PGOOptimize|Win32.ActiveCfg = Release|Win32 + {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Release_PGOOptimize|Win32.Build.0 = Release|Win32 + {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Release|Win32.ActiveCfg = Release|Win32 + {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Release|Win32.Build.0 = Release|Win32 + {C59E5129-B453-49B7-A52B-1E104715F76E}.Debug_All|Win32.ActiveCfg = Debug_All|Win32 + {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}.Release_PGOInstrument|Win32.ActiveCfg = Release|Win32 + {C59E5129-B453-49B7-A52B-1E104715F76E}.Release_PGOInstrument|Win32.Build.0 = Release|Win32 + {C59E5129-B453-49B7-A52B-1E104715F76E}.Release_PGOOptimize|Win32.ActiveCfg = Release|Win32 + {C59E5129-B453-49B7-A52B-1E104715F76E}.Release_PGOOptimize|Win32.Build.0 = Release|Win32 + {C59E5129-B453-49B7-A52B-1E104715F76E}.Release|Win32.ActiveCfg = Release|Win32 + {C59E5129-B453-49B7-A52B-1E104715F76E}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/JavaScriptCore/JavaScriptCore.vcproj/WTF/WTF.vcproj b/JavaScriptCore/JavaScriptCore.vcproj/WTF/WTF.vcproj index 7c26a9c..4a3e859 100644 --- a/JavaScriptCore/JavaScriptCore.vcproj/WTF/WTF.vcproj +++ b/JavaScriptCore/JavaScriptCore.vcproj/WTF/WTF.vcproj @@ -1,835 +1,894 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/JavaScriptCore/JavaScriptCore.vcproj/WTF/WTFCommon.vsprops b/JavaScriptCore/JavaScriptCore.vcproj/WTF/WTFCommon.vsprops index c2569ba..07f679f 100644 --- a/JavaScriptCore/JavaScriptCore.vcproj/WTF/WTFCommon.vsprops +++ b/JavaScriptCore/JavaScriptCore.vcproj/WTF/WTFCommon.vsprops @@ -1,27 +1,20 @@ - - - - - - - + + + + + diff --git a/JavaScriptCore/JavaScriptCore.vcproj/WTF/WTFPostBuild.cmd b/JavaScriptCore/JavaScriptCore.vcproj/WTF/WTFPostBuild.cmd new file mode 100644 index 0000000..f011495 --- /dev/null +++ b/JavaScriptCore/JavaScriptCore.vcproj/WTF/WTFPostBuild.cmd @@ -0,0 +1 @@ +if exist "%WEBKITOUTPUTDIR%\buildfailed" del "%WEBKITOUTPUTDIR%\buildfailed" diff --git a/JavaScriptCore/JavaScriptCore.vcproj/WTF/WTFPreBuild.cmd b/JavaScriptCore/JavaScriptCore.vcproj/WTF/WTFPreBuild.cmd new file mode 100644 index 0000000..3a84c26 --- /dev/null +++ b/JavaScriptCore/JavaScriptCore.vcproj/WTF/WTFPreBuild.cmd @@ -0,0 +1,6 @@ +%SystemDrive%\cygwin\bin\which.exe bash +if errorlevel 1 set PATH=%SystemDrive%\cygwin\bin;%PATH% +cmd /c +if exist "%WEBKITOUTPUTDIR%\buildfailed" grep XX%PROJECTNAME%XX "%WEBKITOUTPUTDIR%\buildfailed" +if errorlevel 1 exit 1 +echo XX%PROJECTNAME%XX > "%WEBKITOUTPUTDIR%\buildfailed" diff --git a/JavaScriptCore/JavaScriptCore.vcproj/jsc/jsc.vcproj b/JavaScriptCore/JavaScriptCore.vcproj/jsc/jsc.vcproj index 47861ae..a6b59d3 100644 --- a/JavaScriptCore/JavaScriptCore.vcproj/jsc/jsc.vcproj +++ b/JavaScriptCore/JavaScriptCore.vcproj/jsc/jsc.vcproj @@ -1,412 +1,412 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/JavaScriptCore/JavaScriptCore.vcproj/jsc/jscCommon.vsprops b/JavaScriptCore/JavaScriptCore.vcproj/jsc/jscCommon.vsprops index b63729c..fed83cd 100644 --- a/JavaScriptCore/JavaScriptCore.vcproj/jsc/jscCommon.vsprops +++ b/JavaScriptCore/JavaScriptCore.vcproj/jsc/jscCommon.vsprops @@ -1,32 +1,20 @@ - - - - - - - - + + + + + diff --git a/JavaScriptCore/JavaScriptCore.vcproj/jsc/jscPostBuild.cmd b/JavaScriptCore/JavaScriptCore.vcproj/jsc/jscPostBuild.cmd new file mode 100644 index 0000000..c81e940 --- /dev/null +++ b/JavaScriptCore/JavaScriptCore.vcproj/jsc/jscPostBuild.cmd @@ -0,0 +1,23 @@ +if exist "%WEBKITOUTPUTDIR%\buildfailed" del "%WEBKITOUTPUTDIR%\buildfailed" + +mkdir 2>NUL "%WEBKITOUTPUTDIR%\bin" +if exist "%WEBKITLIBRARIESDIR%\bin\icudt44.dll" xcopy /y /d "%WEBKITLIBRARIESDIR%\bin\icudt44.dll" "%WEBKITOUTPUTDIR%\bin" +if exist "%WEBKITLIBRARIESDIR%\bin\icudt44%LIBRARYCONFIGSUFFIX%.dll" xcopy /y /d "%WEBKITLIBRARIESDIR%\bin\icudt44%LIBRARYCONFIGSUFFIX%.dll" "%WEBKITOUTPUTDIR%\bin" +if exist "%WEBKITLIBRARIESDIR%\bin\libicuin%LIBRARYCONFIGSUFFIX%.dll" xcopy /y /d "%WEBKITLIBRARIESDIR%\bin\libicuin%LIBRARYCONFIGSUFFIX%.dll" "%WEBKITOUTPUTDIR%\bin" +if exist "%WEBKITLIBRARIESDIR%\bin\libicuuc%LIBRARYCONFIGSUFFIX%.dll" xcopy /y /d "%WEBKITLIBRARIESDIR%\bin\libicuuc%LIBRARYCONFIGSUFFIX%.dll" "%WEBKITOUTPUTDIR%\bin" +if exist "%WEBKITLIBRARIESDIR%\bin\icudt40.dll" xcopy /y /d "%WEBKITLIBRARIESDIR%\bin\icudt40.dll" "%WEBKITOUTPUTDIR%\bin" +if exist "%WEBKITLIBRARIESDIR%\bin\icudt40%LIBRARYCONFIGSUFFIX%.dll" xcopy /y /d "%WEBKITLIBRARIESDIR%\bin\icudt40%LIBRARYCONFIGSUFFIX%.dll" "%WEBKITOUTPUTDIR%\bin" +if exist "%WEBKITLIBRARIESDIR%\bin\icuin40%LIBRARYCONFIGSUFFIX%.dll" xcopy /y /d "%WEBKITLIBRARIESDIR%\bin\icuin40%LIBRARYCONFIGSUFFIX%.dll" "%WEBKITOUTPUTDIR%\bin" +if exist "%WEBKITLIBRARIESDIR%\bin\icuuc40%LIBRARYCONFIGSUFFIX%.dll" xcopy /y /d "%WEBKITLIBRARIESDIR%\bin\icuuc40%LIBRARYCONFIGSUFFIX%.dll" "%WEBKITOUTPUTDIR%\bin" +if exist "%WEBKITLIBRARIESDIR%\bin\icudt42.dll" xcopy /y /d "%WEBKITLIBRARIESDIR%\bin\icudt42.dll" "%WEBKITOUTPUTDIR%\bin" +if exist "%WEBKITLIBRARIESDIR%\bin\icudt42%LIBRARYCONFIGSUFFIX%.dll" xcopy /y /d "%WEBKITLIBRARIESDIR%\bin\icudt42%LIBRARYCONFIGSUFFIX%.dll" "%WEBKITOUTPUTDIR%\bin" +if exist "%WEBKITLIBRARIESDIR%\bin\icuin42%LIBRARYCONFIGSUFFIX%.dll" xcopy /y /d "%WEBKITLIBRARIESDIR%\bin\icuin42%LIBRARYCONFIGSUFFIX%.dll" "%WEBKITOUTPUTDIR%\bin" +if exist "%WEBKITLIBRARIESDIR%\bin\icuuc42%LIBRARYCONFIGSUFFIX%.dll" xcopy /y /d "%WEBKITLIBRARIESDIR%\bin\icuuc42%LIBRARYCONFIGSUFFIX%.dll" "%WEBKITOUTPUTDIR%\bin" +if exist "%WEBKITLIBRARIESDIR%\bin\CoreFoundation%LIBRARYCONFIGSUFFIX%.dll" xcopy /y /d "%WEBKITLIBRARIESDIR%\bin\CoreFoundation%LIBRARYCONFIGSUFFIX%.dll" "%WEBKITOUTPUTDIR%\bin" +if exist "%WEBKITLIBRARIESDIR%\bin\CoreFoundation.resources" xcopy /y /d /e /i "%WEBKITLIBRARIESDIR%\bin\CoreFoundation.resources" "%WEBKITOUTPUTDIR%\bin\CoreFoundation.resources" +if exist "%WEBKITLIBRARIESDIR%\bin\pthreadVC2%LIBRARYCONFIGSUFFIX%.dll" xcopy /y /d "%WEBKITLIBRARIESDIR%\bin\pthreadVC2%LIBRARYCONFIGSUFFIX%.dll" "%WEBKITOUTPUTDIR%\bin" +if exist "%WEBKITLIBRARIESDIR%\bin\objc%LIBRARYCONFIGSUFFIX%.dll" xcopy /y /d "%WEBKITLIBRARIESDIR%\bin\objc%LIBRARYCONFIGSUFFIX%.dll" "%WEBKITOUTPUTDIR%\bin" +if exist "%WEBKITLIBRARIESDIR%\bin\ASL%LIBRARYCONFIGSUFFIX%.dll" xcopy /y /d "%WEBKITLIBRARIESDIR%\bin\ASL%LIBRARYCONFIGSUFFIX%.dll" "%WEBKITOUTPUTDIR%\bin" +if exist "%WEBKITLIBRARIESDIR%\bin\libdispatch%LIBRARYCONFIGSUFFIX%.dll" xcopy /y /d "%WEBKITLIBRARIESDIR%\bin\libdispatch%LIBRARYCONFIGSUFFIX%.dll" "%WEBKITOUTPUTDIR%\bin" + +cmd /c diff --git a/JavaScriptCore/JavaScriptCore.vcproj/jsc/jscPreBuild.cmd b/JavaScriptCore/JavaScriptCore.vcproj/jsc/jscPreBuild.cmd new file mode 100644 index 0000000..3a84c26 --- /dev/null +++ b/JavaScriptCore/JavaScriptCore.vcproj/jsc/jscPreBuild.cmd @@ -0,0 +1,6 @@ +%SystemDrive%\cygwin\bin\which.exe bash +if errorlevel 1 set PATH=%SystemDrive%\cygwin\bin;%PATH% +cmd /c +if exist "%WEBKITOUTPUTDIR%\buildfailed" grep XX%PROJECTNAME%XX "%WEBKITOUTPUTDIR%\buildfailed" +if errorlevel 1 exit 1 +echo XX%PROJECTNAME%XX > "%WEBKITOUTPUTDIR%\buildfailed" diff --git a/JavaScriptCore/JavaScriptCore.vcproj/jsc/jscPreLink.cmd b/JavaScriptCore/JavaScriptCore.vcproj/jsc/jscPreLink.cmd new file mode 100644 index 0000000..8523026 --- /dev/null +++ b/JavaScriptCore/JavaScriptCore.vcproj/jsc/jscPreLink.cmd @@ -0,0 +1,9 @@ +mkdir 2>NUL "%INTDIR%\lib" + +if exist "%WEBKITLIBRARIESDIR%\lib\icuuc%LIBRARYCONFIGSUFFIX%.lib" copy /y "%WEBKITLIBRARIESDIR%\lib\icuuc%LIBRARYCONFIGSUFFIX%.lib" "%INTDIR%\lib\libicuuc%LIBRARYCONFIGSUFFIX%.lib" +if exist "%WEBKITLIBRARIESDIR%\lib\icuin%LIBRARYCONFIGSUFFIX%.lib" copy /y "%WEBKITLIBRARIESDIR%\lib\icuin%LIBRARYCONFIGSUFFIX%.lib" "%INTDIR%\lib\libicuin%LIBRARYCONFIGSUFFIX%.lib" + +if exist "%WEBKITLIBRARIESDIR%\lib\libicuuc%LIBRARYCONFIGSUFFIX%.lib" copy /y "%WEBKITLIBRARIESDIR%\lib\libicuuc%LIBRARYCONFIGSUFFIX%.lib" "%INTDIR%\lib" +if exist "%WEBKITLIBRARIESDIR%\lib\libicuin%LIBRARYCONFIGSUFFIX%.lib" copy /y "%WEBKITLIBRARIESDIR%\lib\libicuin%LIBRARYCONFIGSUFFIX%.lib" "%INTDIR%\lib" + +cmd /c diff --git a/JavaScriptCore/JavaScriptCore.vcproj/testapi/testapi.vcproj b/JavaScriptCore/JavaScriptCore.vcproj/testapi/testapi.vcproj index c786abd..e0011e3 100644 --- a/JavaScriptCore/JavaScriptCore.vcproj/testapi/testapi.vcproj +++ b/JavaScriptCore/JavaScriptCore.vcproj/testapi/testapi.vcproj @@ -1,518 +1,448 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/JavaScriptCore/JavaScriptCore.vcproj/testapi/testapiCommon.vsprops b/JavaScriptCore/JavaScriptCore.vcproj/testapi/testapiCommon.vsprops index a1a7267..d0fea83 100644 --- a/JavaScriptCore/JavaScriptCore.vcproj/testapi/testapiCommon.vsprops +++ b/JavaScriptCore/JavaScriptCore.vcproj/testapi/testapiCommon.vsprops @@ -1,32 +1,20 @@ - - - - - - - - + + + + + diff --git a/JavaScriptCore/JavaScriptCore.vcproj/testapi/testapiPostBuild.cmd b/JavaScriptCore/JavaScriptCore.vcproj/testapi/testapiPostBuild.cmd new file mode 100644 index 0000000..af5c949 --- /dev/null +++ b/JavaScriptCore/JavaScriptCore.vcproj/testapi/testapiPostBuild.cmd @@ -0,0 +1,3 @@ +if exist "%WEBKITOUTPUTDIR%\buildfailed" del "%WEBKITOUTPUTDIR%\buildfailed" + +xcopy /y /d "%PROJECTDIR%\..\..\API\tests\testapi.js" "%OUTDIR%" diff --git a/JavaScriptCore/JavaScriptCore.vcproj/testapi/testapiPreBuild.cmd b/JavaScriptCore/JavaScriptCore.vcproj/testapi/testapiPreBuild.cmd new file mode 100644 index 0000000..3a84c26 --- /dev/null +++ b/JavaScriptCore/JavaScriptCore.vcproj/testapi/testapiPreBuild.cmd @@ -0,0 +1,6 @@ +%SystemDrive%\cygwin\bin\which.exe bash +if errorlevel 1 set PATH=%SystemDrive%\cygwin\bin;%PATH% +cmd /c +if exist "%WEBKITOUTPUTDIR%\buildfailed" grep XX%PROJECTNAME%XX "%WEBKITOUTPUTDIR%\buildfailed" +if errorlevel 1 exit 1 +echo XX%PROJECTNAME%XX > "%WEBKITOUTPUTDIR%\buildfailed" diff --git a/JavaScriptCore/JavaScriptCore.vcproj/testapi/testapiPreLink.cmd b/JavaScriptCore/JavaScriptCore.vcproj/testapi/testapiPreLink.cmd new file mode 100644 index 0000000..8523026 --- /dev/null +++ b/JavaScriptCore/JavaScriptCore.vcproj/testapi/testapiPreLink.cmd @@ -0,0 +1,9 @@ +mkdir 2>NUL "%INTDIR%\lib" + +if exist "%WEBKITLIBRARIESDIR%\lib\icuuc%LIBRARYCONFIGSUFFIX%.lib" copy /y "%WEBKITLIBRARIESDIR%\lib\icuuc%LIBRARYCONFIGSUFFIX%.lib" "%INTDIR%\lib\libicuuc%LIBRARYCONFIGSUFFIX%.lib" +if exist "%WEBKITLIBRARIESDIR%\lib\icuin%LIBRARYCONFIGSUFFIX%.lib" copy /y "%WEBKITLIBRARIESDIR%\lib\icuin%LIBRARYCONFIGSUFFIX%.lib" "%INTDIR%\lib\libicuin%LIBRARYCONFIGSUFFIX%.lib" + +if exist "%WEBKITLIBRARIESDIR%\lib\libicuuc%LIBRARYCONFIGSUFFIX%.lib" copy /y "%WEBKITLIBRARIESDIR%\lib\libicuuc%LIBRARYCONFIGSUFFIX%.lib" "%INTDIR%\lib" +if exist "%WEBKITLIBRARIESDIR%\lib\libicuin%LIBRARYCONFIGSUFFIX%.lib" copy /y "%WEBKITLIBRARIESDIR%\lib\libicuin%LIBRARYCONFIGSUFFIX%.lib" "%INTDIR%\lib" + +cmd /c diff --git a/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj b/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj index a1e1c5c..e7de0e1 100644 --- a/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj +++ b/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj @@ -48,6 +48,8 @@ 0BDFFAE10FC6193100D69EF4 /* OwnFastMallocPtr.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BDFFAD10FC616EC00D69EF4 /* OwnFastMallocPtr.h */; settings = {ATTRIBUTES = (Private, ); }; }; 0BF28A2911A33DC300638F84 /* SizeLimits.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0BF28A2811A33DC300638F84 /* SizeLimits.cpp */; }; 0F29479C126E698C00B3ABF5 /* DecimalNumber.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F29479B126E698C00B3ABF5 /* DecimalNumber.cpp */; }; + 1400067712A6F7830064D123 /* OSAllocator.h in Headers */ = {isa = PBXBuildFile; fileRef = 1400067612A6F7830064D123 /* OSAllocator.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1400069312A6F9E10064D123 /* OSAllocatorPosix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1400069212A6F9E10064D123 /* OSAllocatorPosix.cpp */; }; 14035DB110DBFB2A00FFFFE7 /* WeakGCPtr.h in Headers */ = {isa = PBXBuildFile; fileRef = 14035DB010DBFB2A00FFFFE7 /* WeakGCPtr.h */; settings = {ATTRIBUTES = (Private, ); }; }; 140566C4107EC255005DBC8D /* JSAPIValueWrapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC0894D50FAFBA2D00001865 /* JSAPIValueWrapper.cpp */; }; 140566D1107EC267005DBC8D /* JSStaticScopeObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7E42C190E3938830065A544 /* JSStaticScopeObject.cpp */; }; @@ -649,6 +651,8 @@ 0BDFFAD40FC6171000D69EF4 /* CrossThreadRefCounted.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CrossThreadRefCounted.h; sourceTree = ""; }; 0BF28A2811A33DC300638F84 /* SizeLimits.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SizeLimits.cpp; sourceTree = ""; }; 0F29479B126E698C00B3ABF5 /* DecimalNumber.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DecimalNumber.cpp; sourceTree = ""; }; + 1400067612A6F7830064D123 /* OSAllocator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OSAllocator.h; sourceTree = ""; }; + 1400069212A6F9E10064D123 /* OSAllocatorPosix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = OSAllocatorPosix.cpp; sourceTree = ""; }; 14035DB010DBFB2A00FFFFE7 /* WeakGCPtr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WeakGCPtr.h; sourceTree = ""; }; 140D17D60E8AD4A9000CD17D /* JSBasePrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSBasePrivate.h; sourceTree = ""; }; 141211020A48780900480255 /* minidom.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = minidom.c; path = tests/minidom.c; sourceTree = ""; }; @@ -1472,10 +1476,6 @@ 65162EF108E6A21C007556CD /* wtf */ = { isa = PBXGroup; children = ( - 9714AF2F122F27C60092D9F5 /* url */, - 06D358A00DAAD9C4003B174E /* mac */, - 8656573E115BE35200291F40 /* text */, - E195678D09E7CF1200B89D13 /* unicode */, 93AA4F770957251F0084B3A7 /* AlwaysInline.h */, 938C4F690CA06BC700D9310A /* ASCIICType.h */, 65E217B808E7EECC0023E5F6 /* Assertions.cpp */, @@ -1491,8 +1491,8 @@ 180B9AF00F16C569009BDBC5 /* CurrentTime.h */, 41359CF40FDD89CB00206180 /* DateMath.cpp */, 41359CF50FDD89CB00206180 /* DateMath.h */, - 862AF4B512239C7B0024E5B8 /* DecimalNumber.h */, 0F29479B126E698C00B3ABF5 /* DecimalNumber.cpp */, + 862AF4B512239C7B0024E5B8 /* DecimalNumber.h */, 5186111D0CC824830081412B /* Deque.h */, 938C4F6B0CA06BCE00D9310A /* DisallowCType.h */, 651F6412039D5B5F0078395C /* dtoa.cpp */, @@ -1514,6 +1514,7 @@ 657EB7450B708F540063461B /* ListHashSet.h */, 148A1626095D16BB00666D0D /* ListRefPtr.h */, E1EE79270D6C964500FEA3BA /* Locker.h */, + 06D358A00DAAD9C4003B174E /* mac */, 06D358A20DAAD9C4003B174E /* MainThread.cpp */, 06D358A30DAAD9C4003B174E /* MainThread.h */, 5DBD18AF0C5401A700C15EAE /* MallocZoneSupport.h */, @@ -1521,10 +1522,12 @@ 511FC4C7117EE23D00425272 /* MD5.cpp */, 511FC4CA117EE2A800425272 /* MD5.h */, E1EE798B0D6CA53D00FEA3BA /* MessageQueue.h */, - 65E1A2F4122B880D00B26097 /* NonCopyingSort.h */, 9303F5690991190000AD71B8 /* Noncopyable.h */, + 65E1A2F4122B880D00B26097 /* NonCopyingSort.h */, C0A2723F0E509F1E00E96E15 /* NotFound.h */, 933F5CDB126922690049191E /* NullPtr.h */, + 1400069212A6F9E10064D123 /* OSAllocatorPosix.cpp */, + 1400067612A6F7830064D123 /* OSAllocator.h */, 9303F5A409911A5800AD71B8 /* OwnArrayPtr.h */, BCFBE697122561D200309E9D /* OwnArrayPtrCommon.h */, 0BDFFAD10FC616EC00D69EF4 /* OwnFastMallocPtr.h */, @@ -1558,6 +1561,7 @@ 6541BD6F08E80A17002CBEE7 /* TCSpinLock.h */, 6541BD7008E80A17002CBEE7 /* TCSystemAlloc.cpp */, 6541BD7108E80A17002CBEE7 /* TCSystemAlloc.h */, + 8656573E115BE35200291F40 /* text */, 18BAB52710DADFCD000D945B /* ThreadIdentifierDataPthreads.cpp */, 18BAB52810DADFCD000D945B /* ThreadIdentifierDataPthreads.h */, 5D6A566A0F05995500266145 /* Threading.cpp */, @@ -1568,7 +1572,9 @@ E1B7C8BD0DA3A3360074B0DC /* ThreadSpecific.h */, 0B330C260F38C62300692DE3 /* TypeTraits.cpp */, 0B4D7E620F319AC800AD7E58 /* TypeTraits.h */, + E195678D09E7CF1200B89D13 /* unicode */, 935AF46B09E9D9DB00ACD1D8 /* UnusedParam.h */, + 9714AF2F122F27C60092D9F5 /* url */, E17FF770112131D200076A19 /* ValueCheck.h */, 6592C316098B7DE10003D4F6 /* Vector.h */, 6592C317098B7DE10003D4F6 /* VectorTraits.h */, @@ -2353,6 +2359,7 @@ A730B6121250068F009D25B1 /* StrictEvalActivation.h in Headers */, 933F5CDC1269229B0049191E /* NullPtr.h in Headers */, F3BD31ED126735770065467F /* TextPosition.h in Headers */, + 1400067712A6F7830064D123 /* OSAllocator.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2446,6 +2453,7 @@ isa = PBXProject; buildConfigurationList = 149C277108902AFE008A9EFC /* Build configuration list for PBXProject "JavaScriptCore" */; compatibilityVersion = "Xcode 2.4"; + developmentRegion = English; hasScannedForEncodings = 1; knownRegions = ( English, @@ -2810,6 +2818,7 @@ A730B6131250068F009D25B1 /* StrictEvalActivation.cpp in Sources */, 86438FC41265503E00E0DFCA /* StringBuilder.cpp in Sources */, 0F29479C126E698C00B3ABF5 /* DecimalNumber.cpp in Sources */, + 1400069312A6F9E10064D123 /* OSAllocatorPosix.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/JavaScriptCore/JavaScriptCoreSources.bkl b/JavaScriptCore/JavaScriptCoreSources.bkl deleted file mode 100644 index e69de29..0000000 diff --git a/JavaScriptCore/assembler/ARMAssembler.h b/JavaScriptCore/assembler/ARMAssembler.h index 900f655..1d24dd3 100644 --- a/JavaScriptCore/assembler/ARMAssembler.h +++ b/JavaScriptCore/assembler/ARMAssembler.h @@ -624,16 +624,14 @@ namespace JSC { JmpSrc blx(int rm, Condition cc = AL) { #if WTF_ARM_ARCH_AT_LEAST(5) - int s = m_buffer.uncheckedSize(); emitInst(static_cast(cc) | BLX, 0, 0, RM(rm)); #else ASSERT(rm != 14); ensureSpace(2 * sizeof(ARMWord), 0); mov_r(ARMRegisters::lr, ARMRegisters::pc, cc); - int s = m_buffer.uncheckedSize(); bx(rm, cc); #endif - return JmpSrc(s); + return JmpSrc(m_buffer.uncheckedSize()); } static ARMWord lsl(int reg, ARMWord value) @@ -711,10 +709,9 @@ namespace JSC { JmpSrc loadBranchTarget(int rd, Condition cc = AL, int useConstantPool = 0) { ensureSpace(sizeof(ARMWord), sizeof(ARMWord)); - int s = m_buffer.uncheckedSize(); + m_jumps.append(m_buffer.uncheckedSize() | (useConstantPool & 0x1)); ldr_un_imm(rd, InvalidBranchTarget, cc); - m_jumps.append(s | (useConstantPool & 0x1)); - return JmpSrc(s); + return JmpSrc(m_buffer.uncheckedSize()); } JmpSrc jmp(Condition cc = AL, int useConstantPool = 0) @@ -800,51 +797,55 @@ namespace JSC { } // Linkers + static intptr_t getAbsoluteJumpAddress(void* base, int offset = 0) + { + return reinterpret_cast(base) + offset - sizeof(ARMWord); + } void linkJump(JmpSrc from, JmpDst to) { - ARMWord* insn = reinterpret_cast(m_buffer.data()) + (from.m_offset / sizeof(ARMWord)); + ARMWord* insn = reinterpret_cast(getAbsoluteJumpAddress(m_buffer.data(), from.m_offset)); ARMWord* addr = getLdrImmAddressOnPool(insn, m_buffer.poolAddress()); *addr = static_cast(to.m_offset); } static void linkJump(void* code, JmpSrc from, void* to) { - patchPointerInternal(reinterpret_cast(code) + from.m_offset, to); + patchPointerInternal(getAbsoluteJumpAddress(code, from.m_offset), to); } static void relinkJump(void* from, void* to) { - patchPointerInternal(reinterpret_cast(from) - sizeof(ARMWord), to); + patchPointerInternal(getAbsoluteJumpAddress(from), to); } static void linkCall(void* code, JmpSrc from, void* to) { - patchPointerInternal(reinterpret_cast(code) + from.m_offset, to); + patchPointerInternal(getAbsoluteJumpAddress(code, from.m_offset), to); } static void relinkCall(void* from, void* to) { - patchPointerInternal(reinterpret_cast(from) - sizeof(ARMWord), to); + patchPointerInternal(getAbsoluteJumpAddress(from), to); } // Address operations static void* getRelocatedAddress(void* code, JmpSrc jump) { - return reinterpret_cast(reinterpret_cast(code) + jump.m_offset / sizeof(ARMWord) + 1); + return reinterpret_cast(reinterpret_cast(code) + jump.m_offset); } static void* getRelocatedAddress(void* code, JmpDst label) { - return reinterpret_cast(reinterpret_cast(code) + label.m_offset / sizeof(ARMWord)); + return reinterpret_cast(reinterpret_cast(code) + label.m_offset); } // Address differences static int getDifferenceBetweenLabels(JmpDst from, JmpSrc to) { - return (to.m_offset + sizeof(ARMWord)) - from.m_offset; + return to.m_offset - from.m_offset; } static int getDifferenceBetweenLabels(JmpDst from, JmpDst to) @@ -854,7 +855,7 @@ namespace JSC { static unsigned getCallReturnOffset(JmpSrc call) { - return call.m_offset + sizeof(ARMWord); + return call.m_offset; } // Handle immediates diff --git a/JavaScriptCore/assembler/ARMv7Assembler.h b/JavaScriptCore/assembler/ARMv7Assembler.h index 37b650b..a40208a 100644 --- a/JavaScriptCore/assembler/ARMv7Assembler.h +++ b/JavaScriptCore/assembler/ARMv7Assembler.h @@ -694,6 +694,7 @@ private: OP_LSR_reg_T2 = 0xFA20, OP_ASR_reg_T2 = 0xFA40, OP_ROR_reg_T2 = 0xFA60, + OP_CLZ = 0xFAB0, OP_SMULL_T1 = 0xFB80, } OpcodeID1; @@ -947,6 +948,13 @@ public: m_formatter.oneWordOp8Imm8(OP_BKPT, imm); } + void clz(RegisterID rd, RegisterID rm) + { + ASSERT(!BadReg(rd)); + ASSERT(!BadReg(rm)); + m_formatter.twoWordOp12Reg4FourFours(OP_CLZ, rm, FourFours(0xf, rd, 8, rm)); + } + void cmn(RegisterID rn, ARMThumbImmediate imm) { ASSERT(rn != ARMRegisters::pc); diff --git a/JavaScriptCore/assembler/MacroAssemblerARM.h b/JavaScriptCore/assembler/MacroAssemblerARM.h index 49c87c0..c51686a 100644 --- a/JavaScriptCore/assembler/MacroAssemblerARM.h +++ b/JavaScriptCore/assembler/MacroAssemblerARM.h @@ -228,6 +228,17 @@ public: m_assembler.eors_r(dest, dest, m_assembler.getImm(imm.m_value, ARMRegisters::S0)); } + void countLeadingZeros32(RegisterID src, RegisterID dest) + { +#if WTF_ARM_ARCH_AT_LEAST(5) + m_assembler.clz_r(dest, src); +#else + UNUSED_PARAM(src); + UNUSED_PARAM(dest); + ASSERT_NOT_REACHED(); +#endif + } + void load8(ImplicitAddress address, RegisterID dest) { m_assembler.dataTransfer32(true, dest, address.base, address.offset, true); @@ -604,9 +615,7 @@ public: Call call(RegisterID target) { - m_assembler.blx(target); - JmpSrc jmpSrc; - return Call(jmpSrc, Call::None); + return Call(m_assembler.blx(target), Call::None); } void call(Address address) @@ -710,6 +719,15 @@ public: return branch32(cond, ARMRegisters::S1, right); } + void relativeTableJump(RegisterID index, int scale) + { + ASSERT(scale >= 0 && scale <= 31); + m_assembler.add_r(ARMRegisters::pc, ARMRegisters::pc, m_assembler.lsl(index, scale)); + + // NOP the default prefetching + m_assembler.mov_r(ARMRegisters::r0, ARMRegisters::r0); + } + Call call() { #if WTF_ARM_ARCH_AT_LEAST(5) diff --git a/JavaScriptCore/assembler/MacroAssemblerARMv7.h b/JavaScriptCore/assembler/MacroAssemblerARMv7.h index fe5d052..d5b4ce7 100644 --- a/JavaScriptCore/assembler/MacroAssemblerARMv7.h +++ b/JavaScriptCore/assembler/MacroAssemblerARMv7.h @@ -220,6 +220,11 @@ public: } } + void countLeadingZeros32(RegisterID src, RegisterID dest) + { + m_assembler.clz(dest, src); + } + void lshift32(RegisterID shift_amount, RegisterID dest) { // Clamp the shift to the range 0..31 @@ -1074,6 +1079,18 @@ public: return Jump(makeBranch(cond)); } + void relativeTableJump(RegisterID index, int scale) + { + ASSERT(scale >= 0 && scale <= 31); + + // dataTempRegister will point after the jump if index register contains zero + move(ARMRegisters::pc, dataTempRegister); + m_assembler.add(dataTempRegister, dataTempRegister, ARMThumbImmediate::makeEncodedImm(9)); + + ShiftTypeAndAmount shift(SRType_LSL, scale); + m_assembler.add(dataTempRegister, dataTempRegister, index, shift); + jump(dataTempRegister); + } // Miscellaneous operations: diff --git a/JavaScriptCore/bytecode/CodeBlock.cpp b/JavaScriptCore/bytecode/CodeBlock.cpp index bcd2af3..cbae990 100644 --- a/JavaScriptCore/bytecode/CodeBlock.cpp +++ b/JavaScriptCore/bytecode/CodeBlock.cpp @@ -1261,13 +1261,10 @@ static HashSet liveCodeBlockSet; macro(immediateSwitchJumpTables) \ macro(characterSwitchJumpTables) \ macro(stringSwitchJumpTables) \ - macro(functionRegisterInfos) - -#define FOR_EACH_MEMBER_VECTOR_EXCEPTION_INFO(macro) \ + macro(evalCodeCache) \ macro(expressionInfo) \ macro(lineInfo) \ - macro(getByIdExceptionInfo) \ - macro(pcVector) + macro(callReturnIndexVector) template static size_t sizeInBytes(const Vector& vector) @@ -1281,7 +1278,6 @@ void CodeBlock::dumpStatistics() #define DEFINE_VARS(name) size_t name##IsNotEmpty = 0; size_t name##TotalSize = 0; FOR_EACH_MEMBER_VECTOR(DEFINE_VARS) FOR_EACH_MEMBER_VECTOR_RARE_DATA(DEFINE_VARS) - FOR_EACH_MEMBER_VECTOR_EXCEPTION_INFO(DEFINE_VARS) #undef DEFINE_VARS // Non-vector data members @@ -1290,7 +1286,6 @@ void CodeBlock::dumpStatistics() size_t symbolTableIsNotEmpty = 0; size_t symbolTableTotalSize = 0; - size_t hasExceptionInfo = 0; size_t hasRareData = 0; size_t isFunctionCode = 0; @@ -1310,13 +1305,6 @@ void CodeBlock::dumpStatistics() symbolTableTotalSize += (codeBlock->m_symbolTable.capacity() * (sizeof(SymbolTable::KeyType) + sizeof(SymbolTable::MappedType))); } - if (codeBlock->m_exceptionInfo) { - hasExceptionInfo++; - #define GET_STATS(name) if (!codeBlock->m_exceptionInfo->m_##name.isEmpty()) { name##IsNotEmpty++; name##TotalSize += sizeInBytes(codeBlock->m_exceptionInfo->m_##name); } - FOR_EACH_MEMBER_VECTOR_EXCEPTION_INFO(GET_STATS) - #undef GET_STATS - } - if (codeBlock->m_rareData) { hasRareData++; #define GET_STATS(name) if (!codeBlock->m_rareData->m_##name.isEmpty()) { name##IsNotEmpty++; name##TotalSize += sizeInBytes(codeBlock->m_rareData->m_##name); } @@ -1345,7 +1333,6 @@ void CodeBlock::dumpStatistics() #define GET_TOTAL_SIZE(name) totalSize += name##TotalSize; FOR_EACH_MEMBER_VECTOR(GET_TOTAL_SIZE) FOR_EACH_MEMBER_VECTOR_RARE_DATA(GET_TOTAL_SIZE) - FOR_EACH_MEMBER_VECTOR_EXCEPTION_INFO(GET_TOTAL_SIZE) #undef GET_TOTAL_SIZE totalSize += symbolTableTotalSize; @@ -1360,13 +1347,11 @@ void CodeBlock::dumpStatistics() printf("Number of GlobalCode CodeBlocks: %zu (%.3f%%)\n", isGlobalCode, static_cast(isGlobalCode) * 100.0 / liveCodeBlockSet.size()); printf("Number of EvalCode CodeBlocks: %zu (%.3f%%)\n", isEvalCode, static_cast(isEvalCode) * 100.0 / liveCodeBlockSet.size()); - printf("Number of CodeBlocks with exception info: %zu (%.3f%%)\n", hasExceptionInfo, static_cast(hasExceptionInfo) * 100.0 / liveCodeBlockSet.size()); printf("Number of CodeBlocks with rare data: %zu (%.3f%%)\n", hasRareData, static_cast(hasRareData) * 100.0 / liveCodeBlockSet.size()); #define PRINT_STATS(name) printf("Number of CodeBlocks with " #name ": %zu\n", name##IsNotEmpty); printf("Size of all " #name ": %zu\n", name##TotalSize); FOR_EACH_MEMBER_VECTOR(PRINT_STATS) FOR_EACH_MEMBER_VECTOR_RARE_DATA(PRINT_STATS) - FOR_EACH_MEMBER_VECTOR_EXCEPTION_INFO(PRINT_STATS) #undef PRINT_STATS printf("Number of CodeBlocks with evalCodeCache: %zu\n", evalCodeCacheIsNotEmpty); @@ -1399,7 +1384,6 @@ CodeBlock::CodeBlock(ScriptExecutable* ownerExecutable, CodeType codeType, JSGlo , m_source(sourceProvider) , m_sourceOffset(sourceOffset) , m_symbolTable(symTab) - , m_exceptionInfo(adoptPtr(new ExceptionInfo)) { ASSERT(m_source); @@ -1558,33 +1542,6 @@ void CodeBlock::markAggregate(MarkStack& markStack) markStack.append(m_globalObject); } -bool CodeBlock::reparseForExceptionInfoIfNecessary(CallFrame* callFrame) -{ - if (m_exceptionInfo) - return true; - - ASSERT(!m_rareData || !m_rareData->m_exceptionHandlers.size()); - ScopeChainNode* scopeChain = callFrame->scopeChain(); - if (m_needsFullScopeChain) { - if (codeType() == FunctionCode && !callFrame->r(activationRegister()).jsValue()) { - createActivation(callFrame); - scopeChain = callFrame->scopeChain(); - } - ScopeChain sc(scopeChain); - int scopeDelta = sc.localDepth(); - if (m_codeType == EvalCode) - scopeDelta -= static_cast(this)->baseScopeDepth(); - else if (m_codeType == FunctionCode) - scopeDelta++; // Compilation of function code assumes activation is not on the scope chain yet. - ASSERT(scopeDelta >= 0); - while (scopeDelta--) - scopeChain = scopeChain->next; - } - - m_exceptionInfo = m_ownerExecutable->reparseExceptionInfo(scopeChain, this); - return m_exceptionInfo; -} - HandlerInfo* CodeBlock::handlerForBytecodeOffset(unsigned bytecodeOffset) { ASSERT(bytecodeOffset < m_instructionCount); @@ -1603,46 +1560,48 @@ HandlerInfo* CodeBlock::handlerForBytecodeOffset(unsigned bytecodeOffset) return 0; } -int CodeBlock::lineNumberForBytecodeOffset(CallFrame* callFrame, unsigned bytecodeOffset) +int CodeBlock::lineNumberForBytecodeOffset(unsigned bytecodeOffset) { ASSERT(bytecodeOffset < m_instructionCount); - if (!reparseForExceptionInfoIfNecessary(callFrame) || !m_exceptionInfo->m_lineInfo.size()) - return m_ownerExecutable->source().firstLine(); // Empty function or unable to reparse + if (!m_rareData) + return m_ownerExecutable->source().firstLine(); + + Vector& lineInfo = m_rareData->m_lineInfo; int low = 0; - int high = m_exceptionInfo->m_lineInfo.size(); + int high = lineInfo.size(); while (low < high) { int mid = low + (high - low) / 2; - if (m_exceptionInfo->m_lineInfo[mid].instructionOffset <= bytecodeOffset) + if (lineInfo[mid].instructionOffset <= bytecodeOffset) low = mid + 1; else high = mid; } - + if (!low) return m_ownerExecutable->source().firstLine(); - return m_exceptionInfo->m_lineInfo[low - 1].lineNumber; + return lineInfo[low - 1].lineNumber; } -void CodeBlock::expressionRangeForBytecodeOffset(CallFrame* callFrame, unsigned bytecodeOffset, int& divot, int& startOffset, int& endOffset) +void CodeBlock::expressionRangeForBytecodeOffset(unsigned bytecodeOffset, int& divot, int& startOffset, int& endOffset) { ASSERT(bytecodeOffset < m_instructionCount); - if (!reparseForExceptionInfoIfNecessary(callFrame) || !m_exceptionInfo->m_expressionInfo.size()) { - // We didn't think anything could throw. Apparently we were wrong. - // Alternatively something went wrong when trying to reparse + if (!m_rareData) { startOffset = 0; endOffset = 0; divot = 0; return; } + Vector& expressionInfo = m_rareData->m_expressionInfo; + int low = 0; - int high = m_exceptionInfo->m_expressionInfo.size(); + int high = expressionInfo.size(); while (low < high) { int mid = low + (high - low) / 2; - if (m_exceptionInfo->m_expressionInfo[mid].instructionOffset <= bytecodeOffset) + if (expressionInfo[mid].instructionOffset <= bytecodeOffset) low = mid + 1; else high = mid; @@ -1656,38 +1615,12 @@ void CodeBlock::expressionRangeForBytecodeOffset(CallFrame* callFrame, unsigned return; } - startOffset = m_exceptionInfo->m_expressionInfo[low - 1].startOffset; - endOffset = m_exceptionInfo->m_expressionInfo[low - 1].endOffset; - divot = m_exceptionInfo->m_expressionInfo[low - 1].divotPoint + m_sourceOffset; + startOffset = expressionInfo[low - 1].startOffset; + endOffset = expressionInfo[low - 1].endOffset; + divot = expressionInfo[low - 1].divotPoint + m_sourceOffset; return; } -#if ENABLE(JIT) -bool CodeBlock::functionRegisterForBytecodeOffset(unsigned bytecodeOffset, int& functionRegisterIndex) -{ - ASSERT(bytecodeOffset < m_instructionCount); - - if (!m_rareData || !m_rareData->m_functionRegisterInfos.size()) - return false; - - int low = 0; - int high = m_rareData->m_functionRegisterInfos.size(); - while (low < high) { - int mid = low + (high - low) / 2; - if (m_rareData->m_functionRegisterInfos[mid].bytecodeOffset <= bytecodeOffset) - low = mid + 1; - else - high = mid; - } - - if (!low || m_rareData->m_functionRegisterInfos[low - 1].bytecodeOffset != bytecodeOffset) - return false; - - functionRegisterIndex = m_rareData->m_functionRegisterInfos[low - 1].functionRegisterIndex; - return true; -} -#endif - #if ENABLE(INTERPRETER) bool CodeBlock::hasGlobalResolveInstructionAtBytecodeOffset(unsigned bytecodeOffset) { @@ -1751,20 +1684,14 @@ void CodeBlock::shrinkToFit() m_functionExprs.shrinkToFit(); m_constantRegisters.shrinkToFit(); - if (m_exceptionInfo) { - m_exceptionInfo->m_expressionInfo.shrinkToFit(); - m_exceptionInfo->m_lineInfo.shrinkToFit(); - } - if (m_rareData) { m_rareData->m_exceptionHandlers.shrinkToFit(); m_rareData->m_regexps.shrinkToFit(); m_rareData->m_immediateSwitchJumpTables.shrinkToFit(); m_rareData->m_characterSwitchJumpTables.shrinkToFit(); m_rareData->m_stringSwitchJumpTables.shrinkToFit(); -#if ENABLE(JIT) - m_rareData->m_functionRegisterInfos.shrinkToFit(); -#endif + m_rareData->m_expressionInfo.shrinkToFit(); + m_rareData->m_lineInfo.shrinkToFit(); } } @@ -1772,9 +1699,9 @@ void CodeBlock::createActivation(CallFrame* callFrame) { ASSERT(codeType() == FunctionCode); ASSERT(needsFullScopeChain()); - ASSERT(!callFrame->r(activationRegister()).jsValue()); + ASSERT(!callFrame->uncheckedR(activationRegister()).jsValue()); JSActivation* activation = new (callFrame) JSActivation(callFrame, static_cast(ownerExecutable())); - callFrame->r(activationRegister()) = JSValue(activation); + callFrame->uncheckedR(activationRegister()) = JSValue(activation); callFrame->setScopeChain(callFrame->scopeChain()->copy()->push(activation)); } diff --git a/JavaScriptCore/bytecode/CodeBlock.h b/JavaScriptCore/bytecode/CodeBlock.h index 54acd50..7eca72a 100644 --- a/JavaScriptCore/bytecode/CodeBlock.h +++ b/JavaScriptCore/bytecode/CodeBlock.h @@ -102,7 +102,6 @@ namespace JSC { { } - unsigned bytecodeOffset; CodeLocationNearCall callReturnLocation; CodeLocationDataLabelPtr hotPathBegin; CodeLocationNearCall hotPathOther; @@ -156,17 +155,6 @@ namespace JSC { Structure* cachedPrototypeStructure; }; - struct FunctionRegisterInfo { - FunctionRegisterInfo(unsigned bytecodeOffset, int functionRegisterIndex) - : bytecodeOffset(bytecodeOffset) - , functionRegisterIndex(functionRegisterIndex) - { - } - - unsigned bytecodeOffset; - int functionRegisterIndex; - }; - struct GlobalResolveInfo { GlobalResolveInfo(unsigned bytecodeOffset) : structure(0) @@ -254,15 +242,6 @@ namespace JSC { } #endif - struct ExceptionInfo : FastAllocBase { - Vector m_expressionInfo; - Vector m_lineInfo; - -#if ENABLE(JIT) - Vector m_callReturnIndexVector; -#endif - }; - class CodeBlock : public FastAllocBase { friend class JIT; protected: @@ -307,8 +286,8 @@ namespace JSC { } HandlerInfo* handlerForBytecodeOffset(unsigned bytecodeOffset); - int lineNumberForBytecodeOffset(CallFrame*, unsigned bytecodeOffset); - void expressionRangeForBytecodeOffset(CallFrame*, unsigned bytecodeOffset, int& divot, int& startOffset, int& endOffset); + int lineNumberForBytecodeOffset(unsigned bytecodeOffset); + void expressionRangeForBytecodeOffset(unsigned bytecodeOffset, int& divot, int& startOffset, int& endOffset); #if ENABLE(JIT) void addCaller(CallLinkInfo* caller) @@ -345,17 +324,18 @@ namespace JSC { return *(binaryChop(m_methodCallLinkInfos.begin(), m_methodCallLinkInfos.size(), returnAddress.value())); } - unsigned bytecodeOffset(CallFrame* callFrame, ReturnAddressPtr returnAddress) + unsigned bytecodeOffset(ReturnAddressPtr returnAddress) { - if (!reparseForExceptionInfoIfNecessary(callFrame)) + if (!m_rareData) return 1; - return binaryChop(callReturnIndexVector().begin(), callReturnIndexVector().size(), getJITCode().offsetOf(returnAddress.value()))->bytecodeOffset; + Vector& callIndices = m_rareData->m_callReturnIndexVector; + if (!callIndices.size()) + return 1; + return binaryChop(callIndices.begin(), callIndices.size(), getJITCode().offsetOf(returnAddress.value()))->bytecodeOffset; } - - bool functionRegisterForBytecodeOffset(unsigned bytecodeOffset, int& functionRegisterIndex); #endif #if ENABLE(INTERPRETER) - unsigned bytecodeOffset(CallFrame*, Instruction* returnAddress) + unsigned bytecodeOffset(Instruction* returnAddress) { return static_cast(returnAddress) - instructions().begin(); } @@ -443,8 +423,6 @@ namespace JSC { void addMethodCallLinkInfos(unsigned n) { m_methodCallLinkInfos.grow(n); } MethodCallLinkInfo& methodCallLinkInfo(int index) { return m_methodCallLinkInfos[index]; } - - void addFunctionRegisterInfo(unsigned bytecodeOffset, int functionIndex) { createRareDataIfNecessary(); m_rareData->m_functionRegisterInfos.append(FunctionRegisterInfo(bytecodeOffset, functionIndex)); } #endif // Exception handling support @@ -453,18 +431,36 @@ namespace JSC { void addExceptionHandler(const HandlerInfo& hanler) { createRareDataIfNecessary(); return m_rareData->m_exceptionHandlers.append(hanler); } HandlerInfo& exceptionHandler(int index) { ASSERT(m_rareData); return m_rareData->m_exceptionHandlers[index]; } - bool hasExceptionInfo() const { return m_exceptionInfo; } - void clearExceptionInfo() { m_exceptionInfo.clear(); } - PassOwnPtr extractExceptionInfo(); + void addExpressionInfo(const ExpressionRangeInfo& expressionInfo) + { + createRareDataIfNecessary(); + m_rareData->m_expressionInfo.append(expressionInfo); + } - void addExpressionInfo(const ExpressionRangeInfo& expressionInfo) { ASSERT(m_exceptionInfo); m_exceptionInfo->m_expressionInfo.append(expressionInfo); } + void addLineInfo(unsigned bytecodeOffset, int lineNo) + { + createRareDataIfNecessary(); + Vector& lineInfo = m_rareData->m_lineInfo; + if (!lineInfo.size() || lineInfo.last().lineNumber != lineNo) { + LineInfo info = { bytecodeOffset, lineNo }; + lineInfo.append(info); + } + } - size_t numberOfLineInfos() const { ASSERT(m_exceptionInfo); return m_exceptionInfo->m_lineInfo.size(); } - void addLineInfo(const LineInfo& lineInfo) { ASSERT(m_exceptionInfo); m_exceptionInfo->m_lineInfo.append(lineInfo); } - LineInfo& lastLineInfo() { ASSERT(m_exceptionInfo); return m_exceptionInfo->m_lineInfo.last(); } + bool hasExpressionInfo() { return m_rareData && m_rareData->m_expressionInfo.size(); } + bool hasLineInfo() { return m_rareData && m_rareData->m_lineInfo.size(); } + bool needsCallReturnIndices() + { + return m_rareData && + (m_rareData->m_expressionInfo.size() || m_rareData->m_lineInfo.size() || m_rareData->m_exceptionHandlers.size()); + } #if ENABLE(JIT) - Vector& callReturnIndexVector() { ASSERT(m_exceptionInfo); return m_exceptionInfo->m_callReturnIndexVector; } + Vector& callReturnIndexVector() + { + createRareDataIfNecessary(); + return m_rareData->m_callReturnIndexVector; + } #endif // Constant Pool @@ -532,8 +528,6 @@ namespace JSC { void printPutByIdOp(ExecState*, int location, Vector::const_iterator&, const char* op) const; #endif - bool reparseForExceptionInfoIfNecessary(CallFrame*) WARN_UNUSED_RETURN; - void createRareDataIfNecessary() { if (!m_rareData) @@ -584,8 +578,6 @@ namespace JSC { SymbolTable* m_symbolTable; - OwnPtr m_exceptionInfo; - struct RareData : FastAllocBase { Vector m_exceptionHandlers; @@ -599,8 +591,12 @@ namespace JSC { EvalCodeCache m_evalCodeCache; + // Expression info - present if debugging. + Vector m_expressionInfo; + // Line info - present if profiling or debugging. + Vector m_lineInfo; #if ENABLE(JIT) - Vector m_functionRegisterInfos; + Vector m_callReturnIndexVector; #endif }; OwnPtr m_rareData; @@ -676,12 +672,6 @@ namespace JSC { } }; - inline PassOwnPtr CodeBlock::extractExceptionInfo() - { - ASSERT(m_exceptionInfo); - return m_exceptionInfo.release(); - } - inline Register& ExecState::r(int index) { CodeBlock* codeBlock = this->codeBlock(); @@ -690,6 +680,12 @@ namespace JSC { return this[index]; } + inline Register& ExecState::uncheckedR(int index) + { + ASSERT(index < FirstConstantRegisterIndex); + return this[index]; + } + } // namespace JSC #endif // CodeBlock_h diff --git a/JavaScriptCore/bytecode/SamplingTool.cpp b/JavaScriptCore/bytecode/SamplingTool.cpp index 4614776..f47e698 100644 --- a/JavaScriptCore/bytecode/SamplingTool.cpp +++ b/JavaScriptCore/bytecode/SamplingTool.cpp @@ -337,7 +337,7 @@ void SamplingTool::dump(ExecState* exec) if (blockPercent >= 1) { //Instruction* code = codeBlock->instructions().begin(); - printf("#%d: %s:%d: %d / %lld (%.3f%%)\n", i + 1, record->m_executable->sourceURL().utf8().data(), codeBlock->lineNumberForBytecodeOffset(exec, 0), record->m_sampleCount, m_sampleCount, blockPercent); + printf("#%d: %s:%d: %d / %lld (%.3f%%)\n", i + 1, record->m_executable->sourceURL().utf8().data(), codeBlock->lineNumberForBytecodeOffset(0), record->m_sampleCount, m_sampleCount, blockPercent); if (i < 10) { HashMap lineCounts; codeBlock->dump(exec); @@ -347,7 +347,7 @@ void SamplingTool::dump(ExecState* exec) int count = record->m_samples[op]; if (count) { printf(" [% 4d] has sample count: % 4d\n", op, count); - unsigned line = codeBlock->lineNumberForBytecodeOffset(exec, op); + unsigned line = codeBlock->lineNumberForBytecodeOffset(op); lineCounts.set(line, (lineCounts.contains(line) ? lineCounts.get(line) : 0) + count); } } diff --git a/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp b/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp index 1fa5aa4..26de0a1 100644 --- a/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp +++ b/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp @@ -153,11 +153,6 @@ void BytecodeGenerator::generate() if ((m_codeType == FunctionCode && !m_codeBlock->needsFullScopeChain() && !m_codeBlock->usesArguments()) || m_codeType == EvalCode) symbolTable().clear(); -#if !ENABLE(OPCODE_SAMPLING) - if (!m_regeneratingForExceptionInfo && !m_usesExceptions && (m_codeType == FunctionCode || m_codeType == EvalCode)) - m_codeBlock->clearExceptionInfo(); -#endif - m_codeBlock->shrinkToFit(); } @@ -199,9 +194,10 @@ void BytecodeGenerator::preserveLastVar() m_lastVar = &m_calleeRegisters.last(); } -BytecodeGenerator::BytecodeGenerator(ProgramNode* programNode, const Debugger* debugger, const ScopeChain& scopeChain, SymbolTable* symbolTable, ProgramCodeBlock* codeBlock) - : m_shouldEmitDebugHooks(!!debugger) +BytecodeGenerator::BytecodeGenerator(ProgramNode* programNode, const ScopeChain& scopeChain, SymbolTable* symbolTable, ProgramCodeBlock* codeBlock) + : m_shouldEmitDebugHooks(scopeChain.globalObject()->debugger()) , m_shouldEmitProfileHooks(scopeChain.globalObject()->supportsProfiling()) + , m_shouldEmitRichSourceInfo(scopeChain.globalObject()->supportsRichSourceInfo()) , m_scopeChain(&scopeChain) , m_symbolTable(symbolTable) , m_scopeNode(programNode) @@ -217,7 +213,7 @@ BytecodeGenerator::BytecodeGenerator(ProgramNode* programNode, const Debugger* d , m_hasCreatedActivation(true) , m_firstLazyFunction(0) , m_lastLazyFunction(0) - , m_globalData(&scopeChain.globalObject()->globalExec()->globalData()) + , m_globalData(&scopeChain.globalObject()->globalData()) , m_lastOpcodeID(op_end) #ifndef NDEBUG , m_lastOpcodePosition(0) @@ -293,9 +289,10 @@ BytecodeGenerator::BytecodeGenerator(ProgramNode* programNode, const Debugger* d codeBlock->m_numCapturedVars = codeBlock->m_numVars; } -BytecodeGenerator::BytecodeGenerator(FunctionBodyNode* functionBody, const Debugger* debugger, const ScopeChain& scopeChain, SymbolTable* symbolTable, CodeBlock* codeBlock) - : m_shouldEmitDebugHooks(!!debugger) +BytecodeGenerator::BytecodeGenerator(FunctionBodyNode* functionBody, const ScopeChain& scopeChain, SymbolTable* symbolTable, CodeBlock* codeBlock) + : m_shouldEmitDebugHooks(scopeChain.globalObject()->debugger()) , m_shouldEmitProfileHooks(scopeChain.globalObject()->supportsProfiling()) + , m_shouldEmitRichSourceInfo(scopeChain.globalObject()->supportsRichSourceInfo()) , m_scopeChain(&scopeChain) , m_symbolTable(symbolTable) , m_scopeNode(functionBody) @@ -310,7 +307,7 @@ BytecodeGenerator::BytecodeGenerator(FunctionBodyNode* functionBody, const Debug , m_hasCreatedActivation(false) , m_firstLazyFunction(0) , m_lastLazyFunction(0) - , m_globalData(&scopeChain.globalObject()->globalExec()->globalData()) + , m_globalData(&scopeChain.globalObject()->globalData()) , m_lastOpcodeID(op_end) #ifndef NDEBUG , m_lastOpcodePosition(0) @@ -387,7 +384,7 @@ BytecodeGenerator::BytecodeGenerator(FunctionBodyNode* functionBody, const Debug addVar(ident, varStack[i].second & DeclarationStacks::IsConstant); } } - bool canLazilyCreateFunctions = !functionBody->needsActivationForMoreThanVariables() && !debugger; + bool canLazilyCreateFunctions = !functionBody->needsActivationForMoreThanVariables() && !m_shouldEmitDebugHooks; if (!canLazilyCreateFunctions && !m_hasCreatedActivation) { m_hasCreatedActivation = true; emitOpcode(op_create_activation); @@ -419,7 +416,7 @@ BytecodeGenerator::BytecodeGenerator(FunctionBodyNode* functionBody, const Debug addVar(ident, varStack[i].second & DeclarationStacks::IsConstant); } - if (debugger) + if (m_shouldEmitDebugHooks) codeBlock->m_numCapturedVars = codeBlock->m_numVars; FunctionParameters& parameters = *functionBody->parameters(); @@ -457,9 +454,10 @@ BytecodeGenerator::BytecodeGenerator(FunctionBodyNode* functionBody, const Debug } } -BytecodeGenerator::BytecodeGenerator(EvalNode* evalNode, const Debugger* debugger, const ScopeChain& scopeChain, SymbolTable* symbolTable, EvalCodeBlock* codeBlock) - : m_shouldEmitDebugHooks(!!debugger) +BytecodeGenerator::BytecodeGenerator(EvalNode* evalNode, const ScopeChain& scopeChain, SymbolTable* symbolTable, EvalCodeBlock* codeBlock) + : m_shouldEmitDebugHooks(scopeChain.globalObject()->debugger()) , m_shouldEmitProfileHooks(scopeChain.globalObject()->supportsProfiling()) + , m_shouldEmitRichSourceInfo(scopeChain.globalObject()->supportsRichSourceInfo()) , m_scopeChain(&scopeChain) , m_symbolTable(symbolTable) , m_scopeNode(evalNode) @@ -474,7 +472,7 @@ BytecodeGenerator::BytecodeGenerator(EvalNode* evalNode, const Debugger* debugge , m_hasCreatedActivation(true) , m_firstLazyFunction(0) , m_lastLazyFunction(0) - , m_globalData(&scopeChain.globalObject()->globalExec()->globalData()) + , m_globalData(&scopeChain.globalObject()->globalData()) , m_lastOpcodeID(op_end) #ifndef NDEBUG , m_lastOpcodePosition(0) @@ -1649,10 +1647,6 @@ RegisterID* BytecodeGenerator::emitCall(OpcodeID opcodeID, RegisterID* dst, Regi if (m_shouldEmitProfileHooks) { emitOpcode(op_profile_will_call); instructions().append(callArguments.profileHookRegister()->index()); - -#if ENABLE(JIT) - m_codeBlock->addFunctionRegisterInfo(instructions().size(), callArguments.profileHookRegister()->index()); -#endif } emitExpressionInfo(divot, startOffset, endOffset); @@ -1697,10 +1691,6 @@ RegisterID* BytecodeGenerator::emitCallVarargs(RegisterID* dst, RegisterID* func if (m_shouldEmitProfileHooks) { emitOpcode(op_profile_will_call); instructions().append(func->index()); - -#if ENABLE(JIT) - m_codeBlock->addFunctionRegisterInfo(instructions().size(), func->index()); -#endif } emitExpressionInfo(divot, startOffset, endOffset); diff --git a/JavaScriptCore/bytecompiler/BytecodeGenerator.h b/JavaScriptCore/bytecompiler/BytecodeGenerator.h index 499d232..a90f756 100644 --- a/JavaScriptCore/bytecompiler/BytecodeGenerator.h +++ b/JavaScriptCore/bytecompiler/BytecodeGenerator.h @@ -93,9 +93,9 @@ namespace JSC { static void setDumpsGeneratedCode(bool dumpsGeneratedCode); static bool dumpsGeneratedCode(); - BytecodeGenerator(ProgramNode*, const Debugger*, const ScopeChain&, SymbolTable*, ProgramCodeBlock*); - BytecodeGenerator(FunctionBodyNode*, const Debugger*, const ScopeChain&, SymbolTable*, CodeBlock*); - BytecodeGenerator(EvalNode*, const Debugger*, const ScopeChain&, SymbolTable*, EvalCodeBlock*); + BytecodeGenerator(ProgramNode*, const ScopeChain&, SymbolTable*, ProgramCodeBlock*); + BytecodeGenerator(FunctionBodyNode*, const ScopeChain&, SymbolTable*, CodeBlock*); + BytecodeGenerator(EvalNode*, const ScopeChain&, SymbolTable*, EvalCodeBlock*); JSGlobalData* globalData() const { return m_globalData; } const CommonIdentifiers& propertyNames() const { return *m_globalData->propertyNames; } @@ -207,10 +207,8 @@ namespace JSC { { // Node::emitCode assumes that dst, if provided, is either a local or a referenced temporary. ASSERT(!dst || dst == ignoredResult() || !dst->isTemporary() || dst->refCount()); - if (!m_codeBlock->numberOfLineInfos() || m_codeBlock->lastLineInfo().lineNumber != n->lineNo()) { - LineInfo info = { instructions().size(), n->lineNo() }; - m_codeBlock->addLineInfo(info); - } + addLineInfo(n->lineNo()); + if (m_emitNodeDepth >= s_maxEmitNodeDepth) return emitThrowExpressionTooDeepException(); ++m_emitNodeDepth; @@ -226,10 +224,7 @@ namespace JSC { void emitNodeInConditionContext(ExpressionNode* n, Label* trueTarget, Label* falseTarget, bool fallThroughMeansTrue) { - if (!m_codeBlock->numberOfLineInfos() || m_codeBlock->lastLineInfo().lineNumber != n->lineNo()) { - LineInfo info = { instructions().size(), n->lineNo() }; - m_codeBlock->addLineInfo(info); - } + addLineInfo(n->lineNo()); if (m_emitNodeDepth >= s_maxEmitNodeDepth) { emitThrowExpressionTooDeepException(); return; @@ -240,7 +235,10 @@ namespace JSC { } void emitExpressionInfo(unsigned divot, unsigned startOffset, unsigned endOffset) - { + { + if (!m_shouldEmitRichSourceInfo) + return; + divot -= m_codeBlock->sourceOffset(); if (divot > ExpressionRangeInfo::MaxDivot) { // Overflow has occurred, we can only give line number info for errors for this region @@ -504,6 +502,14 @@ namespace JSC { return FunctionExecutable::create(globalData, body->ident(), body->source(), body->usesArguments(), body->parameters(), body->isStrictMode(), body->lineNo(), body->lastLine()); } + void addLineInfo(unsigned lineNo) + { +#if !ENABLE(OPCODE_SAMPLING) + if (m_shouldEmitRichSourceInfo) +#endif + m_codeBlock->addLineInfo(instructions().size(), lineNo); + } + RegisterID* emitInitLazyRegister(RegisterID*); Vector& instructions() { return m_codeBlock->instructions(); } @@ -520,6 +526,7 @@ namespace JSC { bool m_shouldEmitDebugHooks; bool m_shouldEmitProfileHooks; + bool m_shouldEmitRichSourceInfo; const ScopeChain* m_scopeChain; SymbolTable* m_symbolTable; diff --git a/JavaScriptCore/create_regex_tables b/JavaScriptCore/create_regex_tables index b436eee..d1cc1c2 100644 --- a/JavaScriptCore/create_regex_tables +++ b/JavaScriptCore/create_regex_tables @@ -25,8 +25,8 @@ types = { "wordchar": { "UseTable" : True, "data": ['_', ('0','9'), ('A', 'Z'), ('a','z')]}, "nonwordchar": { "UseTable" : True, "Inverse": "wordchar", "data": ['`', (0, ord('0') - 1), (ord('9') + 1, ord('A') - 1), (ord('Z') + 1, ord('_') - 1), (ord('z') + 1, 0xffff)]}, "newline": { "UseTable" : False, "data": ['\n', '\r', 0x2028, 0x2029]}, - "spaces": { "UseTable" : True, "data": [' ', ('\t', '\r'), 0xa0, 0x1680, 0x180e, 0x2028, 0x2029, 0x202f, 0x205f, 0x3000, (0x2000, 0x200a)]}, - "nonspaces": { "UseTable" : True, "Inverse": "spaces", "data": [(0, ord('\t') - 1), (ord('\r') + 1, ord(' ') - 1), (ord(' ') + 1, 0x009f), (0x00a1, 0x167f), (0x1681, 0x180d), (0x180f, 0x1fff), (0x200b, 0x2027), (0x202a, 0x202e), (0x2030, 0x205e), (0x2060, 0x2fff), (0x3001, 0xffff)]}, + "spaces": { "UseTable" : True, "data": [' ', ('\t', '\r'), 0xa0, 0x1680, 0x180e, 0x2028, 0x2029, 0x202f, 0x205f, 0x3000, (0x2000, 0x200a), 0xfeff]}, + "nonspaces": { "UseTable" : True, "Inverse": "spaces", "data": [(0, ord('\t') - 1), (ord('\r') + 1, ord(' ') - 1), (ord(' ') + 1, 0x009f), (0x00a1, 0x167f), (0x1681, 0x180d), (0x180f, 0x1fff), (0x200b, 0x2027), (0x202a, 0x202e), (0x2030, 0x205e), (0x2060, 0x2fff), (0x3001, 0xfefe), (0xff00, 0xffff)]}, "digits": { "UseTable" : False, "data": [('0', '9')]}, "nondigits": { "UseTable" : False, "Inverse": "digits", "data": [(0, ord('0') - 1), (ord('9') + 1, 0xffff)] } } diff --git a/JavaScriptCore/debugger/DebuggerCallFrame.cpp b/JavaScriptCore/debugger/DebuggerCallFrame.cpp index a5897c5..ed673cb 100644 --- a/JavaScriptCore/debugger/DebuggerCallFrame.cpp +++ b/JavaScriptCore/debugger/DebuggerCallFrame.cpp @@ -76,7 +76,7 @@ JSObject* DebuggerCallFrame::thisObject() const if (!codeBlock) return 0; - JSValue thisValue = m_callFrame->r(codeBlock->thisRegister()).jsValue(); + JSValue thisValue = m_callFrame->uncheckedR(codeBlock->thisRegister()).jsValue(); if (!thisValue.isObject()) return 0; diff --git a/JavaScriptCore/interpreter/CallFrame.h b/JavaScriptCore/interpreter/CallFrame.h index 56709f3..2797ef3 100644 --- a/JavaScriptCore/interpreter/CallFrame.h +++ b/JavaScriptCore/interpreter/CallFrame.h @@ -126,6 +126,8 @@ namespace JSC { // Read a register from the codeframe (or constant from the CodeBlock). inline Register& r(int); + // Read a register for a non-constant + inline Register& uncheckedR(int); // Access to arguments. int hostThisRegister() { return -RegisterFile::CallFrameHeaderSize - argumentCountIncludingThis(); } diff --git a/JavaScriptCore/interpreter/Interpreter.cpp b/JavaScriptCore/interpreter/Interpreter.cpp index 0a1be48..febdb71 100644 --- a/JavaScriptCore/interpreter/Interpreter.cpp +++ b/JavaScriptCore/interpreter/Interpreter.cpp @@ -110,7 +110,7 @@ NEVER_INLINE bool Interpreter::resolve(CallFrame* callFrame, Instruction* vPC, J exceptionValue = callFrame->globalData().exception; if (exceptionValue) return false; - callFrame->r(dst) = JSValue(result); + callFrame->uncheckedR(dst) = JSValue(result); return true; } } while (++iter != end); @@ -133,7 +133,7 @@ NEVER_INLINE bool Interpreter::resolveSkip(CallFrame* callFrame, Instruction* vP bool checkTopLevel = codeBlock->codeType() == FunctionCode && codeBlock->needsFullScopeChain(); ASSERT(skip || !checkTopLevel); if (checkTopLevel && skip--) { - if (callFrame->r(codeBlock->activationRegister()).jsValue()) + if (callFrame->uncheckedR(codeBlock->activationRegister()).jsValue()) ++iter; } while (skip--) { @@ -150,7 +150,7 @@ NEVER_INLINE bool Interpreter::resolveSkip(CallFrame* callFrame, Instruction* vP if (exceptionValue) return false; ASSERT(result); - callFrame->r(dst) = JSValue(result); + callFrame->uncheckedR(dst) = JSValue(result); return true; } } while (++iter != end); @@ -169,7 +169,7 @@ NEVER_INLINE bool Interpreter::resolveGlobal(CallFrame* callFrame, Instruction* int offset = vPC[4].u.operand; if (structure == globalObject->structure()) { - callFrame->r(dst) = JSValue(globalObject->getDirectOffset(offset)); + callFrame->uncheckedR(dst) = JSValue(globalObject->getDirectOffset(offset)); return true; } @@ -183,14 +183,14 @@ NEVER_INLINE bool Interpreter::resolveGlobal(CallFrame* callFrame, Instruction* globalObject->structure()->ref(); vPC[3] = globalObject->structure(); vPC[4] = slot.cachedOffset(); - callFrame->r(dst) = JSValue(result); + callFrame->uncheckedR(dst) = JSValue(result); return true; } exceptionValue = callFrame->globalData().exception; if (exceptionValue) return false; - callFrame->r(dst) = JSValue(result); + callFrame->uncheckedR(dst) = JSValue(result); return true; } @@ -216,7 +216,7 @@ NEVER_INLINE bool Interpreter::resolveGlobalDynamic(CallFrame* callFrame, Instru bool checkTopLevel = codeBlock->codeType() == FunctionCode && codeBlock->needsFullScopeChain(); ASSERT(skip || !checkTopLevel); if (checkTopLevel && skip--) { - if (callFrame->r(codeBlock->activationRegister()).jsValue()) + if (callFrame->uncheckedR(codeBlock->activationRegister()).jsValue()) ++iter; } while (skip--) { @@ -231,7 +231,7 @@ NEVER_INLINE bool Interpreter::resolveGlobalDynamic(CallFrame* callFrame, Instru if (exceptionValue) return false; ASSERT(result); - callFrame->r(dst) = JSValue(result); + callFrame->uncheckedR(dst) = JSValue(result); return true; } if (iter == end) @@ -246,8 +246,8 @@ NEVER_INLINE bool Interpreter::resolveGlobalDynamic(CallFrame* callFrame, Instru } if (structure == globalObject->structure()) { - callFrame->r(dst) = JSValue(globalObject->getDirectOffset(offset)); - ASSERT(callFrame->r(dst).jsValue()); + callFrame->uncheckedR(dst) = JSValue(globalObject->getDirectOffset(offset)); + ASSERT(callFrame->uncheckedR(dst).jsValue()); return true; } @@ -262,7 +262,7 @@ NEVER_INLINE bool Interpreter::resolveGlobalDynamic(CallFrame* callFrame, Instru vPC[3] = globalObject->structure(); vPC[4] = slot.cachedOffset(); ASSERT(result); - callFrame->r(dst) = JSValue(result); + callFrame->uncheckedR(dst) = JSValue(result); return true; } @@ -270,7 +270,7 @@ NEVER_INLINE bool Interpreter::resolveGlobalDynamic(CallFrame* callFrame, Instru if (exceptionValue) return false; ASSERT(result); - callFrame->r(dst) = JSValue(result); + callFrame->uncheckedR(dst) = JSValue(result); return true; } @@ -286,8 +286,8 @@ NEVER_INLINE void Interpreter::resolveBase(CallFrame* callFrame, Instruction* vP Identifier ident = callFrame->codeBlock()->identifier(property); JSValue result = JSC::resolveBase(callFrame, ident, callFrame->scopeChain(), isStrictPut); if (result) { - callFrame->r(dst) = result; - ASSERT(callFrame->r(dst).jsValue()); + callFrame->uncheckedR(dst) = result; + ASSERT(callFrame->uncheckedR(dst).jsValue()); } else callFrame->globalData().exception = createErrorForInvalidGlobalAssignment(callFrame, ident.ustring()); } @@ -317,8 +317,8 @@ NEVER_INLINE bool Interpreter::resolveBaseAndProperty(CallFrame* callFrame, Inst exceptionValue = callFrame->globalData().exception; if (exceptionValue) return false; - callFrame->r(propDst) = JSValue(result); - callFrame->r(baseDst) = JSValue(base); + callFrame->uncheckedR(propDst) = JSValue(result); + callFrame->uncheckedR(baseDst) = JSValue(base); return true; } ++iter; @@ -416,7 +416,7 @@ NEVER_INLINE JSValue Interpreter::callEval(CallFrame* callFrame, RegisterFile* r if (UNLIKELY(!eval)) return throwError(callFrame, exceptionValue); - return callFrame->globalData().interpreter->execute(eval.get(), callFrame, callFrame->r(codeBlock->thisRegister()).jsValue().toThisObject(callFrame), callFrame->registers() - registerFile->start() + registerOffset, scopeChain); + return callFrame->globalData().interpreter->execute(eval.get(), callFrame, callFrame->uncheckedR(codeBlock->thisRegister()).jsValue().toThisObject(callFrame), callFrame->registers() - registerFile->start() + registerOffset, scopeChain); } Interpreter::Interpreter() @@ -558,16 +558,9 @@ NEVER_INLINE bool Interpreter::unwindCallFrame(CallFrame*& callFrame, JSValue ex debugger->didExecuteProgram(debuggerCallFrame, codeBlock->ownerExecutable()->sourceID(), codeBlock->ownerExecutable()->lastLine()); } - if (Profiler* profiler = *Profiler::enabledProfilerReference()) { - if (callFrame->callee()) - profiler->didExecute(callFrame, callFrame->callee()); - else - profiler->didExecute(callFrame, codeBlock->ownerExecutable()->sourceURL(), codeBlock->ownerExecutable()->lineNo()); - } - // If this call frame created an activation or an 'arguments' object, tear it off. if (oldCodeBlock->codeType() == FunctionCode && oldCodeBlock->needsFullScopeChain()) { - if (!callFrame->r(oldCodeBlock->activationRegister()).jsValue()) { + if (!callFrame->uncheckedR(oldCodeBlock->activationRegister()).jsValue()) { oldCodeBlock->createActivation(callFrame); scopeChain = callFrame->scopeChain(); } @@ -575,12 +568,12 @@ NEVER_INLINE bool Interpreter::unwindCallFrame(CallFrame*& callFrame, JSValue ex scopeChain = scopeChain->pop(); JSActivation* activation = asActivation(scopeChain->object); activation->copyRegisters(); - if (JSValue arguments = callFrame->r(unmodifiedArgumentsRegister(oldCodeBlock->argumentsRegister())).jsValue()) { + if (JSValue arguments = callFrame->uncheckedR(unmodifiedArgumentsRegister(oldCodeBlock->argumentsRegister())).jsValue()) { if (!oldCodeBlock->isStrictMode()) asArguments(arguments)->setActivation(activation); } } else if (oldCodeBlock->usesArguments() && !oldCodeBlock->isStrictMode()) { - if (JSValue arguments = callFrame->r(unmodifiedArgumentsRegister(oldCodeBlock->argumentsRegister())).jsValue()) + if (JSValue arguments = callFrame->uncheckedR(unmodifiedArgumentsRegister(oldCodeBlock->argumentsRegister())).jsValue()) asArguments(arguments)->copyRegisters(); } @@ -594,13 +587,13 @@ NEVER_INLINE bool Interpreter::unwindCallFrame(CallFrame*& callFrame, JSValue ex codeBlock = callerFrame->codeBlock(); #if ENABLE(JIT) && ENABLE(INTERPRETER) if (callerFrame->globalData().canUseJIT()) - bytecodeOffset = codeBlock->bytecodeOffset(callerFrame, callFrame->returnPC()); + bytecodeOffset = codeBlock->bytecodeOffset(callFrame->returnPC()); else - bytecodeOffset = codeBlock->bytecodeOffset(callerFrame, callFrame->returnVPC()); + bytecodeOffset = codeBlock->bytecodeOffset(callFrame->returnVPC()); #elif ENABLE(JIT) - bytecodeOffset = codeBlock->bytecodeOffset(callerFrame, callFrame->returnPC()); + bytecodeOffset = codeBlock->bytecodeOffset(callFrame->returnPC()); #else - bytecodeOffset = codeBlock->bytecodeOffset(callerFrame, callFrame->returnVPC()); + bytecodeOffset = codeBlock->bytecodeOffset(callFrame->returnVPC()); #endif callFrame = callerFrame; @@ -611,12 +604,15 @@ static void appendSourceToError(CallFrame* callFrame, ErrorInstance* exception, { exception->clearAppendSourceToMessage(); + if (!callFrame->codeBlock()->hasExpressionInfo()) + return; + int startOffset = 0; int endOffset = 0; int divotPoint = 0; CodeBlock* codeBlock = callFrame->codeBlock(); - codeBlock->expressionRangeForBytecodeOffset(callFrame, bytecodeOffset, divotPoint, startOffset, endOffset); + codeBlock->expressionRangeForBytecodeOffset(bytecodeOffset, divotPoint, startOffset, endOffset); int expressionStart = divotPoint - startOffset; int expressionStop = divotPoint + endOffset; @@ -655,69 +651,50 @@ static void appendSourceToError(CallFrame* callFrame, ErrorInstance* exception, exception->putDirect(globalData->propertyNames->message, jsString(globalData, message)); } -NEVER_INLINE HandlerInfo* Interpreter::throwException(CallFrame*& callFrame, JSValue& exceptionValue, unsigned bytecodeOffset, bool explicitThrow) +NEVER_INLINE HandlerInfo* Interpreter::throwException(CallFrame*& callFrame, JSValue& exceptionValue, unsigned bytecodeOffset) { - // Set up the exception object - CodeBlock* codeBlock = callFrame->codeBlock(); + bool isInterrupt = false; + + // Set up the exception object if (exceptionValue.isObject()) { JSObject* exception = asObject(exceptionValue); - if (!explicitThrow && exception->isErrorInstance() && static_cast(exception)->appendSourceToMessage()) + + if (exception->isErrorInstance() && static_cast(exception)->appendSourceToMessage()) appendSourceToError(callFrame, static_cast(exception), bytecodeOffset); - // FIXME: should only really be adding these properties to VM generated exceptions, - // but the inspector currently requires these for all thrown objects. - if (!hasErrorInfo(callFrame, exception)) - addErrorInfo(callFrame, exception, codeBlock->lineNumberForBytecodeOffset(callFrame, bytecodeOffset), codeBlock->ownerExecutable()->source()); + // Using hasExpressionInfo to imply we are interested in rich exception info. + if (codeBlock->hasExpressionInfo() && !hasErrorInfo(callFrame, exception)) { + ASSERT(codeBlock->hasLineInfo()); - ComplType exceptionType = exception->exceptionType(); - if (exceptionType == Interrupted || exceptionType == Terminated) { - while (unwindCallFrame(callFrame, exceptionValue, bytecodeOffset, codeBlock)) { - // Don't need handler checks or anything, we just want to unroll all the JS callframes possible. - } - return 0; + // FIXME: should only really be adding these properties to VM generated exceptions, + // but the inspector currently requires these for all thrown objects. + addErrorInfo(callFrame, exception, codeBlock->lineNumberForBytecodeOffset(bytecodeOffset), codeBlock->ownerExecutable()->source()); } + + ComplType exceptionType = exception->exceptionType(); + isInterrupt = exceptionType == Interrupted || exceptionType == Terminated; } if (Debugger* debugger = callFrame->dynamicGlobalObject()->debugger()) { DebuggerCallFrame debuggerCallFrame(callFrame, exceptionValue); bool hasHandler = codeBlock->handlerForBytecodeOffset(bytecodeOffset); - debugger->exception(debuggerCallFrame, codeBlock->ownerExecutable()->sourceID(), codeBlock->lineNumberForBytecodeOffset(callFrame, bytecodeOffset), hasHandler); - } - - // If we throw in the middle of a call instruction, we need to notify - // the profiler manually that the call instruction has returned, since - // we'll never reach the relevant op_profile_did_call. - if (Profiler* profiler = *Profiler::enabledProfilerReference()) { -#if ENABLE(INTERPRETER) - if (!callFrame->globalData().canUseJIT()) { - // FIXME: Why 8? - work out what this magic value is, replace the constant with something more helpful. - if (isCallBytecode(codeBlock->instructions()[bytecodeOffset].u.opcode)) - profiler->didExecute(callFrame, callFrame->r(codeBlock->instructions()[bytecodeOffset + 1].u.operand).jsValue()); - else if (codeBlock->instructions().size() > (bytecodeOffset + 8) && codeBlock->instructions()[bytecodeOffset + 8].u.opcode == getOpcode(op_construct)) - profiler->didExecute(callFrame, callFrame->r(codeBlock->instructions()[bytecodeOffset + 9].u.operand).jsValue()); - } -#if ENABLE(JIT) - else -#endif -#endif -#if ENABLE(JIT) - { - int functionRegisterIndex; - if (codeBlock->functionRegisterForBytecodeOffset(bytecodeOffset, functionRegisterIndex)) - profiler->didExecute(callFrame, callFrame->r(functionRegisterIndex).jsValue()); - } -#endif + debugger->exception(debuggerCallFrame, codeBlock->ownerExecutable()->sourceID(), codeBlock->lineNumberForBytecodeOffset(bytecodeOffset), hasHandler); } // Calculate an exception handler vPC, unwinding call frames as necessary. - HandlerInfo* handler = 0; - while (!(handler = codeBlock->handlerForBytecodeOffset(bytecodeOffset))) { - if (!unwindCallFrame(callFrame, exceptionValue, bytecodeOffset, codeBlock)) + while (isInterrupt || !(handler = codeBlock->handlerForBytecodeOffset(bytecodeOffset))) { + if (!unwindCallFrame(callFrame, exceptionValue, bytecodeOffset, codeBlock)) { + if (Profiler* profiler = *Profiler::enabledProfilerReference()) + profiler->exceptionUnwind(callFrame); return 0; + } } + if (Profiler* profiler = *Profiler::enabledProfilerReference()) + profiler->exceptionUnwind(callFrame); + // Shrink the JS stack, in case stack overflow made it huge. Register* highWaterMark = 0; for (CallFrame* callerFrame = callFrame; callerFrame; callerFrame = callerFrame->callerFrame()->removeHostCallFrameFlag()) { @@ -734,7 +711,7 @@ NEVER_INLINE HandlerInfo* Interpreter::throwException(CallFrame*& callFrame, JSV ScopeChain sc(scopeChain); int scopeDelta = 0; if (!codeBlock->needsFullScopeChain() || codeBlock->codeType() != FunctionCode - || callFrame->r(codeBlock->activationRegister()).jsValue()) + || callFrame->uncheckedR(codeBlock->activationRegister()).jsValue()) scopeDelta = depth(codeBlock, sc) - handler->scopeDepth; ASSERT(scopeDelta >= 0); while (scopeDelta--) @@ -780,7 +757,7 @@ JSValue Interpreter::execute(ProgramExecutable* program, CallFrame* callFrame, S CallFrame* newCallFrame = CallFrame::create(oldEnd + codeBlock->m_numParameters + RegisterFile::CallFrameHeaderSize); ASSERT(codeBlock->m_numParameters == 1); // 1 parameter for 'this'. newCallFrame->init(codeBlock, 0, scopeChain, CallFrame::noCaller(), codeBlock->m_numParameters, 0); - newCallFrame->r(newCallFrame->hostThisRegister()) = JSValue(thisObj); + newCallFrame->uncheckedR(newCallFrame->hostThisRegister()) = JSValue(thisObj); if (codeBlock->needsFullScopeChain()) scopeChain->ref(); @@ -789,7 +766,7 @@ JSValue Interpreter::execute(ProgramExecutable* program, CallFrame* callFrame, S Profiler** profiler = Profiler::enabledProfilerReference(); if (*profiler) - (*profiler)->willExecute(newCallFrame, program->sourceURL(), program->lineNo()); + (*profiler)->willExecute(callFrame, program->sourceURL(), program->lineNo()); JSValue result; { @@ -833,10 +810,10 @@ JSValue Interpreter::executeCall(CallFrame* callFrame, JSObject* function, CallT CallFrame* newCallFrame = CallFrame::create(oldEnd); size_t dst = 0; - newCallFrame->r(0) = thisValue; + newCallFrame->uncheckedR(0) = thisValue; ArgList::const_iterator end = args.end(); for (ArgList::const_iterator it = args.begin(); it != end; ++it) - newCallFrame->r(++dst) = *it; + newCallFrame->uncheckedR(++dst) = *it; if (callType == CallTypeJS) { ScopeChainNode* callDataScopeChain = callData.js.scopeChain; @@ -860,7 +837,7 @@ JSValue Interpreter::executeCall(CallFrame* callFrame, JSObject* function, CallT Profiler** profiler = Profiler::enabledProfilerReference(); if (*profiler) - (*profiler)->willExecute(newCallFrame, function); + (*profiler)->willExecute(callFrame, function); JSValue result; { @@ -877,7 +854,7 @@ JSValue Interpreter::executeCall(CallFrame* callFrame, JSObject* function, CallT } if (*profiler) - (*profiler)->didExecute(newCallFrame, function); + (*profiler)->didExecute(callFrame, function); m_registerFile.shrink(oldEnd); return checkedReturn(result); @@ -892,7 +869,7 @@ JSValue Interpreter::executeCall(CallFrame* callFrame, JSObject* function, CallT Profiler** profiler = Profiler::enabledProfilerReference(); if (*profiler) - (*profiler)->willExecute(newCallFrame, function); + (*profiler)->willExecute(callFrame, function); JSValue result; { @@ -901,7 +878,7 @@ JSValue Interpreter::executeCall(CallFrame* callFrame, JSObject* function, CallT } if (*profiler) - (*profiler)->didExecute(newCallFrame, function); + (*profiler)->didExecute(callFrame, function); m_registerFile.shrink(oldEnd); return checkedReturn(result); @@ -925,7 +902,7 @@ JSObject* Interpreter::executeConstruct(CallFrame* callFrame, JSObject* construc size_t dst = 0; ArgList::const_iterator end = args.end(); for (ArgList::const_iterator it = args.begin(); it != end; ++it) - newCallFrame->r(++dst) = *it; + newCallFrame->uncheckedR(++dst) = *it; if (constructType == ConstructTypeJS) { ScopeChainNode* constructDataScopeChain = constructData.js.scopeChain; @@ -949,7 +926,7 @@ JSObject* Interpreter::executeConstruct(CallFrame* callFrame, JSObject* construc Profiler** profiler = Profiler::enabledProfilerReference(); if (*profiler) - (*profiler)->willExecute(newCallFrame, constructor); + (*profiler)->willExecute(callFrame, constructor); JSValue result; { @@ -966,7 +943,7 @@ JSObject* Interpreter::executeConstruct(CallFrame* callFrame, JSObject* construc } if (*profiler) - (*profiler)->didExecute(newCallFrame, constructor); + (*profiler)->didExecute(callFrame, constructor); m_registerFile.shrink(oldEnd); if (callFrame->hadException()) @@ -984,7 +961,7 @@ JSObject* Interpreter::executeConstruct(CallFrame* callFrame, JSObject* construc Profiler** profiler = Profiler::enabledProfilerReference(); if (*profiler) - (*profiler)->willExecute(newCallFrame, constructor); + (*profiler)->willExecute(callFrame, constructor); JSValue result; { @@ -993,7 +970,7 @@ JSObject* Interpreter::executeConstruct(CallFrame* callFrame, JSObject* construc } if (*profiler) - (*profiler)->didExecute(newCallFrame, constructor); + (*profiler)->didExecute(callFrame, constructor); m_registerFile.shrink(oldEnd); if (callFrame->hadException()) @@ -1024,7 +1001,7 @@ CallFrameClosure Interpreter::prepareForRepeatCall(FunctionExecutable* FunctionE CallFrame* newCallFrame = CallFrame::create(oldEnd); size_t dst = 0; for (int i = 0; i < argc; ++i) - newCallFrame->r(++dst) = jsUndefined(); + newCallFrame->uncheckedR(++dst) = jsUndefined(); JSObject* error = FunctionExecutable->compileForCall(callFrame, scopeChain); if (error) { @@ -1152,14 +1129,14 @@ JSValue Interpreter::execute(EvalExecutable* eval, CallFrame* callFrame, JSObjec ASSERT(codeBlock->m_numParameters == 1); // 1 parameter for 'this'. newCallFrame->init(codeBlock, 0, scopeChain, callFrame->addHostCallFrameFlag(), codeBlock->m_numParameters, 0); - newCallFrame->r(newCallFrame->hostThisRegister()) = JSValue(thisObj); + newCallFrame->uncheckedR(newCallFrame->hostThisRegister()) = JSValue(thisObj); if (codeBlock->needsFullScopeChain()) scopeChain->ref(); Profiler** profiler = Profiler::enabledProfilerReference(); if (*profiler) - (*profiler)->willExecute(newCallFrame, eval->sourceURL(), eval->lineNo()); + (*profiler)->willExecute(callFrame, eval->sourceURL(), eval->lineNo()); JSValue result; { @@ -1227,7 +1204,7 @@ NEVER_INLINE ScopeChainNode* Interpreter::createExceptionScope(CallFrame* callFr Identifier& property = codeBlock->identifier(vPC[2].u.operand); JSValue value = callFrame->r(vPC[3].u.operand).jsValue(); JSObject* scope = new (callFrame) JSStaticScopeObject(callFrame, property, value, DontDelete); - callFrame->r(dst) = JSValue(scope); + callFrame->uncheckedR(dst) = JSValue(scope); return callFrame->scopeChain()->push(scope); } @@ -1550,7 +1527,7 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi constructor, and puts the result in register dst. */ int dst = vPC[1].u.operand; - callFrame->r(dst) = JSValue(constructEmptyObject(callFrame)); + callFrame->uncheckedR(dst) = JSValue(constructEmptyObject(callFrame)); vPC += OPCODE_LENGTH(op_new_object); NEXT_INSTRUCTION(); @@ -1567,7 +1544,7 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi int firstArg = vPC[2].u.operand; int argCount = vPC[3].u.operand; ArgList args(callFrame->registers() + firstArg, argCount); - callFrame->r(dst) = JSValue(constructArray(callFrame, args)); + callFrame->uncheckedR(dst) = JSValue(constructArray(callFrame, args)); vPC += OPCODE_LENGTH(op_new_array); NEXT_INSTRUCTION(); @@ -1581,7 +1558,7 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi */ int dst = vPC[1].u.operand; int regExp = vPC[2].u.operand; - callFrame->r(dst) = JSValue(new (globalData) RegExpObject(callFrame->lexicalGlobalObject(), callFrame->scopeChain()->globalObject->regExpStructure(), codeBlock->regexp(regExp))); + callFrame->uncheckedR(dst) = JSValue(new (globalData) RegExpObject(callFrame->lexicalGlobalObject(), callFrame->scopeChain()->globalObject->regExpStructure(), codeBlock->regexp(regExp))); vPC += OPCODE_LENGTH(op_new_regexp); NEXT_INSTRUCTION(); @@ -1594,7 +1571,7 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi int dst = vPC[1].u.operand; int src = vPC[2].u.operand; - callFrame->r(dst) = callFrame->r(src); + callFrame->uncheckedR(dst) = callFrame->r(src); vPC += OPCODE_LENGTH(op_mov); NEXT_INSTRUCTION(); @@ -1610,11 +1587,11 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi JSValue src1 = callFrame->r(vPC[2].u.operand).jsValue(); JSValue src2 = callFrame->r(vPC[3].u.operand).jsValue(); if (src1.isInt32() && src2.isInt32()) - callFrame->r(dst) = jsBoolean(src1.asInt32() == src2.asInt32()); + callFrame->uncheckedR(dst) = jsBoolean(src1.asInt32() == src2.asInt32()); else { JSValue result = jsBoolean(JSValue::equalSlowCase(callFrame, src1, src2)); CHECK_FOR_EXCEPTION(); - callFrame->r(dst) = result; + callFrame->uncheckedR(dst) = result; } vPC += OPCODE_LENGTH(op_eq); @@ -1630,12 +1607,12 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi JSValue src = callFrame->r(vPC[2].u.operand).jsValue(); if (src.isUndefinedOrNull()) { - callFrame->r(dst) = jsBoolean(true); + callFrame->uncheckedR(dst) = jsBoolean(true); vPC += OPCODE_LENGTH(op_eq_null); NEXT_INSTRUCTION(); } - callFrame->r(dst) = jsBoolean(src.isCell() && src.asCell()->structure()->typeInfo().masqueradesAsUndefined()); + callFrame->uncheckedR(dst) = jsBoolean(src.isCell() && src.asCell()->structure()->typeInfo().masqueradesAsUndefined()); vPC += OPCODE_LENGTH(op_eq_null); NEXT_INSTRUCTION(); } @@ -1650,11 +1627,11 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi JSValue src1 = callFrame->r(vPC[2].u.operand).jsValue(); JSValue src2 = callFrame->r(vPC[3].u.operand).jsValue(); if (src1.isInt32() && src2.isInt32()) - callFrame->r(dst) = jsBoolean(src1.asInt32() != src2.asInt32()); + callFrame->uncheckedR(dst) = jsBoolean(src1.asInt32() != src2.asInt32()); else { JSValue result = jsBoolean(!JSValue::equalSlowCase(callFrame, src1, src2)); CHECK_FOR_EXCEPTION(); - callFrame->r(dst) = result; + callFrame->uncheckedR(dst) = result; } vPC += OPCODE_LENGTH(op_neq); @@ -1670,12 +1647,12 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi JSValue src = callFrame->r(vPC[2].u.operand).jsValue(); if (src.isUndefinedOrNull()) { - callFrame->r(dst) = jsBoolean(false); + callFrame->uncheckedR(dst) = jsBoolean(false); vPC += OPCODE_LENGTH(op_neq_null); NEXT_INSTRUCTION(); } - callFrame->r(dst) = jsBoolean(!src.isCell() || !src.asCell()->structure()->typeInfo().masqueradesAsUndefined()); + callFrame->uncheckedR(dst) = jsBoolean(!src.isCell() || !src.asCell()->structure()->typeInfo().masqueradesAsUndefined()); vPC += OPCODE_LENGTH(op_neq_null); NEXT_INSTRUCTION(); } @@ -1691,7 +1668,7 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi JSValue src2 = callFrame->r(vPC[3].u.operand).jsValue(); bool result = JSValue::strictEqual(callFrame, src1, src2); CHECK_FOR_EXCEPTION(); - callFrame->r(dst) = jsBoolean(result); + callFrame->uncheckedR(dst) = jsBoolean(result); vPC += OPCODE_LENGTH(op_stricteq); NEXT_INSTRUCTION(); @@ -1708,7 +1685,7 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi JSValue src2 = callFrame->r(vPC[3].u.operand).jsValue(); bool result = !JSValue::strictEqual(callFrame, src1, src2); CHECK_FOR_EXCEPTION(); - callFrame->r(dst) = jsBoolean(result); + callFrame->uncheckedR(dst) = jsBoolean(result); vPC += OPCODE_LENGTH(op_nstricteq); NEXT_INSTRUCTION(); @@ -1725,7 +1702,7 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi JSValue src2 = callFrame->r(vPC[3].u.operand).jsValue(); JSValue result = jsBoolean(jsLess(callFrame, src1, src2)); CHECK_FOR_EXCEPTION(); - callFrame->r(dst) = result; + callFrame->uncheckedR(dst) = result; vPC += OPCODE_LENGTH(op_less); NEXT_INSTRUCTION(); @@ -1742,7 +1719,7 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi JSValue src2 = callFrame->r(vPC[3].u.operand).jsValue(); JSValue result = jsBoolean(jsLessEq(callFrame, src1, src2)); CHECK_FOR_EXCEPTION(); - callFrame->r(dst) = result; + callFrame->uncheckedR(dst) = result; vPC += OPCODE_LENGTH(op_lesseq); NEXT_INSTRUCTION(); @@ -1756,11 +1733,11 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi int srcDst = vPC[1].u.operand; JSValue v = callFrame->r(srcDst).jsValue(); if (v.isInt32() && v.asInt32() < INT_MAX) - callFrame->r(srcDst) = jsNumber(v.asInt32() + 1); + callFrame->uncheckedR(srcDst) = jsNumber(v.asInt32() + 1); else { JSValue result = jsNumber(v.toNumber(callFrame) + 1); CHECK_FOR_EXCEPTION(); - callFrame->r(srcDst) = result; + callFrame->uncheckedR(srcDst) = result; } vPC += OPCODE_LENGTH(op_pre_inc); @@ -1775,11 +1752,11 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi int srcDst = vPC[1].u.operand; JSValue v = callFrame->r(srcDst).jsValue(); if (v.isInt32() && v.asInt32() > INT_MIN) - callFrame->r(srcDst) = jsNumber(v.asInt32() - 1); + callFrame->uncheckedR(srcDst) = jsNumber(v.asInt32() - 1); else { JSValue result = jsNumber(v.toNumber(callFrame) - 1); CHECK_FOR_EXCEPTION(); - callFrame->r(srcDst) = result; + callFrame->uncheckedR(srcDst) = result; } vPC += OPCODE_LENGTH(op_pre_dec); @@ -1796,13 +1773,13 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi int srcDst = vPC[2].u.operand; JSValue v = callFrame->r(srcDst).jsValue(); if (v.isInt32() && v.asInt32() < INT_MAX) { - callFrame->r(srcDst) = jsNumber(v.asInt32() + 1); - callFrame->r(dst) = v; + callFrame->uncheckedR(srcDst) = jsNumber(v.asInt32() + 1); + callFrame->uncheckedR(dst) = v; } else { JSValue number = callFrame->r(srcDst).jsValue().toJSNumber(callFrame); CHECK_FOR_EXCEPTION(); - callFrame->r(srcDst) = jsNumber(number.uncheckedGetNumber() + 1); - callFrame->r(dst) = number; + callFrame->uncheckedR(srcDst) = jsNumber(number.uncheckedGetNumber() + 1); + callFrame->uncheckedR(dst) = number; } vPC += OPCODE_LENGTH(op_post_inc); @@ -1819,13 +1796,13 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi int srcDst = vPC[2].u.operand; JSValue v = callFrame->r(srcDst).jsValue(); if (v.isInt32() && v.asInt32() > INT_MIN) { - callFrame->r(srcDst) = jsNumber(v.asInt32() - 1); - callFrame->r(dst) = v; + callFrame->uncheckedR(srcDst) = jsNumber(v.asInt32() - 1); + callFrame->uncheckedR(dst) = v; } else { JSValue number = callFrame->r(srcDst).jsValue().toJSNumber(callFrame); CHECK_FOR_EXCEPTION(); - callFrame->r(srcDst) = jsNumber(number.uncheckedGetNumber() - 1); - callFrame->r(dst) = number; + callFrame->uncheckedR(srcDst) = jsNumber(number.uncheckedGetNumber() - 1); + callFrame->uncheckedR(dst) = number; } vPC += OPCODE_LENGTH(op_post_dec); @@ -1843,11 +1820,11 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi JSValue srcVal = callFrame->r(src).jsValue(); if (LIKELY(srcVal.isNumber())) - callFrame->r(dst) = callFrame->r(src); + callFrame->uncheckedR(dst) = callFrame->r(src); else { JSValue result = srcVal.toJSNumber(callFrame); CHECK_FOR_EXCEPTION(); - callFrame->r(dst) = result; + callFrame->uncheckedR(dst) = result; } vPC += OPCODE_LENGTH(op_to_jsnumber); @@ -1862,11 +1839,11 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi int dst = vPC[1].u.operand; JSValue src = callFrame->r(vPC[2].u.operand).jsValue(); if (src.isInt32() && (src.asInt32() & 0x7fffffff)) // non-zero and no overflow - callFrame->r(dst) = jsNumber(-src.asInt32()); + callFrame->uncheckedR(dst) = jsNumber(-src.asInt32()); else { JSValue result = jsNumber(-src.toNumber(callFrame)); CHECK_FOR_EXCEPTION(); - callFrame->r(dst) = result; + callFrame->uncheckedR(dst) = result; } vPC += OPCODE_LENGTH(op_negate); @@ -1883,11 +1860,11 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi JSValue src1 = callFrame->r(vPC[2].u.operand).jsValue(); JSValue src2 = callFrame->r(vPC[3].u.operand).jsValue(); if (src1.isInt32() && src2.isInt32() && !(src1.asInt32() | (src2.asInt32() & 0xc0000000))) // no overflow - callFrame->r(dst) = jsNumber(src1.asInt32() + src2.asInt32()); + callFrame->uncheckedR(dst) = jsNumber(src1.asInt32() + src2.asInt32()); else { JSValue result = jsAdd(callFrame, src1, src2); CHECK_FOR_EXCEPTION(); - callFrame->r(dst) = result; + callFrame->uncheckedR(dst) = result; } vPC += OPCODE_LENGTH(op_add); NEXT_INSTRUCTION(); @@ -1902,11 +1879,11 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi JSValue src1 = callFrame->r(vPC[2].u.operand).jsValue(); JSValue src2 = callFrame->r(vPC[3].u.operand).jsValue(); if (src1.isInt32() && src2.isInt32() && !(src1.asInt32() | src2.asInt32() >> 15)) // no overflow - callFrame->r(dst) = jsNumber(src1.asInt32() * src2.asInt32()); + callFrame->uncheckedR(dst) = jsNumber(src1.asInt32() * src2.asInt32()); else { JSValue result = jsNumber(src1.toNumber(callFrame) * src2.toNumber(callFrame)); CHECK_FOR_EXCEPTION(); - callFrame->r(dst) = result; + callFrame->uncheckedR(dst) = result; } vPC += OPCODE_LENGTH(op_mul); @@ -1925,7 +1902,7 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi JSValue result = jsNumber(dividend.toNumber(callFrame) / divisor.toNumber(callFrame)); CHECK_FOR_EXCEPTION(); - callFrame->r(dst) = result; + callFrame->uncheckedR(dst) = result; vPC += OPCODE_LENGTH(op_div); NEXT_INSTRUCTION(); @@ -1944,7 +1921,7 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi if (dividend.isInt32() && divisor.isInt32() && divisor.asInt32() != 0) { JSValue result = jsNumber(dividend.asInt32() % divisor.asInt32()); ASSERT(result); - callFrame->r(dst) = result; + callFrame->uncheckedR(dst) = result; vPC += OPCODE_LENGTH(op_mod); NEXT_INSTRUCTION(); } @@ -1955,7 +1932,7 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi double d2 = divisor.toNumber(callFrame); JSValue result = jsNumber(fmod(d1, d2)); CHECK_FOR_EXCEPTION(); - callFrame->r(dst) = result; + callFrame->uncheckedR(dst) = result; vPC += OPCODE_LENGTH(op_mod); NEXT_INSTRUCTION(); } @@ -1970,11 +1947,11 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi JSValue src1 = callFrame->r(vPC[2].u.operand).jsValue(); JSValue src2 = callFrame->r(vPC[3].u.operand).jsValue(); if (src1.isInt32() && src2.isInt32() && !(src1.asInt32() | (src2.asInt32() & 0xc0000000))) // no overflow - callFrame->r(dst) = jsNumber(src1.asInt32() - src2.asInt32()); + callFrame->uncheckedR(dst) = jsNumber(src1.asInt32() - src2.asInt32()); else { JSValue result = jsNumber(src1.toNumber(callFrame) - src2.toNumber(callFrame)); CHECK_FOR_EXCEPTION(); - callFrame->r(dst) = result; + callFrame->uncheckedR(dst) = result; } vPC += OPCODE_LENGTH(op_sub); NEXT_INSTRUCTION(); @@ -1991,11 +1968,11 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi JSValue shift = callFrame->r(vPC[3].u.operand).jsValue(); if (val.isInt32() && shift.isInt32()) - callFrame->r(dst) = jsNumber(val.asInt32() << (shift.asInt32() & 0x1f)); + callFrame->uncheckedR(dst) = jsNumber(val.asInt32() << (shift.asInt32() & 0x1f)); else { JSValue result = jsNumber((val.toInt32(callFrame)) << (shift.toUInt32(callFrame) & 0x1f)); CHECK_FOR_EXCEPTION(); - callFrame->r(dst) = result; + callFrame->uncheckedR(dst) = result; } vPC += OPCODE_LENGTH(op_lshift); @@ -2013,11 +1990,11 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi JSValue shift = callFrame->r(vPC[3].u.operand).jsValue(); if (val.isInt32() && shift.isInt32()) - callFrame->r(dst) = jsNumber(val.asInt32() >> (shift.asInt32() & 0x1f)); + callFrame->uncheckedR(dst) = jsNumber(val.asInt32() >> (shift.asInt32() & 0x1f)); else { JSValue result = jsNumber((val.toInt32(callFrame)) >> (shift.toUInt32(callFrame) & 0x1f)); CHECK_FOR_EXCEPTION(); - callFrame->r(dst) = result; + callFrame->uncheckedR(dst) = result; } vPC += OPCODE_LENGTH(op_rshift); @@ -2034,11 +2011,11 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi JSValue val = callFrame->r(vPC[2].u.operand).jsValue(); JSValue shift = callFrame->r(vPC[3].u.operand).jsValue(); if (val.isUInt32() && shift.isInt32()) - callFrame->r(dst) = jsNumber(val.asInt32() >> (shift.asInt32() & 0x1f)); + callFrame->uncheckedR(dst) = jsNumber(val.asInt32() >> (shift.asInt32() & 0x1f)); else { JSValue result = jsNumber((val.toUInt32(callFrame)) >> (shift.toUInt32(callFrame) & 0x1f)); CHECK_FOR_EXCEPTION(); - callFrame->r(dst) = result; + callFrame->uncheckedR(dst) = result; } vPC += OPCODE_LENGTH(op_urshift); @@ -2055,11 +2032,11 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi JSValue src1 = callFrame->r(vPC[2].u.operand).jsValue(); JSValue src2 = callFrame->r(vPC[3].u.operand).jsValue(); if (src1.isInt32() && src2.isInt32()) - callFrame->r(dst) = jsNumber(src1.asInt32() & src2.asInt32()); + callFrame->uncheckedR(dst) = jsNumber(src1.asInt32() & src2.asInt32()); else { JSValue result = jsNumber(src1.toInt32(callFrame) & src2.toInt32(callFrame)); CHECK_FOR_EXCEPTION(); - callFrame->r(dst) = result; + callFrame->uncheckedR(dst) = result; } vPC += OPCODE_LENGTH(op_bitand); @@ -2076,11 +2053,11 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi JSValue src1 = callFrame->r(vPC[2].u.operand).jsValue(); JSValue src2 = callFrame->r(vPC[3].u.operand).jsValue(); if (src1.isInt32() && src2.isInt32()) - callFrame->r(dst) = jsNumber(src1.asInt32() ^ src2.asInt32()); + callFrame->uncheckedR(dst) = jsNumber(src1.asInt32() ^ src2.asInt32()); else { JSValue result = jsNumber(src1.toInt32(callFrame) ^ src2.toInt32(callFrame)); CHECK_FOR_EXCEPTION(); - callFrame->r(dst) = result; + callFrame->uncheckedR(dst) = result; } vPC += OPCODE_LENGTH(op_bitxor); @@ -2097,11 +2074,11 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi JSValue src1 = callFrame->r(vPC[2].u.operand).jsValue(); JSValue src2 = callFrame->r(vPC[3].u.operand).jsValue(); if (src1.isInt32() && src2.isInt32()) - callFrame->r(dst) = jsNumber(src1.asInt32() | src2.asInt32()); + callFrame->uncheckedR(dst) = jsNumber(src1.asInt32() | src2.asInt32()); else { JSValue result = jsNumber(src1.toInt32(callFrame) | src2.toInt32(callFrame)); CHECK_FOR_EXCEPTION(); - callFrame->r(dst) = result; + callFrame->uncheckedR(dst) = result; } vPC += OPCODE_LENGTH(op_bitor); @@ -2116,11 +2093,11 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi int dst = vPC[1].u.operand; JSValue src = callFrame->r(vPC[2].u.operand).jsValue(); if (src.isInt32()) - callFrame->r(dst) = jsNumber(~src.asInt32()); + callFrame->uncheckedR(dst) = jsNumber(~src.asInt32()); else { JSValue result = jsNumber(~src.toInt32(callFrame)); CHECK_FOR_EXCEPTION(); - callFrame->r(dst) = result; + callFrame->uncheckedR(dst) = result; } vPC += OPCODE_LENGTH(op_bitnot); NEXT_INSTRUCTION(); @@ -2135,7 +2112,7 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi int src = vPC[2].u.operand; JSValue result = jsBoolean(!callFrame->r(src).jsValue().toBoolean(callFrame)); CHECK_FOR_EXCEPTION(); - callFrame->r(dst) = result; + callFrame->uncheckedR(dst) = result; vPC += OPCODE_LENGTH(op_not); NEXT_INSTRUCTION(); @@ -2181,7 +2158,7 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi bool result = asObject(baseVal)->hasInstance(callFrame, callFrame->r(value).jsValue(), callFrame->r(baseProto).jsValue()); CHECK_FOR_EXCEPTION(); - callFrame->r(dst) = jsBoolean(result); + callFrame->uncheckedR(dst) = jsBoolean(result); vPC += OPCODE_LENGTH(op_instanceof); NEXT_INSTRUCTION(); @@ -2194,7 +2171,7 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi */ int dst = vPC[1].u.operand; int src = vPC[2].u.operand; - callFrame->r(dst) = JSValue(jsTypeStringForValue(callFrame, callFrame->r(src).jsValue())); + callFrame->uncheckedR(dst) = JSValue(jsTypeStringForValue(callFrame, callFrame->r(src).jsValue())); vPC += OPCODE_LENGTH(op_typeof); NEXT_INSTRUCTION(); @@ -2209,7 +2186,7 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi int dst = vPC[1].u.operand; int src = vPC[2].u.operand; JSValue v = callFrame->r(src).jsValue(); - callFrame->r(dst) = jsBoolean(v.isCell() ? v.asCell()->structure()->typeInfo().masqueradesAsUndefined() : v.isUndefined()); + callFrame->uncheckedR(dst) = jsBoolean(v.isCell() ? v.asCell()->structure()->typeInfo().masqueradesAsUndefined() : v.isUndefined()); vPC += OPCODE_LENGTH(op_is_undefined); NEXT_INSTRUCTION(); @@ -2223,7 +2200,7 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi */ int dst = vPC[1].u.operand; int src = vPC[2].u.operand; - callFrame->r(dst) = jsBoolean(callFrame->r(src).jsValue().isBoolean()); + callFrame->uncheckedR(dst) = jsBoolean(callFrame->r(src).jsValue().isBoolean()); vPC += OPCODE_LENGTH(op_is_boolean); NEXT_INSTRUCTION(); @@ -2237,7 +2214,7 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi */ int dst = vPC[1].u.operand; int src = vPC[2].u.operand; - callFrame->r(dst) = jsBoolean(callFrame->r(src).jsValue().isNumber()); + callFrame->uncheckedR(dst) = jsBoolean(callFrame->r(src).jsValue().isNumber()); vPC += OPCODE_LENGTH(op_is_number); NEXT_INSTRUCTION(); @@ -2251,7 +2228,7 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi */ int dst = vPC[1].u.operand; int src = vPC[2].u.operand; - callFrame->r(dst) = jsBoolean(callFrame->r(src).jsValue().isString()); + callFrame->uncheckedR(dst) = jsBoolean(callFrame->r(src).jsValue().isString()); vPC += OPCODE_LENGTH(op_is_string); NEXT_INSTRUCTION(); @@ -2265,7 +2242,7 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi */ int dst = vPC[1].u.operand; int src = vPC[2].u.operand; - callFrame->r(dst) = jsBoolean(jsIsObjectType(callFrame->r(src).jsValue())); + callFrame->uncheckedR(dst) = jsBoolean(jsIsObjectType(callFrame->r(src).jsValue())); vPC += OPCODE_LENGTH(op_is_object); NEXT_INSTRUCTION(); @@ -2279,7 +2256,7 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi */ int dst = vPC[1].u.operand; int src = vPC[2].u.operand; - callFrame->r(dst) = jsBoolean(jsIsFunctionType(callFrame->r(src).jsValue())); + callFrame->uncheckedR(dst) = jsBoolean(jsIsFunctionType(callFrame->r(src).jsValue())); vPC += OPCODE_LENGTH(op_is_function); NEXT_INSTRUCTION(); @@ -2307,11 +2284,11 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi uint32_t i; if (propName.getUInt32(i)) - callFrame->r(dst) = jsBoolean(baseObj->hasProperty(callFrame, i)); + callFrame->uncheckedR(dst) = jsBoolean(baseObj->hasProperty(callFrame, i)); else { Identifier property(callFrame, propName.toString(callFrame)); CHECK_FOR_EXCEPTION(); - callFrame->r(dst) = jsBoolean(baseObj->hasProperty(callFrame, property)); + callFrame->uncheckedR(dst) = jsBoolean(baseObj->hasProperty(callFrame, property)); } vPC += OPCODE_LENGTH(op_in); @@ -2387,7 +2364,7 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi ASSERT(scope->isGlobalObject()); int index = vPC[2].u.operand; - callFrame->r(dst) = scope->registerAt(index); + callFrame->uncheckedR(dst) = scope->registerAt(index); vPC += OPCODE_LENGTH(op_get_global_var); NEXT_INSTRUCTION(); } @@ -2432,7 +2409,7 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi } ASSERT((*iter)->isVariableObject()); JSVariableObject* scope = static_cast(*iter); - callFrame->r(dst) = scope->registerAt(index); + callFrame->uncheckedR(dst) = scope->registerAt(index); ASSERT(callFrame->r(dst).jsValue()); vPC += OPCODE_LENGTH(op_get_scoped_var); NEXT_INSTRUCTION(); @@ -2535,7 +2512,7 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi tryCacheGetByID(callFrame, codeBlock, vPC, baseValue, ident, slot); - callFrame->r(dst) = result; + callFrame->uncheckedR(dst) = result; vPC += OPCODE_LENGTH(op_get_by_id); NEXT_INSTRUCTION(); } @@ -2560,7 +2537,7 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi int offset = vPC[5].u.operand; ASSERT(baseObject->get(callFrame, codeBlock->identifier(vPC[3].u.operand)) == baseObject->getDirectOffset(offset)); - callFrame->r(dst) = JSValue(baseObject->getDirectOffset(offset)); + callFrame->uncheckedR(dst) = JSValue(baseObject->getDirectOffset(offset)); vPC += OPCODE_LENGTH(op_get_by_id_self); NEXT_INSTRUCTION(); @@ -2595,7 +2572,7 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi ASSERT(protoObject->get(callFrame, codeBlock->identifier(vPC[3].u.operand)) == protoObject->getDirectOffset(offset)); ASSERT(baseValue.get(callFrame, codeBlock->identifier(vPC[3].u.operand)) == protoObject->getDirectOffset(offset)); - callFrame->r(dst) = JSValue(protoObject->getDirectOffset(offset)); + callFrame->uncheckedR(dst) = JSValue(protoObject->getDirectOffset(offset)); vPC += OPCODE_LENGTH(op_get_by_id_proto); NEXT_INSTRUCTION(); @@ -2637,9 +2614,9 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi CallType callType = getter->getCallData(callData); JSValue result = call(callFrame, getter, callType, callData, asObject(baseCell), ArgList()); CHECK_FOR_EXCEPTION(); - callFrame->r(dst) = result; + callFrame->uncheckedR(dst) = result; } else - callFrame->r(dst) = jsUndefined(); + callFrame->uncheckedR(dst) = jsUndefined(); vPC += OPCODE_LENGTH(op_get_by_id_getter_proto); NEXT_INSTRUCTION(); } @@ -2681,7 +2658,7 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi PropertySlot::GetValueFunc getter = vPC[6].u.getterFunc; JSValue result = getter(callFrame, protoObject, ident); CHECK_FOR_EXCEPTION(); - callFrame->r(dst) = result; + callFrame->uncheckedR(dst) = result; vPC += OPCODE_LENGTH(op_get_by_id_custom_proto); NEXT_INSTRUCTION(); } @@ -2766,7 +2743,7 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi ASSERT(baseObject->get(callFrame, codeBlock->identifier(vPC[3].u.operand)) == baseObject->getDirectOffset(offset)); ASSERT(baseValue.get(callFrame, codeBlock->identifier(vPC[3].u.operand)) == baseObject->getDirectOffset(offset)); - callFrame->r(dst) = JSValue(baseObject->getDirectOffset(offset)); + callFrame->uncheckedR(dst) = JSValue(baseObject->getDirectOffset(offset)); vPC += OPCODE_LENGTH(op_get_by_id_chain); NEXT_INSTRUCTION(); @@ -2810,9 +2787,9 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi CallType callType = getter->getCallData(callData); JSValue result = call(callFrame, getter, callType, callData, baseObject, ArgList()); CHECK_FOR_EXCEPTION(); - callFrame->r(dst) = result; + callFrame->uncheckedR(dst) = result; } else - callFrame->r(dst) = jsUndefined(); + callFrame->uncheckedR(dst) = jsUndefined(); vPC += OPCODE_LENGTH(op_get_by_id_getter_self); NEXT_INSTRUCTION(); @@ -2850,7 +2827,7 @@ JSValue Interpreter::privateExecute(ExecutionFlag flag, RegisterFile* registerFi PropertySlot::GetValueFunc getter = vPC[5].u.getterFunc; JSValue result = getter(callFrame, baseValue, ident); CHECK_FOR_EXCEPTION(); - callFrame->r(dst) = result; + callFrame->uncheckedR(dst) = result; vPC += OPCODE_LENGTH(op_get_by_id_custom_self); NEXT_INSTRUCTION(); } @@ -2877,7 +2854,7 @@ skip_id_custom_self: JSValue result = baseValue.get(callFrame, ident, slot); CHECK_FOR_EXCEPTION(); - callFrame->r(dst) = result; + callFrame->uncheckedR(dst) = result; vPC += OPCODE_LENGTH(op_get_by_id_generic); NEXT_INSTRUCTION(); } @@ -2918,9 +2895,9 @@ skip_id_custom_self: CallType callType = getter->getCallData(callData); JSValue result = call(callFrame, getter, callType, callData, baseValue, ArgList()); CHECK_FOR_EXCEPTION(); - callFrame->r(dst) = result; + callFrame->uncheckedR(dst) = result; } else - callFrame->r(dst) = jsUndefined(); + callFrame->uncheckedR(dst) = jsUndefined(); vPC += OPCODE_LENGTH(op_get_by_id_getter_chain); NEXT_INSTRUCTION(); } @@ -2972,7 +2949,7 @@ skip_id_custom_self: PropertySlot::GetValueFunc getter = vPC[7].u.getterFunc; JSValue result = getter(callFrame, baseObject, ident); CHECK_FOR_EXCEPTION(); - callFrame->r(dst) = result; + callFrame->uncheckedR(dst) = result; vPC += OPCODE_LENGTH(op_get_by_id_custom_chain); NEXT_INSTRUCTION(); } @@ -3000,7 +2977,7 @@ skip_id_custom_self: JSValue baseValue = callFrame->r(base).jsValue(); if (LIKELY(isJSArray(globalData, baseValue))) { int dst = vPC[1].u.operand; - callFrame->r(dst) = jsNumber(asArray(baseValue)->length()); + callFrame->uncheckedR(dst) = jsNumber(asArray(baseValue)->length()); vPC += OPCODE_LENGTH(op_get_array_length); NEXT_INSTRUCTION(); } @@ -3020,7 +2997,7 @@ skip_id_custom_self: JSValue baseValue = callFrame->r(base).jsValue(); if (LIKELY(isJSString(globalData, baseValue))) { int dst = vPC[1].u.operand; - callFrame->r(dst) = jsNumber(asString(baseValue)->length()); + callFrame->uncheckedR(dst) = jsNumber(asString(baseValue)->length()); vPC += OPCODE_LENGTH(op_get_string_length); NEXT_INSTRUCTION(); } @@ -3195,7 +3172,7 @@ skip_id_custom_self: goto vm_throw; } CHECK_FOR_EXCEPTION(); - callFrame->r(dst) = jsBoolean(result); + callFrame->uncheckedR(dst) = jsBoolean(result); vPC += OPCODE_LENGTH(op_del_by_id); NEXT_INSTRUCTION(); } @@ -3215,14 +3192,14 @@ skip_id_custom_self: JSValue result; int offset = 0; if (subscript == expectedSubscript && baseValue.isCell() && (baseValue.asCell()->structure() == it->cachedStructure()) && it->getOffset(index, offset)) { - callFrame->r(dst) = JSValue(asObject(baseValue)->getDirectOffset(offset)); + callFrame->uncheckedR(dst) = JSValue(asObject(baseValue)->getDirectOffset(offset)); vPC += OPCODE_LENGTH(op_get_by_pname); NEXT_INSTRUCTION(); } Identifier propertyName(callFrame, subscript.toString(callFrame)); result = baseValue.get(callFrame, propertyName); CHECK_FOR_EXCEPTION(); - callFrame->r(dst) = result; + callFrame->uncheckedR(dst) = result; vPC += OPCODE_LENGTH(op_get_by_pname); NEXT_INSTRUCTION(); } @@ -3236,9 +3213,9 @@ skip_id_custom_self: PropertySlot slot(arguments); JSValue result = arguments.get(callFrame, ident, slot); CHECK_FOR_EXCEPTION(); - callFrame->r(dst) = result; + callFrame->uncheckedR(dst) = result; } else - callFrame->r(dst) = jsNumber(callFrame->argumentCount()); + callFrame->uncheckedR(dst) = jsNumber(callFrame->argumentCount()); vPC += OPCODE_LENGTH(op_get_arguments_length); NEXT_INSTRUCTION(); @@ -3253,16 +3230,16 @@ skip_id_custom_self: unsigned arg = subscript.asUInt32() + 1; unsigned numParameters = callFrame->codeBlock()->m_numParameters; if (arg < numParameters) - callFrame->r(dst) = callFrame->r(arg - RegisterFile::CallFrameHeaderSize - numParameters); + callFrame->uncheckedR(dst) = callFrame->r(arg - RegisterFile::CallFrameHeaderSize - numParameters); else - callFrame->r(dst) = callFrame->r(arg - RegisterFile::CallFrameHeaderSize - numParameters - callFrame->argumentCount() - 1); + callFrame->uncheckedR(dst) = callFrame->r(arg - RegisterFile::CallFrameHeaderSize - numParameters - callFrame->argumentCount() - 1); vPC += OPCODE_LENGTH(op_get_argument_by_val); NEXT_INSTRUCTION(); } if (!arguments) { Arguments* arguments = new (globalData) Arguments(callFrame); - callFrame->r(argumentsRegister) = JSValue(arguments); - callFrame->r(unmodifiedArgumentsRegister(argumentsRegister)) = JSValue(arguments); + callFrame->uncheckedR(argumentsRegister) = JSValue(arguments); + callFrame->uncheckedR(unmodifiedArgumentsRegister(argumentsRegister)) = JSValue(arguments); } // fallthrough } @@ -3303,7 +3280,7 @@ skip_id_custom_self: } CHECK_FOR_EXCEPTION(); - callFrame->r(dst) = result; + callFrame->uncheckedR(dst) = result; vPC += OPCODE_LENGTH(op_get_by_val); NEXT_INSTRUCTION(); } @@ -3387,7 +3364,7 @@ skip_id_custom_self: goto vm_throw; } CHECK_FOR_EXCEPTION(); - callFrame->r(dst) = jsBoolean(result); + callFrame->uncheckedR(dst) = jsBoolean(result); vPC += OPCODE_LENGTH(op_del_by_val); NEXT_INSTRUCTION(); } @@ -3793,7 +3770,7 @@ skip_id_custom_self: int shouldCheck = vPC[3].u.operand; ASSERT(codeBlock->codeType() != FunctionCode || !codeBlock->needsFullScopeChain() || callFrame->r(codeBlock->activationRegister()).jsValue()); if (!shouldCheck || !callFrame->r(dst).jsValue()) - callFrame->r(dst) = JSValue(codeBlock->functionDecl(func)->make(callFrame, callFrame->scopeChain())); + callFrame->uncheckedR(dst) = JSValue(codeBlock->functionDecl(func)->make(callFrame, callFrame->scopeChain())); vPC += OPCODE_LENGTH(op_new_func); NEXT_INSTRUCTION(); @@ -3825,7 +3802,7 @@ skip_id_custom_self: func->scope().push(functionScopeObject); } - callFrame->r(dst) = JSValue(func); + callFrame->uncheckedR(dst) = JSValue(func); vPC += OPCODE_LENGTH(op_new_func_exp); NEXT_INSTRUCTION(); @@ -4021,7 +3998,7 @@ skip_id_custom_self: } } CHECK_FOR_EXCEPTION(); - callFrame->r(argCountDst) = Register::withInt(argCount + 1); + callFrame->uncheckedR(argCountDst) = Register::withInt(argCount + 1); vPC += OPCODE_LENGTH(op_load_varargs); NEXT_INSTRUCTION(); } @@ -4191,7 +4168,7 @@ skip_id_custom_self: expected return value register. */ - callFrame->r(vPC[1].u.operand) = functionReturnValue; + callFrame->uncheckedR(vPC[1].u.operand) = functionReturnValue; vPC += OPCODE_LENGTH(op_call_put_result); NEXT_INSTRUCTION(); @@ -4239,7 +4216,7 @@ skip_id_custom_self: size_t i = 0; for (size_t count = codeBlock->m_numVars; i < count; ++i) - callFrame->r(i) = jsUndefined(); + callFrame->uncheckedR(i) = jsUndefined(); vPC += OPCODE_LENGTH(op_enter); NEXT_INSTRUCTION(); @@ -4266,7 +4243,7 @@ skip_id_custom_self: Move callee into a register. */ - callFrame->r(vPC[1].u.operand) = JSValue(callFrame->callee()); + callFrame->uncheckedR(vPC[1].u.operand) = JSValue(callFrame->callee()); vPC += OPCODE_LENGTH(op_get_callee); NEXT_INSTRUCTION(); @@ -4295,7 +4272,7 @@ skip_id_custom_self: structure = asObject(proto)->inheritorID(); else structure = constructor->scope().node()->globalObject->emptyObjectStructure(); - callFrame->r(thisRegister) = JSValue(new (&callFrame->globalData()) JSObject(structure)); + callFrame->uncheckedR(thisRegister) = JSValue(new (&callFrame->globalData()) JSObject(structure)); vPC += OPCODE_LENGTH(op_create_this); NEXT_INSTRUCTION(); @@ -4315,7 +4292,7 @@ skip_id_custom_self: int thisRegister = vPC[1].u.operand; JSValue thisVal = callFrame->r(thisRegister).jsValue(); if (thisVal.needsThisConversion()) - callFrame->r(thisRegister) = JSValue(thisVal.toThisObject(callFrame)); + callFrame->uncheckedR(thisRegister) = JSValue(thisVal.toThisObject(callFrame)); vPC += OPCODE_LENGTH(op_convert_this); NEXT_INSTRUCTION(); @@ -4334,7 +4311,7 @@ skip_id_custom_self: int thisRegister = vPC[1].u.operand; JSValue thisVal = callFrame->r(thisRegister).jsValue(); if (thisVal.isObject() && thisVal.needsThisConversion()) - callFrame->r(thisRegister) = JSValue(thisVal.toStrictThisObject(callFrame)); + callFrame->uncheckedR(thisRegister) = JSValue(thisVal.toStrictThisObject(callFrame)); vPC += OPCODE_LENGTH(op_convert_this_strict); NEXT_INSTRUCTION(); @@ -4348,7 +4325,7 @@ skip_id_custom_self: */ int dst = vPC[1].u.operand; - callFrame->r(dst) = JSValue(); + callFrame->uncheckedR(dst) = JSValue(); vPC += OPCODE_LENGTH(op_init_lazy_reg); NEXT_INSTRUCTION(); } @@ -4364,8 +4341,8 @@ skip_id_custom_self: if (!callFrame->r(dst).jsValue()) { Arguments* arguments = new (globalData) Arguments(callFrame); - callFrame->r(dst) = JSValue(arguments); - callFrame->r(unmodifiedArgumentsRegister(dst)) = JSValue(arguments); + callFrame->uncheckedR(dst) = JSValue(arguments); + callFrame->uncheckedR(unmodifiedArgumentsRegister(dst)) = JSValue(arguments); } vPC += OPCODE_LENGTH(op_create_arguments); NEXT_INSTRUCTION(); @@ -4461,7 +4438,7 @@ skip_id_custom_self: int src = vPC[2].u.operand; int count = vPC[3].u.operand; - callFrame->r(dst) = concatenateStrings(callFrame, &callFrame->registers()[src], count); + callFrame->uncheckedR(dst) = concatenateStrings(callFrame, &callFrame->registers()[src], count); CHECK_FOR_EXCEPTION(); vPC += OPCODE_LENGTH(op_strcat); @@ -4471,7 +4448,7 @@ skip_id_custom_self: int dst = vPC[1].u.operand; int src = vPC[2].u.operand; - callFrame->r(dst) = callFrame->r(src).jsValue().toPrimitive(callFrame); + callFrame->uncheckedR(dst) = callFrame->r(src).jsValue().toPrimitive(callFrame); vPC += OPCODE_LENGTH(op_to_primitive); NEXT_INSTRUCTION(); @@ -4488,7 +4465,7 @@ skip_id_custom_self: JSObject* o = v.toObject(callFrame); CHECK_FOR_EXCEPTION(); - callFrame->r(scope) = JSValue(o); + callFrame->uncheckedR(scope) = JSValue(o); callFrame->setScopeChain(callFrame->scopeChain()->push(o)); vPC += OPCODE_LENGTH(op_push_scope); @@ -4529,10 +4506,10 @@ skip_id_custom_self: if (!jsPropertyNameIterator || jsPropertyNameIterator->cachedPrototypeChain() != structure->prototypeChain(callFrame)) jsPropertyNameIterator = JSPropertyNameIterator::create(callFrame, o); - callFrame->r(dst) = jsPropertyNameIterator; - callFrame->r(base) = JSValue(o); - callFrame->r(i) = Register::withInt(0); - callFrame->r(size) = Register::withInt(jsPropertyNameIterator->size()); + callFrame->uncheckedR(dst) = jsPropertyNameIterator; + callFrame->uncheckedR(base) = JSValue(o); + callFrame->uncheckedR(i) = Register::withInt(0); + callFrame->uncheckedR(size) = Register::withInt(jsPropertyNameIterator->size()); vPC += OPCODE_LENGTH(op_get_pnames); NEXT_INSTRUCTION(); } @@ -4555,10 +4532,10 @@ skip_id_custom_self: while (callFrame->r(i).i() != callFrame->r(size).i()) { JSValue key = it->get(callFrame, asObject(callFrame->r(base).jsValue()), callFrame->r(i).i()); CHECK_FOR_EXCEPTION(); - callFrame->r(i) = Register::withInt(callFrame->r(i).i() + 1); + callFrame->uncheckedR(i) = Register::withInt(callFrame->r(i).i() + 1); if (key) { CHECK_FOR_TIMEOUT(); - callFrame->r(dst) = key; + callFrame->uncheckedR(dst) = key; vPC += target; NEXT_INSTRUCTION(); } @@ -4614,7 +4591,7 @@ skip_id_custom_self: ASSERT(exceptionValue); ASSERT(!globalData->exception); int ex = vPC[1].u.operand; - callFrame->r(ex) = exceptionValue; + callFrame->uncheckedR(ex) = exceptionValue; exceptionValue = JSValue(); vPC += OPCODE_LENGTH(op_catch); @@ -4634,7 +4611,7 @@ skip_id_custom_self: int ex = vPC[1].u.operand; exceptionValue = callFrame->r(ex).jsValue(); - handler = throwException(callFrame, exceptionValue, vPC - codeBlock->instructions().begin(), true); + handler = throwException(callFrame, exceptionValue, vPC - codeBlock->instructions().begin()); if (!handler) return throwError(callFrame, exceptionValue); @@ -4805,7 +4782,7 @@ skip_id_custom_self: // cannot fathom if we don't assign to the exceptionValue before branching) exceptionValue = createInterruptedExecutionException(globalData); } - handler = throwException(callFrame, exceptionValue, vPC - codeBlock->instructions().begin(), false); + handler = throwException(callFrame, exceptionValue, vPC - codeBlock->instructions().begin()); if (!handler) return throwError(callFrame, exceptionValue); @@ -4880,15 +4857,15 @@ void Interpreter::retrieveLastCaller(CallFrame* callFrame, int& lineNumber, intp unsigned bytecodeOffset = 0; #if ENABLE(INTERPRETER) if (!callerFrame->globalData().canUseJIT()) - bytecodeOffset = callerCodeBlock->bytecodeOffset(callerFrame, callFrame->returnVPC()); + bytecodeOffset = callerCodeBlock->bytecodeOffset(callFrame->returnVPC()); #if ENABLE(JIT) else - bytecodeOffset = callerCodeBlock->bytecodeOffset(callerFrame, callFrame->returnPC()); + bytecodeOffset = callerCodeBlock->bytecodeOffset(callFrame->returnPC()); #endif #else - bytecodeOffset = callerCodeBlock->bytecodeOffset(callerFrame, callFrame->returnPC()); + bytecodeOffset = callerCodeBlock->bytecodeOffset(callFrame->returnPC()); #endif - lineNumber = callerCodeBlock->lineNumberForBytecodeOffset(callerFrame, bytecodeOffset - 1); + lineNumber = callerCodeBlock->lineNumberForBytecodeOffset(bytecodeOffset - 1); sourceID = callerCodeBlock->ownerExecutable()->sourceID(); sourceURL = callerCodeBlock->ownerExecutable()->sourceURL(); function = callerFrame->callee(); diff --git a/JavaScriptCore/interpreter/Interpreter.h b/JavaScriptCore/interpreter/Interpreter.h index 2bc403e..47790cf 100644 --- a/JavaScriptCore/interpreter/Interpreter.h +++ b/JavaScriptCore/interpreter/Interpreter.h @@ -108,7 +108,7 @@ namespace JSC { SamplingTool* sampler() { return m_sampler.get(); } NEVER_INLINE JSValue callEval(CallFrame*, RegisterFile*, Register* argv, int argc, int registerOffset); - NEVER_INLINE HandlerInfo* throwException(CallFrame*&, JSValue&, unsigned bytecodeOffset, bool); + NEVER_INLINE HandlerInfo* throwException(CallFrame*&, JSValue&, unsigned bytecodeOffset); NEVER_INLINE void debug(CallFrame*, DebugHookID, int firstLine, int lastLine); void dumpSampleData(ExecState* exec); diff --git a/JavaScriptCore/jit/JIT.cpp b/JavaScriptCore/jit/JIT.cpp index 3f2ec59..01401a7 100644 --- a/JavaScriptCore/jit/JIT.cpp +++ b/JavaScriptCore/jit/JIT.cpp @@ -552,7 +552,7 @@ JITCode JIT::privateCompile(CodePtr* functionEntryArityCheck) patchBuffer.link(iter->from, FunctionPtr(iter->to)); } - if (m_codeBlock->hasExceptionInfo()) { + if (m_codeBlock->needsCallReturnIndices()) { m_codeBlock->callReturnIndexVector().reserveCapacity(m_calls.size()); for (Vector::iterator iter = m_calls.begin(); iter != m_calls.end(); ++iter) m_codeBlock->callReturnIndexVector().append(CallReturnOffsetToBytecodeOffset(patchBuffer.returnAddressOffset(iter->from), iter->bytecodeOffset)); diff --git a/JavaScriptCore/jit/JITArithmetic.cpp b/JavaScriptCore/jit/JITArithmetic.cpp index f0a049a..cd05f51 100644 --- a/JavaScriptCore/jit/JITArithmetic.cpp +++ b/JavaScriptCore/jit/JITArithmetic.cpp @@ -916,22 +916,10 @@ void JIT::emit_op_mod(Instruction* currentInstruction) unsigned op1 = currentInstruction[2].u.operand; unsigned op2 = currentInstruction[3].u.operand; -#if ENABLE(JIT_USE_SOFT_MODULO) - emitGetVirtualRegisters(op1, regT0, op2, regT2); - emitJumpSlowCaseIfNotImmediateInteger(regT0); - emitJumpSlowCaseIfNotImmediateInteger(regT2); - - addSlowCase(branch32(Equal, regT2, Imm32(1))); - - emitNakedCall(m_globalData->jitStubs->ctiSoftModulo()); - - emitPutVirtualRegister(result, regT0); -#else JITStubCall stubCall(this, cti_op_mod); stubCall.addArgument(op1, regT2); stubCall.addArgument(op2, regT2); stubCall.call(result); -#endif } void JIT::emitSlow_op_mod(Instruction* currentInstruction, Vector::iterator& iter) diff --git a/JavaScriptCore/jit/JITOpcodes.cpp b/JavaScriptCore/jit/JITOpcodes.cpp index d783581..66285ae 100644 --- a/JavaScriptCore/jit/JITOpcodes.cpp +++ b/JavaScriptCore/jit/JITOpcodes.cpp @@ -46,10 +46,6 @@ namespace JSC { void JIT::privateCompileCTIMachineTrampolines(RefPtr* executablePool, JSGlobalData* globalData, TrampolineStructure *trampolines) { -#if ENABLE(JIT_USE_SOFT_MODULO) - Label softModBegin = align(); - softModulo(); -#endif #if ENABLE(JIT_OPTIMIZE_PROPERTY_ACCESS) // (2) The second function provides fast property access for string length Label stringLengthBegin = align(); @@ -185,9 +181,6 @@ void JIT::privateCompileCTIMachineTrampolines(RefPtr* executable trampolines->ctiVirtualConstruct = patchBuffer.trampolineAt(virtualConstructBegin); trampolines->ctiNativeCall = patchBuffer.trampolineAt(nativeCallThunk); trampolines->ctiNativeConstruct = patchBuffer.trampolineAt(nativeConstructThunk); -#if ENABLE(JIT_USE_SOFT_MODULO) - trampolines->ctiSoftModulo = patchBuffer.trampolineAt(softModBegin); -#endif #if ENABLE(JIT_OPTIMIZE_PROPERTY_ACCESS) trampolines->ctiStringLengthTrampoline = patchBuffer.trampolineAt(stringLengthBegin); #endif @@ -1777,81 +1770,6 @@ void JIT::emit_op_new_func(Instruction* currentInstruction) lazyJump.link(this); } -// For both JSValue32_64 and JSValue32 -#if ENABLE(JIT_USE_SOFT_MODULO) -#if CPU(ARM_TRADITIONAL) -void JIT::softModulo() -{ - push(regS0); - push(regS1); - push(regT1); - push(regT3); -#if USE(JSVALUE32_64) - m_assembler.mov_r(regT3, regT2); - m_assembler.mov_r(regT2, regT0); -#else - m_assembler.mov_r(regT3, m_assembler.asr(regT2, 1)); - m_assembler.mov_r(regT2, m_assembler.asr(regT0, 1)); -#endif - m_assembler.mov_r(regT1, ARMAssembler::getOp2(0)); - - m_assembler.teq_r(regT3, ARMAssembler::getOp2(0)); - m_assembler.rsb_r(regT3, regT3, ARMAssembler::getOp2(0), ARMAssembler::MI); - m_assembler.eor_r(regT1, regT1, ARMAssembler::getOp2(1), ARMAssembler::MI); - - m_assembler.teq_r(regT2, ARMAssembler::getOp2(0)); - m_assembler.rsb_r(regT2, regT2, ARMAssembler::getOp2(0), ARMAssembler::MI); - m_assembler.eor_r(regT1, regT1, ARMAssembler::getOp2(2), ARMAssembler::MI); - - Jump exitBranch = branch32(LessThan, regT2, regT3); - - m_assembler.sub_r(regS1, regT3, ARMAssembler::getOp2(1)); - m_assembler.tst_r(regS1, regT3); - m_assembler.and_r(regT2, regT2, regS1, ARMAssembler::EQ); - m_assembler.and_r(regT0, regS1, regT3); - Jump exitBranch2 = branchTest32(Zero, regT0); - - m_assembler.clz_r(regS1, regT2); - m_assembler.clz_r(regS0, regT3); - m_assembler.sub_r(regS0, regS0, regS1); - - m_assembler.rsbs_r(regS0, regS0, ARMAssembler::getOp2(31)); - - m_assembler.mov_r(regS0, m_assembler.lsl(regS0, 1), ARMAssembler::NE); - - m_assembler.add_r(ARMRegisters::pc, ARMRegisters::pc, m_assembler.lsl(regS0, 2), ARMAssembler::NE); - m_assembler.mov_r(regT0, regT0); - - for (int i = 31; i > 0; --i) { - m_assembler.cmp_r(regT2, m_assembler.lsl(regT3, i)); - m_assembler.sub_r(regT2, regT2, m_assembler.lsl(regT3, i), ARMAssembler::CS); - } - - m_assembler.cmp_r(regT2, regT3); - m_assembler.sub_r(regT2, regT2, regT3, ARMAssembler::CS); - - exitBranch.link(this); - exitBranch2.link(this); - - m_assembler.teq_r(regT1, ARMAssembler::getOp2(0)); - m_assembler.rsb_r(regT2, regT2, ARMAssembler::getOp2(0), ARMAssembler::GT); - -#if USE(JSVALUE32_64) - m_assembler.mov_r(regT0, regT2); -#else - m_assembler.mov_r(regT0, m_assembler.lsl(regT2, 1)); - m_assembler.eor_r(regT0, regT0, ARMAssembler::getOp2(1)); -#endif - pop(regT3); - pop(regT1); - pop(regS1); - pop(regS0); - ret(); -} -#else -#error "JIT_OPTIMIZE_MOD not yet supported on this platform." -#endif // CPU(ARM_TRADITIONAL) -#endif } // namespace JSC #endif // ENABLE(JIT) diff --git a/JavaScriptCore/jit/JITOpcodes32_64.cpp b/JavaScriptCore/jit/JITOpcodes32_64.cpp index 076649d..a2bb159 100644 --- a/JavaScriptCore/jit/JITOpcodes32_64.cpp +++ b/JavaScriptCore/jit/JITOpcodes32_64.cpp @@ -1740,6 +1740,96 @@ void JIT::emitSlow_op_get_argument_by_val(Instruction* currentInstruction, Vecto stubCall.call(dst); } +#if ENABLE(JIT_USE_SOFT_MODULO) +void JIT::softModulo() +{ + push(regT1); + push(regT3); + move(regT2, regT3); + move(regT0, regT2); + move(Imm32(0), regT1); + + // Check for negative result reminder + Jump positiveRegT3 = branch32(GreaterThanOrEqual, regT3, Imm32(0)); + neg32(regT3); + xor32(Imm32(1), regT1); + positiveRegT3.link(this); + + Jump positiveRegT2 = branch32(GreaterThanOrEqual, regT2, Imm32(0)); + neg32(regT2); + xor32(Imm32(2), regT1); + positiveRegT2.link(this); + + // Save the condition for negative reminder + push(regT1); + + Jump exitBranch = branch32(LessThan, regT2, regT3); + + // Power of two fast case + move(regT3, regT0); + sub32(Imm32(1), regT0); + Jump powerOfTwo = branchTest32(NotEqual, regT0, regT3); + and32(regT0, regT2); + powerOfTwo.link(this); + + and32(regT3, regT0); + + Jump exitBranch2 = branchTest32(Zero, regT0); + + countLeadingZeros32(regT2, regT0); + countLeadingZeros32(regT3, regT1); + sub32(regT0, regT1); + + Jump useFullTable = branch32(Equal, regT1, Imm32(31)); + + neg32(regT1); + add32(Imm32(31), regT1); + + int elementSizeByShift = -1; +#if CPU(ARM) + elementSizeByShift = 3; +#else +#error "JIT_OPTIMIZE_MOD not yet supported on this platform." +#endif + relativeTableJump(regT1, elementSizeByShift); + + useFullTable.link(this); + // Modulo table + for (int i = 31; i > 0; --i) { +#if CPU(ARM_TRADITIONAL) + m_assembler.cmp_r(regT2, m_assembler.lsl(regT3, i)); + m_assembler.sub_r(regT2, regT2, m_assembler.lsl(regT3, i), ARMAssembler::CS); +#elif CPU(ARM_THUMB2) + ShiftTypeAndAmount shift(SRType_LSL, i); + m_assembler.sub_S(regT1, regT2, regT3, shift); + m_assembler.it(ARMv7Assembler::ConditionCS); + m_assembler.mov(regT2, regT1); +#else +#error "JIT_OPTIMIZE_MOD not yet supported on this platform." +#endif + } + + Jump lower = branch32(Below, regT2, regT3); + sub32(regT3, regT2); + lower.link(this); + + exitBranch.link(this); + exitBranch2.link(this); + + // Check for negative reminder + pop(regT1); + Jump positiveResult = branch32(Equal, regT1, Imm32(0)); + neg32(regT2); + positiveResult.link(this); + + move(regT2, regT0); + + pop(regT3); + pop(regT1); + ret(); +} +#endif // ENABLE(JIT_USE_SOFT_MODULO) + } // namespace JSC #endif // USE(JSVALUE32_64) diff --git a/JavaScriptCore/jit/JITStubs.cpp b/JavaScriptCore/jit/JITStubs.cpp index 36d36a2..097d55b 100644 --- a/JavaScriptCore/jit/JITStubs.cpp +++ b/JavaScriptCore/jit/JITStubs.cpp @@ -801,7 +801,6 @@ JITThunks::JITThunks(JSGlobalData* globalData) ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, registerFile) == REGISTER_FILE_OFFSET); ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, callFrame) == CALLFRAME_OFFSET); - ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, exception) == EXCEPTION_OFFSET); // The fifth argument is the first item already on the stack. ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, enabledProfilerReference) == ENABLE_PROFILER_REFERENCE_OFFSET); @@ -1067,13 +1066,13 @@ struct ExceptionHandler { void* catchRoutine; CallFrame* callFrame; }; -static ExceptionHandler jitThrow(JSGlobalData* globalData, CallFrame* callFrame, JSValue exceptionValue, ReturnAddressPtr faultLocation, bool explicitThrow) +static ExceptionHandler jitThrow(JSGlobalData* globalData, CallFrame* callFrame, JSValue exceptionValue, ReturnAddressPtr faultLocation) { ASSERT(exceptionValue); - unsigned vPCIndex = callFrame->codeBlock()->bytecodeOffset(callFrame, faultLocation); + unsigned vPCIndex = callFrame->codeBlock()->bytecodeOffset(faultLocation); globalData->exception = JSValue(); - HandlerInfo* handler = globalData->interpreter->throwException(callFrame, exceptionValue, vPCIndex, explicitThrow); // This may update callFrame & exceptionValue! + HandlerInfo* handler = globalData->interpreter->throwException(callFrame, exceptionValue, vPCIndex); // This may update callFrame & exceptionValue! globalData->exception = exceptionValue; void* catchRoutine = handler ? handler->nativeCode.executableAddress() : FunctionPtr(ctiOpThrowNotCaught).value(); @@ -1384,7 +1383,7 @@ DEFINE_STUB_FUNCTION(void*, register_file_check) // Rewind to the previous call frame because op_call already optimistically // moved the call frame forward. CallFrame* oldCallFrame = callFrame->callerFrame(); - ExceptionHandler handler = jitThrow(stackFrame.globalData, oldCallFrame, createStackOverflowError(oldCallFrame), ReturnAddressPtr(oldCallFrame->returnPC()), false); + ExceptionHandler handler = jitThrow(stackFrame.globalData, oldCallFrame, createStackOverflowError(oldCallFrame), ReturnAddressPtr(oldCallFrame->returnPC())); STUB_SET_RETURN_ADDRESS(handler.catchRoutine); callFrame = handler.callFrame; } @@ -1937,7 +1936,7 @@ DEFINE_STUB_FUNCTION(JSObject*, op_new_func) { STUB_INIT_STACK_FRAME(stackFrame); - ASSERT(stackFrame.callFrame->codeBlock()->codeType() != FunctionCode || !stackFrame.callFrame->codeBlock()->needsFullScopeChain() || stackFrame.callFrame->r(stackFrame.callFrame->codeBlock()->activationRegister()).jsValue()); + ASSERT(stackFrame.callFrame->codeBlock()->codeType() != FunctionCode || !stackFrame.callFrame->codeBlock()->needsFullScopeChain() || stackFrame.callFrame->uncheckedR(stackFrame.callFrame->codeBlock()->activationRegister()).jsValue()); return stackFrame.args[0].function()->make(stackFrame.callFrame, stackFrame.callFrame->scopeChain()); } @@ -2006,7 +2005,7 @@ DEFINE_STUB_FUNCTION(void*, op_call_arityCheck) if (!stackFrame.registerFile->grow(newEnd)) { // Rewind to the previous call frame because op_call already optimistically // moved the call frame forward. - ExceptionHandler handler = jitThrow(stackFrame.globalData, oldCallFrame, createStackOverflowError(oldCallFrame), pc, false); + ExceptionHandler handler = jitThrow(stackFrame.globalData, oldCallFrame, createStackOverflowError(oldCallFrame), pc); STUB_SET_RETURN_ADDRESS(handler.catchRoutine); return handler.callFrame; } @@ -2021,7 +2020,7 @@ DEFINE_STUB_FUNCTION(void*, op_call_arityCheck) if (!stackFrame.registerFile->grow(newEnd)) { // Rewind to the previous call frame because op_call already optimistically // moved the call frame forward. - ExceptionHandler handler = jitThrow(stackFrame.globalData, oldCallFrame, createStackOverflowError(oldCallFrame), pc, false); + ExceptionHandler handler = jitThrow(stackFrame.globalData, oldCallFrame, createStackOverflowError(oldCallFrame), pc); STUB_SET_RETURN_ADDRESS(handler.catchRoutine); return handler.callFrame; } @@ -2065,7 +2064,7 @@ DEFINE_STUB_FUNCTION(void*, op_construct_arityCheck) if (!stackFrame.registerFile->grow(newEnd)) { // Rewind to the previous call frame because op_call already optimistically // moved the call frame forward. - ExceptionHandler handler = jitThrow(stackFrame.globalData, oldCallFrame, createStackOverflowError(oldCallFrame), pc, false); + ExceptionHandler handler = jitThrow(stackFrame.globalData, oldCallFrame, createStackOverflowError(oldCallFrame), pc); STUB_SET_RETURN_ADDRESS(handler.catchRoutine); return handler.callFrame; } @@ -2080,7 +2079,7 @@ DEFINE_STUB_FUNCTION(void*, op_construct_arityCheck) if (!stackFrame.registerFile->grow(newEnd)) { // Rewind to the previous call frame because op_call already optimistically // moved the call frame forward. - ExceptionHandler handler = jitThrow(stackFrame.globalData, oldCallFrame, createStackOverflowError(oldCallFrame), pc, false); + ExceptionHandler handler = jitThrow(stackFrame.globalData, oldCallFrame, createStackOverflowError(oldCallFrame), pc); STUB_SET_RETURN_ADDRESS(handler.catchRoutine); return handler.callFrame; } @@ -2741,7 +2740,7 @@ DEFINE_STUB_FUNCTION(EncodedJSValue, op_resolve_skip) bool checkTopLevel = codeBlock->codeType() == FunctionCode && codeBlock->needsFullScopeChain(); ASSERT(skip || !checkTopLevel); if (checkTopLevel && skip--) { - if (callFrame->r(codeBlock->activationRegister()).jsValue()) + if (callFrame->uncheckedR(codeBlock->activationRegister()).jsValue()) ++iter; } while (skip--) { @@ -3103,7 +3102,7 @@ DEFINE_STUB_FUNCTION(JSObject*, op_new_func_exp) FunctionExecutable* function = stackFrame.args[0].function(); JSFunction* func = function->make(callFrame, callFrame->scopeChain()); - ASSERT(callFrame->codeBlock()->codeType() != FunctionCode || !callFrame->codeBlock()->needsFullScopeChain() || callFrame->r(callFrame->codeBlock()->activationRegister()).jsValue()); + ASSERT(callFrame->codeBlock()->codeType() != FunctionCode || !callFrame->codeBlock()->needsFullScopeChain() || callFrame->uncheckedR(callFrame->codeBlock()->activationRegister()).jsValue()); /* The Identifier in a FunctionExpression can be referenced from inside @@ -3210,7 +3209,7 @@ DEFINE_STUB_FUNCTION(EncodedJSValue, op_bitor) DEFINE_STUB_FUNCTION(EncodedJSValue, op_call_eval) { STUB_INIT_STACK_FRAME(stackFrame); - ASSERT(stackFrame.callFrame->codeBlock()->codeType() != FunctionCode || !stackFrame.callFrame->codeBlock()->needsFullScopeChain() || stackFrame.callFrame->r(stackFrame.callFrame->codeBlock()->activationRegister()).jsValue()); + ASSERT(stackFrame.callFrame->codeBlock()->codeType() != FunctionCode || !stackFrame.callFrame->codeBlock()->needsFullScopeChain() || stackFrame.callFrame->uncheckedR(stackFrame.callFrame->codeBlock()->activationRegister()).jsValue()); CallFrame* callFrame = stackFrame.callFrame; RegisterFile* registerFile = stackFrame.registerFile; @@ -3238,7 +3237,7 @@ DEFINE_STUB_FUNCTION(EncodedJSValue, op_call_eval) DEFINE_STUB_FUNCTION(void*, op_throw) { STUB_INIT_STACK_FRAME(stackFrame); - ExceptionHandler handler = jitThrow(stackFrame.globalData, stackFrame.callFrame, stackFrame.args[0].jsValue(), STUB_RETURN_ADDRESS, true); + ExceptionHandler handler = jitThrow(stackFrame.globalData, stackFrame.callFrame, stackFrame.args[0].jsValue(), STUB_RETURN_ADDRESS); STUB_SET_RETURN_ADDRESS(handler.catchRoutine); return handler.callFrame; } @@ -3595,7 +3594,7 @@ DEFINE_STUB_FUNCTION(void*, vm_throw) { STUB_INIT_STACK_FRAME(stackFrame); JSGlobalData* globalData = stackFrame.globalData; - ExceptionHandler handler = jitThrow(globalData, stackFrame.callFrame, globalData->exception, globalData->exceptionLocation, false); + ExceptionHandler handler = jitThrow(globalData, stackFrame.callFrame, globalData->exception, globalData->exceptionLocation); STUB_SET_RETURN_ADDRESS(handler.catchRoutine); return handler.callFrame; } diff --git a/JavaScriptCore/jsc.cpp b/JavaScriptCore/jsc.cpp index 00581e5..5439bad 100644 --- a/JavaScriptCore/jsc.cpp +++ b/JavaScriptCore/jsc.cpp @@ -208,14 +208,14 @@ EncodedJSValue JSC_HOST_CALL functionVersion(ExecState*) EncodedJSValue JSC_HOST_CALL functionRun(ExecState* exec) { - StopWatch stopWatch; UString fileName = exec->argument(0).toString(exec); Vector script; if (!fillBufferWithContentsOfFile(fileName, script)) return JSValue::encode(throwError(exec, createError(exec, "Could not open file."))); - JSGlobalObject* globalObject = exec->lexicalGlobalObject(); + GlobalObject* globalObject = new (&exec->globalData()) GlobalObject(Vector()); + StopWatch stopWatch; stopWatch.start(); evaluate(globalObject->globalExec(), globalObject->globalScopeChain(), makeSource(script.data(), fileName)); stopWatch.stop(); @@ -245,10 +245,15 @@ EncodedJSValue JSC_HOST_CALL functionCheckSyntax(ExecState* exec) return JSValue::encode(throwError(exec, createError(exec, "Could not open file."))); JSGlobalObject* globalObject = exec->lexicalGlobalObject(); + + StopWatch stopWatch; + stopWatch.start(); Completion result = checkSyntax(globalObject->globalExec(), makeSource(script.data(), fileName)); + stopWatch.stop(); + if (result.complType() == Throw) throwError(exec, result.value()); - return JSValue::encode(result.value()); + return JSValue::encode(jsNumber(stopWatch.getElapsedMS())); } #if ENABLE(SAMPLING_FLAGS) diff --git a/JavaScriptCore/jscore.bkl b/JavaScriptCore/jscore.bkl deleted file mode 100644 index e69de29..0000000 diff --git a/JavaScriptCore/profiler/CallIdentifier.h b/JavaScriptCore/profiler/CallIdentifier.h index 5487209..76c1470 100644 --- a/JavaScriptCore/profiler/CallIdentifier.h +++ b/JavaScriptCore/profiler/CallIdentifier.h @@ -62,7 +62,7 @@ namespace JSC { key.m_url.impl()->hash(), key.m_lineNumber }; - return StringImpl::computeHash(reinterpret_cast(hashCodes), sizeof(hashCodes)); + return WTF::StringHasher::createBlobHash(hashCodes); } static bool equal(const CallIdentifier& a, const CallIdentifier& b) { return a == b; } diff --git a/JavaScriptCore/profiler/Profile.cpp b/JavaScriptCore/profiler/Profile.cpp index bc239b3..1a84518 100644 --- a/JavaScriptCore/profiler/Profile.cpp +++ b/JavaScriptCore/profiler/Profile.cpp @@ -42,7 +42,7 @@ Profile::Profile(const UString& title, unsigned uid) { // FIXME: When multi-threading is supported this will be a vector and calls // into the profiler will need to know which thread it is executing on. - m_head = ProfileNode::create(CallIdentifier("Thread_1", UString(), 0), 0, 0); + m_head = ProfileNode::create(0, CallIdentifier("Thread_1", UString(), 0), 0, 0); } Profile::~Profile() diff --git a/JavaScriptCore/profiler/ProfileGenerator.cpp b/JavaScriptCore/profiler/ProfileGenerator.cpp index 1d916ea..68d1733 100644 --- a/JavaScriptCore/profiler/ProfileGenerator.cpp +++ b/JavaScriptCore/profiler/ProfileGenerator.cpp @@ -63,7 +63,7 @@ void ProfileGenerator::addParentForConsoleStart(ExecState* exec) JSValue function; exec->interpreter()->retrieveLastCaller(exec, lineNumber, sourceID, sourceURL, function); - m_currentNode = ProfileNode::create(Profiler::createCallIdentifier(exec, function ? function.toThisObject(exec) : 0, sourceURL, lineNumber), m_head.get(), m_head.get()); + m_currentNode = ProfileNode::create(exec, Profiler::createCallIdentifier(exec, function ? function.toThisObject(exec) : 0, sourceURL, lineNumber), m_head.get(), m_head.get()); m_head->insertNode(m_currentNode.get()); } @@ -72,7 +72,7 @@ const UString& ProfileGenerator::title() const return m_profile->title(); } -void ProfileGenerator::willExecute(const CallIdentifier& callIdentifier) +void ProfileGenerator::willExecute(ExecState* callerCallFrame, const CallIdentifier& callIdentifier) { if (JAVASCRIPTCORE_PROFILE_WILL_EXECUTE_ENABLED()) { CString name = callIdentifier.m_name.utf8(); @@ -83,11 +83,11 @@ void ProfileGenerator::willExecute(const CallIdentifier& callIdentifier) if (!m_originatingGlobalExec) return; - ASSERT_ARG(m_currentNode, m_currentNode); - m_currentNode = m_currentNode->willExecute(callIdentifier); + ASSERT(m_currentNode); + m_currentNode = m_currentNode->willExecute(callerCallFrame, callIdentifier); } -void ProfileGenerator::didExecute(const CallIdentifier& callIdentifier) +void ProfileGenerator::didExecute(ExecState* callerCallFrame, const CallIdentifier& callIdentifier) { if (JAVASCRIPTCORE_PROFILE_DID_EXECUTE_ENABLED()) { CString name = callIdentifier.m_name.utf8(); @@ -98,9 +98,9 @@ void ProfileGenerator::didExecute(const CallIdentifier& callIdentifier) if (!m_originatingGlobalExec) return; - ASSERT_ARG(m_currentNode, m_currentNode); + ASSERT(m_currentNode); if (m_currentNode->callIdentifier() != callIdentifier) { - RefPtr returningNode = ProfileNode::create(callIdentifier, m_head.get(), m_currentNode.get()); + RefPtr returningNode = ProfileNode::create(callerCallFrame, callIdentifier, m_head.get(), m_currentNode.get()); returningNode->setStartTime(m_currentNode->startTime()); returningNode->didExecute(); m_currentNode->insertNode(returningNode.release()); @@ -110,6 +110,17 @@ void ProfileGenerator::didExecute(const CallIdentifier& callIdentifier) m_currentNode = m_currentNode->didExecute(); } +void ProfileGenerator::exceptionUnwind(ExecState* handlerCallFrame, const CallIdentifier&) +{ + // If the current node was called by the handler (==) or any + // more nested function (>) the we have exited early from it. + ASSERT(m_currentNode); + while (m_currentNode->callerCallFrame() >= handlerCallFrame) { + didExecute(m_currentNode->callerCallFrame(), m_currentNode->callIdentifier()); + ASSERT(m_currentNode); + } +} + void ProfileGenerator::stopProfiling() { m_profile->forEach(&ProfileNode::stopProfiling); @@ -117,14 +128,14 @@ void ProfileGenerator::stopProfiling() removeProfileStart(); removeProfileEnd(); - ASSERT_ARG(m_currentNode, m_currentNode); + ASSERT(m_currentNode); // Set the current node to the parent, because we are in a call that // will not get didExecute call. m_currentNode = m_currentNode->parent(); if (double headSelfTime = m_head->selfTime()) { - RefPtr idleNode = ProfileNode::create(CallIdentifier(NonJSExecution, UString(), 0), m_head.get(), m_head.get()); + RefPtr idleNode = ProfileNode::create(0, CallIdentifier(NonJSExecution, UString(), 0), m_head.get(), m_head.get()); idleNode->setTotalTime(headSelfTime); idleNode->setSelfTime(headSelfTime); diff --git a/JavaScriptCore/profiler/ProfileGenerator.h b/JavaScriptCore/profiler/ProfileGenerator.h index 82149b3..cbed73b 100644 --- a/JavaScriptCore/profiler/ProfileGenerator.h +++ b/JavaScriptCore/profiler/ProfileGenerator.h @@ -50,13 +50,15 @@ namespace JSC { unsigned profileGroup() const { return m_profileGroup; } // Collecting - void willExecute(const CallIdentifier&); - void didExecute(const CallIdentifier&); + void willExecute(ExecState* callerCallFrame, const CallIdentifier&); + void didExecute(ExecState* callerCallFrame, const CallIdentifier&); + + void exceptionUnwind(ExecState* handlerCallFrame, const CallIdentifier&); // Stopping Profiling void stopProfiling(); - typedef void (ProfileGenerator::*ProfileFunction)(const CallIdentifier& callIdentifier); + typedef void (ProfileGenerator::*ProfileFunction)(ExecState* callerOrHandlerCallFrame, const CallIdentifier& callIdentifier); private: ProfileGenerator(const UString& title, ExecState* originatingExec, unsigned uid); diff --git a/JavaScriptCore/profiler/ProfileNode.cpp b/JavaScriptCore/profiler/ProfileNode.cpp index bfcfcbe..8f20bbe 100644 --- a/JavaScriptCore/profiler/ProfileNode.cpp +++ b/JavaScriptCore/profiler/ProfileNode.cpp @@ -56,8 +56,9 @@ static double getCount() #endif } -ProfileNode::ProfileNode(const CallIdentifier& callIdentifier, ProfileNode* headNode, ProfileNode* parentNode) - : m_callIdentifier(callIdentifier) +ProfileNode::ProfileNode(ExecState* callerCallFrame, const CallIdentifier& callIdentifier, ProfileNode* headNode, ProfileNode* parentNode) + : m_callerCallFrame(callerCallFrame) + , m_callIdentifier(callIdentifier) , m_head(headNode) , m_parent(parentNode) , m_nextSibling(0) @@ -72,8 +73,9 @@ ProfileNode::ProfileNode(const CallIdentifier& callIdentifier, ProfileNode* head startTimer(); } -ProfileNode::ProfileNode(ProfileNode* headNode, ProfileNode* nodeToCopy) - : m_callIdentifier(nodeToCopy->callIdentifier()) +ProfileNode::ProfileNode(ExecState* callerCallFrame, ProfileNode* headNode, ProfileNode* nodeToCopy) + : m_callerCallFrame(callerCallFrame) + , m_callIdentifier(nodeToCopy->callIdentifier()) , m_head(headNode) , m_parent(nodeToCopy->parent()) , m_nextSibling(0) @@ -87,7 +89,7 @@ ProfileNode::ProfileNode(ProfileNode* headNode, ProfileNode* nodeToCopy) { } -ProfileNode* ProfileNode::willExecute(const CallIdentifier& callIdentifier) +ProfileNode* ProfileNode::willExecute(ExecState* callerCallFrame, const CallIdentifier& callIdentifier) { for (StackIterator currentChild = m_children.begin(); currentChild != m_children.end(); ++currentChild) { if ((*currentChild)->callIdentifier() == callIdentifier) { @@ -96,7 +98,7 @@ ProfileNode* ProfileNode::willExecute(const CallIdentifier& callIdentifier) } } - RefPtr newChild = ProfileNode::create(callIdentifier, m_head ? m_head : this, this); // If this ProfileNode has no head it is the head. + RefPtr newChild = ProfileNode::create(callerCallFrame, callIdentifier, m_head ? m_head : this, this); // If this ProfileNode has no head it is the head. if (m_children.size()) m_children.last()->setNextSibling(newChild.get()); m_children.append(newChild.release()); diff --git a/JavaScriptCore/profiler/ProfileNode.h b/JavaScriptCore/profiler/ProfileNode.h index eafeea6..ffe7b6f 100644 --- a/JavaScriptCore/profiler/ProfileNode.h +++ b/JavaScriptCore/profiler/ProfileNode.h @@ -37,6 +37,7 @@ namespace JSC { + class ExecState; class ProfileNode; typedef Vector >::const_iterator StackIterator; @@ -44,23 +45,24 @@ namespace JSC { class ProfileNode : public RefCounted { public: - static PassRefPtr create(const CallIdentifier& callIdentifier, ProfileNode* headNode, ProfileNode* parentNode) + static PassRefPtr create(ExecState* callerCallFrame, const CallIdentifier& callIdentifier, ProfileNode* headNode, ProfileNode* parentNode) { - return adoptRef(new ProfileNode(callIdentifier, headNode, parentNode)); + return adoptRef(new ProfileNode(callerCallFrame, callIdentifier, headNode, parentNode)); } - static PassRefPtr create(ProfileNode* headNode, ProfileNode* node) + static PassRefPtr create(ExecState* callerCallFrame, ProfileNode* headNode, ProfileNode* node) { - return adoptRef(new ProfileNode(headNode, node)); + return adoptRef(new ProfileNode(callerCallFrame, headNode, node)); } bool operator==(ProfileNode* node) { return m_callIdentifier == node->callIdentifier(); } - ProfileNode* willExecute(const CallIdentifier&); + ProfileNode* willExecute(ExecState* callerCallFrame, const CallIdentifier&); ProfileNode* didExecute(); void stopProfiling(); // CallIdentifier members + ExecState* callerCallFrame() const { return m_callerCallFrame; } const CallIdentifier& callIdentifier() const { return m_callIdentifier; } const UString& functionName() const { return m_callIdentifier.m_name; } const UString& url() const { return m_callIdentifier.m_url; } @@ -128,8 +130,8 @@ namespace JSC { #endif private: - ProfileNode(const CallIdentifier&, ProfileNode* headNode, ProfileNode* parentNode); - ProfileNode(ProfileNode* headNode, ProfileNode* nodeToCopy); + ProfileNode(ExecState* callerCallFrame, const CallIdentifier&, ProfileNode* headNode, ProfileNode* parentNode); + ProfileNode(ExecState* callerCallFrame, ProfileNode* headNode, ProfileNode* nodeToCopy); void startTimer(); void resetChildrensSiblings(); @@ -147,6 +149,7 @@ namespace JSC { static inline bool functionNameDescendingComparator(const RefPtr& a, const RefPtr& b) { return a->functionName() > b->functionName(); } static inline bool functionNameAscendingComparator(const RefPtr& a, const RefPtr& b) { return a->functionName() < b->functionName(); } + ExecState* m_callerCallFrame; CallIdentifier m_callIdentifier; ProfileNode* m_head; ProfileNode* m_parent; diff --git a/JavaScriptCore/profiler/Profiler.cpp b/JavaScriptCore/profiler/Profiler.cpp index 78fe2f5..9ac73fd 100644 --- a/JavaScriptCore/profiler/Profiler.cpp +++ b/JavaScriptCore/profiler/Profiler.cpp @@ -99,42 +99,49 @@ PassRefPtr Profiler::stopProfiling(ExecState* exec, const UString& titl return 0; } -static inline void dispatchFunctionToProfiles(const Vector >& profiles, ProfileGenerator::ProfileFunction function, const CallIdentifier& callIdentifier, unsigned currentProfileTargetGroup) +static inline void dispatchFunctionToProfiles(ExecState* callerOrHandlerCallFrame, const Vector >& profiles, ProfileGenerator::ProfileFunction function, const CallIdentifier& callIdentifier, unsigned currentProfileTargetGroup) { for (size_t i = 0; i < profiles.size(); ++i) { if (profiles[i]->profileGroup() == currentProfileTargetGroup || !profiles[i]->originatingGlobalExec()) - (profiles[i].get()->*function)(callIdentifier); + (profiles[i].get()->*function)(callerOrHandlerCallFrame, callIdentifier); } } -void Profiler::willExecute(ExecState* exec, JSValue function) +void Profiler::willExecute(ExecState* callerCallFrame, JSValue function) { ASSERT(!m_currentProfiles.isEmpty()); - dispatchFunctionToProfiles(m_currentProfiles, &ProfileGenerator::willExecute, createCallIdentifier(exec, function, "", 0), exec->lexicalGlobalObject()->profileGroup()); + dispatchFunctionToProfiles(callerCallFrame, m_currentProfiles, &ProfileGenerator::willExecute, createCallIdentifier(callerCallFrame, function, "", 0), callerCallFrame->lexicalGlobalObject()->profileGroup()); } -void Profiler::willExecute(ExecState* exec, const UString& sourceURL, int startingLineNumber) +void Profiler::willExecute(ExecState* callerCallFrame, const UString& sourceURL, int startingLineNumber) { ASSERT(!m_currentProfiles.isEmpty()); - CallIdentifier callIdentifier = createCallIdentifier(exec, JSValue(), sourceURL, startingLineNumber); + CallIdentifier callIdentifier = createCallIdentifier(callerCallFrame, JSValue(), sourceURL, startingLineNumber); - dispatchFunctionToProfiles(m_currentProfiles, &ProfileGenerator::willExecute, callIdentifier, exec->lexicalGlobalObject()->profileGroup()); + dispatchFunctionToProfiles(callerCallFrame, m_currentProfiles, &ProfileGenerator::willExecute, callIdentifier, callerCallFrame->lexicalGlobalObject()->profileGroup()); } -void Profiler::didExecute(ExecState* exec, JSValue function) +void Profiler::didExecute(ExecState* callerCallFrame, JSValue function) { ASSERT(!m_currentProfiles.isEmpty()); - dispatchFunctionToProfiles(m_currentProfiles, &ProfileGenerator::didExecute, createCallIdentifier(exec, function, "", 0), exec->lexicalGlobalObject()->profileGroup()); + dispatchFunctionToProfiles(callerCallFrame, m_currentProfiles, &ProfileGenerator::didExecute, createCallIdentifier(callerCallFrame, function, "", 0), callerCallFrame->lexicalGlobalObject()->profileGroup()); } -void Profiler::didExecute(ExecState* exec, const UString& sourceURL, int startingLineNumber) +void Profiler::didExecute(ExecState* callerCallFrame, const UString& sourceURL, int startingLineNumber) { ASSERT(!m_currentProfiles.isEmpty()); - dispatchFunctionToProfiles(m_currentProfiles, &ProfileGenerator::didExecute, createCallIdentifier(exec, JSValue(), sourceURL, startingLineNumber), exec->lexicalGlobalObject()->profileGroup()); + dispatchFunctionToProfiles(callerCallFrame, m_currentProfiles, &ProfileGenerator::didExecute, createCallIdentifier(callerCallFrame, JSValue(), sourceURL, startingLineNumber), callerCallFrame->lexicalGlobalObject()->profileGroup()); +} + +void Profiler::exceptionUnwind(ExecState* handlerCallFrame) +{ + ASSERT(!m_currentProfiles.isEmpty()); + + dispatchFunctionToProfiles(handlerCallFrame, m_currentProfiles, &ProfileGenerator::exceptionUnwind, createCallIdentifier(handlerCallFrame, JSValue(), "", 0), handlerCallFrame->lexicalGlobalObject()->profileGroup()); } CallIdentifier Profiler::createCallIdentifier(ExecState* exec, JSValue functionValue, const UString& defaultSourceURL, int defaultLineNumber) diff --git a/JavaScriptCore/profiler/Profiler.h b/JavaScriptCore/profiler/Profiler.h index 4b8b4a0..f9c2ccb 100644 --- a/JavaScriptCore/profiler/Profiler.h +++ b/JavaScriptCore/profiler/Profiler.h @@ -57,10 +57,12 @@ namespace JSC { void startProfiling(ExecState*, const UString& title); PassRefPtr stopProfiling(ExecState*, const UString& title); - void willExecute(ExecState*, JSValue function); - void willExecute(ExecState*, const UString& sourceURL, int startingLineNumber); - void didExecute(ExecState*, JSValue function); - void didExecute(ExecState*, const UString& sourceURL, int startingLineNumber); + void willExecute(ExecState* callerCallFrame, JSValue function); + void willExecute(ExecState* callerCallFrame, const UString& sourceURL, int startingLineNumber); + void didExecute(ExecState* callerCallFrame, JSValue function); + void didExecute(ExecState* callerCallFrame, const UString& sourceURL, int startingLineNumber); + + void exceptionUnwind(ExecState* handlerCallFrame); const Vector >& currentProfiles() { return m_currentProfiles; }; diff --git a/JavaScriptCore/runtime/Collector.cpp b/JavaScriptCore/runtime/Collector.cpp index f341646..3fbd278 100644 --- a/JavaScriptCore/runtime/Collector.cpp +++ b/JavaScriptCore/runtime/Collector.cpp @@ -1051,8 +1051,6 @@ void Heap::markRoots() MarkedArgumentBuffer::markLists(markStack, *m_markListSet); if (m_globalData->exception) markStack.append(m_globalData->exception); - if (m_globalData->functionCodeBlockBeingReparsed) - m_globalData->functionCodeBlockBeingReparsed->markAggregate(markStack); if (m_globalData->firstStringifierToMark) JSONObject::markStringifiers(markStack, m_globalData->firstStringifierToMark); diff --git a/JavaScriptCore/runtime/Executable.cpp b/JavaScriptCore/runtime/Executable.cpp index 2ad4b2d..f229f96 100644 --- a/JavaScriptCore/runtime/Executable.cpp +++ b/JavaScriptCore/runtime/Executable.cpp @@ -108,7 +108,7 @@ JSObject* EvalExecutable::compileInternal(ExecState* exec, ScopeChainNode* scope ASSERT(!m_evalCodeBlock); m_evalCodeBlock = adoptPtr(new EvalCodeBlock(this, globalObject, source().provider(), scopeChain.localDepth())); - OwnPtr generator(adoptPtr(new BytecodeGenerator(evalNode.get(), globalObject->debugger(), scopeChain, m_evalCodeBlock->symbolTable(), m_evalCodeBlock.get()))); + OwnPtr generator(adoptPtr(new BytecodeGenerator(evalNode.get(), scopeChain, m_evalCodeBlock->symbolTable(), m_evalCodeBlock.get()))); generator->generate(); evalNode->destroyData(); @@ -156,7 +156,7 @@ JSObject* ProgramExecutable::compileInternal(ExecState* exec, ScopeChainNode* sc JSGlobalObject* globalObject = scopeChain.globalObject(); m_programCodeBlock = adoptPtr(new ProgramCodeBlock(this, GlobalCode, globalObject, source().provider())); - OwnPtr generator(adoptPtr(new BytecodeGenerator(programNode.get(), globalObject->debugger(), scopeChain, &globalObject->symbolTable(), m_programCodeBlock.get()))); + OwnPtr generator(adoptPtr(new BytecodeGenerator(programNode.get(), scopeChain, &globalObject->symbolTable(), m_programCodeBlock.get()))); generator->generate(); programNode->destroyData(); @@ -193,7 +193,7 @@ JSObject* FunctionExecutable::compileForCallInternal(ExecState* exec, ScopeChain ASSERT(!m_codeBlockForCall); m_codeBlockForCall = adoptPtr(new FunctionCodeBlock(this, FunctionCode, globalObject, source().provider(), source().startOffset(), false)); - OwnPtr generator(adoptPtr(new BytecodeGenerator(body.get(), globalObject->debugger(), scopeChain, m_codeBlockForCall->symbolTable(), m_codeBlockForCall.get()))); + OwnPtr generator(adoptPtr(new BytecodeGenerator(body.get(), scopeChain, m_codeBlockForCall->symbolTable(), m_codeBlockForCall.get()))); generator->generate(); m_numParametersForCall = m_codeBlockForCall->m_numParameters; ASSERT(m_numParametersForCall); @@ -234,7 +234,7 @@ JSObject* FunctionExecutable::compileForConstructInternal(ExecState* exec, Scope ASSERT(!m_codeBlockForConstruct); m_codeBlockForConstruct = adoptPtr(new FunctionCodeBlock(this, FunctionCode, globalObject, source().provider(), source().startOffset(), true)); - OwnPtr generator(adoptPtr(new BytecodeGenerator(body.get(), globalObject->debugger(), scopeChain, m_codeBlockForConstruct->symbolTable(), m_codeBlockForConstruct.get()))); + OwnPtr generator(adoptPtr(new BytecodeGenerator(body.get(), scopeChain, m_codeBlockForConstruct->symbolTable(), m_codeBlockForConstruct.get()))); generator->generate(); m_numParametersForConstruct = m_codeBlockForConstruct->m_numParameters; ASSERT(m_numParametersForConstruct); @@ -264,72 +264,6 @@ void FunctionExecutable::markAggregate(MarkStack& markStack) m_codeBlockForConstruct->markAggregate(markStack); } -PassOwnPtr FunctionExecutable::reparseExceptionInfo(ScopeChainNode* scopeChainNode, CodeBlock* codeBlock) -{ - JSObject* exception = 0; - JSGlobalData* globalData = scopeChainNode->globalData; - RefPtr newFunctionBody = globalData->parser->parse(scopeChainNode->globalObject, 0, 0, m_source, m_parameters.get(), isStrictMode() ? JSParseStrict : JSParseNormal, &exception); - if (!newFunctionBody) - return PassOwnPtr(); - ASSERT(newFunctionBody->isStrictMode() == isStrictMode()); - if (m_forceUsesArguments) - newFunctionBody->setUsesArguments(); - newFunctionBody->finishParsing(m_parameters, m_name); - - ScopeChain scopeChain(scopeChainNode); - JSGlobalObject* globalObject = scopeChain.globalObject(); - - OwnPtr newCodeBlock(adoptPtr(new FunctionCodeBlock(this, FunctionCode, globalObject, source().provider(), source().startOffset(), codeBlock->m_isConstructor))); - globalData->functionCodeBlockBeingReparsed = newCodeBlock.get(); - - OwnPtr generator(adoptPtr(new BytecodeGenerator(newFunctionBody.get(), globalObject->debugger(), scopeChain, newCodeBlock->symbolTable(), newCodeBlock.get()))); - generator->setRegeneratingForExceptionInfo(static_cast(codeBlock)); - generator->generate(); - - ASSERT(newCodeBlock->instructionCount() == codeBlock->instructionCount()); - -#if ENABLE(JIT) - if (globalData->canUseJIT()) { - JITCode newJITCode = JIT::compile(globalData, newCodeBlock.get(), 0, codeBlock->m_isConstructor ? generatedJITCodeForConstruct().start() : generatedJITCodeForCall().start()); - ASSERT(codeBlock->m_isConstructor ? newJITCode.size() == generatedJITCodeForConstruct().size() : newJITCode.size() == generatedJITCodeForCall().size()); - } -#endif - - globalData->functionCodeBlockBeingReparsed = 0; - - return newCodeBlock->extractExceptionInfo(); -} - -PassOwnPtr EvalExecutable::reparseExceptionInfo(ScopeChainNode* scopeChainNode, CodeBlock* codeBlock) -{ - JSObject* exception = 0; - JSGlobalData* globalData = scopeChainNode->globalData; - RefPtr newEvalBody = globalData->parser->parse(scopeChainNode->globalObject, 0, 0, m_source, 0, isStrictMode() ? JSParseStrict : JSParseNormal, &exception); - ASSERT(newEvalBody->isStrictMode() == isStrictMode()); - if (!newEvalBody) - return PassOwnPtr(); - - ScopeChain scopeChain(scopeChainNode); - JSGlobalObject* globalObject = scopeChain.globalObject(); - - OwnPtr newCodeBlock(adoptPtr(new EvalCodeBlock(this, globalObject, source().provider(), scopeChain.localDepth()))); - - OwnPtr generator(adoptPtr(new BytecodeGenerator(newEvalBody.get(), globalObject->debugger(), scopeChain, newCodeBlock->symbolTable(), newCodeBlock.get()))); - generator->setRegeneratingForExceptionInfo(static_cast(codeBlock)); - generator->generate(); - - ASSERT(newCodeBlock->instructionCount() == codeBlock->instructionCount()); - -#if ENABLE(JIT) - if (globalData->canUseJIT()) { - JITCode newJITCode = JIT::compile(globalData, newCodeBlock.get(), 0, generatedJITCodeForCall().start()); - ASSERT(newJITCode.size() == generatedJITCodeForCall().size()); - } -#endif - - return newCodeBlock->extractExceptionInfo(); -} - void FunctionExecutable::recompile(ExecState*) { m_codeBlockForCall.clear(); @@ -376,10 +310,4 @@ UString FunctionExecutable::paramString() const return builder.toUString(); } -PassOwnPtr ProgramExecutable::reparseExceptionInfo(ScopeChainNode*, CodeBlock*) -{ - // CodeBlocks for program code are transient and therefore do not gain from from throwing out their exception information. - return PassOwnPtr(); -} - } diff --git a/JavaScriptCore/runtime/Executable.h b/JavaScriptCore/runtime/Executable.h index 4c4ca56..14ed927 100644 --- a/JavaScriptCore/runtime/Executable.h +++ b/JavaScriptCore/runtime/Executable.h @@ -177,8 +177,6 @@ namespace JSC { bool needsActivation() const { return m_hasCapturedVariables || m_features & (EvalFeature | WithFeature | CatchFeature); } bool isStrictMode() const { return m_features & StrictModeFeature; } - virtual PassOwnPtr reparseExceptionInfo(ScopeChainNode*, CodeBlock*) = 0; - protected: void recordParse(CodeFeatures features, bool hasCapturedVariables, int firstLine, int lastLine) { @@ -229,8 +227,6 @@ namespace JSC { JSObject* compileInternal(ExecState*, ScopeChainNode*); - virtual PassOwnPtr reparseExceptionInfo(ScopeChainNode*, CodeBlock*); - OwnPtr m_evalCodeBlock; }; @@ -272,8 +268,6 @@ namespace JSC { JSObject* compileInternal(ExecState*, ScopeChainNode*); - virtual PassOwnPtr reparseExceptionInfo(ScopeChainNode*, CodeBlock*); - OwnPtr m_programCodeBlock; }; @@ -365,8 +359,6 @@ namespace JSC { JSObject* compileForCallInternal(ExecState*, ScopeChainNode*); JSObject* compileForConstructInternal(ExecState*, ScopeChainNode*); - virtual PassOwnPtr reparseExceptionInfo(ScopeChainNode*, CodeBlock*); - unsigned m_numCapturedVariables : 31; bool m_forceUsesArguments : 1; diff --git a/JavaScriptCore/runtime/Identifier.cpp b/JavaScriptCore/runtime/Identifier.cpp index d4069ba..28cfd0a 100644 --- a/JavaScriptCore/runtime/Identifier.cpp +++ b/JavaScriptCore/runtime/Identifier.cpp @@ -89,7 +89,7 @@ bool Identifier::equal(const StringImpl* r, const UChar* s, unsigned length) struct IdentifierCStringTranslator { static unsigned hash(const char* c) { - return StringImpl::computeHash(c); + return WTF::StringHasher::createHash(c); } static bool equal(StringImpl* r, const char* s) @@ -149,7 +149,7 @@ struct UCharBuffer { struct IdentifierUCharBufferTranslator { static unsigned hash(const UCharBuffer& buf) { - return StringImpl::computeHash(buf.s, buf.length); + return WTF::StringHasher::createHash(buf.s, buf.length); } static bool equal(StringImpl* str, const UCharBuffer& buf) diff --git a/JavaScriptCore/runtime/JSActivation.cpp b/JavaScriptCore/runtime/JSActivation.cpp index 795ad1f..1147858 100644 --- a/JavaScriptCore/runtime/JSActivation.cpp +++ b/JavaScriptCore/runtime/JSActivation.cpp @@ -202,14 +202,14 @@ JSValue JSActivation::argumentsGetter(ExecState*, JSValue slotBase, const Identi JSActivation* activation = asActivation(slotBase); CallFrame* callFrame = CallFrame::create(activation->d()->registers); int argumentsRegister = activation->d()->functionExecutable->generatedBytecode().argumentsRegister(); - if (!callFrame->r(argumentsRegister).jsValue()) { + if (!callFrame->uncheckedR(argumentsRegister).jsValue()) { JSValue arguments = JSValue(new (callFrame) Arguments(callFrame)); - callFrame->r(argumentsRegister) = arguments; - callFrame->r(unmodifiedArgumentsRegister(argumentsRegister)) = arguments; + callFrame->uncheckedR(argumentsRegister) = arguments; + callFrame->uncheckedR(unmodifiedArgumentsRegister(argumentsRegister)) = arguments; } - ASSERT(callFrame->r(argumentsRegister).jsValue().inherits(&Arguments::info)); - return callFrame->r(argumentsRegister).jsValue(); + ASSERT(callFrame->uncheckedR(argumentsRegister).jsValue().inherits(&Arguments::info)); + return callFrame->uncheckedR(argumentsRegister).jsValue(); } // These two functions serve the purpose of isolating the common case from a diff --git a/JavaScriptCore/runtime/JSFunction.cpp b/JavaScriptCore/runtime/JSFunction.cpp index ba89d04..99f8e6f 100644 --- a/JavaScriptCore/runtime/JSFunction.cpp +++ b/JavaScriptCore/runtime/JSFunction.cpp @@ -208,7 +208,7 @@ bool JSFunction::getOwnPropertySlot(ExecState* exec, const Identifier& propertyN if (!location) { JSObject* prototype = new (exec) JSObject(scope().globalObject()->emptyObjectStructure()); prototype->putDirect(exec->propertyNames().constructor, this, DontEnum); - putDirect(exec->propertyNames().prototype, prototype, DontDelete); + putDirect(exec->propertyNames().prototype, prototype, DontDelete | DontEnum); location = getDirectLocation(propertyName); } diff --git a/JavaScriptCore/runtime/JSGlobalData.cpp b/JavaScriptCore/runtime/JSGlobalData.cpp index 58b844c..9948877 100644 --- a/JavaScriptCore/runtime/JSGlobalData.cpp +++ b/JavaScriptCore/runtime/JSGlobalData.cpp @@ -141,7 +141,6 @@ JSGlobalData::JSGlobalData(GlobalDataType globalDataType, ThreadStackType thread , heap(this) , head(0) , dynamicGlobalObject(0) - , functionCodeBlockBeingReparsed(0) , firstStringifierToMark(0) , markStack(jsArrayVPtr) , cachedUTCOffset(NaN) diff --git a/JavaScriptCore/runtime/JSGlobalData.h b/JavaScriptCore/runtime/JSGlobalData.h index 153a4e5..1819a0c 100644 --- a/JavaScriptCore/runtime/JSGlobalData.h +++ b/JavaScriptCore/runtime/JSGlobalData.h @@ -116,6 +116,7 @@ namespace JSC { }; bool isSharedInstance() { return globalDataType == APIShared; } + bool usingAPI() { return globalDataType != Default; } static bool sharedInstanceExists(); static JSGlobalData& sharedInstance(); @@ -205,7 +206,6 @@ namespace JSC { HashSet arrayVisitedElements; - CodeBlock* functionCodeBlockBeingReparsed; Stringifier* firstStringifierToMark; MarkStack markStack; @@ -220,9 +220,7 @@ namespace JSC { RegExpCache* m_regExpCache; -#if ENABLE(YARR) BumpPointerAllocator m_regexAllocator; -#endif #if ENABLE(REGEXP_TRACING) typedef ListHashSet > RTTraceList; diff --git a/JavaScriptCore/runtime/JSGlobalObject.h b/JavaScriptCore/runtime/JSGlobalObject.h index 93a1b88..714999f 100644 --- a/JavaScriptCore/runtime/JSGlobalObject.h +++ b/JavaScriptCore/runtime/JSGlobalObject.h @@ -254,9 +254,10 @@ namespace JSC { Debugger* debugger() const { return d()->debugger; } void setDebugger(Debugger* debugger) { d()->debugger = debugger; } - + virtual bool supportsProfiling() const { return false; } - + virtual bool supportsRichSourceInfo() const { return true; } + ScopeChain& globalScopeChain() { return d()->globalScopeChain; } virtual bool isGlobalObject() const { return true; } @@ -276,7 +277,7 @@ namespace JSC { void resetPrototype(JSValue prototype); - JSGlobalData& globalData() { return *d()->globalData.get(); } + JSGlobalData& globalData() const { return *d()->globalData.get(); } JSGlobalObjectData* d() const { return static_cast(JSVariableObject::d); } static PassRefPtr createStructure(JSValue prototype) diff --git a/JavaScriptCore/runtime/MarkStack.h b/JavaScriptCore/runtime/MarkStack.h index c551bac..c3efc8f 100644 --- a/JavaScriptCore/runtime/MarkStack.h +++ b/JavaScriptCore/runtime/MarkStack.h @@ -28,6 +28,7 @@ #include "JSValue.h" #include +#include namespace JSC { @@ -85,8 +86,8 @@ namespace JSC { MarkSetProperties m_properties; }; - static void* allocateStack(size_t size); - static void releaseStack(void* addr, size_t size); + static void* allocateStack(size_t size) { return OSAllocator::reserveAndCommit(size); } + static void releaseStack(void* addr, size_t size) { OSAllocator::release(addr, size); } static void initializePagesize(); static size_t pageSize() diff --git a/JavaScriptCore/runtime/MarkStackNone.cpp b/JavaScriptCore/runtime/MarkStackNone.cpp deleted file mode 100644 index b1ff48b..0000000 --- a/JavaScriptCore/runtime/MarkStackNone.cpp +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (C) 2009 Company 100, Inc. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include "config.h" - -#include "MarkStack.h" - -#include "FastMalloc.h" - -namespace JSC { - -void MarkStack::initializePagesize() -{ - MarkStack::s_pageSize = 4096; -} - -void* MarkStack::allocateStack(size_t size) -{ - return fastMalloc(size); -} - -void MarkStack::releaseStack(void* addr, size_t) -{ - return fastFree(addr); -} - -} diff --git a/JavaScriptCore/runtime/MarkStackPosix.cpp b/JavaScriptCore/runtime/MarkStackPosix.cpp index c28bc0d..2a5b298 100644 --- a/JavaScriptCore/runtime/MarkStackPosix.cpp +++ b/JavaScriptCore/runtime/MarkStackPosix.cpp @@ -38,15 +38,6 @@ void MarkStack::initializePagesize() MarkStack::s_pageSize = getpagesize(); } -void* MarkStack::allocateStack(size_t size) -{ - return mmap(0, size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0); -} -void MarkStack::releaseStack(void* addr, size_t size) -{ - munmap(addr, size); -} - } #endif diff --git a/JavaScriptCore/runtime/MarkStackSymbian.cpp b/JavaScriptCore/runtime/MarkStackSymbian.cpp index bda14ac..a3893d7 100644 --- a/JavaScriptCore/runtime/MarkStackSymbian.cpp +++ b/JavaScriptCore/runtime/MarkStackSymbian.cpp @@ -33,16 +33,6 @@ void MarkStack::initializePagesize() MarkStack::s_pageSize = page_size; } -void* MarkStack::allocateStack(size_t size) -{ - return fastMalloc(size); -} - -void MarkStack::releaseStack(void* addr, size_t size) -{ - return fastFree(addr); -} - } #endif diff --git a/JavaScriptCore/runtime/MarkStackWin.cpp b/JavaScriptCore/runtime/MarkStackWin.cpp index a171c78..2d2a1b3 100644 --- a/JavaScriptCore/runtime/MarkStackWin.cpp +++ b/JavaScriptCore/runtime/MarkStackWin.cpp @@ -39,17 +39,6 @@ void MarkStack::initializePagesize() MarkStack::s_pageSize = system_info.dwPageSize; } -void* MarkStack::allocateStack(size_t size) -{ - return VirtualAlloc(0, size, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE); -} -void MarkStack::releaseStack(void* addr, size_t) -{ - // According to http://msdn.microsoft.com/en-us/library/aa366892(VS.85).aspx, - // dwSize must be 0 if dwFreeType is MEM_RELEASE. - VirtualFree(addr, 0, MEM_RELEASE); -} - } #endif diff --git a/JavaScriptCore/runtime/RegExp.cpp b/JavaScriptCore/runtime/RegExp.cpp index 3ebfe0f..a33fa91 100644 --- a/JavaScriptCore/runtime/RegExp.cpp +++ b/JavaScriptCore/runtime/RegExp.cpp @@ -28,9 +28,6 @@ #include #include - -#if ENABLE(YARR) - #include "yarr/RegexCompiler.h" #if ENABLE(YARR_JIT) #include "yarr/RegexJIT.h" @@ -38,28 +35,13 @@ #include "yarr/RegexInterpreter.h" #endif -#else - -#include - -#endif - namespace JSC { struct RegExpRepresentation { #if ENABLE(YARR_JIT) Yarr::RegexCodeBlock m_regExpJITCode; -#elif ENABLE(YARR) - OwnPtr m_regExpBytecode; #else - JSRegExp* m_regExp; -#endif - -#if !ENABLE(YARR) - ~RegExpRepresentation() - { - jsRegExpFree(m_regExp); - } + OwnPtr m_regExpBytecode; #endif }; @@ -100,12 +82,10 @@ PassRefPtr RegExp::create(JSGlobalData* globalData, const UString& patte return res.release(); } -#if ENABLE(YARR) - void RegExp::compile(JSGlobalData* globalData) { #if ENABLE(YARR_JIT) - Yarr::jitCompileRegex(globalData, m_representation->m_regExpJITCode, m_pattern, m_numSubpatterns, m_constructionError, ignoreCase(), multiline()); + Yarr::jitCompileRegex(globalData, m_representation->m_regExpJITCode, m_pattern, m_numSubpatterns, m_constructionError, &globalData->m_regexAllocator, ignoreCase(), multiline()); #else m_representation->m_regExpBytecode = Yarr::byteCompileRegex(m_pattern, m_numSubpatterns, m_constructionError, &globalData->m_regexAllocator, ignoreCase(), multiline()); #endif @@ -128,7 +108,7 @@ int RegExp::match(const UString& s, int startOffset, Vector* ovector) #else if (m_representation->m_regExpBytecode) { #endif - int offsetVectorSize = (m_numSubpatterns + 1) * 3; // FIXME: should be 2 - but adding temporary fallback to pcre. + int offsetVectorSize = (m_numSubpatterns + 1) * 2; int* offsetVector; Vector nonReturnedOvector; if (ovector) { @@ -147,18 +127,12 @@ int RegExp::match(const UString& s, int startOffset, Vector* ovector) offsetVector[j] = -1; #if ENABLE(YARR_JIT) - int result = Yarr::executeRegex(m_representation->m_regExpJITCode, s.characters(), startOffset, s.length(), offsetVector, offsetVectorSize); + int result = Yarr::executeRegex(m_representation->m_regExpJITCode, s.characters(), startOffset, s.length(), offsetVector); #else int result = Yarr::interpretRegex(m_representation->m_regExpBytecode.get(), s.characters(), startOffset, s.length(), offsetVector); #endif - if (result < 0) { -#ifndef NDEBUG - // TODO: define up a symbol, rather than magic -1 - if (result != -1) - fprintf(stderr, "jsRegExpExecute failed with result %d\n", result); -#endif - } + ASSERT(result >= -1);; #if ENABLE(REGEXP_TRACING) if (result != -1) @@ -171,69 +145,6 @@ int RegExp::match(const UString& s, int startOffset, Vector* ovector) return -1; } -#else - -void RegExp::compile(JSGlobalData*) -{ - m_representation->m_regExp = 0; - JSRegExpIgnoreCaseOption ignoreCaseOption = ignoreCase() ? JSRegExpIgnoreCase : JSRegExpDoNotIgnoreCase; - JSRegExpMultilineOption multilineOption = multiline() ? JSRegExpMultiline : JSRegExpSingleLine; - m_representation->m_regExp = jsRegExpCompile(reinterpret_cast(m_pattern.characters()), m_pattern.length(), ignoreCaseOption, multilineOption, &m_numSubpatterns, &m_constructionError); -} - -int RegExp::match(const UString& s, int startOffset, Vector* ovector) -{ -#if ENABLE(REGEXP_TRACING) - m_rtMatchCallCount++; -#endif - - if (startOffset < 0) - startOffset = 0; - if (ovector) - ovector->clear(); - - if (static_cast(startOffset) > s.length() || s.isNull()) - return -1; - - if (m_representation->m_regExp) { - // Set up the offset vector for the result. - // First 2/3 used for result, the last third used by PCRE. - int* offsetVector; - int offsetVectorSize; - int fixedSizeOffsetVector[3]; - if (!ovector) { - offsetVectorSize = 3; - offsetVector = fixedSizeOffsetVector; - } else { - offsetVectorSize = (m_numSubpatterns + 1) * 3; - ovector->resize(offsetVectorSize); - offsetVector = ovector->data(); - } - - int numMatches = jsRegExpExecute(m_representation->m_regExp, reinterpret_cast(s.characters()), s.length(), startOffset, offsetVector, offsetVectorSize); - - if (numMatches < 0) { -#ifndef NDEBUG - if (numMatches != JSRegExpErrorNoMatch) - fprintf(stderr, "jsRegExpExecute failed with result %d\n", numMatches); -#endif - if (ovector) - ovector->clear(); - return -1; - } - -#if ENABLE(REGEXP_TRACING) - m_rtMatchFoundCount++; -#endif - - return offsetVector[0]; - } - - return -1; -} - -#endif - #if ENABLE(REGEXP_TRACING) void RegExp::printTraceData() { diff --git a/JavaScriptCore/runtime/Structure.cpp b/JavaScriptCore/runtime/Structure.cpp index d06a239..0179eed 100644 --- a/JavaScriptCore/runtime/Structure.cpp +++ b/JavaScriptCore/runtime/Structure.cpp @@ -233,6 +233,7 @@ Structure::Structure(JSValue prototype, const TypeInfo& typeInfo, unsigned anony , m_dictionaryKind(NoneDictionaryKind) , m_isPinnedPropertyTable(false) , m_hasGetterSetterProperties(false) + , m_hasNonEnumerableProperties(false) , m_attributesInPrevious(0) , m_specificFunctionThrashCount(0) , m_anonymousSlotCount(anonymousSlotCount) diff --git a/JavaScriptCore/runtime/UString.h b/JavaScriptCore/runtime/UString.h index cd73c28..8f6c083 100644 --- a/JavaScriptCore/runtime/UString.h +++ b/JavaScriptCore/runtime/UString.h @@ -202,7 +202,7 @@ struct UStringHash { // FIXME: perhaps we should have a more abstract macro that indicates when // going 4 bytes at a time is unsafe -#if CPU(ARM) || CPU(SH4) +#if CPU(ARM) || CPU(SH4) || CPU(MIPS) const UChar* aChars = a->characters(); const UChar* bChars = b->characters(); for (unsigned i = 0; i != aLength; ++i) { diff --git a/JavaScriptCore/tests/mozilla/expected.html b/JavaScriptCore/tests/mozilla/expected.html index fdcb4e9..785378d 100644 --- a/JavaScriptCore/tests/mozilla/expected.html +++ b/JavaScriptCore/tests/mozilla/expected.html @@ -7,11 +7,11 @@

Test List: All tests
Skip List: ecma/Date/15.9.2.1.js, ecma/Date/15.9.2.2-1.js, ecma/Date/15.9.2.2-2.js, ecma/Date/15.9.2.2-3.js, ecma/Date/15.9.2.2-4.js, ecma/Date/15.9.2.2-5.js, ecma/Date/15.9.2.2-6.js, ecma_3/Date/15.9.5.7.js
-1127 test(s) selected, 1119 test(s) completed, 49 failures reported (4.37% failed)
-Engine command line: "/Volumes/Big/ggaren/build/Debug/jsc"
-OS type: Darwin il0301a-dhcp53.apple.com 9.7.0 Darwin Kernel Version 9.7.0: Tue Mar 31 22:52:17 PDT 2009; root:xnu-1228.12.14~1/RELEASE_I386 i386
-Testcase execution time: 3 minutes, 18 seconds.
-Tests completed on Tue Apr 21 12:56:28 2009.

+1127 test(s) selected, 1119 test(s) completed, 46 failures reported (4.11% failed)
+Engine command line: "/home/stampho/webkit/WebKitBuild/Release/JavaScriptCore/jsc"
+OS type: Linux euclides 2.6.35-gentoo-r5 #1 SMP Tue Aug 31 13:19:25 CEST 2010 i686 Intel(R) Core(TM)2 CPU 6300 @ 1.86GHz GenuineIntel GNU/Linux
+Testcase execution time: 16 seconds.
+Tests completed on Fri Oct 15 00:29:31 2010.

[ Failure Details | Retest List | Test Selection Page ]


@@ -22,7 +22,6 @@ Tests completed on Tue Apr 21 12:56:28 2009.

Failure messages were:
- "-0x123456789abcde8" = NaN FAILED! expected: 81985529216486880
- "-0x123456789abcde8" = NaN FAILED! expected: 81985529216486880
--"\u20001234\u2001" = NaN FAILED! expected: -1234

Testcase ecma_2/Exceptions/function-001.js failed Bug Number 10278
[ Previous Failure | Next Failure | Top of Page ]
@@ -38,151 +37,45 @@ FAILED!: [reported from test()] Both functions were defined.
FAILED!: [reported from test()] Expected value '1', Actual value '0'
FAILED!: [reported from test()]

-
Testcase ecma_3/RegExp/15.10.2-1.js failed Bug Number (none)
+
Testcase ecma_3/Statements/regress-194364.js failed
[ Previous Failure | Next Failure | Top of Page ]
-STATUS: RegExp conformance test
-Failure messages were:
-FAILED!: [reported from test()] Section 7 of test -
-FAILED!: [reported from test()] regexp = /(z)((a+)?(b+)?(c))*/
-FAILED!: [reported from test()] string = 'zaacbbbcac'
-FAILED!: [reported from test()] ERROR !!! regexp failed to give expected match array:
-FAILED!: [reported from test()] Expect: ["zaacbbbcac", "z", "ac", "a", , "c"]
-FAILED!: [reported from test()] Actual: ["zaacbbbcac", "z", "ac", "a", "bbb", "c"]
-FAILED!: [reported from test()]
-FAILED!: [reported from test()] Section 8 of test -
-FAILED!: [reported from test()] regexp = /(a*)*/
-FAILED!: [reported from test()] string = 'b'
-FAILED!: [reported from test()] ERROR !!! regexp failed to give expected match array:
-FAILED!: [reported from test()] Expect: ["", , ]
-FAILED!: [reported from test()] Actual: ["", ""]
-FAILED!: [reported from test()]
-FAILED!: [reported from test()] Section 12 of test -
-FAILED!: [reported from test()] regexp = /(.*?)a(?!(a+)b\2c)\2(.*)/
-FAILED!: [reported from test()] string = 'baaabaac'
-FAILED!: [reported from test()] ERROR !!! regexp failed to give expected match array:
-FAILED!: [reported from test()] Expect: ["baaabaac", "ba", , "abaac"]
-FAILED!: [reported from test()] Actual: ["baaabaac", "ba", "aa", "abaac"]
-FAILED!: [reported from test()]
-

-
Testcase ecma_3/RegExp/perlstress-001.js failed Bug Number 85721
- [ Previous Failure | Next Failure | Top of Page ]
-STATUS: Testing regular expression edge cases
-Failure messages were:
-FAILED!: [reported from test()] Section 218 of test -
-FAILED!: [reported from test()] regexp = /((foo)|(bar))*/
-FAILED!: [reported from test()] string = 'foobar'
-FAILED!: [reported from test()] ERROR !!! regexp failed to give expected match array:
-FAILED!: [reported from test()] Expect: ["foobar", "bar", , "bar"]
-FAILED!: [reported from test()] Actual: ["foobar", "bar", "foo", "bar"]
-FAILED!: [reported from test()]
-FAILED!: [reported from test()] Section 234 of test -
-FAILED!: [reported from test()] regexp = /(?:(f)(o)(o)|(b)(a)(r))*/
-FAILED!: [reported from test()] string = 'foobar'
-FAILED!: [reported from test()] ERROR !!! regexp failed to give expected match array:
-FAILED!: [reported from test()] Expect: ["foobar", , , , "b", "a", "r"]
-FAILED!: [reported from test()] Actual: ["foobar", "f", "o", "o", "b", "a", "r"]
-FAILED!: [reported from test()]
-FAILED!: [reported from test()] Section 241 of test -
-FAILED!: [reported from test()] regexp = /^(?:b|a(?=(.)))*\1/
-FAILED!: [reported from test()] string = 'abc'
-FAILED!: [reported from test()] ERROR !!! regexp failed to give expected match array:
-FAILED!: [reported from test()] Expect: ["ab", , ]
-FAILED!: [reported from test()] Actual: ["ab", "b"]
-FAILED!: [reported from test()]
-FAILED!: [reported from test()] Section 412 of test -
-FAILED!: [reported from test()] regexp = /^(a(b)?)+$/
-FAILED!: [reported from test()] string = 'aba'
-FAILED!: [reported from test()] ERROR !!! regexp failed to give expected match array:
-FAILED!: [reported from test()] Expect: ["aba", "a", , ]
-FAILED!: [reported from test()] Actual: ["aba", "a", "b"]
-FAILED!: [reported from test()]
-FAILED!: [reported from test()] Section 413 of test -
-FAILED!: [reported from test()] regexp = /^(aa(bb)?)+$/
-FAILED!: [reported from test()] string = 'aabbaa'
-FAILED!: [reported from test()] ERROR !!! regexp failed to give expected match array:
-FAILED!: [reported from test()] Expect: ["aabbaa", "aa", , ]
-FAILED!: [reported from test()] Actual: ["aabbaa", "aa", "bb"]
-FAILED!: [reported from test()]
-

-
Testcase ecma_3/RegExp/regress-209919.js failed Bug Number 209919
- [ Previous Failure | Next Failure | Top of Page ]
-STATUS: Testing regexp submatches with quantifiers
-Failure messages were:
-FAILED!: [reported from test()] Section 1 of test -
-FAILED!: [reported from test()] regexp = /(a|b*)*/
-FAILED!: [reported from test()] string = 'a'
-FAILED!: [reported from test()] ERROR !!! regexp failed to give expected match array:
-FAILED!: [reported from test()] Expect: ["a", "a"]
-FAILED!: [reported from test()] Actual: ["a", ""]
-FAILED!: [reported from test()]
-FAILED!: [reported from test()] Section 3 of test -
-FAILED!: [reported from test()] regexp = /(b*)*/
-FAILED!: [reported from test()] string = 'a'
-FAILED!: [reported from test()] ERROR !!! regexp failed to give expected match array:
-FAILED!: [reported from test()] Expect: ["", , ]
-FAILED!: [reported from test()] Actual: ["", ""]
-FAILED!: [reported from test()]
-FAILED!: [reported from test()] Section 5 of test -
-FAILED!: [reported from test()] regexp = /^\-?(\d{1,}|\.{0,})*(\,\d{1,})?$/
-FAILED!: [reported from test()] string = '100.00'
-FAILED!: [reported from test()] ERROR !!! regexp failed to give expected match array:
-FAILED!: [reported from test()] Expect: ["100.00", "00", , ]
-FAILED!: [reported from test()] Actual: ["100.00", "", , ]
-FAILED!: [reported from test()]
-FAILED!: [reported from test()] Section 6 of test -
-FAILED!: [reported from test()] regexp = /^\-?(\d{1,}|\.{0,})*(\,\d{1,})?$/
-FAILED!: [reported from test()] string = '100,00'
-FAILED!: [reported from test()] ERROR !!! regexp failed to give expected match array:
-FAILED!: [reported from test()] Expect: ["100,00", "100", ",00"]
-FAILED!: [reported from test()] Actual: ["100,00", "", ",00"]
-FAILED!: [reported from test()]
-FAILED!: [reported from test()] Section 7 of test -
-FAILED!: [reported from test()] regexp = /^\-?(\d{1,}|\.{0,})*(\,\d{1,})?$/
-FAILED!: [reported from test()] string = '1.000,00'
-FAILED!: [reported from test()] ERROR !!! regexp failed to give expected match array:
-FAILED!: [reported from test()] Expect: ["1.000,00", "000", ",00"]
-FAILED!: [reported from test()] Actual: ["1.000,00", "", ",00"]
-FAILED!: [reported from test()]
-

-
Testcase ecma_3/Statements/regress-194364.js failed
- [ Previous Failure | Next Failure | Top of Page ]
Expected exit code 0, got 3
Testcase terminated with signal 0
Complete testcase output was:
Testcase produced no output!

-
Testcase ecma_3/Unicode/uc-001.js failed Bug Number 23610
- [ Previous Failure | Next Failure | Top of Page ]
+
Testcase ecma_3/Unicode/uc-001.js failed Bug Number 23610
+ [ Previous Failure | Next Failure | Top of Page ]
STATUS: Unicode format-control character (Category Cf) test.
Failure messages were:
FAILED!: [reported from test()] Unicode format-control character test (Category Cf.)
FAILED!: [reported from test()] Expected value 'no error', Actual value 'no‎ error'
FAILED!: [reported from test()]

-
Testcase js1_2/Objects/toString-001.js failed
- [ Previous Failure | Next Failure | Top of Page ]
+
Testcase js1_2/Objects/toString-001.js failed
+ [ Previous Failure | Next Failure | Top of Page ]

Failure messages were:
var o = new Object(); o.toString() = [object Object] FAILED! expected: {}
o = {}; o.toString() = [object Object] FAILED! expected: {}
o = { name:"object", length:0, value:"hello" }; o.toString() = false FAILED! expected: true

-
Testcase js1_2/function/Function_object.js failed
- [ Previous Failure | Next Failure | Top of Page ]
+
Testcase js1_2/function/Function_object.js failed
+ [ Previous Failure | Next Failure | Top of Page ]

Failure messages were:
f.arity = undefined FAILED! expected: 3
} FAILED! expected:

-
Testcase js1_2/function/function-001-n.js failed
- [ Previous Failure | Next Failure | Top of Page ]
+
Testcase js1_2/function/function-001-n.js failed
+ [ Previous Failure | Next Failure | Top of Page ]
Expected exit code 3, got 0
Testcase terminated with signal 0
Complete testcase output was:
function-001.js functions not separated by semicolons are errors in version 120 and higher
eval("function f(){}function g(){}") = undefined FAILED! expected: error

-
Testcase js1_2/function/tostring-1.js failed
- [ Previous Failure | Next Failure | Top of Page ]
+
Testcase js1_2/function/tostring-1.js failed
+ [ Previous Failure | Next Failure | Top of Page ]

Failure messages were:
} FAILED! expected:
@@ -191,8 +84,8 @@ Failure messages were:
} FAILED! expected:
} FAILED! expected:

-
Testcase js1_2/function/tostring-2.js failed
- [ Previous Failure | Next Failure | Top of Page ]
+
Testcase js1_2/function/tostring-2.js failed
+ [ Previous Failure | Next Failure | Top of Page ]

Failure messages were:
} FAILED! expected:
@@ -205,22 +98,22 @@ Failure messages were:
} FAILED! expected:
} FAILED! expected:

-
Testcase js1_2/operator/equality.js failed
- [ Previous Failure | Next Failure | Top of Page ]
+
Testcase js1_2/operator/equality.js failed
+ [ Previous Failure | Next Failure | Top of Page ]

Failure messages were:
(new String('x') == 'x') = true FAILED! expected: false
('x' == new String('x')) = true FAILED! expected: false

-
Testcase js1_2/regexp/RegExp_lastIndex.js failed
- [ Previous Failure | Next Failure | Top of Page ]
+
Testcase js1_2/regexp/RegExp_lastIndex.js failed
+ [ Previous Failure | Next Failure | Top of Page ]

Failure messages were:
re=/x./g; re.lastIndex=4; re.exec('xyabcdxa') = xa FAILED! expected: ["xa"]
re.exec('xyabcdef') = xy FAILED! expected: ["xy"]

-
Testcase js1_2/regexp/RegExp_multiline.js failed
- [ Previous Failure | Next Failure | Top of Page ]
+
Testcase js1_2/regexp/RegExp_multiline.js failed
+ [ Previous Failure | Next Failure | Top of Page ]

Failure messages were:
(multiline == true) '123\n456'.match(/^4../) = null FAILED! expected: 456
@@ -229,8 +122,8 @@ Failure messages were:
(multiline == true) 'a11\na22\na23\na24'.match(/a..$/g) = a24 FAILED! expected: a11,a22,a23,a24
(multiline == true) 'a11\na22\na23\na24'.match(new RegExp('a..$','g')) = a24 FAILED! expected: a11,a22,a23,a24

-
Testcase js1_2/regexp/RegExp_multiline_as_array.js failed
- [ Previous Failure | Next Failure | Top of Page ]
+
Testcase js1_2/regexp/RegExp_multiline_as_array.js failed
+ [ Previous Failure | Next Failure | Top of Page ]

Failure messages were:
(['$*'] == true) '123\n456'.match(/^4../) = null FAILED! expected: 456
@@ -239,20 +132,20 @@ Failure messages were:
(['$*'] == true) 'a11\na22\na23\na24'.match(/a..$/g) = a24 FAILED! expected: a11,a22,a23,a24
(['$*'] == true) 'a11\na22\na23\na24'.match(new RegExp('a..$','g')) = a24 FAILED! expected: a11,a22,a23,a24

-
Testcase js1_2/regexp/beginLine.js failed
- [ Previous Failure | Next Failure | Top of Page ]
+
Testcase js1_2/regexp/beginLine.js failed
+ [ Previous Failure | Next Failure | Top of Page ]

Failure messages were:
123xyz'.match(new RegExp('^\d+')) = null FAILED! expected: 123

-
Testcase js1_2/regexp/endLine.js failed
- [ Previous Failure | Next Failure | Top of Page ]
+
Testcase js1_2/regexp/endLine.js failed
+ [ Previous Failure | Next Failure | Top of Page ]

Failure messages were:
xyz'.match(new RegExp('\d+$')) = null FAILED! expected: 890

-
Testcase js1_2/regexp/string_split.js failed
- [ Previous Failure | Next Failure | Top of Page ]
+
Testcase js1_2/regexp/string_split.js failed
+ [ Previous Failure | Next Failure | Top of Page ]

Failure messages were:
'abc'.split(/[a-z]/) = ,,, FAILED! expected: ,,
@@ -260,22 +153,22 @@ Failure messages were:
'abc'.split(new RegExp('[a-z]')) = ,,, FAILED! expected: ,,
'abc'.split(new RegExp('[a-z]')) = ,,, FAILED! expected: ,,

-
Testcase js1_2/version120/boolean-001.js failed
- [ Previous Failure | Next Failure | Top of Page ]
+
Testcase js1_2/version120/boolean-001.js failed
+ [ Previous Failure | Next Failure | Top of Page ]

Failure messages were:
new Boolean(false) = true FAILED! expected: false

-
Testcase js1_2/version120/regress-99663.js failed
- [ Previous Failure | Next Failure | Top of Page ]
+
Testcase js1_2/version120/regress-99663.js failed
+ [ Previous Failure | Next Failure | Top of Page ]
STATUS: Regression test for Bugzilla bug 99663
Failure messages were:
Section 1 of test - got Error: Can't find variable: it FAILED! expected: a "read-only" error
Section 2 of test - got Error: Can't find variable: it FAILED! expected: a "read-only" error
Section 3 of test - got Error: Can't find variable: it FAILED! expected: a "read-only" error

-
Testcase js1_3/Script/function-001-n.js failed Bug Number 10278
- [ Previous Failure | Next Failure | Top of Page ]
+
Testcase js1_3/Script/function-001-n.js failed Bug Number 10278
+ [ Previous Failure | Next Failure | Top of Page ]
Expected exit code 3, got 0
Testcase terminated with signal 0
Complete testcase output was:
@@ -283,15 +176,15 @@ BUGNUMBER: 10278
function-001.js functions not separated by semicolons are errors in version 120 and higher
eval("function f(){}function g(){}") = undefined FAILED! expected: error

-
Testcase js1_3/Script/script-001.js failed
- [ Previous Failure | Next Failure | Top of Page ]
+
Testcase js1_3/Script/script-001.js failed
+ [ Previous Failure | Next Failure | Top of Page ]
Expected exit code 0, got 3
Testcase terminated with signal 0
Complete testcase output was:
script-001 NativeScript

-
Testcase js1_3/regress/function-001-n.js failed Bug Number 10278
- [ Previous Failure | Next Failure | Top of Page ]
+
Testcase js1_3/regress/function-001-n.js failed Bug Number 10278
+ [ Previous Failure | Next Failure | Top of Page ]
Expected exit code 3, got 0
Testcase terminated with signal 0
Complete testcase output was:
@@ -299,90 +192,90 @@ BUGNUMBER: 10278
function-001.js functions not separated by semicolons are errors in version 120 and higher
eval("function f(){}function g(){}") = undefined FAILED! expected: error

-
Testcase js1_5/Exceptions/catchguard-001.js failed
- [ Previous Failure | Next Failure | Top of Page ]
+
Testcase js1_5/Exceptions/catchguard-001.js failed
+ [ Previous Failure | Next Failure | Top of Page ]
Expected exit code 0, got 3
Testcase terminated with signal 0
Complete testcase output was:
Testcase produced no output!

-
Testcase js1_5/Exceptions/catchguard-002.js failed
- [ Previous Failure | Next Failure | Top of Page ]
+
Testcase js1_5/Exceptions/catchguard-002.js failed
+ [ Previous Failure | Next Failure | Top of Page ]
Expected exit code 0, got 3
Testcase terminated with signal 0
Complete testcase output was:
Testcase produced no output!

-
Testcase js1_5/Exceptions/catchguard-003.js failed
- [ Previous Failure | Next Failure | Top of Page ]
+
Testcase js1_5/Exceptions/catchguard-003.js failed
+ [ Previous Failure | Next Failure | Top of Page ]
Expected exit code 0, got 3
Testcase terminated with signal 0
Complete testcase output was:
Testcase produced no output!

-
Testcase js1_5/Exceptions/errstack-001.js failed
- [ Previous Failure | Next Failure | Top of Page ]
+
Testcase js1_5/Exceptions/errstack-001.js failed
+ [ Previous Failure | Next Failure | Top of Page ]
Expected exit code 0, got 3
Testcase terminated with signal 0
Complete testcase output was:
Testcase produced no output!

-
Testcase js1_5/Exceptions/regress-50447.js failed Bug Number 50447
- [ Previous Failure | Next Failure | Top of Page ]
+
Testcase js1_5/Exceptions/regress-50447.js failed Bug Number 50447
+ [ Previous Failure | Next Failure | Top of Page ]
Expected exit code 0, got 3
Testcase terminated with signal 0
Complete testcase output was:
BUGNUMBER: 50447
STATUS: Test (non-ECMA) Error object properties fileName, lineNumber

-
Testcase js1_5/GetSet/getset-001.js failed
- [ Previous Failure | Next Failure | Top of Page ]
+
Testcase js1_5/GetSet/getset-001.js failed
+ [ Previous Failure | Next Failure | Top of Page ]
Expected exit code 0, got 3
Testcase terminated with signal 0
Complete testcase output was:
Testcase produced no output!

-
Testcase js1_5/GetSet/getset-002.js failed
- [ Previous Failure | Next Failure | Top of Page ]
+
Testcase js1_5/GetSet/getset-002.js failed
+ [ Previous Failure | Next Failure | Top of Page ]
Expected exit code 0, got 3
Testcase terminated with signal 0
Complete testcase output was:
Testcase produced no output!

-
Testcase js1_5/GetSet/getset-003.js failed
- [ Previous Failure | Next Failure | Top of Page ]
+
Testcase js1_5/GetSet/getset-003.js failed
+ [ Previous Failure | Next Failure | Top of Page ]
Expected exit code 0, got 3
Testcase terminated with signal 0
Complete testcase output was:
Testcase produced no output!

-
Testcase js1_5/Object/regress-90596-001.js failed
- [ Previous Failure | Next Failure | Top of Page ]
+
Testcase js1_5/Object/regress-90596-001.js failed
+ [ Previous Failure | Next Failure | Top of Page ]
Expected exit code 0, got 3
Testcase terminated with signal 0
Complete testcase output was:
Testcase produced no output!

-
Testcase js1_5/Object/regress-90596-002.js failed
- [ Previous Failure | Next Failure | Top of Page ]
+
Testcase js1_5/Object/regress-90596-002.js failed
+ [ Previous Failure | Next Failure | Top of Page ]
Expected exit code 0, got 3
Testcase terminated with signal 0
Complete testcase output was:
Testcase produced no output!

-
Testcase js1_5/Object/regress-96284-001.js failed
- [ Previous Failure | Next Failure | Top of Page ]
+
Testcase js1_5/Object/regress-96284-001.js failed
+ [ Previous Failure | Next Failure | Top of Page ]
Expected exit code 0, got 3
Testcase terminated with signal 0
Complete testcase output was:
Testcase produced no output!

-
Testcase js1_5/Object/regress-96284-002.js failed
- [ Previous Failure | Next Failure | Top of Page ]
+
Testcase js1_5/Object/regress-96284-002.js failed
+ [ Previous Failure | Next Failure | Top of Page ]
Expected exit code 0, got 3
Testcase terminated with signal 0
Complete testcase output was:
Testcase produced no output!

-
Testcase js1_5/Regress/regress-44009.js failed Bug Number 44009
- [ Previous Failure | Next Failure | Top of Page ]
+
Testcase js1_5/Regress/regress-44009.js failed Bug Number 44009
+ [ Previous Failure | Next Failure | Top of Page ]
Expected exit code 0, got 3
Testcase terminated with signal 0
Complete testcase output was:
BUGNUMBER: 44009
STATUS: Testing that we don't crash on obj.toSource()

-
Testcase js1_5/Regress/regress-103602.js failed Bug Number 103602
- [ Previous Failure | Next Failure | Top of Page ]
+
Testcase js1_5/Regress/regress-103602.js failed Bug Number 103602
+ [ Previous Failure | Next Failure | Top of Page ]
STATUS: Reassignment to a const is NOT an error per ECMA
Failure messages were:
FAILED!: [reported from test()] Section 1 of test -
@@ -392,26 +285,26 @@ FAILED!: [reported from test()] Section 3 of test -
FAILED!: [reported from test()] Expected value '1', Actual value '2'
FAILED!: [reported from test()]

-
Testcase js1_5/Regress/regress-104077.js failed
- [ Previous Failure | Next Failure | Top of Page ]
+
Testcase js1_5/Regress/regress-104077.js failed
+ [ Previous Failure | Next Failure | Top of Page ]
Expected exit code 0, got 3
Testcase terminated with signal 0
Complete testcase output was:
Testcase produced no output!

-
Testcase js1_5/Regress/regress-127557.js failed
- [ Previous Failure | Next Failure | Top of Page ]
+
Testcase js1_5/Regress/regress-127557.js failed
+ [ Previous Failure | Next Failure | Top of Page ]
Expected exit code 0, got 3
Testcase terminated with signal 0
Complete testcase output was:
Testcase produced no output!

-
Testcase js1_5/Regress/regress-172699.js failed
- [ Previous Failure | Next Failure | Top of Page ]
+
Testcase js1_5/Regress/regress-172699.js failed
+ [ Previous Failure | Next Failure | Top of Page ]
Expected exit code 0, got 3
Testcase terminated with signal 0
Complete testcase output was:
Testcase produced no output!

-
Testcase js1_5/Regress/regress-179524.js failed Bug Number 179524
- [ Previous Failure | Next Failure | Top of Page ]
+
Testcase js1_5/Regress/regress-179524.js failed Bug Number 179524
+ [ Previous Failure | Next Failure | Top of Page ]
STATUS: Don't crash on extraneous arguments to str.match(), etc.
Failure messages were:
FAILED!: [reported from test()] Section 14 of test -
@@ -461,14 +354,14 @@ FAILED!: [reported from test()] Section 36 of test -
FAILED!: [reported from test()] Expected value 'SHOULD HAVE FALLEN INTO CATCH-BLOCK!', Actual value 'ABC Zbc'
FAILED!: [reported from test()]

-
Testcase js1_5/Scope/regress-220584.js failed
- [ Previous Failure | Next Failure | Top of Page ]
+
Testcase js1_5/Scope/regress-220584.js failed
+ [ Previous Failure | Next Failure | Top of Page ]
Expected exit code 0, got 3
Testcase terminated with signal 0
Complete testcase output was:
Testcase produced no output!

-
Testcase js1_5/Scope/scope-001.js failed Bug Number 53268
- [ Previous Failure | Next Failure | Top of Page ]
+
Testcase js1_5/Scope/scope-001.js failed Bug Number 53268
+ [ Previous Failure | Next Failure | Top of Page ]
STATUS: Testing scope after changing obj.__proto__
Failure messages were:
FAILED!: [reported from test()] Step 1: setting obj.__proto__ = global object
@@ -479,8 +372,8 @@ FAILED!: [reported from test()] Type mismatch, expected type undefined, actual t FAILED!: [reported from test()] Expected value 'undefined', Actual value '1'
FAILED!: [reported from test()]

-
Testcase js1_6/Regress/regress-301574.js failed Bug Number 301574
- [ Previous Failure | Next Failure | Top of Page ]
+
Testcase js1_6/Regress/regress-301574.js failed Bug Number 301574
+ [ Previous Failure | Next Failure | Top of Page ]
STATUS: E4X should be enabled even when e4x=1 not specified
Failure messages were:
FAILED!: E4X should be enabled even when e4x=1 not specified: XML()
@@ -490,20 +383,20 @@ FAILED!: E4X should be enabled even when e4x=1 not specified: XMLList()
FAILED!: Expected value 'No error', Actual value 'error: ReferenceError: Can't find variable: XML'
FAILED!:

-
Testcase js1_6/Regress/regress-309242.js failed
- [ Previous Failure | Next Failure | Top of Page ]
+
Testcase js1_6/Regress/regress-309242.js failed
+ [ Previous Failure | Next Failure | Top of Page ]
Expected exit code 0, got 3
Testcase terminated with signal 0
Complete testcase output was:
Testcase produced no output!

-
Testcase js1_6/Regress/regress-314887.js failed
- [ Previous Failure | Next Failure | Top of Page ]
+
Testcase js1_6/Regress/regress-314887.js failed
+ [ Previous Failure | Next Failure | Top of Page ]
Expected exit code 0, got 3
Testcase terminated with signal 0
Complete testcase output was:
Testcase produced no output!

-
Testcase js1_6/String/regress-306591.js failed Bug Number 306591
- [ Previous Failure | Next Failure | Top of Page ]
+
Testcase js1_6/String/regress-306591.js failed Bug Number 306591
+ [ Previous Failure | Next Failure | Top of Page ]
Expected exit code 0, got 3
Testcase terminated with signal 0
Complete testcase output was:
@@ -517,15 +410,12 @@ STATUS: See https://bugzilla.mozilla.org/show_bug.cgi?id=304828
 
 

Retest List


-# Retest List, squirrelfish, generated Tue Apr 21 12:56:28 2009. +# Retest List, squirrelfish, generated Fri Oct 15 00:29:31 2010. # Original test base was: All tests. -# 1119 of 1127 test(s) were completed, 49 failures reported. +# 1119 of 1127 test(s) were completed, 46 failures reported. ecma/TypeConversion/9.3.1-3.js ecma_2/Exceptions/function-001.js ecma_3/FunExpr/fe-001.js -ecma_3/RegExp/15.10.2-1.js -ecma_3/RegExp/perlstress-001.js -ecma_3/RegExp/regress-209919.js ecma_3/Statements/regress-194364.js ecma_3/Unicode/uc-001.js js1_2/Objects/toString-001.js diff --git a/JavaScriptCore/wtf/Assertions.cpp b/JavaScriptCore/wtf/Assertions.cpp index 9222c1d..1841150 100644 --- a/JavaScriptCore/wtf/Assertions.cpp +++ b/JavaScriptCore/wtf/Assertions.cpp @@ -50,7 +50,7 @@ #endif #if PLATFORM(BREWMP) -#include +#include #include #endif @@ -76,7 +76,7 @@ static void printLog(const Vector& buffer) const char* end = buffer.data() + buffer.size(); while (p < end) { strncpy(printBuffer, p, printBufferSize); - DBGPRINTF(printBuffer); + dbg_Message(printBuffer, DBG_MSG_LEVEL_HIGH, __FILE__, __LINE__); p += printBufferSize; } } diff --git a/JavaScriptCore/wtf/Assertions.h b/JavaScriptCore/wtf/Assertions.h index 2907d04..3f3af72 100644 --- a/JavaScriptCore/wtf/Assertions.h +++ b/JavaScriptCore/wtf/Assertions.h @@ -56,7 +56,8 @@ #endif #if PLATFORM(BREWMP) -#include +#include +#include #endif #ifdef NDEBUG @@ -169,7 +170,7 @@ void WTFLogVerbose(const char* file, int line, const char* function, WTFLogChann } while(false) #elif PLATFORM(BREWMP) #define CRASH() do { \ - DBGPRINTF_FATAL("WebKit CRASH"); \ + dbg_Message("WebKit CRASH", DBG_MSG_LEVEL_FATAL, __FILE__, __LINE__); \ *(int *)(uintptr_t)0xbbadbeef = 0; \ ((void(*)())0)(); /* More reliable, but doesn't say BBADBEEF */ \ } while(false) diff --git a/JavaScriptCore/wtf/BumpPointerAllocator.h b/JavaScriptCore/wtf/BumpPointerAllocator.h index 3deefe6..682283c 100644 --- a/JavaScriptCore/wtf/BumpPointerAllocator.h +++ b/JavaScriptCore/wtf/BumpPointerAllocator.h @@ -138,10 +138,7 @@ private: void destroy() { - // Don't call deallocate on allocation, because allocation is *inside* allocation, - // and it will get deallocated before deallocate has completed! - PageAllocation allocation = m_allocation; - allocation.deallocate(); + m_allocation.deallocate(); } static BumpPointerPool* ensureCapacityCrossPool(BumpPointerPool* previousPool, size_t size) diff --git a/JavaScriptCore/wtf/DateMath.cpp b/JavaScriptCore/wtf/DateMath.cpp index f3627e6..675f093 100644 --- a/JavaScriptCore/wtf/DateMath.cpp +++ b/JavaScriptCore/wtf/DateMath.cpp @@ -379,7 +379,7 @@ int equivalentYearForDST(int year) return year; } -static int32_t calculateUTCOffset() +int32_t calculateUTCOffset() { #if PLATFORM(BREWMP) time_t localTime = static_cast(currentTime()); @@ -449,7 +449,7 @@ static double calculateDSTOffsetSimple(double localTimeSeconds, double utcOffset } // Get the DST offset, given a time in UTC -static double calculateDSTOffset(double ms, double utcOffset) +double calculateDSTOffset(double ms, double utcOffset) { // On Mac OS X, the call to localtime (see calculateDSTOffsetSimple) will return historically accurate // DST information (e.g. New Zealand did not have DST from 1946 to 1974) however the JavaScript diff --git a/JavaScriptCore/wtf/DateMath.h b/JavaScriptCore/wtf/DateMath.h index be51947..cb84708 100644 --- a/JavaScriptCore/wtf/DateMath.h +++ b/JavaScriptCore/wtf/DateMath.h @@ -84,6 +84,10 @@ int dayInYear(double ms, int year); int monthFromDayInYear(int dayInYear, bool leapYear); int dayInMonthFromDayInYear(int dayInYear, bool leapYear); +// Returns offset milliseconds for UTC and DST. +int32_t calculateUTCOffset(); +double calculateDSTOffset(double ms, double utcOffset); + } // namespace WTF using WTF::dateToDaysFrom1970; @@ -92,10 +96,13 @@ using WTF::dayInYear; using WTF::minutesPerHour; using WTF::monthFromDayInYear; using WTF::msPerDay; +using WTF::msPerMinute; using WTF::msPerSecond; using WTF::msToYear; using WTF::secondsPerMinute; using WTF::parseDateFromNullTerminatedCharacters; +using WTF::calculateUTCOffset; +using WTF::calculateDSTOffset; #if USE(JSC) namespace JSC { diff --git a/JavaScriptCore/wtf/FixedArray.h b/JavaScriptCore/wtf/FixedArray.h index 66f2327..c67d18c 100644 --- a/JavaScriptCore/wtf/FixedArray.h +++ b/JavaScriptCore/wtf/FixedArray.h @@ -29,7 +29,8 @@ #include namespace WTF { -template class FixedArray { + +template class FixedArray { public: T& operator[](size_t i) { @@ -44,10 +45,14 @@ public: } T* data() { return m_data; } + size_t size() const { return Size; } + private: T m_data[Size]; }; -} + +} // namespace WTF + using WTF::FixedArray; #endif // FixedArray_h diff --git a/JavaScriptCore/wtf/OSAllocator.h b/JavaScriptCore/wtf/OSAllocator.h new file mode 100644 index 0000000..9d80714 --- /dev/null +++ b/JavaScriptCore/wtf/OSAllocator.h @@ -0,0 +1,46 @@ +/* + * Copyright (C) 2010 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef OSAllocator_h +#define OSAllocator_h + +namespace WTF { + +class OSAllocator { +public: + static void* reserve(size_t); + static void* reserveAndCommit(size_t); + + static void commit(void*, size_t); + static void decommit(void*, size_t); + + static void release(void*, size_t); +}; + +} // namespace WTF + +using WTF::OSAllocator; + +#endif // OSAllocator_h diff --git a/JavaScriptCore/wtf/OSAllocatorPosix.cpp b/JavaScriptCore/wtf/OSAllocatorPosix.cpp new file mode 100644 index 0000000..d1d4af5 --- /dev/null +++ b/JavaScriptCore/wtf/OSAllocatorPosix.cpp @@ -0,0 +1,87 @@ +/* + * Copyright (C) 2010 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "config.h" +#include "OSAllocator.h" + +#if OS(UNIX) && !OS(SYMBIAN) + +#include +#include +#include +#include + +namespace WTF { + +void* OSAllocator::reserve(size_t bytes) +{ + // From a bookkeeping perspective, POSIX reservations start out in the committed state. + void* result = mmap(0, bytes, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0); + if (result == MAP_FAILED) + CRASH(); +#if HAVE(MADV_FREE_REUSE) + while (madvise(result, bytes, MADV_FREE_REUSABLE) == -1 && errno == EAGAIN) { } +#endif + return result; +} + +void* OSAllocator::reserveAndCommit(size_t bytes) +{ + // From a bookkeeping perspective, POSIX reservations start out in the committed state. + return reserve(bytes); +} + +void OSAllocator::commit(void* address, size_t bytes) +{ +#if HAVE(MADV_FREE_REUSE) + while (madvise(address, bytes, MADV_FREE_REUSE) == -1 && errno == EAGAIN) { } +#else + UNUSED_PARAM(address); + UNUSED_PARAM(bytes); +#endif +} + +void OSAllocator::decommit(void* address, size_t bytes) +{ +#if HAVE(MADV_FREE_REUSE) + while (madvise(address, bytes, MADV_FREE_REUSABLE) == -1 && errno == EAGAIN) { } +#elif HAVE(MADV_FREE) + while (madvise(address, bytes, MADV_FREE) == -1 && errno == EAGAIN) { } +#elif HAVE(MADV_DONTNEED) + while (madvise(address, bytes, MADV_DONTNEED) == -1 && errno == EAGAIN) { } +#else + UNUSED_PARAM(address); + UNUSED_PARAM(bytes); +#endif +} + +void OSAllocator::release(void* address, size_t bytes) +{ + munmap(address, bytes); +} + +} // namespace WTF + +#endif diff --git a/JavaScriptCore/wtf/OSAllocatorSymbian.cpp b/JavaScriptCore/wtf/OSAllocatorSymbian.cpp new file mode 100644 index 0000000..c1cc08c --- /dev/null +++ b/JavaScriptCore/wtf/OSAllocatorSymbian.cpp @@ -0,0 +1,60 @@ +/* + * Copyright (C) 2010 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "config.h" +#include "OSAllocator.h" + +#if OS(SYMBIAN) + +#include + +namespace WTF { + +void* OSAllocator::reserve(size_t bytes) +{ + return fastMalloc(bytes); +} + +void* OSAllocator::reserveAndCommit(size_t bytes) +{ + return reserve(bytes); +} + +void OSAllocator::commit(void*, size_t) +{ +} + +void OSAllocator::decommit(void*, size_t) +{ +} + +void OSAllocator::release(void* address, size_t) +{ + fastFree(address); +} + +} // namespace WTF + +#endif diff --git a/JavaScriptCore/wtf/OSAllocatorWin.cpp b/JavaScriptCore/wtf/OSAllocatorWin.cpp new file mode 100644 index 0000000..384fe13 --- /dev/null +++ b/JavaScriptCore/wtf/OSAllocatorWin.cpp @@ -0,0 +1,64 @@ +/* + * Copyright (C) 2010 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "config.h" +#include "OSAllocator.h" + +#if OS(WINDOWS) + +#include "windows.h" + +namespace WTF { + +void* OSAllocator::reserve(size_t bytes) +{ + return VirtualAlloc(0, bytes, MEM_RESERVE, PAGE_READWRITE); +} + +void* OSAllocator::reserveAndCommit(size_t bytes) +{ + return VirtualAlloc(0, bytes, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE); +} + +void OSAllocator::commit(void* address, size_t bytes) +{ + VirtualAlloc(address, bytes, MEM_COMMIT, PAGE_READWRITE); +} + +void OSAllocator::decommit(void* address, size_t bytes) +{ + VirtualFree(address, bytes, MEM_DECOMMIT); +} + +void OSAllocator::release(void* address, size_t bytes) +{ + // According to http://msdn.microsoft.com/en-us/library/aa366892(VS.85).aspx, + // dwSize must be 0 if dwFreeType is MEM_RELEASE. + VirtualFree(address, 0, MEM_RELEASE); +} + +} // namespace WTF + +#endif diff --git a/JavaScriptCore/wtf/PageAllocation.h b/JavaScriptCore/wtf/PageAllocation.h index 26d53a5..c13821c 100644 --- a/JavaScriptCore/wtf/PageAllocation.h +++ b/JavaScriptCore/wtf/PageAllocation.h @@ -29,6 +29,7 @@ #include #include #include +#include #if OS(DARWIN) #include @@ -266,9 +267,11 @@ inline PageAllocation PageAllocation::systemAllocateAligned(size_t size, Usage u inline void PageAllocation::systemDeallocate(bool) { - int result = munmap(m_base, m_size); + void* tmp = 0; + std::swap(tmp, m_base); + + int result = munmap(tmp, m_size); ASSERT_UNUSED(result, !result); - m_base = 0; } inline size_t PageAllocation::systemPageSize() @@ -303,14 +306,16 @@ inline PageAllocation PageAllocation::systemAllocateAligned(size_t size, Usage u inline void PageAllocation::systemDeallocate(bool committed) { + void* tmp = 0; + std::swap(tmp, m_base); + #if OS(WINCE) if (committed) - VirtualFree(m_base, m_size, MEM_DECOMMIT); + VirtualFree(tmp, m_size, MEM_DECOMMIT); #else UNUSED_PARAM(committed); #endif - VirtualFree(m_base, 0, MEM_RELEASE); - m_base = 0; + VirtualFree(tmp, 0, MEM_RELEASE); } inline size_t PageAllocation::systemPageSize() @@ -338,9 +343,11 @@ inline PageAllocation PageAllocation::systemAllocate(size_t size, Usage usage, b inline void PageAllocation::systemDeallocate(bool) { + void* tmp = 0; + std::swap(tmp, m_base); + m_chunk->Close(); delete m_chunk; - m_base = 0; } inline size_t PageAllocation::systemPageSize() diff --git a/JavaScriptCore/wtf/Platform.h b/JavaScriptCore/wtf/Platform.h index 84f03de..221cda6 100644 --- a/JavaScriptCore/wtf/Platform.h +++ b/JavaScriptCore/wtf/Platform.h @@ -541,6 +541,7 @@ #define WTF_USE_ICCJPEG 1 #else #define WTF_PLATFORM_SKIA 1 +#define WTF_USE_CHROMIUM_NET 1 #endif #endif @@ -665,7 +666,7 @@ #endif #endif -#if PLATFORM(WIN) +#if PLATFORM(WIN) && !OS(WINCE) #define WTF_PLATFORM_CF 1 #define WTF_USE_PTHREADS 0 #endif @@ -994,7 +995,7 @@ /* Configure the JIT */ #if ENABLE(JIT) - #if CPU(ARM_TRADITIONAL) + #if CPU(ARM) #if !defined(ENABLE_JIT_USE_SOFT_MODULO) && WTF_ARM_ARCH_AT_LEAST(5) #define ENABLE_JIT_USE_SOFT_MODULO 1 #endif @@ -1034,16 +1035,10 @@ #define ENABLE_REGEXP_TRACING 0 /* Yet Another Regex Runtime - turned on by default for JIT enabled ports. */ -#if ENABLE(JIT) && !defined(ENABLE_YARR) && !defined(ENABLE_YARR_JIT) -#define ENABLE_YARR 1 +#if ENABLE(JIT) && !defined(ENABLE_YARR_JIT) #define ENABLE_YARR_JIT 1 #endif -/* Sanity Check */ -#if ENABLE(YARR_JIT) && !ENABLE(YARR) -#error "YARR_JIT requires YARR" -#endif - #if ENABLE(JIT) || ENABLE(YARR_JIT) #define ENABLE_ASSEMBLER 1 #endif @@ -1141,4 +1136,3 @@ #endif #endif /* WTF_Platform_h */ - diff --git a/JavaScriptCore/wtf/StdLibExtras.h b/JavaScriptCore/wtf/StdLibExtras.h index fd7ada2..4bb0076 100644 --- a/JavaScriptCore/wtf/StdLibExtras.h +++ b/JavaScriptCore/wtf/StdLibExtras.h @@ -61,7 +61,7 @@ * - https://bugs.webkit.org/show_bug.cgi?id=38045 * - http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43976 */ -#if CPU(ARM) && COMPILER(GCC) +#if (CPU(ARM) || CPU(MIPS)) && COMPILER(GCC) template bool isPointerTypeAlignmentOkay(Type* ptr) { diff --git a/JavaScriptCore/wtf/Vector3.h b/JavaScriptCore/wtf/Vector3.h deleted file mode 100644 index 1850929..0000000 --- a/JavaScriptCore/wtf/Vector3.h +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Copyright (C) 2010 Google Inc. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of - * its contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef WTF_Vector3_h -#define WTF_Vector3_h - -#include - -namespace WTF { - -class Vector3 { -public: - Vector3() - : m_x(0.0) - , m_y(0.0) - , m_z(0.0) - { - } - - Vector3(double x, double y, double z) - : m_x(x) - , m_y(y) - , m_z(z) - { - } - - Vector3(const float p[3]) - : m_x(p[0]) - , m_y(p[1]) - , m_z(p[2]) - { - } - - Vector3(const double p[3]) - : m_x(p[0]) - , m_y(p[1]) - , m_z(p[2]) - { - } - - double abs() const - { - return sqrt(m_x * m_x + m_y * m_y + m_z * m_z); - } - - bool isZero() const - { - return !m_x && !m_y && !m_z; - } - - void normalize() - { - double absValue = abs(); - if (!absValue) - return; - - double k = 1.0 / absValue; - m_x *= k; - m_y *= k; - m_z *= k; - } - - double x() const { return m_x; } - double y() const { return m_y; } - double z() const { return m_z; } - -private: - double m_x; - double m_y; - double m_z; -}; - -inline Vector3 operator+(const Vector3& v1, const Vector3& v2) -{ - return Vector3(v1.x() + v2.x(), v1.y() + v2.y(), v1.z() + v2.z()); -} - -inline Vector3 operator-(const Vector3& v1, const Vector3& v2) -{ - return Vector3(v1.x() - v2.x(), v1.y() - v2.y(), v1.z() - v2.z()); -} - -inline Vector3 operator*(double k, const Vector3& v) -{ - return Vector3(k * v.x(), k * v.y(), k * v.z()); -} - -inline Vector3 operator*(const Vector3& v, double k) -{ - return Vector3(k * v.x(), k * v.y(), k * v.z()); -} - -inline double dot(const Vector3& v1, const Vector3& v2) -{ - return v1.x() * v2.x() + v1.y() * v2.y() + v1.z() * v2.z(); -} - -inline Vector3 cross(const Vector3& v1, const Vector3& v2) -{ - double x3 = v1.y() * v2.z() - v1.z() * v2.y(); - double y3 = v1.z() * v2.x() - v1.x() * v2.z(); - double z3 = v1.x() * v2.y() - v1.y() * v2.x(); - return Vector3(x3, y3, z3); -} - -inline double distance(const Vector3& v1, const Vector3& v2) -{ - return (v1 - v2).abs(); -} - -} // WTF - -#endif // WTF_Vector3_h diff --git a/JavaScriptCore/wtf/text/CString.cpp b/JavaScriptCore/wtf/text/CString.cpp index db6443f..981d77a 100644 --- a/JavaScriptCore/wtf/text/CString.cpp +++ b/JavaScriptCore/wtf/text/CString.cpp @@ -49,8 +49,11 @@ void CString::init(const char* str, size_t length) if (!str) return; - if (length >= numeric_limits::max()) - CRASH(); + // We need to be sure we can add 1 to length without overflowing. + // Since the passed-in length is the length of an actual existing + // string, and we know the string doesn't occupy the entire address + // space, we can assert here and there's no need for a runtime check. + ASSERT(length < numeric_limits::max()); m_buffer = CStringBuffer::create(length + 1); memcpy(m_buffer->mutableData(), str, length); diff --git a/JavaScriptCore/wtf/text/StringImpl.cpp b/JavaScriptCore/wtf/text/StringImpl.cpp index 1c4de66..c83ec42 100644 --- a/JavaScriptCore/wtf/text/StringImpl.cpp +++ b/JavaScriptCore/wtf/text/StringImpl.cpp @@ -270,12 +270,17 @@ PassRefPtr StringImpl::upper() return newImpl.release(); } -PassRefPtr StringImpl::secure(UChar character) +PassRefPtr StringImpl::secure(UChar character, LastCharacterBehavior behavior) { + if (!m_length) + return this; + UChar* data; RefPtr newImpl = createUninitialized(m_length, data); - for (unsigned i = 0; i < m_length; ++i) + unsigned lastCharacterIndex = m_length - 1; + for (unsigned i = 0; i < lastCharacterIndex; ++i) data[i] = character; + data[lastCharacterIndex] = (behavior == ObscureLastCharacter) ? character : m_data[lastCharacterIndex]; return newImpl.release(); } diff --git a/JavaScriptCore/wtf/text/StringImpl.h b/JavaScriptCore/wtf/text/StringImpl.h index 8f0af52..99d0e9d 100644 --- a/JavaScriptCore/wtf/text/StringImpl.h +++ b/JavaScriptCore/wtf/text/StringImpl.h @@ -284,7 +284,10 @@ public: PassRefPtr lower(); PassRefPtr upper(); - PassRefPtr secure(UChar aChar); + + enum LastCharacterBehavior { ObscureLastCharacter, DisplayLastCharacter }; + + PassRefPtr secure(UChar, LastCharacterBehavior = ObscureLastCharacter); PassRefPtr foldCase(); PassRefPtr stripWhiteSpace(); diff --git a/JavaScriptCore/wtf/unicode/UTF8.cpp b/JavaScriptCore/wtf/unicode/UTF8.cpp index 40c5609..ca4fc1c 100644 --- a/JavaScriptCore/wtf/unicode/UTF8.cpp +++ b/JavaScriptCore/wtf/unicode/UTF8.cpp @@ -26,9 +26,14 @@ #include "config.h" #include "UTF8.h" +#include "ASCIICType.h" + namespace WTF { namespace Unicode { +// FIXME: Use definition from CharacterNames.h. +const UChar replacementCharacter = 0xFFFD; + inline int inlineUTF8SequenceLengthNonASCII(char b0) { if ((b0 & 0xC0) != 0xC0) @@ -44,12 +49,12 @@ inline int inlineUTF8SequenceLengthNonASCII(char b0) inline int inlineUTF8SequenceLength(char b0) { - return (b0 & 0x80) == 0 ? 1 : inlineUTF8SequenceLengthNonASCII(b0); + return isASCII(b0) ? 1 : inlineUTF8SequenceLengthNonASCII(b0); } int UTF8SequenceLength(char b0) { - return (b0 & 0x80) == 0 ? 1 : inlineUTF8SequenceLengthNonASCII(b0); + return isASCII(b0) ? 1 : inlineUTF8SequenceLengthNonASCII(b0); } int decodeUTF8Sequence(const char* sequence) @@ -172,7 +177,7 @@ ConversionResult convertUTF16ToUTF8( bytesToWrite = 4; } else { bytesToWrite = 3; - ch = 0xFFFD; + ch = replacementCharacter; } target += bytesToWrite; @@ -231,6 +236,23 @@ static bool isLegalUTF8(const unsigned char* source, int length) static const UChar32 offsetsFromUTF8[6] = { 0x00000000UL, 0x00003080UL, 0x000E2080UL, 0x03C82080UL, 0xFA082080UL, 0x82082080UL }; +static inline UChar32 readUTF8Sequence(const char*& sequence, unsigned length) +{ + UChar32 character = 0; + + // The cases all fall through. + switch (length) { + case 6: character += static_cast(*sequence++); character <<= 6; + case 5: character += static_cast(*sequence++); character <<= 6; + case 4: character += static_cast(*sequence++); character <<= 6; + case 3: character += static_cast(*sequence++); character <<= 6; + case 2: character += static_cast(*sequence++); character <<= 6; + case 1: character += static_cast(*sequence++); + } + + return character - offsetsFromUTF8[length - 1]; +} + ConversionResult convertUTF8ToUTF16( const char** sourceStart, const char* sourceEnd, UChar** targetStart, UChar* targetEnd, bool strict) @@ -239,60 +261,52 @@ ConversionResult convertUTF8ToUTF16( const char* source = *sourceStart; UChar* target = *targetStart; while (source < sourceEnd) { - UChar32 ch = 0; - int extraBytesToRead = inlineUTF8SequenceLength(*source) - 1; - if (source + extraBytesToRead >= sourceEnd) { + int utf8SequenceLength = inlineUTF8SequenceLength(*source); + if (sourceEnd - source < utf8SequenceLength) { result = sourceExhausted; break; } // Do this check whether lenient or strict - if (!isLegalUTF8(reinterpret_cast(source), extraBytesToRead + 1)) { + if (!isLegalUTF8(reinterpret_cast(source), utf8SequenceLength)) { result = sourceIllegal; break; } - // The cases all fall through. - switch (extraBytesToRead) { - case 5: ch += static_cast(*source++); ch <<= 6; // remember, illegal UTF-8 - case 4: ch += static_cast(*source++); ch <<= 6; // remember, illegal UTF-8 - case 3: ch += static_cast(*source++); ch <<= 6; - case 2: ch += static_cast(*source++); ch <<= 6; - case 1: ch += static_cast(*source++); ch <<= 6; - case 0: ch += static_cast(*source++); - } - ch -= offsetsFromUTF8[extraBytesToRead]; + + UChar32 character = readUTF8Sequence(source, utf8SequenceLength); if (target >= targetEnd) { - source -= (extraBytesToRead + 1); // Back up source pointer! - result = targetExhausted; break; + source -= utf8SequenceLength; // Back up source pointer! + result = targetExhausted; + break; } - if (ch <= 0xFFFF) { + + if (U_IS_BMP(character)) { // UTF-16 surrogate values are illegal in UTF-32 - if (ch >= 0xD800 && ch <= 0xDFFF) { + if (U_IS_SURROGATE(character)) { if (strict) { - source -= (extraBytesToRead + 1); // return to the illegal value itself + source -= utf8SequenceLength; // return to the illegal value itself result = sourceIllegal; break; } else - *target++ = 0xFFFD; + *target++ = replacementCharacter; } else - *target++ = (UChar)ch; // normal case - } else if (ch > 0x10FFFF) { - if (strict) { - result = sourceIllegal; - source -= (extraBytesToRead + 1); // return to the start - break; // Bail out; shouldn't continue - } else - *target++ = 0xFFFD; - } else { + *target++ = character; // normal case + } else if (U_IS_SUPPLEMENTARY(character)) { // target is a character in range 0xFFFF - 0x10FFFF if (target + 1 >= targetEnd) { - source -= (extraBytesToRead + 1); // Back up source pointer! + source -= utf8SequenceLength; // Back up source pointer! result = targetExhausted; break; } - ch -= 0x0010000UL; - *target++ = (UChar)((ch >> 10) + 0xD800); - *target++ = (UChar)((ch & 0x03FF) + 0xDC00); + *target++ = U16_LEAD(character); + *target++ = U16_TRAIL(character); + } else { + if (strict) { + source -= utf8SequenceLength; // return to the start + result = sourceIllegal; + break; // Bail out; shouldn't continue + } else + *target++ = replacementCharacter; } } *sourceStart = source; @@ -300,5 +314,5 @@ ConversionResult convertUTF8ToUTF16( return result; } -} -} +} // namespace Unicode +} // namespace WTF diff --git a/JavaScriptCore/wtf/unicode/UnicodeMacrosFromICU.h b/JavaScriptCore/wtf/unicode/UnicodeMacrosFromICU.h index f865ef1..8959912 100644 --- a/JavaScriptCore/wtf/unicode/UnicodeMacrosFromICU.h +++ b/JavaScriptCore/wtf/unicode/UnicodeMacrosFromICU.h @@ -1,4 +1,5 @@ /* + * Copyright (C) 1999-2004, International Business Machines Corporation and others. All Rights Reserved. * Copyright (C) 2006 George Staikos * Copyright (C) 2006 Alexey Proskuryakov * Copyright (C) 2007 Apple Computer, Inc. All rights reserved. @@ -38,11 +39,28 @@ #define U16_TRAIL(supplementary) (UChar)(((supplementary)&0x3ff)|0xdc00) #define U16_LENGTH(c) ((uint32_t)(c) <= 0xffff ? 1 : 2) +#define U_IS_SUPPLEMENTARY(c) ((UChar32)((c)-0x10000)<=0xfffff) #define U_IS_SURROGATE(c) (((c)&0xfffff800)==0xd800) #define U16_IS_SINGLE(c) !U_IS_SURROGATE(c) #define U16_IS_SURROGATE(c) U_IS_SURROGATE(c) #define U16_IS_SURROGATE_LEAD(c) (((c)&0x400)==0) +#define U16_GET(s, start, i, length, c) { \ + (c)=(s)[i]; \ + if(U16_IS_SURROGATE(c)) { \ + uint16_t __c2; \ + if(U16_IS_SURROGATE_LEAD(c)) { \ + if((i)+1<(length) && U16_IS_TRAIL(__c2=(s)[(i)+1])) { \ + (c)=U16_GET_SUPPLEMENTARY((c), __c2); \ + } \ + } else { \ + if((i)-1>=(start) && U16_IS_LEAD(__c2=(s)[(i)-1])) { \ + (c)=U16_GET_SUPPLEMENTARY(__c2, (c)); \ + } \ + } \ + } \ +} + #define U16_PREV(s, start, i, c) { \ (c)=(s)[--(i)]; \ if(U16_IS_TRAIL(c)) { \ @@ -54,6 +72,12 @@ } \ } +#define U16_BACK_1(s, start, i) { \ + if(U16_IS_TRAIL((s)[--(i)]) && (i)>(start) && U16_IS_LEAD((s)[(i)-1])) { \ + --(i); \ + } \ +} + #define U16_NEXT(s, i, length, c) { \ (c)=(s)[(i)++]; \ if(U16_IS_LEAD(c)) { \ @@ -65,7 +89,12 @@ } \ } +#define U16_FWD_1(s, i, length) { \ + if(U16_IS_LEAD((s)[(i)++]) && (i)<(length) && U16_IS_TRAIL((s)[i])) { \ + ++(i); \ + } \ +} + #define U_MASK(x) ((uint32_t)1<<(x)) #endif - diff --git a/JavaScriptCore/wtf/unicode/glib/UnicodeGLib.cpp b/JavaScriptCore/wtf/unicode/glib/UnicodeGLib.cpp index e20c376..a01c3ee 100644 --- a/JavaScriptCore/wtf/unicode/glib/UnicodeGLib.cpp +++ b/JavaScriptCore/wtf/unicode/glib/UnicodeGLib.cpp @@ -1,6 +1,7 @@ /* * Copyright (C) 2008 Jürg Billeter * Copyright (C) 2008 Dominik Röttsches + * Copyright (C) 2010 Igalia S.L. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public @@ -22,6 +23,11 @@ #include "config.h" #include "UnicodeGLib.h" +#include +#include + +#define UTF8_IS_SURROGATE(character) (character >= 0x10000 && character <= 0x10FFFF) + namespace WTF { namespace Unicode { @@ -43,100 +49,71 @@ UChar32 foldCase(UChar32 ch) return *ucs4Result; } -int foldCase(UChar* result, int resultLength, const UChar* src, int srcLength, bool* error) +static int getUTF16LengthFromUTF8(const gchar* utf8String, int length) { - *error = false; - GOwnPtr gerror; + int utf16Length = 0; + const gchar* inputString = utf8String; - GOwnPtr utf8src; - utf8src.set(g_utf16_to_utf8(src, srcLength, 0, 0, &gerror.outPtr())); - if (gerror) { - *error = true; - return -1; - } - - GOwnPtr utf8result; - utf8result.set(g_utf8_casefold(utf8src.get(), -1)); + while ((utf8String + length - inputString > 0) && *inputString) { + gunichar character = g_utf8_get_char(inputString); - long utf16resultLength = -1; - GOwnPtr utf16result; - utf16result.set(g_utf8_to_utf16(utf8result.get(), -1, 0, &utf16resultLength, &gerror.outPtr())); - if (gerror) { - *error = true; - return -1; + utf16Length += UTF8_IS_SURROGATE(character) ? 2 : 1; + inputString = g_utf8_next_char(inputString); } - if (utf16resultLength > resultLength) { - *error = true; - return utf16resultLength; - } - memcpy(result, utf16result.get(), utf16resultLength * sizeof(UChar)); - - return utf16resultLength; + return utf16Length; } -int toLower(UChar* result, int resultLength, const UChar* src, int srcLength, bool* error) +typedef gchar* (*UTF8CaseFunction)(const gchar*, gssize length); + +static int convertCase(UChar* result, int resultLength, const UChar* src, int srcLength, bool* error, UTF8CaseFunction caseFunction) { *error = false; - GOwnPtr gerror; - GOwnPtr utf8src; - utf8src.set(g_utf16_to_utf8(src, srcLength, 0, 0, &gerror.outPtr())); - if (gerror) { + // Allocate a buffer big enough to hold all the characters. + Vector buffer(srcLength * 3); + char* utf8Target = buffer.data(); + const UChar* utf16Source = src; + ConversionResult conversionResult = convertUTF16ToUTF8(&utf16Source, utf16Source + srcLength, &utf8Target, utf8Target + buffer.size(), true); + if (conversionResult != conversionOK) { *error = true; return -1; } + buffer.shrink(utf8Target - buffer.data()); - GOwnPtr utf8result; - utf8result.set(g_utf8_strdown(utf8src.get(), -1)); + GOwnPtr utf8Result(caseFunction(buffer.data(), buffer.size())); + long utf8ResultLength = strlen(utf8Result.get()); - long utf16resultLength = -1; - GOwnPtr utf16result; - utf16result.set(g_utf8_to_utf16(utf8result.get(), -1, 0, &utf16resultLength, &gerror.outPtr())); - if (gerror) { + // Calculate the destination buffer size. + int realLength = getUTF16LengthFromUTF8(utf8Result.get(), utf8ResultLength); + if (realLength > resultLength) { *error = true; - return -1; + return realLength; } - if (utf16resultLength > resultLength) { + // Convert the result to UTF-16. + UChar* utf16Target = result; + const char* utf8Source = utf8Result.get(); + conversionResult = convertUTF8ToUTF16(&utf8Source, utf8Source + utf8ResultLength, &utf16Target, utf16Target + resultLength, true); + long utf16ResultLength = utf16Target - result; + if (conversionResult != conversionOK) *error = true; - return utf16resultLength; - } - memcpy(result, utf16result.get(), utf16resultLength * sizeof(UChar)); - return utf16resultLength; + return utf16ResultLength <= 0 ? -1 : utf16ResultLength; } - -int toUpper(UChar* result, int resultLength, const UChar* src, int srcLength, bool* error) +int foldCase(UChar* result, int resultLength, const UChar* src, int srcLength, bool* error) { - *error = false; - GOwnPtr gerror; - - GOwnPtr utf8src; - utf8src.set(g_utf16_to_utf8(src, srcLength, 0, 0, &gerror.outPtr())); - if (gerror) { - *error = true; - return -1; - } - - GOwnPtr utf8result; - utf8result.set(g_utf8_strup(utf8src.get(), -1)); - - long utf16resultLength = -1; - GOwnPtr utf16result; - utf16result.set(g_utf8_to_utf16(utf8result.get(), -1, 0, &utf16resultLength, &gerror.outPtr())); - if (gerror) { - *error = true; - return -1; - } + return convertCase(result, resultLength, src, srcLength, error, g_utf8_casefold); +} - if (utf16resultLength > resultLength) { - *error = true; - return utf16resultLength; - } - memcpy(result, utf16result.get(), utf16resultLength * sizeof(UChar)); +int toLower(UChar* result, int resultLength, const UChar* src, int srcLength, bool* error) +{ + return convertCase(result, resultLength, src, srcLength, error, g_utf8_strdown); +} - return utf16resultLength; +int toUpper(UChar* result, int resultLength, const UChar* src, int srcLength, bool* error) +{ + return convertCase(result, resultLength, src, srcLength, error, g_utf8_strup); } Direction direction(UChar32 c) diff --git a/JavaScriptCore/wtf/wtf.pri b/JavaScriptCore/wtf/wtf.pri index 1780334..0f7241c 100644 --- a/JavaScriptCore/wtf/wtf.pri +++ b/JavaScriptCore/wtf/wtf.pri @@ -13,6 +13,9 @@ SOURCES += \ wtf/HashTable.cpp \ wtf/MD5.cpp \ wtf/MainThread.cpp \ + wtf/OSAllocatorPosix.cpp \ + wtf/OSAllocatorSymbian.cpp \ + wtf/OSAllocatorWin.cpp \ wtf/qt/MainThreadQt.cpp \ wtf/qt/StringQt.cpp \ wtf/qt/ThreadingQt.cpp \ diff --git a/JavaScriptCore/yarr/RegexCompiler.cpp b/JavaScriptCore/yarr/RegexCompiler.cpp index ccfc94e..e40c791 100644 --- a/JavaScriptCore/yarr/RegexCompiler.cpp +++ b/JavaScriptCore/yarr/RegexCompiler.cpp @@ -31,8 +31,6 @@ #include "RegexPattern.h" #include -#if ENABLE(YARR) - using namespace WTF; namespace JSC { namespace Yarr { @@ -522,7 +520,7 @@ public: PatternTerm& term = currentAlternative->lastTerm(); ASSERT((term.type == PatternTerm::TypeParenthesesSubpattern) || (term.type == PatternTerm::TypeParentheticalAssertion)); - if ((term.type == PatternTerm::TypeParenthesesSubpattern) && term.invertOrCapture && (subpatternId == term.subpatternId)) { + if ((term.type == PatternTerm::TypeParenthesesSubpattern) && term.invertOrCapture && (subpatternId == term.parentheses.subpatternId)) { m_alternative->m_terms.append(PatternTerm::ForwardReference()); return; } @@ -597,7 +595,7 @@ public: term.quantify(min, QuantifierFixedCount); m_alternative->m_terms.append(copyTerm(term)); // NOTE: this term is interesting from an analysis perspective, in that it can be ignored..... - m_alternative->lastTerm().quantify((max == UINT_MAX) ? max : max - min, greedy ? QuantifierGreedy : QuantifierNonGreedy); + m_alternative->lastTerm().quantify((max == quantifyInfinite) ? max : max - min, greedy ? QuantifierGreedy : QuantifierNonGreedy); if (m_alternative->lastTerm().type == PatternTerm::TypeParenthesesSubpattern) m_alternative->lastTerm().parentheses.isCopy = true; } @@ -669,14 +667,17 @@ public: case PatternTerm::TypeParenthesesSubpattern: // Note: for fixed once parentheses we will ensure at least the minimum is available; others are on their own. term.frameLocation = currentCallFrameSize; - if ((term.quantityCount == 1) && !term.parentheses.isCopy) { - if (term.quantityType == QuantifierFixedCount) { - currentCallFrameSize = setupDisjunctionOffsets(term.parentheses.disjunction, currentCallFrameSize, currentInputPosition); - currentInputPosition += term.parentheses.disjunction->m_minimumSize; - } else { + if (term.quantityCount == 1 && !term.parentheses.isCopy) { + if (term.quantityType != QuantifierFixedCount) currentCallFrameSize += RegexStackSpaceForBackTrackInfoParenthesesOnce; - currentCallFrameSize = setupDisjunctionOffsets(term.parentheses.disjunction, currentCallFrameSize, currentInputPosition); - } + currentCallFrameSize = setupDisjunctionOffsets(term.parentheses.disjunction, currentCallFrameSize, currentInputPosition); + // If quantity is fixed, then pre-check its minimum size. + if (term.quantityType == QuantifierFixedCount) + currentInputPosition += term.parentheses.disjunction->m_minimumSize; + term.inputPosition = currentInputPosition; + } else if (term.parentheses.isTerminal) { + currentCallFrameSize += RegexStackSpaceForBackTrackInfoParenthesesTerminal; + currentCallFrameSize = setupDisjunctionOffsets(term.parentheses.disjunction, currentCallFrameSize, currentInputPosition); term.inputPosition = currentInputPosition; } else { term.inputPosition = currentInputPosition; @@ -730,6 +731,34 @@ public: setupDisjunctionOffsets(m_pattern.m_body, 0, 0); } + // This optimization identifies sets of parentheses that we will never need to backtrack. + // In these cases we do not need to store state from prior iterations. + // We can presently avoid backtracking for: + // * where the parens are at the end of the regular expression (last term in any of the + // alternatives of the main body disjunction). + // * where the parens are non-capturing, and quantified unbounded greedy (*). + // * where the parens do not contain any capturing subpatterns. + void checkForTerminalParentheses() + { + // This check is much too crude; should be just checking whether the candidate + // node contains nested capturing subpatterns, not the whole expression! + if (m_pattern.m_numSubpatterns) + return; + + Vector& alternatives = m_pattern.m_body->m_alternatives; + for (size_t i = 0; i < alternatives.size(); ++i) { + Vector& terms = alternatives[i]->m_terms; + if (terms.size()) { + PatternTerm& term = terms.last(); + if (term.type == PatternTerm::TypeParenthesesSubpattern + && term.quantityType == QuantifierGreedy + && term.quantityCount == quantifyInfinite + && !term.capture()) + term.parentheses.isTerminal = true; + } + } + } + void optimizeBOL() { // Look for expressions containing beginning of line (^) anchoring and unroll them. @@ -932,6 +961,7 @@ const char* compileRegex(const UString& patternString, RegexPattern& pattern) ASSERT(numSubpatterns == pattern.m_numSubpatterns); } + constructor.checkForTerminalParentheses(); constructor.optimizeBOL(); constructor.setupOffsets(); @@ -942,5 +972,3 @@ const char* compileRegex(const UString& patternString, RegexPattern& pattern) } } - -#endif diff --git a/JavaScriptCore/yarr/RegexCompiler.h b/JavaScriptCore/yarr/RegexCompiler.h index 9d2443a..399374e 100644 --- a/JavaScriptCore/yarr/RegexCompiler.h +++ b/JavaScriptCore/yarr/RegexCompiler.h @@ -26,8 +26,6 @@ #ifndef RegexCompiler_h #define RegexCompiler_h -#if ENABLE(YARR) - #include "RegexParser.h" #include "RegexPattern.h" #include @@ -38,6 +36,4 @@ const char* compileRegex(const UString& patternString, RegexPattern& pattern); } } // namespace JSC::Yarr -#endif - #endif // RegexCompiler_h diff --git a/JavaScriptCore/yarr/RegexInterpreter.cpp b/JavaScriptCore/yarr/RegexInterpreter.cpp index dc3024a..a51cd25 100644 --- a/JavaScriptCore/yarr/RegexInterpreter.cpp +++ b/JavaScriptCore/yarr/RegexInterpreter.cpp @@ -35,8 +35,6 @@ #include #endif -#if ENABLE(YARR) - using namespace WTF; namespace JSC { namespace Yarr { @@ -62,7 +60,10 @@ public: uintptr_t begin; }; struct BackTrackInfoParenthesesOnce { - uintptr_t inParentheses; + uintptr_t begin; + }; + struct BackTrackInfoParenthesesTerminal { + uintptr_t begin; }; struct BackTrackInfoParentheses { uintptr_t matchAmount; @@ -514,8 +515,7 @@ public: if (matchEnd == -1) return true; - ASSERT((matchBegin == -1) == (matchEnd == -1)); - ASSERT(matchBegin <= matchEnd); + ASSERT((matchBegin == -1) || (matchBegin <= matchEnd)); if (matchBegin == matchEnd) return true; @@ -557,8 +557,7 @@ public: int matchBegin = output[(term.atom.subpatternId << 1)]; int matchEnd = output[(term.atom.subpatternId << 1) + 1]; - ASSERT((matchBegin == -1) == (matchEnd == -1)); - ASSERT(matchBegin <= matchEnd); + ASSERT((matchBegin == -1) || (matchBegin <= matchEnd)); if (matchBegin == matchEnd) return false; @@ -633,11 +632,11 @@ public: switch (term.atom.quantityType) { case QuantifierGreedy: { // set this speculatively; if we get to the parens end this will be true. - backTrack->inParentheses = 1; + backTrack->begin = input.getPos(); break; } case QuantifierNonGreedy: { - backTrack->inParentheses = 0; + backTrack->begin = notFound; context->term += term.atom.parenthesesWidth; return true; } @@ -653,7 +652,7 @@ public: return true; } - bool matchParenthesesOnceEnd(ByteTerm& term, DisjunctionContext*) + bool matchParenthesesOnceEnd(ByteTerm& term, DisjunctionContext* context) { ASSERT(term.type == ByteTerm::TypeParenthesesSubpatternOnceEnd); ASSERT(term.atom.quantityCount == 1); @@ -662,7 +661,12 @@ public: unsigned subpatternId = term.atom.subpatternId; output[(subpatternId << 1) + 1] = input.getPos() + term.inputPosition; } - return true; + + if (term.atom.quantityType == QuantifierFixedCount) + return true; + + BackTrackInfoParenthesesOnce* backTrack = reinterpret_cast(context->frame + term.frameLocation); + return backTrack->begin != input.getPos(); } bool backtrackParenthesesOnceBegin(ByteTerm& term, DisjunctionContext* context) @@ -681,12 +685,12 @@ public: switch (term.atom.quantityType) { case QuantifierGreedy: // if we backtrack to this point, there is another chance - try matching nothing. - ASSERT(backTrack->inParentheses); - backTrack->inParentheses = 0; + ASSERT(backTrack->begin != notFound); + backTrack->begin = notFound; context->term += term.atom.parenthesesWidth; return true; case QuantifierNonGreedy: - ASSERT(backTrack->inParentheses); + ASSERT(backTrack->begin != notFound); case QuantifierFixedCount: break; } @@ -703,15 +707,19 @@ public: switch (term.atom.quantityType) { case QuantifierGreedy: - if (!backTrack->inParentheses) { + if (backTrack->begin == notFound) { context->term -= term.atom.parenthesesWidth; return false; } case QuantifierNonGreedy: - if (!backTrack->inParentheses) { - // now try to match the parens; set this speculatively. - backTrack->inParentheses = 1; + if (backTrack->begin == notFound) { + backTrack->begin = input.getPos(); if (term.capture()) { + // Technically this access to inputPosition should be accessing the begin term's + // inputPosition, but for repeats other than fixed these values should be + // the same anyway! (We don't pre-check for greedy or non-greedy matches.) + ASSERT((&term - term.atom.parenthesesWidth)->type == ByteTerm::TypeParenthesesSubpatternOnceBegin); + ASSERT((&term - term.atom.parenthesesWidth)->inputPosition == term.inputPosition); unsigned subpatternId = term.atom.subpatternId; output[subpatternId << 1] = input.getPos() + term.inputPosition; } @@ -725,6 +733,53 @@ public: return false; } + bool matchParenthesesTerminalBegin(ByteTerm& term, DisjunctionContext* context) + { + ASSERT(term.type == ByteTerm::TypeParenthesesSubpatternTerminalBegin); + ASSERT(term.atom.quantityType == QuantifierGreedy); + ASSERT(term.atom.quantityCount == quantifyInfinite); + ASSERT(!term.capture()); + + BackTrackInfoParenthesesTerminal* backTrack = reinterpret_cast(context->frame + term.frameLocation); + backTrack->begin = input.getPos(); + return true; + } + + bool matchParenthesesTerminalEnd(ByteTerm& term, DisjunctionContext* context) + { + ASSERT(term.type == ByteTerm::TypeParenthesesSubpatternTerminalEnd); + + BackTrackInfoParenthesesTerminal* backTrack = reinterpret_cast(context->frame + term.frameLocation); + // Empty match is a failed match. + if (backTrack->begin == input.getPos()) + return false; + + // Successful match! Okay, what's next? - loop around and try to match moar! + context->term -= (term.atom.parenthesesWidth + 1); + return true; + } + + bool backtrackParenthesesTerminalBegin(ByteTerm& term, DisjunctionContext* context) + { + ASSERT(term.type == ByteTerm::TypeParenthesesSubpatternTerminalBegin); + ASSERT(term.atom.quantityType == QuantifierGreedy); + ASSERT(term.atom.quantityCount == quantifyInfinite); + ASSERT(!term.capture()); + + // If we backtrack to this point, we have failed to match this iteration of the parens. + // Since this is greedy / zero minimum a failed is also accepted as a match! + context->term += term.atom.parenthesesWidth; + return true; + } + + bool backtrackParenthesesTerminalEnd(ByteTerm&, DisjunctionContext*) + { + // 'Terminal' parentheses are at the end of the regex, and as such a match past end + // should always be returned as a successful match - we should never backtrack to here. + ASSERT_NOT_REACHED(); + return false; + } + bool matchParentheticalAssertionBegin(ByteTerm& term, DisjunctionContext* context) { ASSERT(term.type == ByteTerm::TypeParentheticalAssertionBegin); @@ -1173,6 +1228,14 @@ public: if (matchParenthesesOnceEnd(currentTerm(), context)) MATCH_NEXT(); BACKTRACK(); + case ByteTerm::TypeParenthesesSubpatternTerminalBegin: + if (matchParenthesesTerminalBegin(currentTerm(), context)) + MATCH_NEXT(); + BACKTRACK(); + case ByteTerm::TypeParenthesesSubpatternTerminalEnd: + if (matchParenthesesTerminalEnd(currentTerm(), context)) + MATCH_NEXT(); + BACKTRACK(); case ByteTerm::TypeParentheticalAssertionBegin: if (matchParentheticalAssertionBegin(currentTerm(), context)) MATCH_NEXT(); @@ -1286,6 +1349,14 @@ public: if (backtrackParenthesesOnceEnd(currentTerm(), context)) MATCH_NEXT(); BACKTRACK(); + case ByteTerm::TypeParenthesesSubpatternTerminalBegin: + if (backtrackParenthesesTerminalBegin(currentTerm(), context)) + MATCH_NEXT(); + BACKTRACK(); + case ByteTerm::TypeParenthesesSubpatternTerminalEnd: + if (backtrackParenthesesTerminalEnd(currentTerm(), context)) + MATCH_NEXT(); + BACKTRACK(); case ByteTerm::TypeParentheticalAssertionBegin: if (backtrackParentheticalAssertionBegin(currentTerm(), context)) MATCH_NEXT(); @@ -1341,9 +1412,8 @@ public: pattern->m_allocator->stopAllocator(); - if (output[0] == -1 && result != JSRegExpNoMatch) - return result; - + // RegExp.cpp currently expects all error to be converted to -1. + ASSERT((result == JSRegExpMatch) == (output[0] != -1)); return output[0]; } @@ -1448,8 +1518,38 @@ public: m_bodyDisjunction->terms[m_bodyDisjunction->terms.size() - 1].frameLocation = frameLocation; } + void atomParenthesesOnceBegin(unsigned subpatternId, bool capture, int inputPosition, unsigned frameLocation, unsigned alternativeFrameLocation) + { + int beginTerm = m_bodyDisjunction->terms.size(); + + m_bodyDisjunction->terms.append(ByteTerm(ByteTerm::TypeParenthesesSubpatternOnceBegin, subpatternId, capture, inputPosition)); + m_bodyDisjunction->terms[m_bodyDisjunction->terms.size() - 1].frameLocation = frameLocation; + m_bodyDisjunction->terms.append(ByteTerm::AlternativeBegin()); + m_bodyDisjunction->terms[m_bodyDisjunction->terms.size() - 1].frameLocation = alternativeFrameLocation; + + m_parenthesesStack.append(ParenthesesStackEntry(beginTerm, m_currentAlternativeIndex)); + m_currentAlternativeIndex = beginTerm + 1; + } + + void atomParenthesesTerminalBegin(unsigned subpatternId, bool capture, int inputPosition, unsigned frameLocation, unsigned alternativeFrameLocation) + { + int beginTerm = m_bodyDisjunction->terms.size(); + + m_bodyDisjunction->terms.append(ByteTerm(ByteTerm::TypeParenthesesSubpatternTerminalBegin, subpatternId, capture, inputPosition)); + m_bodyDisjunction->terms[m_bodyDisjunction->terms.size() - 1].frameLocation = frameLocation; + m_bodyDisjunction->terms.append(ByteTerm::AlternativeBegin()); + m_bodyDisjunction->terms[m_bodyDisjunction->terms.size() - 1].frameLocation = alternativeFrameLocation; + + m_parenthesesStack.append(ParenthesesStackEntry(beginTerm, m_currentAlternativeIndex)); + m_currentAlternativeIndex = beginTerm + 1; + } + void atomParenthesesSubpatternBegin(unsigned subpatternId, bool capture, int inputPosition, unsigned frameLocation, unsigned alternativeFrameLocation) { + // Errrk! - this is a little crazy, we initially generate as a TypeParenthesesSubpatternOnceBegin, + // then fix this up at the end! - simplifying this should make it much clearer. + // https://bugs.webkit.org/show_bug.cgi?id=50136 + int beginTerm = m_bodyDisjunction->terms.size(); m_bodyDisjunction->terms.append(ByteTerm(ByteTerm::TypeParenthesesSubpatternOnceBegin, subpatternId, capture, inputPosition)); @@ -1474,6 +1574,28 @@ public: m_currentAlternativeIndex = beginTerm + 1; } + void atomParentheticalAssertionEnd(int inputPosition, unsigned frameLocation, unsigned quantityCount, QuantifierType quantityType) + { + unsigned beginTerm = popParenthesesStack(); + closeAlternative(beginTerm + 1); + unsigned endTerm = m_bodyDisjunction->terms.size(); + + ASSERT(m_bodyDisjunction->terms[beginTerm].type == ByteTerm::TypeParentheticalAssertionBegin); + + bool invertOrCapture = m_bodyDisjunction->terms[beginTerm].invertOrCapture; + unsigned subpatternId = m_bodyDisjunction->terms[beginTerm].atom.subpatternId; + + m_bodyDisjunction->terms.append(ByteTerm(ByteTerm::TypeParentheticalAssertionEnd, subpatternId, invertOrCapture, inputPosition)); + m_bodyDisjunction->terms[beginTerm].atom.parenthesesWidth = endTerm - beginTerm; + m_bodyDisjunction->terms[endTerm].atom.parenthesesWidth = endTerm - beginTerm; + m_bodyDisjunction->terms[endTerm].frameLocation = frameLocation; + + m_bodyDisjunction->terms[beginTerm].atom.quantityCount = quantityCount; + m_bodyDisjunction->terms[beginTerm].atom.quantityType = quantityType; + m_bodyDisjunction->terms[endTerm].atom.quantityCount = quantityCount; + m_bodyDisjunction->terms[endTerm].atom.quantityType = quantityType; + } + unsigned popParenthesesStack() { ASSERT(m_parenthesesStack.size()); @@ -1545,50 +1667,79 @@ public: m_bodyDisjunction->terms[endIndex].frameLocation = frameLocation; } - void atomParenthesesEnd(bool doInline, unsigned lastSubpatternId, int inputPosition, unsigned frameLocation, unsigned quantityCount, QuantifierType quantityType, unsigned callFrameSize = 0) + void atomParenthesesSubpatternEnd(unsigned lastSubpatternId, int inputPosition, unsigned frameLocation, unsigned quantityCount, QuantifierType quantityType, unsigned callFrameSize = 0) + { + unsigned beginTerm = popParenthesesStack(); + closeAlternative(beginTerm + 1); + unsigned endTerm = m_bodyDisjunction->terms.size(); + + ASSERT(m_bodyDisjunction->terms[beginTerm].type == ByteTerm::TypeParenthesesSubpatternOnceBegin); + + ByteTerm& parenthesesBegin = m_bodyDisjunction->terms[beginTerm]; + + bool invertOrCapture = parenthesesBegin.invertOrCapture; + unsigned subpatternId = parenthesesBegin.atom.subpatternId; + + unsigned numSubpatterns = lastSubpatternId - subpatternId + 1; + ByteDisjunction* parenthesesDisjunction = new ByteDisjunction(numSubpatterns, callFrameSize); + + parenthesesDisjunction->terms.append(ByteTerm::SubpatternBegin()); + for (unsigned termInParentheses = beginTerm + 1; termInParentheses < endTerm; ++termInParentheses) + parenthesesDisjunction->terms.append(m_bodyDisjunction->terms[termInParentheses]); + parenthesesDisjunction->terms.append(ByteTerm::SubpatternEnd()); + + m_bodyDisjunction->terms.shrink(beginTerm); + + m_allParenthesesInfo.append(parenthesesDisjunction); + m_bodyDisjunction->terms.append(ByteTerm(ByteTerm::TypeParenthesesSubpattern, subpatternId, parenthesesDisjunction, invertOrCapture, inputPosition)); + + m_bodyDisjunction->terms[beginTerm].atom.quantityCount = quantityCount; + m_bodyDisjunction->terms[beginTerm].atom.quantityType = quantityType; + m_bodyDisjunction->terms[beginTerm].frameLocation = frameLocation; + } + + void atomParenthesesOnceEnd(int inputPosition, unsigned frameLocation, unsigned quantityCount, QuantifierType quantityType) { unsigned beginTerm = popParenthesesStack(); closeAlternative(beginTerm + 1); unsigned endTerm = m_bodyDisjunction->terms.size(); - bool isAssertion = m_bodyDisjunction->terms[beginTerm].type == ByteTerm::TypeParentheticalAssertionBegin; + ASSERT(m_bodyDisjunction->terms[beginTerm].type == ByteTerm::TypeParenthesesSubpatternOnceBegin); + bool invertOrCapture = m_bodyDisjunction->terms[beginTerm].invertOrCapture; unsigned subpatternId = m_bodyDisjunction->terms[beginTerm].atom.subpatternId; - m_bodyDisjunction->terms.append(ByteTerm(isAssertion ? ByteTerm::TypeParentheticalAssertionEnd : ByteTerm::TypeParenthesesSubpatternOnceEnd, subpatternId, invertOrCapture, inputPosition)); + m_bodyDisjunction->terms.append(ByteTerm(ByteTerm::TypeParenthesesSubpatternOnceEnd, subpatternId, invertOrCapture, inputPosition)); m_bodyDisjunction->terms[beginTerm].atom.parenthesesWidth = endTerm - beginTerm; m_bodyDisjunction->terms[endTerm].atom.parenthesesWidth = endTerm - beginTerm; m_bodyDisjunction->terms[endTerm].frameLocation = frameLocation; - if (doInline) { - m_bodyDisjunction->terms[beginTerm].atom.quantityCount = quantityCount; - m_bodyDisjunction->terms[beginTerm].atom.quantityType = quantityType; - m_bodyDisjunction->terms[endTerm].atom.quantityCount = quantityCount; - m_bodyDisjunction->terms[endTerm].atom.quantityType = quantityType; - } else { - ByteTerm& parenthesesBegin = m_bodyDisjunction->terms[beginTerm]; - ASSERT(parenthesesBegin.type == ByteTerm::TypeParenthesesSubpatternOnceBegin); - - bool invertOrCapture = parenthesesBegin.invertOrCapture; - unsigned subpatternId = parenthesesBegin.atom.subpatternId; + m_bodyDisjunction->terms[beginTerm].atom.quantityCount = quantityCount; + m_bodyDisjunction->terms[beginTerm].atom.quantityType = quantityType; + m_bodyDisjunction->terms[endTerm].atom.quantityCount = quantityCount; + m_bodyDisjunction->terms[endTerm].atom.quantityType = quantityType; + } - unsigned numSubpatterns = lastSubpatternId - subpatternId + 1; - ByteDisjunction* parenthesesDisjunction = new ByteDisjunction(numSubpatterns, callFrameSize); + void atomParenthesesTerminalEnd(int inputPosition, unsigned frameLocation, unsigned quantityCount, QuantifierType quantityType) + { + unsigned beginTerm = popParenthesesStack(); + closeAlternative(beginTerm + 1); + unsigned endTerm = m_bodyDisjunction->terms.size(); - parenthesesDisjunction->terms.append(ByteTerm::SubpatternBegin()); - for (unsigned termInParentheses = beginTerm + 1; termInParentheses < endTerm; ++termInParentheses) - parenthesesDisjunction->terms.append(m_bodyDisjunction->terms[termInParentheses]); - parenthesesDisjunction->terms.append(ByteTerm::SubpatternEnd()); + ASSERT(m_bodyDisjunction->terms[beginTerm].type == ByteTerm::TypeParenthesesSubpatternTerminalBegin); - m_bodyDisjunction->terms.shrink(beginTerm); + bool invertOrCapture = m_bodyDisjunction->terms[beginTerm].invertOrCapture; + unsigned subpatternId = m_bodyDisjunction->terms[beginTerm].atom.subpatternId; - m_allParenthesesInfo.append(parenthesesDisjunction); - m_bodyDisjunction->terms.append(ByteTerm(ByteTerm::TypeParenthesesSubpattern, subpatternId, parenthesesDisjunction, invertOrCapture, inputPosition)); + m_bodyDisjunction->terms.append(ByteTerm(ByteTerm::TypeParenthesesSubpatternTerminalEnd, subpatternId, invertOrCapture, inputPosition)); + m_bodyDisjunction->terms[beginTerm].atom.parenthesesWidth = endTerm - beginTerm; + m_bodyDisjunction->terms[endTerm].atom.parenthesesWidth = endTerm - beginTerm; + m_bodyDisjunction->terms[endTerm].frameLocation = frameLocation; - m_bodyDisjunction->terms[beginTerm].atom.quantityCount = quantityCount; - m_bodyDisjunction->terms[beginTerm].atom.quantityType = quantityType; - m_bodyDisjunction->terms[beginTerm].frameLocation = frameLocation; - } + m_bodyDisjunction->terms[beginTerm].atom.quantityCount = quantityCount; + m_bodyDisjunction->terms[beginTerm].atom.quantityType = quantityType; + m_bodyDisjunction->terms[endTerm].atom.quantityCount = quantityCount; + m_bodyDisjunction->terms[endTerm].atom.quantityType = quantityType; } void regexBegin(unsigned numSubpatterns, unsigned callFrameSize, bool onceThrough) @@ -1675,7 +1826,7 @@ public: break; case PatternTerm::TypeBackReference: - atomBackReference(term.subpatternId, term.inputPosition - currentCountAlreadyChecked, term.frameLocation, term.quantityCount, term.quantityType); + atomBackReference(term.backReferenceSubpatternId, term.inputPosition - currentCountAlreadyChecked, term.frameLocation, term.quantityCount, term.quantityType); break; case PatternTerm::TypeForwardReference: @@ -1683,24 +1834,27 @@ public: case PatternTerm::TypeParenthesesSubpattern: { unsigned disjunctionAlreadyCheckedCount = 0; - if ((term.quantityCount == 1) && !term.parentheses.isCopy) { - if (term.quantityType == QuantifierFixedCount) { + if (term.quantityCount == 1 && !term.parentheses.isCopy) { + unsigned alternativeFrameLocation = term.frameLocation; + // For QuantifierFixedCount we pre-check the minimum size; for greedy/non-greedy we reserve a slot in the frame. + if (term.quantityType == QuantifierFixedCount) disjunctionAlreadyCheckedCount = term.parentheses.disjunction->m_minimumSize; - unsigned delegateEndInputOffset = term.inputPosition - currentCountAlreadyChecked; - atomParenthesesSubpatternBegin(term.parentheses.subpatternId, term.invertOrCapture, delegateEndInputOffset - disjunctionAlreadyCheckedCount, term.frameLocation, term.frameLocation); - emitDisjunction(term.parentheses.disjunction, currentCountAlreadyChecked, term.parentheses.disjunction->m_minimumSize); - atomParenthesesEnd(true, term.parentheses.lastSubpatternId, delegateEndInputOffset, term.frameLocation, term.quantityCount, term.quantityType, term.parentheses.disjunction->m_callFrameSize); - } else { - unsigned delegateEndInputOffset = term.inputPosition - currentCountAlreadyChecked; - atomParenthesesSubpatternBegin(term.parentheses.subpatternId, term.invertOrCapture, delegateEndInputOffset - disjunctionAlreadyCheckedCount, term.frameLocation, term.frameLocation + RegexStackSpaceForBackTrackInfoParenthesesOnce); - emitDisjunction(term.parentheses.disjunction, currentCountAlreadyChecked, 0); - atomParenthesesEnd(true, term.parentheses.lastSubpatternId, delegateEndInputOffset, term.frameLocation, term.quantityCount, term.quantityType, term.parentheses.disjunction->m_callFrameSize); - } + else + alternativeFrameLocation += RegexStackSpaceForBackTrackInfoParenthesesOnce; + unsigned delegateEndInputOffset = term.inputPosition - currentCountAlreadyChecked; + atomParenthesesOnceBegin(term.parentheses.subpatternId, term.invertOrCapture, delegateEndInputOffset - disjunctionAlreadyCheckedCount, term.frameLocation, alternativeFrameLocation); + emitDisjunction(term.parentheses.disjunction, currentCountAlreadyChecked, disjunctionAlreadyCheckedCount); + atomParenthesesOnceEnd(delegateEndInputOffset, term.frameLocation, term.quantityCount, term.quantityType); + } else if (term.parentheses.isTerminal) { + unsigned delegateEndInputOffset = term.inputPosition - currentCountAlreadyChecked; + atomParenthesesTerminalBegin(term.parentheses.subpatternId, term.invertOrCapture, delegateEndInputOffset - disjunctionAlreadyCheckedCount, term.frameLocation, term.frameLocation + RegexStackSpaceForBackTrackInfoParenthesesOnce); + emitDisjunction(term.parentheses.disjunction, currentCountAlreadyChecked, disjunctionAlreadyCheckedCount); + atomParenthesesTerminalEnd(delegateEndInputOffset, term.frameLocation, term.quantityCount, term.quantityType); } else { unsigned delegateEndInputOffset = term.inputPosition - currentCountAlreadyChecked; atomParenthesesSubpatternBegin(term.parentheses.subpatternId, term.invertOrCapture, delegateEndInputOffset - disjunctionAlreadyCheckedCount, term.frameLocation, 0); emitDisjunction(term.parentheses.disjunction, currentCountAlreadyChecked, 0); - atomParenthesesEnd(false, term.parentheses.lastSubpatternId, delegateEndInputOffset, term.frameLocation, term.quantityCount, term.quantityType, term.parentheses.disjunction->m_callFrameSize); + atomParenthesesSubpatternEnd(term.parentheses.lastSubpatternId, delegateEndInputOffset, term.frameLocation, term.quantityCount, term.quantityType, term.parentheses.disjunction->m_callFrameSize); } break; } @@ -1713,7 +1867,7 @@ public: atomParentheticalAssertionBegin(term.parentheses.subpatternId, term.invertOrCapture, term.frameLocation, alternativeFrameLocation); emitDisjunction(term.parentheses.disjunction, currentCountAlreadyChecked, positiveInputOffset, true); - atomParenthesesEnd(true, term.parentheses.lastSubpatternId, 0, term.frameLocation, term.quantityCount, term.quantityType); + atomParentheticalAssertionEnd(0, term.frameLocation, term.quantityCount, term.quantityType); break; } } @@ -1742,6 +1896,11 @@ PassOwnPtr byteCompileRegex(const UString& patternString, unsig return ByteCompiler(pattern).compile(allocator); } +PassOwnPtr byteCompileRegex(RegexPattern& pattern, BumpPointerAllocator* allocator) +{ + return ByteCompiler(pattern).compile(allocator); +} + int interpretRegex(BytecodePattern* regex, const UChar* input, unsigned start, unsigned length, int* output) { return Interpreter(regex, output, input, start, length).interpret(); @@ -1758,5 +1917,3 @@ COMPILE_ASSERT(sizeof(Interpreter::BackTrackInfoParentheses) == (RegexStackSpace } } - -#endif diff --git a/JavaScriptCore/yarr/RegexInterpreter.h b/JavaScriptCore/yarr/RegexInterpreter.h index dae8f9d..2e23472 100644 --- a/JavaScriptCore/yarr/RegexInterpreter.h +++ b/JavaScriptCore/yarr/RegexInterpreter.h @@ -26,8 +26,6 @@ #ifndef RegexInterpreter_h #define RegexInterpreter_h -#if ENABLE(YARR) - #include "RegexParser.h" #include "RegexPattern.h" #include @@ -83,6 +81,8 @@ struct ByteTerm { TypeParenthesesSubpattern, TypeParenthesesSubpatternOnceBegin, TypeParenthesesSubpatternOnceEnd, + TypeParenthesesSubpatternTerminalBegin, + TypeParenthesesSubpatternTerminalEnd, TypeParentheticalAssertionBegin, TypeParentheticalAssertionEnd, TypeCheckInput, @@ -365,10 +365,9 @@ private: }; PassOwnPtr byteCompileRegex(const UString& pattern, unsigned& numSubpatterns, const char*& error, BumpPointerAllocator*, bool ignoreCase = false, bool multiline = false); +PassOwnPtr byteCompileRegex(RegexPattern& pattern, BumpPointerAllocator*); int interpretRegex(BytecodePattern* v_regex, const UChar* input, unsigned start, unsigned length, int* output); } } // namespace JSC::Yarr -#endif - #endif // RegexInterpreter_h diff --git a/JavaScriptCore/yarr/RegexJIT.cpp b/JavaScriptCore/yarr/RegexJIT.cpp index 1b80464..1eac667 100644 --- a/JavaScriptCore/yarr/RegexJIT.cpp +++ b/JavaScriptCore/yarr/RegexJIT.cpp @@ -31,8 +31,7 @@ #include "LinkBuffer.h" #include "MacroAssembler.h" #include "RegexCompiler.h" - -#include "pcre.h" // temporary, remove when fallback is removed. +#include "RegexInterpreter.h" // temporary, remove when fallback is removed. #if ENABLE(YARR_JIT) @@ -625,7 +624,7 @@ class RegexGenerator : private MacroAssembler { add32(Imm32(1), countRegister); add32(Imm32(1), index); - if (term.quantityCount != 0xffffffff) { + if (term.quantityCount != quantifyInfinite) { branch32(NotEqual, countRegister, Imm32(term.quantityCount)).linkTo(loop, this); failures.append(jump()); } else @@ -663,7 +662,7 @@ class RegexGenerator : private MacroAssembler { loadFromFrame(term.frameLocation, countRegister); atEndOfInput().linkTo(hardFail, this); - if (term.quantityCount != 0xffffffff) + if (term.quantityCount != quantifyInfinite) branch32(Equal, countRegister, Imm32(term.quantityCount), hardFail); if (m_pattern.m_ignoreCase && isASCIIAlpha(ch)) { readCharacter(state.inputOffset(), character); @@ -750,7 +749,7 @@ class RegexGenerator : private MacroAssembler { add32(Imm32(1), countRegister); add32(Imm32(1), index); - if (term.quantityCount != 0xffffffff) { + if (term.quantityCount != quantifyInfinite) { branch32(NotEqual, countRegister, Imm32(term.quantityCount)).linkTo(loop, this); failures.append(jump()); } else @@ -911,12 +910,7 @@ class RegexGenerator : private MacroAssembler { PatternDisjunction* disjunction = term.parentheses.disjunction; ASSERT(term.quantityCount == 1); - if (term.parentheses.isCopy) { - m_shouldFallBack = true; - return; - } - - unsigned preCheckedCount = ((term.quantityCount == 1) && (term.quantityType == QuantifierFixedCount)) ? disjunction->m_minimumSize : 0; + unsigned preCheckedCount = (term.quantityType == QuantifierFixedCount) ? disjunction->m_minimumSize : 0; unsigned parenthesesFrameLocation = term.frameLocation; unsigned alternativeFrameLocation = parenthesesFrameLocation; @@ -935,12 +929,12 @@ class RegexGenerator : private MacroAssembler { Jump nonGreedySkipParentheses; Label nonGreedyTryParentheses; if (term.quantityType == QuantifierGreedy) - storeToFrame(Imm32(1), parenthesesFrameLocation); + storeToFrame(index, parenthesesFrameLocation); else if (term.quantityType == QuantifierNonGreedy) { - storeToFrame(Imm32(0), parenthesesFrameLocation); + storeToFrame(Imm32(-1), parenthesesFrameLocation); nonGreedySkipParentheses = jump(); nonGreedyTryParentheses = label(); - storeToFrame(Imm32(1), parenthesesFrameLocation); + storeToFrame(index, parenthesesFrameLocation); } // store the match start index @@ -958,29 +952,21 @@ class RegexGenerator : private MacroAssembler { TermGenerationState parenthesesState(disjunction, state.checkedTotal); generateParenthesesDisjunction(state.term(), parenthesesState, alternativeFrameLocation); - // store the match end index - if (term.invertOrCapture) { - int inputOffset = state.inputOffset(); - if (inputOffset) { - move(index, indexTemporary); - add32(Imm32(state.inputOffset()), indexTemporary); - store32(indexTemporary, Address(output, ((term.parentheses.subpatternId << 1) + 1) * sizeof(int))); - } else - store32(index, Address(output, ((term.parentheses.subpatternId << 1) + 1) * sizeof(int))); - } - Jump success = jump(); + Jump success = (term.quantityType == QuantifierFixedCount) ? + jump() : + branch32(NotEqual, index, Address(stackPointerRegister, (parenthesesFrameLocation * sizeof(void*)))); // A failure AFTER the parens jumps here Label backtrackFromAfterParens(this); if (term.quantityType == QuantifierGreedy) { - // If this is zero we have now tested with both with and without the parens. + // If this is -1 we have now tested with both with and without the parens. loadFromFrame(parenthesesFrameLocation, indexTemporary); - state.jumpToBacktrack(branchTest32(Zero, indexTemporary), this); + state.jumpToBacktrack(branch32(Equal, indexTemporary, Imm32(-1)), this); } else if (term.quantityType == QuantifierNonGreedy) { - // If this is zero we have now tested with both with and without the parens. + // If this is -1 we have now tested without the parens, now test with. loadFromFrame(parenthesesFrameLocation, indexTemporary); - branchTest32(Zero, indexTemporary).linkTo(nonGreedyTryParentheses, this); + branch32(Equal, indexTemporary, Imm32(-1)).linkTo(nonGreedyTryParentheses, this); } parenthesesState.plantJumpToBacktrackIfExists(this); @@ -990,7 +976,7 @@ class RegexGenerator : private MacroAssembler { store32(Imm32(-1), Address(output, (term.parentheses.subpatternId << 1) * sizeof(int))); if (term.quantityType == QuantifierGreedy) - storeToFrame(Imm32(0), parenthesesFrameLocation); + storeToFrame(Imm32(-1), parenthesesFrameLocation); else state.jumpToBacktrack(jump(), this); @@ -998,6 +984,17 @@ class RegexGenerator : private MacroAssembler { if (term.quantityType == QuantifierNonGreedy) nonGreedySkipParentheses.link(this); success.link(this); + + // store the match end index + if (term.invertOrCapture) { + int inputOffset = state.inputOffset(); + if (inputOffset) { + move(index, indexTemporary); + add32(Imm32(state.inputOffset()), indexTemporary); + store32(indexTemporary, Address(output, ((term.parentheses.subpatternId << 1) + 1) * sizeof(int))); + } else + store32(index, Address(output, ((term.parentheses.subpatternId << 1) + 1) * sizeof(int))); + } } } @@ -1008,25 +1005,6 @@ class RegexGenerator : private MacroAssembler { ASSERT(parenthesesTerm.type == PatternTerm::TypeParenthesesSubpattern); ASSERT(parenthesesTerm.quantityCount != 1); // Handled by generateParenthesesSingle. - // Capturing not yet implemented! - if (parenthesesTerm.invertOrCapture) { - m_shouldFallBack = true; - return; - } - - // Quantification limit not yet implemented! - if (parenthesesTerm.quantityCount != 0xffffffff) { - m_shouldFallBack = true; - return; - } - - // Need to reset nested subpatterns between iterations... - // for the minute this crude check rejects all patterns with any subpatterns! - if (m_pattern.m_numSubpatterns) { - m_shouldFallBack = true; - return; - } - TermGenerationState parenthesesState(disjunction, state.checkedTotal); Label matchAgain(this); @@ -1048,7 +1026,11 @@ class RegexGenerator : private MacroAssembler { generateTerm(parenthesesState); // If we get here, we matched! If the index advanced then try to match more since limit isn't supported yet. - branch32(GreaterThan, index, Address(stackPointerRegister, (parenthesesTerm.frameLocation * sizeof(void*))), matchAgain); + branch32(NotEqual, index, Address(stackPointerRegister, (parenthesesTerm.frameLocation * sizeof(void*))), matchAgain); + + // If we get here we matched, but we matched "" - cannot accept this alternative as is, so either backtrack, + // or fall through to try the next alternative if no backtrack is available. + parenthesesState.plantJumpToBacktrackIfExists(this); parenthesesState.linkAlternativeBacktracks(this); // We get here if the alternative fails to match - fall through to the next iteration, or out of the loop. @@ -1181,17 +1163,12 @@ class RegexGenerator : private MacroAssembler { break; case PatternTerm::TypeParenthesesSubpattern: - if (term.quantityCount == 1) { + if (term.quantityCount == 1 && !term.parentheses.isCopy) generateParenthesesSingle(state); - break; - } else if (state.isLastTerm() && state.isMainDisjunction()) { // Is this is the last term of the main disjunction? - // If this has a greedy quantifier, then it will never need to backtrack! - if (term.quantityType == QuantifierGreedy) { - generateParenthesesGreedyNoBacktrack(state); - break; - } - } - m_shouldFallBack = true; + else if (term.parentheses.isTerminal) + generateParenthesesGreedyNoBacktrack(state); + else + m_shouldFallBack = true; break; case PatternTerm::TypeParentheticalAssertion: @@ -1532,7 +1509,7 @@ private: Vector m_backtrackRecords; }; -void jitCompileRegex(JSGlobalData* globalData, RegexCodeBlock& jitObject, const UString& patternString, unsigned& numSubpatterns, const char*& error, bool ignoreCase, bool multiline) +void jitCompileRegex(JSGlobalData* globalData, RegexCodeBlock& jitObject, const UString& patternString, unsigned& numSubpatterns, const char*& error, BumpPointerAllocator* allocator, bool ignoreCase, bool multiline) { RegexPattern pattern(ignoreCase, multiline); if ((error = compileRegex(patternString, pattern))) @@ -1546,9 +1523,7 @@ void jitCompileRegex(JSGlobalData* globalData, RegexCodeBlock& jitObject, const return; } - JSRegExpIgnoreCaseOption ignoreCaseOption = ignoreCase ? JSRegExpIgnoreCase : JSRegExpDoNotIgnoreCase; - JSRegExpMultilineOption multilineOption = multiline ? JSRegExpMultiline : JSRegExpSingleLine; - jitObject.setFallback(jsRegExpCompile(reinterpret_cast(patternString.characters()), patternString.length(), ignoreCaseOption, multilineOption, &numSubpatterns, &error)); + jitObject.setFallback(byteCompileRegex(pattern, allocator)); } }} diff --git a/JavaScriptCore/yarr/RegexJIT.h b/JavaScriptCore/yarr/RegexJIT.h index 02e905d..c4c382c 100644 --- a/JavaScriptCore/yarr/RegexJIT.h +++ b/JavaScriptCore/yarr/RegexJIT.h @@ -29,12 +29,10 @@ #if ENABLE(YARR_JIT) #include "MacroAssembler.h" +#include "RegexInterpreter.h" // temporary, remove when fallback is removed. #include "RegexPattern.h" #include "UString.h" -#include "pcre.h" -struct JSRegExp; // temporary, remove when fallback is removed. - #if CPU(X86) && !COMPILER(MSVC) #define YARR_CALL __attribute__ ((regparm (3))) #else @@ -53,18 +51,21 @@ class RegexCodeBlock { public: RegexCodeBlock() - : m_fallback(0) + : m_needFallback(false) { } ~RegexCodeBlock() { - if (m_fallback) - jsRegExpFree(m_fallback); } - JSRegExp* getFallback() { return m_fallback; } - void setFallback(JSRegExp* fallback) { m_fallback = fallback; } + BytecodePattern* getFallback() { return m_fallback.get(); } + bool isFallback() { return m_needFallback; } + void setFallback(PassOwnPtr fallback) + { + m_fallback = fallback; + m_needFallback = true; + } bool operator!() { return (!m_ref.m_code.executableAddress() && !m_fallback); } void set(MacroAssembler::CodeRef ref) { m_ref = ref; } @@ -73,22 +74,23 @@ public: { return reinterpret_cast(m_ref.m_code.executableAddress())(input, start, length, output); } - + #if ENABLE(REGEXP_TRACING) void *getAddr() { return m_ref.m_code.executableAddress(); } #endif private: MacroAssembler::CodeRef m_ref; - JSRegExp* m_fallback; + OwnPtr m_fallback; + bool m_needFallback; }; -void jitCompileRegex(JSGlobalData* globalData, RegexCodeBlock& jitObject, const UString& pattern, unsigned& numSubpatterns, const char*& error, bool ignoreCase = false, bool multiline = false); +void jitCompileRegex(JSGlobalData* globalData, RegexCodeBlock& jitObject, const UString& pattern, unsigned& numSubpatterns, const char*& error, BumpPointerAllocator* allocator, bool ignoreCase = false, bool multiline = false); -inline int executeRegex(RegexCodeBlock& jitObject, const UChar* input, unsigned start, unsigned length, int* output, int outputArraySize) +inline int executeRegex(RegexCodeBlock& jitObject, const UChar* input, unsigned start, unsigned length, int* output) { - if (JSRegExp* fallback = jitObject.getFallback()) - return (jsRegExpExecute(fallback, input, length, start, output, outputArraySize) < 0) ? -1 : output[0]; + if (jitObject.isFallback()) + return (interpretRegex(jitObject.getFallback(), input, start, length, output)); return jitObject.execute(input, start, length, output); } diff --git a/JavaScriptCore/yarr/RegexParser.h b/JavaScriptCore/yarr/RegexParser.h index ede9417..8392cdf 100644 --- a/JavaScriptCore/yarr/RegexParser.h +++ b/JavaScriptCore/yarr/RegexParser.h @@ -26,8 +26,6 @@ #ifndef RegexParser_h #define RegexParser_h -#if ENABLE(YARR) - #include "UString.h" #include #include @@ -35,6 +33,8 @@ namespace JSC { namespace Yarr { +static const unsigned quantifyInfinite = UINT_MAX; + enum BuiltInCharacterClassID { DigitClassID, SpaceClassID, @@ -58,6 +58,7 @@ private: ParenthesesUnmatched, ParenthesesTypeInvalid, CharacterClassUnmatched, + CharacterClassInvalidRange, CharacterClassOutOfOrder, EscapeUnterminated, NumberOfErrorCodes @@ -77,7 +78,7 @@ private: CharacterClassParserDelegate(Delegate& delegate, ErrorCode& err) : m_delegate(delegate) , m_err(err) - , m_state(empty) + , m_state(Empty) { } @@ -92,54 +93,60 @@ private: } /* - * atomPatternCharacterUnescaped(): + * atomPatternCharacter(): * - * This method is called directly from parseCharacterClass(), to report a new - * pattern character token. This method differs from atomPatternCharacter(), - * which will be called from parseEscape(), since a hypen provided via this - * method may be indicating a character range, but a hyphen parsed by - * parseEscape() cannot be interpreted as doing so. + * This method is called either from parseCharacterClass() (for an unescaped + * character in a character class), or from parseEscape(). In the former case + * the value true will be passed for the argument 'hyphenIsRange', and in this + * mode we will allow a hypen to be treated as indicating a range (i.e. /[a-z]/ + * is different to /[a\-z]/). */ - void atomPatternCharacterUnescaped(UChar ch) + void atomPatternCharacter(UChar ch, bool hyphenIsRange = false) { switch (m_state) { - case empty: + case AfterCharacterClass: + // Following a builtin character class we need look out for a hyphen. + // We're looking for invalid ranges, such as /[\d-x]/ or /[\d-\d]/. + // If we see a hyphen following a charater class then unlike usual + // we'll report it to the delegate immediately, and put ourself into + // a poisoned state. Any following calls to add another character or + // character class will result in an error. (A hypen following a + // character-class is itself valid, but only at the end of a regex). + if (hyphenIsRange && ch == '-') { + m_delegate.atomCharacterClassAtom('-'); + m_state = AfterCharacterClassHyphen; + return; + } + // Otherwise just fall through - cached character so treat this as Empty. + + case Empty: m_character = ch; - m_state = cachedCharacter; - break; + m_state = CachedCharacter; + return; - case cachedCharacter: - if (ch == '-') - m_state = cachedCharacterHyphen; + case CachedCharacter: + if (hyphenIsRange && ch == '-') + m_state = CachedCharacterHyphen; else { m_delegate.atomCharacterClassAtom(m_character); m_character = ch; } - break; + return; - case cachedCharacterHyphen: - if (ch >= m_character) - m_delegate.atomCharacterClassRange(m_character, ch); - else + case CachedCharacterHyphen: + if (ch < m_character) { m_err = CharacterClassOutOfOrder; - m_state = empty; - } - } - - /* - * atomPatternCharacter(): - * - * Adds a pattern character, called by parseEscape(), as such will not - * interpret a hyphen as indicating a character range. - */ - void atomPatternCharacter(UChar ch) - { - // Flush if a character is already pending to prevent the - // hyphen from begin interpreted as indicating a range. - if((ch == '-') && (m_state == cachedCharacter)) - flush(); + return; + } + m_delegate.atomCharacterClassRange(m_character, ch); + m_state = Empty; + return; - atomPatternCharacterUnescaped(ch); + case AfterCharacterClassHyphen: + // Error! We have something like /[\d-x]/. + m_err = CharacterClassInvalidRange; + return; + } } /* @@ -149,8 +156,25 @@ private: */ void atomBuiltInCharacterClass(BuiltInCharacterClassID classID, bool invert) { - flush(); - m_delegate.atomCharacterClassBuiltIn(classID, invert); + switch (m_state) { + case CachedCharacter: + // Flush the currently cached character, then fall through. + m_delegate.atomCharacterClassAtom(m_character); + + case Empty: + case AfterCharacterClass: + m_state = AfterCharacterClass; + m_delegate.atomCharacterClassBuiltIn(classID, invert); + return; + + case CachedCharacterHyphen: + case AfterCharacterClassHyphen: + // Error! If we hit either of these cases, we have an + // invalid range that looks something like /[x-\d]/ + // or /[\d-\d]/. + m_err = CharacterClassInvalidRange; + return; + } } /* @@ -160,7 +184,12 @@ private: */ void end() { - flush(); + if (m_state == CachedCharacter) + m_delegate.atomCharacterClassAtom(m_character); + else if (m_state == CachedCharacterHyphen) { + m_delegate.atomCharacterClassAtom(m_character); + m_delegate.atomCharacterClassAtom('-'); + } m_delegate.atomCharacterClassEnd(); } @@ -170,21 +199,14 @@ private: void atomBackReference(unsigned) { ASSERT_NOT_REACHED(); } private: - void flush() - { - if (m_state != empty) // either cachedCharacter or cachedCharacterHyphen - m_delegate.atomCharacterClassAtom(m_character); - if (m_state == cachedCharacterHyphen) - m_delegate.atomCharacterClassAtom('-'); - m_state = empty; - } - Delegate& m_delegate; ErrorCode& m_err; enum CharacterClassConstructionState { - empty, - cachedCharacter, - cachedCharacterHyphen, + Empty, + CachedCharacter, + CachedCharacterHyphen, + AfterCharacterClass, + AfterCharacterClassHyphen, } m_state; UChar m_character; }; @@ -430,7 +452,7 @@ private: break; default: - characterClassConstructor.atomPatternCharacterUnescaped(consume()); + characterClassConstructor.atomPatternCharacter(consume(), true); } if (m_err) @@ -574,13 +596,13 @@ private: case '*': consume(); - parseQuantifier(lastTokenWasAnAtom, 0, UINT_MAX); + parseQuantifier(lastTokenWasAnAtom, 0, quantifyInfinite); lastTokenWasAnAtom = false; break; case '+': consume(); - parseQuantifier(lastTokenWasAnAtom, 1, UINT_MAX); + parseQuantifier(lastTokenWasAnAtom, 1, quantifyInfinite); lastTokenWasAnAtom = false; break; @@ -599,7 +621,7 @@ private: unsigned max = min; if (tryConsume(',')) - max = peekIsDigit() ? consumeNumber() : UINT_MAX; + max = peekIsDigit() ? consumeNumber() : quantifyInfinite; if (tryConsume('}')) { if (min <= max) @@ -659,6 +681,7 @@ private: "unmatched parentheses", "unrecognized character after (?", "missing terminating ] for character class", + "invalid range in character class", "range out of order in character class", "\\ at end of pattern" }; @@ -840,13 +863,11 @@ private: */ template -const char* parse(Delegate& delegate, const UString& pattern, unsigned backReferenceLimit = UINT_MAX) +const char* parse(Delegate& delegate, const UString& pattern, unsigned backReferenceLimit = quantifyInfinite) { return Parser(delegate, pattern, backReferenceLimit).parse(); } } } // namespace JSC::Yarr -#endif - #endif // RegexParser_h diff --git a/JavaScriptCore/yarr/RegexPattern.h b/JavaScriptCore/yarr/RegexPattern.h index be31fcd..8a7d35b 100644 --- a/JavaScriptCore/yarr/RegexPattern.h +++ b/JavaScriptCore/yarr/RegexPattern.h @@ -27,13 +27,9 @@ #ifndef RegexPattern_h #define RegexPattern_h - -#if ENABLE(YARR) - #include #include - namespace JSC { namespace Yarr { #define RegexStackSpaceForBackTrackInfoPatternCharacter 1 // Only for !fixed quantifiers. @@ -42,6 +38,7 @@ namespace JSC { namespace Yarr { #define RegexStackSpaceForBackTrackInfoAlternative 1 // One per alternative. #define RegexStackSpaceForBackTrackInfoParentheticalAssertion 1 #define RegexStackSpaceForBackTrackInfoParenthesesOnce 1 // Only for !fixed quantifiers. +#define RegexStackSpaceForBackTrackInfoParenthesesTerminal 1 #define RegexStackSpaceForBackTrackInfoParentheses 4 struct PatternDisjunction; @@ -110,12 +107,13 @@ struct PatternTerm { union { UChar patternCharacter; CharacterClass* characterClass; - unsigned subpatternId; + unsigned backReferenceSubpatternId; struct { PatternDisjunction* disjunction; unsigned subpatternId; unsigned lastSubpatternId; bool isCopy; + bool isTerminal; } parentheses; }; QuantifierType quantityType; @@ -147,6 +145,7 @@ struct PatternTerm { parentheses.disjunction = disjunction; parentheses.subpatternId = subpatternId; parentheses.isCopy = false; + parentheses.isTerminal = false; quantityType = QuantifierFixedCount; quantityCount = 1; } @@ -163,7 +162,7 @@ struct PatternTerm { : type(TypeBackReference) , invertOrCapture(false) { - subpatternId = spatternId; + backReferenceSubpatternId = spatternId; quantityType = QuantifierFixedCount; quantityCount = 1; } @@ -429,6 +428,4 @@ private: } } // namespace JSC::Yarr -#endif - #endif // RegexPattern_h diff --git a/JavaScriptGlue/ChangeLog b/JavaScriptGlue/ChangeLog index c7b2dce..9693952 100644 --- a/JavaScriptGlue/ChangeLog +++ b/JavaScriptGlue/ChangeLog @@ -1,3 +1,9 @@ +2010-12-01 Geoffrey Garen + + Build fix: Added a forwarding header. + + * ForwardingHeaders/wtf/OSAllocator.h: Added. + 2010-10-25 Oliver Hunt Reviewed by Gavin Barraclough. diff --git a/JavaScriptGlue/Configurations/Version.xcconfig b/JavaScriptGlue/Configurations/Version.xcconfig index d4cb8e7..ee86a20 100644 --- a/JavaScriptGlue/Configurations/Version.xcconfig +++ b/JavaScriptGlue/Configurations/Version.xcconfig @@ -22,7 +22,7 @@ // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. MAJOR_VERSION = 534; -MINOR_VERSION = 13; +MINOR_VERSION = 14; TINY_VERSION = 0; FULL_VERSION = $(MAJOR_VERSION).$(MINOR_VERSION); diff --git a/JavaScriptGlue/ForwardingHeaders/wtf/OSAllocator.h b/JavaScriptGlue/ForwardingHeaders/wtf/OSAllocator.h new file mode 100644 index 0000000..637611a --- /dev/null +++ b/JavaScriptGlue/ForwardingHeaders/wtf/OSAllocator.h @@ -0,0 +1 @@ +#include diff --git a/LayoutTests/fast/dom/DeviceOrientation/create-event-onorientationchange-expected.txt b/LayoutTests/fast/dom/DeviceOrientation/create-event-onorientationchange-expected.txt deleted file mode 100644 index 0f0aac6..0000000 --- a/LayoutTests/fast/dom/DeviceOrientation/create-event-onorientationchange-expected.txt +++ /dev/null @@ -1,16 +0,0 @@ -Tests that document.createEvent() works with orientationChange - -On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". - - - -FAIL... orientationChange event doesn't appear to be enabled or implemented. - - -PASS successfullyParsed is true - -TEST COMPLETE - - - - diff --git a/LayoutTests/fast/dom/DeviceOrientation/create-event-onorientationchange.html b/LayoutTests/fast/dom/DeviceOrientation/create-event-onorientationchange.html deleted file mode 100644 index 7a033e0..0000000 --- a/LayoutTests/fast/dom/DeviceOrientation/create-event-onorientationchange.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - -

-

-
- - - - diff --git a/LayoutTests/fast/dom/DeviceOrientation/script-tests/create-event-onorientationchange.js b/LayoutTests/fast/dom/DeviceOrientation/script-tests/create-event-onorientationchange.js deleted file mode 100644 index a63685b..0000000 --- a/LayoutTests/fast/dom/DeviceOrientation/script-tests/create-event-onorientationchange.js +++ /dev/null @@ -1,18 +0,0 @@ -description('Tests that document.createEvent() works with orientationChange') - -function handleOrientationChange() -{ - document.getElementById('result').innerHTML = "PASS"; -} - -window.addEventListener('onorientationchange', handleOrientationChange, false); - -try { - var event = document.createEvent("OrientationEvent"); - event.initEvent("orientationchange", false, false); - window.dispatchEvent(event); -} catch(e) { - document.getElementById('result').innerHTML = "FAIL... orientationChange event doesn't appear to be enabled or implemented."; -} - -window.successfullyParsed = true; diff --git a/LayoutTests/fast/dom/DeviceOrientation/script-tests/event-after-navigation.js b/LayoutTests/fast/dom/DeviceOrientation/script-tests/event-after-navigation.js index 2756e55..77e4ec7 100644 --- a/LayoutTests/fast/dom/DeviceOrientation/script-tests/event-after-navigation.js +++ b/LayoutTests/fast/dom/DeviceOrientation/script-tests/event-after-navigation.js @@ -5,8 +5,10 @@ if (window.layoutTestController) else debug('This test can not be run without the LayoutTestController'); -window.addEventListener('deviceorientation', function() { } ); -window.location = "resources/event-after-navigation-new.html"; +document.body.onload = function() { + window.addEventListener('deviceorientation', function() { } ); + window.location = "resources/event-after-navigation-new.html"; +} window.jsTestIsAsync = true; window.successfullyParsed = true; diff --git a/LayoutTests/fast/encoding/xml-utf-8-default-expected.txt b/LayoutTests/fast/encoding/xml-utf-8-default-expected.txt index 04a1c26..f70fd7f 100644 --- a/LayoutTests/fast/encoding/xml-utf-8-default-expected.txt +++ b/LayoutTests/fast/encoding/xml-utf-8-default-expected.txt @@ -1,3 +1,5 @@ When dumped into a text file by the test controller, this needs to be viewed as UTF-8: This is an em dash, —, this is is a delta symbol, ∆, this is an uppercase pi, âˆ, and this is a lowercase pi, Ï€. + +Characters from unicode plane 1, like mathematical bold script capital a, ð“, and mathematical bold fraktur small u, ð–š, work too. diff --git a/LayoutTests/fast/encoding/xml-utf-8-default.xml b/LayoutTests/fast/encoding/xml-utf-8-default.xml index 1f07505..705bbaf 100644 --- a/LayoutTests/fast/encoding/xml-utf-8-default.xml +++ b/LayoutTests/fast/encoding/xml-utf-8-default.xml @@ -4,6 +4,7 @@

When dumped into a text file by the test controller, this needs to be viewed as UTF-8:

This is an em dash, —, this is is a delta symbol, ∆, this is an uppercase pi, âˆ, and this is a lowercase pi, Ï€.

+

Characters from unicode plane 1, like mathematical bold script capital a, ð“, and mathematical bold fraktur small u, ð–š, work too.

diff --git a/LayoutTests/fast/js/resources/standalone-pre.js b/LayoutTests/fast/js/resources/standalone-pre.js index 692f1c1..b80c3cb 100644 --- a/LayoutTests/fast/js/resources/standalone-pre.js +++ b/LayoutTests/fast/js/resources/standalone-pre.js @@ -27,6 +27,8 @@ function testFailed(msg) function areArraysEqual(_a, _b) { + if (Object.prototype.toString.call(_a) != Object.prototype.toString.call([])) + return false; if (_a.length !== _b.length) return false; for (var i = 0; i < _a.length; i++) diff --git a/LayoutTests/http/tests/resources/balls-of-the-orient.aif b/LayoutTests/http/tests/resources/balls-of-the-orient.aif new file mode 100644 index 0000000..eabe5bf Binary files /dev/null and b/LayoutTests/http/tests/resources/balls-of-the-orient.aif differ diff --git a/LayoutTests/storage/domstorage/localstorage/private-browsing-affects-storage-expected.txt b/LayoutTests/storage/domstorage/localstorage/private-browsing-affects-storage-expected.txt index 6de4296..2fea061 100644 --- a/LayoutTests/storage/domstorage/localstorage/private-browsing-affects-storage-expected.txt +++ b/LayoutTests/storage/domstorage/localstorage/private-browsing-affects-storage-expected.txt @@ -1,7 +1,7 @@ This is a test to make sure that when private browsing is on any attempt to change the localStorage area fail. -Initial value of testItem is: InitialValue +Initial value of testItem is: null Caught exception trying to change item: Error: QUOTA_EXCEEDED_ERR: DOM Exception 22 -After change attempt, testItem is: InitialValue -After remove attempt, testItem is: InitialValue -After clear attempt, testItem is: InitialValue +After change attempt, testItem is: null +After remove attempt, testItem is: null +After clear attempt, testItem is: null diff --git a/LayoutTests/storage/domstorage/sessionstorage/private-browsing-affects-storage-expected.txt b/LayoutTests/storage/domstorage/sessionstorage/private-browsing-affects-storage-expected.txt index ed2017a..58c99f2 100644 --- a/LayoutTests/storage/domstorage/sessionstorage/private-browsing-affects-storage-expected.txt +++ b/LayoutTests/storage/domstorage/sessionstorage/private-browsing-affects-storage-expected.txt @@ -1,7 +1,7 @@ This is a test to make sure that when private browsing is on any attempt to change the sessionStorage area fail. -Initial value of testItem is: InitialValue +Initial value of testItem is: null Caught exception trying to change item: Error: QUOTA_EXCEEDED_ERR: DOM Exception 22 -After change attempt, testItem is: InitialValue -After remove attempt, testItem is: InitialValue -After clear attempt, testItem is: InitialValue +After change attempt, testItem is: null +After remove attempt, testItem is: null +After clear attempt, testItem is: null diff --git a/LayoutTests/storage/indexeddb/basics-expected.txt b/LayoutTests/storage/indexeddb/basics-expected.txt index b7b8b94..cae16d8 100644 --- a/LayoutTests/storage/indexeddb/basics-expected.txt +++ b/LayoutTests/storage/indexeddb/basics-expected.txt @@ -5,7 +5,7 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE PASS 'webkitIndexedDB' in window is true PASS webkitIndexedDB == null is false -webkitIndexedDB.open('name', 'description') +webkitIndexedDB.open('name') PASS 'onsuccess' in result is true PASS 'onerror' in result is true PASS 'readyState' in result is true @@ -22,12 +22,6 @@ PASS 'onerror' in event.target is true PASS 'readyState' in event.target is true PASS event.target.readyState is event.target.DONE -webkitIndexedDB.open('name'); -PASS Exception thrown. -webkitIndexedDB.open('name', null); -PASS Exception thrown. -webkitIndexedDB.open('name', undefined); -PASS Exception thrown. PASS successfullyParsed is true TEST COMPLETE diff --git a/LayoutTests/storage/indexeddb/basics.html b/LayoutTests/storage/indexeddb/basics.html index 2e382b2..2415070 100644 --- a/LayoutTests/storage/indexeddb/basics.html +++ b/LayoutTests/storage/indexeddb/basics.html @@ -21,7 +21,7 @@ function test() // FIXME: Verify other IndexedDatabaseRequest constructors, once they're implemented. - result = evalAndLog("webkitIndexedDB.open('name', 'description')"); + result = evalAndLog("webkitIndexedDB.open('name')"); verifyResult(result); result.onsuccess = openCallback; result.onerror = unexpectedErrorCallback; @@ -30,27 +30,6 @@ function test() function openCallback() { verifySuccessEvent(event); - try { - debug("webkitIndexedDB.open('name');"); - webkitIndexedDB.open('name'); - testFailed("Calling IDBFactory::open without a description should have thrown."); - } catch (err) { - testPassed("Exception thrown."); - } - try { - debug("webkitIndexedDB.open('name', null);"); - webkitIndexedDB.open('name', null); - testFailed("Calling IDBFactory::open with a null description should have thrown."); - } catch (err) { - testPassed("Exception thrown."); - } - try { - debug("webkitIndexedDB.open('name', undefined);"); - webkitIndexedDB.open('name', undefined); - testFailed("Calling IDBFactory::open with an undefined description should have thrown."); - } catch (err) { - testPassed("Exception thrown."); - } done(); } diff --git a/LayoutTests/storage/indexeddb/constants-expected.txt b/LayoutTests/storage/indexeddb/constants-expected.txt index 8f53b56..ead0937 100644 --- a/LayoutTests/storage/indexeddb/constants-expected.txt +++ b/LayoutTests/storage/indexeddb/constants-expected.txt @@ -3,11 +3,6 @@ Test IndexedDB's constants. On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". -PASS webkitIDBKeyRange.SINGLE is 0 -PASS webkitIDBKeyRange.LEFT_OPEN is 1 -PASS webkitIDBKeyRange.RIGHT_OPEN is 2 -PASS webkitIDBKeyRange.LEFT_BOUND is 4 -PASS webkitIDBKeyRange.RIGHT_BOUND is 8 PASS webkitIDBDatabaseException.UNKNOWN_ERR is 1 PASS webkitIDBDatabaseException.NON_TRANSIENT_ERR is 1 PASS webkitIDBDatabaseException.NOT_FOUND_ERR is 2 @@ -27,8 +22,7 @@ PASS webkitIDBCursor.PREV is 2 PASS webkitIDBCursor.PREV_NO_DUPLICATE is 3 PASS webkitIDBTransaction.READ_WRITE is 0 PASS webkitIDBTransaction.READ_ONLY is 1 -PASS webkitIDBTransaction.SNAPSHOT_READ is 2 -PASS webkitIDBTransaction.VERSION_CHANGE is 3 +PASS webkitIDBTransaction.VERSION_CHANGE is 2 PASS successfullyParsed is true TEST COMPLETE diff --git a/LayoutTests/storage/indexeddb/constants.html b/LayoutTests/storage/indexeddb/constants.html index 9cdf4c4..7909e24 100644 --- a/LayoutTests/storage/indexeddb/constants.html +++ b/LayoutTests/storage/indexeddb/constants.html @@ -16,12 +16,6 @@ if (window.layoutTestController) function test() { - shouldBe("webkitIDBKeyRange.SINGLE", "0"); - shouldBe("webkitIDBKeyRange.LEFT_OPEN", "1"); - shouldBe("webkitIDBKeyRange.RIGHT_OPEN", "2"); - shouldBe("webkitIDBKeyRange.LEFT_BOUND", "4"); - shouldBe("webkitIDBKeyRange.RIGHT_BOUND", "8"); - shouldBe("webkitIDBDatabaseException.UNKNOWN_ERR", "1"); shouldBe("webkitIDBDatabaseException.NON_TRANSIENT_ERR", "1"); shouldBe("webkitIDBDatabaseException.NOT_FOUND_ERR", "2"); @@ -44,8 +38,7 @@ function test() shouldBe("webkitIDBTransaction.READ_WRITE", "0"); shouldBe("webkitIDBTransaction.READ_ONLY", "1"); - shouldBe("webkitIDBTransaction.SNAPSHOT_READ", "2"); - shouldBe("webkitIDBTransaction.VERSION_CHANGE", "3"); + shouldBe("webkitIDBTransaction.VERSION_CHANGE", "2"); } test(); diff --git a/LayoutTests/storage/indexeddb/create-and-remove-object-store-expected.txt b/LayoutTests/storage/indexeddb/create-and-remove-object-store-expected.txt new file mode 100644 index 0000000..fd14c83 --- /dev/null +++ b/LayoutTests/storage/indexeddb/create-and-remove-object-store-expected.txt @@ -0,0 +1,60 @@ +Test IndexedDB's create and removeObjectStore + +On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". + + +PASS 'webkitIndexedDB' in window is true +PASS webkitIndexedDB == null is false +webkitIndexedDB.open('name') +PASS 'onsuccess' in result is true +PASS 'onerror' in result is true +PASS 'readyState' in result is true +An event should fire shortly... + +openSuccess(): +Success event fired: +PASS 'result' in event is true +PASS 'code' in event is false +PASS 'message' in event is false +PASS 'source' in event is true +PASS event.source != null is true +PASS 'onsuccess' in event.target is true +PASS 'onerror' in event.target is true +PASS 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +db = event.result +Trying create +PASS code is webkitIDBDatabaseException.NOT_ALLOWED_ERR +Trying remove +PASS code is webkitIDBDatabaseException.NOT_ALLOWED_ERR +result = db.setVersion('version 1') +Trying create +PASS code is webkitIDBDatabaseException.NOT_ALLOWED_ERR +Trying remove +PASS code is webkitIDBDatabaseException.NOT_ALLOWED_ERR +Success event fired: +PASS 'result' in event is true +PASS 'code' in event is false +PASS 'message' in event is false +PASS 'source' in event is true +PASS event.source != null is true +PASS 'onsuccess' in event.target is true +PASS 'onerror' in event.target is true +PASS 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +Deleted all object stores. +db.createObjectStore('tmp') +Adding 'tmp' again +PASS code is webkitIDBDatabaseException.CONSTRAINT_ERR +trans = db.transaction({mode: webkitIDBTransaction.READ_WRITE}) +trans.objectStore('tmp').get(0) +Trying create +PASS code is webkitIDBDatabaseException.NOT_ALLOWED_ERR +Trying remove +PASS code is webkitIDBDatabaseException.NOT_ALLOWED_ERR +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/storage/indexeddb/create-and-remove-object-store.html b/LayoutTests/storage/indexeddb/create-and-remove-object-store.html new file mode 100644 index 0000000..c5284af --- /dev/null +++ b/LayoutTests/storage/indexeddb/create-and-remove-object-store.html @@ -0,0 +1,96 @@ + + + + + + + + +

+
+ + + diff --git a/LayoutTests/storage/indexeddb/create-object-store-options-expected.txt b/LayoutTests/storage/indexeddb/create-object-store-options-expected.txt new file mode 100644 index 0000000..83016d6 --- /dev/null +++ b/LayoutTests/storage/indexeddb/create-object-store-options-expected.txt @@ -0,0 +1,33 @@ +Test IndexedDB's createObjectStore's various options + +On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". + + +PASS 'webkitIndexedDB' in window is true +PASS webkitIndexedDB == null is false +webkitIndexedDB.open('name', 'description') +PASS 'onsuccess' in result is true +PASS 'onerror' in result is true +PASS 'readyState' in result is true +An event should fire shortly... + +db = event.result +result = db.setVersion('version 1') +Deleted all object stores. +db.createObjectStore('a', {keyPath: 'a'}) +db.createObjectStore('b') +db.createObjectStore('c', {autoIncrement: true}); +PASS Exception thrown +PASS code is webkitIDBDatabaseException.UNKNOWN_ERR +trans = db.transaction({mode: webkitIDBTransaction.READ_WRITE}) +PASS trans.mode is webkitIDBTransaction.READ_WRITE +trans.objectStore('a').put({'a': 0}) +trans.objectStore('b').put({'a': 0}, 0) +trans.objectStore('a').get(0) +PASS event.result.a is {a: 0} +trans.objectStore('b').get(0) +PASS event.result.a is {a: 0} +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/storage/indexeddb/create-object-store-options.html b/LayoutTests/storage/indexeddb/create-object-store-options.html new file mode 100644 index 0000000..4abb8f6 --- /dev/null +++ b/LayoutTests/storage/indexeddb/create-object-store-options.html @@ -0,0 +1,102 @@ + + + + + + + + +

+
+ + + diff --git a/LayoutTests/storage/indexeddb/database-basics-expected.txt b/LayoutTests/storage/indexeddb/database-basics-expected.txt index 2a5fa2f..f1fa5ad 100644 --- a/LayoutTests/storage/indexeddb/database-basics-expected.txt +++ b/LayoutTests/storage/indexeddb/database-basics-expected.txt @@ -3,7 +3,7 @@ Test the basics of IndexedDB's IDBDatabase. On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". -webkitIndexedDB.open('name', 'description') +webkitIndexedDB.open('name') PASS 'onsuccess' in result is true PASS 'onerror' in result is true PASS 'readyState' in result is true @@ -79,17 +79,17 @@ PASS event.target.readyState is event.target.DONE PASS db.version is "version b" PASS db.name is "name" -PASS db.objectStores is [] -PASS db.objectStores.length is 0 -PASS db.objectStores.contains('') is false -PASS db.objectStores[0] is null -PASS db.objectStores.item(0) is null +PASS db.objectStoreNames is [] +PASS db.objectStoreNames.length is 0 +PASS db.objectStoreNames.contains('') is false +PASS db.objectStoreNames[0] is null +PASS db.objectStoreNames.item(0) is null db.createObjectStore("test123") -PASS db.objectStores is ['test123'] -PASS db.objectStores.length is 1 -PASS db.objectStores.contains('') is false -PASS db.objectStores.contains('test456') is false -PASS db.objectStores.contains('test123') is true +PASS db.objectStoreNames is ['test123'] +PASS db.objectStoreNames.length is 1 +PASS db.objectStoreNames.contains('') is false +PASS db.objectStoreNames.contains('test456') is false +PASS db.objectStoreNames.contains('test123') is true db.setVersion("version c") PASS 'onsuccess' in result is true PASS 'onerror' in result is true @@ -109,20 +109,20 @@ PASS event.target.readyState is event.target.DONE PASS db.version is "version c" PASS db.name is "name" -PASS db.objectStores is ['test123'] -PASS db.objectStores.length is 1 -PASS db.objectStores.contains('') is false -PASS db.objectStores.contains('test456') is false -PASS db.objectStores.contains('test123') is true +PASS db.objectStoreNames is ['test123'] +PASS db.objectStoreNames.length is 1 +PASS db.objectStoreNames.contains('') is false +PASS db.objectStoreNames.contains('test456') is false +PASS db.objectStoreNames.contains('test123') is true db.createObjectStore("test456") setVersionTrans = event.result PASS setVersionTrans !== null is true PASS db.version is "version b" -PASS db.objectStores is ['test123'] -PASS db.objectStores.length is 1 -PASS db.objectStores.contains('') is false -PASS db.objectStores.contains('test456') is false -PASS db.objectStores.contains('test123') is true +PASS db.objectStoreNames is ['test123'] +PASS db.objectStoreNames.length is 1 +PASS db.objectStoreNames.contains('') is false +PASS db.objectStoreNames.contains('test456') is false +PASS db.objectStoreNames.contains('test123') is true PASS successfullyParsed is true TEST COMPLETE diff --git a/LayoutTests/storage/indexeddb/database-basics.html b/LayoutTests/storage/indexeddb/database-basics.html index 31c887b..b070de0 100644 --- a/LayoutTests/storage/indexeddb/database-basics.html +++ b/LayoutTests/storage/indexeddb/database-basics.html @@ -16,7 +16,7 @@ if (window.layoutTestController) function test() { - result = evalAndLog("webkitIndexedDB.open('name', 'description')"); + result = evalAndLog("webkitIndexedDB.open('name')"); verifyResult(result); result.onsuccess = openSuccess; result.onerror = unexpectedErrorCallback; @@ -68,11 +68,11 @@ function createObjectStore() verifySuccessEvent(event); shouldBeEqualToString("db.version", "version b"); shouldBeEqualToString("db.name", "name"); - shouldBe("db.objectStores", "[]"); - shouldBe("db.objectStores.length", "0"); - shouldBe("db.objectStores.contains('')", "false"); - shouldBeNull("db.objectStores[0]"); - shouldBeNull("db.objectStores.item(0)"); + shouldBe("db.objectStoreNames", "[]"); + shouldBe("db.objectStoreNames.length", "0"); + shouldBe("db.objectStoreNames.contains('')", "false"); + shouldBeNull("db.objectStoreNames[0]"); + shouldBeNull("db.objectStoreNames.item(0)"); objectStore = evalAndLog('db.createObjectStore("test123")'); checkObjectStore(); @@ -81,11 +81,11 @@ function createObjectStore() function checkObjectStore() { - shouldBe("db.objectStores", "['test123']"); - shouldBe("db.objectStores.length", "1"); - shouldBe("db.objectStores.contains('')", "false"); - shouldBe("db.objectStores.contains('test456')", "false"); - shouldBe("db.objectStores.contains('test123')", "true"); + shouldBe("db.objectStoreNames", "['test123']"); + shouldBe("db.objectStoreNames.length", "1"); + shouldBe("db.objectStoreNames.contains('')", "false"); + shouldBe("db.objectStoreNames.contains('test456')", "false"); + shouldBe("db.objectStoreNames.contains('test123')", "true"); } function commitAndContinue() diff --git a/LayoutTests/storage/indexeddb/database-quota-expected.txt b/LayoutTests/storage/indexeddb/database-quota-expected.txt index 91d3ac7..3ea24d9 100644 --- a/LayoutTests/storage/indexeddb/database-quota-expected.txt +++ b/LayoutTests/storage/indexeddb/database-quota-expected.txt @@ -3,7 +3,7 @@ Tests IndexedDB's quota enforcing mechanism. On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". -webkitIndexedDB.open('name', 'description') +webkitIndexedDB.open('name') PASS 'onsuccess' in result is true PASS 'onerror' in result is true PASS 'readyState' in result is true @@ -55,15 +55,15 @@ PASS event.target.readyState is event.target.DONE PASS db.version is "new version" PASS db.name is "name" -PASS db.objectStores is [] -PASS db.objectStores.length is 0 -PASS db.objectStores.contains('') is false +PASS db.objectStoreNames is [] +PASS db.objectStoreNames.length is 0 +PASS db.objectStoreNames.contains('') is false db.createObjectStore("test123") -PASS db.objectStores is ['test123'] -PASS db.objectStores.length is 1 -PASS db.objectStores.contains('') is false -PASS db.objectStores.contains('test456') is false -PASS db.objectStores.contains('test123') is true +PASS db.objectStoreNames is ['test123'] +PASS db.objectStoreNames.length is 1 +PASS db.objectStoreNames.contains('') is false +PASS db.objectStoreNames.contains('test456') is false +PASS db.objectStoreNames.contains('test123') is true trans = db.transaction() Creating 'data' which contains 64K of data PASS data.length is 65536 diff --git a/LayoutTests/storage/indexeddb/database-quota.html b/LayoutTests/storage/indexeddb/database-quota.html index aefe6b1..b4207d4 100644 --- a/LayoutTests/storage/indexeddb/database-quota.html +++ b/LayoutTests/storage/indexeddb/database-quota.html @@ -16,7 +16,7 @@ if (window.layoutTestController) function test() { - result = evalAndLog("webkitIndexedDB.open('name', 'description')"); + result = evalAndLog("webkitIndexedDB.open('name')"); verifyResult(result); result.onsuccess = openSuccess; result.onerror = unexpectedErrorCallback; @@ -49,9 +49,9 @@ function createNewObjectStore() verifySuccessEvent(event); shouldBeEqualToString("db.version", "new version"); shouldBeEqualToString("db.name", "name"); - shouldBe("db.objectStores", "[]"); - shouldBe("db.objectStores.length", "0"); - shouldBe("db.objectStores.contains('')", "false"); + shouldBe("db.objectStoreNames", "[]"); + shouldBe("db.objectStoreNames.length", "0"); + shouldBe("db.objectStoreNames.contains('')", "false"); objectStore = evalAndLog('db.createObjectStore("test123")'); checkObjectStore(); @@ -60,11 +60,11 @@ function createNewObjectStore() function checkObjectStore() { - shouldBe("db.objectStores", "['test123']"); - shouldBe("db.objectStores.length", "1"); - shouldBe("db.objectStores.contains('')", "false"); - shouldBe("db.objectStores.contains('test456')", "false"); - shouldBe("db.objectStores.contains('test123')", "true"); + shouldBe("db.objectStoreNames", "['test123']"); + shouldBe("db.objectStoreNames.length", "1"); + shouldBe("db.objectStoreNames.contains('')", "false"); + shouldBe("db.objectStoreNames.contains('test456')", "false"); + shouldBe("db.objectStoreNames.contains('test123')", "true"); } function commitAndContinue() diff --git a/LayoutTests/storage/indexeddb/duplicates-expected.txt b/LayoutTests/storage/indexeddb/duplicates-expected.txt index 2ea8c36..8de488c 100644 --- a/LayoutTests/storage/indexeddb/duplicates-expected.txt +++ b/LayoutTests/storage/indexeddb/duplicates-expected.txt @@ -3,7 +3,7 @@ Verify that you can put the same data in 2 different databases without uniquenes On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". -webkitIndexedDB.open('name', 'description') +webkitIndexedDB.open('name') PASS 'onsuccess' in result is true PASS 'onerror' in result is true PASS 'readyState' in result is true @@ -269,7 +269,7 @@ PASS 'readyState' in event.target is true PASS event.target.readyState is event.target.DONE PASS event.result === null is true -webkitIndexedDB.open('name2', 'description2') +webkitIndexedDB.open('name2') PASS 'onsuccess' in result is true PASS 'onerror' in result is true PASS 'readyState' in result is true diff --git a/LayoutTests/storage/indexeddb/duplicates.html b/LayoutTests/storage/indexeddb/duplicates.html index 70cf8c4..352367f 100644 --- a/LayoutTests/storage/indexeddb/duplicates.html +++ b/LayoutTests/storage/indexeddb/duplicates.html @@ -18,9 +18,9 @@ testCount = 0; function test() { if (testCount++ == 0) - result = evalAndLog("webkitIndexedDB.open('name', 'description')"); + result = evalAndLog("webkitIndexedDB.open('name')"); else - result = evalAndLog("webkitIndexedDB.open('name2', 'description2')"); + result = evalAndLog("webkitIndexedDB.open('name2')"); verifyResult(result); result.onsuccess = setVersion; result.onerror = unexpectedErrorCallback; diff --git a/LayoutTests/storage/indexeddb/index-basics-expected.txt b/LayoutTests/storage/indexeddb/index-basics-expected.txt index f886a19..acc5f4d 100644 --- a/LayoutTests/storage/indexeddb/index-basics-expected.txt +++ b/LayoutTests/storage/indexeddb/index-basics-expected.txt @@ -3,7 +3,7 @@ Test the basics of IndexedDB's webkitIDBIndex. On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". -webkitIndexedDB.open('name', 'description') +webkitIndexedDB.open('name') PASS 'onsuccess' in result is true PASS 'onerror' in result is true PASS 'readyState' in result is true diff --git a/LayoutTests/storage/indexeddb/index-basics.html b/LayoutTests/storage/indexeddb/index-basics.html index 7a16c3a..7907070 100644 --- a/LayoutTests/storage/indexeddb/index-basics.html +++ b/LayoutTests/storage/indexeddb/index-basics.html @@ -16,7 +16,7 @@ if (window.layoutTestController) function test() { - result = evalAndLog("webkitIndexedDB.open('name', 'description')"); + result = evalAndLog("webkitIndexedDB.open('name')"); verifyResult(result); result.onsuccess = setVersion; result.onerror = unexpectedErrorCallback; diff --git a/LayoutTests/storage/indexeddb/index-cursor-expected.txt b/LayoutTests/storage/indexeddb/index-cursor-expected.txt index bc01070..159fbd7 100644 --- a/LayoutTests/storage/indexeddb/index-cursor-expected.txt +++ b/LayoutTests/storage/indexeddb/index-cursor-expected.txt @@ -3,7 +3,7 @@ Test IndexedDB's webkitIDBIndex.openCursor + the cursor it produces in depth. On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". -webkitIndexedDB.open('someDB', 'some description') +webkitIndexedDB.open('someDB') PASS 'onsuccess' in result is true PASS 'onerror' in result is true PASS 'readyState' in result is true diff --git a/LayoutTests/storage/indexeddb/index-cursor.html b/LayoutTests/storage/indexeddb/index-cursor.html index 6a9d1ac..fb3147d 100644 --- a/LayoutTests/storage/indexeddb/index-cursor.html +++ b/LayoutTests/storage/indexeddb/index-cursor.html @@ -16,8 +16,8 @@ if (window.layoutTestController) // In order of how it should be sorted by IndexedDB. window.testData = [ - null, - null, + 1, + 1, 2, 2, 10, @@ -29,7 +29,7 @@ window.testData = [ function openDatabase() { - result = evalAndLog("webkitIndexedDB.open('someDB', 'some description')"); + result = evalAndLog("webkitIndexedDB.open('someDB')"); verifyResult(result); result.onsuccess = setVersion; result.onerror = unexpectedErrorCallback; @@ -72,6 +72,7 @@ function addData() result = evalAndLog("objectStore.add({'x': testData[nextToAdd]}, nextToAdd)"); verifyResult(result); result.onsuccess = ++window.nextToAdd < testData.length ? addData : scheduleTests; + result.onerror = unexpectedErrorCallback; } function scheduleTests() @@ -180,13 +181,13 @@ function runNextTest() var keyRange; if (lower !== null && upper !== null) - keyRange = webkitIDBKeyRange.bound(testData[lower], testData[upper], lowerIsOpen, upperIsOpen); + keyRange = webkitIDBKeyRange.bound(testData[lower], testData[upper], {lowerOpen: lowerIsOpen, upperOpen: upperIsOpen}); else if (lower !== null) - keyRange = webkitIDBKeyRange.leftBound(testData[lower], lowerIsOpen); + keyRange = webkitIDBKeyRange.lowerBound(testData[lower], lowerIsOpen); else - keyRange = webkitIDBKeyRange.rightBound(testData[upper], upperIsOpen); + keyRange = webkitIDBKeyRange.upperBound(testData[upper], upperIsOpen); - var request = indexObject.openKeyCursor(keyRange, ascending ? webkitIDBCursor.NEXT : webkitIDBCursor.PREV); + var request = indexObject.openKeyCursor({range: keyRange, direction: ascending ? webkitIDBCursor.NEXT : webkitIDBCursor.PREV}); request.onsuccess = cursorIteration; request.onerror = unexpectedErrorCallback; } @@ -253,7 +254,7 @@ function testNullKeyRange() debug(""); debug(str); - var request = indexObject.openKeyCursor(null, ascending ? webkitIDBCursor.NEXT : webkitIDBCursor.PREV); + var request = indexObject.openKeyCursor({direction: ascending ? webkitIDBCursor.NEXT : webkitIDBCursor.PREV}); request.onsuccess = cursorIteration; request.onerror = unexpectedErrorCallback; } diff --git a/LayoutTests/storage/indexeddb/keyrange-expected.txt b/LayoutTests/storage/indexeddb/keyrange-expected.txt index 1a7dfff..faac937 100644 --- a/LayoutTests/storage/indexeddb/keyrange-expected.txt +++ b/LayoutTests/storage/indexeddb/keyrange-expected.txt @@ -3,149 +3,155 @@ Test IndexedDB's KeyRange. On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". -PASS 'SINGLE' in webkitIDBKeyRange is true -PASS 'LEFT_OPEN' in webkitIDBKeyRange is true -PASS 'RIGHT_OPEN' in webkitIDBKeyRange is true -PASS 'LEFT_BOUND' in webkitIDBKeyRange is true -PASS 'RIGHT_BOUND' in webkitIDBKeyRange is true -PASS 'left' in webkitIDBKeyRange is false -PASS 'right' in webkitIDBKeyRange is false -PASS 'flags' in webkitIDBKeyRange is false +PASS 'lower' in webkitIDBKeyRange is false +PASS 'upper' in webkitIDBKeyRange is false +PASS 'lowerOpen' in webkitIDBKeyRange is false +PASS 'upperOpen' in webkitIDBKeyRange is false PASS 'only' in webkitIDBKeyRange is true -PASS 'leftBound' in webkitIDBKeyRange is true -PASS 'rightBound' in webkitIDBKeyRange is true +PASS 'lowerBound' in webkitIDBKeyRange is true +PASS 'upperBound' in webkitIDBKeyRange is true PASS 'bound' in webkitIDBKeyRange is true instance = webkitIDBKeyRange.only(1) -PASS 'SINGLE' in instance is true -PASS 'LEFT_OPEN' in instance is true -PASS 'RIGHT_OPEN' in instance is true -PASS 'LEFT_BOUND' in instance is true -PASS 'RIGHT_BOUND' in instance is true -PASS 'left' in instance is true -PASS 'right' in instance is true -PASS 'flags' in instance is true +PASS 'lower' in instance is true +PASS 'upper' in instance is true +PASS 'lowerOpen' in instance is true +PASS 'upperOpen' in instance is true PASS 'only' in instance is false -PASS 'leftBound' in instance is false -PASS 'rightBound' in instance is false +PASS 'lowerBound' in instance is false +PASS 'upperBound' in instance is false PASS 'bound' in instance is false webkitIDBKeyRange.only(1) -PASS keyRange.left is 1 -PASS keyRange.right is 1 -PASS keyRange.flags is keyRange.SINGLE +PASS keyRange.lower is 1 +PASS keyRange.upper is 1 +PASS keyRange.lowerOpen is false +PASS keyRange.upperOpen is false webkitIDBKeyRange.only('a') -PASS keyRange.left is 'a' -PASS keyRange.right is 'a' -PASS keyRange.flags is keyRange.SINGLE -webkitIDBKeyRange.leftBound(10,true) -PASS keyRange.left is 10 -PASS keyRange.right is null -PASS keyRange.flags is keyRange.LEFT_OPEN | keyRange.LEFT_BOUND -webkitIDBKeyRange.leftBound(11,false) -PASS keyRange.left is 11 -PASS keyRange.right is null -PASS keyRange.flags is keyRange.LEFT_BOUND -webkitIDBKeyRange.leftBound(12,undefined) -PASS keyRange.left is 12 -PASS keyRange.right is null -PASS keyRange.flags is keyRange.LEFT_BOUND -webkitIDBKeyRange.leftBound('aa',true) -PASS keyRange.left is 'aa' -PASS keyRange.right is null -PASS keyRange.flags is keyRange.LEFT_OPEN | keyRange.LEFT_BOUND -webkitIDBKeyRange.leftBound('ab',false) -PASS keyRange.left is 'ab' -PASS keyRange.right is null -PASS keyRange.flags is keyRange.LEFT_BOUND -webkitIDBKeyRange.leftBound('ac',undefined) -PASS keyRange.left is 'ac' -PASS keyRange.right is null -PASS keyRange.flags is keyRange.LEFT_BOUND -webkitIDBKeyRange.rightBound(20,true) -PASS keyRange.right is 20 -PASS keyRange.left is null -PASS keyRange.flags is keyRange.RIGHT_OPEN | keyRange.RIGHT_BOUND -webkitIDBKeyRange.rightBound(21,false) -PASS keyRange.right is 21 -PASS keyRange.left is null -PASS keyRange.flags is keyRange.RIGHT_BOUND -webkitIDBKeyRange.rightBound(22,undefined) -PASS keyRange.right is 22 -PASS keyRange.left is null -PASS keyRange.flags is keyRange.RIGHT_BOUND -webkitIDBKeyRange.rightBound('ba',true) -PASS keyRange.right is 'ba' -PASS keyRange.left is null -PASS keyRange.flags is keyRange.RIGHT_OPEN | keyRange.RIGHT_BOUND -webkitIDBKeyRange.rightBound('bb',false) -PASS keyRange.right is 'bb' -PASS keyRange.left is null -PASS keyRange.flags is keyRange.RIGHT_BOUND -webkitIDBKeyRange.rightBound('bc',undefined) -PASS keyRange.right is 'bc' -PASS keyRange.left is null -PASS keyRange.flags is keyRange.RIGHT_BOUND -webkitIDBKeyRange.bound(30,40,undefined,undefined) -PASS keyRange.left is 30 -PASS keyRange.right is 40 -PASS leftFlags is keyRange.LEFT_BOUND -PASS rightFlags is keyRange.RIGHT_BOUND -webkitIDBKeyRange.bound(31,41,false,false) -PASS keyRange.left is 31 -PASS keyRange.right is 41 -PASS leftFlags is keyRange.LEFT_BOUND -PASS rightFlags is keyRange.RIGHT_BOUND -webkitIDBKeyRange.bound(32,42,false,true) -PASS keyRange.left is 32 -PASS keyRange.right is 42 -PASS leftFlags is keyRange.LEFT_BOUND -PASS rightFlags is keyRange.RIGHT_OPEN | keyRange.RIGHT_BOUND -webkitIDBKeyRange.bound(33,43,true,false) -PASS keyRange.left is 33 -PASS keyRange.right is 43 -PASS leftFlags is keyRange.LEFT_OPEN | keyRange.LEFT_BOUND -PASS rightFlags is keyRange.RIGHT_BOUND -webkitIDBKeyRange.bound(34,44,true,true) -PASS keyRange.left is 34 -PASS keyRange.right is 44 -PASS leftFlags is keyRange.LEFT_OPEN | keyRange.LEFT_BOUND -PASS rightFlags is keyRange.RIGHT_OPEN | keyRange.RIGHT_BOUND -webkitIDBKeyRange.bound('aaa','aba',false,false) -PASS keyRange.left is 'aaa' -PASS keyRange.right is 'aba' -PASS leftFlags is keyRange.LEFT_BOUND -PASS rightFlags is keyRange.RIGHT_BOUND -webkitIDBKeyRange.bound('aab','abb',undefined,undefined) -PASS keyRange.left is 'aab' -PASS keyRange.right is 'abb' -PASS leftFlags is keyRange.LEFT_BOUND -PASS rightFlags is keyRange.RIGHT_BOUND -webkitIDBKeyRange.bound('aac','abc',false,false) -PASS keyRange.left is 'aac' -PASS keyRange.right is 'abc' -PASS leftFlags is keyRange.LEFT_BOUND -PASS rightFlags is keyRange.RIGHT_BOUND -webkitIDBKeyRange.bound('aad','abd',false,true) -PASS keyRange.left is 'aad' -PASS keyRange.right is 'abd' -PASS leftFlags is keyRange.LEFT_BOUND -PASS rightFlags is keyRange.RIGHT_OPEN | keyRange.RIGHT_BOUND -webkitIDBKeyRange.bound('aae','abe',true,false) -PASS keyRange.left is 'aae' -PASS keyRange.right is 'abe' -PASS leftFlags is keyRange.LEFT_OPEN | keyRange.LEFT_BOUND -PASS rightFlags is keyRange.RIGHT_BOUND -webkitIDBKeyRange.bound('aaf','abf',true,true) -PASS keyRange.left is 'aaf' -PASS keyRange.right is 'abf' -PASS leftFlags is keyRange.LEFT_OPEN | keyRange.LEFT_BOUND -PASS rightFlags is keyRange.RIGHT_OPEN | keyRange.RIGHT_BOUND +PASS keyRange.lower is 'a' +PASS keyRange.upper is 'a' +PASS keyRange.lowerOpen is false +PASS keyRange.upperOpen is false +webkitIDBKeyRange.lowerBound(10,true) +PASS keyRange.lower is 10 +PASS keyRange.lowerOpen is true +PASS keyRange.upper is null +PASS keyRange.upperOpen is false +webkitIDBKeyRange.lowerBound(11,false) +PASS keyRange.lower is 11 +PASS keyRange.lowerOpen is false +PASS keyRange.upper is null +PASS keyRange.upperOpen is false +webkitIDBKeyRange.lowerBound(12,undefined) +PASS keyRange.lower is 12 +PASS keyRange.lowerOpen is false +PASS keyRange.upper is null +PASS keyRange.upperOpen is false +webkitIDBKeyRange.lowerBound('aa',true) +PASS keyRange.lower is 'aa' +PASS keyRange.lowerOpen is true +PASS keyRange.upper is null +PASS keyRange.upperOpen is false +webkitIDBKeyRange.lowerBound('ab',false) +PASS keyRange.lower is 'ab' +PASS keyRange.lowerOpen is false +PASS keyRange.upper is null +PASS keyRange.upperOpen is false +webkitIDBKeyRange.lowerBound('ac',undefined) +PASS keyRange.lower is 'ac' +PASS keyRange.lowerOpen is false +PASS keyRange.upper is null +PASS keyRange.upperOpen is false +webkitIDBKeyRange.upperBound(20,true) +PASS keyRange.upper is 20 +PASS keyRange.upperOpen is true +PASS keyRange.lower is null +PASS keyRange.lowerOpen is false +webkitIDBKeyRange.upperBound(21,false) +PASS keyRange.upper is 21 +PASS keyRange.upperOpen is false +PASS keyRange.lower is null +PASS keyRange.lowerOpen is false +webkitIDBKeyRange.upperBound(22,undefined) +PASS keyRange.upper is 22 +PASS keyRange.upperOpen is false +PASS keyRange.lower is null +PASS keyRange.lowerOpen is false +webkitIDBKeyRange.upperBound('ba',true) +PASS keyRange.upper is 'ba' +PASS keyRange.upperOpen is true +PASS keyRange.lower is null +PASS keyRange.lowerOpen is false +webkitIDBKeyRange.upperBound('bb',false) +PASS keyRange.upper is 'bb' +PASS keyRange.upperOpen is false +PASS keyRange.lower is null +PASS keyRange.lowerOpen is false +webkitIDBKeyRange.upperBound('bc',undefined) +PASS keyRange.upper is 'bc' +PASS keyRange.upperOpen is false +PASS keyRange.lower is null +PASS keyRange.lowerOpen is false +webkitIDBKeyRange.bound(30,40, {lowerOpen: undefined, upperOpen:undefined}) +PASS keyRange.lower is 30 +PASS keyRange.upper is 40 +PASS keyRange.lowerOpen is false +PASS keyRange.upperOpen is false +webkitIDBKeyRange.bound(31,41, {lowerOpen: false, upperOpen:false}) +PASS keyRange.lower is 31 +PASS keyRange.upper is 41 +PASS keyRange.lowerOpen is false +PASS keyRange.upperOpen is false +webkitIDBKeyRange.bound(32,42, {lowerOpen: false, upperOpen:true}) +PASS keyRange.lower is 32 +PASS keyRange.upper is 42 +PASS keyRange.lowerOpen is false +PASS keyRange.upperOpen is true +webkitIDBKeyRange.bound(33,43, {lowerOpen: true, upperOpen:false}) +PASS keyRange.lower is 33 +PASS keyRange.upper is 43 +PASS keyRange.lowerOpen is true +PASS keyRange.upperOpen is false +webkitIDBKeyRange.bound(34,44, {lowerOpen: true, upperOpen:true}) +PASS keyRange.lower is 34 +PASS keyRange.upper is 44 +PASS keyRange.lowerOpen is true +PASS keyRange.upperOpen is true +webkitIDBKeyRange.bound('aaa','aba', {lowerOpen: false, upperOpen:false}) +PASS keyRange.lower is 'aaa' +PASS keyRange.upper is 'aba' +PASS keyRange.lowerOpen is false +PASS keyRange.upperOpen is false +webkitIDBKeyRange.bound('aab','abb', {lowerOpen: undefined, upperOpen:undefined}) +PASS keyRange.lower is 'aab' +PASS keyRange.upper is 'abb' +PASS keyRange.lowerOpen is false +PASS keyRange.upperOpen is false +webkitIDBKeyRange.bound('aac','abc', {lowerOpen: false, upperOpen:false}) +PASS keyRange.lower is 'aac' +PASS keyRange.upper is 'abc' +PASS keyRange.lowerOpen is false +PASS keyRange.upperOpen is false +webkitIDBKeyRange.bound('aad','abd', {lowerOpen: false, upperOpen:true}) +PASS keyRange.lower is 'aad' +PASS keyRange.upper is 'abd' +PASS keyRange.lowerOpen is false +PASS keyRange.upperOpen is true +webkitIDBKeyRange.bound('aae','abe', {lowerOpen: true, upperOpen:false}) +PASS keyRange.lower is 'aae' +PASS keyRange.upper is 'abe' +PASS keyRange.lowerOpen is true +PASS keyRange.upperOpen is false +webkitIDBKeyRange.bound('aaf','abf', {lowerOpen: true, upperOpen:true}) +PASS keyRange.lower is 'aaf' +PASS keyRange.upper is 'abf' +PASS keyRange.lowerOpen is true +PASS keyRange.upperOpen is true Passing an invalid key into only([]) PASS Caught exception: Error: TYPE_MISMATCH_ERR: DOM Exception 17 -Passing an invalid key into rightBound([]) +Passing an invalid key into upperBound([]) PASS Caught exception: Error: TYPE_MISMATCH_ERR: DOM Exception 17 -Passing an invalid key into leftBound([]) +Passing an invalid key into lowerBound([]) PASS Caught exception: Error: TYPE_MISMATCH_ERR: DOM Exception 17 Passing an invalid key into bound(null, []) PASS Caught exception: Error: TYPE_MISMATCH_ERR: DOM Exception 17 diff --git a/LayoutTests/storage/indexeddb/keyrange.html b/LayoutTests/storage/indexeddb/keyrange.html index 48708d9..4b926da 100644 --- a/LayoutTests/storage/indexeddb/keyrange.html +++ b/LayoutTests/storage/indexeddb/keyrange.html @@ -17,67 +17,68 @@ if (window.layoutTestController) function checkSingleKeyRange(value) { keyRange = evalAndLog("webkitIDBKeyRange.only(" + value + ")"); - shouldBe("keyRange.left", "" + value); - shouldBe("keyRange.right", "" + value); - shouldBe("keyRange.flags", "keyRange.SINGLE"); + shouldBe("keyRange.lower", "" + value); + shouldBe("keyRange.upper", "" + value); + shouldBeFalse("keyRange.lowerOpen"); + shouldBeFalse("keyRange.upperOpen"); } -function checkLeftBoundKeyRange(value, open) +function checkLowerBoundKeyRange(value, open) { - keyRange = evalAndLog("webkitIDBKeyRange.leftBound(" + value + "," + open + ")"); - shouldBe("keyRange.left", "" + value); - shouldBeNull("keyRange.right"); - shouldBe("keyRange.flags", open ? "keyRange.LEFT_OPEN | keyRange.LEFT_BOUND" : "keyRange.LEFT_BOUND"); + keyRange = evalAndLog("webkitIDBKeyRange.lowerBound(" + value + "," + open + ")"); + shouldBe("keyRange.lower", "" + value); + if (open === undefined) + open = false; + shouldBe("keyRange.lowerOpen", "" + open); + shouldBeNull("keyRange.upper"); + shouldBeFalse("keyRange.upperOpen"); } -function checkRightBoundKeyRange(value, open) +function checkUpperBoundKeyRange(value, open) { - keyRange = evalAndLog("webkitIDBKeyRange.rightBound(" + value + "," + open + ")"); - shouldBe("keyRange.right", "" + value); - shouldBeNull("keyRange.left"); - shouldBe("keyRange.flags", open ? "keyRange.RIGHT_OPEN | keyRange.RIGHT_BOUND" : "keyRange.RIGHT_BOUND"); + keyRange = evalAndLog("webkitIDBKeyRange.upperBound(" + value + "," + open + ")"); + shouldBe("keyRange.upper", "" + value); + if (open === undefined) + open = false; + shouldBe("keyRange.upperOpen", "" + open); + shouldBeNull("keyRange.lower"); + shouldBeFalse("keyRange.lowerOpen"); } -function checkBoundKeyRange(left, right, openLeft, openRight) +function checkBoundKeyRange(lower, upper, lowerOpen, upperOpen) { - keyRange = evalAndLog("webkitIDBKeyRange.bound(" + left + "," + right + "," + openLeft + "," + openRight + ")"); - shouldBe("keyRange.left", "" + left); - shouldBe("keyRange.right", "" + right); - leftFlags = keyRange.flags & (keyRange.LEFT_OPEN | keyRange.LEFT_BOUND); - shouldBe("leftFlags", openLeft ? "keyRange.LEFT_OPEN | keyRange.LEFT_BOUND" : "keyRange.LEFT_BOUND"); - rightFlags = keyRange.flags & (keyRange.RIGHT_OPEN | keyRange.RIGHT_BOUND); - shouldBe("rightFlags", openRight ? "keyRange.RIGHT_OPEN | keyRange.RIGHT_BOUND" : "keyRange.RIGHT_BOUND"); + keyRange = evalAndLog("webkitIDBKeyRange.bound(" + lower + "," + upper + ", {lowerOpen: " + lowerOpen + ", upperOpen:" + upperOpen + "})"); + shouldBe("keyRange.lower", "" + lower); + shouldBe("keyRange.upper", "" + upper); + if (lowerOpen === undefined) + lowerOpen = false; + if (upperOpen === undefined) + upperOpen = false; + shouldBe("keyRange.lowerOpen", "" + lowerOpen); + shouldBe("keyRange.upperOpen", "" + upperOpen); } function test() { - shouldBeTrue("'SINGLE' in webkitIDBKeyRange"); - shouldBeTrue("'LEFT_OPEN' in webkitIDBKeyRange"); - shouldBeTrue("'RIGHT_OPEN' in webkitIDBKeyRange"); - shouldBeTrue("'LEFT_BOUND' in webkitIDBKeyRange"); - shouldBeTrue("'RIGHT_BOUND' in webkitIDBKeyRange"); - shouldBeFalse("'left' in webkitIDBKeyRange"); - shouldBeFalse("'right' in webkitIDBKeyRange"); - shouldBeFalse("'flags' in webkitIDBKeyRange"); + shouldBeFalse("'lower' in webkitIDBKeyRange"); + shouldBeFalse("'upper' in webkitIDBKeyRange"); + shouldBeFalse("'lowerOpen' in webkitIDBKeyRange"); + shouldBeFalse("'upperOpen' in webkitIDBKeyRange"); shouldBeTrue("'only' in webkitIDBKeyRange"); - shouldBeTrue("'leftBound' in webkitIDBKeyRange"); - shouldBeTrue("'rightBound' in webkitIDBKeyRange"); + shouldBeTrue("'lowerBound' in webkitIDBKeyRange"); + shouldBeTrue("'upperBound' in webkitIDBKeyRange"); shouldBeTrue("'bound' in webkitIDBKeyRange"); debug(""); var instance = evalAndLog("instance = webkitIDBKeyRange.only(1)"); - shouldBeTrue("'SINGLE' in instance"); - shouldBeTrue("'LEFT_OPEN' in instance"); - shouldBeTrue("'RIGHT_OPEN' in instance"); - shouldBeTrue("'LEFT_BOUND' in instance"); - shouldBeTrue("'RIGHT_BOUND' in instance"); - shouldBeTrue("'left' in instance"); - shouldBeTrue("'right' in instance"); - shouldBeTrue("'flags' in instance"); + shouldBeTrue("'lower' in instance"); + shouldBeTrue("'upper' in instance"); + shouldBeTrue("'lowerOpen' in instance"); + shouldBeTrue("'upperOpen' in instance"); shouldBeFalse("'only' in instance"); - shouldBeFalse("'leftBound' in instance"); - shouldBeFalse("'rightBound' in instance"); + shouldBeFalse("'lowerBound' in instance"); + shouldBeFalse("'upperBound' in instance"); shouldBeFalse("'bound' in instance"); debug(""); @@ -85,19 +86,19 @@ function test() checkSingleKeyRange(1); checkSingleKeyRange("'a'"); - checkLeftBoundKeyRange(10, true); - checkLeftBoundKeyRange(11, false); - checkLeftBoundKeyRange(12); - checkLeftBoundKeyRange("'aa'", true); - checkLeftBoundKeyRange("'ab'", false); - checkLeftBoundKeyRange("'ac'"); + checkLowerBoundKeyRange(10, true); + checkLowerBoundKeyRange(11, false); + checkLowerBoundKeyRange(12); + checkLowerBoundKeyRange("'aa'", true); + checkLowerBoundKeyRange("'ab'", false); + checkLowerBoundKeyRange("'ac'"); - checkRightBoundKeyRange(20, true); - checkRightBoundKeyRange(21, false); - checkRightBoundKeyRange(22); - checkRightBoundKeyRange("'ba'", true); - checkRightBoundKeyRange("'bb'", false); - checkRightBoundKeyRange("'bc'"); + checkUpperBoundKeyRange(20, true); + checkUpperBoundKeyRange(21, false); + checkUpperBoundKeyRange(22); + checkUpperBoundKeyRange("'ba'", true); + checkUpperBoundKeyRange("'bb'", false); + checkUpperBoundKeyRange("'bc'"); checkBoundKeyRange(30, 40); checkBoundKeyRange(31, 41, false, false); @@ -121,16 +122,16 @@ function test() } try { - debug("Passing an invalid key into rightBound([])"); - webkitIDBKeyRange.rightBound([]); + debug("Passing an invalid key into upperBound([])"); + webkitIDBKeyRange.upperBound([]); testFailed("No exception thrown"); } catch (e) { testPassed("Caught exception: " + e.toString()); } try { - debug("Passing an invalid key into leftBound([])"); - webkitIDBKeyRange.leftBound([]); + debug("Passing an invalid key into lowerBound([])"); + webkitIDBKeyRange.lowerBound([]); testFailed("No exception thrown"); } catch (e) { testPassed("Caught exception: " + e.toString()); diff --git a/LayoutTests/storage/indexeddb/objectstore-basics-expected.txt b/LayoutTests/storage/indexeddb/objectstore-basics-expected.txt index e0c9770..e736d2f 100644 --- a/LayoutTests/storage/indexeddb/objectstore-basics-expected.txt +++ b/LayoutTests/storage/indexeddb/objectstore-basics-expected.txt @@ -3,7 +3,7 @@ Test the basics of IndexedDB's IDBObjectStore. On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". -webkitIndexedDB.open('name', 'description') +webkitIndexedDB.open('name') PASS 'onsuccess' in result is true PASS 'onerror' in result is true PASS 'readyState' in result is true @@ -45,7 +45,7 @@ PASS trans !== null is true Deleted all object stores. createObjectStore(): store = db.createObjectStore('storeName', null) -storeNames = db.objectStores +storeNames = db.objectStoreNames PASS store.name is "storeName" PASS store.keyPath is null PASS storeNames.contains('storeName') is true @@ -54,7 +54,7 @@ Ask for an index that doesn't exist: index = store.index('asdf') PASS Exception thrown. createIndex(): -index = store.createIndex('indexName', 'x', true) +index = store.createIndex('indexName', 'x', {unique: true}) PASS index !== null is true PASS store.indexNames.contains('indexName') is true index = store.index('indexName') @@ -97,6 +97,17 @@ PASS store.indexNames.item(1) is null PASS store.indexNames.item(100) is null transaction = db.transaction() store = transaction.objectStore('storeName') +Try to insert data with a Date key: +store.add({x: 'foo'}, new Date()) +PASS Exception thrown +PASS code is DOMException.TYPE_MISMATCH_ERR +Try to insert a value not handled by structured clone: +store.add({x: 'bar', y: document.getElementById('console')}, 'bar') +PASS Exception thrown +PASS code is DOMException.NOT_SUPPORTED_ERR +Try to insert data where key path yields a Date key: +store.add({x: new Date()}, 'foo') +PASS Adding data where key path yielded Date key resulted in error. store.add({x: 'value'}, 'key') PASS 'onsuccess' in result is true PASS 'onerror' in result is true @@ -137,6 +148,48 @@ PASS event.target.readyState is event.target.DONE PASS event.code is webkitIDBDatabaseException.UNKNOWN_ERR db.transaction() store = transaction.objectStore('storeName') +store.add({x: 'othervalue'}, null) +PASS 'onsuccess' in result is true +PASS 'onerror' in result is true +PASS 'readyState' in result is true +An event should fire shortly... + +addWithNullKeyFailre(): +Error event fired: +PASS 'result' in event is false +PASS 'code' in event is true +PASS 'message' in event is true +PASS 'source' in event is true +PASS event.source != null is true +PASS 'onsuccess' in event.target is true +PASS 'onerror' in event.target is true +PASS 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +PASS event.code is webkitIDBDatabaseException.DATA_ERR +db.transaction() +store = transaction.objectStore('storeName') +store.add({x: null}, 'validkey') +PASS 'onsuccess' in result is true +PASS 'onerror' in result is true +PASS 'readyState' in result is true +An event should fire shortly... + +addWithNullIndexFailure(): +Error event fired: +PASS 'result' in event is false +PASS 'code' in event is true +PASS 'message' in event is true +PASS 'source' in event is true +PASS event.source != null is true +PASS 'onsuccess' in event.target is true +PASS 'onerror' in event.target is true +PASS 'readyState' in event.target is true +PASS event.target.readyState is event.target.DONE + +PASS event.code is webkitIDBDatabaseException.DATA_ERR +db.transaction() +store = transaction.objectStore('storeName') store.get('key') PASS 'onsuccess' in result is true PASS 'onerror' in result is true @@ -157,7 +210,7 @@ PASS event.target.readyState is event.target.DONE PASS event.result.x is "value" store = event.source -store.remove('key') +store.delete('key') PASS 'onsuccess' in result is true PASS 'onerror' in result is true PASS 'readyState' in result is true @@ -179,7 +232,7 @@ PASS event.result is null store = event.source Passing an invalid key into store.get(). PASS Caught exception: Error: TYPE_MISMATCH_ERR: DOM Exception 17 -Passing an invalid key into store.remove(). +Passing an invalid key into store.delete(). PASS Caught exception: Error: TYPE_MISMATCH_ERR: DOM Exception 17 Passing an invalid key into store.add(). PASS Caught exception: Error: TYPE_MISMATCH_ERR: DOM Exception 17 diff --git a/LayoutTests/storage/indexeddb/objectstore-basics.html b/LayoutTests/storage/indexeddb/objectstore-basics.html index 005247e..3d2a1d2 100644 --- a/LayoutTests/storage/indexeddb/objectstore-basics.html +++ b/LayoutTests/storage/indexeddb/objectstore-basics.html @@ -16,7 +16,7 @@ if (window.layoutTestController) function test() { - result = evalAndLog("webkitIndexedDB.open('name', 'description')"); + result = evalAndLog("webkitIndexedDB.open('name')"); verifyResult(result); result.onsuccess = openSuccess; result.onerror = unexpectedErrorCallback; @@ -49,7 +49,7 @@ function createObjectStore() { debug("createObjectStore():"); window.store = evalAndLog("store = db.createObjectStore('storeName', null)"); - var storeNames = evalAndLog("storeNames = db.objectStores"); + var storeNames = evalAndLog("storeNames = db.objectStoreNames"); shouldBeEqualToString("store.name", "storeName"); shouldBeNull("store.keyPath"); @@ -73,7 +73,7 @@ function createObjectStore() function createIndex() { debug("createIndex():"); - var index = evalAndLog("index = store.createIndex('indexName', 'x', true)"); // true == unique requirement. + var index = evalAndLog("index = store.createIndex('indexName', 'x', {unique: true})"); // true == unique requirement. shouldBeTrue("index !== null"); shouldBeTrue("store.indexNames.contains('indexName')"); index = evalAndLog("index = store.index('indexName')"); @@ -142,6 +142,41 @@ function addData() var transaction = evalAndLog("transaction = db.transaction()"); transaction.onabort = unexpectedAbortCallback; window.store = evalAndLog("store = transaction.objectStore('storeName')"); + + debug("Try to insert data with a Date key:"); + // FIXME: This should work in the future. + try { + debug("store.add({x: 'foo'}, new Date())"); + store.add({x: 'foo'}, new Date()); + testFailed("Passing a Date as key argument should have thrown."); + } catch (err) { + testPassed("Exception thrown"); + code = err.code; + shouldBe("code", "DOMException.TYPE_MISMATCH_ERR"); + } + + debug("Try to insert a value not handled by structured clone:"); + try { + debug("store.add({x: 'bar', y: document.getElementById('console')}, 'bar')"); + store.add({x: 'bar', y: document.getElementById('console')}, 'bar'); + testFailed("Passing a DOM node as value should have thrown."); + } catch (err) { + testPassed("Exception thrown"); + code = err.code; + shouldBe("code", "DOMException.NOT_SUPPORTED_ERR"); + } + + // FIXME: This should work in the future. + debug("Try to insert data where key path yields a Date key:"); + result = evalAndLog("store.add({x: new Date()}, 'foo')"); + result.onsuccess = unexpectedSuccessCallback; + result.onerror = addKeyPathYieldingDateFailure; +} + +function addKeyPathYieldingDateFailure() +{ + testPassed("Adding data where key path yielded Date key resulted in error."); + result = evalAndLog("store.add({x: 'value'}, 'key')"); verifyResult(result); result.onsuccess = addSuccess; @@ -171,6 +206,38 @@ function addAgainFailure() transaction.onabort = unexpectedErrorCallback; var store = evalAndLog("store = transaction.objectStore('storeName')"); + result = evalAndLog("store.add({x: 'othervalue'}, null)"); + verifyResult(result); + result.onsuccess = unexpectedSuccessCallback; + result.onerror = addWithNullKeyFailure; +} + +function addWithNullKeyFailure() +{ + debug("addWithNullKeyFailre():"); + verifyErrorEvent(event); + shouldBe("event.code", "webkitIDBDatabaseException.DATA_ERR"); + + transaction = evalAndLog("db.transaction()"); + transaction.onabort = unexpectedErrorCallback; + var store = evalAndLog("store = transaction.objectStore('storeName')"); + + result = evalAndLog("store.add({x: null}, 'validkey')"); + verifyResult(result); + result.onsuccess = unexpectedSuccessCallback; + result.onerror = addWithNullIndexFailure; +} + +function addWithNullIndexFailure() +{ + debug("addWithNullIndexFailure():"); + verifyErrorEvent(event); + shouldBe("event.code", "webkitIDBDatabaseException.DATA_ERR"); + + transaction = evalAndLog("db.transaction()"); + transaction.onabort = unexpectedErrorCallback; + var store = evalAndLog("store = transaction.objectStore('storeName')"); + result = evalAndLog("store.get('key')"); verifyResult(result); result.onsuccess = getSuccess; @@ -184,7 +251,7 @@ function getSuccess() shouldBeEqualToString("event.result.x", "value"); var store = evalAndLog("store = event.source"); - result = evalAndLog("store.remove('key')"); + result = evalAndLog("store.delete('key')"); verifyResult(result); result.onsuccess = removeSuccess; result.onerror = unexpectedErrorCallback; @@ -206,8 +273,8 @@ function removeSuccess() } try { - debug("Passing an invalid key into store.remove()."); - store.remove([]); + debug("Passing an invalid key into store.delete()."); + store.delete([]); testFailed("No exception thrown"); } catch (e) { testPassed("Caught exception: " + e.toString()); diff --git a/LayoutTests/storage/indexeddb/objectstore-cursor-expected.txt b/LayoutTests/storage/indexeddb/objectstore-cursor-expected.txt index 1493a80..ea789fa 100644 --- a/LayoutTests/storage/indexeddb/objectstore-cursor-expected.txt +++ b/LayoutTests/storage/indexeddb/objectstore-cursor-expected.txt @@ -3,7 +3,7 @@ Test IndexedDB's objectStore.openCursor + the cursor it produces in depth. On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". -webkitIndexedDB.open('someDB', 'some description') +webkitIndexedDB.open('someDB') PASS 'onsuccess' in result is true PASS 'onerror' in result is true PASS 'readyState' in result is true diff --git a/LayoutTests/storage/indexeddb/objectstore-cursor.html b/LayoutTests/storage/indexeddb/objectstore-cursor.html index d0d786b..3358917 100644 --- a/LayoutTests/storage/indexeddb/objectstore-cursor.html +++ b/LayoutTests/storage/indexeddb/objectstore-cursor.html @@ -16,7 +16,7 @@ if (window.layoutTestController) // In order of how it should be sorted by IndexedDB. window.testData = [ - null, + 1, 2, 3, 10, @@ -28,7 +28,7 @@ window.testData = [ function openDatabase() { - result = evalAndLog("webkitIndexedDB.open('someDB', 'some description')"); + result = evalAndLog("webkitIndexedDB.open('someDB')"); verifyResult(result); result.onsuccess = setVersion; result.onerror = unexpectedErrorCallback; @@ -70,6 +70,7 @@ function addData() result = evalAndLog("objectStore.add('', testData[nextToAdd])"); verifyResult(result); result.onsuccess = ++window.nextToAdd < testData.length ? addData : scheduleTests; + result.onerror = unexpectedErrorCallback; } function scheduleTests() @@ -158,13 +159,13 @@ function runNextTest() var keyRange; if (lower !== null && upper !== null) - keyRange = webkitIDBKeyRange.bound(testData[lower], testData[upper], lowerIsOpen, upperIsOpen); + keyRange = webkitIDBKeyRange.bound(testData[lower], testData[upper], {lowerOpen: lowerIsOpen, upperOpen: upperIsOpen}); else if (lower !== null) - keyRange = webkitIDBKeyRange.leftBound(testData[lower], lowerIsOpen); + keyRange = webkitIDBKeyRange.lowerBound(testData[lower], lowerIsOpen); else - keyRange = webkitIDBKeyRange.rightBound(testData[upper], upperIsOpen); + keyRange = webkitIDBKeyRange.upperBound(testData[upper], upperIsOpen); - var request = objectStore.openCursor(keyRange, ascending ? webkitIDBCursor.NEXT : webkitIDBCursor.PREV); + var request = objectStore.openCursor({range: keyRange, direction: ascending ? webkitIDBCursor.NEXT : webkitIDBCursor.PREV}); request.onsuccess = cursorIteration; request.onerror = unexpectedErrorCallback; } @@ -230,7 +231,7 @@ function testNullKeyRange() debug(""); debug(str); - var request = objectStore.openCursor(null, ascending ? webkitIDBCursor.NEXT : webkitIDBCursor.PREV); + var request = objectStore.openCursor({direction: ascending ? webkitIDBCursor.NEXT : webkitIDBCursor.PREV}); request.onsuccess = cursorIteration; request.onerror = unexpectedErrorCallback; } diff --git a/LayoutTests/storage/indexeddb/objectstore-removeobjectstore-expected.txt b/LayoutTests/storage/indexeddb/objectstore-removeobjectstore-expected.txt index b6b20a2..4e5e562 100644 --- a/LayoutTests/storage/indexeddb/objectstore-removeobjectstore-expected.txt +++ b/LayoutTests/storage/indexeddb/objectstore-removeobjectstore-expected.txt @@ -1,9 +1,9 @@ -Test IndexedDB's webkitIDBObjectStore.removeObjectStore(). +Test IndexedDB's webkitIDBObjectStore.deleteObjectStore(). On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". -webkitIndexedDB.open('name', 'description') +webkitIndexedDB.open('name') PASS 'onsuccess' in result is true PASS 'onerror' in result is true PASS 'readyState' in result is true @@ -100,7 +100,7 @@ PASS event.target.readyState is event.target.DONE trans = event.result PASS trans !== null is true -db.removeObjectStore('storeName') +db.deleteObjectStore('storeName') db.createObjectStore('storeName', null) db.transaction() store = transaction.objectStore('storeName') diff --git a/LayoutTests/storage/indexeddb/objectstore-removeobjectstore.html b/LayoutTests/storage/indexeddb/objectstore-removeobjectstore.html index c4418bc..5f617ca 100644 --- a/LayoutTests/storage/indexeddb/objectstore-removeobjectstore.html +++ b/LayoutTests/storage/indexeddb/objectstore-removeobjectstore.html @@ -10,13 +10,13 @@
+ + + + +

+
+ + + diff --git a/LayoutTests/storage/indexeddb/transaction-basics-expected.txt b/LayoutTests/storage/indexeddb/transaction-basics-expected.txt index b493946..a3bd90a 100644 --- a/LayoutTests/storage/indexeddb/transaction-basics-expected.txt +++ b/LayoutTests/storage/indexeddb/transaction-basics-expected.txt @@ -5,7 +5,7 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE PASS 'webkitIndexedDB' in window is true PASS webkitIndexedDB == null is false -webkitIndexedDB.open('name', 'description') +webkitIndexedDB.open('name') PASS 'onsuccess' in result is true PASS 'onerror' in result is true PASS 'readyState' in result is true @@ -37,12 +37,12 @@ PASS 'readyState' in event.target is true PASS event.target.readyState is event.target.DONE Deleted all object stores. -PASS window.db.objectStores is [] -PASS window.db.objectStores.length is 0 -PASS window.db.objectStores.contains('storeFail') is false -PASS window.db.objectStores is [] -PASS window.db.objectStores.length is 0 -PASS window.db.objectStores.contains('storeFail') is false +PASS window.db.objectStoreNames is [] +PASS window.db.objectStoreNames.length is 0 +PASS window.db.objectStoreNames.contains('storeFail') is false +PASS window.db.objectStoreNames is [] +PASS window.db.objectStoreNames.length is 0 +PASS window.db.objectStoreNames.contains('storeFail') is false result = startSetVersion('version fail') PASS 'onsuccess' in result is true PASS 'onerror' in result is true @@ -65,11 +65,11 @@ trans = event.result PASS trans !== null is true store = db.createObjectStore('storeFail', null) index = store.createIndex('indexFail', 'x', false) -db.removeObjectStore('storeFail') -store.removeIndex('indexFail') -PASS window.db.objectStores is [] -PASS window.db.objectStores.length is 0 -PASS window.db.objectStores.contains('storeFail') is false +db.deleteObjectStore('storeFail') +store.deleteIndex('indexFail') +PASS window.db.objectStoreNames is [] +PASS window.db.objectStoreNames.length is 0 +PASS window.db.objectStoreNames.contains('storeFail') is false result = startSetVersion('version fail') PASS 'onsuccess' in result is true PASS 'onerror' in result is true @@ -92,13 +92,13 @@ trans = event.result PASS trans !== null is true store = db.createObjectStore('storeFail', null) index = store.createIndex('indexFail', 'x', false) -db.removeObjectStore('storeFail') -store.removeIndex('indexFail') +db.deleteObjectStore('storeFail') +store.deleteIndex('indexFail') store = db.createObjectStore('storeFail', null) index = store.createIndex('indexFail', 'x', false) -PASS window.db.objectStores is [] -PASS window.db.objectStores.length is 0 -PASS window.db.objectStores.contains('storeFail') is false +PASS window.db.objectStoreNames is [] +PASS window.db.objectStoreNames.length is 0 +PASS window.db.objectStoreNames.contains('storeFail') is false result = startSetVersion('version fail') PASS 'onsuccess' in result is true PASS 'onerror' in result is true @@ -121,9 +121,9 @@ trans = event.result PASS trans !== null is true store = db.createObjectStore('storeFail', null) index = store.createIndex('indexFail', 'x', false) -PASS db.objectStores is ['storeFail'] -PASS db.objectStores.length is 1 -PASS db.objectStores.contains('storeFail') is true +PASS db.objectStoreNames is ['storeFail'] +PASS db.objectStoreNames.length is 1 +PASS db.objectStoreNames.contains('storeFail') is true result = startSetVersion('version fail') PASS 'onsuccess' in result is true PASS 'onerror' in result is true @@ -145,11 +145,11 @@ PASS event.target.readyState is event.target.DONE trans = event.result PASS trans !== null is true store = trans.objectStore('storeFail') -store.removeIndex('indexFail') -db.removeObjectStore('storeFail') -PASS db.objectStores is ['storeFail'] -PASS db.objectStores.length is 1 -PASS db.objectStores.contains('storeFail') is true +store.deleteIndex('indexFail') +db.deleteObjectStore('storeFail') +PASS db.objectStoreNames is ['storeFail'] +PASS db.objectStoreNames.length is 1 +PASS db.objectStoreNames.contains('storeFail') is true db.setVersion('new version') PASS 'onsuccess' in result is true PASS 'onerror' in result is true diff --git a/LayoutTests/storage/indexeddb/transaction-basics.html b/LayoutTests/storage/indexeddb/transaction-basics.html index 07fc685..cd42419 100644 --- a/LayoutTests/storage/indexeddb/transaction-basics.html +++ b/LayoutTests/storage/indexeddb/transaction-basics.html @@ -19,7 +19,7 @@ function test() shouldBeTrue("'webkitIndexedDB' in window"); shouldBeFalse("webkitIndexedDB == null"); - result = evalAndLog("webkitIndexedDB.open('name', 'description')"); + result = evalAndLog("webkitIndexedDB.open('name')"); verifyResult(result); result.onsuccess = openSuccess; result.onerror = unexpectedErrorCallback; @@ -61,8 +61,8 @@ function addRemoveIDBObjects() var store = evalAndLog("store = db.createObjectStore('storeFail', null)"); var index = evalAndLog("index = store.createIndex('indexFail', 'x', false)"); - evalAndLog("db.removeObjectStore('storeFail')"); - evalAndLog("store.removeIndex('indexFail')"); + evalAndLog("db.deleteObjectStore('storeFail')"); + evalAndLog("store.deleteIndex('indexFail')"); trans.abort(); } @@ -86,8 +86,8 @@ function addRemoveAddIDBObjects() var store = evalAndLog("store = db.createObjectStore('storeFail', null)"); var index = evalAndLog("index = store.createIndex('indexFail', 'x', false)"); - evalAndLog("db.removeObjectStore('storeFail')"); - evalAndLog("store.removeIndex('indexFail')"); + evalAndLog("db.deleteObjectStore('storeFail')"); + evalAndLog("store.deleteIndex('indexFail')"); var store = evalAndLog("store = db.createObjectStore('storeFail', null)"); var index = evalAndLog("index = store.createIndex('indexFail', 'x', false)"); @@ -160,8 +160,8 @@ function removeIDBObjects() trans.oncomplete = unexpectedCompleteCallback; var store = evalAndLog("store = trans.objectStore('storeFail')"); - evalAndLog("store.removeIndex('indexFail')"); - evalAndLog("db.removeObjectStore('storeFail')"); + evalAndLog("store.deleteIndex('indexFail')"); + evalAndLog("db.deleteObjectStore('storeFail')"); trans.abort(); } @@ -182,16 +182,16 @@ function startSetVersion(versionName) function checkMetadataEmpty() { - shouldBe("window.db.objectStores", "[]"); - shouldBe("window.db.objectStores.length", "0"); - shouldBe("window.db.objectStores.contains('storeFail')", "false"); + shouldBe("window.db.objectStoreNames", "[]"); + shouldBe("window.db.objectStoreNames.length", "0"); + shouldBe("window.db.objectStoreNames.contains('storeFail')", "false"); } function checkMetadataExistingObjectStore() { - shouldBe("db.objectStores", "['storeFail']"); - shouldBe("db.objectStores.length", "1"); - shouldBe("db.objectStores.contains('storeFail')", "true"); + shouldBe("db.objectStoreNames", "['storeFail']"); + shouldBe("db.objectStoreNames.length", "1"); + shouldBe("db.objectStoreNames.contains('storeFail')", "true"); } function setNewVersion() diff --git a/LayoutTests/storage/indexeddb/tutorial.html b/LayoutTests/storage/indexeddb/tutorial.html index db9f2fa..445213c 100644 --- a/LayoutTests/storage/indexeddb/tutorial.html +++ b/LayoutTests/storage/indexeddb/tutorial.html @@ -70,7 +70,7 @@ function start() // "addEventListener" if you'd like, but I'm using the simpler = syntax. Only one or the other // will fire. You're guaranteed that they won't fire until control is returned from JavaScript // execution. - var request = indexedDB.open("myDB", "This is a description of the database."); // Chromium/WebKit doesn't yet require the description, but it will soon. + var request = indexedDB.open("myDB"); request.onsuccess = onOpen; request.onerror = unexpectedError; } @@ -113,7 +113,7 @@ function onOpen() function onSetVersion() { // We are now in a setVersion transaction. Such a transaction is the only place where one - // can add or remove indexes and objectStores. The result (property of event) is an + // can add or delete indexes and objectStores. The result (property of event) is an // IDBTransaction object that has "complete", "abort", and "timeout" event handlers which tell // us when the transaction has committed, aborted, or timed out. window.currentTransaction = event.result; @@ -121,8 +121,8 @@ function onSetVersion() currentTransaction.onabort = unexpectedAbort; // Delete existing object stores. - while (db.objectStores.length) - db.removeObjectStore(db.objectStores[0]); + while (db.objectStoreNames.length) + db.deleteObjectStore(db.objectStoreNames[0]); // Now that we have a blank slate, let's create an objectStore. An objectStore is simply an // ordered mapping of keys to values. We can iterate through ranges of keys or do individual @@ -150,13 +150,25 @@ function onSetVersion() // a number attribute and at least one sibling). You can even go wild and say // "foo[0][2].bar[0].baz.test[1][2][3]". It's possible this will change in the future though. // - // If you set autoIncrement (the third optional parameter), IndexedDB will generate a key + // If you set autoIncrement (another optional parameter), IndexedDB will generate a key // for your entry automatically. And if you have a keyPath set, it'll set the value at // the location of the keyPath _in the database_ (i.e. it will not modify the value you pass // in to put/add). Unfortunately autoIncrement is not yet implemented in Chromium/WebKit. // + // Another optional parameter, "evictable" is not yet implemented. When it is, it'll hint + // which data should be deleted first if the browser decides this origin is using too much + // storage. (The alternative is that it'll suggest the user delete everything from the + // origin, so it's in your favor to set it approperately!) This is great for when you have + // some absolutely critical data (like unset emails) and a bunch of less critical, (but + // maybe still important!) data. + // + // All of these options can be passed into createObjectStore via its (optional) second + // parameter. So, if you wanted to define all, You'd do {keyPath: "something", + // evictable: true, autoIncrement: true}. You can also pass in subsets of all three or + // omit the object (since it's optional). + // // Let's now create an objectStore for people. We'll supply a key path in this case. - var objectStore = db.createObjectStore("people", "id"); + var objectStore = db.createObjectStore("people", {keyPath: "id"}); // Notice that it returned synchronously. The rule of thumb is that any call that touches (in // any way) keys or values is asynchronous and any other call (besides setVersion and open) are @@ -170,9 +182,8 @@ function onSetVersion() var fname = objectStore.createIndex("fname", "fname", false); var lname = objectStore.createIndex("lname", "lname", false); - // Note that if you wanted to delete these indexes, you can either call objectStore.removeIndex - // or simply delete the objectStores that own the indexes. (Note that removeObjectStore and - // removeIndex may be changed to deleteObjectStore and deleteIndex in the future.) + // Note that if you wanted to delete these indexes, you can either call objectStore.deleteIndex + // or simply delete the objectStores that own the indexes. // // If we wanted to, we could populate the objectStore with some data here or do anything else // allowed in a normal (i.e. non-setVersion) transaction. This is useful so that data migrations @@ -195,29 +206,29 @@ function unexpectedAbort() function onSetVersionComplete() { // Lets create a new transaction and then not schedule any work on it to watch it abort itself. - // Transactions (besides those created with setVersion) are created synchronously. All three - // parameters are optional for transaction. + // Transactions (besides those created with setVersion) are created synchronously. Like + // createObjectStore, transaction optionally takes in an object with various optional parameters. // - // The first specifies which object stores to lock. The spec specifies "dynamic transactions" - // which don't require this and which have finer grained locks, but no one yet supports this and - // it may even be dropped from the first version of the spec, so I don't suggest you rely on it. - // Chromium/WebKit also does not yet support anything finer grained than database level locking, - // so in this tutorial we'll just pass in the empty array which means "lock the world". + // First of all is the parameter "objectStoreNames". If you pass in a string, we lock just that + // objectStore. If you pass in an array, we lock those. Otherwise (for example, if you omit it + // or pass in null/undefined) we lock the whole database. By specifying locks over fewer + // objectStores you make it possible for browsers to run transactions concurrently. That said, + // Chromium/WebKit does not support this yet. // - // The second parameter specifies the locking mode. The default is READ_ONLY (i.e. a shared lock). + // Next is "mode" which specifies the locking mode. The default is READ_ONLY (i.e. a shared lock). // That's fine for this case, but later we'll ask for IDBTransaction.READ_WRITE. At the moment, - // Chromium/WebKit pretends every transaction is READ_WRITE, which is kind of bad. (Note that - // SNAPSHOT_READ will soon be removed from the spec.) + // Chromium/WebKit pretends every transaction is READ_WRITE, which is kind of bad. // - // The last parameter is the timeout length. At the moment, Chromium/WebKit defaults to 0 which - // means never, but it's possible we'll change this in the future, so set it if you really care. - window.currentTransaction = db.transaction([], IDBTransaction.READ_WRITE, 0); + // Last is "timeout" which is measured in seconds. At the moment, Chromium/WebKit defaults to 0 which + // means never, but it's possible we'll change this in the future and other implementations may + // use something different, so set it if you really care. + window.currentTransaction = db.transaction({mode: IDBTransaction.READ_WRITE, timeout: 0}); currentTransaction.oncomplete = unexpectedComplete; currentTransaction.onabort = onTransactionAborted; - // Verify that "people" is the only object store in existance. The objectStores attribute is + // Verify that "people" is the only object store in existance. The objectStoreNames attribute is // a DOMStringList which is somewhat like an array. - var objectStoreList = db.objectStores; + var objectStoreList = db.objectStoreNames; if (objectStoreList.length != 1 || !objectStoreList.contains("people") || objectStoreList.item(0) != "people" @@ -258,8 +269,10 @@ function unexpectedComplete() function onTransactionAborted() { - // Now let's make a real transaction and a person to our objectStore. - window.currentTransaction = db.transaction(["people"], IDBTransaction.READ_WRITE, 0); + // Now let's make a real transaction and a person to our objectStore. Just to show it's possible, + // we'll omit the objectStoreNames parameter which means we'll lock everything even though we only + // ever access "people". + window.currentTransaction = db.transaction({mode: IDBTransaction.READ_WRITE}); currentTransaction.onabort = unexpectedAbort; var people = currentTransaction.objectStore("people"); @@ -276,7 +289,7 @@ function onTransactionAborted() people.put({fname: 'Jane', lname: 'Doe', id: 2}).onerror = unexpectedError; people.put({fname: 'Philip', lname: 'Fry', id: 3}).onerror = unexpectedError; - // Not shown here are the .remove method (which is soon to be renamed .delete) and .add (which is + // Not shown here are the .delete method and .add (which is // like .put except that it fires an onerror if the element already exists). } @@ -295,8 +308,9 @@ function onPutSuccess() function onPutTransactionComplete() { // OK, now let's query the people objectStore in a couple different ways. First up, let's try get. - // It simply takes in a key and returns a request whose result will be the value. - window.currentTransaction = db.transaction(["people"], IDBTransaction.READ_WRITE, 0); + // It simply takes in a key and returns a request whose result will be the value. Note that here + // we're passing in an array for objectStoreNames rather than a simple string. + window.currentTransaction = db.transaction({objectStoreNames: ["people"], mode: IDBTransaction.READ_WRITE, timeout: 0}); currentTransaction.onabort = unexpectedAbort; var people = currentTransaction.objectStore("people"); @@ -327,7 +341,7 @@ function onGetSuccess() // return unique entires (only applies to indexes with unique set to false), PREV to move backwards, // and PREV_NO_DUPLICATE. var keyRange = IDBKeyRange.bound(1, 3, true, false); - var request = people.openCursor(keyRange, IDBCursor.NEXT); + var request = people.openCursor({range: keyRange, direction: IDBCursor.NEXT}); request.onsuccess = onObjectStoreCursor; request.onerror = unexpectedError; } @@ -380,10 +394,10 @@ function onIndexGetSuccess() // different IDBKeyRanges just to demonstrate how to use them, but we won't bother to handle // the onsuccess conditions. var lname = event.source; - lname.openCursor(IDBKeyRange.leftBound("Doe", false), IDBCursor.NEXT_NO_DUPLICATE); - lname.openCursor(null, IDBCursor.PREV_NO_DUPLICATE); - lname.openCursor(IDBKeyRange.rightBound("ZZZZ")); - lname.openCursor(IDBKeyRange.only("Doe"), IDBCursor.PREV); + lname.openCursor({range: IDBKeyRange.lowerBound("Doe", false), direction: IDBCursor.NEXT_NO_DUPLICATE}); + lname.openCursor({direction: IDBCursor.PREV_NO_DUPLICATE}); + lname.openCursor({range: IDBKeyRange.upperBound("ZZZZ")}); + lname.openCursor({range: IDBKeyRange.only("Doe"), direction: IDBCursor.PREV}); lname.openCursor(); lname.openKeyCursor(); @@ -396,7 +410,8 @@ function onIndexGetSuccess() function onAllDone() { log("Everything worked!"); - layoutTestController.notifyDone(); + if (window.layoutTestController) + layoutTestController.notifyDone(); } // The way setVersion is supposed to work: diff --git a/SunSpider/ChangeLog b/SunSpider/ChangeLog index 279a389..8241848 100644 --- a/SunSpider/ChangeLog +++ b/SunSpider/ChangeLog @@ -1,3 +1,13 @@ +2010-11-29 Geoffrey Garen + + Reviewed by Gavin Barraclough. + + Improved accuracy of command-line SunSpider. + + * resources/sunspider-standalone-driver.js: Use the returned number of + elapsed milliseconds from "run" and "checkSyntax" instead of measuring + ourselves, for slightly more accurate numbers. + 2010-09-16 Gavin Barraclough Reviewed by Mark Rowe. diff --git a/SunSpider/resources/sunspider-standalone-driver.js b/SunSpider/resources/sunspider-standalone-driver.js index a015822..136e6b7 100644 --- a/SunSpider/resources/sunspider-standalone-driver.js +++ b/SunSpider/resources/sunspider-standalone-driver.js @@ -35,10 +35,9 @@ for (var j = 0; j < tests.length; j++) { var testName = suitePath + "/" + tests[j] + ".js"; var startTime = new Date; if (testName.indexOf('parse-only') >= 0) - checkSyntax(testName); + times[j] = checkSyntax(testName); else - load(testName); - times[j] = new Date() - startTime; + times[j] = run(testName); gc(); } diff --git a/WebCore/Android.jscbindings.mk b/WebCore/Android.jscbindings.mk index ba3213f..8cf55f4 100644 --- a/WebCore/Android.jscbindings.mk +++ b/WebCore/Android.jscbindings.mk @@ -69,9 +69,14 @@ LOCAL_SRC_FILES += \ bindings/js/JSAttrCustom.cpp \ bindings/js/JSAudioConstructor.cpp \ bindings/js/JSCDATASectionCustom.cpp \ + bindings/js/JSCSSFontFaceRuleCustom.cpp \ + bindings/js/JSCSSImportRuleCustom.cpp \ + bindings/js/JSCSSMediaRuleCustom.cpp \ + bindings/js/JSCSSPageRuleCustom.cpp \ bindings/js/JSCSSRuleCustom.cpp \ bindings/js/JSCSSRuleListCustom.cpp \ bindings/js/JSCSSStyleDeclarationCustom.cpp \ + bindings/js/JSCSSStyleRuleCustom.cpp \ bindings/js/JSCSSValueCustom.cpp \ bindings/js/JSCallbackData.cpp \ bindings/js/JSCanvasRenderingContext2DCustom.cpp \ @@ -95,9 +100,13 @@ LOCAL_SRC_FILES += \ bindings/js/JSDOMWindowBase.cpp \ bindings/js/JSDOMWindowCustom.cpp \ bindings/js/JSDOMWindowShell.cpp \ +<<<<<<< HEAD bindings/js/JSDOMWrapper.cpp \ +======= +>>>>>>> webkit.org at r73109 bindings/js/JSDataGridColumnListCustom.cpp \ bindings/js/JSDataGridDataSource.cpp \ + bindings/js/JSDatabaseCallback.cpp \ bindings/js/JSDedicatedWorkerContextCustom.cpp \ bindings/js/JSDesktopNotificationsCustom.cpp \ bindings/js/JSDeviceMotionEventCustom.cpp \ @@ -125,10 +134,12 @@ LOCAL_SRC_FILES += \ bindings/js/JSHTMLFrameElementCustom.cpp \ bindings/js/JSHTMLFrameSetElementCustom.cpp \ bindings/js/JSHTMLInputElementCustom.cpp \ + bindings/js/JSHTMLLinkElementCustom.cpp \ bindings/js/JSHTMLObjectElementCustom.cpp \ bindings/js/JSHTMLOptionsCollectionCustom.cpp \ bindings/js/JSHTMLOutputElementCustom.cpp \ bindings/js/JSHTMLSelectElementCustom.cpp \ + bindings/js/JSHTMLStyleElementCustom.cpp \ bindings/js/JSHistoryCustom.cpp \ bindings/js/JSIDBAnyCustom.cpp \ bindings/js/JSIDBKeyCustom.cpp \ @@ -152,7 +163,11 @@ LOCAL_SRC_FILES += \ bindings/js/JSNodeListCustom.cpp \ bindings/js/JSOptionConstructor.cpp \ bindings/js/JSPluginElementFunctions.cpp \ +<<<<<<< HEAD bindings/js/JSPopStateEventCustom.cpp \ +======= + bindings/js/JSProcessingInstructionCustom.cpp \ +>>>>>>> webkit.org at r73109 bindings/js/JSSQLResultSetRowListCustom.cpp \ bindings/js/JSSQLTransactionCustom.cpp \ bindings/js/JSSQLTransactionSyncCustom.cpp \ @@ -168,9 +183,14 @@ LOCAL_SRC_FILES += \ bindings/js/JSTouchCustom.cpp \ bindings/js/JSTouchListCustom.cpp \ bindings/js/JSTreeWalkerCustom.cpp \ +<<<<<<< HEAD bindings/js/JSUint16ArrayCustom.cpp \ bindings/js/JSUint32ArrayCustom.cpp \ bindings/js/JSUint8ArrayCustom.cpp \ +======= + bindings/js/JSWebKitCSSKeyframeRuleCustom.cpp \ + bindings/js/JSWebKitCSSKeyframesRuleCustom.cpp \ +>>>>>>> webkit.org at r73109 bindings/js/JSWebKitCSSMatrixCustom.cpp \ bindings/js/JSWebKitPointCustom.cpp \ bindings/js/JSWorkerContextBase.cpp \ diff --git a/WebCore/Android.mk b/WebCore/Android.mk index d67aa34..bcb5efe 100644 --- a/WebCore/Android.mk +++ b/WebCore/Android.mk @@ -673,6 +673,7 @@ LOCAL_SRC_FILES := $(LOCAL_SRC_FILES) \ platform/image-decoders/gif/GIFImageReader.cpp \ \ platform/mock/DeviceOrientationClientMock.cpp \ + platform/mock/GeolocationClientMock.cpp \ platform/mock/GeolocationServiceMock.cpp \ platform/mock/SpeechInputClientMock.cpp \ \ @@ -984,7 +985,6 @@ LOCAL_SRC_FILES := $(LOCAL_SRC_FILES) \ svg/SVGAnimateElement.cpp \ svg/SVGAnimateMotionElement.cpp \ svg/SVGAnimateTransformElement.cpp \ - svg/SVGAnimatedPathData.cpp \ svg/SVGAnimationElement.cpp \ svg/SVGCircleElement.cpp \ svg/SVGClipPathElement.cpp \ @@ -1063,20 +1063,9 @@ LOCAL_SRC_FILES := $(LOCAL_SRC_FILES) \ svg/SVGPathElement.cpp \ svg/SVGPathParser.cpp \ svg/SVGPathParserFactory.cpp \ - svg/SVGPathSeg.cpp \ - svg/SVGPathSegArc.cpp \ - svg/SVGPathSegClosePath.cpp \ - svg/SVGPathSegCurvetoCubic.cpp \ - svg/SVGPathSegCurvetoCubicSmooth.cpp \ - svg/SVGPathSegCurvetoQuadratic.cpp \ - svg/SVGPathSegCurvetoQuadraticSmooth.cpp \ - svg/SVGPathSegLineto.cpp \ - svg/SVGPathSegLinetoHorizontal.cpp \ - svg/SVGPathSegLinetoVertical.cpp \ svg/SVGPathSegList.cpp \ svg/SVGPathSegListBuilder.cpp \ svg/SVGPathSegListSource.cpp \ - svg/SVGPathSegMoveto.cpp \ svg/SVGPathStringBuilder.cpp \ svg/SVGPathStringSource.cpp \ svg/SVGPathTraversalStateBuilder.cpp \ diff --git a/WebCore/CMakeLists.txt b/WebCore/CMakeLists.txt index 08f8809..f35da2f 100644 --- a/WebCore/CMakeLists.txt +++ b/WebCore/CMakeLists.txt @@ -99,7 +99,6 @@ SET(WebCore_IDL_INCLUDES SET(WebCore_IDL_PURE_FILES svg/ElementTimeControl.idl - svg/SVGAnimatedPathData.idl svg/SVGExternalResourcesRequired.idl svg/SVGFilterPrimitiveStandardAttributes.idl svg/SVGFitToViewBox.idl @@ -129,6 +128,7 @@ SET(WebCore_IDL_FILES css/CSSValue.idl css/CSSValueList.idl css/MediaList.idl + css/MediaQueryList.idl css/Rect.idl css/RGBColor.idl css/StyleMedia.idl @@ -293,6 +293,7 @@ SET(WebCore_IDL_FILES html/canvas/CanvasPattern.idl html/canvas/CanvasRenderingContext2D.idl html/canvas/CanvasRenderingContext.idl + html/canvas/DataView.idl html/canvas/Float32Array.idl html/canvas/Int16Array.idl html/canvas/Int32Array.idl @@ -330,6 +331,9 @@ SET(WebCore_IDL_FILES page/PerformanceTiming.idl page/PositionError.idl page/Screen.idl + page/SpeechInputEvent.idl + page/SpeechInputResult.idl + page/SpeechInputResultList.idl page/WebKitPoint.idl page/WorkerNavigator.idl @@ -535,12 +539,6 @@ IF (ENABLE_SVG) ENDIF() SET(WebCore_SOURCES - ${DERIVED_SOURCES_DIR}/DocTypeStrings.cpp - ${DERIVED_SOURCES_DIR}/CSSValueKeywords.cpp - ${DERIVED_SOURCES_DIR}/CSSPropertyNames.cpp - ${DERIVED_SOURCES_DIR}/ColorData.cpp - ${DERIVED_SOURCES_DIR}/HTMLEntityTable.cpp - ${DERIVED_SOURCES_DIR}/UserAgentStyleSheetsData.cpp ${DERIVED_SOURCES_DIR}/InspectorBackendDispatcher.cpp ${DERIVED_SOURCES_DIR}/JSWebSocket.cpp @@ -575,40 +573,47 @@ SET(WebCore_SOURCES bindings/js/DOMWrapperWorld.cpp bindings/js/GCController.cpp bindings/js/IDBBindingUtilities.cpp - bindings/js/JavaScriptCallFrame.cpp bindings/js/JSAttrCustom.cpp + bindings/js/JSCDATASectionCustom.cpp + bindings/js/JSCSSFontFaceRuleCustom.cpp + bindings/js/JSCSSImportRuleCustom.cpp + bindings/js/JSCSSMediaRuleCustom.cpp + bindings/js/JSCSSPageRuleCustom.cpp + bindings/js/JSCSSRuleCustom.cpp + bindings/js/JSCSSRuleListCustom.cpp + bindings/js/JSCSSStyleDeclarationCustom.cpp + bindings/js/JSCSSStyleRuleCustom.cpp + bindings/js/JSCSSValueCustom.cpp bindings/js/JSCallbackData.cpp bindings/js/JSCanvasRenderingContext2DCustom.cpp bindings/js/JSCanvasRenderingContextCustom.cpp - bindings/js/JSCDATASectionCustom.cpp bindings/js/JSClipboardCustom.cpp bindings/js/JSConsoleCustom.cpp bindings/js/JSCoordinatesCustom.cpp - bindings/js/JSCSSRuleCustom.cpp - bindings/js/JSCSSRuleListCustom.cpp - bindings/js/JSCSSStyleDeclarationCustom.cpp - bindings/js/JSCSSValueCustom.cpp bindings/js/JSCustomPositionCallback.cpp bindings/js/JSCustomPositionErrorCallback.cpp bindings/js/JSCustomSQLStatementErrorCallback.cpp bindings/js/JSCustomVoidCallback.cpp bindings/js/JSCustomXPathNSResolver.cpp - bindings/js/JSDataGridColumnListCustom.cpp - bindings/js/JSDataGridDataSource.cpp - bindings/js/JSDebugWrapperSet.cpp - bindings/js/JSDedicatedWorkerContextCustom.cpp - bindings/js/JSDeviceMotionEventCustom.cpp - bindings/js/JSDeviceOrientationEventCustom.cpp - bindings/js/JSDocumentCustom.cpp bindings/js/JSDOMApplicationCacheCustom.cpp bindings/js/JSDOMBinding.cpp bindings/js/JSDOMFormDataCustom.cpp bindings/js/JSDOMGlobalObject.cpp + bindings/js/JSDOMMimeTypeArrayCustom.cpp + bindings/js/JSDOMPluginArrayCustom.cpp + bindings/js/JSDOMPluginCustom.cpp bindings/js/JSDOMStringMapCustom.cpp bindings/js/JSDOMWindowBase.cpp bindings/js/JSDOMWindowCustom.cpp bindings/js/JSDOMWindowShell.cpp bindings/js/JSDOMWrapper.cpp + bindings/js/JSDataGridColumnListCustom.cpp + bindings/js/JSDataGridDataSource.cpp + bindings/js/JSDebugWrapperSet.cpp + bindings/js/JSDedicatedWorkerContextCustom.cpp + bindings/js/JSDeviceMotionEventCustom.cpp + bindings/js/JSDeviceOrientationEventCustom.cpp + bindings/js/JSDocumentCustom.cpp bindings/js/JSElementCustom.cpp bindings/js/JSEventCustom.cpp bindings/js/JSEventListener.cpp @@ -617,9 +622,6 @@ SET(WebCore_SOURCES bindings/js/JSExceptionBase.cpp bindings/js/JSFileReaderCustom.cpp bindings/js/JSGeolocationCustom.cpp - bindings/js/JSHistoryCustom.cpp - bindings/js/JSIDBAnyCustom.cpp - bindings/js/JSIDBKeyCustom.cpp bindings/js/JSHTMLAllCollectionCustom.cpp bindings/js/JSHTMLAppletElementCustom.cpp bindings/js/JSHTMLCanvasElementCustom.cpp @@ -632,10 +634,15 @@ SET(WebCore_SOURCES bindings/js/JSHTMLFrameElementCustom.cpp bindings/js/JSHTMLFrameSetElementCustom.cpp bindings/js/JSHTMLInputElementCustom.cpp + bindings/js/JSHTMLLinkElementCustom.cpp bindings/js/JSHTMLObjectElementCustom.cpp bindings/js/JSHTMLOptionsCollectionCustom.cpp bindings/js/JSHTMLOutputElementCustom.cpp bindings/js/JSHTMLSelectElementCustom.cpp + bindings/js/JSHTMLStyleElementCustom.cpp + bindings/js/JSHistoryCustom.cpp + bindings/js/JSIDBAnyCustom.cpp + bindings/js/JSIDBKeyCustom.cpp bindings/js/JSImageConstructor.cpp bindings/js/JSImageDataCustom.cpp bindings/js/JSInjectedScriptHostCustom.cpp @@ -647,7 +654,6 @@ SET(WebCore_SOURCES bindings/js/JSMessageChannelCustom.cpp bindings/js/JSMessageEventCustom.cpp bindings/js/JSMessagePortCustom.cpp - bindings/js/JSDOMMimeTypeArrayCustom.cpp bindings/js/JSNamedNodeMapCustom.cpp bindings/js/JSNavigatorCustom.cpp bindings/js/JSNodeCustom.cpp @@ -656,15 +662,14 @@ SET(WebCore_SOURCES bindings/js/JSNodeIteratorCustom.cpp bindings/js/JSNodeListCustom.cpp bindings/js/JSOptionConstructor.cpp - bindings/js/JSDOMPluginArrayCustom.cpp - bindings/js/JSDOMPluginCustom.cpp bindings/js/JSPluginElementFunctions.cpp bindings/js/JSPopStateEventCustom.cpp - bindings/js/JSScriptProfileNodeCustom.cpp - bindings/js/JSSharedWorkerCustom.cpp + bindings/js/JSProcessingInstructionCustom.cpp bindings/js/JSSQLResultSetRowListCustom.cpp bindings/js/JSSQLTransactionCustom.cpp bindings/js/JSSQLTransactionSyncCustom.cpp + bindings/js/JSScriptProfileNodeCustom.cpp + bindings/js/JSSharedWorkerCustom.cpp bindings/js/JSStorageCustom.cpp bindings/js/JSStyleSheetCustom.cpp bindings/js/JSStyleSheetListCustom.cpp @@ -672,6 +677,8 @@ SET(WebCore_SOURCES bindings/js/JSTouchCustom.cpp bindings/js/JSTouchListCustom.cpp bindings/js/JSTreeWalkerCustom.cpp + bindings/js/JSWebKitCSSKeyframeRuleCustom.cpp + bindings/js/JSWebKitCSSKeyframesRuleCustom.cpp bindings/js/JSWebKitCSSMatrixCustom.cpp bindings/js/JSWebKitPointCustom.cpp bindings/js/JSWebSocketCustom.cpp @@ -682,6 +689,7 @@ SET(WebCore_SOURCES bindings/js/JSXMLHttpRequestCustom.cpp bindings/js/JSXMLHttpRequestUploadCustom.cpp bindings/js/JSXSLTProcessorCustom.cpp + bindings/js/JavaScriptCallFrame.cpp bindings/js/ScheduledAction.cpp bindings/js/ScriptCachedFrameData.cpp bindings/js/ScriptCallStackFactory.cpp @@ -763,6 +771,9 @@ SET(WebCore_SOURCES css/MediaQuery.cpp css/MediaQueryEvaluator.cpp css/MediaQueryExp.cpp + css/MediaQueryList.cpp + css/MediaQueryListListener.cpp + css/MediaQueryMatcher.cpp css/RGBColor.cpp css/ShadowValue.cpp css/StyleBase.cpp @@ -1356,6 +1367,7 @@ SET(WebCore_SOURCES platform/image-decoders/webp/WEBPImageDecoder.cpp platform/mock/DeviceOrientationClientMock.cpp + platform/mock/GeolocationClientMock.cpp platform/mock/GeolocationServiceMock.cpp platform/network/AuthenticationChallengeBase.cpp @@ -1601,6 +1613,25 @@ SET(WebCore_SOURCES xml/XSLTUnicodeSort.cpp ) +SET(WebCore_CSS_PROPERTY_NAMES + ${WEBCORE_DIR}/css/CSSPropertyNames.in +) + +SET(WebCore_CSS_VALUE_KEYWORDS + ${WEBCORE_DIR}/css/CSSValueKeywords.in +) + +SET(WebCore_USER_AGENT_STYLE_SHEETS + ${WEBCORE_DIR}/css/html.css + ${WEBCORE_DIR}/css/mathml.css + ${WEBCORE_DIR}/css/mediaControls.css + ${WEBCORE_DIR}/css/mediaControlsGtk.css + ${WEBCORE_DIR}/css/quirks.css + ${WEBCORE_DIR}/css/svg.css + ${WEBCORE_DIR}/css/view-source.css + ${WEBCORE_DIR}/css/wml.css +) + IF (ENABLE_BLOB) LIST(APPEND WebCore_SOURCES fileapi/FileReader.cpp @@ -1678,6 +1709,7 @@ if (ENABLE_FILE_SYSTEM) fileapi/FileEntrySync.cpp fileapi/FileSystemCallbacks.cpp fileapi/FileWriter.cpp + fileapi/FileWriterBase.cpp fileapi/FileWriterSync.cpp fileapi/LocalFileSystem.cpp platform/AsyncFileSystem.cpp @@ -1714,7 +1746,6 @@ IF (ENABLE_SVG) bindings/js/JSSVGElementInstanceCustom.cpp bindings/js/JSSVGLengthCustom.cpp bindings/js/JSSVGPathSegCustom.cpp - bindings/js/JSSVGPathSegListCustom.cpp css/SVGCSSComputedStyleDeclaration.cpp css/SVGCSSParser.cpp css/SVGCSSStyleSelector.cpp @@ -1778,7 +1809,6 @@ IF (ENABLE_SVG) svg/SVGAnimateElement.cpp svg/SVGAnimateMotionElement.cpp svg/SVGAnimateTransformElement.cpp - svg/SVGAnimatedPathData.cpp svg/SVGAnimationElement.cpp svg/SVGCircleElement.cpp svg/SVGClipPathElement.cpp @@ -1858,20 +1888,9 @@ IF (ENABLE_SVG) svg/SVGPathElement.cpp svg/SVGPathParser.cpp svg/SVGPathParserFactory.cpp - svg/SVGPathSeg.cpp - svg/SVGPathSegArc.cpp - svg/SVGPathSegClosePath.cpp - svg/SVGPathSegCurvetoCubic.cpp - svg/SVGPathSegCurvetoCubicSmooth.cpp - svg/SVGPathSegCurvetoQuadratic.cpp - svg/SVGPathSegCurvetoQuadraticSmooth.cpp - svg/SVGPathSegLineto.cpp - svg/SVGPathSegLinetoHorizontal.cpp - svg/SVGPathSegLinetoVertical.cpp svg/SVGPathSegList.cpp svg/SVGPathSegListBuilder.cpp svg/SVGPathSegListSource.cpp - svg/SVGPathSegMoveto.cpp svg/SVGPathStringBuilder.cpp svg/SVGPathStringSource.cpp svg/SVGPathTraversalStateBuilder.cpp @@ -1921,6 +1940,15 @@ IF (ENABLE_SVG) svg/graphics/filters/SVGFEImage.cpp svg/graphics/filters/SVGFilter.cpp svg/graphics/filters/SVGFilterBuilder.cpp + svg/properties/SVGPathSegListPropertyTearOff.cpp + ) + + LIST(APPEND WebCore_CSS_PROPERTY_NAMES + ${WEBCORE_DIR}/css/SVGCSSPropertyNames.in + ) + + LIST(APPEND WebCore_CSS_VALUE_KEYWORDS + ${WEBCORE_DIR}/css/SVGCSSValueKeywords.in ) ENDIF() @@ -2005,17 +2033,73 @@ GENERATE_INSPECTOR_FROM_IDL(inspector/Inspector.idl) LIST(APPEND WebCore_SOURCES ${JS_IDL_FILES} ${Inspector_IDL_FILES}) -GENERATE_ENTITIES(${WEBCORE_DIR}/html/parser/HTMLEntityNames.in ${DERIVED_SOURCES_DIR}/HTMLEntityTable.cpp ${WEBCORE_DIR}/html/parser/create-html-entity-table) - MAKE_HASH_TOOLS(${WEBCORE_DIR}/platform/ColorData) -ADD_SOURCE_DERIVED_DEPENDENCIES(${WEBCORE_DIR}/platform/graphics/Color.cpp ColorData.cpp) +LIST(APPEND WebCore_SOURCES ${DERIVED_SOURCES_DIR}/ColorData.cpp) + MAKE_HASH_TOOLS(${WEBCORE_DIR}/html/DocTypeStrings) -ADD_SOURCE_DERIVED_DEPENDENCIES(${WEBCORE_DIR}/html/HTMLDocument.cpp DocTypeStrings.cpp) +LIST(APPEND WebCore_SOURCES ${DERIVED_SOURCES_DIR}/DocTypeStrings.cpp) + + +# Generate HTML entity table +ADD_CUSTOM_COMMAND( + OUTPUT ${DERIVED_SOURCES_DIR}/HTMLEntityTable.cpp + MAIN_DEPENDENCY ${WEBCORE_DIR}/html/parser/HTMLEntityNames.in + DEPENDS ${WEBCORE_DIR}/html/parser/create-html-entity-table + COMMAND ${PYTHON_EXECUTABLE} ${WEBCORE_DIR}/html/parser/create-html-entity-table -o ${DERIVED_SOURCES_DIR}/HTMLEntityTable.cpp ${WEBCORE_DIR}/html/parser/HTMLEntityNames.in + VERBATIM) +LIST(APPEND WebCore_SOURCES ${DERIVED_SOURCES_DIR}/HTMLEntityTable.cpp) + + +# Generate tokenizer +FILE(TO_NATIVE_PATH ${PERL_EXECUTABLE} PERL_EXECUTABLE_NATIVE_PATH) +ADD_CUSTOM_COMMAND( + OUTPUT ${DERIVED_SOURCES_DIR}/tokenizer.cpp + MAIN_DEPENDENCY ${WEBCORE_DIR}/css/maketokenizer + DEPENDS ${WEBCORE_DIR}/css/tokenizer.flex + COMMAND ${FLEX_EXECUTABLE} -t ${WEBCORE_DIR}/css/tokenizer.flex | ${PERL_EXECUTABLE_NATIVE_PATH} ${WEBCORE_DIR}/css/maketokenizer > ${DERIVED_SOURCES_DIR}/tokenizer.cpp + VERBATIM) +ADD_SOURCE_DERIVED_DEPENDENCIES(${WEBCORE_DIR}/css/CSSParser.cpp tokenizer.cpp) -GENERATE_TOKENIZER() -GENERATE_USER_AGENT_STYLES() +# Generate CSS property names +ADD_CUSTOM_COMMAND ( + OUTPUT ${DERIVED_SOURCES_DIR}/CSSPropertyNames.in ${DERIVED_SOURCES_DIR}/CSSPropertyNames.h ${DERIVED_SOURCES_DIR}/CSSPropertyNames.cpp ${DERIVED_SOURCES_DIR}/CSSPropertyNames.gperf + MAIN_DEPENDENCY ${WEBCORE_DIR}/css/makeprop.pl + DEPENDS ${WebCore_CSS_PROPERTY_NAMES} + WORKING_DIRECTORY ${DERIVED_SOURCES_DIR} + COMMAND ${PERL_EXECUTABLE} -ne "print" ${WebCore_CSS_PROPERTY_NAMES} > ${DERIVED_SOURCES_DIR}/CSSPropertyNames.in + COMMAND ${PERL_EXECUTABLE} ${WEBCORE_DIR}/css/makeprop.pl + VERBATIM) +LIST(APPEND WebCore_SOURCES ${DERIVED_SOURCES_DIR}/CSSPropertyNames.cpp) +ADD_SOURCE_DERIVED_DEPENDENCIES(${WEBCORE_DIR}/css/CSSParser.cpp CSSValueKeywords.h) +ADD_SOURCE_DERIVED_DEPENDENCIES(${DERIVED_SOURCES_DIR}/CSSGrammar.cpp CSSPropertyNames.h) + + +# Generate CSS value keywords +ADD_CUSTOM_COMMAND ( + OUTPUT ${DERIVED_SOURCES_DIR}/CSSValueKeywords.in ${DERIVED_SOURCES_DIR}/CSSValueKeywords.h ${DERIVED_SOURCES_DIR}/CSSValueKeywords.cpp ${DERIVED_SOURCES_DIR}/CSSValueKeywords.gperf + MAIN_DEPENDENCY ${WEBCORE_DIR}/css/makevalues.pl + DEPENDS ${WebCore_CSS_VALUE_KEYWORDS} + WORKING_DIRECTORY ${DERIVED_SOURCES_DIR} + COMMAND ${PERL_EXECUTABLE} -ne "print lc" ${WebCore_CSS_VALUE_KEYWORDS} > ${DERIVED_SOURCES_DIR}/CSSValueKeywords.in + COMMAND ${PERL_EXECUTABLE} ${WEBCORE_DIR}/css/makevalues.pl + VERBATIM) +LIST(APPEND WebCore_SOURCES ${DERIVED_SOURCES_DIR}/CSSValueKeywords.cpp) +ADD_SOURCE_DERIVED_DEPENDENCIES(${WEBCORE_DIR}/css/CSSParser.cpp CSSValueKeywords.h) +ADD_SOURCE_DERIVED_DEPENDENCIES(${WEBCORE_DIR}/css/CSSPrimitiveValueMappings.h CSSValueKeywords.h) +ADD_SOURCE_DERIVED_DEPENDENCIES(${DERIVED_SOURCES_DIR}/CSSGrammar.cpp CSSValueKeywords.h) + + +# Generate user agent styles +ADD_CUSTOM_COMMAND( + OUTPUT ${DERIVED_SOURCES_DIR}/UserAgentStyleSheetsData.cpp ${DERIVED_SOURCES_DIR}/UserAgentStyleSheets.h + MAIN_DEPENDENCY ${WEBCORE_DIR}/css/make-css-file-arrays.pl + DEPENDS ${WebCore_USER_AGENT_STYLE_SHEETS} + COMMAND ${PERL_EXECUTABLE} ${WEBCORE_DIR}/css/make-css-file-arrays.pl ${DERIVED_SOURCES_DIR}/UserAgentStyleSheets.h ${DERIVED_SOURCES_DIR}/UserAgentStyleSheetsData.cpp ${WebCore_USER_AGENT_STYLE_SHEETS} + VERBATIM) +LIST(APPEND WebCore_SOURCES ${DERIVED_SOURCES_DIR}/UserAgentStyleSheetsData.cpp) +ADD_SOURCE_DERIVED_DEPENDENCIES(${WEBCORE_DIR}/css/CSSStyleSelector.cpp UserAgentStyleSheetsData.cpp UserAgentStyleSheets.h) GENERATE_GRAMMAR(cssyy ${WEBCORE_DIR}/css/CSSGrammar.y ${DERIVED_SOURCES_DIR}/CSSGrammar.h ${DERIVED_SOURCES_DIR}/CSSGrammar.cpp) @@ -2026,17 +2110,8 @@ GENERATE_GRAMMAR(xpathyy ${WEBCORE_DIR}/xml/XPathGrammar.y ${DERIVED_SOURCES_DIR LIST(APPEND WebCore_SOURCES ${DERIVED_SOURCES_DIR}/XPathGrammar.cpp) -GENERATE_CSS_PROPERTY_NAMES() -GENERATE_CSS_VALUE_KEYWORDS() - -ADD_SOURCE_DERIVED_DEPENDENCIES(${DERIVED_SOURCES_DIR}/HashTools.h DocTypeStrings.cpp CSSValueKeywords.cpp CSSPropertyNames.cpp ColorData.cpp) -ADD_SOURCE_DERIVED_DEPENDENCIES(${DERIVED_SOURCES_DIR}/CSSGrammar.cpp CSSValueKeywords.h) -ADD_SOURCE_DERIVED_DEPENDENCIES(${DERIVED_SOURCES_DIR}/CSSGrammar.cpp CSSPropertyNames.h) -ADD_SOURCE_DERIVED_DEPENDENCIES(${WEBCORE_DIR}/css/CSSPrimitiveValueMappings.h CSSValueKeywords.h) -ADD_SOURCE_DERIVED_DEPENDENCIES(${WEBCORE_DIR}/css/CSSParser.cpp tokenizer.cpp) ADD_SOURCE_DERIVED_DEPENDENCIES(${WEBCORE_DIR}/html/HTMLTreeBuilder.cpp MathMLNames.cpp) -ADD_SOURCE_DERIVED_DEPENDENCIES(${WEBCORE_DIR}/css/CSSStyleSelector.cpp UserAgentStyleSheetsData.cpp UserAgentStyleSheets.h) GENERATE_DOM_NAMES(HTML ${WEBCORE_DIR}/html/HTMLAttributeNames.in ${WEBCORE_DIR}/html/HTMLTagNames.in "${HTML_FEATURES}") diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog index 48756e8..9bddde5 100644 --- a/WebCore/ChangeLog +++ b/WebCore/ChangeLog @@ -1,3 +1,8213 @@ +2010-12-01 Geoffrey Garen + + Build fix: Added a forwarding header. + + * ForwardingHeaders/wtf/OSAllocator.h: Added. + +2010-12-01 Jia Pu + + Reviewed by Darin Adler. + + Support multiple correction candidates panel for misspelled word on Mac OS X. + https://bugs.webkit.org/show_bug.cgi?id=50137 + + + Test: platform/mac/editing/spelling/delete-autocorrected-word-1.html + Manual test: WebCore/manual-tests/autocorrection/dismiss-multiple-guesses.html + WebCore/manual-tests/autocorrection/select-from-multiple-guesses.html + + This patch is for supporting multiple correction suggestion panel on Mac OS X. + The behavior and implementation is similar to that of reversion candiate panel. + + * WebCore.exp.in: Added and removed symbols. + + * editing/CorrectionPanelInfo.h: Added new correction panel type, PanelTypeSpellingSuggestions. + + * editing/Editor.cpp: + (WebCore::markerTypesForAutocorrection): Convenient function for getting marker types to + be added to autocorrected word. + (WebCore::boundingBoxForRange): Convenient function for calculating the bounding box of a range. + (WebCore::markerTypesForReplacement): Convenient function for getting marker types to + be added to word that has been replaced by various correction panel. + (WebCore::Editor::respondToChangedSelection): Added code to trigger timer for multiple + suggestion panel. + (WebCore::Editor::guessesForMisspelledSelection): Adopted new signature of EditorClient::getGuessesForWord(). + (WebCore::Editor::markMisspellingsAfterTypingToWord): Adopted new signature of applyCorrectionPanelInfo(). + (WebCore::Editor::markAllMisspellingsAndBadGrammarInRanges): Ditto. + (WebCore::Editor::correctionPanelTimerFired): Added code to handle new multiple suggestion panel. + (WebCore::Editor::handleCorrectionPanelResult): Replaced handleRejectedCorrection(), since + with new AppKit correction panel API, not only rejection, but also confirmation can be + handled in callback. + (WebCore::Editor::stopCorrectionPanelTimer): Moved the code that clears correction panel info + from dismissCorrectionPanel() to this function to fix a bug that would occur when deleting + autocorrected word. + (WebCore::Editor::dismissCorrectionPanel): Ditto. + (WebCore::Editor::applyCorrectionPanelInfo): Added code to handle new multiple suggestion panel. + + * editing/Editor.h: Replaced handleRejectedCorrection() with handleCorrectionPanelResult(). + Changed the signature of applyCorrectionPanelInfo() to hanlde new correction panel type. + + * editing/TextCheckingHelper.cpp: + (WebCore::TextCheckingHelper::guessesForMisspelledOrUngrammaticalRange): Adopted new EditorClient::getGuessesForWord(). + + * editing/TextCheckingHelper.h: Made paragraphRange() public. + + * loader/EmptyClients.h: + (WebCore::EmptyEditorClient::showCorrectionPanel): Adopted new signature defined in base class. + (WebCore::EmptyEditorClient::getGuessesForWord): Ditto. + + * manual-tests/autocorrection/dismiss-multiple-guesses.html: Added. + + * manual-tests/autocorrection/select-from-multiple-guesses.html: Added. + + * page/EditorClient.h: Changed showCorrectionPanel() to allow passing multiple correction + candidates. Changed getGuessesForWord() to allow passing in contextual text for better + correction suggestions (for those spellcheckers that utilizes such contextual information). + +2010-12-01 David Hyatt + + Reviewed by James Robinson. + + https://bugs.webkit.org/show_bug.cgi?id=50360 + + Make sure to include the origin adjustment code that I added on Mac to keep truncation-rtl.html passing. + + * platform/ScrollView.cpp: + (WebCore::ScrollView::updateScrollbars): + +2010-12-01 David Hyatt + + Reviewed by Dan Bernstein. + + https://bugs.webkit.org/show_bug.cgi?id=46645 + + Generalize overflow section scrollOriginX code to be a point and to work in both horizontal + and vertical modes. + + Not testable yet, since the rightmost/leftmost/topmost/lowestPosition functions are returning + horrendously wrong values in the vertical text case for overflow:auto objects. + + * rendering/RenderLayer.cpp: + (WebCore::RenderLayer::RenderLayer): + (WebCore::RenderLayer::scrollToOffset): + (WebCore::RenderLayer::computeScrollDimensions): + (WebCore::RenderLayer::updateOverflowStatus): + * rendering/RenderLayer.h: + (WebCore::RenderLayer::scrolledContentOffset): + (WebCore::RenderLayer::scrollXOffset): + (WebCore::RenderLayer::scrollYOffset): + (WebCore::RenderLayer::scrollToXOffset): + (WebCore::RenderLayer::scrollToYOffset): + +2010-12-01 Steve Falkenburg + + Reviewed by Adam Roben. + + WinCairo build should not use link-time code generation (LTCG) + https://bugs.webkit.org/show_bug.cgi?id=50353 + + * WebCore.vcproj/QTMovieWin.vcproj: + * WebCore.vcproj/WebCore.vcproj: + +2010-12-01 David Hyatt + + Reviewed by Darin Adler. + + https://bugs.webkit.org/show_bug.cgi?id=46645 + + Part 1 of making scrolling work with vertical text. This patch generalizes the scrollOriginX concept + recently added for horizontal RTL documents and applies it to writing modes as well. Now the + scrollOrigin is a point, since you can start off locked to the bottom or locked to the right. + + This patch also fixes numerous bugs with the scrollOrigin code using native Mac NSScrollViews and + makes them behave the same as the cross-platform code (allowing for cross-platform results to be + landed). + + * page/FrameView.cpp: + (WebCore::FrameView::adjustViewSize): + * page/mac/WebCoreFrameView.h: + * platform/ScrollView.cpp: + (WebCore::ScrollView::ScrollView): + (WebCore::ScrollView::maximumScrollPosition): + (WebCore::ScrollView::minimumScrollPosition): + (WebCore::ScrollView::valueChanged): + (WebCore::ScrollView::updateScrollbars): + (WebCore::ScrollView::wheelEvent): + * platform/ScrollView.h: + (WebCore::ScrollView::scrollOrigin): + * platform/mac/ScrollViewMac.mm: + (WebCore::ScrollView::platformSetScrollPosition): + (WebCore::ScrollView::platformSetScrollOrigin): + * rendering/RenderBox.cpp: + (WebCore::RenderBox::paintRootBoxDecorations): + * rendering/RenderView.cpp: + (WebCore::RenderView::layout): + (WebCore::RenderView::docTop): + (WebCore::RenderView::docHeight): + (WebCore::RenderView::docLeft): + (WebCore::RenderView::docWidth): + * rendering/RenderView.h: + +2010-11-30 Steve Block + + Reviewed by Jeremy Orlow. + + Upstream recent changes to WebCore/platform/network/android + https://bugs.webkit.org/show_bug.cgi?id=50224 + + Android implementation changes only, no new tests. + + * platform/network/NetworkingContext.h: + * platform/network/android/CookieJarAndroid.cpp: + (WebCore::setCookies): + (WebCore::cookies): + (WebCore::cookieRequestHeaderFieldValue): + (WebCore::cookiesEnabled): + * platform/network/android/ProxyServerAndroid.cpp: Added. + (WebCore::proxyServersForURL): + * platform/network/android/ResourceHandleAndroid.cpp: + (WebCore::ResourceHandle::start): + (WebCore::ResourceHandle::loadResourceSynchronously): + * platform/network/android/ResourceRequestAndroid.cpp: + (WebCore::initializeMaximumHTTPConnectionCountPerHost): + +2010-12-01 Steve Falkenburg + + Reviewed by Adam Roben. + + vcproj changes can't be applied cleanly by the Windows EWS bot + https://bugs.webkit.org/show_bug.cgi?id=50328 + + * WebCore.vcproj/QTMovieWin.vcproj: Modified property svn:eol-style. + * WebCore.vcproj/QTMovieWinCommon.vsprops: Added property svn:eol-style. + * WebCore.vcproj/WebCore.sln: Modified property svn:eol-style. + * WebCore.vcproj/WebCore.submit.sln: Modified property svn:eol-style. + * WebCore.vcproj/WebCore.vcproj: Modified property svn:eol-style. + * WebCore.vcproj/WebCoreCFNetwork.vsprops: Added property svn:eol-style. + * WebCore.vcproj/WebCoreCG.vsprops: Added property svn:eol-style. + * WebCore.vcproj/WebCoreCURL.vsprops: Added property svn:eol-style. + * WebCore.vcproj/WebCoreCairo.vsprops: Added property svn:eol-style. + * WebCore.vcproj/WebCoreCommon.vsprops: Added property svn:eol-style. + * WebCore.vcproj/WebCoreGenerated.vcproj: Modified property svn:eol-style. + * WebCore.vcproj/WebCoreGeneratedCairo.vsprops: Added property svn:eol-style. + * WebCore.vcproj/WebCoreGeneratedCommon.vsprops: Added property svn:eol-style. + * WebCore.vcproj/WebCoreMediaQT.vsprops: Added property svn:eol-style. + * WebCore.vcproj/WebCorePthreads.vsprops: Added property svn:eol-style. + * WebCore.vcproj/WebCoreQuartzCore.vsprops: Added property svn:eol-style. + +2010-11-30 Vangelis Kokkevis + + Reviewed by Darin Fisher. + + Adds accelerated compositing trigger flags to Settings to allow + ports to set them via command line flags, etc. + https://bugs.webkit.org/show_bug.cgi?id=50301 + + * page/Settings.cpp: + (WebCore::Settings::Settings): + (WebCore::Settings::setAcceleratedCompositingFor3DTransformsEnabled): + (WebCore::Settings::setAcceleratedCompositingForVideoEnabled): + (WebCore::Settings::setAcceleratedCompositingForPluginsEnabled): + (WebCore::Settings::setAcceleratedCompositingForCanvasEnabled): + (WebCore::Settings::setAcceleratedCompositingForAnimationEnabled): + * page/Settings.h: + (WebCore::Settings::acceleratedCompositingFor3DTransformsEnabled): + (WebCore::Settings::acceleratedCompositingForVideoEnabled): + (WebCore::Settings::acceleratedCompositingForPluginsEnabled): + (WebCore::Settings::acceleratedCompositingForCanvasEnabled): + (WebCore::Settings::acceleratedCompositingForAnimationEnabled): + +2010-12-01 Darin Adler + + Fixed warning seen on buildbot. + + * platform/graphics/chromium/ContentLayerChromium.cpp: + (WebCore::ContentLayerChromium::SharedValues::SharedValues): Added #if. + +2010-12-01 Ryosuke Niwa + + Reviewed by Darin Adler, Tony Chang, and unofficially by Enrica Casucci. + + chrome.dll!WebCore::RangeBoundaryPoint::toPosition ReadAV@NULL (cf0d0f28bc56f2591cc74f71b46036ea) + https://bugs.webkit.org/show_bug.cgi?id=47808 + + The crash was caused by moveParagraphWithClones' not copying the entire paragraph + when called by doApplyForSingleParagraph, which was induced by a bug in + cloneParagraphUnderNewElement which ended the cloning process early when the start node + and the end node didn't share the same parent node. Fixed the bug in cloneParagraphUnderNewElement + by calling traverseNextSibling(outerNode) instead of nextSibling(). + + Also added an early exit to InsertListCommand::doApply when lastSelectionRange is null. + + Tests: editing/execCommand/switch-multiple-list-items-crash.html + editing/execCommand/switch-multiple-list-items.html + + * editing/CompositeEditCommand.cpp: + (WebCore::CompositeEditCommand::cloneParagraphUnderNewElement): + * editing/InsertListCommand.cpp: + (WebCore::InsertListCommand::doApply): + +2010-12-01 Kevin Ollivier + + [wx] Build fixes after recent trunk changes. + + * platform/graphics/wx/ImageBufferWx.cpp: + (WebCore::ImageBuffer::ImageBuffer): + * platform/wx/LocalizedStringsWx.cpp: + (WebCore::platformDefaultLanguage): + +2010-12-01 Sheriff Bot + + Unreviewed, rolling out r73047. + http://trac.webkit.org/changeset/73047 + https://bugs.webkit.org/show_bug.cgi?id=50339 + + missing bug number (Requested by rniwa on #webkit). + + * editing/CompositeEditCommand.cpp: + (WebCore::CompositeEditCommand::cloneParagraphUnderNewElement): + * editing/InsertListCommand.cpp: + (WebCore::InsertListCommand::doApply): + +2010-12-01 Ryosuke Niwa + + Reviewed by Darin Adler, Tony Chang, and unofficially by Enrica Casucci. + + The crash was caused by moveParagraphWithClones' not copying the entire paragraph + when called by doApplyForSingleParagraph, which was induced by a bug in + cloneParagraphUnderNewElement which ended the cloning process early when the start node + and the end node didn't share the same parent node. Fixed the bug in cloneParagraphUnderNewElement + by calling traverseNextSibling(outerNode) instead of nextSibling(). + + Also added an early exit to InsertListCommand::doApply when lastSelectionRange is null. + + Tests: editing/execCommand/switch-multiple-list-items-crash.html + editing/execCommand/switch-multiple-list-items.html + + * editing/CompositeEditCommand.cpp: + (WebCore::CompositeEditCommand::cloneParagraphUnderNewElement): + * editing/InsertListCommand.cpp: + (WebCore::InsertListCommand::doApply): + +2010-12-01 Grace Kloba + + Reviewed by Kenneth Russell. + + [chromium] ContentLayerChromium shader should honor the platform Sk_x_SHIFT value instead of assuming BGRA color + https://bugs.webkit.org/show_bug.cgi?id=50189 + + * platform/graphics/chromium/ContentLayerChromium.cpp: + (WebCore::ContentLayerChromium::SharedValues::SharedValues):Use SK_B32_SHIFT to decide whether to use RGBA or BGRA shader for Skia port. + +2010-12-01 Nico Weber + + Reviewed by Dimitri Glazkov. + + Fix clang warnings caused by -Wlogical-op-parentheses + https://bugs.webkit.org/show_bug.cgi?id=50324 + + * platform/graphics/mac/ComplexTextController.cpp: + (WebCore::ComplexTextController::adjustGlyphsAndAdvances): + +2010-12-01 Martin Robinson + + Build fix for GTK+. + + * platform/gtk/PopupMenuGtk.cpp: + (WebCore::PopupMenuGtk::typeAheadFind): Uncomment mistakenly commented line. + +2010-12-01 Apelete Seketeli and Martin Robinson + + Reviewed by Xan Lopez. + + [Gtk] Open menulists should support typeahead find + https://bugs.webkit.org/show_bug.cgi?id=27443 + + Added typeahead find support for open GTK+ menulists. + + Test: platform/gtk/fast/forms/menulist-typeahead-find.html + + * platform/gtk/PopupMenuGtk.cpp: + (WebCore::PopupMenuGtk::PopupMenuGtk): Initialize new members. + (WebCore::PopupMenuGtk::show): Track currently selected menu item + via a signal handler. + (WebCore::PopupMenuGtk::typeAheadFind): Added. + (WebCore::PopupMenuGtk::menuUnmapped): Reset typeahead find state + when menu is unmapped. + (WebCore::PopupMenuGtk::resetTypeAheadFindState): Added. + (WebCore::PopupMenuGtk::selectItemCallback): Added. + (WebCore::PopupMenuGtk::keyPressEventCallback): Added. + * platform/gtk/PopupMenuGtk.h: Added new members to track typeahead + find state. + +2010-12-01 Nikolas Zimmermann + + Reviewed by Xan Lopez. + + Split DECLARE_ANIMATED_PROPERTY* in DECLARE/DEFINE parts for SVGAnimatedNumber + https://bugs.webkit.org/show_bug.cgi?id=50323 + + Continuing the work on bug 42025: Introduce DECLARE_ANIMATED_NUMBER / DEFINE_ANIMATED_NUMBER. + The animated property declaration lives in the header, the definition in the cpp file, to avoid the dependency on SVGNames.h in all headers. + + No functional changes, thus no new tests. + + * svg/SVGAnimatedNumber.h: + * svg/SVGComponentTransferFunctionElement.cpp: + * svg/SVGComponentTransferFunctionElement.h: + * svg/SVGFECompositeElement.cpp: + * svg/SVGFECompositeElement.h: + * svg/SVGFEConvolveMatrixElement.cpp: + * svg/SVGFEConvolveMatrixElement.h: + * svg/SVGFEDiffuseLightingElement.cpp: + * svg/SVGFEDiffuseLightingElement.h: + * svg/SVGFEDisplacementMapElement.cpp: + * svg/SVGFEDisplacementMapElement.h: + * svg/SVGFEGaussianBlurElement.cpp: + * svg/SVGFEGaussianBlurElement.h: + * svg/SVGFELightElement.cpp: + * svg/SVGFELightElement.h: + * svg/SVGFEMorphologyElement.cpp: + * svg/SVGFEMorphologyElement.h: + * svg/SVGFEOffsetElement.cpp: + * svg/SVGFEOffsetElement.h: + * svg/SVGFESpecularLightingElement.cpp: + * svg/SVGFESpecularLightingElement.h: + * svg/SVGFETurbulenceElement.cpp: + * svg/SVGFETurbulenceElement.h: + * svg/SVGPathElement.cpp: + * svg/SVGPathElement.h: + * svg/SVGStopElement.cpp: + * svg/SVGStopElement.h: + (WebCore::SVGStopElement::isGradientStop): + +2010-12-01 Martin Robinson + + Reviewed by Xan Lopez. + + Sliders are not transformed after r50188 + https://bugs.webkit.org/show_bug.cgi?id=50317 + + Need to call updateLayerTransform during slider layout, as sliders + may be transformed. + + No new tests. This patch should make fast/forms/slider-transformed.html + pass on the GTK+ bots. + + * rendering/RenderSlider.cpp: + (WebCore::RenderSlider::layout): Call updateLayerTransform here. + +2010-11-30 Pavel Feldman + + Reviewed by Yury Semikhatsky. + + Web Inspector: do not make helpScreen.css lazily loaded. + https://bugs.webkit.org/show_bug.cgi?id=50304 + + * inspector/front-end/HelpScreen.js: + (WebInspector.HelpScreen): + (WebInspector.HelpScreen.prototype._onBlur): + * inspector/front-end/inspector.html: + +2010-12-01 Nikolas Zimmermann + + Reviewed by Xan Lopez. + + Split DECLARE_ANIMATED_PROPERTY* in DECLARE/DEFINE parts for SVGLengthList/SVGNumberList/SVGTransformList + https://bugs.webkit.org/show_bug.cgi?id=50322 + + Continuing the work on bug 42025: Introduce DECLARE_ANIMATED_(LENGTH|NUMBER|TRANSFORM)_LIST / DEFINE_ANIMATED_(LENGTH|NUMBER|TRANSFORM). + The animated property declaration lives in the header, the definition in the cpp file, to avoid the dependency on SVGNames.h in all headers. + + No functional changes, thus no new tests. + + * svg/SVGAnimatedLengthList.h: + * svg/SVGAnimatedNumberList.h: + * svg/SVGAnimatedTransformList.h: + * svg/SVGComponentTransferFunctionElement.cpp: + * svg/SVGComponentTransferFunctionElement.h: + * svg/SVGFEColorMatrixElement.cpp: + * svg/SVGFEColorMatrixElement.h: + * svg/SVGFEConvolveMatrixElement.cpp: + * svg/SVGFEConvolveMatrixElement.h: + * svg/SVGGradientElement.cpp: + * svg/SVGGradientElement.h: + (WebCore::SVGGradientElement::needsPendingResourceHandling): + * svg/SVGPatternElement.cpp: + * svg/SVGPatternElement.h: + * svg/SVGPolygonElement.cpp: + * svg/SVGPolylineElement.cpp: + * svg/SVGStyledTransformableElement.cpp: + * svg/SVGStyledTransformableElement.h: + * svg/SVGTextElement.cpp: + (WebCore::SVGTextElement::SVGTextElement): + * svg/SVGTextElement.h: + (WebCore::SVGTextElement::localCoordinateSpaceTransform): + * svg/SVGTextPositioningElement.cpp: + * svg/SVGTextPositioningElement.h: + * svg/properties/SVGAnimatedPropertyMacros.h: + +2010-12-01 Alexander Pavlov + + Reviewed by Yury Semikhatsky. + + Web Inspector: name-only property appears in style declaration but not in the Styles pane + https://bugs.webkit.org/show_bug.cgi?id=49663 + + Check that at least one property has been parsed from the user input. + + * inspector/InspectorStyleSheet.cpp: + (WebCore::InspectorStyle::setPropertyText): + +2010-12-01 Andrey Kosyakov + + Reviewed by Pavel Feldman. + + Web Inspector: disable cookies tab in network resource view by default, enable for chromium + https://bugs.webkit.org/show_bug.cgi?id=50249 + + * inspector/front-end/NetworkItemView.js: + (WebInspector.NetworkItemView): + (WebInspector.NetworkItemView.prototype.resize): + * inspector/front-end/Settings.js: + +2010-12-01 Nikolas Zimmermann + + Reviewed by Xan Lopez. + + Split DECLARE_ANIMATED_PROPERTY* in DECLARE/DEFINE parts for SVGLength + https://bugs.webkit.org/show_bug.cgi?id=50316 + + Introduce DECLARE_ANIMATED_LENGTH / DEFINE_ANIMATED_LENGTH, splitting up the original DECLARE_ANIMATED_PROPERTY_NEW macro + in a part that goes in the .cpp file and another that remains in the header. This avoids having to include SVGNames.h + in all SVG*Element files. + + No functional changes, thus no new tests. + + * svg/SVGAnimatedLength.h: + * svg/SVGCircleElement.cpp: + * svg/SVGCircleElement.h: + (WebCore::SVGCircleElement::isValid): + * svg/SVGCursorElement.cpp: + * svg/SVGCursorElement.h: + (WebCore::SVGCursorElement::isValid): + * svg/SVGEllipseElement.cpp: + * svg/SVGEllipseElement.h: + (WebCore::SVGEllipseElement::isValid): + * svg/SVGFilterElement.cpp: + * svg/SVGFilterElement.h: + * svg/SVGFilterPrimitiveStandardAttributes.cpp: + * svg/SVGFilterPrimitiveStandardAttributes.h: + * svg/SVGForeignObjectElement.cpp: + (WebCore::SVGForeignObjectElement::SVGForeignObjectElement): + * svg/SVGForeignObjectElement.h: + (WebCore::SVGForeignObjectElement::isValid): + * svg/SVGImageElement.cpp: + * svg/SVGImageElement.h: + (WebCore::SVGImageElement::isValid): + * svg/SVGLineElement.cpp: + * svg/SVGLineElement.h: + (WebCore::SVGLineElement::isValid): + (WebCore::SVGLineElement::supportsMarkers): + * svg/SVGLinearGradientElement.cpp: + * svg/SVGLinearGradientElement.h: + * svg/SVGMarkerElement.cpp: + (WebCore::SVGMarkerElement::SVGMarkerElement): + * svg/SVGMarkerElement.h: + * svg/SVGMaskElement.cpp: + * svg/SVGMaskElement.h: + (WebCore::SVGMaskElement::isValid): + (WebCore::SVGMaskElement::needsPendingResourceHandling): + * svg/SVGPatternElement.cpp: + * svg/SVGPatternElement.h: + (WebCore::SVGPatternElement::isValid): + (WebCore::SVGPatternElement::needsPendingResourceHandling): + * svg/SVGRadialGradientElement.cpp: + * svg/SVGRadialGradientElement.h: + * svg/SVGRectElement.cpp: + * svg/SVGRectElement.h: + (WebCore::SVGRectElement::isValid): + * svg/SVGSVGElement.cpp: + (WebCore::SVGSVGElement::SVGSVGElement): + * svg/SVGSVGElement.h: + (WebCore::SVGSVGElement::isValid): + (WebCore::SVGSVGElement::setContainerSize): + (WebCore::SVGSVGElement::containerSize): + (WebCore::SVGSVGElement::hasSetContainerSize): + (WebCore::SVGSVGElement::currentTranslate): + (WebCore::SVGSVGElement::timeContainer): + (WebCore::SVGSVGElement::isSVG): + (WebCore::SVGSVGElement::rendererIsNeeded): + * svg/SVGTextContentElement.cpp: + * svg/SVGTextContentElement.h: + (WebCore::SVGTextContentElement::isValid): + (WebCore::SVGTextContentElement::isTextContent): + * svg/SVGTextPathElement.cpp: + * svg/SVGTextPathElement.h: + * svg/SVGTextPositioningElement.h: + * svg/SVGUseElement.cpp: + * svg/SVGUseElement.h: + (WebCore::SVGUseElement::isValid): + (WebCore::SVGUseElement::setUpdatesBlocked): + (WebCore::SVGUseElement::isPendingResource): + * svg/properties/SVGAnimatedPropertyMacros.h: + +2010-12-01 Anton D'Auria + + Reviewed by Kevin Decker. + + Deny access to local and session storage in private browsing mode. + https://bugs.webkit.org/show_bug.cgi?id=49329 + + * storage/Storage.cpp: + (WebCore::Storage::length): + (WebCore::Storage::key): + (WebCore::Storage::getItem): + (WebCore::Storage::contains): + +2010-12-01 Philippe Normand + + Reviewed by Martin Robinson. + + Volume control not correctly initialized + https://bugs.webkit.org/show_bug.cgi?id=36299 + + Replaced the mute/volume Timers with g_timeouts which are (for + now, at least) more reliable than Timers for one-shot-fire-now + actions. + + Test: media/video-volume.html + + * platform/graphics/MediaPlayer.cpp: + (WebCore::MediaPlayer::~MediaPlayer): Reset the raw pointers to 0 + when destructing the player. + * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: + (WebCore::mediaPlayerPrivateVolumeChangeTimeoutCallback): + (WebCore::mediaPlayerPrivateMuteChangeTimeoutCallback): + (WebCore::MediaPlayerPrivateGStreamer::~MediaPlayerPrivateGStreamer): + (WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfVolumeChange): + (WebCore::MediaPlayerPrivateGStreamer::volumeChanged): + (WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfMute): + (WebCore::MediaPlayerPrivateGStreamer::muteChanged): + (WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin): Set + playbin2 volume/mute base on MediaPlayer related values. + * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h: + +2010-12-01 Patrick Gansterer + + Reviewed by Andreas Kling. + + Cleanup main CMakeLists.txt after r72664, r72672 and r72667 + https://bugs.webkit.org/show_bug.cgi?id=50232 + + * CMakeLists.txt: Removed obsolete dependencies. + +2010-12-01 Nikolas Zimmermann + + Reviewed by Dirk Schulze. + + Cleanup SVGPropertyTraits + https://bugs.webkit.org/show_bug.cgi?id=50229 + + Move all template specializations for non-POD types (eg. SVGLength, SVGLengthList, etc.) from SVGPropertyTraits + into the right SVG* classes, to avoid having to include a dozen SVG*.h files in SVGPropertyTraits.h, which is + included by all DOM/JS/V8 binding files and SVGElement.h. + + No new functionality, thus no new tests. + + * GNUmakefile.am: + * WebCore.gypi: + * WebCore.pro: + * WebCore.xcodeproj/project.pbxproj: + * bindings/scripts/CodeGenerator.pm: + * bindings/scripts/CodeGeneratorObjC.pm: + * bindings/scripts/CodeGeneratorV8.pm: + * svg/SVGAngle.h: + * svg/SVGLength.h: + * svg/SVGLengthList.h: + * svg/SVGMarkerElement.h: + * svg/SVGNumberList.h: + * svg/SVGPatternElement.h: + * svg/SVGPointList.h: + * svg/SVGPreserveAspectRatio.h: + * svg/SVGRect.h: Added. + * svg/SVGSVGElement.h: + * svg/SVGStringList.h: + * svg/SVGSymbolElement.h: + * svg/SVGTransformList.h: + * svg/SVGViewElement.h: + * svg/SVGViewSpec.h: + * svg/properties/SVGListProperty.h: + * svg/properties/SVGPropertyTraits.h: + * svg/properties/SVGTransformListPropertyTearOff.h: + +2010-11-30 Kent Tamura + + Reviewed by Darin Adler. + + Refactor HTMLInputElement: Move a part of HTMLInputElement:: + defaultEventHandler() to InputTypes + https://bugs.webkit.org/show_bug.cgi?id=50097 + + Move all of keyboard-related event handling to InputType. + + No new tests because this should not change any behavior. + + * html/BaseButtonInputType.cpp: + (WebCore::BaseButtonInputType::handleKeydownEvent): + (WebCore::BaseButtonInputType::handleKeypressEvent): + (WebCore::BaseButtonInputType::handleKeyupEvent): + * html/BaseButtonInputType.h: + * html/BaseCheckableInputType.cpp: + (WebCore::BaseCheckableInputType::handleKeydownEvent): + (WebCore::BaseCheckableInputType::handleKeypressEvent): + * html/BaseCheckableInputType.h: + * html/CheckboxInputType.cpp: + (WebCore::CheckboxInputType::handleKeyupEvent): + * html/CheckboxInputType.h: + * html/HTMLInputElement.cpp: + (WebCore::HTMLInputElement::defaultEventHandler): + We remove !implicitSubmission check for callBaseClassEarly because + implicitSubmission can not be true for keydown event and keypress + event at this point. + * html/InputType.cpp: + (WebCore::InputType::shouldSubmitImplicitly): + Returns true for a keypress event with "\r". Note that we don't overload + this function for BUTTON, FILE, IMAGE, RESET, and SUBMIT because a + keypress event with "\r" for these types returns from HTMLInputElement::defaultEventHandler() + before implicit submission checking. + (WebCore::InputType::handleKeypressEvent): + (WebCore::InputType::handleKeyupEvent): + * html/InputType.h: + * html/RadioInputType.cpp: + (WebCore::RadioInputType::handleKeydownEvent): + (WebCore::RadioInputType::handleKeyupEvent): + * html/RadioInputType.h: + * html/TextFieldInputType.cpp: + (WebCore::TextFieldInputType::shouldSubmitImplicitly): + * html/TextFieldInputType.h: + +>>>>>>> .r73054 +2010-11-30 Patrick Gansterer + + Reviewed by Andreas Kling. + + Move CSS generator logic into main CMakeLists.txt file + https://bugs.webkit.org/show_bug.cgi?id=50230 + + * CMakeLists.txt: + +2010-11-30 Ojan Vafai + + Revert r72876. It caused a ~30% perf regression in chromium's bloat-http test + https://bugs.webkit.org/show_bug.cgi?id=50288 + + 2010-11-29 Adam Barth + Reviewed by Darin Adler. + Introduce the notion of a "display-isolated" URL scheme for use by Chrome-internal URLs + https://bugs.webkit.org/show_bug.cgi?id=50182 + A display-isolated URL can only be displayed (e.g., put in an iframe, + hyperlinked to) by documents from that scheme. In a sense, this is a + generalization of some of the protections we give file URLs, but + instead of lumping them all together into one "local" bucket, this + patch creates a separate bucket for each scheme. + For a while, I tried using a separate bucket for each origin. That + would have played nicely with what Blob URLs are trying to do, but some + "chrome" URL pages rely on being able to display other chrome URL + pages, even in different origins. For example, the New Tab Page shows + thumbnails from the "thumbnail" host. + This patch also removes a bunch of unused code. I've also propagated + the "deprecated" status of deprecatedCanDisplay to + deprecatedShouldTreatURLAsLocal because that method has no other + callers and is really asking for uppercase/lowercase bugs. I dream of + someday removing these functions. + page/SecurityOrigin.cpp: + (WebCore::SecurityOrigin::canDisplay): + (WebCore::SecurityOrigin::deprecatedCanDisplay): + platform/SchemeRegistry.cpp: + (WebCore::displayIsolatedURLSchemes): + (WebCore::SchemeRegistry::registerURLSchemeAsLocal): + (WebCore::SchemeRegistry::deprecatedShouldTreatURLAsLocal): + (WebCore::SchemeRegistry::shouldTreatURLSchemeAsLocal): + (WebCore::SchemeRegistry::registerURLSchemeAsDisplayIsolated): + (WebCore::SchemeRegistry::shouldTreatURLSchemeAsDisplayIsolated): + platform/SchemeRegistry.h: + 2010-11-29 Adam Barth + Reviewed by Darin Adler. + Introduce the notion of a "display-isolated" URL scheme for use by Chrome-internal URLs + https://bugs.webkit.org/show_bug.cgi?id=50182 + This patch adds a Chromium API for registering schemes as + display-isolated. In a subsequent patch, I'll change the "chrome" + scheme in Chrome to be display isolated instead of local. That will + prevent file URLs from linking to chrome URLs. + public/WebSecurityPolicy.h: + src/WebSecurityPolicy.cpp: + (WebKit::WebSecurityPolicy::registerURLSchemeAsDisplayIsolated): + + * page/SecurityOrigin.cpp: + (WebCore::SecurityOrigin::canDisplay): + (WebCore::SecurityOrigin::deprecatedCanDisplay): + * platform/SchemeRegistry.cpp: + (WebCore::SchemeRegistry::registerURLSchemeAsLocal): + (WebCore::SchemeRegistry::removeURLSchemeRegisteredAsLocal): + (WebCore::SchemeRegistry::localURLSchemes): + (WebCore::SchemeRegistry::shouldTreatURLAsLocal): + (WebCore::SchemeRegistry::shouldTreatURLSchemeAsLocal): + * platform/SchemeRegistry.h: + +2010-11-30 Chris Fleizach + + Reviewed by Beth Dakin. + + WebKit duplicates AXValue and AXDescription on abbr + https://bugs.webkit.org/show_bug.cgi?id=50260 + + stringValue() and accessibilityDescription() were returning the same value for static text with + an aria-label. Static text elements should not have an accessibility description, they + should only have a stringValue. + + Test: platform/mac/accessibility/static-text-with-aria-label.html + + * accessibility/AccessibilityRenderObject.cpp: + (WebCore::AccessibilityRenderObject::ariaAccessibilityDescription): + (WebCore::AccessibilityRenderObject::accessibilityDescription): + (WebCore::AccessibilityRenderObject::text): + * accessibility/AccessibilityRenderObject.h: + +2010-11-30 Ryosuke Niwa + + Reviewed by Darin Adler. + + [HTML5] Rename member variables of HTMLScriptElement + https://bugs.webkit.org/show_bug.cgi?id=49705 + + Renamed m_wasCreatedByParser to m_wasInsertedByParser, m_requested to m_isExternalScript, + m_isEvaluated to m_wasAlreadyStarted, and m_firedLoad to m_haveFiredLoad. + + Also made ScriptElement's haveFiredLoadEvent and removed HTMLScriptElement's haveFiredLoadEvent. + This effectively adds the same function to SVGScriptElement, which isn't currently used anywhere. + + No new tests are added since this is a refactoring. + + * dom/ScriptElement.cpp: + (WebCore::ScriptElement::ScriptElement): + (WebCore::ScriptElement::insertedIntoDocument): + (WebCore::ScriptElement::childrenChanged): + (WebCore::ScriptElement::finishParsingChildren): + (WebCore::ScriptElement::requestScript): + (WebCore::ScriptElement::evaluateScript): + (WebCore::ScriptElement::executeScript): + (WebCore::ScriptElement::ignoresLoadRequest): + * dom/ScriptElement.h: + (WebCore::ScriptElement::haveFiredLoadEvent): + (WebCore::ScriptElement::setHaveFiredLoadEvent): + (WebCore::ScriptElement::wasInsertedByParser): + (WebCore::ScriptElement::wasAlreadyStarted): + * html/HTMLScriptElement.cpp: + (WebCore::HTMLScriptElement::HTMLScriptElement): + (WebCore::HTMLScriptElement::create): + (WebCore::HTMLScriptElement::cloneElementWithoutAttributesAndChildren): + * html/HTMLScriptElement.h: + * svg/SVGScriptElement.cpp: + (WebCore::SVGScriptElement::SVGScriptElement): + (WebCore::SVGScriptElement::create): + (WebCore::SVGScriptElement::svgAttributeChanged): + (WebCore::SVGScriptElement::insertedIntoDocument): + (WebCore::SVGScriptElement::dispatchLoadEvent): + (WebCore::SVGScriptElement::cloneElementWithoutAttributesAndChildren): + * svg/SVGScriptElement.h: + +2010-11-30 Darin Adler + + Rolled back most of the FileReaderLoader changes to fix 32-bit builds. + + * fileapi/FileReaderLoader.cpp: Changed types back to unsigned from unsigned long long + * fileapi/FileReaderLoader.h: Ditto. + +2010-11-30 Dan Bernstein + + Reviewed by Darin Adler. + + Text search should treat all matches as word-start matches when the target begins with a separator character + https://bugs.webkit.org/show_bug.cgi?id=50302 + + * editing/TextIterator.cpp: + (WebCore::SearchBuffer::SearchBuffer): Disable the AtWordStarts option if it was specified and + the target string begins with one of the "separator" characters. + +2010-11-30 Pavel Feldman + + Reviewed by Dave Hyatt. + + Web Inspector: [CRASH] on "Revert to this revision" of style with import. + https://bugs.webkit.org/show_bug.cgi?id=50256 + + Rolled back one line from http://trac.webkit.org/changeset/36904 as agreed with + David. + + * css/CSSImportRule.cpp: + (WebCore::CSSImportRule::insertedIntoParent): + +2010-11-30 Martin Robinson + + Reviewed by Xan Lopez. + + [GTK] fillRect shadow has incorrect behavior when using ctx.scale(x,y) + https://bugs.webkit.org/show_bug.cgi?id=50283 + + Adjust the mask rectangle for Cairo shadows, so that the origin + is not affected by the scale of the transformation matrix. + + * platform/graphics/ContextShadow.h: Make this Qt-only member global. + * platform/graphics/cairo/ContextShadowCairo.cpp: + (WebCore::ContextShadow::beginShadowLayer): Save the original layer area. + (WebCore::ContextShadow::endShadowLayer): If the target context has a scale + transform, make sure not to scale the blur distance when blitting the shadow. + +2010-11-30 Darin Adler + + Reviewed by Alexey Proskuryakov. + + Make ProgressEvent 64-bit instead of 32-bit + https://bugs.webkit.org/show_bug.cgi?id=50289 + + * dom/ProgressEvent.cpp: + (WebCore::ProgressEvent::ProgressEvent): Changed arguments to unsigned long long. + (WebCore::ProgressEvent::initProgressEvent): Ditto. + + * dom/ProgressEvent.h: Fixed formatting. Changed types to unsigned long long. + Made isProgressEvent override private. + + * dom/ProgressEvent.idl: Tweaked formatting and changed types to unsigned long long. + + * fileapi/FileReader.cpp: Removed unneeded includes. + Used static on const so we'd get an error if the same constant was in a header. + (WebCore::FileReader::didReceiveData): Removed unneeded WTF prefix. + (WebCore::FileReader::fireEvent): Got rid of local variables that would narrow + bytes loaded and total bytes to 32-bit. + + * fileapi/FileReaderLoader.cpp: + (WebCore::FileReaderLoader::didReceiveResponse): Restructured code a bit and + added comments. Also added handling for when ArrayBuffer::create returns 0. + (WebCore::FileReaderLoader::didReceiveData): Fixed handling of case where more + data arrives than is expected so it won't overrun the buffer. Also broke an + assertion into two and improved a comment. + + * fileapi/FileReaderLoader.h: Changed bytesLoaded and totalBytes to unsigned long long. + + * fileapi/FileWriter.cpp: + (WebCore::FileWriter::fireEvent): Removed narrowing casts in call to + ProgressEvent::create. + + * html/canvas/ArrayBuffer.cpp: + (WebCore::ArrayBuffer::tryAllocate): Added a comment because the code here seems wrong. + + * xml/XMLHttpRequest.cpp: + (WebCore::XMLHttpRequest::didSendData): Removed narrowing casts in call to + XMLHttpRequestProgressEvent::create. + (WebCore::XMLHttpRequest::didReceiveData): Removed narrowing casts in call to + dispatchProgressEvent. + + * xml/XMLHttpRequestProgressEvent.h: Fixed formatting. Changed types to unsigned long long. + Made isXMLHttpRequestProgressEvent override private. + + * xml/XMLHttpRequestProgressEvent.idl: Tweaked formatting and changed types to unsigned long long. + + * xml/XMLHttpRequestProgressEventThrottle.cpp: + (WebCore::XMLHttpRequestProgressEventThrottle::dispatchProgressEvent): Changed types to + unsigned long long. + + * xml/XMLHttpRequestProgressEventThrottle.h: Changed types to unsigned long long. + +2010-11-30 Yael Aharon + + Reviewed by Darin Adler. + + Progress and meter elements should take a form in their constructor like any other form control. + https://bugs.webkit.org/show_bug.cgi?id=50195 + + Tests: fast/dom/HTMLMeterElement/meter-element-form.html + fast/dom/HTMLProgressElement/progress-element-form.html + + * html/HTMLMeterElement.cpp: + (WebCore::HTMLMeterElement::HTMLMeterElement): + (WebCore::HTMLMeterElement::create): + * html/HTMLMeterElement.h: + * html/HTMLProgressElement.h: + * html/HTMLTagNames.in: + +2010-11-30 Tony Chang + + Reviewed by Adam Barth. + + [chromium] fix get-int-identifier-special-values.html using TestNetscapePlugIn + https://bugs.webkit.org/show_bug.cgi?id=49036 + + No new tests: Covered by plugins/npruntime/get-int-identifier-special-values.html + + In http://codereview.chromium.org/11574, the forked chromium test + plugin changed how it testGetIntIdentifier to work around a change + caused by a silverlight specific plugin fix: + http://codereview.chromium.org/11569/diff/1/2 + + It's not clear to me that this change is needed anymore since + silverlight has had multiple releases, testing without this patch + works on a test windows build, and safari win seems to run silverlight + without this either. Since there's no test for this behavior, I'm + rolling it out so we can match the upstream test. + + * bindings/v8/V8NPUtils.cpp: + (WebCore::convertV8ObjectToNPVariant): + +2010-11-30 Chris Guillory + + Reviewed by Chris Fleizach. + + Computing style on a stale node while sending pending accessibility notification. + https://bugs.webkit.org/show_bug.cgi?id=50162 + + Retain node pointer members of AccessibilityImageMapLink. + + Test: accessibility/image-map-title-causes-crash.html + + * accessibility/AccessibilityImageMapLink.cpp: + (WebCore::AccessibilityImageMapLink::parentObject): + (WebCore::AccessibilityImageMapLink::anchorElement): + (WebCore::AccessibilityImageMapLink::url): + (WebCore::AccessibilityImageMapLink::elementRect): + * accessibility/AccessibilityImageMapLink.h: + (WebCore::AccessibilityImageMapLink::areaElement): + (WebCore::AccessibilityImageMapLink::mapElement): + (WebCore::AccessibilityImageMapLink::node): + * dom/Document.cpp: + (WebCore::Document::clearAXObjectCache): + +2010-11-30 James Robinson + + Reviewed by Tony Chang. + + Build fix - add parens in foo || bar && baz to make gcc happy + https://bugs.webkit.org/show_bug.cgi?id=50276 + + gcc 4.4 warns that statements of the form "foo || bar && baz". It wants + parens around the "bar && baz" part to make it clear which way the logical + operators bind. + + * editing/TextIterator.cpp: + (WebCore::SearchBuffer::search): + +2010-11-30 Daniel Bates + + Reviewed by David Hyatt. + + Focused should use CSS properties of instead of associated + https://bugs.webkit.org/show_bug.cgi?id=49888 + + Fixes an issue where the CSS properties of an were not used when + the was focused. + + Currently, when focusing an (say by pressing option + tab in Mac + Safari) we use the CSS style information for the associated with + the . Instead, we should use the CSS style information for the + focused . In particular, this will make the us honor the outline- + color property of a focused when drawing its focus ring. + + Tests: fast/images/imagemap-focus-ring-outline-color-explicitly-inherited-from-map.html + fast/images/imagemap-focus-ring-outline-color-not-inherited-from-map.html + fast/images/imagemap-focus-ring-outline-color.html + + * rendering/RenderImage.cpp: + (WebCore::RenderImage::paintFocusRing): Use the style information of + the focused when drawing the focus ring for it. + +2010-11-30 Tony Chang + + Reviewed by James Robinson. + + [chromium] enable WebCore compiler warnings on Linux take 3 + https://bugs.webkit.org/show_bug.cgi?id=50258 + + * WebCore.gyp/WebCore.gyp: + +2010-11-30 Mario Sanchez Prada + + Reviewed by Chris Fleizach. + + [GTK] Implement ROLE_COMBO_BOX + https://bugs.webkit.org/show_bug.cgi?id=25678 + + Implement the remaining bits for combo boxes. + + This patch finishes the implementation, from the point of view of + the Atk library, of those objects exposed to ATK as combo boxes, + and their related elements (menus and menu items). It therefore + implements the proper interfaces for each type of object related + to combo boxes (AtkSelection for the combo box, AtkText for every + menu item and AtkAction for the combo box, the menu and the menu + items), takes care of emitting the proper signals when focus or a + given a selection changes and adds a new unit test to check all + this new stuff. + + Make possible to ask an AccessibleMenuListOption for a sensible + string representation, so far only available through the private + and MSAA related method nameForMSAA. Just moved the implementation + of that method to an overriden version of stringValue(), which is + platform independent, and called that from nameForMSAA(). + + * accessibility/AccessibilityMenuListOption.h: + * accessibility/AccessibilityMenuListOption.cpp: + (WebCore::AccessibilityMenuListOption::nameForMSAA): Just call to + stringValue(), which holds from now on that used to be here. + (WebCore::AccessibilityMenuListOption::stringValue): New, override + of AccessibilityObject::stringValue() to return a proper string. + + Emit the missing signals when a selection is made. + + * accessibility/gtk/AXObjectCacheAtk.cpp: + (WebCore::AXObjectCache::postPlatformNotification): Emit the usual + 'focus' signals when a selection is made over the combo box. + + * accessibility/gtk/AccessibilityObjectWrapperAtk.cpp: + (setAtkStateSetFromCoreObject): Ensure the EXPANDABLE and EXPANDED + Atk states are added to the state set when needed. + (listObjectForSelection): New, returns the proper list object (the + one holding the list of available options as its children) for an + specific AtkObject implementing AtkSelection. This is needed + because sometimes the selectable options are not directly children + of the AtkSelection object (i.e. a combo box has a 'menu' object + as its only child of it, holding the list of options as children). + (optionFromList): Use listObjectForSelection() to get the actual + object holding the list of children as the available options. + (optionFromSelection): Add support for combo boxes. + (webkit_accessible_selection_add_selection): Ditto. + (webkit_accessible_selection_clear_selection): Ditto. + (webkit_accessible_selection_get_selection_count): Ditto. + (webkit_accessible_selection_is_child_selected): Ditto. + (webkit_accessible_selection_remove_selection): Ditto. + (webkit_accessible_text_get_text): Makes sure stringValue() is + considered to get the result substring when it was already + considered when checking the maximum text length for the object. + (getInterfaceMaskFromObject): Make sure the AtkSelection interface + is implemented for the combo boxes, that the AtkText is + implemented for the menu items and that the AtkAction interface is + now implemented for every object (WebCore will decide what to do). + + Avoid a segfault crash when using this from unit tests. + + * platform/gtk/PopupMenuGtk.cpp: + (WebCore::PopupMenuGtk::show): Make sure we got a valid GdkWindow + before calling gdk_window_get_origin() over it. + +2010-11-30 Andreas Kling + + Reviewed by Tor Arne Vestbø. + + [Qt] GraphicsContext: Avoid unnecessarily copying the painter's QTransform + + Stash the transform in a const reference (QPainter::transform() returns one) + instead of making a copy in the shadow drawing parts of fillPath, strokePath and fillRect. + + * platform/graphics/qt/GraphicsContextQt.cpp: + (WebCore::GraphicsContext::fillPath): + (WebCore::GraphicsContext::strokePath): + (WebCore::GraphicsContext::fillRect): + +2010-11-30 Vangelis Kokkevis + + Reviewed by Simon Fraser. + + Provide more fine grained control to ports over when to turn on + accelerated compositing. + https://bugs.webkit.org/show_bug.cgi?id=49998 + + The RenderLayerCompositor now checks with the chrome client whether + 3d transforms, video, plugins, canvas and animation require + switching over to the composited path. Layers that overlap composited + content will still turn into composited layers regardless of the + setting. + + * css/MediaQueryEvaluator.cpp: + (WebCore::transform_3dMediaFeatureEval): + * page/ChromeClient.h: + (WebCore::ChromeClient::allowedCompositingTriggers): + * rendering/RenderLayer.cpp: + (WebCore::RenderLayer::canRender3DTransforms): + (WebCore::RenderLayer::updateTransform): + (WebCore::RenderLayer::currentTransform): + * rendering/RenderLayer.h: + * rendering/RenderLayerBacking.cpp: + (WebCore::RenderLayerBacking::updateLayerTransform): + * rendering/RenderLayerCompositor.cpp: + (WebCore::RenderLayerCompositor::RenderLayerCompositor): + (WebCore::RenderLayerCompositor::cacheAcceleratedCompositingFlags): + (WebCore::RenderLayerCompositor::canRender3DTransforms): + (WebCore::RenderLayerCompositor::requiresCompositingLayer): + (WebCore::RenderLayerCompositor::requiresCompositingForTransform): + (WebCore::RenderLayerCompositor::requiresCompositingForVideo): + (WebCore::RenderLayerCompositor::requiresCompositingForCanvas): + (WebCore::RenderLayerCompositor::requiresCompositingForPlugin): + (WebCore::RenderLayerCompositor::requiresCompositingForAnimation): + * rendering/RenderLayerCompositor.h: + +2010-11-30 Xan Lopez + + Reviewed by Martin Robinson. + + [GTK] Plug leak in SoupCache + https://bugs.webkit.org/show_bug.cgi?id=50142 + + Free the cache file contents when we don't need them anymore. + + * platform/network/soup/cache/webkit/soup-cache.c: + (webkit_soup_cache_load): + +2010-11-30 Andras Becsi + + Reviewed by Csaba Osztrogonác. + + [Qt][V8] Make QtWebKit with V8 build on Linux. + https://bugs.webkit.org/show_bug.cgi?id=50244 + + No new tests needed. + + * WebCore.pri: add missing idl file + * WebCore.pro: enable Linux build + * bindings/scripts/CodeGeneratorV8.pm: add missing headers + * bindings/v8/ScriptControllerQt.cpp: fix instantiation + (WebCore::ScriptController::qtScriptEngine): + * bindings/v8/V8GCController.cpp: fix guard + (WebCore::V8GCController::checkMemoryUsage): + * inspector/CodeGeneratorInspector.pm: add missing header + * loader/ResourceLoadScheduler.cpp: ditto + * loader/cache/MemoryCache.cpp: ditto + * loader/loader.cpp: ditto + +2010-11-30 David Hyatt + + Reviewed by Simon Fraser. + + https://bugs.webkit.org/show_bug.cgi?id=50183 + + Code got commented out by accident during render tree refactoring last year. Put the code back in, since + it hurts performance to have that line commented out. + + In order to put this code back in, I had to fix some bugs with preferred width computations and + overflow: scroll. Make the pref widths computation create the scrollbar if it doesn't exist yet. + + Make sure the scrollbar size is included prior to checking for defined width/min-width/max-width values. Otherwise + the scrollbar inflates the width beyond the fixed size that was specified. + + For table cells, there is an additional wrinkle. Make sure not to include the scrollbar size as part of the minimum + intrinsic width so that we don't incorrectly grow. + + * rendering/RenderBlock.cpp: + (WebCore::RenderBlock::layoutPositionedObjects): + (WebCore::RenderBlock::computePreferredLogicalWidths): + * rendering/RenderFlexibleBox.cpp: + (WebCore::RenderFlexibleBox::computePreferredLogicalWidths): + +2010-11-30 Vitaly Repeshko + + Unreviewed. + + Attempt to fix windows debug chromium build. + + * html/TimeInputType.cpp: Added include providing isfinite. + +2010-11-30 Darin Adler + + Reviewed by Jon Honeycutt. + + DOM binding code generator scripts import unused File::stat Perl module + https://bugs.webkit.org/show_bug.cgi?id=50250 + + * bindings/scripts/CodeGeneratorCPP.pm: Removed "using File::stat". + * bindings/scripts/CodeGeneratorJS.pm: Ditto. + * bindings/scripts/CodeGeneratorObjC.pm: Ditto. + * bindings/scripts/CodeGeneratorV8.pm: Ditto. + +2010-11-30 Pavel Feldman + + Reviewed by Yury Semikhatsky. + + Web Inspector: implement "Revert to this revision" in resources panel. + https://bugs.webkit.org/show_bug.cgi?id=50107 + + * inspector/Inspector.idl: + * inspector/InspectorCSSAgent.cpp: + (WebCore::InspectorCSSAgent::setStyleSheetText2): + * inspector/InspectorCSSAgent.h: + * inspector/InspectorStyleSheet.cpp: + (WebCore::InspectorStyleSheet::reparseStyleSheet): + * inspector/front-end/CSSStyleModel.js: + (WebInspector.CSSStyleModel.prototype._styleSheetChanged.callback): + (WebInspector.CSSStyleModel.prototype._styleSheetChanged): + (WebInspector.CSSStyleModel.prototype._onRevert): + * inspector/front-end/Resource.js: + (WebInspector.Resource.prototype.get contentTimestamp): + (WebInspector.Resource.prototype.setInitialContent): + (WebInspector.Resource.prototype.isLocallyModified): + (WebInspector.Resource.prototype.setContent.else.finished): + (WebInspector.Resource.prototype.setContent): + (WebInspector.Resource.prototype.revertToThis.callback): + (WebInspector.Resource.prototype.revertToThis): + (WebInspector.Resource.prototype.get baseRevision): + (WebInspector.Resource.prototype._innerRequestContent): + * inspector/front-end/ResourcesPanel.js: + (WebInspector.ResourcesPanel.prototype._showResourceView): + (WebInspector.FrameResourceTreeElement.prototype._contentChanged): + (WebInspector.ResourceRevisionTreeElement): + (WebInspector.ResourceRevisionTreeElement.prototype.onattach): + (WebInspector.ResourceRevisionTreeElement.prototype._ondragstart): + (WebInspector.ResourceRevisionTreeElement.prototype._handleContextMenuEvent): + * inspector/front-end/ScriptsPanel.js: + (WebInspector.ScriptsPanel.prototype.editScriptSource.mycallback): + (WebInspector.ScriptsPanel.prototype.editScriptSource): + * inspector/front-end/SourceView.js: + (WebInspector.SourceView.prototype._editLine): + (WebInspector.SourceView.prototype._editLineComplete): + (WebInspector.SourceView.prototype._revertEditLine): + +2010-11-30 Adam Roben + + Clean up WebCore.vcproj's bindings filter + + I added files that we compile (via an all-in-one file) but weren't in + the .vcproj, removed files that no longer exist, and added the scripts + we use. + + Fixes WebCore.vcproj's bindings filter is + out-of-date + + Reviewed by Darin Adler. + + * WebCore.vcproj/WebCore.vcproj: + +2010-11-30 Adam Roben + + Move JSIDB* files to the DerivedSources filter + + This correctly reflects their location on disk. (They were formerly + listed under bindings/js.) + + * WebCore.vcproj/WebCore.vcproj: + +2010-11-30 Xiaomei Ji + + Reviewed by David Hyatt. + + Remove clampNegativeToZero in adjustScrollPositionWithinRange. + https://bugs.webkit.org/show_bug.cgi?id=50203 + + * platform/ScrollView.cpp: + (WebCore::ScrollView::adjustScrollPositionWithinRange): + +2010-11-30 Adam Roben + + Remove duplicate files from WebCore.vcproj + + Rubber-stamped by Steve Falkenburg. + + * WebCore.vcproj/WebCore.vcproj: + +2010-11-30 Adam Roben + + Let VS do its thang with WebCore.vcproj + + I just removed and readded AnimationBase.cpp. + + Rubber-stamped by Steve Falkenburg. + + * WebCore.vcproj/WebCore.vcproj: + +2010-11-30 Mario Sanchez Prada + + Reviewed by Chris Fleizach. + + ASSERT failing for combo boxes when selection changes + https://bugs.webkit.org/show_bug.cgi?id=50062 + + Don't call listBoxOnChange for elements using menu lists. + + Test: fast/forms/select-option-accesskey-crash.html + + * dom/SelectElement.cpp: + (WebCore::SelectElement::accessKeySetSelectedIndex): Extra check + to decide whether to call menuListOnChange() or listBoxOnChange() + instead of always calling listBoxOnChange(). + +2010-11-30 Andreas Kling + + Reviewed by Dirk Schulze. + + GraphicsContext: Remove "current path" and have strokePath, fillPath and clipPath take a Path argument. + https://bugs.webkit.org/show_bug.cgi?id=48516 + + No new tests, this is refactoring only. + + fillPath() -> fillPath(const Path&) + strokePath() -> strokePath(const Path&) + clipPath(WindRule) -> clipPath(const Path&, WindRule) + + drawPath() was only used by CG, so made it PLATFORM(CG) specific. + + The Qt, CG and Cairo implementations are best-effort. + For the rest, I've put beginPath/addPath and FIXMEs in the three affected methods. + + * WebCore.exp.in: + * html/canvas/CanvasRenderingContext2D.cpp: + (WebCore::CanvasRenderingContext2D::fill): + (WebCore::CanvasRenderingContext2D::stroke): + * inspector/InspectorController.cpp: + (WebCore::drawOutlinedQuad): + * mathml/RenderMathMLRoot.cpp: + (WebCore::RenderMathMLRoot::paint): + * mathml/RenderMathMLSquareRoot.cpp: + (WebCore::RenderMathMLSquareRoot::paint): + * platform/graphics/GraphicsContext.h: + * platform/graphics/GraphicsContextPrivate.h: + * platform/graphics/cairo/GraphicsContextCairo.cpp: + (WebCore::GraphicsContext::fillPath): + (WebCore::GraphicsContext::strokePath): + (WebCore::GraphicsContext::clipPath): + * platform/graphics/cairo/GraphicsContextPlatformPrivateCairo.h: + * platform/graphics/cg/GraphicsContextCG.cpp: + (WebCore::GraphicsContext::drawEllipse): + (WebCore::addConvexPolygonToPath): + (WebCore::GraphicsContext::drawConvexPolygon): + (WebCore::GraphicsContext::clipConvexPolygon): + (WebCore::GraphicsContext::drawPath): + (WebCore::GraphicsContext::fillPath): + (WebCore::GraphicsContext::strokePath): + (WebCore::GraphicsContext::fillRoundedRect): + (WebCore::GraphicsContext::clipPath): + * platform/graphics/haiku/GraphicsContextHaiku.cpp: + (WebCore::GraphicsContext::strokePath): + (WebCore::GraphicsContext::fillPath): + * platform/graphics/openvg/GraphicsContextOpenVG.cpp: + (WebCore::GraphicsContext::fillPath): + (WebCore::GraphicsContext::strokePath): + (WebCore::GraphicsContext::clipPath): + * platform/graphics/qt/GraphicsContextQt.cpp: + (WebCore::GraphicsContext::restorePlatformState): + (WebCore::GraphicsContext::fillPath): + (WebCore::GraphicsContext::strokePath): + (WebCore::GraphicsContext::clipPath): + (WebCore::GraphicsContext::strokeRect): + (WebCore::GraphicsContext::translate): + (WebCore::GraphicsContext::rotate): + (WebCore::GraphicsContext::scale): + (WebCore::GraphicsContext::concatCTM): + * platform/graphics/skia/GraphicsContextSkia.cpp: + (WebCore::GraphicsContext::clipPath): + (WebCore::GraphicsContext::fillPath): + (WebCore::GraphicsContext::strokePath): + * platform/graphics/wince/GraphicsContextWinCE.cpp: + (WebCore::GraphicsContext::fillPath): + (WebCore::GraphicsContext::strokePath): + (WebCore::GraphicsContext::clipPath): + * platform/graphics/wx/GraphicsContextWx.cpp: + (WebCore::GraphicsContext::clipPath): + (WebCore::GraphicsContext::fillPath): + (WebCore::GraphicsContext::strokePath): + * rendering/RenderBoxModelObject.cpp: + (WebCore::RenderBoxModelObject::paintBorder): + (WebCore::RenderBoxModelObject::paintBoxShadow): + * rendering/RenderEmbeddedObject.cpp: + (WebCore::RenderEmbeddedObject::paintReplaced): + * rendering/RenderObject.cpp: + (WebCore::RenderObject::drawBoxSideFromPath): + * rendering/RenderSVGResource.h: + (WebCore::RenderSVGResource::postApplyResource): + * rendering/RenderSVGResourceClipper.cpp: + (WebCore::RenderSVGResourceClipper::pathOnlyClipping): + * rendering/RenderSVGResourceFilter.cpp: + (WebCore::RenderSVGResourceFilter::postApplyResource): + * rendering/RenderSVGResourceFilter.h: + * rendering/RenderSVGResourceGradient.cpp: + (WebCore::RenderSVGResourceGradient::applyResource): + * rendering/RenderSVGResourceGradient.h: + * rendering/RenderSVGResourcePattern.cpp: + (WebCore::RenderSVGResourcePattern::postApplyResource): + * rendering/RenderSVGResourcePattern.h: + * rendering/RenderSVGResourceSolidColor.cpp: + (WebCore::RenderSVGResourceSolidColor::postApplyResource): + * rendering/RenderSVGResourceSolidColor.h: + * rendering/SVGRenderSupport.cpp: + (WebCore::SVGRenderSupport::finishRenderSVGContent): + * rendering/svg/RenderSVGPath.cpp: + (WebCore::RenderSVGPath::fillAndStrokePath): + * rendering/svg/SVGInlineTextBox.cpp: + (WebCore::SVGInlineTextBox::releasePaintingResource): + (WebCore::SVGInlineTextBox::restoreGraphicsContextAfterTextPainting): + (WebCore::SVGInlineTextBox::paintDecorationWithStyle): + * rendering/svg/SVGInlineTextBox.h: + * svg/SVGFont.cpp: + (WebCore::Font::drawTextUsingSVGFont): + +2010-11-30 Alexey Proskuryakov + + Reviewed by Darin Adler and Geoff Garen. + + https://bugs.webkit.org/show_bug.cgi?id=44152 + CSSOM should match DOM in discarding wrapper-less parents. + + We have existing behaviors where parent objects in detached subtrees are not preserved: + - if a root of a node tree doesn't have a wrapper, it's immediately destroyed, making + its children parentNode attribute null; + - relationship between a + + + + +Delete to Dismiss Reversion Panel Test + + +

This test verifies that, after typing an apostrophe, if the current word is part of a contraction, previously shown autocorrection will not be applied.

+

After loading the page, you should see correction panel shows "would" for "wouldn". Then after typing "'t", the correction panel dissappears and the final sentence is "this wouldn't".

+
+ +
+ + + + + + diff --git a/WebCore/manual-tests/autocorrection/dismiss-multiple-guesses.html b/WebCore/manual-tests/autocorrection/dismiss-multiple-guesses.html new file mode 100644 index 0000000..56724f1 --- /dev/null +++ b/WebCore/manual-tests/autocorrection/dismiss-multiple-guesses.html @@ -0,0 +1,49 @@ + + + + + + + + +Dismiss Multiple Guesses Test + + +

This test verifies that pressing ESC key diusmisses multiple guesses panel correctly

+

After seeing the panel with multiple candidates, pressing ESC key to dismiss the panel.

+

Note, this test can fail due to user specific spell checking data. To fix this, remove all files in ~/Library/Spelling, then kill AppleSpell.service process.

+
+ +
+ + + + + + diff --git a/WebCore/manual-tests/autocorrection/select-from-multiple-guesses.html b/WebCore/manual-tests/autocorrection/select-from-multiple-guesses.html new file mode 100644 index 0000000..dc8881f --- /dev/null +++ b/WebCore/manual-tests/autocorrection/select-from-multiple-guesses.html @@ -0,0 +1,49 @@ + + + + + + + + +Select From Multiple Guesses Test + + +

This test verifies that multiple guesses on mispelled word is working correctly

+

After seeing the panel with multiple candidates, use left and/or right arrow key to select the desired candidate, and then use return key to confirm. You can also use this test to test that pressing ESC key will dismiss the panel.

+

Note, this test can fail due to user specific spell checking data. To fix this, remove all files in ~/Library/Spelling, then kill AppleSpell.service process.

+
+ +
+ + + + + + diff --git a/WebCore/manual-tests/indexeddb-persists.html b/WebCore/manual-tests/indexeddb-persists.html index 6f5e036..d8061e1 100644 --- a/WebCore/manual-tests/indexeddb-persists.html +++ b/WebCore/manual-tests/indexeddb-persists.html @@ -33,8 +33,8 @@ function setData() webkitIndexedDB.open("someDB", "some description").onsuccess = function() { event.result.setVersion("some version").onsuccess = function() { var db = event.source; - while (db.objectStores.length) - db.removeObjectStore(db.objectStores[0]); + while (db.objectStoreNames.length) + db.removeObjectStore(db.objectStoreNames[0]); db.createObjectStore("test").put("value", "key").onsuccess = function() { status("Value set", "green"); } diff --git a/WebCore/manual-tests/input-type-datetime-default-value.html b/WebCore/manual-tests/input-type-datetime-default-value.html new file mode 100644 index 0000000..8be15d8 --- /dev/null +++ b/WebCore/manual-tests/input-type-datetime-default-value.html @@ -0,0 +1,80 @@ + + +Default values for date/time input (type= date, datetime, datetime-local, month, time, week) + +

Enter Up or Down, or click the spin buttons for each input field.

+ +
+
    +
  • Emtpy values, no steps +
      +
    • date: +
    • datetime: +
    • datetime-local: +
    • month: +
    • time: +
    • week +
    +
  • Invalid values, no steps +
      +
    • date: +
    • datetime: +
    • datetime-local: +
    • month: +
    • time: +
    • week +
    +
  • Emtpy values, invalid steps +
      +
    • date: +
    • datetime: +
    • datetime-local: +
    • month: +
    • time: +
    • week +
    +
  • Invalid values, invalid steps +
      +
    • date: +
    • datetime: +
    • datetime-local: +
    • month: +
    • time: +
    • week +
    +
  • Emtpy values, step=any +
      s +
    • date: +
    • datetime: +
    • datetime-local: +
    • month: +
    • time: +
    • week +
    +
  • Invalid values, step=any +
      +
    • date: +
    • datetime: +
    • datetime-local: +
    • month: +
    • time: +
    • week +
    +
+
+ +

The input fields should show the current local/UTC date/time (with + or - a unit date/time described below except for step=any).

+ +

Unit dates/times

+
    +
  • date: 1 day (local time) +
  • datetime: 1 minute (UTC) +
  • datetime-local: 1 minute (local time) +
  • month: 1 month (local time) +
  • time: 1 minute (local time) +
  • week: 1 week (local time) +
+ +

As for step=any, the values don't change by stepping-up/-down.

+ + diff --git a/WebCore/mathml/MathMLInlineContainerElement.cpp b/WebCore/mathml/MathMLInlineContainerElement.cpp index 8b3f43e..eb579d2 100644 --- a/WebCore/mathml/MathMLInlineContainerElement.cpp +++ b/WebCore/mathml/MathMLInlineContainerElement.cpp @@ -56,30 +56,30 @@ PassRefPtr MathMLInlineContainerElement::create(co RenderObject* MathMLInlineContainerElement::createRenderer(RenderArena* arena, RenderStyle*) { - if (hasLocalName(MathMLNames::mrowTag)) + if (hasLocalName(mrowTag)) return new (arena) RenderMathMLRow(this); - else if (hasLocalName(MathMLNames::msubTag)) + if (hasLocalName(msubTag)) return new (arena) RenderMathMLSubSup(this); - else if (hasLocalName(MathMLNames::msupTag)) + if (hasLocalName(msupTag)) return new (arena) RenderMathMLSubSup(this); - else if (hasLocalName(MathMLNames::msubsupTag)) + if (hasLocalName(msubsupTag)) return new (arena) RenderMathMLSubSup(this); - else if (hasLocalName(MathMLNames::moverTag)) + if (hasLocalName(moverTag)) return new (arena) RenderMathMLUnderOver(this); - else if (hasLocalName(MathMLNames::munderTag)) + if (hasLocalName(munderTag)) return new (arena) RenderMathMLUnderOver(this); - else if (hasLocalName(MathMLNames::munderoverTag)) + if (hasLocalName(munderoverTag)) return new (arena) RenderMathMLUnderOver(this); - else if (hasLocalName(MathMLNames::mfracTag)) + if (hasLocalName(mfracTag)) return new (arena) RenderMathMLFraction(this); - else if (hasLocalName(MathMLNames::msqrtTag)) + if (hasLocalName(msqrtTag)) return new (arena) RenderMathMLSquareRoot(this); - else if (hasLocalName(MathMLNames::mrootTag)) + if (hasLocalName(mrootTag)) return new (arena) RenderMathMLRoot(this); - else if (hasLocalName(MathMLNames::mfencedTag)) + if (hasLocalName(mfencedTag)) return new (arena) RenderMathMLFenced(this); - else - return new (arena) RenderMathMLBlock(this); + + return new (arena) RenderMathMLBlock(this); } } diff --git a/WebCore/mathml/RenderMathMLOperator.cpp b/WebCore/mathml/RenderMathMLOperator.cpp index 72c997b..7f039b9 100644 --- a/WebCore/mathml/RenderMathMLOperator.cpp +++ b/WebCore/mathml/RenderMathMLOperator.cpp @@ -162,7 +162,7 @@ void RenderMathMLOperator::updateFromElement() // Check for a stretchable character. if (!stretchDisabled && firstChar) { - const int maxIndex = sizeof(stretchyCharacters) / sizeof(stretchyCharacters[0]); + const int maxIndex = WTF_ARRAY_LENGTH(stretchyCharacters); for (index++; index < maxIndex; index++) { if (stretchyCharacters[index].character == firstChar) { isStretchy = true; diff --git a/WebCore/mathml/RenderMathMLRoot.cpp b/WebCore/mathml/RenderMathMLRoot.cpp index ba60c9f..f0a7abb 100644 --- a/WebCore/mathml/RenderMathMLRoot.cpp +++ b/WebCore/mathml/RenderMathMLRoot.cpp @@ -167,9 +167,7 @@ void RenderMathMLRoot::paint(PaintInfo& info, int tx, int ty) // draw to end root.addLineTo(leftEnd); - info.context->beginPath(); - info.context->addPath(root); - info.context->strokePath(); + info.context->strokePath(root); info.context->save(); @@ -181,8 +179,6 @@ void RenderMathMLRoot::paint(PaintInfo& info, int tx, int ty) mask.addLineTo(topLeft); mask.addLineTo(FloatPoint(2 * topLeft.x() - leftEnd.x(), 2 * topLeft.y() - leftEnd.y())); - info.context->beginPath(); - info.context->addPath(mask); info.context->clip(mask); // Draw the thick part of the root. @@ -193,9 +189,7 @@ void RenderMathMLRoot::paint(PaintInfo& info, int tx, int ty) line.moveTo(bottomLeft); line.addLineTo(topLeft); - info.context->beginPath(); - info.context->addPath(line); - info.context->strokePath(); + info.context->strokePath(line); info.context->restore(); diff --git a/WebCore/mathml/RenderMathMLSquareRoot.cpp b/WebCore/mathml/RenderMathMLSquareRoot.cpp index 862d8a4..1285acd 100644 --- a/WebCore/mathml/RenderMathMLSquareRoot.cpp +++ b/WebCore/mathml/RenderMathMLSquareRoot.cpp @@ -132,10 +132,8 @@ void RenderMathMLSquareRoot::paint(PaintInfo& info, int tx, int ty) root.addLineTo(topLeft); // draw to end root.addLineTo(leftEnd); - - info.context->beginPath(); - info.context->addPath(root); - info.context->strokePath(); + + info.context->strokePath(root); info.context->save(); @@ -147,8 +145,6 @@ void RenderMathMLSquareRoot::paint(PaintInfo& info, int tx, int ty) mask.addLineTo(topLeft); mask.addLineTo(FloatPoint(2 * topLeft.x() - leftEnd.x(), 2 * topLeft.y() - leftEnd.y())); - info.context->beginPath(); - info.context->addPath(mask); info.context->clip(mask); // Draw the thick part of the root. @@ -159,9 +155,7 @@ void RenderMathMLSquareRoot::paint(PaintInfo& info, int tx, int ty) line.moveTo(bottomLeft); line.addLineTo(topLeft); - info.context->beginPath(); - info.context->addPath(line); - info.context->strokePath(); + info.context->strokePath(line); info.context->restore(); diff --git a/WebCore/page/ChromeClient.h b/WebCore/page/ChromeClient.h index 0725f46..d224726 100644 --- a/WebCore/page/ChromeClient.h +++ b/WebCore/page/ChromeClient.h @@ -236,6 +236,19 @@ namespace WebCore { // Returns whether or not the client can render the composited layer, // regardless of the settings. virtual bool allowsAcceleratedCompositing() const { return true; } + + enum CompositingTrigger { + ThreeDTransformTrigger = 1 << 0, + VideoTrigger = 1 << 1, + PluginTrigger = 1 << 2, + CanvasTrigger = 1 << 3, + AnimationTrigger = 1 << 4, + AllTriggers = 0xFFFFFFFF + }; + typedef unsigned CompositingTriggerFlags; + + // Returns a bitfield indicating conditions that can trigger the compositor. + virtual CompositingTriggerFlags allowedCompositingTriggers() const { return static_cast(AllTriggers); } #endif virtual bool supportsFullscreenForNode(const Node*) { return false; } diff --git a/WebCore/page/Console.cpp b/WebCore/page/Console.cpp index 34db538..219647d 100644 --- a/WebCore/page/Console.cpp +++ b/WebCore/page/Console.cpp @@ -137,7 +137,7 @@ void Console::addMessage(MessageSource source, MessageType type, MessageLevel le addMessage(source, type, level, message, lineNumber, sourceURL, 0); } -void Console::addMessage(MessageSource source, MessageType type, MessageLevel level, const String& message, unsigned lineNumber, const String& sourceURL, PassOwnPtr callStack) +void Console::addMessage(MessageSource source, MessageType type, MessageLevel level, const String& message, unsigned lineNumber, const String& sourceURL, PassRefPtr callStack) { Page* page = this->page(); if (!page) @@ -162,7 +162,7 @@ void Console::addMessage(MessageSource source, MessageType type, MessageLevel le printf(" %s\n", message.utf8().data()); } -void Console::addMessage(MessageType type, MessageLevel level, PassOwnPtr arguments, PassOwnPtr callStack, bool acceptNoArguments) +void Console::addMessage(MessageType type, MessageLevel level, PassRefPtr arguments, PassRefPtr callStack, bool acceptNoArguments) { Page* page = this->page(); if (!page) @@ -194,39 +194,39 @@ void Console::addMessage(MessageType type, MessageLevel level, PassOwnPtr"; + head.appendInside(append); + QCOMPARE(head.toInnerXml(), append); +} + QTEST_MAIN(tst_QWebElement) #include "tst_qwebelement.moc" diff --git a/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp b/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp index 2f07f5b..eb3ae0a 100644 --- a/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp +++ b/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp @@ -1566,26 +1566,26 @@ void tst_QWebFrame::connectAndDisconnect() QString type; QString ret = evalJS("(function() { }).connect()", type); QCOMPARE(type, sError); - QCOMPARE(ret, QLatin1String("TypeError: 'undefined' is not a function (evaluating '(function() { }).connect()')")); + QCOMPARE(ret, QLatin1String("TypeError: 'undefined' is not a function")); } { QString type; QString ret = evalJS("var o = { }; o.connect = Function.prototype.connect; o.connect()", type); QCOMPARE(type, sError); - QCOMPARE(ret, QLatin1String("TypeError: 'undefined' is not a function (evaluating 'o.connect()')")); + QCOMPARE(ret, QLatin1String("TypeError: 'undefined' is not a function")); } { QString type; QString ret = evalJS("(function() { }).connect(123)", type); QCOMPARE(type, sError); - QCOMPARE(ret, QLatin1String("TypeError: 'undefined' is not a function (evaluating '(function() { }).connect(123)')")); + QCOMPARE(ret, QLatin1String("TypeError: 'undefined' is not a function")); } { QString type; QString ret = evalJS("var o = { }; o.connect = Function.prototype.connect; o.connect(123)", type); QCOMPARE(type, sError); - QCOMPARE(ret, QLatin1String("TypeError: 'undefined' is not a function (evaluating 'o.connect(123)')")); + QCOMPARE(ret, QLatin1String("TypeError: 'undefined' is not a function")); } { diff --git a/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp b/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp index e6b5909..c27ba02 100644 --- a/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp +++ b/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp @@ -220,12 +220,12 @@ public slots: bool shouldInterruptJavaScript() { return true; } - void requestPermission(QWebFrame* frame, QWebPage::PermissionDomain domain) + void requestPermission(QWebFrame* frame, QWebPage::Feature feature) { if (m_allowGeolocation) - setUserPermission(frame, domain, PermissionGranted); + setFeaturePermission(frame, feature, PermissionGrantedByUser); else - setUserPermission(frame, domain, PermissionDenied); + setFeaturePermission(frame, feature, PermissionDeniedByUser); } public: @@ -256,8 +256,8 @@ void tst_QWebPage::geolocationRequestJS() QSKIP("Test disabled as long as geolocation is disabled from the build.", SkipSingle); JSTestPage* newPage = new JSTestPage(m_view); - connect(newPage, SIGNAL(requestPermissionFromUser(QWebFrame*, QWebPage::PermissionDomain)), - newPage, SLOT(requestPermission(QWebFrame*, QWebPage::PermissionDomain))); + connect(newPage, SIGNAL(requestPermissionFromUser(QWebFrame*, QWebPage::Feature)), + newPage, SLOT(requestPermission(QWebFrame*, QWebPage::Feature))); newPage->setGeolocationPermission(false); m_view->setPage(newPage); @@ -1568,6 +1568,20 @@ void tst_QWebPage::inputMethods() page->event(&evpres); page->event(&evrel); + { + QList attributes; + QInputMethodEvent event(QString(), attributes); + event.setCommitString("XXX", 0, 0); + page->event(&event); + event.setCommitString(QString(), -2, 2); // Erase two characters. + page->event(&event); + event.setCommitString(QString(), -1, 1); // Erase one character. + page->event(&event); + variant = page->inputMethodQuery(Qt::ImSurroundingText); + value = variant.value(); + QCOMPARE(value, QString("QtWebKit")); + } + //Move to the start of the line page->triggerAction(QWebPage::MoveToStartOfLine); @@ -1687,6 +1701,314 @@ void tst_QWebPage::inputMethods() QCOMPARE(inputValue, QString("QtWebKit2")); //END - Test for sending empty QInputMethodEvent + page->mainFrame()->setHtml("" \ + "" \ + ""); + page->mainFrame()->evaluateJavaScript("var inputEle = document.getElementById('input4'); inputEle.focus(); inputEle.select();"); + + // Clear the selection, also cancel the ongoing composition if there is one. + { + QList attributes; + QInputMethodEvent::Attribute newSelection(QInputMethodEvent::Selection, 0, 0, QVariant()); + attributes.append(newSelection); + QInputMethodEvent event("", attributes); + page->event(&event); + } + + // ImCurrentSelection + variant = page->inputMethodQuery(Qt::ImCurrentSelection); + selectionValue = variant.value(); + QCOMPARE(selectionValue, QString("")); + + variant = page->inputMethodQuery(Qt::ImSurroundingText); + QString surroundingValue = variant.value(); + QCOMPARE(surroundingValue, QString("QtWebKit inputMethod")); + + // ImAnchorPosition + variant = page->inputMethodQuery(Qt::ImAnchorPosition); + anchorPosition = variant.toInt(); + QCOMPARE(anchorPosition, 0); + + // ImCursorPosition + variant = page->inputMethodQuery(Qt::ImCursorPosition); + cursorPosition = variant.toInt(); + QCOMPARE(cursorPosition, 0); + + // 1. Insert a character to the begining of the line. + // Send temporary text, which makes the editor has composition 'm'. + { + QList attributes; + QInputMethodEvent event("m", attributes); + page->event(&event); + } + + // ImCurrentSelection + variant = page->inputMethodQuery(Qt::ImCurrentSelection); + selectionValue = variant.value(); + QCOMPARE(selectionValue, QString("")); + + // ImSurroundingText + variant = page->inputMethodQuery(Qt::ImSurroundingText); + surroundingValue = variant.value(); + QCOMPARE(surroundingValue, QString("QtWebKit inputMethod")); + + // ImCursorPosition + variant = page->inputMethodQuery(Qt::ImCursorPosition); + cursorPosition = variant.toInt(); + QCOMPARE(cursorPosition, 0); + + // ImAnchorPosition + variant = page->inputMethodQuery(Qt::ImAnchorPosition); + anchorPosition = variant.toInt(); + QCOMPARE(anchorPosition, 0); + + // Send temporary text, which makes the editor has composition 'n'. + { + QList attributes; + QInputMethodEvent event("n", attributes); + page->event(&event); + } + + // ImCurrentSelection + variant = page->inputMethodQuery(Qt::ImCurrentSelection); + selectionValue = variant.value(); + QCOMPARE(selectionValue, QString("")); + + // ImSurroundingText + variant = page->inputMethodQuery(Qt::ImSurroundingText); + surroundingValue = variant.value(); + QCOMPARE(surroundingValue, QString("QtWebKit inputMethod")); + + // ImCursorPosition + variant = page->inputMethodQuery(Qt::ImCursorPosition); + cursorPosition = variant.toInt(); + QCOMPARE(cursorPosition, 0); + + // ImAnchorPosition + variant = page->inputMethodQuery(Qt::ImAnchorPosition); + anchorPosition = variant.toInt(); + QCOMPARE(anchorPosition, 0); + + // Send commit text, which makes the editor conforms composition. + { + QList attributes; + QInputMethodEvent event("", attributes); + event.setCommitString("o"); + page->event(&event); + } + + // ImCurrentSelection + variant = page->inputMethodQuery(Qt::ImCurrentSelection); + selectionValue = variant.value(); + QCOMPARE(selectionValue, QString("")); + + // ImSurroundingText + variant = page->inputMethodQuery(Qt::ImSurroundingText); + surroundingValue = variant.value(); + QCOMPARE(surroundingValue, QString("oQtWebKit inputMethod")); + + // ImCursorPosition + variant = page->inputMethodQuery(Qt::ImCursorPosition); + cursorPosition = variant.toInt(); + QCOMPARE(cursorPosition, 1); + + // ImAnchorPosition + variant = page->inputMethodQuery(Qt::ImAnchorPosition); + anchorPosition = variant.toInt(); + QCOMPARE(anchorPosition, 1); + + // 2. insert a character to the middle of the line. + // Send temporary text, which makes the editor has composition 'd'. + { + QList attributes; + QInputMethodEvent event("d", attributes); + page->event(&event); + } + + // ImCurrentSelection + variant = page->inputMethodQuery(Qt::ImCurrentSelection); + selectionValue = variant.value(); + QCOMPARE(selectionValue, QString("")); + + // ImSurroundingText + variant = page->inputMethodQuery(Qt::ImSurroundingText); + surroundingValue = variant.value(); + QCOMPARE(surroundingValue, QString("oQtWebKit inputMethod")); + + // ImCursorPosition + variant = page->inputMethodQuery(Qt::ImCursorPosition); + cursorPosition = variant.toInt(); + QCOMPARE(cursorPosition, 1); + + // ImAnchorPosition + variant = page->inputMethodQuery(Qt::ImAnchorPosition); + anchorPosition = variant.toInt(); + QCOMPARE(anchorPosition, 1); + + // Send commit text, which makes the editor conforms composition. + { + QList attributes; + QInputMethodEvent event("", attributes); + event.setCommitString("e"); + page->event(&event); + } + + // ImCurrentSelection + variant = page->inputMethodQuery(Qt::ImCurrentSelection); + selectionValue = variant.value(); + QCOMPARE(selectionValue, QString("")); + + // ImSurroundingText + variant = page->inputMethodQuery(Qt::ImSurroundingText); + surroundingValue = variant.value(); + QCOMPARE(surroundingValue, QString("oeQtWebKit inputMethod")); + + // ImCursorPosition + variant = page->inputMethodQuery(Qt::ImCursorPosition); + cursorPosition = variant.toInt(); + QCOMPARE(cursorPosition, 2); + + // ImAnchorPosition + variant = page->inputMethodQuery(Qt::ImAnchorPosition); + anchorPosition = variant.toInt(); + QCOMPARE(anchorPosition, 2); + + // 3. Insert a character to the end of the line. + page->triggerAction(QWebPage::MoveToEndOfLine); + + // Send temporary text, which makes the editor has composition 't'. + { + QList attributes; + QInputMethodEvent event("t", attributes); + page->event(&event); + } + + // ImCurrentSelection + variant = page->inputMethodQuery(Qt::ImCurrentSelection); + selectionValue = variant.value(); + QCOMPARE(selectionValue, QString("")); + + // ImSurroundingText + variant = page->inputMethodQuery(Qt::ImSurroundingText); + surroundingValue = variant.value(); + QCOMPARE(surroundingValue, QString("oeQtWebKit inputMethod")); + + // ImCursorPosition + variant = page->inputMethodQuery(Qt::ImCursorPosition); + cursorPosition = variant.toInt(); + QCOMPARE(cursorPosition, 22); + + // ImAnchorPosition + variant = page->inputMethodQuery(Qt::ImAnchorPosition); + anchorPosition = variant.toInt(); + QCOMPARE(anchorPosition, 22); + + // Send commit text, which makes the editor conforms composition. + { + QList attributes; + QInputMethodEvent event("", attributes); + event.setCommitString("t"); + page->event(&event); + } + + // ImCurrentSelection + variant = page->inputMethodQuery(Qt::ImCurrentSelection); + selectionValue = variant.value(); + QCOMPARE(selectionValue, QString("")); + + // ImSurroundingText + variant = page->inputMethodQuery(Qt::ImSurroundingText); + surroundingValue = variant.value(); + QCOMPARE(surroundingValue, QString("oeQtWebKit inputMethodt")); + + // ImCursorPosition + variant = page->inputMethodQuery(Qt::ImCursorPosition); + cursorPosition = variant.toInt(); + QCOMPARE(cursorPosition, 23); + + // ImAnchorPosition + variant = page->inputMethodQuery(Qt::ImAnchorPosition); + anchorPosition = variant.toInt(); + QCOMPARE(anchorPosition, 23); + + // 4. Replace the selection. + page->triggerAction(QWebPage::SelectPreviousWord); + + // ImCurrentSelection + variant = page->inputMethodQuery(Qt::ImCurrentSelection); + selectionValue = variant.value(); + QCOMPARE(selectionValue, QString("inputMethodt")); + + // ImSurroundingText + variant = page->inputMethodQuery(Qt::ImSurroundingText); + surroundingValue = variant.value(); + QCOMPARE(surroundingValue, QString("oeQtWebKit inputMethodt")); + + // ImCursorPosition + variant = page->inputMethodQuery(Qt::ImCursorPosition); + cursorPosition = variant.toInt(); + QCOMPARE(cursorPosition, 11); + + // ImAnchorPosition + variant = page->inputMethodQuery(Qt::ImAnchorPosition); + anchorPosition = variant.toInt(); + QCOMPARE(anchorPosition, 23); + + // Send temporary text, which makes the editor has composition 'w'. + { + QList attributes; + QInputMethodEvent event("w", attributes); + page->event(&event); + } + + // ImCurrentSelection + variant = page->inputMethodQuery(Qt::ImCurrentSelection); + selectionValue = variant.value(); + QCOMPARE(selectionValue, QString("")); + + // ImSurroundingText + variant = page->inputMethodQuery(Qt::ImSurroundingText); + surroundingValue = variant.value(); + QCOMPARE(surroundingValue, QString("oeQtWebKit ")); + + // ImCursorPosition + variant = page->inputMethodQuery(Qt::ImCursorPosition); + cursorPosition = variant.toInt(); + QCOMPARE(cursorPosition, 11); + + // ImAnchorPosition + variant = page->inputMethodQuery(Qt::ImAnchorPosition); + anchorPosition = variant.toInt(); + QCOMPARE(anchorPosition, 11); + + // Send commit text, which makes the editor conforms composition. + { + QList attributes; + QInputMethodEvent event("", attributes); + event.setCommitString("2"); + page->event(&event); + } + + // ImCurrentSelection + variant = page->inputMethodQuery(Qt::ImCurrentSelection); + selectionValue = variant.value(); + QCOMPARE(selectionValue, QString("")); + + // ImSurroundingText + variant = page->inputMethodQuery(Qt::ImSurroundingText); + surroundingValue = variant.value(); + QCOMPARE(surroundingValue, QString("oeQtWebKit 2")); + + // ImCursorPosition + variant = page->inputMethodQuery(Qt::ImCursorPosition); + cursorPosition = variant.toInt(); + QCOMPARE(cursorPosition, 12); + + // ImAnchorPosition + variant = page->inputMethodQuery(Qt::ImAnchorPosition); + anchorPosition = variant.toInt(); + QCOMPARE(anchorPosition, 12); + delete container; } diff --git a/WebKit/win/ChangeLog b/WebKit/win/ChangeLog index 3fd58ec..ed946c8 100644 --- a/WebKit/win/ChangeLog +++ b/WebKit/win/ChangeLog @@ -1,3 +1,195 @@ +2010-12-01 Jia Pu + + Reviewed by Darin Adler. + + Support multiple correction candidates panel for misspelled word on Mac OS X. + https://bugs.webkit.org/show_bug.cgi?id=50137 + + + Adopted new function signature defined in base class. + + * WebCoreSupport/WebEditorClient.cpp: + (WebEditorClient::getGuessesForWord): + * WebCoreSupport/WebEditorClient.h: + +2010-12-01 Steve Falkenburg + + Reviewed by Adam Roben. + + WinCairo build should not use link-time code generation (LTCG) + https://bugs.webkit.org/show_bug.cgi?id=50353 + + * WebKit.vcproj/Interfaces.vcproj: + * WebKit.vcproj/WebKit.vcproj: + * WebKit.vcproj/WebKitGUID.vcproj: + +2010-12-01 Steve Falkenburg + + Reviewed by Adam Roben. + + vcproj changes can't be applied cleanly by the Windows EWS bot + https://bugs.webkit.org/show_bug.cgi?id=50328 + + * WebKit.vcproj/Interfaces.vcproj: Modified property svn:eol-style. + * WebKit.vcproj/InterfacesCommon.vsprops: Added property svn:eol-style. + * WebKit.vcproj/WebKit.sln: Modified property svn:eol-style. + * WebKit.vcproj/WebKit.submit.sln: Modified property svn:eol-style. + * WebKit.vcproj/WebKit.vcproj: Modified property svn:eol-style. + * WebKit.vcproj/WebKitGUID.vcproj: Modified property svn:eol-style. + * WebKit.vcproj/WebKitGUIDCommon.vsprops: Added property svn:eol-style. + * WebKit.vcproj/WebKitLibCommon.vsprops: Added property svn:eol-style. + +2010-11-30 Steve Falkenburg + + Reviewed by Adam Roben. + + All projects on Windows should use cmd files for build events + https://bugs.webkit.org/show_bug.cgi?id=50213 + + * WebKit.vcproj/InterfacesCommon.vsprops: + * WebKit.vcproj/InterfacesPostBuild.cmd: Added. + * WebKit.vcproj/InterfacesPreBuild.cmd: Added. + * WebKit.vcproj/WebKitGUIDCommon.vsprops: + * WebKit.vcproj/WebKitGUIDPostBuild.cmd: Added. + * WebKit.vcproj/WebKitGUIDPreBuild.cmd: Added. + * WebKit.vcproj/WebKitLibCommon.vsprops: + * WebKit.vcproj/WebKitLibPostBuild.cmd: Added. + * WebKit.vcproj/WebKitLibPreBuild.cmd: Added. + +2010-11-29 Brent Fulgham + + Unreviewed build correction. + + * WebKit.vcproj/WebKit.vcproj: Update WebKit project to + use WinCairo.vsprops definition for appropriate build targets. + +2010-11-22 Adam Roben + + Use paths relative to $WebKitVSPropsRedirectionDir to access shared .vsprops files + + Apple's Windows build allows placing header files and import libraries for WebKit's + dependencies (CoreGraphics, CFNetwork, SQLite, etc.) outside the source tree via the + $WebKitLibrariesDir environment variable. This is both required for production builds and + convenient for Apple-internal developer builds. Apple's production builds also require that + WebKit's shared .vsprops files be accessed relative to $WebKitLibrariesDir. In production + builds, the files are copied into that directory tree by the + WebKitLibraries/win/tools/WinTools.make file. In Apple-internal developer builds, the + copying is done by + JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make. + + This .vsprops copying is problematic in one very important case: when a developer updates + their source tree and then tries to build. Visual Studio only reads .vsprops files when a + project is first loaded. So, when Visual Studio is first opened after the .vsprops files are + updated, it reads in the old files that were already residing in $WebKitLibrariesDir. When a + build is started, JavaScriptCoreGenerated.make copies the new .vsprops files into + $WebKitLibrariesDir, but Visual Studio will not pick up the changes. The rest of the build + will proceed with out-of-date .vsprops files, which will likely result in a build failure. + + To fix this, we now use normal relative paths to access the .vsprops files in the source + tree rather than in $WebKitLibrariesDir, but prefix those paths with a new environment + variable, $WebKitVSPropsRedirectionDir. In developer builds, this environment variable is + unset, so the normal relative paths are used to read the .vsprops files out of the source + tree directly. In production builds, this environment variable is set to a fake directory + that will cause the .vsprops files in $WebKitLibrariesDir to be found when the relative path + is resolved. + + For example, JavaScriptCore.vcproj uses this path for FeatureDefines.vsprops: + + $(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\FeatureDefines.vsprops + + In developer builds, where $WebKitVSPropsRedirectionDir is unset, this will point to the + files in WebKitLibraries\win\tools\vsprops in the source tree. In production builds, + JavaScriptCore.make sets $WebKitVSPropsRedirectionDir to + "$(SRCROOT)\AppleInternal\tools\vsprops\OpenSource\1\2\3\", so the full path for + FeatureDefines.vsprops becomes: + + $(SRCROOT)\AppleInternal\tools\vsprops\OpenSource\1\2\3\..\..\..\WebKitLibraries\win\tools\vsprops\FeatureDefines.vsprops + + which resolves to: + + $(SRCROOT)\AppleInternal\tools\vsprops\OpenSource\WebKitLibraries\win\tools\vsprops\FeatureDefines.vsprops + + (We rely on the fact that Windows doesn't care whether the directories "1", "2", and "3" + actually exist since they are matched by an equal number of ".." path components.) + + Note that Visual Studio still won't pick up changes made to .vsprops files while Visual + Studio is open, but that problem hasn't seemed to cause developers many headaches so far. + + Fixes Windows build fails mysteriously when .vsprops files are + updated + + Reviewed by Dave Hyatt. + + * WebKit.vcproj/WebKit.make: Set $WebKitVSPropsRedirectionDir so that production builds can + find the .vsprops files. + + * WebKit.vcproj/WebKit.vcproj: + * WebKit.vcproj/Interfaces.vcproj: + * WebKit.vcproj/WebKitGUID.vcproj: + Changed to use paths relative to $WebKitVSPropsRedirectionDir to access shared .vsprops + files. + +2010-11-19 Steve Falkenburg + + Reviewed by Adam Roben. + + Add Debug_Cairo_CFLite and Release_Cairo_CFLite configurations for all vcproj files + https://bugs.webkit.org/show_bug.cgi?id=49819 + + * WebKit.vcproj/Interfaces.vcproj: + * WebKit.vcproj/WebKit.sln: + * WebKit.vcproj/WebKit.vcproj: + * WebKit.vcproj/WebKitGUID.vcproj: + +2010-11-19 Steve Falkenburg + + Reviewed by Darin Adler. + + Normalize Cairo/CFLite project/solution configuration names + https://bugs.webkit.org/show_bug.cgi?id=49818 + + * WebKit.vcproj/WebKit.sln: + * WebKit.vcproj/WebKit.vcproj: + +2010-11-18 Steve Falkenburg + + Reviewed by Adam Roben. + + Windows vcproj configuration names should be normalized across projects + https://bugs.webkit.org/show_bug.cgi?id=49776 + + * WebKit.vcproj/Interfaces.vcproj: + * WebKit.vcproj/WebKit.sln: + +2010-11-18 Steve Falkenburg + + Reviewed by Adam Roben. + + Remove leftover Windows Debug_Internal configurations + https://bugs.webkit.org/show_bug.cgi?id=49758 + + * WebKit.vcproj/WebKit.vcproj: + * WebKit.vcproj/WebKitGUID.vcproj: + +2010-11-18 Steve Falkenburg + + Reviewed by Adam Roben. + + Debug_Internal Windows configuration is unnecessary, should be removed + https://bugs.webkit.org/show_bug.cgi?id=49753 + + * WebKitPrefix.h: + +2010-11-17 Steve Falkenburg + + Reviewed by Adam Roben. + + WebKit Interfaces project should use vsprops file for common build settings + https://bugs.webkit.org/show_bug.cgi?id=49713 + + * WebKit.vcproj/Interfaces.vcproj: + * WebKit.vcproj/InterfacesCommon.vsprops: Added. + 2010-11-16 Steve Falkenburg Reviewed by Adam Roben. diff --git a/WebKit/win/WebCoreSupport/WebEditorClient.cpp b/WebKit/win/WebCoreSupport/WebEditorClient.cpp index f03ffd6..539259b 100644 --- a/WebKit/win/WebCoreSupport/WebEditorClient.cpp +++ b/WebKit/win/WebCoreSupport/WebEditorClient.cpp @@ -758,7 +758,7 @@ bool WebEditorClient::spellingUIIsShowing() return !!showing; } -void WebEditorClient::getGuessesForWord(const String& word, Vector& guesses) +void WebEditorClient::getGuessesForWord(const String& word, const String& context, Vector& guesses) { guesses.clear(); diff --git a/WebKit/win/WebCoreSupport/WebEditorClient.h b/WebKit/win/WebCoreSupport/WebEditorClient.h index 8be6de9..f0b78ba 100644 --- a/WebKit/win/WebCoreSupport/WebEditorClient.h +++ b/WebKit/win/WebCoreSupport/WebEditorClient.h @@ -107,7 +107,7 @@ public: virtual void updateSpellingUIWithMisspelledWord(const WTF::String&); virtual void showSpellingUI(bool show); virtual bool spellingUIIsShowing(); - virtual void getGuessesForWord(const WTF::String&, Vector& guesses); + virtual void getGuessesForWord(const WTF::String& word, const WTF::String& context, WTF::Vector& guesses); virtual void willSetInputMethodState(); virtual void setInputMethodState(bool); diff --git a/WebKit/win/WebKit.vcproj/Interfaces.vcproj b/WebKit/win/WebKit.vcproj/Interfaces.vcproj index 9b0a385..2da87bf 100644 --- a/WebKit/win/WebKit.vcproj/Interfaces.vcproj +++ b/WebKit/win/WebKit.vcproj/Interfaces.vcproj @@ -1,2557 +1,4682 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WebKit/win/WebKit.vcproj/InterfacesCommon.vsprops b/WebKit/win/WebKit.vcproj/InterfacesCommon.vsprops new file mode 100644 index 0000000..f4385ea --- /dev/null +++ b/WebKit/win/WebKit.vcproj/InterfacesCommon.vsprops @@ -0,0 +1,14 @@ + + + + diff --git a/WebKit/win/WebKit.vcproj/InterfacesPostBuild.cmd b/WebKit/win/WebKit.vcproj/InterfacesPostBuild.cmd new file mode 100644 index 0000000..efe6904 --- /dev/null +++ b/WebKit/win/WebKit.vcproj/InterfacesPostBuild.cmd @@ -0,0 +1,7 @@ +%SystemDrive%\cygwin\bin\which.exe bash +if errorlevel 1 set PATH=%SystemDrive%\cygwin\bin;%PATH% +cmd /c + +perl FixMIDLHeaders.pl "%WEBKITOUTPUTDIR%/include/webkit/" + +if exist "%WEBKITOUTPUTDIR%\buildfailed" del "%WEBKITOUTPUTDIR%\buildfailed" diff --git a/WebKit/win/WebKit.vcproj/InterfacesPreBuild.cmd b/WebKit/win/WebKit.vcproj/InterfacesPreBuild.cmd new file mode 100644 index 0000000..f720a20 --- /dev/null +++ b/WebKit/win/WebKit.vcproj/InterfacesPreBuild.cmd @@ -0,0 +1,9 @@ +%SystemDrive%\cygwin\bin\which.exe bash +if errorlevel 1 set PATH=%SystemDrive%\cygwin\bin;%PATH% +cmd /c +if exist "%WEBKITOUTPUTDIR%\buildfailed" grep XX%PROJECTNAME%XX "%WEBKITOUTPUTDIR%\buildfailed" +if errorlevel 1 exit 1 +echo XX%PROJECTNAME%XX > "%WEBKITOUTPUTDIR%\buildfailed" + +mkdir 2>NUL "%WEBKITOUTPUTDIR%\obj\WebKit\%PROJECTNAME%" +bash "%WEBKITLIBRARIESDIR%\tools\scripts\auto-version.sh" "%INTDIR%" diff --git a/WebKit/win/WebKit.vcproj/WebKit.make b/WebKit/win/WebKit.vcproj/WebKit.make index d954342..0d5fbc5 100755 --- a/WebKit/win/WebKit.vcproj/WebKit.make +++ b/WebKit/win/WebKit.vcproj/WebKit.make @@ -7,6 +7,7 @@ BUILDSTYLE=Release_LTCG install: set WebKitLibrariesDir=$(SRCROOT)\AppleInternal set WebKitOutputDir=$(OBJROOT) + set WebKitVSPropsRedirectionDir=$(SRCROOT)\AppleInternal\tools\vsprops\OpenSource\1\2\3\ set PRODUCTION=1 devenv "WebKit.submit.sln" /rebuild $(BUILDSTYLE) -xcopy "$(OBJROOT)\bin\*.exe" "$(DSTROOT)\AppleInternal\bin\" /e/v/i/h/y diff --git a/WebKit/win/WebKit.vcproj/WebKit.sln b/WebKit/win/WebKit.vcproj/WebKit.sln index 53ade97..45edcd7 100644 --- a/WebKit/win/WebKit.vcproj/WebKit.sln +++ b/WebKit/win/WebKit.vcproj/WebKit.sln @@ -1,415 +1,415 @@ - -Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual Studio 2005 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "JavaScriptCore", "..\..\..\JavaScriptCore\JavaScriptCore.vcproj\JavaScriptCore\JavaScriptCore.vcproj", "{011D10F1-B656-4A1B-A0C3-3842F02122C5}" - ProjectSection(ProjectDependencies) = postProject - {AA8A5A85-592B-4357-BC60-E0E91E026AF6} = {AA8A5A85-592B-4357-BC60-E0E91E026AF6} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WebCore", "..\..\..\WebCore\WebCore.vcproj\WebCore.vcproj", "{1C16337B-ACF3-4D03-AA90-851C5B5EADA6}" - ProjectSection(ProjectDependencies) = postProject - {E498CA9D-3BD2-4D52-8E37-C8DC76526325} = {E498CA9D-3BD2-4D52-8E37-C8DC76526325} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WTF", "..\..\..\JavaScriptCore\JavaScriptCore.vcproj\WTF\WTF.vcproj", "{AA8A5A85-592B-4357-BC60-E0E91E026AF6}" - ProjectSection(ProjectDependencies) = postProject - {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A} = {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jsc", "..\..\..\JavaScriptCore\JavaScriptCore.vcproj\jsc\jsc.vcproj", "{C59E5129-B453-49B7-A52B-1E104715F76E}" - ProjectSection(ProjectDependencies) = postProject - {1AFD081F-1AC7-4A97-8EFA-6DF97761A3A2} = {1AFD081F-1AC7-4A97-8EFA-6DF97761A3A2} - EndProjectSection -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "JavaScriptCore Folder", "JavaScriptCore Folder", "{557FA164-0E39-4DEC-B66C-8795C8E52399}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "JavaScriptCoreGenerated", "..\..\..\JavaScriptCore\JavaScriptCore.vcproj\JavaScriptCore\JavaScriptCoreGenerated.vcproj", "{4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WebCore Folder", "WebCore Folder", "{63FB6F8A-C601-43E3-BD16-A00A465C2CB6}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WebCoreGenerated", "..\..\..\WebCore\WebCore.vcproj\WebCoreGenerated.vcproj", "{0A324352-B3B6-496C-9E5B-4C7E923E628B}" - ProjectSection(ProjectDependencies) = postProject - {011D10F1-B656-4A1B-A0C3-3842F02122C5} = {011D10F1-B656-4A1B-A0C3-3842F02122C5} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "QTMovieWin", "..\..\..\WebCore\WebCore.vcproj\QTMovieWin.vcproj", "{E498CA9D-3BD2-4D52-8E37-C8DC76526325}" - ProjectSection(ProjectDependencies) = postProject - {0A324352-B3B6-496C-9E5B-4C7E923E628B} = {0A324352-B3B6-496C-9E5B-4C7E923E628B} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testapi", "..\..\..\JavaScriptCore\JavaScriptCore.vcproj\testapi\testapi.vcproj", "{1AFD081F-1AC7-4A97-8EFA-6DF97761A3A2}" - ProjectSection(ProjectDependencies) = postProject - {DA31DA52-6675-48D4-89E0-333A7144397C} = {DA31DA52-6675-48D4-89E0-333A7144397C} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WebKit", "..\..\..\WebKit2\win\WebKit2.vcproj", "{2E51ABE8-76CB-485B-A66C-46AEF4DF8ACD}" - ProjectSection(ProjectDependencies) = postProject - {2EDAD637-CBA8-4E55-97ED-7D2BBC336FDB} = {2EDAD637-CBA8-4E55-97ED-7D2BBC336FDB} - EndProjectSection -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WebKit2 Folder", "WebKit2 Folder", "{9AB9C96C-9039-4FA9-8F83-BBFC8F8B2182}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WebKit2Generated", "..\..\..\WebKit2\win\WebKit2Generated.vcproj", "{2EDAD637-CBA8-4E55-97ED-7D2BBC336FDB}" - ProjectSection(ProjectDependencies) = postProject - {0662A8A9-82A3-4638-97D8-EC425D8D87C9} = {0662A8A9-82A3-4638-97D8-EC425D8D87C9} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WebKit2WebProcess", "..\..\..\WebKit2\win\WebKit2WebProcess.vcproj", "{AAE88FEF-509E-4D49-870B-7357922C276F}" - ProjectSection(ProjectDependencies) = postProject - {2E51ABE8-76CB-485B-A66C-46AEF4DF8ACD} = {2E51ABE8-76CB-485B-A66C-46AEF4DF8ACD} - EndProjectSection -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WebKitCOM Folder", "WebKitCOM Folder", "{1D359ACC-BE10-45D7-938B-BC7E4B7AA6CA}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Interfaces", "Interfaces.vcproj", "{91762BE2-87EF-4F5A-A480-48B90EB3F406}" - ProjectSection(ProjectDependencies) = postProject - {1C16337B-ACF3-4D03-AA90-851C5B5EADA6} = {1C16337B-ACF3-4D03-AA90-851C5B5EADA6} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WebKitLib", "WebKit.vcproj", "{0662A8A9-82A3-4638-97D8-EC425D8D87C9}" - ProjectSection(ProjectDependencies) = postProject - {B8437A41-67BC-4769-9452-45203827F821} = {B8437A41-67BC-4769-9452-45203827F821} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WebKitGUID", "WebKitGUID.vcproj", "{B8437A41-67BC-4769-9452-45203827F821}" - ProjectSection(ProjectDependencies) = postProject - {91762BE2-87EF-4F5A-A480-48B90EB3F406} = {91762BE2-87EF-4F5A-A480-48B90EB3F406} - EndProjectSection -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WebKitTools", "WebKitTools", "{62DCDFE4-EAD2-48E1-A2BD-BD54AD3C7459}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DumpRenderTree", "..\..\..\WebKitTools\DumpRenderTree\win\DumpRenderTree.vcproj", "{6567DFD4-D6DE-4CD5-825D-17E353D160E1}" - ProjectSection(ProjectDependencies) = postProject - {59CC0547-70AC-499C-9B19-EC01C6F61137} = {59CC0547-70AC-499C-9B19-EC01C6F61137} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ImageDiff", "..\..\..\WebKitTools\DumpRenderTree\win\ImageDiff.vcproj", "{59CC0547-70AC-499C-9B19-EC01C6F61137}" - ProjectSection(ProjectDependencies) = postProject - {C0737398-3565-439E-A2B8-AB2BE4D5430C} = {C0737398-3565-439E-A2B8-AB2BE4D5430C} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FindSafari", "..\..\..\WebKitTools\FindSafari\FindSafari.vcproj", "{DA31DA52-6675-48D4-89E0-333A7144397C}" - ProjectSection(ProjectDependencies) = postProject - {AAE88FEF-509E-4D49-870B-7357922C276F} = {AAE88FEF-509E-4D49-870B-7357922C276F} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "record-memory-win", "..\..\..\WebKitTools\record-memory-win\record-memory-win.vcproj", "{44B9C152-1870-4035-B94D-7B3285AA0C12}" - ProjectSection(ProjectDependencies) = postProject - {D09806DB-E58B-4646-8C9B-61101906C1E2} = {D09806DB-E58B-4646-8C9B-61101906C1E2} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestNetscapePlugin", "..\..\..\WebKitTools\DumpRenderTree\TestNetscapePlugIn\win\TestNetscapePlugin.vcproj", "{C0737398-3565-439E-A2B8-AB2BE4D5430C}" - ProjectSection(ProjectDependencies) = postProject - {114FCA11-216B-4C8C-957E-30A75AE80443} = {114FCA11-216B-4C8C-957E-30A75AE80443} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WebKitAPITest", "..\..\..\WebKitTools\WebKitAPITest\WebKitAPITest.vcproj", "{626089A3-25D3-4883-A96C-B8C66E036397}" - ProjectSection(ProjectDependencies) = postProject - {6567DFD4-D6DE-4CD5-825D-17E353D160E1} = {6567DFD4-D6DE-4CD5-825D-17E353D160E1} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WebKitLauncherWin", "..\..\..\WebKitTools\WebKitLauncherWin\WebKitLauncherWin.vcproj", "{D09806DB-E58B-4646-8C9B-61101906C1E2}" - ProjectSection(ProjectDependencies) = postProject - {626089A3-25D3-4883-A96C-B8C66E036397} = {626089A3-25D3-4883-A96C-B8C66E036397} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WinLauncher", "..\..\..\WebKitTools\WinLauncher\WinLauncher.vcproj", "{114FCA11-216B-4C8C-957E-30A75AE80443}" - ProjectSection(ProjectDependencies) = postProject - {C59E5129-B453-49B7-A52B-1E104715F76E} = {C59E5129-B453-49B7-A52B-1E104715F76E} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "InjectedBundle", "..\..\..\WebKitTools\WebKitTestRunner\win\InjectedBundle.vcproj", "{CBC3391C-F060-4BF5-A66E-81404168816B}" - ProjectSection(ProjectDependencies) = postProject - {4343BC0B-A2E0-4B48-8277-F33CFBFA83CD} = {4343BC0B-A2E0-4B48-8277-F33CFBFA83CD} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "InjectedBundleGenerated", "..\..\..\WebKitTools\WebKitTestRunner\win\InjectedBundleGenerated.vcproj", "{4343BC0B-A2E0-4B48-8277-F33CFBFA83CD}" - ProjectSection(ProjectDependencies) = postProject - {44B9C152-1870-4035-B94D-7B3285AA0C12} = {44B9C152-1870-4035-B94D-7B3285AA0C12} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WebKitTestRunner", "..\..\..\WebKitTools\WebKitTestRunner\win\WebKitTestRunner.vcproj", "{3B99669B-1817-443B-BCBE-835580146668}" - ProjectSection(ProjectDependencies) = postProject - {CBC3391C-F060-4BF5-A66E-81404168816B} = {CBC3391C-F060-4BF5-A66E-81404168816B} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MiniBrowser", "..\..\..\WebKitTools\MiniBrowser\MiniBrowser.vcproj", "{1480CF5F-4160-47B5-A0E6-96AEC8258FB5}" - ProjectSection(ProjectDependencies) = postProject - {3E48AB23-D249-488F-A1C4-43CDF52FBD28} = {3E48AB23-D249-488F-A1C4-43CDF52FBD28} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestWebKitAPI", "..\..\..\WebKitTools\TestWebKitAPI\win\TestWebKitAPI.vcproj", "{3E48AB23-D249-488F-A1C4-43CDF52FBD28}" - ProjectSection(ProjectDependencies) = postProject - {45C45411-7F0E-404D-919A-4EE9BB60BE86} = {45C45411-7F0E-404D-919A-4EE9BB60BE86} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestWebKitAPIGenerated", "..\..\..\WebKitTools\TestWebKitAPI\win\TestWebKitAPIGenerated.vcproj", "{45C45411-7F0E-404D-919A-4EE9BB60BE86}" - ProjectSection(ProjectDependencies) = postProject - {3B99669B-1817-443B-BCBE-835580146668} = {3B99669B-1817-443B-BCBE-835580146668} - EndProjectSection -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug_Cairo|Win32 = Debug_Cairo|Win32 - Debug|Win32 = Debug|Win32 - Release_Cairo|Win32 = Release_Cairo|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Debug_Cairo|Win32.ActiveCfg = Debug_CFLite|Win32 - {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Debug_Cairo|Win32.Build.0 = Debug_CFLite|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_Cairo|Win32.ActiveCfg = Release_CFLite|Win32 - {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Release_Cairo|Win32.Build.0 = Release_CFLite|Win32 - {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Release|Win32.ActiveCfg = Release|Win32 - {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Release|Win32.Build.0 = Release|Win32 - {1C16337B-ACF3-4D03-AA90-851C5B5EADA6}.Debug_Cairo|Win32.ActiveCfg = Debug_Cairo|Win32 - {1C16337B-ACF3-4D03-AA90-851C5B5EADA6}.Debug_Cairo|Win32.Build.0 = Debug_Cairo|Win32 - {1C16337B-ACF3-4D03-AA90-851C5B5EADA6}.Debug|Win32.ActiveCfg = Debug|Win32 - {1C16337B-ACF3-4D03-AA90-851C5B5EADA6}.Debug|Win32.Build.0 = Debug|Win32 - {1C16337B-ACF3-4D03-AA90-851C5B5EADA6}.Release_Cairo|Win32.ActiveCfg = Release_Cairo|Win32 - {1C16337B-ACF3-4D03-AA90-851C5B5EADA6}.Release_Cairo|Win32.Build.0 = Release_Cairo|Win32 - {1C16337B-ACF3-4D03-AA90-851C5B5EADA6}.Release|Win32.ActiveCfg = Release|Win32 - {1C16337B-ACF3-4D03-AA90-851C5B5EADA6}.Release|Win32.Build.0 = Release|Win32 - {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Debug_Cairo|Win32.ActiveCfg = Debug|Win32 - {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Debug_Cairo|Win32.Build.0 = Debug|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_Cairo|Win32.ActiveCfg = Release|Win32 - {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Release_Cairo|Win32.Build.0 = Release|Win32 - {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Release|Win32.ActiveCfg = Release|Win32 - {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Release|Win32.Build.0 = Release|Win32 - {C59E5129-B453-49B7-A52B-1E104715F76E}.Debug_Cairo|Win32.ActiveCfg = Debug_CFLite|Win32 - {C59E5129-B453-49B7-A52B-1E104715F76E}.Debug_Cairo|Win32.Build.0 = Debug_CFLite|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_Cairo|Win32.ActiveCfg = Release|Win32 - {C59E5129-B453-49B7-A52B-1E104715F76E}.Release_Cairo|Win32.Build.0 = Release|Win32 - {C59E5129-B453-49B7-A52B-1E104715F76E}.Release|Win32.ActiveCfg = Release|Win32 - {C59E5129-B453-49B7-A52B-1E104715F76E}.Release|Win32.Build.0 = Release|Win32 - {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Debug_Cairo|Win32.ActiveCfg = all|Win32 - {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Debug_Cairo|Win32.Build.0 = all|Win32 - {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Debug|Win32.ActiveCfg = all|Win32 - {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Debug|Win32.Build.0 = all|Win32 - {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Release_Cairo|Win32.ActiveCfg = all|Win32 - {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Release_Cairo|Win32.Build.0 = all|Win32 - {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Release|Win32.ActiveCfg = all|Win32 - {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Release|Win32.Build.0 = all|Win32 - {0A324352-B3B6-496C-9E5B-4C7E923E628B}.Debug_Cairo|Win32.ActiveCfg = cairo|Win32 - {0A324352-B3B6-496C-9E5B-4C7E923E628B}.Debug_Cairo|Win32.Build.0 = cairo|Win32 - {0A324352-B3B6-496C-9E5B-4C7E923E628B}.Debug|Win32.ActiveCfg = all|Win32 - {0A324352-B3B6-496C-9E5B-4C7E923E628B}.Debug|Win32.Build.0 = all|Win32 - {0A324352-B3B6-496C-9E5B-4C7E923E628B}.Release_Cairo|Win32.ActiveCfg = cairo|Win32 - {0A324352-B3B6-496C-9E5B-4C7E923E628B}.Release_Cairo|Win32.Build.0 = cairo|Win32 - {0A324352-B3B6-496C-9E5B-4C7E923E628B}.Release|Win32.ActiveCfg = all|Win32 - {0A324352-B3B6-496C-9E5B-4C7E923E628B}.Release|Win32.Build.0 = all|Win32 - {E498CA9D-3BD2-4D52-8E37-C8DC76526325}.Debug_Cairo|Win32.ActiveCfg = Debug|Win32 - {E498CA9D-3BD2-4D52-8E37-C8DC76526325}.Debug|Win32.ActiveCfg = Debug|Win32 - {E498CA9D-3BD2-4D52-8E37-C8DC76526325}.Debug|Win32.Build.0 = Debug|Win32 - {E498CA9D-3BD2-4D52-8E37-C8DC76526325}.Release_Cairo|Win32.ActiveCfg = Release|Win32 - {E498CA9D-3BD2-4D52-8E37-C8DC76526325}.Release|Win32.ActiveCfg = Release|Win32 - {E498CA9D-3BD2-4D52-8E37-C8DC76526325}.Release|Win32.Build.0 = Release|Win32 - {1AFD081F-1AC7-4A97-8EFA-6DF97761A3A2}.Debug_Cairo|Win32.ActiveCfg = Debug_CFLite|Win32 - {1AFD081F-1AC7-4A97-8EFA-6DF97761A3A2}.Debug_Cairo|Win32.Build.0 = Debug_CFLite|Win32 - {1AFD081F-1AC7-4A97-8EFA-6DF97761A3A2}.Debug|Win32.ActiveCfg = Debug|Win32 - {1AFD081F-1AC7-4A97-8EFA-6DF97761A3A2}.Debug|Win32.Build.0 = Debug|Win32 - {1AFD081F-1AC7-4A97-8EFA-6DF97761A3A2}.Release_Cairo|Win32.ActiveCfg = Release_CFLite|Win32 - {1AFD081F-1AC7-4A97-8EFA-6DF97761A3A2}.Release_Cairo|Win32.Build.0 = Release_CFLite|Win32 - {1AFD081F-1AC7-4A97-8EFA-6DF97761A3A2}.Release|Win32.ActiveCfg = Release|Win32 - {1AFD081F-1AC7-4A97-8EFA-6DF97761A3A2}.Release|Win32.Build.0 = Release|Win32 - {2E51ABE8-76CB-485B-A66C-46AEF4DF8ACD}.Debug_Cairo|Win32.ActiveCfg = Debug_Cairo|Win32 - {2E51ABE8-76CB-485B-A66C-46AEF4DF8ACD}.Debug_Cairo|Win32.Build.0 = Debug_Cairo|Win32 - {2E51ABE8-76CB-485B-A66C-46AEF4DF8ACD}.Debug|Win32.ActiveCfg = Debug|Win32 - {2E51ABE8-76CB-485B-A66C-46AEF4DF8ACD}.Debug|Win32.Build.0 = Debug|Win32 - {2E51ABE8-76CB-485B-A66C-46AEF4DF8ACD}.Release_Cairo|Win32.ActiveCfg = Release_Cairo|Win32 - {2E51ABE8-76CB-485B-A66C-46AEF4DF8ACD}.Release_Cairo|Win32.Build.0 = Release_Cairo|Win32 - {2E51ABE8-76CB-485B-A66C-46AEF4DF8ACD}.Release|Win32.ActiveCfg = Release|Win32 - {2E51ABE8-76CB-485B-A66C-46AEF4DF8ACD}.Release|Win32.Build.0 = Release|Win32 - {2EDAD637-CBA8-4E55-97ED-7D2BBC336FDB}.Debug_Cairo|Win32.ActiveCfg = all|Win32 - {2EDAD637-CBA8-4E55-97ED-7D2BBC336FDB}.Debug_Cairo|Win32.Build.0 = all|Win32 - {2EDAD637-CBA8-4E55-97ED-7D2BBC336FDB}.Debug|Win32.ActiveCfg = all|Win32 - {2EDAD637-CBA8-4E55-97ED-7D2BBC336FDB}.Debug|Win32.Build.0 = all|Win32 - {2EDAD637-CBA8-4E55-97ED-7D2BBC336FDB}.Release_Cairo|Win32.ActiveCfg = all|Win32 - {2EDAD637-CBA8-4E55-97ED-7D2BBC336FDB}.Release_Cairo|Win32.Build.0 = all|Win32 - {2EDAD637-CBA8-4E55-97ED-7D2BBC336FDB}.Release|Win32.ActiveCfg = all|Win32 - {2EDAD637-CBA8-4E55-97ED-7D2BBC336FDB}.Release|Win32.Build.0 = all|Win32 - {AAE88FEF-509E-4D49-870B-7357922C276F}.Debug_Cairo|Win32.ActiveCfg = Debug_CFLite|Win32 - {AAE88FEF-509E-4D49-870B-7357922C276F}.Debug_Cairo|Win32.Build.0 = Debug_CFLite|Win32 - {AAE88FEF-509E-4D49-870B-7357922C276F}.Debug|Win32.ActiveCfg = Debug|Win32 - {AAE88FEF-509E-4D49-870B-7357922C276F}.Debug|Win32.Build.0 = Debug|Win32 - {AAE88FEF-509E-4D49-870B-7357922C276F}.Release_Cairo|Win32.ActiveCfg = Release|Win32 - {AAE88FEF-509E-4D49-870B-7357922C276F}.Release_Cairo|Win32.Build.0 = Release|Win32 - {AAE88FEF-509E-4D49-870B-7357922C276F}.Release|Win32.ActiveCfg = Release|Win32 - {AAE88FEF-509E-4D49-870B-7357922C276F}.Release|Win32.Build.0 = Release|Win32 - {91762BE2-87EF-4F5A-A480-48B90EB3F406}.Debug_Cairo|Win32.ActiveCfg = Debug|Win32 - {91762BE2-87EF-4F5A-A480-48B90EB3F406}.Debug_Cairo|Win32.Build.0 = Debug|Win32 - {91762BE2-87EF-4F5A-A480-48B90EB3F406}.Debug|Win32.ActiveCfg = Debug|Win32 - {91762BE2-87EF-4F5A-A480-48B90EB3F406}.Debug|Win32.Build.0 = Debug|Win32 - {91762BE2-87EF-4F5A-A480-48B90EB3F406}.Release_Cairo|Win32.ActiveCfg = Release|Win32 - {91762BE2-87EF-4F5A-A480-48B90EB3F406}.Release_Cairo|Win32.Build.0 = Release|Win32 - {91762BE2-87EF-4F5A-A480-48B90EB3F406}.Release|Win32.ActiveCfg = Release|Win32 - {91762BE2-87EF-4F5A-A480-48B90EB3F406}.Release|Win32.Build.0 = Release|Win32 - {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Debug_Cairo|Win32.ActiveCfg = Debug_Cairo|Win32 - {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Debug_Cairo|Win32.Build.0 = Debug_Cairo|Win32 - {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Debug|Win32.ActiveCfg = Debug|Win32 - {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Debug|Win32.Build.0 = Debug|Win32 - {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Release_Cairo|Win32.ActiveCfg = Release_Cairo|Win32 - {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Release_Cairo|Win32.Build.0 = Release_Cairo|Win32 - {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Release|Win32.ActiveCfg = Release|Win32 - {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Release|Win32.Build.0 = Release|Win32 - {B8437A41-67BC-4769-9452-45203827F821}.Debug_Cairo|Win32.ActiveCfg = Debug|Win32 - {B8437A41-67BC-4769-9452-45203827F821}.Debug_Cairo|Win32.Build.0 = Debug|Win32 - {B8437A41-67BC-4769-9452-45203827F821}.Debug|Win32.ActiveCfg = Debug|Win32 - {B8437A41-67BC-4769-9452-45203827F821}.Debug|Win32.Build.0 = Debug|Win32 - {B8437A41-67BC-4769-9452-45203827F821}.Release_Cairo|Win32.ActiveCfg = Release|Win32 - {B8437A41-67BC-4769-9452-45203827F821}.Release_Cairo|Win32.Build.0 = Release|Win32 - {B8437A41-67BC-4769-9452-45203827F821}.Release|Win32.ActiveCfg = Release|Win32 - {B8437A41-67BC-4769-9452-45203827F821}.Release|Win32.Build.0 = Release|Win32 - {6567DFD4-D6DE-4CD5-825D-17E353D160E1}.Debug_Cairo|Win32.ActiveCfg = Debug_Cairo|Win32 - {6567DFD4-D6DE-4CD5-825D-17E353D160E1}.Debug_Cairo|Win32.Build.0 = Debug_Cairo|Win32 - {6567DFD4-D6DE-4CD5-825D-17E353D160E1}.Debug|Win32.ActiveCfg = Debug|Win32 - {6567DFD4-D6DE-4CD5-825D-17E353D160E1}.Debug|Win32.Build.0 = Debug|Win32 - {6567DFD4-D6DE-4CD5-825D-17E353D160E1}.Release_Cairo|Win32.ActiveCfg = Release_Cairo|Win32 - {6567DFD4-D6DE-4CD5-825D-17E353D160E1}.Release_Cairo|Win32.Build.0 = Release_Cairo|Win32 - {6567DFD4-D6DE-4CD5-825D-17E353D160E1}.Release|Win32.ActiveCfg = Release|Win32 - {6567DFD4-D6DE-4CD5-825D-17E353D160E1}.Release|Win32.Build.0 = Release|Win32 - {59CC0547-70AC-499C-9B19-EC01C6F61137}.Debug_Cairo|Win32.ActiveCfg = Debug_Cairo|Win32 - {59CC0547-70AC-499C-9B19-EC01C6F61137}.Debug_Cairo|Win32.Build.0 = Debug_Cairo|Win32 - {59CC0547-70AC-499C-9B19-EC01C6F61137}.Debug|Win32.ActiveCfg = Debug|Win32 - {59CC0547-70AC-499C-9B19-EC01C6F61137}.Debug|Win32.Build.0 = Debug|Win32 - {59CC0547-70AC-499C-9B19-EC01C6F61137}.Release_Cairo|Win32.ActiveCfg = Release|Win32 - {59CC0547-70AC-499C-9B19-EC01C6F61137}.Release_Cairo|Win32.Build.0 = Release|Win32 - {59CC0547-70AC-499C-9B19-EC01C6F61137}.Release|Win32.ActiveCfg = Release|Win32 - {59CC0547-70AC-499C-9B19-EC01C6F61137}.Release|Win32.Build.0 = Release|Win32 - {DA31DA52-6675-48D4-89E0-333A7144397C}.Debug_Cairo|Win32.ActiveCfg = all|Win32 - {DA31DA52-6675-48D4-89E0-333A7144397C}.Debug_Cairo|Win32.Build.0 = all|Win32 - {DA31DA52-6675-48D4-89E0-333A7144397C}.Debug|Win32.ActiveCfg = all|Win32 - {DA31DA52-6675-48D4-89E0-333A7144397C}.Debug|Win32.Build.0 = all|Win32 - {DA31DA52-6675-48D4-89E0-333A7144397C}.Release_Cairo|Win32.ActiveCfg = all|Win32 - {DA31DA52-6675-48D4-89E0-333A7144397C}.Release_Cairo|Win32.Build.0 = all|Win32 - {DA31DA52-6675-48D4-89E0-333A7144397C}.Release|Win32.ActiveCfg = all|Win32 - {DA31DA52-6675-48D4-89E0-333A7144397C}.Release|Win32.Build.0 = all|Win32 - {44B9C152-1870-4035-B94D-7B3285AA0C12}.Debug_Cairo|Win32.ActiveCfg = Release|Win32 - {44B9C152-1870-4035-B94D-7B3285AA0C12}.Debug_Cairo|Win32.Build.0 = Release|Win32 - {44B9C152-1870-4035-B94D-7B3285AA0C12}.Debug|Win32.ActiveCfg = Release|Win32 - {44B9C152-1870-4035-B94D-7B3285AA0C12}.Debug|Win32.Build.0 = Release|Win32 - {44B9C152-1870-4035-B94D-7B3285AA0C12}.Release_Cairo|Win32.ActiveCfg = Release|Win32 - {44B9C152-1870-4035-B94D-7B3285AA0C12}.Release_Cairo|Win32.Build.0 = Release|Win32 - {44B9C152-1870-4035-B94D-7B3285AA0C12}.Release|Win32.ActiveCfg = Release|Win32 - {44B9C152-1870-4035-B94D-7B3285AA0C12}.Release|Win32.Build.0 = Release|Win32 - {C0737398-3565-439E-A2B8-AB2BE4D5430C}.Debug_Cairo|Win32.ActiveCfg = Debug_Cairo|Win32 - {C0737398-3565-439E-A2B8-AB2BE4D5430C}.Debug_Cairo|Win32.Build.0 = Debug_Cairo|Win32 - {C0737398-3565-439E-A2B8-AB2BE4D5430C}.Debug|Win32.ActiveCfg = Debug|Win32 - {C0737398-3565-439E-A2B8-AB2BE4D5430C}.Debug|Win32.Build.0 = Debug|Win32 - {C0737398-3565-439E-A2B8-AB2BE4D5430C}.Release_Cairo|Win32.ActiveCfg = Release|Win32 - {C0737398-3565-439E-A2B8-AB2BE4D5430C}.Release_Cairo|Win32.Build.0 = Release|Win32 - {C0737398-3565-439E-A2B8-AB2BE4D5430C}.Release|Win32.ActiveCfg = Release|Win32 - {C0737398-3565-439E-A2B8-AB2BE4D5430C}.Release|Win32.Build.0 = Release|Win32 - {626089A3-25D3-4883-A96C-B8C66E036397}.Debug_Cairo|Win32.ActiveCfg = Debug_Cairo|Win32 - {626089A3-25D3-4883-A96C-B8C66E036397}.Debug_Cairo|Win32.Build.0 = Debug_Cairo|Win32 - {626089A3-25D3-4883-A96C-B8C66E036397}.Debug|Win32.ActiveCfg = Debug|Win32 - {626089A3-25D3-4883-A96C-B8C66E036397}.Debug|Win32.Build.0 = Debug|Win32 - {626089A3-25D3-4883-A96C-B8C66E036397}.Release_Cairo|Win32.ActiveCfg = Debug_Cairo|Win32 - {626089A3-25D3-4883-A96C-B8C66E036397}.Release_Cairo|Win32.Build.0 = Debug_Cairo|Win32 - {626089A3-25D3-4883-A96C-B8C66E036397}.Release|Win32.ActiveCfg = Debug|Win32 - {626089A3-25D3-4883-A96C-B8C66E036397}.Release|Win32.Build.0 = Debug|Win32 - {D09806DB-E58B-4646-8C9B-61101906C1E2}.Debug_Cairo|Win32.ActiveCfg = Release|Win32 - {D09806DB-E58B-4646-8C9B-61101906C1E2}.Debug_Cairo|Win32.Build.0 = Release|Win32 - {D09806DB-E58B-4646-8C9B-61101906C1E2}.Debug|Win32.ActiveCfg = Release|Win32 - {D09806DB-E58B-4646-8C9B-61101906C1E2}.Debug|Win32.Build.0 = Release|Win32 - {D09806DB-E58B-4646-8C9B-61101906C1E2}.Release_Cairo|Win32.ActiveCfg = Release|Win32 - {D09806DB-E58B-4646-8C9B-61101906C1E2}.Release_Cairo|Win32.Build.0 = Release|Win32 - {D09806DB-E58B-4646-8C9B-61101906C1E2}.Release|Win32.ActiveCfg = Release|Win32 - {D09806DB-E58B-4646-8C9B-61101906C1E2}.Release|Win32.Build.0 = Release|Win32 - {114FCA11-216B-4C8C-957E-30A75AE80443}.Debug_Cairo|Win32.ActiveCfg = Debug_Cairo|Win32 - {114FCA11-216B-4C8C-957E-30A75AE80443}.Debug_Cairo|Win32.Build.0 = Debug_Cairo|Win32 - {114FCA11-216B-4C8C-957E-30A75AE80443}.Debug|Win32.ActiveCfg = Debug|Win32 - {114FCA11-216B-4C8C-957E-30A75AE80443}.Debug|Win32.Build.0 = Debug|Win32 - {114FCA11-216B-4C8C-957E-30A75AE80443}.Release_Cairo|Win32.ActiveCfg = Release|Win32 - {114FCA11-216B-4C8C-957E-30A75AE80443}.Release_Cairo|Win32.Build.0 = Release|Win32 - {114FCA11-216B-4C8C-957E-30A75AE80443}.Release|Win32.ActiveCfg = Release|Win32 - {114FCA11-216B-4C8C-957E-30A75AE80443}.Release|Win32.Build.0 = Release|Win32 - {CBC3391C-F060-4BF5-A66E-81404168816B}.Debug_Cairo|Win32.ActiveCfg = Debug_CFLite|Win32 - {CBC3391C-F060-4BF5-A66E-81404168816B}.Debug_Cairo|Win32.Build.0 = Debug_CFLite|Win32 - {CBC3391C-F060-4BF5-A66E-81404168816B}.Debug|Win32.ActiveCfg = Debug|Win32 - {CBC3391C-F060-4BF5-A66E-81404168816B}.Debug|Win32.Build.0 = Debug|Win32 - {CBC3391C-F060-4BF5-A66E-81404168816B}.Release_Cairo|Win32.ActiveCfg = Release_CFLite|Win32 - {CBC3391C-F060-4BF5-A66E-81404168816B}.Release_Cairo|Win32.Build.0 = Release_CFLite|Win32 - {CBC3391C-F060-4BF5-A66E-81404168816B}.Release|Win32.ActiveCfg = Release|Win32 - {CBC3391C-F060-4BF5-A66E-81404168816B}.Release|Win32.Build.0 = Release|Win32 - {4343BC0B-A2E0-4B48-8277-F33CFBFA83CD}.Debug_Cairo|Win32.ActiveCfg = all|Win32 - {4343BC0B-A2E0-4B48-8277-F33CFBFA83CD}.Debug_Cairo|Win32.Build.0 = all|Win32 - {4343BC0B-A2E0-4B48-8277-F33CFBFA83CD}.Debug|Win32.ActiveCfg = all|Win32 - {4343BC0B-A2E0-4B48-8277-F33CFBFA83CD}.Debug|Win32.Build.0 = all|Win32 - {4343BC0B-A2E0-4B48-8277-F33CFBFA83CD}.Release_Cairo|Win32.ActiveCfg = all|Win32 - {4343BC0B-A2E0-4B48-8277-F33CFBFA83CD}.Release_Cairo|Win32.Build.0 = all|Win32 - {4343BC0B-A2E0-4B48-8277-F33CFBFA83CD}.Release|Win32.ActiveCfg = all|Win32 - {4343BC0B-A2E0-4B48-8277-F33CFBFA83CD}.Release|Win32.Build.0 = all|Win32 - {3B99669B-1817-443B-BCBE-835580146668}.Debug_Cairo|Win32.ActiveCfg = Debug_CFLite|Win32 - {3B99669B-1817-443B-BCBE-835580146668}.Debug_Cairo|Win32.Build.0 = Debug_CFLite|Win32 - {3B99669B-1817-443B-BCBE-835580146668}.Debug|Win32.ActiveCfg = Debug|Win32 - {3B99669B-1817-443B-BCBE-835580146668}.Debug|Win32.Build.0 = Debug|Win32 - {3B99669B-1817-443B-BCBE-835580146668}.Release_Cairo|Win32.ActiveCfg = Release_CFLite|Win32 - {3B99669B-1817-443B-BCBE-835580146668}.Release_Cairo|Win32.Build.0 = Release_CFLite|Win32 - {3B99669B-1817-443B-BCBE-835580146668}.Release|Win32.ActiveCfg = Release|Win32 - {3B99669B-1817-443B-BCBE-835580146668}.Release|Win32.Build.0 = Release|Win32 - {1480CF5F-4160-47B5-A0E6-96AEC8258FB5}.Debug_Cairo|Win32.ActiveCfg = Debug_CFLite|Win32 - {1480CF5F-4160-47B5-A0E6-96AEC8258FB5}.Debug_Cairo|Win32.Build.0 = Debug_CFLite|Win32 - {1480CF5F-4160-47B5-A0E6-96AEC8258FB5}.Debug|Win32.ActiveCfg = Debug|Win32 - {1480CF5F-4160-47B5-A0E6-96AEC8258FB5}.Debug|Win32.Build.0 = Debug|Win32 - {1480CF5F-4160-47B5-A0E6-96AEC8258FB5}.Release_Cairo|Win32.ActiveCfg = Release_CFLite|Win32 - {1480CF5F-4160-47B5-A0E6-96AEC8258FB5}.Release_Cairo|Win32.Build.0 = Release_CFLite|Win32 - {1480CF5F-4160-47B5-A0E6-96AEC8258FB5}.Release|Win32.ActiveCfg = Release|Win32 - {1480CF5F-4160-47B5-A0E6-96AEC8258FB5}.Release|Win32.Build.0 = Release|Win32 - {3E48AB23-D249-488F-A1C4-43CDF52FBD28}.Debug_Cairo|Win32.ActiveCfg = Debug_CFLite|Win32 - {3E48AB23-D249-488F-A1C4-43CDF52FBD28}.Debug_Cairo|Win32.Build.0 = Debug_CFLite|Win32 - {3E48AB23-D249-488F-A1C4-43CDF52FBD28}.Debug|Win32.ActiveCfg = Debug|Win32 - {3E48AB23-D249-488F-A1C4-43CDF52FBD28}.Debug|Win32.Build.0 = Debug|Win32 - {3E48AB23-D249-488F-A1C4-43CDF52FBD28}.Release_Cairo|Win32.ActiveCfg = Release_CFLite|Win32 - {3E48AB23-D249-488F-A1C4-43CDF52FBD28}.Release_Cairo|Win32.Build.0 = Release_CFLite|Win32 - {3E48AB23-D249-488F-A1C4-43CDF52FBD28}.Release|Win32.ActiveCfg = Release|Win32 - {3E48AB23-D249-488F-A1C4-43CDF52FBD28}.Release|Win32.Build.0 = Release|Win32 - {45C45411-7F0E-404D-919A-4EE9BB60BE86}.Debug_Cairo|Win32.ActiveCfg = all|Win32 - {45C45411-7F0E-404D-919A-4EE9BB60BE86}.Debug_Cairo|Win32.Build.0 = all|Win32 - {45C45411-7F0E-404D-919A-4EE9BB60BE86}.Debug|Win32.ActiveCfg = all|Win32 - {45C45411-7F0E-404D-919A-4EE9BB60BE86}.Debug|Win32.Build.0 = all|Win32 - {45C45411-7F0E-404D-919A-4EE9BB60BE86}.Release_Cairo|Win32.ActiveCfg = all|Win32 - {45C45411-7F0E-404D-919A-4EE9BB60BE86}.Release_Cairo|Win32.Build.0 = all|Win32 - {45C45411-7F0E-404D-919A-4EE9BB60BE86}.Release|Win32.ActiveCfg = all|Win32 - {45C45411-7F0E-404D-919A-4EE9BB60BE86}.Release|Win32.Build.0 = all|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {AA8A5A85-592B-4357-BC60-E0E91E026AF6} = {557FA164-0E39-4DEC-B66C-8795C8E52399} - {C59E5129-B453-49B7-A52B-1E104715F76E} = {557FA164-0E39-4DEC-B66C-8795C8E52399} - {011D10F1-B656-4A1B-A0C3-3842F02122C5} = {557FA164-0E39-4DEC-B66C-8795C8E52399} - {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A} = {557FA164-0E39-4DEC-B66C-8795C8E52399} - {1AFD081F-1AC7-4A97-8EFA-6DF97761A3A2} = {557FA164-0E39-4DEC-B66C-8795C8E52399} - {1C16337B-ACF3-4D03-AA90-851C5B5EADA6} = {63FB6F8A-C601-43E3-BD16-A00A465C2CB6} - {0A324352-B3B6-496C-9E5B-4C7E923E628B} = {63FB6F8A-C601-43E3-BD16-A00A465C2CB6} - {E498CA9D-3BD2-4D52-8E37-C8DC76526325} = {63FB6F8A-C601-43E3-BD16-A00A465C2CB6} - {2E51ABE8-76CB-485B-A66C-46AEF4DF8ACD} = {9AB9C96C-9039-4FA9-8F83-BBFC8F8B2182} - {2EDAD637-CBA8-4E55-97ED-7D2BBC336FDB} = {9AB9C96C-9039-4FA9-8F83-BBFC8F8B2182} - {AAE88FEF-509E-4D49-870B-7357922C276F} = {9AB9C96C-9039-4FA9-8F83-BBFC8F8B2182} - {91762BE2-87EF-4F5A-A480-48B90EB3F406} = {1D359ACC-BE10-45D7-938B-BC7E4B7AA6CA} - {0662A8A9-82A3-4638-97D8-EC425D8D87C9} = {1D359ACC-BE10-45D7-938B-BC7E4B7AA6CA} - {B8437A41-67BC-4769-9452-45203827F821} = {1D359ACC-BE10-45D7-938B-BC7E4B7AA6CA} - {6567DFD4-D6DE-4CD5-825D-17E353D160E1} = {62DCDFE4-EAD2-48E1-A2BD-BD54AD3C7459} - {59CC0547-70AC-499C-9B19-EC01C6F61137} = {62DCDFE4-EAD2-48E1-A2BD-BD54AD3C7459} - {DA31DA52-6675-48D4-89E0-333A7144397C} = {62DCDFE4-EAD2-48E1-A2BD-BD54AD3C7459} - {44B9C152-1870-4035-B94D-7B3285AA0C12} = {62DCDFE4-EAD2-48E1-A2BD-BD54AD3C7459} - {C0737398-3565-439E-A2B8-AB2BE4D5430C} = {62DCDFE4-EAD2-48E1-A2BD-BD54AD3C7459} - {626089A3-25D3-4883-A96C-B8C66E036397} = {62DCDFE4-EAD2-48E1-A2BD-BD54AD3C7459} - {D09806DB-E58B-4646-8C9B-61101906C1E2} = {62DCDFE4-EAD2-48E1-A2BD-BD54AD3C7459} - {114FCA11-216B-4C8C-957E-30A75AE80443} = {62DCDFE4-EAD2-48E1-A2BD-BD54AD3C7459} - {CBC3391C-F060-4BF5-A66E-81404168816B} = {62DCDFE4-EAD2-48E1-A2BD-BD54AD3C7459} - {4343BC0B-A2E0-4B48-8277-F33CFBFA83CD} = {62DCDFE4-EAD2-48E1-A2BD-BD54AD3C7459} - {3B99669B-1817-443B-BCBE-835580146668} = {62DCDFE4-EAD2-48E1-A2BD-BD54AD3C7459} - {1480CF5F-4160-47B5-A0E6-96AEC8258FB5} = {62DCDFE4-EAD2-48E1-A2BD-BD54AD3C7459} - {3E48AB23-D249-488F-A1C4-43CDF52FBD28} = {62DCDFE4-EAD2-48E1-A2BD-BD54AD3C7459} - {45C45411-7F0E-404D-919A-4EE9BB60BE86} = {62DCDFE4-EAD2-48E1-A2BD-BD54AD3C7459} - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual Studio 2005 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "JavaScriptCore", "..\..\..\JavaScriptCore\JavaScriptCore.vcproj\JavaScriptCore\JavaScriptCore.vcproj", "{011D10F1-B656-4A1B-A0C3-3842F02122C5}" + ProjectSection(ProjectDependencies) = postProject + {AA8A5A85-592B-4357-BC60-E0E91E026AF6} = {AA8A5A85-592B-4357-BC60-E0E91E026AF6} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WebCore", "..\..\..\WebCore\WebCore.vcproj\WebCore.vcproj", "{1C16337B-ACF3-4D03-AA90-851C5B5EADA6}" + ProjectSection(ProjectDependencies) = postProject + {E498CA9D-3BD2-4D52-8E37-C8DC76526325} = {E498CA9D-3BD2-4D52-8E37-C8DC76526325} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WTF", "..\..\..\JavaScriptCore\JavaScriptCore.vcproj\WTF\WTF.vcproj", "{AA8A5A85-592B-4357-BC60-E0E91E026AF6}" + ProjectSection(ProjectDependencies) = postProject + {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A} = {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jsc", "..\..\..\JavaScriptCore\JavaScriptCore.vcproj\jsc\jsc.vcproj", "{C59E5129-B453-49B7-A52B-1E104715F76E}" + ProjectSection(ProjectDependencies) = postProject + {1AFD081F-1AC7-4A97-8EFA-6DF97761A3A2} = {1AFD081F-1AC7-4A97-8EFA-6DF97761A3A2} + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "JavaScriptCore Folder", "JavaScriptCore Folder", "{557FA164-0E39-4DEC-B66C-8795C8E52399}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "JavaScriptCoreGenerated", "..\..\..\JavaScriptCore\JavaScriptCore.vcproj\JavaScriptCore\JavaScriptCoreGenerated.vcproj", "{4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WebCore Folder", "WebCore Folder", "{63FB6F8A-C601-43E3-BD16-A00A465C2CB6}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WebCoreGenerated", "..\..\..\WebCore\WebCore.vcproj\WebCoreGenerated.vcproj", "{0A324352-B3B6-496C-9E5B-4C7E923E628B}" + ProjectSection(ProjectDependencies) = postProject + {011D10F1-B656-4A1B-A0C3-3842F02122C5} = {011D10F1-B656-4A1B-A0C3-3842F02122C5} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "QTMovieWin", "..\..\..\WebCore\WebCore.vcproj\QTMovieWin.vcproj", "{E498CA9D-3BD2-4D52-8E37-C8DC76526325}" + ProjectSection(ProjectDependencies) = postProject + {0A324352-B3B6-496C-9E5B-4C7E923E628B} = {0A324352-B3B6-496C-9E5B-4C7E923E628B} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testapi", "..\..\..\JavaScriptCore\JavaScriptCore.vcproj\testapi\testapi.vcproj", "{1AFD081F-1AC7-4A97-8EFA-6DF97761A3A2}" + ProjectSection(ProjectDependencies) = postProject + {DA31DA52-6675-48D4-89E0-333A7144397C} = {DA31DA52-6675-48D4-89E0-333A7144397C} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WebKit", "..\..\..\WebKit2\win\WebKit2.vcproj", "{2E51ABE8-76CB-485B-A66C-46AEF4DF8ACD}" + ProjectSection(ProjectDependencies) = postProject + {2EDAD637-CBA8-4E55-97ED-7D2BBC336FDB} = {2EDAD637-CBA8-4E55-97ED-7D2BBC336FDB} + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WebKit2 Folder", "WebKit2 Folder", "{9AB9C96C-9039-4FA9-8F83-BBFC8F8B2182}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WebKit2Generated", "..\..\..\WebKit2\win\WebKit2Generated.vcproj", "{2EDAD637-CBA8-4E55-97ED-7D2BBC336FDB}" + ProjectSection(ProjectDependencies) = postProject + {0662A8A9-82A3-4638-97D8-EC425D8D87C9} = {0662A8A9-82A3-4638-97D8-EC425D8D87C9} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WebKit2WebProcess", "..\..\..\WebKit2\win\WebKit2WebProcess.vcproj", "{AAE88FEF-509E-4D49-870B-7357922C276F}" + ProjectSection(ProjectDependencies) = postProject + {2E51ABE8-76CB-485B-A66C-46AEF4DF8ACD} = {2E51ABE8-76CB-485B-A66C-46AEF4DF8ACD} + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WebKitCOM Folder", "WebKitCOM Folder", "{1D359ACC-BE10-45D7-938B-BC7E4B7AA6CA}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Interfaces", "Interfaces.vcproj", "{91762BE2-87EF-4F5A-A480-48B90EB3F406}" + ProjectSection(ProjectDependencies) = postProject + {1C16337B-ACF3-4D03-AA90-851C5B5EADA6} = {1C16337B-ACF3-4D03-AA90-851C5B5EADA6} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WebKitLib", "WebKit.vcproj", "{0662A8A9-82A3-4638-97D8-EC425D8D87C9}" + ProjectSection(ProjectDependencies) = postProject + {B8437A41-67BC-4769-9452-45203827F821} = {B8437A41-67BC-4769-9452-45203827F821} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WebKitGUID", "WebKitGUID.vcproj", "{B8437A41-67BC-4769-9452-45203827F821}" + ProjectSection(ProjectDependencies) = postProject + {91762BE2-87EF-4F5A-A480-48B90EB3F406} = {91762BE2-87EF-4F5A-A480-48B90EB3F406} + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WebKitTools", "WebKitTools", "{62DCDFE4-EAD2-48E1-A2BD-BD54AD3C7459}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DumpRenderTree", "..\..\..\WebKitTools\DumpRenderTree\win\DumpRenderTree.vcproj", "{6567DFD4-D6DE-4CD5-825D-17E353D160E1}" + ProjectSection(ProjectDependencies) = postProject + {59CC0547-70AC-499C-9B19-EC01C6F61137} = {59CC0547-70AC-499C-9B19-EC01C6F61137} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ImageDiff", "..\..\..\WebKitTools\DumpRenderTree\win\ImageDiff.vcproj", "{59CC0547-70AC-499C-9B19-EC01C6F61137}" + ProjectSection(ProjectDependencies) = postProject + {C0737398-3565-439E-A2B8-AB2BE4D5430C} = {C0737398-3565-439E-A2B8-AB2BE4D5430C} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FindSafari", "..\..\..\WebKitTools\FindSafari\FindSafari.vcproj", "{DA31DA52-6675-48D4-89E0-333A7144397C}" + ProjectSection(ProjectDependencies) = postProject + {AAE88FEF-509E-4D49-870B-7357922C276F} = {AAE88FEF-509E-4D49-870B-7357922C276F} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "record-memory-win", "..\..\..\WebKitTools\record-memory-win\record-memory-win.vcproj", "{44B9C152-1870-4035-B94D-7B3285AA0C12}" + ProjectSection(ProjectDependencies) = postProject + {D09806DB-E58B-4646-8C9B-61101906C1E2} = {D09806DB-E58B-4646-8C9B-61101906C1E2} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestNetscapePlugin", "..\..\..\WebKitTools\DumpRenderTree\TestNetscapePlugIn\win\TestNetscapePlugin.vcproj", "{C0737398-3565-439E-A2B8-AB2BE4D5430C}" + ProjectSection(ProjectDependencies) = postProject + {114FCA11-216B-4C8C-957E-30A75AE80443} = {114FCA11-216B-4C8C-957E-30A75AE80443} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WebKitAPITest", "..\..\..\WebKitTools\WebKitAPITest\WebKitAPITest.vcproj", "{626089A3-25D3-4883-A96C-B8C66E036397}" + ProjectSection(ProjectDependencies) = postProject + {6567DFD4-D6DE-4CD5-825D-17E353D160E1} = {6567DFD4-D6DE-4CD5-825D-17E353D160E1} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WebKitLauncherWin", "..\..\..\WebKitTools\WebKitLauncherWin\WebKitLauncherWin.vcproj", "{D09806DB-E58B-4646-8C9B-61101906C1E2}" + ProjectSection(ProjectDependencies) = postProject + {626089A3-25D3-4883-A96C-B8C66E036397} = {626089A3-25D3-4883-A96C-B8C66E036397} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WinLauncher", "..\..\..\WebKitTools\WinLauncher\WinLauncher.vcproj", "{114FCA11-216B-4C8C-957E-30A75AE80443}" + ProjectSection(ProjectDependencies) = postProject + {C59E5129-B453-49B7-A52B-1E104715F76E} = {C59E5129-B453-49B7-A52B-1E104715F76E} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "InjectedBundle", "..\..\..\WebKitTools\WebKitTestRunner\win\InjectedBundle.vcproj", "{CBC3391C-F060-4BF5-A66E-81404168816B}" + ProjectSection(ProjectDependencies) = postProject + {4343BC0B-A2E0-4B48-8277-F33CFBFA83CD} = {4343BC0B-A2E0-4B48-8277-F33CFBFA83CD} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "InjectedBundleGenerated", "..\..\..\WebKitTools\WebKitTestRunner\win\InjectedBundleGenerated.vcproj", "{4343BC0B-A2E0-4B48-8277-F33CFBFA83CD}" + ProjectSection(ProjectDependencies) = postProject + {44B9C152-1870-4035-B94D-7B3285AA0C12} = {44B9C152-1870-4035-B94D-7B3285AA0C12} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WebKitTestRunner", "..\..\..\WebKitTools\WebKitTestRunner\win\WebKitTestRunner.vcproj", "{3B99669B-1817-443B-BCBE-835580146668}" + ProjectSection(ProjectDependencies) = postProject + {CBC3391C-F060-4BF5-A66E-81404168816B} = {CBC3391C-F060-4BF5-A66E-81404168816B} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MiniBrowser", "..\..\..\WebKitTools\MiniBrowser\MiniBrowser.vcproj", "{1480CF5F-4160-47B5-A0E6-96AEC8258FB5}" + ProjectSection(ProjectDependencies) = postProject + {3E48AB23-D249-488F-A1C4-43CDF52FBD28} = {3E48AB23-D249-488F-A1C4-43CDF52FBD28} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestWebKitAPI", "..\..\..\WebKitTools\TestWebKitAPI\win\TestWebKitAPI.vcproj", "{3E48AB23-D249-488F-A1C4-43CDF52FBD28}" + ProjectSection(ProjectDependencies) = postProject + {45C45411-7F0E-404D-919A-4EE9BB60BE86} = {45C45411-7F0E-404D-919A-4EE9BB60BE86} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestWebKitAPIGenerated", "..\..\..\WebKitTools\TestWebKitAPI\win\TestWebKitAPIGenerated.vcproj", "{45C45411-7F0E-404D-919A-4EE9BB60BE86}" + ProjectSection(ProjectDependencies) = postProject + {3B99669B-1817-443B-BCBE-835580146668} = {3B99669B-1817-443B-BCBE-835580146668} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug_Cairo_CFLite|Win32 = Debug_Cairo_CFLite|Win32 + Debug|Win32 = Debug|Win32 + Release_Cairo_CFLite|Win32 = Release_Cairo_CFLite|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Debug_Cairo_CFLite|Win32.ActiveCfg = Debug_Cairo_CFLite|Win32 + {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Debug_Cairo_CFLite|Win32.Build.0 = Debug_Cairo_CFLite|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_Cairo_CFLite|Win32.ActiveCfg = Release_Cairo_CFLite|Win32 + {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Release_Cairo_CFLite|Win32.Build.0 = Release_Cairo_CFLite|Win32 + {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Release|Win32.ActiveCfg = Release|Win32 + {011D10F1-B656-4A1B-A0C3-3842F02122C5}.Release|Win32.Build.0 = Release|Win32 + {1C16337B-ACF3-4D03-AA90-851C5B5EADA6}.Debug_Cairo_CFLite|Win32.ActiveCfg = Debug_Cairo_CFLite|Win32 + {1C16337B-ACF3-4D03-AA90-851C5B5EADA6}.Debug_Cairo_CFLite|Win32.Build.0 = Debug_Cairo_CFLite|Win32 + {1C16337B-ACF3-4D03-AA90-851C5B5EADA6}.Debug|Win32.ActiveCfg = Debug|Win32 + {1C16337B-ACF3-4D03-AA90-851C5B5EADA6}.Debug|Win32.Build.0 = Debug|Win32 + {1C16337B-ACF3-4D03-AA90-851C5B5EADA6}.Release_Cairo_CFLite|Win32.ActiveCfg = Release_Cairo_CFLite|Win32 + {1C16337B-ACF3-4D03-AA90-851C5B5EADA6}.Release_Cairo_CFLite|Win32.Build.0 = Release_Cairo_CFLite|Win32 + {1C16337B-ACF3-4D03-AA90-851C5B5EADA6}.Release|Win32.ActiveCfg = Release|Win32 + {1C16337B-ACF3-4D03-AA90-851C5B5EADA6}.Release|Win32.Build.0 = Release|Win32 + {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Debug_Cairo_CFLite|Win32.ActiveCfg = Debug_Cairo_CFLite|Win32 + {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Debug_Cairo_CFLite|Win32.Build.0 = Debug_Cairo_CFLite|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_Cairo_CFLite|Win32.ActiveCfg = Release_Cairo_CFLite|Win32 + {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Release_Cairo_CFLite|Win32.Build.0 = Release_Cairo_CFLite|Win32 + {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Release|Win32.ActiveCfg = Release|Win32 + {AA8A5A85-592B-4357-BC60-E0E91E026AF6}.Release|Win32.Build.0 = Release|Win32 + {C59E5129-B453-49B7-A52B-1E104715F76E}.Debug_Cairo_CFLite|Win32.ActiveCfg = Debug_Cairo_CFLite|Win32 + {C59E5129-B453-49B7-A52B-1E104715F76E}.Debug_Cairo_CFLite|Win32.Build.0 = Debug_Cairo_CFLite|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_Cairo_CFLite|Win32.ActiveCfg = Release_Cairo_CFLite|Win32 + {C59E5129-B453-49B7-A52B-1E104715F76E}.Release_Cairo_CFLite|Win32.Build.0 = Release_Cairo_CFLite|Win32 + {C59E5129-B453-49B7-A52B-1E104715F76E}.Release|Win32.ActiveCfg = Release|Win32 + {C59E5129-B453-49B7-A52B-1E104715F76E}.Release|Win32.Build.0 = Release|Win32 + {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Debug_Cairo_CFLite|Win32.ActiveCfg = Debug_Cairo_CFLite|Win32 + {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Debug_Cairo_CFLite|Win32.Build.0 = Debug_Cairo_CFLite|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_Cairo_CFLite|Win32.ActiveCfg = Release_Cairo_CFLite|Win32 + {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Release_Cairo_CFLite|Win32.Build.0 = Release_Cairo_CFLite|Win32 + {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Release|Win32.ActiveCfg = Release|Win32 + {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A}.Release|Win32.Build.0 = Release|Win32 + {0A324352-B3B6-496C-9E5B-4C7E923E628B}.Debug_Cairo_CFLite|Win32.ActiveCfg = Debug_Cairo_CFLite|Win32 + {0A324352-B3B6-496C-9E5B-4C7E923E628B}.Debug_Cairo_CFLite|Win32.Build.0 = Debug_Cairo_CFLite|Win32 + {0A324352-B3B6-496C-9E5B-4C7E923E628B}.Debug|Win32.ActiveCfg = Debug|Win32 + {0A324352-B3B6-496C-9E5B-4C7E923E628B}.Debug|Win32.Build.0 = Debug|Win32 + {0A324352-B3B6-496C-9E5B-4C7E923E628B}.Release_Cairo_CFLite|Win32.ActiveCfg = Release_Cairo_CFLite|Win32 + {0A324352-B3B6-496C-9E5B-4C7E923E628B}.Release_Cairo_CFLite|Win32.Build.0 = Release_Cairo_CFLite|Win32 + {0A324352-B3B6-496C-9E5B-4C7E923E628B}.Release|Win32.ActiveCfg = Release|Win32 + {0A324352-B3B6-496C-9E5B-4C7E923E628B}.Release|Win32.Build.0 = Release|Win32 + {E498CA9D-3BD2-4D52-8E37-C8DC76526325}.Debug_Cairo_CFLite|Win32.ActiveCfg = Debug_Cairo_CFLite|Win32 + {E498CA9D-3BD2-4D52-8E37-C8DC76526325}.Debug|Win32.ActiveCfg = Debug|Win32 + {E498CA9D-3BD2-4D52-8E37-C8DC76526325}.Debug|Win32.Build.0 = Debug|Win32 + {E498CA9D-3BD2-4D52-8E37-C8DC76526325}.Release_Cairo_CFLite|Win32.ActiveCfg = Release_Cairo_CFLite|Win32 + {E498CA9D-3BD2-4D52-8E37-C8DC76526325}.Release|Win32.ActiveCfg = Release|Win32 + {E498CA9D-3BD2-4D52-8E37-C8DC76526325}.Release|Win32.Build.0 = Release|Win32 + {1AFD081F-1AC7-4A97-8EFA-6DF97761A3A2}.Debug_Cairo_CFLite|Win32.ActiveCfg = Debug_Cairo_CFLite|Win32 + {1AFD081F-1AC7-4A97-8EFA-6DF97761A3A2}.Debug_Cairo_CFLite|Win32.Build.0 = Debug_Cairo_CFLite|Win32 + {1AFD081F-1AC7-4A97-8EFA-6DF97761A3A2}.Debug|Win32.ActiveCfg = Debug|Win32 + {1AFD081F-1AC7-4A97-8EFA-6DF97761A3A2}.Debug|Win32.Build.0 = Debug|Win32 + {1AFD081F-1AC7-4A97-8EFA-6DF97761A3A2}.Release_Cairo_CFLite|Win32.ActiveCfg = Release_Cairo_CFLite|Win32 + {1AFD081F-1AC7-4A97-8EFA-6DF97761A3A2}.Release_Cairo_CFLite|Win32.Build.0 = Release_Cairo_CFLite|Win32 + {1AFD081F-1AC7-4A97-8EFA-6DF97761A3A2}.Release|Win32.ActiveCfg = Release|Win32 + {1AFD081F-1AC7-4A97-8EFA-6DF97761A3A2}.Release|Win32.Build.0 = Release|Win32 + {2E51ABE8-76CB-485B-A66C-46AEF4DF8ACD}.Debug_Cairo_CFLite|Win32.ActiveCfg = Debug_Cairo_CFLite|Win32 + {2E51ABE8-76CB-485B-A66C-46AEF4DF8ACD}.Debug_Cairo_CFLite|Win32.Build.0 = Debug_Cairo_CFLite|Win32 + {2E51ABE8-76CB-485B-A66C-46AEF4DF8ACD}.Debug|Win32.ActiveCfg = Debug|Win32 + {2E51ABE8-76CB-485B-A66C-46AEF4DF8ACD}.Debug|Win32.Build.0 = Debug|Win32 + {2E51ABE8-76CB-485B-A66C-46AEF4DF8ACD}.Release_Cairo_CFLite|Win32.ActiveCfg = Release_Cairo_CFLite|Win32 + {2E51ABE8-76CB-485B-A66C-46AEF4DF8ACD}.Release_Cairo_CFLite|Win32.Build.0 = Release_Cairo_CFLite|Win32 + {2E51ABE8-76CB-485B-A66C-46AEF4DF8ACD}.Release|Win32.ActiveCfg = Release|Win32 + {2E51ABE8-76CB-485B-A66C-46AEF4DF8ACD}.Release|Win32.Build.0 = Release|Win32 + {2EDAD637-CBA8-4E55-97ED-7D2BBC336FDB}.Debug_Cairo_CFLite|Win32.ActiveCfg = Debug_Cairo_CFLite|Win32 + {2EDAD637-CBA8-4E55-97ED-7D2BBC336FDB}.Debug_Cairo_CFLite|Win32.Build.0 = Debug_Cairo_CFLite|Win32 + {2EDAD637-CBA8-4E55-97ED-7D2BBC336FDB}.Debug|Win32.ActiveCfg = Debug|Win32 + {2EDAD637-CBA8-4E55-97ED-7D2BBC336FDB}.Debug|Win32.Build.0 = Debug|Win32 + {2EDAD637-CBA8-4E55-97ED-7D2BBC336FDB}.Release_Cairo_CFLite|Win32.ActiveCfg = Release_Cairo_CFLite|Win32 + {2EDAD637-CBA8-4E55-97ED-7D2BBC336FDB}.Release_Cairo_CFLite|Win32.Build.0 = Release_Cairo_CFLite|Win32 + {2EDAD637-CBA8-4E55-97ED-7D2BBC336FDB}.Release|Win32.ActiveCfg = Release|Win32 + {2EDAD637-CBA8-4E55-97ED-7D2BBC336FDB}.Release|Win32.Build.0 = Release|Win32 + {AAE88FEF-509E-4D49-870B-7357922C276F}.Debug_Cairo_CFLite|Win32.ActiveCfg = Debug_Cairo_CFLite|Win32 + {AAE88FEF-509E-4D49-870B-7357922C276F}.Debug_Cairo_CFLite|Win32.Build.0 = Debug_Cairo_CFLite|Win32 + {AAE88FEF-509E-4D49-870B-7357922C276F}.Debug|Win32.ActiveCfg = Debug|Win32 + {AAE88FEF-509E-4D49-870B-7357922C276F}.Debug|Win32.Build.0 = Debug|Win32 + {AAE88FEF-509E-4D49-870B-7357922C276F}.Release_Cairo_CFLite|Win32.ActiveCfg = Release_Cairo_CFLite|Win32 + {AAE88FEF-509E-4D49-870B-7357922C276F}.Release_Cairo_CFLite|Win32.Build.0 = Release_Cairo_CFLite|Win32 + {AAE88FEF-509E-4D49-870B-7357922C276F}.Release|Win32.ActiveCfg = Release|Win32 + {AAE88FEF-509E-4D49-870B-7357922C276F}.Release|Win32.Build.0 = Release|Win32 + {91762BE2-87EF-4F5A-A480-48B90EB3F406}.Debug_Cairo_CFLite|Win32.ActiveCfg = Debug_Cairo_CFLite|Win32 + {91762BE2-87EF-4F5A-A480-48B90EB3F406}.Debug_Cairo_CFLite|Win32.Build.0 = Debug_Cairo_CFLite|Win32 + {91762BE2-87EF-4F5A-A480-48B90EB3F406}.Debug|Win32.ActiveCfg = Debug|Win32 + {91762BE2-87EF-4F5A-A480-48B90EB3F406}.Debug|Win32.Build.0 = Debug|Win32 + {91762BE2-87EF-4F5A-A480-48B90EB3F406}.Release_Cairo_CFLite|Win32.ActiveCfg = Release_Cairo_CFLite|Win32 + {91762BE2-87EF-4F5A-A480-48B90EB3F406}.Release_Cairo_CFLite|Win32.Build.0 = Release_Cairo_CFLite|Win32 + {91762BE2-87EF-4F5A-A480-48B90EB3F406}.Release|Win32.ActiveCfg = Release|Win32 + {91762BE2-87EF-4F5A-A480-48B90EB3F406}.Release|Win32.Build.0 = Release|Win32 + {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Debug_Cairo_CFLite|Win32.ActiveCfg = Debug_Cairo_CFLite|Win32 + {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Debug_Cairo_CFLite|Win32.Build.0 = Debug_Cairo_CFLite|Win32 + {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Debug|Win32.ActiveCfg = Debug|Win32 + {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Debug|Win32.Build.0 = Debug|Win32 + {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Release_Cairo_CFLite|Win32.ActiveCfg = Release_Cairo_CFLite|Win32 + {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Release_Cairo_CFLite|Win32.Build.0 = Release_Cairo_CFLite|Win32 + {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Release|Win32.ActiveCfg = Release|Win32 + {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Release|Win32.Build.0 = Release|Win32 + {B8437A41-67BC-4769-9452-45203827F821}.Debug_Cairo_CFLite|Win32.ActiveCfg = Debug_Cairo_CFLite|Win32 + {B8437A41-67BC-4769-9452-45203827F821}.Debug_Cairo_CFLite|Win32.Build.0 = Debug_Cairo_CFLite|Win32 + {B8437A41-67BC-4769-9452-45203827F821}.Debug|Win32.ActiveCfg = Debug|Win32 + {B8437A41-67BC-4769-9452-45203827F821}.Debug|Win32.Build.0 = Debug|Win32 + {B8437A41-67BC-4769-9452-45203827F821}.Release_Cairo_CFLite|Win32.ActiveCfg = Release_Cairo_CFLite|Win32 + {B8437A41-67BC-4769-9452-45203827F821}.Release_Cairo_CFLite|Win32.Build.0 = Release_Cairo_CFLite|Win32 + {B8437A41-67BC-4769-9452-45203827F821}.Release|Win32.ActiveCfg = Release|Win32 + {B8437A41-67BC-4769-9452-45203827F821}.Release|Win32.Build.0 = Release|Win32 + {6567DFD4-D6DE-4CD5-825D-17E353D160E1}.Debug_Cairo_CFLite|Win32.ActiveCfg = Debug_Cairo_CFLite|Win32 + {6567DFD4-D6DE-4CD5-825D-17E353D160E1}.Debug_Cairo_CFLite|Win32.Build.0 = Debug_Cairo_CFLite|Win32 + {6567DFD4-D6DE-4CD5-825D-17E353D160E1}.Debug|Win32.ActiveCfg = Debug|Win32 + {6567DFD4-D6DE-4CD5-825D-17E353D160E1}.Debug|Win32.Build.0 = Debug|Win32 + {6567DFD4-D6DE-4CD5-825D-17E353D160E1}.Release_Cairo_CFLite|Win32.ActiveCfg = Release_Cairo_CFLite|Win32 + {6567DFD4-D6DE-4CD5-825D-17E353D160E1}.Release_Cairo_CFLite|Win32.Build.0 = Release_Cairo_CFLite|Win32 + {6567DFD4-D6DE-4CD5-825D-17E353D160E1}.Release|Win32.ActiveCfg = Release|Win32 + {6567DFD4-D6DE-4CD5-825D-17E353D160E1}.Release|Win32.Build.0 = Release|Win32 + {59CC0547-70AC-499C-9B19-EC01C6F61137}.Debug_Cairo_CFLite|Win32.ActiveCfg = Debug_Cairo_CFLite|Win32 + {59CC0547-70AC-499C-9B19-EC01C6F61137}.Debug_Cairo_CFLite|Win32.Build.0 = Debug_Cairo_CFLite|Win32 + {59CC0547-70AC-499C-9B19-EC01C6F61137}.Debug|Win32.ActiveCfg = Debug|Win32 + {59CC0547-70AC-499C-9B19-EC01C6F61137}.Debug|Win32.Build.0 = Debug|Win32 + {59CC0547-70AC-499C-9B19-EC01C6F61137}.Release_Cairo_CFLite|Win32.ActiveCfg = Release_Cairo_CFLite|Win32 + {59CC0547-70AC-499C-9B19-EC01C6F61137}.Release_Cairo_CFLite|Win32.Build.0 = Release_Cairo_CFLite|Win32 + {59CC0547-70AC-499C-9B19-EC01C6F61137}.Release|Win32.ActiveCfg = Release|Win32 + {59CC0547-70AC-499C-9B19-EC01C6F61137}.Release|Win32.Build.0 = Release|Win32 + {DA31DA52-6675-48D4-89E0-333A7144397C}.Debug_Cairo_CFLite|Win32.ActiveCfg = Debug_Cairo_CFLite|Win32 + {DA31DA52-6675-48D4-89E0-333A7144397C}.Debug_Cairo_CFLite|Win32.Build.0 = Debug_Cairo_CFLite|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_Cairo_CFLite|Win32.ActiveCfg = Release_Cairo_CFLite|Win32 + {DA31DA52-6675-48D4-89E0-333A7144397C}.Release_Cairo_CFLite|Win32.Build.0 = Release_Cairo_CFLite|Win32 + {DA31DA52-6675-48D4-89E0-333A7144397C}.Release|Win32.ActiveCfg = Release|Win32 + {DA31DA52-6675-48D4-89E0-333A7144397C}.Release|Win32.Build.0 = Release|Win32 + {44B9C152-1870-4035-B94D-7B3285AA0C12}.Debug_Cairo_CFLite|Win32.ActiveCfg = Debug_Cairo_CFLite|Win32 + {44B9C152-1870-4035-B94D-7B3285AA0C12}.Debug_Cairo_CFLite|Win32.Build.0 = Debug_Cairo_CFLite|Win32 + {44B9C152-1870-4035-B94D-7B3285AA0C12}.Debug|Win32.ActiveCfg = Debug|Win32 + {44B9C152-1870-4035-B94D-7B3285AA0C12}.Debug|Win32.Build.0 = Debug|Win32 + {44B9C152-1870-4035-B94D-7B3285AA0C12}.Release_Cairo_CFLite|Win32.ActiveCfg = Release_Cairo_CFLite|Win32 + {44B9C152-1870-4035-B94D-7B3285AA0C12}.Release_Cairo_CFLite|Win32.Build.0 = Release_Cairo_CFLite|Win32 + {44B9C152-1870-4035-B94D-7B3285AA0C12}.Release|Win32.ActiveCfg = Release|Win32 + {44B9C152-1870-4035-B94D-7B3285AA0C12}.Release|Win32.Build.0 = Release|Win32 + {C0737398-3565-439E-A2B8-AB2BE4D5430C}.Debug_Cairo_CFLite|Win32.ActiveCfg = Debug_Cairo_CFLite|Win32 + {C0737398-3565-439E-A2B8-AB2BE4D5430C}.Debug_Cairo_CFLite|Win32.Build.0 = Debug_Cairo_CFLite|Win32 + {C0737398-3565-439E-A2B8-AB2BE4D5430C}.Debug|Win32.ActiveCfg = Debug|Win32 + {C0737398-3565-439E-A2B8-AB2BE4D5430C}.Debug|Win32.Build.0 = Debug|Win32 + {C0737398-3565-439E-A2B8-AB2BE4D5430C}.Release_Cairo_CFLite|Win32.ActiveCfg = Release_Cairo_CFLite|Win32 + {C0737398-3565-439E-A2B8-AB2BE4D5430C}.Release_Cairo_CFLite|Win32.Build.0 = Release_Cairo_CFLite|Win32 + {C0737398-3565-439E-A2B8-AB2BE4D5430C}.Release|Win32.ActiveCfg = Release|Win32 + {C0737398-3565-439E-A2B8-AB2BE4D5430C}.Release|Win32.Build.0 = Release|Win32 + {626089A3-25D3-4883-A96C-B8C66E036397}.Debug_Cairo_CFLite|Win32.ActiveCfg = Debug_Cairo_CFLite|Win32 + {626089A3-25D3-4883-A96C-B8C66E036397}.Debug_Cairo_CFLite|Win32.Build.0 = Debug_Cairo_CFLite|Win32 + {626089A3-25D3-4883-A96C-B8C66E036397}.Debug|Win32.ActiveCfg = Debug|Win32 + {626089A3-25D3-4883-A96C-B8C66E036397}.Debug|Win32.Build.0 = Debug|Win32 + {626089A3-25D3-4883-A96C-B8C66E036397}.Release_Cairo_CFLite|Win32.ActiveCfg = Release_Cairo_CFLite|Win32 + {626089A3-25D3-4883-A96C-B8C66E036397}.Release_Cairo_CFLite|Win32.Build.0 = Release_Cairo_CFLite|Win32 + {626089A3-25D3-4883-A96C-B8C66E036397}.Release|Win32.ActiveCfg = Release|Win32 + {626089A3-25D3-4883-A96C-B8C66E036397}.Release|Win32.Build.0 = Release|Win32 + {D09806DB-E58B-4646-8C9B-61101906C1E2}.Debug_Cairo_CFLite|Win32.ActiveCfg = Debug_Cairo_CFLite|Win32 + {D09806DB-E58B-4646-8C9B-61101906C1E2}.Debug_Cairo_CFLite|Win32.Build.0 = Debug_Cairo_CFLite|Win32 + {D09806DB-E58B-4646-8C9B-61101906C1E2}.Debug|Win32.ActiveCfg = Debug|Win32 + {D09806DB-E58B-4646-8C9B-61101906C1E2}.Debug|Win32.Build.0 = Debug|Win32 + {D09806DB-E58B-4646-8C9B-61101906C1E2}.Release_Cairo_CFLite|Win32.ActiveCfg = Release_Cairo_CFLite|Win32 + {D09806DB-E58B-4646-8C9B-61101906C1E2}.Release_Cairo_CFLite|Win32.Build.0 = Release_Cairo_CFLite|Win32 + {D09806DB-E58B-4646-8C9B-61101906C1E2}.Release|Win32.ActiveCfg = Release|Win32 + {D09806DB-E58B-4646-8C9B-61101906C1E2}.Release|Win32.Build.0 = Release|Win32 + {114FCA11-216B-4C8C-957E-30A75AE80443}.Debug_Cairo_CFLite|Win32.ActiveCfg = Debug_Cairo_CFLite|Win32 + {114FCA11-216B-4C8C-957E-30A75AE80443}.Debug_Cairo_CFLite|Win32.Build.0 = Debug_Cairo_CFLite|Win32 + {114FCA11-216B-4C8C-957E-30A75AE80443}.Debug|Win32.ActiveCfg = Debug|Win32 + {114FCA11-216B-4C8C-957E-30A75AE80443}.Debug|Win32.Build.0 = Debug|Win32 + {114FCA11-216B-4C8C-957E-30A75AE80443}.Release_Cairo_CFLite|Win32.ActiveCfg = Release_Cairo_CFLite|Win32 + {114FCA11-216B-4C8C-957E-30A75AE80443}.Release_Cairo_CFLite|Win32.Build.0 = Release_Cairo_CFLite|Win32 + {114FCA11-216B-4C8C-957E-30A75AE80443}.Release|Win32.ActiveCfg = Release|Win32 + {114FCA11-216B-4C8C-957E-30A75AE80443}.Release|Win32.Build.0 = Release|Win32 + {CBC3391C-F060-4BF5-A66E-81404168816B}.Debug_Cairo_CFLite|Win32.ActiveCfg = Debug_Cairo_CFLite|Win32 + {CBC3391C-F060-4BF5-A66E-81404168816B}.Debug_Cairo_CFLite|Win32.Build.0 = Debug_Cairo_CFLite|Win32 + {CBC3391C-F060-4BF5-A66E-81404168816B}.Debug|Win32.ActiveCfg = Debug|Win32 + {CBC3391C-F060-4BF5-A66E-81404168816B}.Debug|Win32.Build.0 = Debug|Win32 + {CBC3391C-F060-4BF5-A66E-81404168816B}.Release_Cairo_CFLite|Win32.ActiveCfg = Release_Cairo_CFLite|Win32 + {CBC3391C-F060-4BF5-A66E-81404168816B}.Release_Cairo_CFLite|Win32.Build.0 = Release_Cairo_CFLite|Win32 + {CBC3391C-F060-4BF5-A66E-81404168816B}.Release|Win32.ActiveCfg = Release|Win32 + {CBC3391C-F060-4BF5-A66E-81404168816B}.Release|Win32.Build.0 = Release|Win32 + {4343BC0B-A2E0-4B48-8277-F33CFBFA83CD}.Debug_Cairo_CFLite|Win32.ActiveCfg = Debug_Cairo_CFLite|Win32 + {4343BC0B-A2E0-4B48-8277-F33CFBFA83CD}.Debug_Cairo_CFLite|Win32.Build.0 = Debug_Cairo_CFLite|Win32 + {4343BC0B-A2E0-4B48-8277-F33CFBFA83CD}.Debug|Win32.ActiveCfg = Debug|Win32 + {4343BC0B-A2E0-4B48-8277-F33CFBFA83CD}.Debug|Win32.Build.0 = Debug|Win32 + {4343BC0B-A2E0-4B48-8277-F33CFBFA83CD}.Release_Cairo_CFLite|Win32.ActiveCfg = Release_Cairo_CFLite|Win32 + {4343BC0B-A2E0-4B48-8277-F33CFBFA83CD}.Release_Cairo_CFLite|Win32.Build.0 = Release_Cairo_CFLite|Win32 + {4343BC0B-A2E0-4B48-8277-F33CFBFA83CD}.Release|Win32.ActiveCfg = Release|Win32 + {4343BC0B-A2E0-4B48-8277-F33CFBFA83CD}.Release|Win32.Build.0 = Release|Win32 + {3B99669B-1817-443B-BCBE-835580146668}.Debug_Cairo_CFLite|Win32.ActiveCfg = Debug_Cairo_CFLite|Win32 + {3B99669B-1817-443B-BCBE-835580146668}.Debug_Cairo_CFLite|Win32.Build.0 = Debug_Cairo_CFLite|Win32 + {3B99669B-1817-443B-BCBE-835580146668}.Debug|Win32.ActiveCfg = Debug|Win32 + {3B99669B-1817-443B-BCBE-835580146668}.Debug|Win32.Build.0 = Debug|Win32 + {3B99669B-1817-443B-BCBE-835580146668}.Release_Cairo_CFLite|Win32.ActiveCfg = Release_Cairo_CFLite|Win32 + {3B99669B-1817-443B-BCBE-835580146668}.Release_Cairo_CFLite|Win32.Build.0 = Release_Cairo_CFLite|Win32 + {3B99669B-1817-443B-BCBE-835580146668}.Release|Win32.ActiveCfg = Release|Win32 + {3B99669B-1817-443B-BCBE-835580146668}.Release|Win32.Build.0 = Release|Win32 + {1480CF5F-4160-47B5-A0E6-96AEC8258FB5}.Debug_Cairo_CFLite|Win32.ActiveCfg = Debug_Cairo_CFLite|Win32 + {1480CF5F-4160-47B5-A0E6-96AEC8258FB5}.Debug_Cairo_CFLite|Win32.Build.0 = Debug_Cairo_CFLite|Win32 + {1480CF5F-4160-47B5-A0E6-96AEC8258FB5}.Debug|Win32.ActiveCfg = Debug|Win32 + {1480CF5F-4160-47B5-A0E6-96AEC8258FB5}.Debug|Win32.Build.0 = Debug|Win32 + {1480CF5F-4160-47B5-A0E6-96AEC8258FB5}.Release_Cairo_CFLite|Win32.ActiveCfg = Release_Cairo_CFLite|Win32 + {1480CF5F-4160-47B5-A0E6-96AEC8258FB5}.Release_Cairo_CFLite|Win32.Build.0 = Release_Cairo_CFLite|Win32 + {1480CF5F-4160-47B5-A0E6-96AEC8258FB5}.Release|Win32.ActiveCfg = Release|Win32 + {1480CF5F-4160-47B5-A0E6-96AEC8258FB5}.Release|Win32.Build.0 = Release|Win32 + {3E48AB23-D249-488F-A1C4-43CDF52FBD28}.Debug_Cairo_CFLite|Win32.ActiveCfg = Debug_Cairo_CFLite|Win32 + {3E48AB23-D249-488F-A1C4-43CDF52FBD28}.Debug_Cairo_CFLite|Win32.Build.0 = Debug_Cairo_CFLite|Win32 + {3E48AB23-D249-488F-A1C4-43CDF52FBD28}.Debug|Win32.ActiveCfg = Debug|Win32 + {3E48AB23-D249-488F-A1C4-43CDF52FBD28}.Debug|Win32.Build.0 = Debug|Win32 + {3E48AB23-D249-488F-A1C4-43CDF52FBD28}.Release_Cairo_CFLite|Win32.ActiveCfg = Release_Cairo_CFLite|Win32 + {3E48AB23-D249-488F-A1C4-43CDF52FBD28}.Release_Cairo_CFLite|Win32.Build.0 = Release_Cairo_CFLite|Win32 + {3E48AB23-D249-488F-A1C4-43CDF52FBD28}.Release|Win32.ActiveCfg = Release|Win32 + {3E48AB23-D249-488F-A1C4-43CDF52FBD28}.Release|Win32.Build.0 = Release|Win32 + {45C45411-7F0E-404D-919A-4EE9BB60BE86}.Debug_Cairo_CFLite|Win32.ActiveCfg = Debug_Cairo_CFLite|Win32 + {45C45411-7F0E-404D-919A-4EE9BB60BE86}.Debug_Cairo_CFLite|Win32.Build.0 = Debug_Cairo_CFLite|Win32 + {45C45411-7F0E-404D-919A-4EE9BB60BE86}.Debug|Win32.ActiveCfg = Debug|Win32 + {45C45411-7F0E-404D-919A-4EE9BB60BE86}.Debug|Win32.Build.0 = Debug|Win32 + {45C45411-7F0E-404D-919A-4EE9BB60BE86}.Release_Cairo_CFLite|Win32.ActiveCfg = Release_Cairo_CFLite|Win32 + {45C45411-7F0E-404D-919A-4EE9BB60BE86}.Release_Cairo_CFLite|Win32.Build.0 = Release_Cairo_CFLite|Win32 + {45C45411-7F0E-404D-919A-4EE9BB60BE86}.Release|Win32.ActiveCfg = Release|Win32 + {45C45411-7F0E-404D-919A-4EE9BB60BE86}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {AA8A5A85-592B-4357-BC60-E0E91E026AF6} = {557FA164-0E39-4DEC-B66C-8795C8E52399} + {C59E5129-B453-49B7-A52B-1E104715F76E} = {557FA164-0E39-4DEC-B66C-8795C8E52399} + {011D10F1-B656-4A1B-A0C3-3842F02122C5} = {557FA164-0E39-4DEC-B66C-8795C8E52399} + {4FF5BA11-59EC-4C24-8F52-F235C2E7D43A} = {557FA164-0E39-4DEC-B66C-8795C8E52399} + {1AFD081F-1AC7-4A97-8EFA-6DF97761A3A2} = {557FA164-0E39-4DEC-B66C-8795C8E52399} + {1C16337B-ACF3-4D03-AA90-851C5B5EADA6} = {63FB6F8A-C601-43E3-BD16-A00A465C2CB6} + {0A324352-B3B6-496C-9E5B-4C7E923E628B} = {63FB6F8A-C601-43E3-BD16-A00A465C2CB6} + {E498CA9D-3BD2-4D52-8E37-C8DC76526325} = {63FB6F8A-C601-43E3-BD16-A00A465C2CB6} + {2E51ABE8-76CB-485B-A66C-46AEF4DF8ACD} = {9AB9C96C-9039-4FA9-8F83-BBFC8F8B2182} + {2EDAD637-CBA8-4E55-97ED-7D2BBC336FDB} = {9AB9C96C-9039-4FA9-8F83-BBFC8F8B2182} + {AAE88FEF-509E-4D49-870B-7357922C276F} = {9AB9C96C-9039-4FA9-8F83-BBFC8F8B2182} + {91762BE2-87EF-4F5A-A480-48B90EB3F406} = {1D359ACC-BE10-45D7-938B-BC7E4B7AA6CA} + {0662A8A9-82A3-4638-97D8-EC425D8D87C9} = {1D359ACC-BE10-45D7-938B-BC7E4B7AA6CA} + {B8437A41-67BC-4769-9452-45203827F821} = {1D359ACC-BE10-45D7-938B-BC7E4B7AA6CA} + {6567DFD4-D6DE-4CD5-825D-17E353D160E1} = {62DCDFE4-EAD2-48E1-A2BD-BD54AD3C7459} + {59CC0547-70AC-499C-9B19-EC01C6F61137} = {62DCDFE4-EAD2-48E1-A2BD-BD54AD3C7459} + {DA31DA52-6675-48D4-89E0-333A7144397C} = {62DCDFE4-EAD2-48E1-A2BD-BD54AD3C7459} + {44B9C152-1870-4035-B94D-7B3285AA0C12} = {62DCDFE4-EAD2-48E1-A2BD-BD54AD3C7459} + {C0737398-3565-439E-A2B8-AB2BE4D5430C} = {62DCDFE4-EAD2-48E1-A2BD-BD54AD3C7459} + {626089A3-25D3-4883-A96C-B8C66E036397} = {62DCDFE4-EAD2-48E1-A2BD-BD54AD3C7459} + {D09806DB-E58B-4646-8C9B-61101906C1E2} = {62DCDFE4-EAD2-48E1-A2BD-BD54AD3C7459} + {114FCA11-216B-4C8C-957E-30A75AE80443} = {62DCDFE4-EAD2-48E1-A2BD-BD54AD3C7459} + {CBC3391C-F060-4BF5-A66E-81404168816B} = {62DCDFE4-EAD2-48E1-A2BD-BD54AD3C7459} + {4343BC0B-A2E0-4B48-8277-F33CFBFA83CD} = {62DCDFE4-EAD2-48E1-A2BD-BD54AD3C7459} + {3B99669B-1817-443B-BCBE-835580146668} = {62DCDFE4-EAD2-48E1-A2BD-BD54AD3C7459} + {1480CF5F-4160-47B5-A0E6-96AEC8258FB5} = {62DCDFE4-EAD2-48E1-A2BD-BD54AD3C7459} + {3E48AB23-D249-488F-A1C4-43CDF52FBD28} = {62DCDFE4-EAD2-48E1-A2BD-BD54AD3C7459} + {45C45411-7F0E-404D-919A-4EE9BB60BE86} = {62DCDFE4-EAD2-48E1-A2BD-BD54AD3C7459} + EndGlobalSection +EndGlobal diff --git a/WebKit/win/WebKit.vcproj/WebKit.submit.sln b/WebKit/win/WebKit.vcproj/WebKit.submit.sln index 75d79de..c4830fc 100644 --- a/WebKit/win/WebKit.vcproj/WebKit.submit.sln +++ b/WebKit/win/WebKit.vcproj/WebKit.submit.sln @@ -1,60 +1,53 @@ - -Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual Studio 2005 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WebKitLib", "WebKit.vcproj", "{0662A8A9-82A3-4638-97D8-EC425D8D87C9}" - ProjectSection(ProjectDependencies) = postProject - {91762BE2-87EF-4F5A-A480-48B90EB3F406} = {91762BE2-87EF-4F5A-A480-48B90EB3F406} - {B8437A41-67BC-4769-9452-45203827F821} = {B8437A41-67BC-4769-9452-45203827F821} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WebKitGUID", "WebKitGUID.vcproj", "{B8437A41-67BC-4769-9452-45203827F821}" - ProjectSection(ProjectDependencies) = postProject - {91762BE2-87EF-4F5A-A480-48B90EB3F406} = {91762BE2-87EF-4F5A-A480-48B90EB3F406} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Interfaces", "Interfaces.vcproj", "{91762BE2-87EF-4F5A-A480-48B90EB3F406}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug_All|Win32 = Debug_All|Win32 - Debug_Internal|Win32 = Debug_Internal|Win32 - Debug|Win32 = Debug|Win32 - Release_LTCG|Win32 = Release_LTCG|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Debug_All|Win32.ActiveCfg = Debug_All|Win32 - {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Debug_All|Win32.Build.0 = Debug_All|Win32 - {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Debug_Internal|Win32.ActiveCfg = Debug_Internal|Win32 - {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Debug_Internal|Win32.Build.0 = Debug_Internal|Win32 - {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Debug|Win32.ActiveCfg = Debug|Win32 - {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Debug|Win32.Build.0 = Debug|Win32 - {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Release_LTCG|Win32.ActiveCfg = Release_LTCG|Win32 - {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Release_LTCG|Win32.Build.0 = Release_LTCG|Win32 - {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Release|Win32.ActiveCfg = Release|Win32 - {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Release|Win32.Build.0 = Release|Win32 - {B8437A41-67BC-4769-9452-45203827F821}.Debug_All|Win32.ActiveCfg = Debug_All|Win32 - {B8437A41-67BC-4769-9452-45203827F821}.Debug_All|Win32.Build.0 = Debug_All|Win32 - {B8437A41-67BC-4769-9452-45203827F821}.Debug_Internal|Win32.ActiveCfg = Debug_Internal|Win32 - {B8437A41-67BC-4769-9452-45203827F821}.Debug_Internal|Win32.Build.0 = Debug_Internal|Win32 - {B8437A41-67BC-4769-9452-45203827F821}.Debug|Win32.ActiveCfg = Debug|Win32 - {B8437A41-67BC-4769-9452-45203827F821}.Debug|Win32.Build.0 = Debug|Win32 - {B8437A41-67BC-4769-9452-45203827F821}.Release_LTCG|Win32.ActiveCfg = Release_LTCG|Win32 - {B8437A41-67BC-4769-9452-45203827F821}.Release_LTCG|Win32.Build.0 = Release_LTCG|Win32 - {B8437A41-67BC-4769-9452-45203827F821}.Release|Win32.ActiveCfg = Release|Win32 - {B8437A41-67BC-4769-9452-45203827F821}.Release|Win32.Build.0 = Release|Win32 - {91762BE2-87EF-4F5A-A480-48B90EB3F406}.Debug_All|Win32.ActiveCfg = Debug|Win32 - {91762BE2-87EF-4F5A-A480-48B90EB3F406}.Debug_All|Win32.Build.0 = Debug|Win32 - {91762BE2-87EF-4F5A-A480-48B90EB3F406}.Debug_Internal|Win32.ActiveCfg = Debug|Win32 - {91762BE2-87EF-4F5A-A480-48B90EB3F406}.Debug_Internal|Win32.Build.0 = Debug|Win32 - {91762BE2-87EF-4F5A-A480-48B90EB3F406}.Debug|Win32.ActiveCfg = Debug|Win32 - {91762BE2-87EF-4F5A-A480-48B90EB3F406}.Debug|Win32.Build.0 = Debug|Win32 - {91762BE2-87EF-4F5A-A480-48B90EB3F406}.Release_LTCG|Win32.ActiveCfg = Release_LTCG|Win32 - {91762BE2-87EF-4F5A-A480-48B90EB3F406}.Release_LTCG|Win32.Build.0 = Release_LTCG|Win32 - {91762BE2-87EF-4F5A-A480-48B90EB3F406}.Release|Win32.ActiveCfg = Release|Win32 - {91762BE2-87EF-4F5A-A480-48B90EB3F406}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual Studio 2005 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WebKitLib", "WebKit.vcproj", "{0662A8A9-82A3-4638-97D8-EC425D8D87C9}" + ProjectSection(ProjectDependencies) = postProject + {91762BE2-87EF-4F5A-A480-48B90EB3F406} = {91762BE2-87EF-4F5A-A480-48B90EB3F406} + {B8437A41-67BC-4769-9452-45203827F821} = {B8437A41-67BC-4769-9452-45203827F821} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WebKitGUID", "WebKitGUID.vcproj", "{B8437A41-67BC-4769-9452-45203827F821}" + ProjectSection(ProjectDependencies) = postProject + {91762BE2-87EF-4F5A-A480-48B90EB3F406} = {91762BE2-87EF-4F5A-A480-48B90EB3F406} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Interfaces", "Interfaces.vcproj", "{91762BE2-87EF-4F5A-A480-48B90EB3F406}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug_All|Win32 = Debug_All|Win32 + Debug|Win32 = Debug|Win32 + Release_LTCG|Win32 = Release_LTCG|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Debug_All|Win32.ActiveCfg = Debug_All|Win32 + {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Debug_All|Win32.Build.0 = Debug_All|Win32 + {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Debug|Win32.ActiveCfg = Debug|Win32 + {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Debug|Win32.Build.0 = Debug|Win32 + {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Release_LTCG|Win32.ActiveCfg = Release_LTCG|Win32 + {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Release_LTCG|Win32.Build.0 = Release_LTCG|Win32 + {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Release|Win32.ActiveCfg = Release|Win32 + {0662A8A9-82A3-4638-97D8-EC425D8D87C9}.Release|Win32.Build.0 = Release|Win32 + {B8437A41-67BC-4769-9452-45203827F821}.Debug_All|Win32.ActiveCfg = Debug_All|Win32 + {B8437A41-67BC-4769-9452-45203827F821}.Debug_All|Win32.Build.0 = Debug_All|Win32 + {B8437A41-67BC-4769-9452-45203827F821}.Debug|Win32.ActiveCfg = Debug|Win32 + {B8437A41-67BC-4769-9452-45203827F821}.Debug|Win32.Build.0 = Debug|Win32 + {B8437A41-67BC-4769-9452-45203827F821}.Release_LTCG|Win32.ActiveCfg = Release_LTCG|Win32 + {B8437A41-67BC-4769-9452-45203827F821}.Release_LTCG|Win32.Build.0 = Release_LTCG|Win32 + {B8437A41-67BC-4769-9452-45203827F821}.Release|Win32.ActiveCfg = Release|Win32 + {B8437A41-67BC-4769-9452-45203827F821}.Release|Win32.Build.0 = Release|Win32 + {91762BE2-87EF-4F5A-A480-48B90EB3F406}.Debug_All|Win32.ActiveCfg = Debug|Win32 + {91762BE2-87EF-4F5A-A480-48B90EB3F406}.Debug_All|Win32.Build.0 = Debug|Win32 + {91762BE2-87EF-4F5A-A480-48B90EB3F406}.Debug|Win32.ActiveCfg = Debug|Win32 + {91762BE2-87EF-4F5A-A480-48B90EB3F406}.Debug|Win32.Build.0 = Debug|Win32 + {91762BE2-87EF-4F5A-A480-48B90EB3F406}.Release_LTCG|Win32.ActiveCfg = Release_LTCG|Win32 + {91762BE2-87EF-4F5A-A480-48B90EB3F406}.Release_LTCG|Win32.Build.0 = Release_LTCG|Win32 + {91762BE2-87EF-4F5A-A480-48B90EB3F406}.Release|Win32.ActiveCfg = Release|Win32 + {91762BE2-87EF-4F5A-A480-48B90EB3F406}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/WebKit/win/WebKit.vcproj/WebKit.vcproj b/WebKit/win/WebKit.vcproj/WebKit.vcproj index c5392ee..bf13191 100644 --- a/WebKit/win/WebKit.vcproj/WebKit.vcproj +++ b/WebKit/win/WebKit.vcproj/WebKit.vcproj @@ -1,1405 +1,1319 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WebKit/win/WebKit.vcproj/WebKitGUID.vcproj b/WebKit/win/WebKit.vcproj/WebKitGUID.vcproj index 0064840..ce0973f 100644 --- a/WebKit/win/WebKit.vcproj/WebKitGUID.vcproj +++ b/WebKit/win/WebKit.vcproj/WebKitGUID.vcproj @@ -1,295 +1,348 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WebKit/win/WebKit.vcproj/WebKitGUIDCommon.vsprops b/WebKit/win/WebKit.vcproj/WebKitGUIDCommon.vsprops index 422c8bd..677847d 100644 --- a/WebKit/win/WebKit.vcproj/WebKitGUIDCommon.vsprops +++ b/WebKit/win/WebKit.vcproj/WebKitGUIDCommon.vsprops @@ -1,27 +1,19 @@ - - - - - - - - + + + + + + diff --git a/WebKit/win/WebKit.vcproj/WebKitGUIDPostBuild.cmd b/WebKit/win/WebKit.vcproj/WebKitGUIDPostBuild.cmd new file mode 100644 index 0000000..f011495 --- /dev/null +++ b/WebKit/win/WebKit.vcproj/WebKitGUIDPostBuild.cmd @@ -0,0 +1 @@ +if exist "%WEBKITOUTPUTDIR%\buildfailed" del "%WEBKITOUTPUTDIR%\buildfailed" diff --git a/WebKit/win/WebKit.vcproj/WebKitGUIDPreBuild.cmd b/WebKit/win/WebKit.vcproj/WebKitGUIDPreBuild.cmd new file mode 100644 index 0000000..3a84c26 --- /dev/null +++ b/WebKit/win/WebKit.vcproj/WebKitGUIDPreBuild.cmd @@ -0,0 +1,6 @@ +%SystemDrive%\cygwin\bin\which.exe bash +if errorlevel 1 set PATH=%SystemDrive%\cygwin\bin;%PATH% +cmd /c +if exist "%WEBKITOUTPUTDIR%\buildfailed" grep XX%PROJECTNAME%XX "%WEBKITOUTPUTDIR%\buildfailed" +if errorlevel 1 exit 1 +echo XX%PROJECTNAME%XX > "%WEBKITOUTPUTDIR%\buildfailed" diff --git a/WebKit/win/WebKit.vcproj/WebKitLibCommon.vsprops b/WebKit/win/WebKit.vcproj/WebKitLibCommon.vsprops index f2fb761..7caff4d 100644 --- a/WebKit/win/WebKit.vcproj/WebKitLibCommon.vsprops +++ b/WebKit/win/WebKit.vcproj/WebKitLibCommon.vsprops @@ -1,30 +1,22 @@ - - - - - - - + + + + + diff --git a/WebKit/win/WebKit.vcproj/WebKitLibPostBuild.cmd b/WebKit/win/WebKit.vcproj/WebKitLibPostBuild.cmd new file mode 100644 index 0000000..99f84fe --- /dev/null +++ b/WebKit/win/WebKit.vcproj/WebKitLibPostBuild.cmd @@ -0,0 +1,19 @@ +mkdir 2>NUL "%WEBKITOUTPUTDIR%\include\WebKit" + +xcopy /y /d "%PROJECTDIR%\..\WebLocalizableStrings.h" "%WEBKITOUTPUTDIR%\include\WebKit" +xcopy /y /d "%PROJECTDIR%\..\WebKitGraphics.h" "%WEBKITOUTPUTDIR%\include\WebKit" +xcopy /y /d "%PROJECTDIR%\..\WebKitCOMAPI.h" "%WEBKITOUTPUTDIR%\include\WebKit" +xcopy /y /d "%PROJECTDIR%\..\WebPreferenceKeysPrivate.h" "%WEBKITOUTPUTDIR%\include\WebKit" + +xcopy /y /d "%WEBKITOUTPUTDIR%\include\WebCore\npapi.h" "%WEBKITOUTPUTDIR%\include\WebKit" +xcopy /y /d "%WEBKITOUTPUTDIR%\include\WebCore\npfunctions.h" "%WEBKITOUTPUTDIR%\include\WebKit" +xcopy /y /d "%WEBKITOUTPUTDIR%\include\WebCore\npruntime.h" "%WEBKITOUTPUTDIR%\include\WebKit" +xcopy /y /d "%WEBKITOUTPUTDIR%\include\WebCore\npruntime_internal.h" "%WEBKITOUTPUTDIR%\include\WebKit" +xcopy /y /d "%WEBKITOUTPUTDIR%\include\WebCore\nptypes.h" "%WEBKITOUTPUTDIR%\include\WebKit" + +mkdir 2>NUL "%OUTDIR%\..\bin\WebKit.resources" +xcopy /y /d "%PROJECTDIR%..\WebKit.resources\*" "%OUTDIR%\..\bin\WebKit.resources" +mkdir 2>NUL "%OUTDIR%\..\bin\WebKit.resources\en.lproj" +xcopy /y /d "%PROJECTDIR%..\..\English.lproj\Localizable.strings" "%OUTDIR%\..\bin\WebKit.resources\en.lproj\" + +if exist "%WEBKITOUTPUTDIR%\buildfailed" del "%WEBKITOUTPUTDIR%\buildfailed" diff --git a/WebKit/win/WebKit.vcproj/WebKitLibPreBuild.cmd b/WebKit/win/WebKit.vcproj/WebKitLibPreBuild.cmd new file mode 100644 index 0000000..312033d --- /dev/null +++ b/WebKit/win/WebKit.vcproj/WebKitLibPreBuild.cmd @@ -0,0 +1,16 @@ +%SystemDrive%\cygwin\bin\which.exe bash +if errorlevel 1 set PATH=%SystemDrive%\cygwin\bin;%PATH% +cmd /c +if exist "%WEBKITOUTPUTDIR%\buildfailed" grep XX%PROJECTNAME%XX "%WEBKITOUTPUTDIR%\buildfailed" +if errorlevel 1 exit 1 +echo XX%PROJECTNAME%XX > "%WEBKITOUTPUTDIR%\buildfailed" + +touch "%WEBKITOUTPUTDIR%\tmp.cpp" +cl /analyze /nologo /c "%WEBKITOUTPUTDIR%\tmp.cpp" /Fo"%INTDIR%\tmp.obj" 2>&1 | findstr D9040 +if ERRORLEVEL 1 (set EnablePREfast="true") else (set EnablePREfast="false") +if ERRORLEVEL 1 (set AnalyzeWithLargeStack="/analyze:65536") else (set AnalyzeWithLargeStack="") + +mkdir 2>NUL "%WEBKITOUTPUTDIR%\include\JavaScriptCore" +xcopy /y /d "%WEBKITLIBRARIESDIR%\include\JavaScriptCore\*" "%WEBKITOUTPUTDIR%\include\JavaScriptCore" + +bash "%WEBKITLIBRARIESDIR%\tools\scripts\auto-version.sh" "%INTDIR%" diff --git a/WebKit/win/WebKitPrefix.h b/WebKit/win/WebKitPrefix.h index 3086f0b..2ff6baf 100644 --- a/WebKit/win/WebKitPrefix.h +++ b/WebKit/win/WebKitPrefix.h @@ -49,4 +49,3 @@ #include #include - diff --git a/WebKit/wince/ChangeLog b/WebKit/wince/ChangeLog index 0b99bf7..d32059d 100644 --- a/WebKit/wince/ChangeLog +++ b/WebKit/wince/ChangeLog @@ -1,3 +1,27 @@ +2010-12-01 Jia Pu + + Reviewed by Darin Adler. + + Support multiple correction candidates panel for misspelled word on Mac OS X. + https://bugs.webkit.org/show_bug.cgi?id=50137 + + + Adopted new function signature defined in base class. + + * WebCoreSupport/EditorClientWinCE.cpp: + (WebKit::EditorClientWinCE::getGuessesForWord): + * WebCoreSupport/EditorClientWinCE.h: + +2010-11-30 Patrick Gansterer + + Reviewed by Adam Roben. + + [WINCE] Add WebView + https://bugs.webkit.org/show_bug.cgi?id=50216 + + * WebView.cpp: Added. + * WebView.h: Added. + 2010-11-13 Patrick Gansterer Unreviewed, build fix after r71541. diff --git a/WebKit/wince/WebCoreSupport/EditorClientWinCE.cpp b/WebKit/wince/WebCoreSupport/EditorClientWinCE.cpp index 7dee562..c4555ed 100644 --- a/WebKit/wince/WebCoreSupport/EditorClientWinCE.cpp +++ b/WebKit/wince/WebCoreSupport/EditorClientWinCE.cpp @@ -487,7 +487,7 @@ bool EditorClientWinCE::spellingUIIsShowing() return false; } -void EditorClientWinCE::getGuessesForWord(const String& word, WTF::Vector& guesses) +void EditorClientWinCE::getGuessesForWord(const String& word, const String& context, WTF::Vector& guesses) { notImplemented(); } diff --git a/WebKit/wince/WebCoreSupport/EditorClientWinCE.h b/WebKit/wince/WebCoreSupport/EditorClientWinCE.h index be85b3f..fd3dd10 100644 --- a/WebKit/wince/WebCoreSupport/EditorClientWinCE.h +++ b/WebKit/wince/WebCoreSupport/EditorClientWinCE.h @@ -97,7 +97,7 @@ public: virtual void updateSpellingUIWithMisspelledWord(const WTF::String&); virtual void showSpellingUI(bool); virtual bool spellingUIIsShowing(); - virtual void getGuessesForWord(const WTF::String&, WTF::Vector&); + virtual void getGuessesForWord(const WTF::String& word, const WTF::String& context, WTF::Vector& guesses); virtual void willSetInputMethodState(); virtual void setInputMethodState(bool); diff --git a/WebKit/wince/WebView.cpp b/WebKit/wince/WebView.cpp new file mode 100644 index 0000000..ce90149 --- /dev/null +++ b/WebKit/wince/WebView.cpp @@ -0,0 +1,454 @@ +/* + * Copyright (C) 2006, 2007, 2008, 2009, 2010 Apple, Inc. All rights reserved. + * Copyright (C) 2010 Patrick Gansterer + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "config.h" +#include "WebView.h" + +#include "ChromeClientWinCE.h" +#include "ContextMenuClientWinCE.h" +#include "DragClientWinCE.h" +#include "EditorClientWinCE.h" +#include "FocusController.h" +#include "Frame.h" +#include "FrameLoader.h" +#include "FrameLoaderClientWinCE.h" +#include "FrameView.h" +#include "GraphicsContext.h" +#include "InitializeThreading.h" +#include "InspectorClientWinCE.h" +#include "IntSize.h" +#include "MainThread.h" +#include "NotImplemented.h" +#include "Page.h" +#include "PlatformKeyboardEvent.h" +#include "PlatformMouseEvent.h" +#include "PlatformStrategiesWinCE.h" +#include "PlatformWheelEvent.h" +#include "ResourceRequest.h" +#include "Settings.h" +#include "SharedBuffer.h" +#include "WebCoreInstanceHandle.h" + +using namespace WebCore; + +const LPCWSTR kWebViewWindowClassName = L"WebViewWindowClass"; + + +LRESULT CALLBACK WebView::webViewWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) +{ + if (WebView* webView = reinterpret_cast(GetWindowLong(hWnd, 0))) + return webView->wndProc(hWnd, message, wParam, lParam); + + return DefWindowProc(hWnd, message, wParam, lParam); +} + +PassRefPtr loadResourceIntoBuffer(const char* name) +{ + notImplemented(); + return 0; +} + + +WebView::WebView(HWND hwnd, unsigned features) + : m_frame(0) + , m_page(0) + , m_parentWindowHandle(hwnd) + , m_enableDoubleBuffer(features & EnableDoubleBuffering) +{ + RECT rcClient; + GetClientRect(hwnd, &rcClient); + + m_windowHandle = CreateWindow(kWebViewWindowClassName, 0, WS_CHILD, + CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, hwnd, 0, WebCore::instanceHandle(), 0); + + SetWindowLong(m_windowHandle, 0, reinterpret_cast(this)); + + MoveWindow(m_windowHandle, 0, 0, rcClient.right, rcClient.bottom, TRUE); + ShowWindow(m_windowHandle, SW_SHOW); + + Page::PageClients pageClients; + pageClients.chromeClient = new WebKit::ChromeClientWinCE(this); + pageClients.contextMenuClient = new WebKit::ContextMenuClientWinCE(this); + pageClients.editorClient = new WebKit::EditorClientWinCE(this); + pageClients.dragClient = new WebKit::DragClientWinCE(); + pageClients.inspectorClient = new WebKit::InspectorClientWinCE(this); + m_page = new Page(pageClients); + + Settings* settings = m_page->settings(); + settings->setDefaultFixedFontSize(14); + settings->setDefaultFontSize(14); + settings->setMinimumFontSize(8); + settings->setMinimumLogicalFontSize(8); + settings->setJavaScriptEnabled(true); + settings->setLoadsImagesAutomatically(true); + + WebKit::FrameLoaderClientWinCE* loaderClient = new WebKit::FrameLoaderClientWinCE(this); + RefPtr frame = Frame::create(m_page, 0, loaderClient); + m_frame = frame.get(); + loaderClient->setFrame(m_frame); + + m_page->mainFrame()->init(); + + if (view()) { + RECT windowRect; + frameRect(&windowRect); + view()->resize(IntRect(windowRect).size()); + } +} + +WebView::~WebView() +{ + delete m_page; + DestroyWindow(m_windowHandle); +} + +void WebView::initialize(HINSTANCE instanceHandle) +{ + JSC::initializeThreading(); + WTF::initializeMainThread(); + PlatformStrategiesWinCE::initialize(); + + WebCore::setInstanceHandle(instanceHandle); + + WNDCLASS wc; + wc.style = CS_DBLCLKS; + wc.lpfnWndProc = WebView::webViewWndProc; + wc.cbClsExtra = 0; + wc.cbWndExtra = sizeof(void *); + wc.hInstance = instanceHandle; + wc.hIcon = 0; + wc.hCursor = LoadCursor(0, IDC_ARROW); + wc.hbrBackground = 0; + wc.lpszMenuName = 0; + wc.lpszClassName = kWebViewWindowClassName; + + RegisterClass(&wc); +} + +void WebView::cleanup() +{ + UnregisterClass(kWebViewWindowClassName, WebCore::instanceHandle()); +} + +PassRefPtr WebView::createFrame(const KURL& url, const String& name, HTMLFrameOwnerElement* ownerElement, const String& referrer, + bool /*allowsScrolling*/, int /*marginWidth*/, int /*marginHeight*/) +{ + Frame* coreFrame = m_frame; + + WebKit::FrameLoaderClientWinCE *loaderClient = new WebKit::FrameLoaderClientWinCE(this); + RefPtr childFrame = Frame::create(m_page, ownerElement, loaderClient); + loaderClient->setFrame(childFrame.get()); + + coreFrame->tree()->appendChild(childFrame); + childFrame->tree()->setName(name); + childFrame->init(); + + // The creation of the frame may have run arbitrary JavaScript that removed it from the page already. + if (!childFrame->page()) + return 0; + + childFrame->loader()->loadURLIntoChildFrame(url, referrer, childFrame.get()); + + // The frame's onload handler may have removed it from the document. + if (!childFrame->tree()->parent()) + return 0; + + return childFrame.release(); +} + +void WebView::runJavaScriptAlert(const String& message) +{ + notImplemented(); +} + +bool WebView::runJavaScriptConfirm(const String& message) +{ + notImplemented(); + return false; +} + +bool WebView::runJavaScriptPrompt(const String& message, const String& defaultValue, String& result) +{ + notImplemented(); + return false; +} + +void WebView::frameRect(RECT* rect) const +{ + GetWindowRect(m_windowHandle, rect); +} + +FrameView* WebView::view() const +{ + return m_frame ? m_frame->view() : 0; +} + +void WebView::load(LPCWSTR url) +{ + load(String(url)); +} + +void WebView::load(const String &url) +{ + load(WebCore::ResourceRequest(url)); +} + +void WebView::load(const WebCore::ResourceRequest &request) +{ + frame()->loader()->load(request, false); +} + +void WebView::reload() +{ + frame()->loader()->reload(); +} + +void WebView::stop() +{ + frame()->loader()->stopAllLoaders(); +} + +void WebView::paint(HDC hDC, const IntRect& clipRect) +{ + OwnPtr clipRgn(CreateRectRgn(clipRect.x(), clipRect.y(), clipRect.right(), clipRect.bottom())); + SelectClipRgn(hDC, clipRgn.get()); + + GraphicsContext gc(hDC); + view()->paint(&gc, clipRect); +} + +bool WebView::handlePaint(HWND hWnd) +{ + RECT updateRect; + if (!GetUpdateRect(hWnd, &updateRect, false)) + return false; + + PAINTSTRUCT ps; + HDC hDC = BeginPaint(m_windowHandle, &ps); + + IntRect clipRect(updateRect); + + if (m_enableDoubleBuffer) { + if (!m_doubleBufferDC) { + RECT rcClient; + GetClientRect(m_windowHandle, &rcClient); + + m_doubleBufferDC = adoptPtr(CreateCompatibleDC(hDC)); + m_doubleBufferBitmap = adoptPtr(CreateCompatibleBitmap(hDC, rcClient.right, rcClient.bottom)); + SelectObject(m_doubleBufferDC.get(), m_doubleBufferBitmap.get()); + } + + paint(m_doubleBufferDC.get(), clipRect); + + BitBlt(hDC, clipRect.x(), clipRect.y(), clipRect.width(), clipRect.height(), m_doubleBufferDC.get(), clipRect.x(), clipRect.y(), SRCCOPY); + } else + paint(hDC, clipRect); + + EndPaint(m_windowHandle, &ps); + return true; +} + +bool WebView::handleMouseEvent(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) +{ + static LONG globalClickCount; + static IntPoint globalPrevPoint; + static MouseButton globalPrevButton; + static LONG globalPrevMouseDownTime; + + // Create our event. + // On WM_MOUSELEAVE we need to create a mouseout event, so we force the position + // of the event to be at (MINSHORT, MINSHORT). + PlatformMouseEvent mouseEvent(hWnd, message, wParam, lParam); + + bool insideThreshold = abs(globalPrevPoint.x() - mouseEvent.pos().x()) < ::GetSystemMetrics(SM_CXDOUBLECLK) + && abs(globalPrevPoint.y() - mouseEvent.pos().y()) < ::GetSystemMetrics(SM_CYDOUBLECLK); + LONG messageTime = 0; + + bool handled = false; + if (message == WM_LBUTTONDOWN || message == WM_MBUTTONDOWN || message == WM_RBUTTONDOWN) { + // FIXME: I'm not sure if this is the "right" way to do this + // but without this call, we never become focused since we don't allow + // the default handling of mouse events. + SetFocus(m_windowHandle); + + PlatformMouseEvent moveEvent(hWnd, WM_MOUSEMOVE, 0, lParam, false); + moveEvent.setClickCount(0); + m_page->mainFrame()->eventHandler()->handleMouseMoveEvent(moveEvent); + + // Always start capturing events when the mouse goes down in our HWND. + SetCapture(m_windowHandle); + + if (insideThreshold && mouseEvent.button() == globalPrevButton) + globalClickCount++; + else + // Reset the click count. + globalClickCount = 1; + globalPrevMouseDownTime = messageTime; + globalPrevButton = mouseEvent.button(); + globalPrevPoint = mouseEvent.pos(); + + mouseEvent.setClickCount(globalClickCount); + handled = m_page->mainFrame()->eventHandler()->handleMousePressEvent(mouseEvent); + } else if (message == WM_LBUTTONDBLCLK || message == WM_MBUTTONDBLCLK || message == WM_RBUTTONDBLCLK) { + globalClickCount++; + mouseEvent.setClickCount(globalClickCount); + handled = m_page->mainFrame()->eventHandler()->handleMousePressEvent(mouseEvent); + } else if (message == WM_LBUTTONUP || message == WM_MBUTTONUP || message == WM_RBUTTONUP) { + // Record the global position and the button of the up. + globalPrevButton = mouseEvent.button(); + globalPrevPoint = mouseEvent.pos(); + mouseEvent.setClickCount(globalClickCount); + m_page->mainFrame()->eventHandler()->handleMouseReleaseEvent(mouseEvent); + ReleaseCapture(); + } else if (message == WM_MOUSEMOVE) { + if (!insideThreshold) + globalClickCount = 0; + mouseEvent.setClickCount(globalClickCount); + handled = m_page->mainFrame()->eventHandler()->mouseMoved(mouseEvent); + } + + return handled; +} + +bool WebView::handleMouseWheel(HWND hWnd, WPARAM wParam, LPARAM lParam, bool isHorizontal) +{ + PlatformWheelEvent wheelEvent(hWnd, wParam, lParam, isHorizontal); + return frame()->eventHandler()->handleWheelEvent(wheelEvent); +} + +bool WebView::handleKeyDown(WPARAM virtualKeyCode, LPARAM keyData, bool systemKeyDown) +{ + Frame* frame = m_page->focusController()->focusedOrMainFrame(); + if (virtualKeyCode == VK_CAPITAL) + frame->eventHandler()->capsLockStateMayHaveChanged(); + + PlatformKeyboardEvent keyEvent(m_windowHandle, virtualKeyCode, keyData, PlatformKeyboardEvent::RawKeyDown, systemKeyDown); + bool handled = frame->eventHandler()->keyEvent(keyEvent); + + // These events cannot be canceled, and we have no default handling for them. + // FIXME: match IE list more closely, see . + if (systemKeyDown && virtualKeyCode != VK_RETURN) + return false; + + if (handled) { + MSG msg; + if (!systemKeyDown) + ::PeekMessage(&msg, m_windowHandle, WM_CHAR, WM_CHAR, PM_REMOVE); + return true; + } + + return handled; +} + +bool WebView::handleKeyPress(WPARAM charCode, LPARAM keyData, bool systemKeyDown) +{ + Frame* frame = m_page->focusController()->focusedOrMainFrame(); + + PlatformKeyboardEvent keyEvent(m_windowHandle, charCode, keyData, PlatformKeyboardEvent::Char, systemKeyDown); + // IE does not dispatch keypress event for WM_SYSCHAR. + if (systemKeyDown) + return frame->eventHandler()->handleAccessKey(keyEvent); + if (frame->eventHandler()->keyEvent(keyEvent)) + return true; + + return false; +} + +bool WebView::handleKeyUp(WPARAM virtualKeyCode, LPARAM keyData, bool systemKeyDown) +{ + PlatformKeyboardEvent keyEvent(m_windowHandle, virtualKeyCode, keyData, PlatformKeyboardEvent::KeyUp, systemKeyDown); + + Frame* frame = m_page->focusController()->focusedOrMainFrame(); + return frame->eventHandler()->keyEvent(keyEvent); +} + +LRESULT WebView::wndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) +{ + bool handled = false; + + if (view()) { + switch (message) { + case WM_PAINT: + handled = handlePaint(hWnd); + break; + + case WM_MOUSEMOVE: + case WM_LBUTTONDOWN: + case WM_MBUTTONDOWN: + case WM_RBUTTONDOWN: + case WM_LBUTTONDBLCLK: + case WM_MBUTTONDBLCLK: + case WM_RBUTTONDBLCLK: + case WM_LBUTTONUP: + case WM_MBUTTONUP: + case WM_RBUTTONUP: + if (frame()->eventHandler() && view()->didFirstLayout()) + handled = handleMouseEvent(hWnd, message, wParam, lParam); + break; + + case WM_MOUSEWHEEL: + if (frame()->eventHandler() && view()->didFirstLayout()) + handled = handleMouseWheel(hWnd, wParam, lParam, wParam & MK_SHIFT); + break; + + case WM_SYSKEYDOWN: + handled = handleKeyDown(wParam, lParam, true); + break; + + case WM_KEYDOWN: + handled = handleKeyDown(wParam, lParam, false); + break; + + case WM_SYSKEYUP: + handled = handleKeyUp(wParam, lParam, true); + break; + + case WM_KEYUP: + handled = handleKeyUp(wParam, lParam, false); + break; + + case WM_SYSCHAR: + handled = handleKeyPress(wParam, lParam, true); + break; + + case WM_CHAR: + handled = handleKeyPress(wParam, lParam, false); + break; + + case WM_CLOSE: + PostMessage(m_parentWindowHandle, WM_CLOSE, wParam, lParam); + handled = true; + break; + + default: + break; + } + } + + if (handled) + return 0; + + return DefWindowProc(hWnd, message, wParam, lParam); +} diff --git a/WebKit/wince/WebView.h b/WebKit/wince/WebView.h new file mode 100644 index 0000000..c6e6684 --- /dev/null +++ b/WebKit/wince/WebView.h @@ -0,0 +1,100 @@ +/* + * Copyright (C) 2010 Patrick Gansterer + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef WebView_h +#define WebView_h + +#include "IntRect.h" +#include "OwnPtr.h" +#include "PassRefPtr.h" + +namespace WTF { +class String; +} + +namespace WebCore { +class Frame; +class Page; +class FrameView; +class HTMLFrameOwnerElement; +class KURL; +class ResourceRequest; +} + +class WebView { +public: + enum Features { + NoFeature = 0, + EnableDoubleBuffering = 1 << 0 + }; + + WebView(HWND hwnd, unsigned features = EnableDoubleBuffering); + ~WebView(); + + static void initialize(HINSTANCE instanceHandle); + static void cleanup(); + + HWND windowHandle() const { return m_windowHandle; } + WebCore::Frame* frame() const { return m_frame; } + WebCore::Page* page() const { return m_page; } + WebCore::FrameView* view() const; + + void load(LPCWSTR url); + void load(const WTF::String &url); + void load(const WebCore::ResourceRequest &request); + void reload(); + void stop(); + + void frameRect(RECT* rect) const; + + PassRefPtr createFrame(const WebCore::KURL&, const WTF::String&, WebCore::HTMLFrameOwnerElement*, const WTF::String&, bool, int, int); + + // JavaScript Dialog + void runJavaScriptAlert(const WTF::String& message); + bool runJavaScriptConfirm(const WTF::String& message); + bool runJavaScriptPrompt(const WTF::String& message, const WTF::String& defaultValue, WTF::String& result); + +private: + static LRESULT CALLBACK webViewWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); + LRESULT wndProc(HWND, UINT, WPARAM, LPARAM); + + bool handlePaint(HWND hWnd); + bool handleMouseEvent(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); + bool handleMouseWheel(HWND hWnd, WPARAM wParam, LPARAM lParam, bool isHorizontal); + bool handleKeyDown(WPARAM virtualKeyCode, LPARAM keyData, bool systemKeyDown); + bool handleKeyPress(WPARAM charCode, LPARAM keyData, bool systemKeyDown); + bool handleKeyUp(WPARAM virtualKeyCode, LPARAM keyData, bool systemKeyDown); + + void paint(HDC hDC, const WebCore::IntRect& clipRect); + + WebCore::Frame* m_frame; + WebCore::Page* m_page; + HWND m_parentWindowHandle; + HWND m_windowHandle; + bool m_enableDoubleBuffer; + OwnPtr m_doubleBufferDC; + OwnPtr m_doubleBufferBitmap; +}; + +#endif // WebView_h diff --git a/WebKit/wx/Bakefiles.bkgen b/WebKit/wx/Bakefiles.bkgen deleted file mode 100644 index be544d6..0000000 --- a/WebKit/wx/Bakefiles.bkgen +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - ../../JavaScriptCore/jscore.bkl - ../../WebCore/webcore-wx.bkl - wxwebkit.bkl - bindings/python/wxwebkit-py.bkl - ../../WebKitTools/DumpRenderTree/wx/DumpRenderTree.bkl - ../../WebKitTools/wx/browser/browser.bkl - - - - - gnu,msvs2005prj,msvc - - - - - -o../../JavaScriptCore/GNUmakefile - - - -o../../JavaScriptCore/JavaScriptCore.sln - - - -o../../JavaScriptCore/makefile.vc - - - - - - -o../../WebCore/GNUmakefile - - - -o../../WebCore/webcore-wx.sln - - - -o../../WebCore/makefile.vc - - - - -oGNUmakefile - - - -owxWebKit.sln - - - -omakefile.vc - - - - -obindings/python/GNUmakefile - - - -obindings/python/wxWebKit.sln - - - -obindings/python/makefile.vc - - - - -o../../WebKitTools/wx/browser/GNUmakefile - - - -o../../WebKitTools/wx/browser/browser.sln - - - -o../../WebKitTools/wx/browser/makefile.vc - - - - - -o../../WebKitTools/DumpRenderTree/wx/GNUmakefile - - - -o../../WebKitTools/DumpRenderTree/wx/DumpRenderTree.sln - - - -o../../WebKitTools/DumpRenderTree/wx/makefile.vc - - - - - - diff --git a/WebKit/wx/ChangeLog b/WebKit/wx/ChangeLog index e0f0cd1..ee07fbd 100644 --- a/WebKit/wx/ChangeLog +++ b/WebKit/wx/ChangeLog @@ -1,3 +1,35 @@ +2010-12-01 Jia Pu + + Reviewed by Darin Adler. + + Support multiple correction candidates panel for misspelled word on Mac OS X. + https://bugs.webkit.org/show_bug.cgi?id=50137 + + + Adopted new function signature defined in base class. + + * WebKitSupport/EditorClientWx.cpp: + (WebCore::EditorClientWx::getGuessesForWord): + * WebKitSupport/EditorClientWx.h: + +2010-11-24 Patrick Gansterer + + Reviewed by Csaba Osztrogonác. + + Remove Bakefile build system files + https://bugs.webkit.org/show_bug.cgi?id=49983 + + r53757 only removed the content, but not the files. + This patch removes that empty files. + + * Bakefiles.bkgen: Removed. + * bindings/python/wxwebkit-py.bkl: Removed. + * dependencies.bkl: Removed. + * presets: Removed. + * presets/wxwebkit.bkl: Removed. + * wxwebkit.bkl: Removed. + * wxwk-settings.bkl: Removed. + 2010-11-08 Alexey Proskuryakov Reviewed by Darin Adler. diff --git a/WebKit/wx/WebKitSupport/EditorClientWx.cpp b/WebKit/wx/WebKitSupport/EditorClientWx.cpp index 59e2fd4..5601364 100644 --- a/WebKit/wx/WebKitSupport/EditorClientWx.cpp +++ b/WebKit/wx/WebKitSupport/EditorClientWx.cpp @@ -542,9 +542,9 @@ bool EditorClientWx::spellingUIIsShowing() return false; } -void EditorClientWx::getGuessesForWord(const String&, Vector& guesses) -{ - notImplemented(); +void EditorClientWx::getGuessesForWord(const String& word, const String& context, Vector& guesses) +{ + notImplemented(); } String EditorClientWx::getAutoCorrectSuggestionForMisspelledWord(const WTF::String&) diff --git a/WebKit/wx/WebKitSupport/EditorClientWx.h b/WebKit/wx/WebKitSupport/EditorClientWx.h index be5c98a..35a95ab 100644 --- a/WebKit/wx/WebKitSupport/EditorClientWx.h +++ b/WebKit/wx/WebKitSupport/EditorClientWx.h @@ -107,9 +107,9 @@ public: virtual void updateSpellingUIWithMisspelledWord(const String&); virtual void showSpellingUI(bool show); virtual bool spellingUIIsShowing(); - virtual void getGuessesForWord(const String&, Vector& guesses); + virtual void getGuessesForWord(const String& word, const String& context, Vector& guesses); virtual String getAutoCorrectSuggestionForMisspelledWord(const WTF::String&); - + virtual void willSetInputMethodState(); virtual void setInputMethodState(bool enabled); diff --git a/WebKit/wx/bindings/python/wxwebkit-py.bkl b/WebKit/wx/bindings/python/wxwebkit-py.bkl deleted file mode 100644 index e69de29..0000000 diff --git a/WebKit/wx/dependencies.bkl b/WebKit/wx/dependencies.bkl deleted file mode 100644 index e69de29..0000000 diff --git a/WebKit/wx/presets/wxwebkit.bkl b/WebKit/wx/presets/wxwebkit.bkl deleted file mode 100644 index e69de29..0000000 diff --git a/WebKit/wx/wxwebkit.bkl b/WebKit/wx/wxwebkit.bkl deleted file mode 100644 index e69de29..0000000 diff --git a/WebKit/wx/wxwk-settings.bkl b/WebKit/wx/wxwk-settings.bkl deleted file mode 100644 index e69de29..0000000 diff --git a/WebKitLibraries/ChangeLog b/WebKitLibraries/ChangeLog index bfd54bc..60cb1f6 100644 --- a/WebKitLibraries/ChangeLog +++ b/WebKitLibraries/ChangeLog @@ -1,3 +1,147 @@ +2010-12-01 Adam Roben + + Don't let harmless errorlevels from the "set" utility leak into + project-specific build scripts + + When using set to unset an environment variable that didn't previously + exist, set raises the errorlevel to 1. This was leaking into + project-specific scripts, causing them to think the build has failed. + We now clear the errorlevel after we finish setting environment + variables. + + Fixes Windows builds mysteriously fail in + some configurations + + Reviewed by Steve Falkenburg. + + * win/tools/vsprops/common.vsprops: Call "cmd /c" after setting + environment variables to get rid of any errorlevel that "set" set. + +2010-12-01 Steve Falkenburg + + Reviewed by Adam Roben. + + vcproj changes can't be applied cleanly by the Windows EWS bot + https://bugs.webkit.org/show_bug.cgi?id=50328 + + * win/tools/vsprops/WinCairo.vsprops: Added property svn:eol-style. + * win/tools/vsprops/cURL.vsprops: Added property svn:eol-style. + * win/tools/vsprops/debug_wincairo.vsprops: Added property svn:eol-style. + +2010-11-29 Steve Falkenburg + + Windows build fix (part 2). + Define Visual Studio internal variables used in pre-build/pre-link/post-build commands in environment for separated cmd files. + + * win/tools/vsprops/common.vsprops: + +2010-11-19 Steve Falkenburg + + Reviewed by Adam Roben. + + Add a mechanism for Windows pre-build/pre-link/post-build events to be separated into individual cmd files + https://bugs.webkit.org/show_bug.cgi?id=49858 + + We're migrating our prebuild/prelink/postbuild steps out of vcproj and vsprops files: + - To simplify editing (editing vsprops build steps is confusing). + - For more readable diffs. + + To add a prebuild/prelink/postbuild step for a vcproj, + Add a new file named {ProjectName}PreBuild|PreLink|PostBuild.cmd to the project directory. + For example, a WTF prebuild script would be named WTFPreBuild.cmd and would be located + in the directory JavaScriptCore/JavaScriptCore.vcproj/WTF (alongside WTF.vcproj). + + * win/tools/vsprops/common.vsprops: + * win/tools/vsprops/release.vsprops: + +2010-11-29 Anders Carlsson + + Reviewed by Sam Weinig and Simon Fraser. + + WebKitSystemInterface.h piece of r72438. + + * WebKitSystemInterface.h: + +2010-11-22 Adam Roben + + Use paths relative to $WebKitVSPropsRedirectionDir to access shared .vsprops files + + Apple's Windows build allows placing header files and import libraries for WebKit's + dependencies (CoreGraphics, CFNetwork, SQLite, etc.) outside the source tree via the + $WebKitLibrariesDir environment variable. This is both required for production builds and + convenient for Apple-internal developer builds. Apple's production builds also require that + WebKit's shared .vsprops files be accessed relative to $WebKitLibrariesDir. In production + builds, the files are copied into that directory tree by the + WebKitLibraries/win/tools/WinTools.make file. In Apple-internal developer builds, the + copying is done by + JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make. + + This .vsprops copying is problematic in one very important case: when a developer updates + their source tree and then tries to build. Visual Studio only reads .vsprops files when a + project is first loaded. So, when Visual Studio is first opened after the .vsprops files are + updated, it reads in the old files that were already residing in $WebKitLibrariesDir. When a + build is started, JavaScriptCoreGenerated.make copies the new .vsprops files into + $WebKitLibrariesDir, but Visual Studio will not pick up the changes. The rest of the build + will proceed with out-of-date .vsprops files, which will likely result in a build failure. + + To fix this, we now use normal relative paths to access the .vsprops files in the source + tree rather than in $WebKitLibrariesDir, but prefix those paths with a new environment + variable, $WebKitVSPropsRedirectionDir. In developer builds, this environment variable is + unset, so the normal relative paths are used to read the .vsprops files out of the source + tree directly. In production builds, this environment variable is set to a fake directory + that will cause the .vsprops files in $WebKitLibrariesDir to be found when the relative path + is resolved. + + For example, JavaScriptCore.vcproj uses this path for FeatureDefines.vsprops: + + $(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\FeatureDefines.vsprops + + In developer builds, where $WebKitVSPropsRedirectionDir is unset, this will point to the + files in WebKitLibraries\win\tools\vsprops in the source tree. In production builds, + JavaScriptCore.make sets $WebKitVSPropsRedirectionDir to + "$(SRCROOT)\AppleInternal\tools\vsprops\OpenSource\1\2\3\", so the full path for + FeatureDefines.vsprops becomes: + + $(SRCROOT)\AppleInternal\tools\vsprops\OpenSource\1\2\3\..\..\..\WebKitLibraries\win\tools\vsprops\FeatureDefines.vsprops + + which resolves to: + + $(SRCROOT)\AppleInternal\tools\vsprops\OpenSource\WebKitLibraries\win\tools\vsprops\FeatureDefines.vsprops + + (We rely on the fact that Windows doesn't care whether the directories "1", "2", and "3" + actually exist since they are matched by an equal number of ".." path components.) + + Note that Visual Studio still won't pick up changes made to .vsprops files while Visual + Studio is open, but that problem hasn't seemed to cause developers many headaches so far. + + Fixes Windows build fails mysteriously when .vsprops files are + updated + + Reviewed by Dave Hyatt. + + * win/tools/WinTools.make: Copy the shared .vsprops files into a directory tree beneath + AppleInternal\tools\vsprops that matches the source directory tree. This allows production + builds to redirect the relative paths used to find the shared .vsprops files into + AppleInternal by setting $WebKitVSPropsRedirectionDir to the appropriate value. + +2010-11-18 Steve Falkenburg + + Rubber-stamped by Adam Roben. + + Remove unused debug_internal vsprops file. + + * win/tools/vsprops/debug_internal.vsprops: Removed. + +2010-11-18 Steve Falkenburg + + Reviewed by Adam Roben. + + Debug_Internal Windows configuration is unnecessary, should be removed + https://bugs.webkit.org/show_bug.cgi?id=49753 + + * win/tools/vsprops/debug.vsprops: + * win/tools/vsprops/debug_internal.vsprops: + 2010-11-17 Steve Falkenburg Rubber-stamped by Adam Roben. diff --git a/WebKitLibraries/WebKitSystemInterface.h b/WebKitLibraries/WebKitSystemInterface.h index 7ec07fb..d135304 100644 --- a/WebKitLibraries/WebKitSystemInterface.h +++ b/WebKitLibraries/WebKitSystemInterface.h @@ -143,7 +143,7 @@ CGAffineTransform WKGetUserToBaseCTM(CGContextRef); void WKGetGlyphsForCharacters(CGFontRef, const UniChar[], CGGlyph[], size_t); #else typedef void *WKGlyphVectorRef; -OSStatus WKConvertCharToGlyphs(void *styleGroup, const UniChar *characters, unsigned numCharacters, WKGlyphVectorRef glyphs); +OSStatus WKConvertCharToGlyphs(void *styleGroup, const UniChar* characters, unsigned numCharacters, WKGlyphVectorRef glyphs); OSStatus WKGetATSStyleGroup(ATSUStyle fontStyle, void **styleGroup); void WKReleaseStyleGroup(void *group); OSStatus WKInitializeGlyphVector(int count, WKGlyphVectorRef glyphs); @@ -336,6 +336,25 @@ void WKSyncSurfaceToView(NSView *view); CFIndex WKGetHyphenationLocationBeforeIndex(CFStringRef string, CFIndex index); #endif +#if !defined(BUILDING_ON_TIGER) && !defined(BUILDING_ON_LEOPARD) && !defined(BUILDING_ON_SNOW_LEOPARD) +typedef enum { + WKSandboxExtensionTypeReadOnly, + WKSandboxExtensionTypeWriteOnly, + WKSandboxExtensionTypeReadWrite, +} WKSandboxExtensionType; +typedef struct __WKSandboxExtension *WKSandboxExtensionRef; + +WKSandboxExtensionRef WKSandboxExtensionCreate(const char* path, WKSandboxExtensionType type); +void WKSandboxExtensionDestroy(WKSandboxExtensionRef sandboxExtension); + +bool WKSandboxExtensionConsume(WKSandboxExtensionRef sandboxExtension); +bool WKSandboxExtensionInvalidate(WKSandboxExtensionRef sandboxExtension); + +const char* WKSandboxExtensionGetSerializedFormat(WKSandboxExtensionRef sandboxExtension, size_t* length); +WKSandboxExtensionRef WKSandboxExtensionCreateFromSerializedFormat(const char* serializationFormat, size_t length); + +#endif + #ifdef __cplusplus } #endif diff --git a/WebKitLibraries/win/tools/WinTools.make b/WebKitLibraries/win/tools/WinTools.make index c487e01..3e99ae5 100755 --- a/WebKitLibraries/win/tools/WinTools.make +++ b/WebKitLibraries/win/tools/WinTools.make @@ -1,3 +1,3 @@ install: - xcopy "$(SRCROOT)\vsprops\*.vsprops" "$(DSTROOT)\AppleInternal\tools\vsprops" /e/v/i/h/y + xcopy "$(SRCROOT)\vsprops\*.vsprops" "$(DSTROOT)\AppleInternal\tools\vsprops\OpenSource\WebKitLibraries\win\tools\vsprops" /e/v/i/h/y xcopy "$(SRCROOT)\scripts\*" "$(DSTROOT)\AppleInternal\tools\scripts" /e/v/i/h/y diff --git a/WebKitLibraries/win/tools/vsprops/WinCairo.vsprops b/WebKitLibraries/win/tools/vsprops/WinCairo.vsprops index 9710568..704cd7a 100644 --- a/WebKitLibraries/win/tools/vsprops/WinCairo.vsprops +++ b/WebKitLibraries/win/tools/vsprops/WinCairo.vsprops @@ -1,17 +1,17 @@ - - - - - + + + + + diff --git a/WebKitLibraries/win/tools/vsprops/cURL.vsprops b/WebKitLibraries/win/tools/vsprops/cURL.vsprops index 3f06aa6..db7680a 100644 --- a/WebKitLibraries/win/tools/vsprops/cURL.vsprops +++ b/WebKitLibraries/win/tools/vsprops/cURL.vsprops @@ -1,13 +1,13 @@ - - - - + + + + diff --git a/WebKitLibraries/win/tools/vsprops/common.vsprops b/WebKitLibraries/win/tools/vsprops/common.vsprops index b9c710c..b787f6b 100644 --- a/WebKitLibraries/win/tools/vsprops/common.vsprops +++ b/WebKitLibraries/win/tools/vsprops/common.vsprops @@ -25,7 +25,7 @@ + + + - - - - - - diff --git a/WebKitLibraries/win/tools/vsprops/debug_wincairo.vsprops b/WebKitLibraries/win/tools/vsprops/debug_wincairo.vsprops index 7d424e6..c9f5722 100644 --- a/WebKitLibraries/win/tools/vsprops/debug_wincairo.vsprops +++ b/WebKitLibraries/win/tools/vsprops/debug_wincairo.vsprops @@ -1,34 +1,34 @@ - - - - - - - - + + + + + + + + diff --git a/WebKitLibraries/win/tools/vsprops/release.vsprops b/WebKitLibraries/win/tools/vsprops/release.vsprops index 8b38b73..6416e3f 100644 --- a/WebKitLibraries/win/tools/vsprops/release.vsprops +++ b/WebKitLibraries/win/tools/vsprops/release.vsprops @@ -18,10 +18,6 @@ OptimizeForWindows98="1" /> - diff --git a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/config.json b/WebKitTools/BuildSlaveSupport/build.webkit.org-config/config.json index 868ee0d..d46b140 100644 --- a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/config.json +++ b/WebKitTools/BuildSlaveSupport/build.webkit.org-config/config.json @@ -25,6 +25,14 @@ { "name": "apple-windows-5", "platform": "win"}, { "name": "apple-windows-6", "platform": "win"}, { "name": "apple-windows-7", "platform": "win"}, + { "name": "apple-windows-8", "platform": "win"}, + { "name": "apple-windows-9", "platform": "win"}, + { "name": "apple-windows-10", "platform": "win"}, + { "name": "apple-windows-11", "platform": "win"}, + { "name": "apple-windows-12", "platform": "win"}, + { "name": "apple-windows-13", "platform": "win"}, + { "name": "apple-windows-14", "platform": "win"}, + { "name": "apple-windows-15", "platform": "win"}, { "name": "gtk-linux-slave-1", "platform": "gtk"}, { "name": "gtk-linux-slave-2", "platform": "gtk"}, @@ -97,7 +105,7 @@ { "name": "Windows 7 Release (Tests)", "type": "Test", "builddir": "win-release-tests", "platform": "win", "configuration": "release", "architectures": ["i386"], - "slavenames": ["apple-windows-5", "apple-windows-6", "test-slave"] + "slavenames": ["apple-windows-5", "apple-windows-6", "apple-windows-11", "apple-windows-12", "test-slave"] }, { "name": "Windows Debug (Build)", "type": "Build", "builddir": "win-debug", @@ -108,11 +116,11 @@ { "name": "Windows XP Debug (Tests)", "type": "Test", "builddir": "win-debug-tests", "platform": "win", "configuration": "debug", "architectures": ["i386"], - "slavenames": ["apple-windows-3", "apple-windows-4", "test-slave"] + "slavenames": ["apple-windows-3", "apple-windows-4", "apple-windows-13", "apple-windows-14", "apple-windows-15", "test-slave"] }, { "name": "Windows 7 Release (WebKit2 Tests)", "type": "TestWebKit2", "builddir": "win-release-tests-wk2", "platform": "win", "configuration": "release", "architectures": ["i386"], - "slavenames": ["apple-windows-7", "test-slave"] + "slavenames": ["apple-windows-7", "apple-windows-8", "apple-windows-9", "apple-windows-10", "test-slave"] }, { "name": "GTK Linux 32-bit Release", "type": "BuildAndTest", "builddir": "gtk-linux-32-release", diff --git a/WebKitTools/CLWrapper/CLWrapper.sln b/WebKitTools/CLWrapper/CLWrapper.sln index add0423..7501ea6 100644 --- a/WebKitTools/CLWrapper/CLWrapper.sln +++ b/WebKitTools/CLWrapper/CLWrapper.sln @@ -1,20 +1,20 @@ - -Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual Studio 2005 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CLWrapper", "CLWrapper.vcproj", "{230BF635-9BD8-434A-8857-0B096EBC7233}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {230BF635-9BD8-434A-8857-0B096EBC7233}.Debug|Win32.ActiveCfg = Debug|Win32 - {230BF635-9BD8-434A-8857-0B096EBC7233}.Debug|Win32.Build.0 = Debug|Win32 - {230BF635-9BD8-434A-8857-0B096EBC7233}.Release|Win32.ActiveCfg = Release|Win32 - {230BF635-9BD8-434A-8857-0B096EBC7233}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual Studio 2005 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CLWrapper", "CLWrapper.vcproj", "{230BF635-9BD8-434A-8857-0B096EBC7233}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {230BF635-9BD8-434A-8857-0B096EBC7233}.Debug|Win32.ActiveCfg = Debug|Win32 + {230BF635-9BD8-434A-8857-0B096EBC7233}.Debug|Win32.Build.0 = Debug|Win32 + {230BF635-9BD8-434A-8857-0B096EBC7233}.Release|Win32.ActiveCfg = Release|Win32 + {230BF635-9BD8-434A-8857-0B096EBC7233}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/WebKitTools/CLWrapper/CLWrapper.vcproj b/WebKitTools/CLWrapper/CLWrapper.vcproj index 668a874..844d72a 100644 --- a/WebKitTools/CLWrapper/CLWrapper.vcproj +++ b/WebKitTools/CLWrapper/CLWrapper.vcproj @@ -1,199 +1,199 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WebKitTools/ChangeLog b/WebKitTools/ChangeLog index ae0aa79..db447a0 100644 --- a/WebKitTools/ChangeLog +++ b/WebKitTools/ChangeLog @@ -1,3 +1,1510 @@ +2010-12-01 Mihai Parparita + + Reviewed by Adam Barth. + + build-webkit --chromium always updates DEPS and re-generates project files + https://bugs.webkit.org/show_bug.cgi?id=50340 + + Make build-webkit --chromium invoke update-webkit-chromium only when + --update-chromium is passed in, so that we don't add 20 seconds to all + builds. + + Making all invocations update was added with r61883, with the goal of + making EWS bots always update. The bots will switch to using this flag + (as will all other webkit-patch build steps) so nothing should change + for them. + + * Scripts/webkitdirs.pm: + * Scripts/webkitpy/common/config/ports.py: + * Scripts/webkitpy/common/config/ports_unittest.py: + +2010-12-01 Dirk Pranke + + Reviewed by Tony Chang. + + new-run-webkit-tests: add a --dry-run / -n flag + https://bugs.webkit.org/show_bug.cgi?id=50045 + + * Scripts/webkitpy/layout_tests/run_webkit_tests.py: + * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py: + +2010-12-01 Steve Falkenburg + + Reviewed by Adam Roben. + + WinCairo build should not use link-time code generation (LTCG) + https://bugs.webkit.org/show_bug.cgi?id=50353 + + * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj: + * DumpRenderTree/win/DumpRenderTree.vcproj: + * DumpRenderTree/win/ImageDiff.vcproj: + * FindSafari/FindSafari.vcproj: + * MiniBrowser/MiniBrowser.vcproj: + * TestWebKitAPI/win/TestWebKitAPI.vcproj: + * WebKitAPITest/WebKitAPITest.vcproj: + * WebKitLauncherWin/WebKitLauncherWin.vcproj: + * WebKitTestRunner/win/InjectedBundle.vcproj: + * WebKitTestRunner/win/WebKitTestRunner.vcproj: + * WinLauncher/WinLauncher.vcproj: + * record-memory-win/record-memory-win.vcproj: + +2010-12-01 Martin Robinson + + Touch GetUserAgentWithNullNPPFromNPPNew.cpp in an effort to force + a rebuild of TestNetscapePlugin.la on GTK+. It seems that simply + adding the file to the sources list was not enough to force the rebuild. + + * DumpRenderTree/TestNetscapePlugIn/Tests/GetUserAgentWithNullNPPFromNPPNew.cpp: + Remove an empty line at the end of this file to force a rebuild. + +2010-12-01 Sam Weinig + + Fix windows build. + + * MiniBrowser/win/BrowserView.cpp: + (BrowserView::create): + +2010-12-01 Martin Robinson + + Add missing file to the TestNetscapePlugin sources list after r73057. + + * GNUmakefile.am: Add missing file. + +2010-12-01 Sam Weinig + + Reviewed by Anders Carlsson. + + Add PageGrouping to WebKit2 API + https://bugs.webkit.org/show_bug.cgi?id=50332 + + - Update testing harnesses to deal with new PageGroup API. + + * MiniBrowser/mac/WebBundle/WebBundleMain.m: + (WKBundleInitialize): + * TestWebKitAPI/InjectedBundleController.cpp: + (TestWebKitAPI::InjectedBundleController::initialize): + (TestWebKitAPI::InjectedBundleController::didInitializePageGroup): + (TestWebKitAPI::InjectedBundleController::initializeTestNamed): + * TestWebKitAPI/InjectedBundleController.h: + * TestWebKitAPI/InjectedBundleTest.h: + (TestWebKitAPI::InjectedBundleTest::initialize): + (TestWebKitAPI::InjectedBundleTest::didInitializePageGroup): + * TestWebKitAPI/PlatformUtilities.cpp: + (TestWebKitAPI::Util::createContextForInjectedBundleTest): + * TestWebKitAPI/PlatformUtilities.h: + * TestWebKitAPI/PlatformWebView.h: + * TestWebKitAPI/Tests/WebKit2/DocumentStartUserScriptAlertCrash.cpp: + (TestWebKitAPI::TEST): + * TestWebKitAPI/Tests/WebKit2/DocumentStartUserScriptAlertCrash_Bundle.cpp: + (TestWebKitAPI::DocumentStartUserScriptAlertCrashTest::initialize): + * TestWebKitAPI/mac/PlatformWebViewMac.mm: + (TestWebKitAPI::PlatformWebView::PlatformWebView): + * TestWebKitAPI/win/PlatformWebViewWin.cpp: + (TestWebKitAPI::PlatformWebView::PlatformWebView): + * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp: + (WTR::InjectedBundle::didInitializePageGroup): + (WTR::InjectedBundle::initialize): + (WTR::InjectedBundle::beginTesting): + * WebKitTestRunner/InjectedBundle/InjectedBundle.h: + (WTR::InjectedBundle::pageGroup): + * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp: + (WTR::LayoutTestController::addUserScript): + (WTR::LayoutTestController::addUserStyleSheet): + (WTR::LayoutTestController::setXSSAuditorEnabled): + * WebKitTestRunner/TestController.cpp: + * WebKitTestRunner/win/PlatformWebViewWin.cpp: + (WTR::PlatformWebView::PlatformWebView): + +2010-12-01 Steve Falkenburg + + Reviewed by Adam Roben. + + vcproj changes can't be applied cleanly by the Windows EWS bot + https://bugs.webkit.org/show_bug.cgi?id=50328 + + * CLWrapper/CLWrapper.sln: Modified property svn:eol-style. + * CLWrapper/CLWrapper.vcproj: Modified property svn:eol-style. + * DumpRenderTree/DumpRenderTree.sln: Modified property svn:eol-style. + * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePluginCommon.vsprops: Added property svn:eol-style. + * DumpRenderTree/win/DumpRenderTree.vcproj: Modified property svn:eol-style. + * DumpRenderTree/win/DumpRenderTreeApple.vsprops: Added property svn:eol-style. + * DumpRenderTree/win/DumpRenderTreeCFLite.vsprops: Added property svn:eol-style. + * DumpRenderTree/win/DumpRenderTreeCairo.vsprops: Added property svn:eol-style. + * DumpRenderTree/win/DumpRenderTreeCommon.vsprops: Added property svn:eol-style. + * DumpRenderTree/win/ImageDiff.vcproj: Modified property svn:eol-style. + * DumpRenderTree/win/ImageDiffCommon.vsprops: Added property svn:eol-style. + * FindSafari/FindSafari.vcproj: Modified property svn:eol-style. + * FindSafari/FindSafariCommon.vsprops: Added property svn:eol-style. + * MIDLWrapper/MIDLWrapper.sln: Modified property svn:eol-style. + * MIDLWrapper/MIDLWrapper.vcproj: Modified property svn:eol-style. + * MiniBrowser/Configurations/MiniBrowserCFLite.vsprops: Added property svn:eol-style. + * MiniBrowser/Configurations/MiniBrowserCommon.vsprops: Added property svn:eol-style. + * MiniBrowser/Configurations/MiniBrowserCoreFoundation.vsprops: Added property svn:eol-style. + * MiniBrowser/MiniBrowser.vcproj: Added property svn:eol-style. + * TestWebKitAPI/Configurations/TestWebKitAPICFLite.vsprops: Added property svn:eol-style. + * TestWebKitAPI/Configurations/TestWebKitAPICommon.vsprops: Added property svn:eol-style. + * TestWebKitAPI/Configurations/TestWebKitAPICoreFoundation.vsprops: Added property svn:eol-style. + * TestWebKitAPI/win/TestWebKitAPI.sln: Added property svn:eol-style. + * TestWebKitAPI/win/TestWebKitAPI.vcproj: Added property svn:eol-style. + * TestWebKitAPI/win/TestWebKitAPIGenerated.vcproj: Added property svn:eol-style. + * TestWebKitAPI/win/TestWebKitAPIGeneratedCommon.vsprops: Added property svn:eol-style. + * WebKitAPITest/WebKitAPITest.vcproj: Added property svn:eol-style. + * WebKitAPITest/WebKitAPITestCommon.vsprops: Added property svn:eol-style. + * WebKitLauncherWin/WebKitLauncherWin.vcproj: Modified property svn:eol-style. + * WebKitLauncherWin/WebKitLauncherWinCommon.vsprops: Added property svn:eol-style. + * WebKitTestRunner/Configurations/InjectedBundleCFLite.vsprops: Added property svn:eol-style. + * WebKitTestRunner/Configurations/InjectedBundleCommon.vsprops: Added property svn:eol-style. + * WebKitTestRunner/Configurations/InjectedBundleCoreFoundation.vsprops: Added property svn:eol-style. + * WebKitTestRunner/Configurations/WebKitTestRunnerCFLite.vsprops: Added property svn:eol-style. + * WebKitTestRunner/Configurations/WebKitTestRunnerCommon.vsprops: Added property svn:eol-style. + * WebKitTestRunner/Configurations/WebKitTestRunnerCoreFoundation.vsprops: Added property svn:eol-style. + * WebKitTestRunner/WebKitTestRunner.sln: Added property svn:eol-style. + * WebKitTestRunner/win/InjectedBundle.vcproj: Added property svn:eol-style. + * WebKitTestRunner/win/InjectedBundleGenerated.vcproj: Added property svn:eol-style. + * WebKitTestRunner/win/InjectedBundleGeneratedCommon.vsprops: Added property svn:eol-style. + * WebKitTestRunner/win/WebKitTestRunner.vcproj: Added property svn:eol-style. + * WinLauncher/WinLauncher.vcproj: Modified property svn:eol-style. + * WinLauncher/WinLauncherCommon.vsprops: Added property svn:eol-style. + * record-memory-win/record-memory-win-common.vsprops: Added property svn:eol-style. + * record-memory-win/record-memory-win.vcproj: Modified property svn:eol-style. + +2010-12-01 Anders Carlsson + + Reviewed by Darin Adler. + + Return a correct user agent if NPN_UserAgent is called with a null NPP from NPP_New. + https://bugs.webkit.org/show_bug.cgi?id=50336 + + * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj: + Add new test. + + * DumpRenderTree/TestNetscapePlugIn/PluginTest.cpp: + (PluginTest::NPP_New): + Add default implementation/ + + * DumpRenderTree/TestNetscapePlugIn/PluginTest.h: + * DumpRenderTree/TestNetscapePlugIn/Tests/GetUserAgentWithNullNPPFromNPPNew.cpp: Added. + (GetUserAgentWithNullNPPFromNPPNew::GetUserAgentWithNullNPPFromNPPNew): + (GetUserAgentWithNullNPPFromNPPNew::NPP_New): + Get the user agent. + + * DumpRenderTree/TestNetscapePlugIn/main.cpp: + (NPP_New): + Call PluginTest::NPP_New. + + * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj: + * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro: + Add new files. + + * DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp: + (webkit_test_plugin_new_instance): + Call PluginTest::NPP_New. + +2010-12-01 Kevin Ollivier + + [wx] Build fixes after recent trunk changes. + + * DumpRenderTree/wx/LayoutTestControllerWx.cpp: + (LayoutTestController::findString): + * wx/build/settings.py: + +2010-12-01 Dan Bernstein + + Reviewed by Darin Adler. + + WebKitTestRunner needs layoutTestController.findString + https://bugs.webkit.org/show_bug.cgi?id=50238 + + * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl: Added findString(). + * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp: + (WTR::LayoutTestController::findString): Updated signature for autogenerated bindings. + * WebKitTestRunner/InjectedBundle/LayoutTestController.h: Ditto. + +2010-12-01 Steve Falkenburg + + Try using svn:eol-style native on a vcproj file. + + * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj: Modified property svn:eol-style. + +2010-12-01 Patrick Gansterer + + Reviewed by Adam Roben. + + [WINCE] Add WinCELauncher + https://bugs.webkit.org/show_bug.cgi?id=50217 + + * WinCELauncher/main.cpp: Added. + +2010-11-30 Benjamin Poulain + + Reviewed by Kenneth Rohde Christiansen. + + [Qt] Implement layoutTestController.findString + https://bugs.webkit.org/show_bug.cgi?id=50236 + + Add the missing function to the LayoutTestController. + + * DumpRenderTree/qt/LayoutTestControllerQt.cpp: + (LayoutTestController::findString): + * DumpRenderTree/qt/LayoutTestControllerQt.h: + +2010-11-30 Tony Chang + + Reviewed by Adam Barth. + + [chromium] fix get-int-identifier-special-values.html using TestNetscapePlugIn + https://bugs.webkit.org/show_bug.cgi?id=49036 + + * DumpRenderTree/chromium/LayoutTestController.cpp: Use IsNumber instead of IsInt32 + for CppVariants. + (LayoutTestController::cppVariantToBool): + (LayoutTestController::cppVariantToInt32): + (LayoutTestController::setDatabaseQuota): + (LayoutTestController::evaluateInWebInspector): + (LayoutTestController::setMockGeolocationError): + +2010-11-30 Eric Seidel + + Reviewed by Tony Chang. + + update-webkit should call git fetch before git svn rebase + https://bugs.webkit.org/show_bug.cgi?id=50273 + + After discussion on webkit-dev, we've decided to move the "default" + git setup to pulling updates from git.webkit.org in preference + to rebuilding the local svn index using git svn fetch every time. + + This change should have no effect on people using the "old" git setup + and should dramatically increase the speed of updates for those using + the "new" git setup along with update-webkit. I'm about to move the + EWS and other queues over to this setup once this lands. + + * Scripts/update-webkit: + +2010-11-30 Mario Sanchez Prada + + Reviewed by Xan Lopez. + + GTK: AX: implement press in DRT + https://bugs.webkit.org/show_bug.cgi?id=36146 + + Implement AccessibilityUIElement::press() for GTK. + + * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp: + (AccessibilityUIElement::press): Implemented. + +2010-11-29 Mihai Parparita + + Reviewed by Tony Chang. + + config.webkit_base_dir returns a path with a trailing slash + https://bugs.webkit.org/show_bug.cgi?id=50197 + + config.webkit_base_dir() should return a path without a trailing slash, + like all the other methods that return paths. + + Undoes MockFileSytem changes by r72640, since they're no longer + necessary for GetBaselinesTest to pass. + + * Scripts/webkitpy/common/system/filesystem_mock.py: + * Scripts/webkitpy/layout_tests/port/base.py: + * Scripts/webkitpy/layout_tests/port/config.py: + * Scripts/webkitpy/layout_tests/port/config_unittest.py: + +2010-11-30 Mihai Parparita + + Reviewed by Tony Chang. + + Rebaseline server: baseline display tweaks + https://bugs.webkit.org/show_bug.cgi?id=50207 + + Determine which baselines were used when running the tests and highlight + them in the UI. Sort platform names alphabetically. + + Also makes the server URL be launched in the user's browser + automatically. + + * Scripts/webkitpy/tool/commands/data/rebaselineserver/main.css: + * Scripts/webkitpy/tool/commands/data/rebaselineserver/main.js: + * Scripts/webkitpy/tool/commands/data/rebaselineserver/util.js: + * Scripts/webkitpy/tool/commands/rebaselineserver.py: + * Scripts/webkitpy/tool/commands/rebaselineserver_unittest.py: + +2010-11-30 Dan Bernstein + + Reviewed by Anders Carlsson. + + WebKitTestRunner needs layoutTestController.findString + https://bugs.webkit.org/show_bug.cgi?id=50238 + + * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp: + (WTR::LayoutTestController::findString): Added. + * WebKitTestRunner/InjectedBundle/LayoutTestController.h: + +2010-11-30 Steve Falkenburg + + Reviewed by Adam Roben. + + All projects on Windows should use cmd files for build events + https://bugs.webkit.org/show_bug.cgi?id=50213 + + * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePluginCommon.vsprops: + * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePluginPostBuild.cmd: Added. + * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePluginPreBuild.cmd: Added. + * DumpRenderTree/win/DumpRenderTreeCommon.vsprops: + * DumpRenderTree/win/DumpRenderTreePostBuild.cmd: Added. + * DumpRenderTree/win/DumpRenderTreePreBuild.cmd: Added. + * DumpRenderTree/win/ImageDiffCommon.vsprops: + * DumpRenderTree/win/ImageDiffPostBuild.cmd: Added. + * DumpRenderTree/win/ImageDiffPreBuild.cmd: Added. + * MiniBrowser/Configurations/MiniBrowserCFLite.vsprops: + * MiniBrowser/Configurations/MiniBrowserCommon.vsprops: + * MiniBrowser/Configurations/MiniBrowserCoreFoundation.vsprops: + * MiniBrowser/MiniBrowserPostBuild.cmd: Added. + * MiniBrowser/MiniBrowserPreBuild.cmd: Added. + * TestWebKitAPI/Configurations/TestWebKitAPICommon.vsprops: + * TestWebKitAPI/win/TestWebKitAPIPostBuild.cmd: Added. + * TestWebKitAPI/win/TestWebKitAPIPreBuild.cmd: Added. + * WebKitAPITest/WebKitAPITestCommon.vsprops: + * WebKitAPITest/WebKitAPITestPostBuild.cmd: Added. + * WebKitAPITest/WebKitAPITestPreBuild.cmd: Added. + * WebKitTestRunner/Configurations/InjectedBundleCommon.vsprops: + * WebKitTestRunner/Configurations/WebKitTestRunnerCommon.vsprops: + * WebKitTestRunner/win/InjectedBundlePostBuild.cmd: Added. + * WebKitTestRunner/win/InjectedBundlePreBuild.cmd: Added. + * WebKitTestRunner/win/WebKitTestRunnerPostBuild.cmd: Added. + * WebKitTestRunner/win/WebKitTestRunnerPreBuild.cmd: Added. + * WinLauncher/WinLauncherCommon.vsprops: + * WinLauncher/WinLauncherPostBuild.cmd: Added. + * WinLauncher/WinLauncherPreBuild.cmd: Added. + +2010-11-29 Dan Bernstein + + GTK DumpRenderTree build fix after r72887. + + * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp: + (LayoutTestController::findString): + +2010-11-29 Dan Bernstein + + Windows DumpRenderTree build fix after r72887. + + * DumpRenderTree/win/LayoutTestControllerWin.cpp: + (LayoutTestController::findString): Added empty implementation. + +2010-11-29 Dan Bernstein + + Reviewed by Darin Adler. + + DumpRenderTree changes for testing the text search API. + https://bugs.webkit.org/show_bug.cgi?id=50038 + + * DumpRenderTree/LayoutTestController.cpp: + (findStringCallback): + (LayoutTestController::staticFunctions): + * DumpRenderTree/LayoutTestController.h: + * DumpRenderTree/mac/LayoutTestControllerMac.mm: + (LayoutTestController::findString): + * MiniBrowser/mac/BrowserWindowController.m: + (-[BrowserWindowController find:]): + +2010-11-29 Johnny Ding + + Unreviewed: Add myself to the list of Committers. + + * Scripts/webkitpy/common/config/committers.py: + +2010-11-29 Mark Rowe + + Reviewed by Adele Peterson. + + DumpRenderTree fails to build. + + * DumpRenderTree/mac/PerlSupport/Makefile: Skip generating wrappers. + +2010-11-29 Mark Rowe + + Reviewed by Adele Peterson. + + DumpRenderTree fails to build. + + * DumpRenderTree/mac/PerlSupport/DumpRenderTreeSupportPregenerated.pm: Renamed from WebKitTools/DumpRenderTree/mac/PerlSupport/DumpRenderTreeSupportTiger.pm. + * DumpRenderTree/mac/PerlSupport/DumpRenderTreeSupport_wrapPregenerated.c: Renamed from WebKitTools/DumpRenderTree/mac/PerlSupport/DumpRenderTreeSupport_wrapTiger.c. + * DumpRenderTree/mac/PerlSupport/Makefile: + +2010-11-29 Mario Sanchez Prada + + Reviewed by Martin Robinson. + + [GTK] Null-check needed in DRT's AccessibilityUIElement::allAtributes() + https://bugs.webkit.org/show_bug.cgi?id=50154 + + Added missing checks to allAttributes(). + + * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp: + (AccessibilityUIElement::allAttributes): Added missing checks. + +2010-11-29 Laszlo Gombos + + Reviewed by Kenneth Rohde Christiansen. + + [Qt] Allow pre-generation for package builds for WebKit2 + https://bugs.webkit.org/show_bug.cgi?id=50139 + + Use a build variable for the generated directory path and set the + value based on CONFIG just like for WebKit1. + + For non-package builds use a relative base path for the + genrated directory just like for WebKit1. + + * WebKitTestRunner/InjectedBundle/qt/InjectedBundle.pro: + * WebKitTestRunner/qt/WebKitTestRunner.pro: + +2010-11-28 Laszlo Gombos + + Reviewed by Kenneth Rohde Christiansen. + + [Qt] Move some build logic from Qt to platform independent code + https://bugs.webkit.org/show_bug.cgi?id=50134 + + Create target directories inside generate-forwarding-headers.pl. + + * Scripts/generate-forwarding-headers.pl: + +2010-11-24 Nicolas Dufresne + + Reviewed by Martin Robinson. + + [GTK] Windowless plugins gets broken key input + https://bugs.webkit.org/show_bug.cgi?id=49927 + + Convert the XEvent::keycode to ASCII before printing it. Not + doing this was causing false positive in + plugins/keyboard-events.html. + + * DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp: + (keycode_to_char): + (webkit_test_plugin_handle_event): + +2010-11-24 Jan Erik Hanssen + + Reviewed by Antonio Gomes. + + [Qt] Html autofocus not working with QGraphicsWebView + https://bugs.webkit.org/show_bug.cgi?id=43169 + + Tell the scene to set the webview item as the currently + focused item. This makes the input field with autofocus get + focus as it should. + + * QtTestBrowser/webview.cpp: + (WebViewGraphicsBased::WebViewGraphicsBased): + +2010-11-24 Dirk Pranke + + Reviewed by Tony Chang. + + nrwt - clean up create_driver interface and print out the + command line used for DumpRenderTree/TestShell. + + This patch adds a driver_cmd_line() call to the Port class in + order to retrive the command line to print it out (as part of + --print config). + + In addition, this patch cleans up the Port.create_driver() + signature and the Driver constructor interface to take a worker + number and no longer require the image_path argument (Chromium's + drivers now synthesize the image_path from the worker number + internally). + + https://bugs.webkit.org/show_bug.cgi?id=49934 + + * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py: + * Scripts/webkitpy/layout_tests/layout_package/printing.py: + * Scripts/webkitpy/layout_tests/layout_package/printing_unittest.py: + * Scripts/webkitpy/layout_tests/port/base.py: + * Scripts/webkitpy/layout_tests/port/base_unittest.py: + * Scripts/webkitpy/layout_tests/port/chromium.py: + * Scripts/webkitpy/layout_tests/port/chromium_unittest.py: + * Scripts/webkitpy/layout_tests/port/dryrun.py: + * Scripts/webkitpy/layout_tests/port/port_testcase.py: + * Scripts/webkitpy/layout_tests/port/test.py: + * Scripts/webkitpy/layout_tests/port/webkit.py: + * Scripts/webkitpy/layout_tests/run_webkit_tests.py: + * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py: + +2010-11-24 Ojan Vafai + + Reviewed by Tony Chang. + + [chromium] improve memory usage for test results server and store fewer runs + https://bugs.webkit.org/show_bug.cgi?id=50035 + + Store fewer runs and don't pass full files around when we only need bools. + Greatly improves error rates on test-results.appspot.com. + + * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py: + * TestResultServer/handlers/testfilehandler.py: + * TestResultServer/model/dashboardfile.py: + * TestResultServer/model/jsonresults.py: + +2010-11-24 Dirk Pranke + + Reviewed by Tony Chang. + + This patch implements the first part of the manager side of the + Broker objects - it handles creating threads, waiting for them + to complete, and running a single-threaded loop as well. + + https://bugs.webkit.org/show_bug.cgi?id=49779 + + * Scripts/webkitpy/layout_tests/layout_package/message_broker.py: + * Scripts/webkitpy/layout_tests/layout_package/message_broker_unittest.py: + * Scripts/webkitpy/layout_tests/run_webkit_tests.py: + * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py: + +2010-11-24 Mihai Parparita + + Reviewed by David Levin. + + DRT should not generate pixel output for text/plain tests + https://bugs.webkit.org/show_bug.cgi?id=50002 + + Modify Mac, Windows and GTK DRT implementations to disable pixel output + when encountering a text/plain response (the Chromium one already does + this, and none of the other ports special-case text/plain output in + the first place). + + * DumpRenderTree/gtk/DumpRenderTree.cpp: + (dump): + * DumpRenderTree/mac/DumpRenderTree.mm: + (dump): + * DumpRenderTree/win/DumpRenderTree.cpp: + (dump): + +2010-11-24 Andras Becsi + + Unreviewed. + + Add my other email address to committers.py. + + * Scripts/webkitpy/common/config/committers.py: + +2010-11-24 Andras Becsi + + Reviewed by Csaba Osztrogonác. + + Make build-webkit --minimal build with ENABLE_INSPECTOR=0 + https://bugs.webkit.org/show_bug.cgi?id=49975 + + * Scripts/build-webkit: Add ENABLE_INSPECTOR define to features, + to enable the script to define it 0 in case of a minimal build. + +2010-11-24 Martin Robinson + + Reviewed by Xan Lopez. + + [GTK] The WebKitWebView should expose a set of signals encapsulating the behavior of the EditorClient + https://bugs.webkit.org/show_bug.cgi?id=49143 + + * DumpRenderTree/gtk/DumpRenderTree.cpp: + (createWebView): Call the new connectEditingCallbacks function. + * DumpRenderTree/gtk/EditingCallbacks.cpp: Added. + (dumpNodePath): + (dumpRange): + (insertActionString): + (selectionAffinityString): + (shouldBeginEditing): + (shouldEndEditing): + (shouldInsertNode): + (shouldInsertText): + (shouldDeleteRange): + (shouldShowDeleteInterfaceForElement): + (shouldChangeSelectedRange): + (shouldApplyStyle): + (editingBegan): + (userChangedContents): + (editingEnded): + (selectionChanged): + (connectEditingCallbacks): + * DumpRenderTree/gtk/EditingCallbacks.h: Added. + * GNUmakefile.am: Added EditingCallbacks.{h,cpp} to the source list. + +2010-11-24 Yi Shen + + Reviewed by Andreas Kling. + + [Qt] Make QtTestBrowser remember the selected user agent + https://bugs.webkit.org/show_bug.cgi?id=50021 + + Set user agent for a new page by using the old page's + + * QtTestBrowser/mainwindow.cpp: + (MainWindow::setPage): + +2010-11-24 Patrick Gansterer + + Reviewed by Csaba Osztrogonác. + + Remove Bakefile build system files + https://bugs.webkit.org/show_bug.cgi?id=49983 + + r53757 only removed the content, but not the files. + This patch removes that empty files. + + * DumpRenderTree/wx/DumpRenderTree.bkl: Removed. + * wx/browser/browser.bkl: Removed. + * wx/build-wxwebkit: Removed. + +2010-11-23 Dirk Pranke + + Reviewed by Tony Chang. + + This patch cleans up the logic used to shard tests into groups a + bit and adds the --worker-model flag to NRWT. The flag is only + used at the moment to control whether to run single-threaded or + not, but eventually will also allow toggling between threads and + processes. + + Also add a minor cleanup with _test_is_slow(), which just + eliminates some repetition and gives slightly better encapsulation. + + https://bugs.webkit.org/show_bug.cgi?id=49773 + + * Scripts/webkitpy/layout_tests/run_webkit_tests.py: + * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py: + +2010-11-23 Mihai Parparita + + Reviewed by Tony Chang. + + Rebaseline server: list current baselines and platforms + https://bugs.webkit.org/show_bug.cgi?id=49991 + + List existing baselines (with Trac links) for tests. + + Add dropdowns for choosing with platform baselines to target (and what + to do with existing ones). + + Also fix MockFileSystem.join to behave more like os.path.join (unit + test was ending up with two consecutive slashes in a layout test + path). + + * Scripts/webkitpy/common/system/filesystem_mock.py: + * Scripts/webkitpy/tool/commands/data/rebaselineserver/index.html: + * Scripts/webkitpy/tool/commands/data/rebaselineserver/main.css: + * Scripts/webkitpy/tool/commands/data/rebaselineserver/main.js: + * Scripts/webkitpy/tool/commands/data/rebaselineserver/queue.js: + * Scripts/webkitpy/tool/commands/data/rebaselineserver/util.js: + * Scripts/webkitpy/tool/commands/rebaselineserver.py: + * Scripts/webkitpy/tool/commands/rebaselineserver_unittest.py: Added. + +2010-11-23 Ojan Vafai + + Reviewed by Tony Chang. + + remove timeout argument to urlopen + https://bugs.webkit.org/show_bug.cgi?id=49995 + + Apparently the version of python we have on the bots doesn't accept a timeout argument. + + * Scripts/webkitpy/layout_tests/layout_package/test_results_uploader.py: + +2010-11-23 Sheriff Bot + + Unreviewed, rolling out r72628. + http://trac.webkit.org/changeset/72628 + https://bugs.webkit.org/show_bug.cgi?id=49994 + + This patch is causing layout-test failtures on GTK Linux + 64-bit Debug (Requested by ctguil on #webkit). + + * DumpRenderTree/chromium/AccessibilityUIElement.cpp: + (AccessibilityUIElement::AccessibilityUIElement): + (AccessibilityUIElement::parentElementCallback): + * DumpRenderTree/chromium/AccessibilityUIElement.h: + * DumpRenderTree/chromium/CppBoundClass.cpp: + * DumpRenderTree/chromium/CppBoundClass.h: + +2010-11-22 Ojan Vafai + + Reviewed by Tony Chang. + + speculative fix for upload errors: stop using mechanize to upload to test-results.appspot.com + https://bugs.webkit.org/show_bug.cgi?id=49944 + + * Scripts/webkitpy/layout_tests/layout_package/test_results_uploader.py: + +2010-11-23 Chris Guillory + + Reviewed by Dimitri Glazkov. + + Include the FrameView widget of a RenderWidget in the accessibility tree. + https://bugs.webkit.org/show_bug.cgi?id=49106 + + * DumpRenderTree/chromium/AccessibilityUIElement.cpp: + (AccessibilityUIElement::AccessibilityUIElement): + (AccessibilityUIElement::parentElementCallback): + (AccessibilityUIElement::isEqualCallback): + * DumpRenderTree/chromium/AccessibilityUIElement.h: + * DumpRenderTree/chromium/CppBoundClass.cpp: + (CppBoundClass::getFromCppVariant): + * DumpRenderTree/chromium/CppBoundClass.h: + +2010-11-23 Alex Grilo + + Reviewed by Kenneth Rohde Christiansen. + + [EFL] Add tiled backing store to EWebLauncher + https://bugs.webkit.org/show_bug.cgi?id=45777 + + Allow EWebLauncher to choose between single and tiled backing store + + * EWebLauncher/main.c: + (on_key_down): + (browserCreate): + (main): + +2010-11-23 Simon Hausmann + + Reviewed by Tor Arne Vestbø. + + [Qt] Review the setUserPermission & friends API + https://bugs.webkit.org/show_bug.cgi?id=46810 + + Renamed requestPermissionFromUser to featurePermissionRequested + and cancelRequestsForPermission to featurePermissionRequestCanceled. + + * DumpRenderTree/qt/DumpRenderTreeQt.cpp: + (WebCore::WebPage::WebPage): + * QtTestBrowser/webpage.cpp: + (WebPage::WebPage): + (WebPage::featurePermissionRequestCanceled): + * QtTestBrowser/webpage.h: + +2010-11-23 Simon Hausmann + + Reviewed by Tor Arne Vestbø. + + [Qt] Review the setUserPermission & friends API + https://bugs.webkit.org/show_bug.cgi?id=46810 + + Rename setUserPermission to setFeaturePermission + + * DumpRenderTree/qt/DumpRenderTreeQt.cpp: + (WebCore::WebPage::requestPermission): + (WebCore::WebPage::permissionSet): + * DumpRenderTree/qt/LayoutTestControllerQt.cpp: + (LayoutTestController::grantDesktopNotificationPermission): + * QtTestBrowser/webpage.cpp: + (WebPage::requestPermission): + +2010-11-23 Simon Hausmann + + Reviewed by Tor Arne Vestbø. + + [Qt] Review the setUserPermission & friends API + https://bugs.webkit.org/show_bug.cgi?id=46810 + + Rename PermissionDomain to Feature, NotificationsPermissionDomain to Notifications + and GeolocationPermissionDomain to Geolocation. + + * DumpRenderTree/qt/DumpRenderTreeQt.cpp: + (WebCore::WebPage::WebPage): + (WebCore::WebPage::requestPermission): + (WebCore::WebPage::cancelPermission): + (WebCore::WebPage::permissionSet): + (WebCore::DumpRenderTree::geolocationPermissionSet): + * DumpRenderTree/qt/DumpRenderTreeQt.h: + * DumpRenderTree/qt/LayoutTestControllerQt.cpp: + (LayoutTestController::grantDesktopNotificationPermission): + * QtTestBrowser/webpage.cpp: + (WebPage::WebPage): + (WebPage::requestPermission): + (WebPage::cancelRequestsForPermission): + * QtTestBrowser/webpage.h: + +2010-11-23 Simon Hausmann + + Reviewed by Tor Arne Vestbø. + + [Qt] Review the setUserPermission & friends API + https://bugs.webkit.org/show_bug.cgi?id=46810 + + Add a ByUser suffix to PermissionGranted/Denied. In the future + we can add PermissionGrantedByDefault. + + + * DumpRenderTree/qt/DumpRenderTreeQt.cpp: + (WebCore::WebPage::requestPermission): + (WebCore::WebPage::permissionSet): + * DumpRenderTree/qt/LayoutTestControllerQt.cpp: + (LayoutTestController::grantDesktopNotificationPermission): + * QtTestBrowser/webpage.cpp: + (WebPage::requestPermission): + +2010-11-18 Satish Sampath + + Reviewed by Jeremy Orlow. + + For speech input event, send an event object containing all the recognition results and metadata. + https://bugs.webkit.org/show_bug.cgi?id=49736 + + Updated DRT by renaming the mock result method on all platforms to the new signature. + + * DumpRenderTree/LayoutTestController.cpp: + (addMockSpeechInputResultCallback): + (LayoutTestController::staticFunctions): + * DumpRenderTree/LayoutTestController.h: + * DumpRenderTree/chromium/LayoutTestController.cpp: + (LayoutTestController::LayoutTestController): + (LayoutTestController::addMockSpeechInputResult): + * DumpRenderTree/chromium/LayoutTestController.h: + * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp: + (LayoutTestController::addMockSpeechInputResult): + * DumpRenderTree/mac/LayoutTestControllerMac.mm: + (LayoutTestController::addMockSpeechInputResult): + * DumpRenderTree/qt/LayoutTestControllerQt.cpp: + (LayoutTestController::addMockSpeechInputResult): + * DumpRenderTree/qt/LayoutTestControllerQt.h: + * DumpRenderTree/win/LayoutTestControllerWin.cpp: + (LayoutTestController::addMockSpeechInputResult): + * DumpRenderTree/wx/LayoutTestControllerWx.cpp: + (LayoutTestController::addMockSpeechInputResult): + +2010-11-22 Dirk Pranke + + Reviewed by Tony Chang. + + Fix some spacing issues with log messages with + new-run-webkit-tests --verbose. + + https://bugs.webkit.org/show_bug.cgi?id=49936 + + * Scripts/webkitpy/layout_tests/layout_package/printing.py: + +2010-11-22 Ojan Vafai + + Reviewed by Adam Barth. + + update scm to work with different remote branches + https://bugs.webkit.org/show_bug.cgi?id=49949 + + This works if there are multiple svn tracking branches + and/or if the tracking branch is refs/remots/origin/master + instead of refs/remotes/trunk which is the direction we're trying + to head since that makes fetches faster. + + * Scripts/webkitpy/common/checkout/scm.py: + * Scripts/webkitpy/common/checkout/scm_unittest.py: + +2010-11-22 Hayato Ito + + Reviewed by Shinichiro Hamaji. + + Ignore reference files which will be used by reftests when collecting + test cases. + https://bugs.webkit.org/show_bug.cgi?id=49835 + + * Scripts/webkitpy/layout_tests/port/test_files.py: + * Scripts/webkitpy/layout_tests/port/test_files_unittest.py: + +2010-11-22 Adam Roben + + Use paths relative to $WebKitVSPropsRedirectionDir to access shared .vsprops files + + Apple's Windows build allows placing header files and import libraries for WebKit's + dependencies (CoreGraphics, CFNetwork, SQLite, etc.) outside the source tree via the + $WebKitLibrariesDir environment variable. This is both required for production builds and + convenient for Apple-internal developer builds. Apple's production builds also require that + WebKit's shared .vsprops files be accessed relative to $WebKitLibrariesDir. In production + builds, the files are copied into that directory tree by the + WebKitLibraries/win/tools/WinTools.make file. In Apple-internal developer builds, the + copying is done by + JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make. + + This .vsprops copying is problematic in one very important case: when a developer updates + their source tree and then tries to build. Visual Studio only reads .vsprops files when a + project is first loaded. So, when Visual Studio is first opened after the .vsprops files are + updated, it reads in the old files that were already residing in $WebKitLibrariesDir. When a + build is started, JavaScriptCoreGenerated.make copies the new .vsprops files into + $WebKitLibrariesDir, but Visual Studio will not pick up the changes. The rest of the build + will proceed with out-of-date .vsprops files, which will likely result in a build failure. + + To fix this, we now use normal relative paths to access the .vsprops files in the source + tree rather than in $WebKitLibrariesDir, but prefix those paths with a new environment + variable, $WebKitVSPropsRedirectionDir. In developer builds, this environment variable is + unset, so the normal relative paths are used to read the .vsprops files out of the source + tree directly. In production builds, this environment variable is set to a fake directory + that will cause the .vsprops files in $WebKitLibrariesDir to be found when the relative path + is resolved. + + For example, JavaScriptCore.vcproj uses this path for FeatureDefines.vsprops: + + $(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\FeatureDefines.vsprops + + In developer builds, where $WebKitVSPropsRedirectionDir is unset, this will point to the + files in WebKitLibraries\win\tools\vsprops in the source tree. In production builds, + JavaScriptCore.make sets $WebKitVSPropsRedirectionDir to + "$(SRCROOT)\AppleInternal\tools\vsprops\OpenSource\1\2\3\", so the full path for + FeatureDefines.vsprops becomes: + + $(SRCROOT)\AppleInternal\tools\vsprops\OpenSource\1\2\3\..\..\..\WebKitLibraries\win\tools\vsprops\FeatureDefines.vsprops + + which resolves to: + + $(SRCROOT)\AppleInternal\tools\vsprops\OpenSource\WebKitLibraries\win\tools\vsprops\FeatureDefines.vsprops + + (We rely on the fact that Windows doesn't care whether the directories "1", "2", and "3" + actually exist since they are matched by an equal number of ".." path components.) + + Note that Visual Studio still won't pick up changes made to .vsprops files while Visual + Studio is open, but that problem hasn't seemed to cause developers many headaches so far. + + Fixes Windows build fails mysteriously when .vsprops files are + updated + + Reviewed by Dave Hyatt. + + * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj: + * DumpRenderTree/win/DumpRenderTree.vcproj: + * DumpRenderTree/win/ImageDiff.vcproj: + * FindSafari/FindSafari.vcproj: + * MiniBrowser/MiniBrowser.vcproj: + * TestWebKitAPI/win/TestWebKitAPI.vcproj: + * TestWebKitAPI/win/TestWebKitAPIGenerated.vcproj: + * WebKitAPITest/WebKitAPITest.vcproj: + * WebKitLauncherWin/WebKitLauncherWin.vcproj: + * WebKitTestRunner/win/InjectedBundle.vcproj: + * WebKitTestRunner/win/WebKitTestRunner.vcproj: + * WinLauncher/WinLauncher.vcproj: + * record-memory-win/record-memory-win.vcproj: + Changed to use paths relative to $WebKitVSPropsRedirectionDir to access shared .vsprops + files. + +2010-11-22 Adam Roben + + Make it possible to run tests on Windows without Visual Studio or VC++ + Express installed + + webkitdir.pm::setupCygwinEnv dies when Visual Studio and VC++ Express + are not installed. But this function doesn't need to be called when we + already have a build available and are just trying to run the tests. + + Fixes New Windows 7 bot can't run tests + because Visual Studio/VC++ Express aren't installed + + Reviewed by Dave Hyatt. + + * Scripts/webkitdirs.pm: + (determineConfigurationForVisualStudio): Don't call setupCygwinEnv, as + it is not needed by this function. Also added a FIXME. + + (usingVisualStudioExpress): Call setupCygwinEnv directly rather than + relying on determineConfigurationForVisualStudio doing it. + +2010-11-19 Hayato Ito + + Reviewed by Shinichiro Hamaji. + + Simplify Driver.run_test() so that it takes only one parameter, TestInput. + + https://bugs.webkit.org/show_bug.cgi?id=49812 + + * Scripts/webkitpy/layout_tests/driver_test.py: + * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py: + * Scripts/webkitpy/layout_tests/port/base.py: + * Scripts/webkitpy/layout_tests/port/base_unittest.py: + * Scripts/webkitpy/layout_tests/port/chromium.py: + * Scripts/webkitpy/layout_tests/port/dryrun.py: + * Scripts/webkitpy/layout_tests/port/test.py: + * Scripts/webkitpy/layout_tests/port/webkit.py: + * Scripts/webkitpy/layout_tests/run_webkit_tests.py: + * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py: + +2010-11-22 Hayato Ito + + Reviewed by Tony Chang. + + [NRWT] Retry a few times in reading a png image to avoid a race condition. + + https://bugs.webkit.org/show_bug.cgi?id=49924 + + * Scripts/webkitpy/layout_tests/port/chromium.py: + +2010-11-22 João Paulo Rechi Vita + + Reviewed by Kenneth Rohde Christiansen. + + Fix EWebLauncher zoom discretization + https://bugs.webkit.org/show_bug.cgi?id=49810 + + * EWebLauncher/main.c: + (nearest_zoom_level_get): + (zoom_level_set): + (on_load_finished): + (on_key_down): + +2010-11-21 Sam Weinig + + Rubber-stamped by Dan Bernstein. + + Fix ~300 WebKit2 tests by enabling developer extras preference. + + * WebKitTestRunner/TestController.cpp: + (WTR::TestController::resetStateToConsistentValues): + +2010-11-21 Sam Weinig + + Reviewed by Dan Bernstein. + + Textareas should be resizable by default + https://bugs.webkit.org/show_bug.cgi?id=49892 + + * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: + * TestWebKitAPI/Tests/WebKit2/WKPreferences.cpp: Added. + * TestWebKitAPI/win/TestWebKitAPI.vcproj: + Add preferences test. + +2010-11-19 Mihai Parparita + + Reviewed by Tony Chang. + + Rebaseline server: checksum-only differences and prefetching + https://bugs.webkit.org/show_bug.cgi?id=49841 + + Add support for image test results where the only difference is in the + checksum. + + Add prefetching of the image results from the next test. + + * Scripts/webkitpy/tool/commands/data/rebaselineserver/index.html: + * Scripts/webkitpy/tool/commands/data/rebaselineserver/main.css: + * Scripts/webkitpy/tool/commands/data/rebaselineserver/main.js: + +2010-11-19 Dirk Pranke + + Reviewed by Tony Chang. + + nrwt multiprocessing - add 'worker number' concept, move stuff to worker thread + + Add the 'worker number' and 'worker name' concepts to the + TestShellThread objects, and move test_types and test_args from + the TestRunner to the TestShellThread. + + https://bugs.webkit.org/show_bug.cgi?id=49768 + + * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py: + * Scripts/webkitpy/layout_tests/run_webkit_tests.py: + +2010-11-19 Dirk Pranke + + Reviewed by Ojan Vafai. + + Do some minor cleanup and bug fixing. + + https://bugs.webkit.org/show_bug.cgi?id=49777 + + * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py: + * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py: + +2010-11-19 Dirk Pranke + + Reviewed by Ojan Vafai. + + nrwt - config.build_directory() is busted + + Fixes a typo that was causing us to usually return the top level + directory WebKitBuild instead of WebKitBuild/{Debug,Release}. The + bug was hidden by test stubs that were too simplistic :(. + + https://bugs.webkit.org/show_bug.cgi?id=49815 + + * Scripts/webkitpy/common/system/executive_mock.py: + * Scripts/webkitpy/layout_tests/port/config.py: + * Scripts/webkitpy/layout_tests/port/config_unittest.py: + +2010-11-19 Steve Falkenburg + + Reviewed by Adam Roben. + + Add Debug_Cairo_CFLite and Release_Cairo_CFLite configurations for all vcproj files + https://bugs.webkit.org/show_bug.cgi?id=49819 + + * DumpRenderTree/DumpRenderTree.sln: + * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj: + * DumpRenderTree/win/DumpRenderTree.vcproj: + * DumpRenderTree/win/ImageDiff.vcproj: + * FindSafari/FindSafari.vcproj: + * MiniBrowser/MiniBrowser.vcproj: + * TestWebKitAPI/win/TestWebKitAPI.sln: + * TestWebKitAPI/win/TestWebKitAPI.vcproj: + * TestWebKitAPI/win/TestWebKitAPIGenerated.vcproj: + * WebKitAPITest/WebKitAPITest.vcproj: + * WebKitLauncherWin/WebKitLauncherWin.vcproj: + * WebKitTestRunner/win/InjectedBundle.vcproj: + * WebKitTestRunner/win/InjectedBundleGenerated.vcproj: + * WebKitTestRunner/win/WebKitTestRunner.vcproj: + * WinLauncher/WinLauncher.vcproj: + * record-memory-win/record-memory-win.vcproj: + +2010-11-19 Adam Roben + + Add some more Windows slaves + + This is probably more than we will be using in the immediate future, + but having some extra slave names makes experimenting with different + configurations easier. + + Reviewed by Jon Honeycutt. + + * BuildSlaveSupport/build.webkit.org-config/config.json: Added 5 more + Windows slaves and distributed them among the three different Test + builders. + +2010-11-19 Kinuko Yasuda + + Reviewed by Ojan Vafai. + + [Chromium] REGRESSION: Record actual test results in the JSON result summary for non-layout tests + https://bugs.webkit.org/show_bug.cgi?id=49702 + + Re-landing r72357 with a test fix. + + * Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py: + * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py: + * Scripts/webkitpy/layout_tests/layout_package/json_results_generator_unittest.py: + +2010-11-19 Avi Drissman + + Reviewed by Antonio Gomes. + + Complete support for Unix editing mode + https://bugs.webkit.org/show_bug.cgi?id=49757 + + * DumpRenderTree/LayoutTestController.cpp: + (setEditingBehaviorCallback): + * DumpRenderTree/chromium/LayoutTestController.cpp: + (LayoutTestController::setEditingBehavior): + +2010-11-19 Adam Roben + + Fix run-javascriptcore-tests when there's a space in the path to + testapi + + Reviewed by Sam Weinig. + + * Scripts/run-javascriptcore-tests: Use an indirect object when calling + system() to force it to interpret spaces in the path correctly. + +2010-11-19 Adam Roben + + Update scripts for .exe name changes after r72327 + + As of r72327, the "_debug" suffix is only used in Debug_All builds. + + Reviewed by Sam Weinig. + + * Scripts/run-javascriptcore-tests: + (testapiPath): + + * Scripts/sunspider-compare-results: + (pathToBuiltJSC): + + * Scripts/webkitdirs.pm: + (jscPath): + (safariPath): + +2010-11-19 Steve Falkenburg + + Reviewed by Darin Adler. + + Normalize Cairo/CFLite project/solution configuration names + https://bugs.webkit.org/show_bug.cgi?id=49818 + + * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj: + * DumpRenderTree/win/DumpRenderTree.vcproj: + * DumpRenderTree/win/ImageDiff.vcproj: + * MiniBrowser/MiniBrowser.vcproj: + * TestWebKitAPI/win/TestWebKitAPI.sln: + * TestWebKitAPI/win/TestWebKitAPI.vcproj: + * WebKitAPITest/WebKitAPITest.vcproj: + * WebKitTestRunner/win/InjectedBundle.vcproj: + * WebKitTestRunner/win/WebKitTestRunner.vcproj: + * WinLauncher/WinLauncher.vcproj: + * Scripts/webkitdirs.pm: Updated cairo build configs. + +2010-11-18 Steve Falkenburg + + Reviewed by Adam Roben. + + Windows vcproj configuration names should be normalized across projects + https://bugs.webkit.org/show_bug.cgi?id=49776 + + * DumpRenderTree/DumpRenderTree.sln: + * FindSafari/FindSafari.vcproj: + * TestWebKitAPI/win/TestWebKitAPI.sln: + * TestWebKitAPI/win/TestWebKitAPIGenerated.vcproj: + * TestWebKitAPI/win/TestWebKitAPIGeneratedCommon.vsprops: Added. + * WebKitAPITest/WebKitAPITest.vcproj: + * WebKitAPITest/WebKitAPITestCommon.vsprops: + * WebKitLauncherWin/WebKitLauncherWin.vcproj: + * WebKitTestRunner/WebKitTestRunner.sln: + * WebKitTestRunner/win/InjectedBundleGenerated.vcproj: + * WebKitTestRunner/win/InjectedBundleGeneratedCommon.vsprops: Added. + * record-memory-win/record-memory-win.vcproj: + +2010-11-18 Gavin Barraclough + + Build fix - as per DRT-mac, always enabled developer extras, + in win/qt/gtk DRT. + + This is necessary to enable rich exception messages to be generated + following https://bugs.webkit.org/show_bug.cgi?id=49708. + + * DumpRenderTree/gtk/DumpRenderTree.cpp: + (shouldEnableDeveloperExtras): + * DumpRenderTree/qt/DumpRenderTreeQt.cpp: + (WebCore::shouldEnableDeveloperExtras): + * DumpRenderTree/win/DumpRenderTree.cpp: + (shouldEnableDeveloperExtras): + +2010-11-18 Sheriff Bot + + Unreviewed, rolling out r72357. + http://trac.webkit.org/changeset/72357 + https://bugs.webkit.org/show_bug.cgi?id=49784 + + It broke test-webkitpy tests since the patch didn't have the + corresponding test update (Requested by kinuko on #webkit). + + * Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py: + * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py: + +2010-11-18 Mihai Parparita + + Reviewed by Tony Chang. + + Rebaseline server: add rebaseline queue + https://bugs.webkit.org/show_bug.cgi?id=49763 + + Add a UI queue (a multi-item + + +

+