WebKit Bugzilla
Attachment 359262 Details for
Bug 193487
: [WHLSL] Add the statement behavior checker
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-193487-20190116024410.patch (text/plain), 22.12 KB, created by
Myles C. Maxfield
on 2019-01-16 02:44:11 PST
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Myles C. Maxfield
Created:
2019-01-16 02:44:11 PST
Size:
22.12 KB
patch
obsolete
>Subversion Revision: 240032 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index d6adce9fbf75a41b2f62b65f3a293c916ec82cbb..4887bc42abf7d207061ffb943f3e3366d0d1f1e0 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,23 @@ >+2019-01-16 Myles C. Maxfield <mmaxfield@apple.com> >+ >+ [WHLSL] Add the statement behavior checker >+ https://bugs.webkit.org/show_bug.cgi?id=193487 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ This is a translation of https://github.com/gpuweb/WHLSL/blob/master/Spec/source/index.rst#typing-statements >+ into C++. It is meant to replace the ReturnChecker and UnreachableCodeChecker in the reference implementation. >+ >+ No new tests because it isn't hooked up yet. Not enough of the compiler exists to have any meaningful sort >+ of test. When enough of the compiler is present, I'll port the reference implementation's test suite. >+ >+ * Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.cpp: Added. >+ (WebCore::WHLSL::StatementBehaviorChecker::takeFunctionBehavior): >+ (WebCore::WHLSL::checkStatementBehavior): >+ * Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.h: Added. >+ * Sources.txt: >+ * WebCore.xcodeproj/project.pbxproj: >+ > 2019-01-15 Fujii Hironori <Hironori.Fujii@sony.com> > > Unreviewed WinCairo build fix. >diff --git a/Source/WebCore/Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.cpp b/Source/WebCore/Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.cpp >new file mode 100644 >index 0000000000000000000000000000000000000000..36be57a712ebe3e7853e228e60ce9652458a3f42 >--- /dev/null >+++ b/Source/WebCore/Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.cpp >@@ -0,0 +1,247 @@ >+/* >+ * Copyright (C) 2019 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 "WHLSLStatementBehaviorChecker.h" >+ >+#if ENABLE(WEBGPU) >+ >+#include "WHLSLDoWhileLoop.h" >+#include "WHLSLForLoop.h" >+#include "WHLSLIfStatement.h" >+#include "WHLSLInferTypes.h" >+#include "WHLSLProgram.h" >+#include "WHLSLSwitchStatement.h" >+#include "WHLSLWhileLoop.h" >+#include <cstdint> >+#include <wtf/OptionSet.h> >+#include <wtf/Vector.h> >+ >+namespace WebCore { >+ >+namespace WHLSL { >+ >+class StatementBehaviorChecker : public Visitor { >+public: >+ enum class Behavior : uint8_t { >+ Return = 1 << 0, >+ Break = 1 << 1, >+ Continue = 1 << 2, >+ Fallthrough = 1 << 3, >+ Nothing = 1 << 4 >+ }; >+ >+ OptionSet<Behavior> takeFunctionBehavior() >+ { >+ ASSERT(m_stack.size() == 1); >+ return m_stack.takeLast(); >+ } >+ >+private: >+ void visit(AST::Break&) override >+ { >+ m_stack.append({ Behavior::Break }); >+ } >+ >+ void visit(AST::Fallthrough&) override >+ { >+ m_stack.append({ Behavior::Fallthrough }); >+ } >+ >+ void visit(AST::Continue&) override >+ { >+ m_stack.append({ Behavior::Continue }); >+ } >+ >+ void visit(AST::Return&) override >+ { >+ m_stack.append({ Behavior::Return }); >+ } >+ >+ void visit(AST::Trap&) override >+ { >+ m_stack.append({ Behavior::Return }); >+ } >+ >+ void visit(AST::DoWhileLoop& doWhileLoop) override >+ { >+ checkErrorAndVisit(doWhileLoop.body()); >+ if (error()) >+ return; >+ auto b = m_stack.takeLast(); >+ b.remove(Behavior::Break); >+ b.remove(Behavior::Continue); >+ // FIXME: The spec says to add "Nothing" here, but I think the spec is wrong. >+ b.add(Behavior::Nothing); >+ m_stack.append(b); >+ } >+ >+ void visit(AST::ForLoop& forLoop) override >+ { >+ auto initialization = WTF::visit(WTF::makeVisitor([&](AST::VariableDeclarationsStatement& variableDeclarationsStatement) -> Optional<OptionSet<Behavior>> { >+ checkErrorAndVisit(variableDeclarationsStatement); >+ if (error()) >+ return WTF::nullopt; >+ return m_stack.takeLast(); >+ }, [&](UniqueRef<AST::Expression>&) -> Optional<OptionSet<Behavior>> { >+ return { Behavior::Nothing }; >+ }), forLoop.initialization()); >+ if (!initialization) >+ return; >+ >+ checkErrorAndVisit(forLoop.body()); >+ if (error()) >+ return; >+ auto b = m_stack.takeLast(); >+ b.remove(Behavior::Break); >+ b.remove(Behavior::Continue); >+ b.add(Behavior::Nothing); >+ m_stack.append(OptionSet<Behavior>::fromRaw(initialization->toRaw() | b.toRaw())); >+ } >+ >+ void visit(AST::WhileLoop& whileLoop) override >+ { >+ checkErrorAndVisit(whileLoop.body()); >+ if (error()) >+ return; >+ auto b = m_stack.takeLast(); >+ b.remove(Behavior::Break); >+ b.remove(Behavior::Continue); >+ b.add(Behavior::Nothing); >+ m_stack.append(b); >+ } >+ >+ void visit(AST::SwitchCase& switchCase) override >+ { >+ Visitor::visit(switchCase); >+ } >+ >+ void visit(AST::SwitchStatement& switchStatement) override >+ { >+ if (switchStatement.switchCases().isEmpty()) { >+ m_stack.append({ Behavior::Nothing }); >+ return; >+ } >+ >+ OptionSet<Behavior> reduction = { }; >+ for (auto& switchCase : switchStatement.switchCases()) { >+ checkErrorAndVisit(switchCase); >+ if (error()) >+ return; >+ auto b = m_stack.takeLast(); >+ reduction = OptionSet<Behavior>::fromRaw(reduction.toRaw() | b.toRaw()); >+ } >+ if (reduction.contains(Behavior::Nothing)) { >+ setError(); >+ return; >+ } >+ reduction.remove(Behavior::Break); >+ reduction.remove(Behavior::Fallthrough); >+ // FIXME: The spec says to add "Nothing" here, but I think the spec is wrong. >+ reduction.add(Behavior::Nothing); >+ m_stack.append(reduction); >+ } >+ void visit(AST::IfStatement& ifStatement) override >+ { >+ checkErrorAndVisit(ifStatement.body()); >+ if (error()) >+ return; >+ auto b = m_stack.takeLast(); >+ OptionSet<Behavior> bPrime; >+ if (ifStatement.elseBody()) { >+ checkErrorAndVisit(*ifStatement.elseBody()); >+ if (error()) >+ return; >+ bPrime = m_stack.takeLast(); >+ } else >+ bPrime = { Behavior::Nothing }; >+ m_stack.append(OptionSet<Behavior>::fromRaw(b.toRaw() | bPrime.toRaw())); >+ } >+ >+ void visit(AST::EffectfulExpressionStatement&) override >+ { >+ m_stack.append({ Behavior::Nothing }); >+ } >+ >+ void visit(AST::Block& block) override >+ { >+ if (block.statements().isEmpty()) { >+ m_stack.append({ Behavior::Nothing }); >+ return; >+ } >+ >+ OptionSet<Behavior> reduction = { }; >+ for (size_t i = 0; i < block.statements().size() - 1; ++i) { >+ checkErrorAndVisit(block.statements()[i]); >+ if (error()) >+ return; >+ auto b = m_stack.takeLast(); >+ if (!b.contains(Behavior::Nothing)) { >+ setError(); >+ return; >+ } >+ b.remove(Behavior::Nothing); >+ if (b.contains(Behavior::Fallthrough)) { >+ setError(); >+ return; >+ } >+ reduction = OptionSet<Behavior>::fromRaw(reduction.toRaw() | b.toRaw()); >+ } >+ checkErrorAndVisit(block.statements()[block.statements().size() - 1]); >+ if (error()) >+ return; >+ auto b = m_stack.takeLast(); >+ m_stack.append(OptionSet<Behavior>::fromRaw(reduction.toRaw() | b.toRaw())); >+ } >+ >+ void visit(AST::VariableDeclarationsStatement&) override >+ { >+ m_stack.append({ Behavior::Nothing }); >+ } >+ >+ Vector<OptionSet<Behavior>> m_stack; >+}; >+ >+bool checkStatementBehavior(Program& program) >+{ >+ StatementBehaviorChecker statementBehaviorChecker; >+ for (auto& functionDefinition : program.functionDefinitions()) { >+ if (matches(functionDefinition->type(), program.intrinsics().voidType())) >+ continue; >+ statementBehaviorChecker.Visitor::visit(functionDefinition); >+ if (statementBehaviorChecker.error()) >+ return false; >+ auto behavior = statementBehaviorChecker.takeFunctionBehavior(); >+ if (behavior != OptionSet<StatementBehaviorChecker::Behavior>(StatementBehaviorChecker::Behavior::Return)) >+ return false; >+ } >+ return true; >+} >+ >+} // namespace WHLSL >+ >+} // namespace WebCore >+ >+#endif // ENABLE(WEBGPU) >diff --git a/Source/WebCore/Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.h b/Source/WebCore/Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.h >new file mode 100644 >index 0000000000000000000000000000000000000000..aecdfe61fa802a2b44543a016b1d04e26e74b3ec >--- /dev/null >+++ b/Source/WebCore/Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.h >@@ -0,0 +1,42 @@ >+/* >+ * Copyright (C) 2019 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. >+ */ >+ >+#pragma once >+ >+#if ENABLE(WEBGPU) >+ >+namespace WebCore { >+ >+namespace WHLSL { >+ >+class Program; >+ >+bool checkStatementBehavior(Program&); >+ >+} >+ >+} >+ >+#endif >diff --git a/Source/WebCore/Sources.txt b/Source/WebCore/Sources.txt >index 446a806a878a51ab987bb7d1c37328cd8ee97c14..54443751e93ad3e2773f278c2d666c51cbbb14ac 100644 >--- a/Source/WebCore/Sources.txt >+++ b/Source/WebCore/Sources.txt >@@ -318,6 +318,7 @@ Modules/webgpu/WHLSL/WHLSLSynthesizeConstructors.cpp > Modules/webgpu/WHLSL/WHLSLSynthesizeEnumerationFunctions.cpp > Modules/webgpu/WHLSL/WHLSLSynthesizeStructureAccessors.cpp > Modules/webgpu/WHLSL/WHLSLIntrinsics.cpp >+Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.cpp > Modules/webgpu/WHLSL/WHLSLNameContext.cpp > Modules/webgpu/WHLSL/WHLSLNameResolver.cpp > Modules/webgpu/WHLSL/WHLSLResolveOverloadImpl.cpp >diff --git a/Source/WebCore/WebCore.xcodeproj/project.pbxproj b/Source/WebCore/WebCore.xcodeproj/project.pbxproj >index b96fa2dec41e49e314142d0b64522ba3c7924c6a..bd0d5a43d5edc11cf175682d32cd8d11c913e086 100644 >--- a/Source/WebCore/WebCore.xcodeproj/project.pbxproj >+++ b/Source/WebCore/WebCore.xcodeproj/project.pbxproj >@@ -2585,9 +2585,9 @@ > 91278D5E21DEDAD600B57184 /* PageAuditAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = 91278D5C21DEDAD500B57184 /* PageAuditAgent.h */; }; > 91278D6221DEDAF000B57184 /* WorkerAuditAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = 91278D6021DEDAF000B57184 /* WorkerAuditAgent.h */; }; > 9175CE5C21E281ED00DF2C27 /* InspectorAuditDOMObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 9175CE5821E281EC00DF2C27 /* InspectorAuditDOMObject.h */; }; >- 9175CE5C21E281ED00DF2C28 /* JSInspectorAuditDOMObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 9175CE5821E281EC00DF2C28 /* InspectorAuditDOMObject.h */; }; >+ 9175CE5C21E281ED00DF2C28 /* InspectorAuditDOMObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 9175CE5821E281EC00DF2C28 /* InspectorAuditDOMObject.h */; }; > 9175CE5E21E281ED00DF2C27 /* InspectorAuditAccessibilityObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 9175CE5A21E281ED00DF2C27 /* InspectorAuditAccessibilityObject.h */; }; >- 9175CE5E21E281ED00DF2C28 /* JSInspectorAuditAccessibilityObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 9175CE5A21E281ED00DF2C28 /* InspectorAuditAccessibilityObject.h */; }; >+ 9175CE5E21E281ED00DF2C28 /* InspectorAuditAccessibilityObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 9175CE5A21E281ED00DF2C28 /* InspectorAuditAccessibilityObject.h */; }; > 91B8F0B521953D65000C2B00 /* CertificateInfoBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 91B8F0B321953D65000C2B00 /* CertificateInfoBase.h */; settings = {ATTRIBUTES = (Private, ); }; }; > 91B952241F58A58F00931DC2 /* RecordingSwizzleTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 91B952221F58A58000931DC2 /* RecordingSwizzleTypes.h */; }; > 91C9F2F91AE3BEB00095B61C /* AXTextStateChangeIntent.h in Headers */ = {isa = PBXBuildFile; fileRef = 91C9F2F81AE3BE240095B61C /* AXTextStateChangeIntent.h */; settings = {ATTRIBUTES = (Private, ); }; }; >@@ -10394,13 +10394,13 @@ > 91278D5F21DEDAEF00B57184 /* WorkerAuditAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WorkerAuditAgent.cpp; sourceTree = "<group>"; }; > 91278D6021DEDAF000B57184 /* WorkerAuditAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WorkerAuditAgent.h; sourceTree = "<group>"; }; > 9175CE5721E281EB00DF2C27 /* InspectorAuditDOMObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorAuditDOMObject.cpp; sourceTree = "<group>"; }; >- 9175CE5721E281EB00DF2C28 /* JSInspectorAuditDOMObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorAuditDOMObject.cpp; sourceTree = "<group>"; }; >+ 9175CE5721E281EB00DF2C28 /* InspectorAuditDOMObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorAuditDOMObject.cpp; sourceTree = "<group>"; }; > 9175CE5821E281EC00DF2C27 /* InspectorAuditDOMObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorAuditDOMObject.h; sourceTree = "<group>"; }; >- 9175CE5821E281EC00DF2C28 /* JSInspectorAuditDOMObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorAuditDOMObject.h; sourceTree = "<group>"; }; >+ 9175CE5821E281EC00DF2C28 /* InspectorAuditDOMObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorAuditDOMObject.h; sourceTree = "<group>"; }; > 9175CE5921E281EC00DF2C27 /* InspectorAuditAccessibilityObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorAuditAccessibilityObject.cpp; sourceTree = "<group>"; }; >- 9175CE5921E281EC00DF2C28 /* JSInspectorAuditAccessibilityObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorAuditAccessibilityObject.cpp; sourceTree = "<group>"; }; >+ 9175CE5921E281EC00DF2C28 /* InspectorAuditAccessibilityObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorAuditAccessibilityObject.cpp; sourceTree = "<group>"; }; > 9175CE5A21E281ED00DF2C27 /* InspectorAuditAccessibilityObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorAuditAccessibilityObject.h; sourceTree = "<group>"; }; >- 9175CE5A21E281ED00DF2C28 /* JSInspectorAuditAccessibilityObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorAuditAccessibilityObject.h; sourceTree = "<group>"; }; >+ 9175CE5A21E281ED00DF2C28 /* InspectorAuditAccessibilityObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorAuditAccessibilityObject.h; sourceTree = "<group>"; }; > 91B8F0B321953D65000C2B00 /* CertificateInfoBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CertificateInfoBase.h; sourceTree = "<group>"; }; > 91B952221F58A58000931DC2 /* RecordingSwizzleTypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RecordingSwizzleTypes.h; sourceTree = "<group>"; }; > 91C9F2F81AE3BE240095B61C /* AXTextStateChangeIntent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AXTextStateChangeIntent.h; sourceTree = "<group>"; }; >@@ -13375,6 +13375,8 @@ > C234A9B521E92C23003C984D /* WHLSLSynthesizeStructureAccessors.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WHLSLSynthesizeStructureAccessors.h; sourceTree = "<group>"; }; > C234A9B621E92CC0003C984D /* WHLSLIntrinsics.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WHLSLIntrinsics.h; sourceTree = "<group>"; }; > C234A9B721E92CC1003C984D /* WHLSLIntrinsics.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = WHLSLIntrinsics.cpp; sourceTree = "<group>"; }; >+ C234A9C921EF2C77003C984D /* WHLSLStatementBehaviorChecker.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = WHLSLStatementBehaviorChecker.cpp; sourceTree = "<group>"; }; >+ C234A9CA21EF2C77003C984D /* WHLSLStatementBehaviorChecker.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WHLSLStatementBehaviorChecker.h; sourceTree = "<group>"; }; > C2458E611FE8979E00594759 /* FontCacheCoreText.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FontCacheCoreText.h; sourceTree = "<group>"; }; > C26017A11C72DC9900F74A16 /* CSSFontFaceSet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSSFontFaceSet.cpp; sourceTree = "<group>"; }; > C26017A21C72DC9900F74A16 /* CSSFontFaceSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSSFontFaceSet.h; sourceTree = "<group>"; }; >@@ -16937,12 +16939,12 @@ > isa = PBXGroup; > children = ( > A584FE2518637DAB00843B10 /* CommandLineAPIModuleSource.h */, >+ 9175CE5921E281EC00DF2C28 /* InspectorAuditAccessibilityObject.cpp */, >+ 9175CE5A21E281ED00DF2C28 /* InspectorAuditAccessibilityObject.h */, >+ 9175CE5721E281EB00DF2C28 /* InspectorAuditDOMObject.cpp */, >+ 9175CE5821E281EC00DF2C28 /* InspectorAuditDOMObject.h */, > A584FE391864E2D800843B10 /* JSCommandLineAPIHost.cpp */, > A584FE3A1864E2D800843B10 /* JSCommandLineAPIHost.h */, >- 9175CE5921E281EC00DF2C28 /* JSInspectorAuditAccessibilityObject.cpp */, >- 9175CE5A21E281ED00DF2C28 /* JSInspectorAuditAccessibilityObject.h */, >- 9175CE5721E281EB00DF2C28 /* JSInspectorAuditDOMObject.cpp */, >- 9175CE5821E281EC00DF2C28 /* JSInspectorAuditDOMObject.h */, > 7A0E771C10C00DB100A0276E /* JSInspectorFrontendHost.cpp */, > 7A0E771D10C00DB100A0276E /* JSInspectorFrontendHost.h */, > ); >@@ -25477,6 +25479,8 @@ > C234A99721E90F28003C984D /* WHLSLResolveOverloadImpl.h */, > C234A99D21E910BD003C984D /* WHLSLResolvingType.h */, > C21BF74521CD969800227979 /* WHLSLStandardLibrary.txt */, >+ C234A9C921EF2C77003C984D /* WHLSLStatementBehaviorChecker.cpp */, >+ C234A9CA21EF2C77003C984D /* WHLSLStatementBehaviorChecker.h */, > C234A9A921E92C17003C984D /* WHLSLSynthesizeArrayOperatorLength.cpp */, > C234A9AF21E92C1B003C984D /* WHLSLSynthesizeArrayOperatorLength.h */, > C234A9B021E92C1C003C984D /* WHLSLSynthesizeConstructors.cpp */, >@@ -29552,7 +29556,9 @@ > 93309DF2099E64920056E581 /* InsertTextCommand.h in Headers */, > A5B81CA71FAA44620037D1E6 /* InspectorApplicationCacheAgent.h in Headers */, > 9175CE5E21E281ED00DF2C27 /* InspectorAuditAccessibilityObject.h in Headers */, >+ 9175CE5E21E281ED00DF2C28 /* InspectorAuditAccessibilityObject.h in Headers */, > 9175CE5C21E281ED00DF2C27 /* InspectorAuditDOMObject.h in Headers */, >+ 9175CE5C21E281ED00DF2C28 /* InspectorAuditDOMObject.h in Headers */, > 6A22E8701F10418600F546C3 /* InspectorCanvas.h in Headers */, > A5B81CA81FAA44620037D1E6 /* InspectorCanvasAgent.h in Headers */, > 1C81B95C0E97330800266E07 /* InspectorClient.h in Headers */, >@@ -29985,8 +29991,6 @@ > A77979290D6B9E64003851B9 /* JSImageData.h in Headers */, > 7C193C011F5E11050088F3E6 /* JSImageSmoothingQuality.h in Headers */, > A86629D309DA2B48009633A6 /* JSInputEvent.h in Headers */, >- 9175CE5E21E281ED00DF2C28 /* JSInspectorAuditAccessibilityObject.h in Headers */, >- 9175CE5C21E281ED00DF2C28 /* JSInspectorAuditDOMObject.h in Headers */, > 7A0E771F10C00DB100A0276E /* JSInspectorFrontendHost.h in Headers */, > 0F4710E61DB700C7002DCEC3 /* JSIntersectionObserver.h in Headers */, > 0F8B45761DC41DBA00443C3F /* JSIntersectionObserverCallback.h in Headers */,
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 193487
:
359262
|
359342
|
359564
|
359645