⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Timeline



Jan 20, 2019:

11:31 PM Changeset in webkit [240230] by mmaxfield@apple.com
  • 14 edits
    7 copies
    6 adds in trunk/Source/WebCore

[WHLSL] Implement Metal code generation
https://bugs.webkit.org/show_bug.cgi?id=193531

Reviewed by Dean Jackson.

This implements the majority of the metal code generation piece. There are still a few pieces missing,
that I'll add in follow up patches. There's still enough complexity here that this is worth reviewing
on its own, though.

This patch includes a few pieces:

  • Metal typedefs for every WHLSL type. This analysis is actually pretty interesting, because complex

types depend on their inner types, and the inner types need to be emitted first. Therefore,
this patch implements a topological sort when emitting types. Also, WHLSL types need to be de-
duped because array references are implemented in MSL as structs, and if you have two structs
in MSL with the same contents, those two structs are not equal and cannot be assigned to each
other. So, this patch creates a trie to de-dup all the UnnamedTypes, and implements a
dependency graph which includes both nodes in the trie as well as NamedTypes which don't appear
in the trie.

  • WHLSL enumeration code generation
  • A name mangler, which ensures that no text from the source program is contained within the result

program

  • Full support for expressions. An expression like "y = *x + 7;" would be converted to something like

Type1 variable1 = *x;
Type2 variable2 = 7;
Type3 variable3 = variable1 + variable2;
y = variable3;

  • Mostly complete support for control flow. This is tricky because of how we transform WHLSL

expressions into C++ statements. Therefore, things like "for ( ; *x + 7; )" is difficult to
compile, because we can't put the "*x + 7" generated statements into the for loop itself.
Instead, we have to emit this code inside the loop, in all the places that would implicitly run
it. This patch doesn't fully handle this, see below. (If MSL supported lambdas, we could put
the statements into a lambda and do something like "for ( ; theLambda(); )" but MSL doesn't
support lambdas.)

Missing pieces:

  • Entry point pack / unpack code
  • Support for "continue" (See above regarding control flow)
  • Knowing whether or not a switch case should end with break or fallthrough
  • Trapping
  • Zero filling variables
  • Code generation for compiler-generated native functions (this patch supports native functions in the

standard library), texture functions, and HLSL's half <-> int functions.

No new tests because it isn't hooked up yet. As soon as we can do entry point packing and unpacking,
I'll start porting the test suite.

  • Modules/webgpu/WHLSL/AST/WHLSLBuiltInSemantic.h:

(WebCore::WHLSL::AST::BuiltInSemantic::targetIndex):

  • Modules/webgpu/WHLSL/AST/WHLSLExpression.h:

(WebCore::WHLSL::AST::Expression::resolvedType):
(WebCore::WHLSL::AST::Expression::type): Deleted.

  • Modules/webgpu/WHLSL/AST/WHLSLFunctionDeclaration.h:

(WebCore::WHLSL::AST::FunctionDeclaration::name):

  • Modules/webgpu/WHLSL/AST/WHLSLStructureDefinition.h:

(WebCore::WHLSL::AST::StructureDefinition::find):

  • Modules/webgpu/WHLSL/Metal/WHLSLEntryPointScaffolding.cpp: Added.

(WebCore::WHLSL::Metal::EntryPointScaffolding::EntryPointScaffolding):
(WebCore::WHLSL::Metal::EntryPointScaffolding::helperTypes):
(WebCore::WHLSL::Metal::EntryPointScaffolding::signature):
(WebCore::WHLSL::Metal::EntryPointScaffolding::unpack):
(WebCore::WHLSL::Metal::EntryPointScaffolding::pack):

  • Modules/webgpu/WHLSL/Metal/WHLSLEntryPointScaffolding.h: Copied from Source/WebCore/Modules/webgpu/WHLSL/WHLSLLoopChecker.h.
  • Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.cpp: Added.

(WebCore::WHLSL::Metal::FunctionDeclarationWriter::FunctionDeclarationWriter):
(WebCore::WHLSL::Metal::FunctionDeclarationWriter::toString):
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::FunctionDefinitionWriter):
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::toString):
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::constantExpressionString):
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::generateNextVariableName):
(WebCore::WHLSL::Metal::metalFunctions):

  • Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.h: Copied from Source/WebCore/Modules/webgpu/WHLSL/WHLSLLoopChecker.h.
  • Modules/webgpu/WHLSL/Metal/WHLSLMetalCodeGenerator.cpp: Copied from Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLStructureDefinition.h.

(WebCore::WHLSL::Metal::generateMetalCode):

  • Modules/webgpu/WHLSL/Metal/WHLSLMetalCodeGenerator.h: Copied from Source/WebCore/Modules/webgpu/WHLSL/WHLSLLoopChecker.h.
  • Modules/webgpu/WHLSL/Metal/WHLSLNativeFunctionWriter.cpp: Added.

(WebCore::WHLSL::Metal::getNativeName):
(WebCore::WHLSL::Metal::mapFunctionName):
(WebCore::WHLSL::Metal::convertAddressSpace):
(WebCore::WHLSL::Metal::writeNativeFunction):

  • Modules/webgpu/WHLSL/Metal/WHLSLNativeFunctionWriter.h: Copied from Source/WebCore/Modules/webgpu/WHLSL/WHLSLLoopChecker.h.
  • Modules/webgpu/WHLSL/Metal/WHLSLTypeNamer.cpp: Added.

(WebCore::WHLSL::Metal::BaseTypeNameNode::BaseTypeNameNode):
(WebCore::WHLSL::Metal::BaseTypeNameNode::isArrayTypeNameNode const):
(WebCore::WHLSL::Metal::BaseTypeNameNode::isArrayReferenceTypeNameNode const):
(WebCore::WHLSL::Metal::BaseTypeNameNode::isPointerTypeNameNode const):
(WebCore::WHLSL::Metal::BaseTypeNameNode::isReferenceTypeNameNode const):
(WebCore::WHLSL::Metal::BaseTypeNameNode::children):
(WebCore::WHLSL::Metal::BaseTypeNameNode::append):
(WebCore::WHLSL::Metal::BaseTypeNameNode::parent):
(WebCore::WHLSL::Metal::BaseTypeNameNode::mangledName const):
(WebCore::WHLSL::Metal::ArrayTypeNameNode::ArrayTypeNameNode):
(WebCore::WHLSL::Metal::ArrayTypeNameNode::numElements const):
(WebCore::WHLSL::Metal::ArrayReferenceTypeNameNode::ArrayReferenceTypeNameNode):
(WebCore::WHLSL::Metal::ArrayReferenceTypeNameNode::addressSpace const):
(WebCore::WHLSL::Metal::PointerTypeNameNode::PointerTypeNameNode):
(WebCore::WHLSL::Metal::PointerTypeNameNode::addressSpace const):
(WebCore::WHLSL::Metal::ReferenceTypeNameNode::ReferenceTypeNameNode):
(WebCore::WHLSL::Metal::ReferenceTypeNameNode::namedType):
(WebCore::WHLSL::Metal::TypeNamer::TypeNamer):
(WebCore::WHLSL::Metal::TypeNamer::visit):
(WebCore::WHLSL::Metal::findInVector):
(WebCore::WHLSL::Metal::find):
(WebCore::WHLSL::Metal::TypeNamer::mangledNameForType):
(WebCore::WHLSL::Metal::TypeNamer::createNameNode):
(WebCore::WHLSL::Metal::TypeNamer::insert):
(WebCore::WHLSL::Metal::MetalTypeDeclarationWriter::MetalTypeDeclarationWriter):
(WebCore::WHLSL::Metal::MetalTypeDeclarationWriter::toString):
(WebCore::WHLSL::Metal::MetalTypeDeclarationWriter::visit):
(WebCore::WHLSL::Metal::TypeNamer::metalTypeDeclarations):
(WebCore::WHLSL::Metal::toString):
(WebCore::WHLSL::Metal::TypeNamer::emitUnnamedTypeDefinition):
(WebCore::WHLSL::Metal::TypeNamer::emitNamedTypeDefinition):
(WebCore::WHLSL::Metal::TypeNamer::metalTypeDefinitions):
(WebCore::WHLSL::Metal::TypeNamer::mangledNameForEnumerationMember):
(WebCore::WHLSL::Metal::TypeNamer::mangledNameForStructureElement):
(WebCore::WHLSL::Metal::TypeNamer::metalTypes):

  • Modules/webgpu/WHLSL/Metal/WHLSLTypeNamer.h: Added.

(WebCore::WHLSL::Metal::TypeNamer::generateNextTypeName):
(WebCore::WHLSL::Metal::TypeNamer::generateNextStructureElementName):
(WebCore::WHLSL::Metal::TypeNamer::generateNextEnumerationMemberName):

  • Modules/webgpu/WHLSL/WHLSLChecker.cpp:

(WebCore::WHLSL::checkSemantics):
(WebCore::WHLSL::Checker::visit):

  • Modules/webgpu/WHLSL/WHLSLGatherEntryPointItems.cpp:

(WebCore::WHLSL::Gatherer::visit):

  • Modules/webgpu/WHLSL/WHLSLGatherEntryPointItems.h:

(WebCore::WHLSL::EntryPointItem::EntryPointItem):

  • Modules/webgpu/WHLSL/WHLSLLoopChecker.cpp: Removed.
  • Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.cpp: Added.

(WebCore::WHLSL::StatementBehaviorChecker::takeFunctionBehavior):
(WebCore::WHLSL::checkStatementBehavior):

  • Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.h: Renamed from Source/WebCore/Modules/webgpu/WHLSL/WHLSLLoopChecker.h.
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
10:13 PM Changeset in webkit [240229] by sbarati@apple.com
  • 3 edits
    2 adds in trunk

DFG: When inlining DataView set* intrinsics we need to set undefined as our result
https://bugs.webkit.org/show_bug.cgi?id=193644
<rdar://problem/46209745>

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/data-view-set-intrinsic-undefined-result-2.js: Added.

(foo):

  • stress/data-view-set-intrinsic-undefined-result.js: Added.

(foo):
(bar):

Source/JavaScriptCore:

This patch also makes it so we fail fast when we make this mistake.
I've made this mistake more than once.

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::handleIntrinsicCall):

9:49 PM Changeset in webkit [240228] by yusukesuzuki@slowstart.org
  • 16 edits in trunk/Source/JavaScriptCore

[JSC] Reduce size of SourceProvider
https://bugs.webkit.org/show_bug.cgi?id=193544

Reviewed by Saam Barati.

This patch attempts to reduce the dirty memory footprint by the following 3 optimizations.

  1. Reordering the members of SourceProvider to reduce the size. This affects on JSC, and CachedScriptSourceProvider used in WebCore.
  1. Create one SourceProvider for all the builtin code and use substring to create builtin JS functions. This reduces # of SourceProvider created for builtins.
  1. Drop m_validated flag in SourceProvider since nobody uses it. It also deletes dead code in Parser.cpp.

Unfortunately, MSVC does not accept super long C string literal. So instead, we construct combined string in a form of C array.

  • Scripts/tests/builtins/expected/JavaScriptCore-Builtin.Promise-Combined.js-result:
  • Scripts/tests/builtins/expected/JavaScriptCore-Builtin.prototype-Combined.js-result:
  • Scripts/tests/builtins/expected/JavaScriptCore-BuiltinConstructor-Combined.js-result:
  • Scripts/tests/builtins/expected/JavaScriptCore-InternalClashingNames-Combined.js-result:
  • Scripts/wkbuiltins/builtins_generate_combined_header.py:

(BuiltinsCombinedHeaderGenerator.generate_output):

  • Scripts/wkbuiltins/builtins_generate_combined_implementation.py:

(BuiltinsCombinedImplementationGenerator.generate_output):

  • Scripts/wkbuiltins/builtins_generate_separate_implementation.py:

(BuiltinsSeparateImplementationGenerator.generate_output):

  • Scripts/wkbuiltins/builtins_generator.py:

(BuiltinsGenerator.generate_embedded_code_data_for_function):
(BuiltinsGenerator.generate_embedded_code_string_section_for_data):
(BuiltinsGenerator.generate_embedded_code_string_section_for_function): Deleted.

  • builtins/BuiltinExecutables.cpp:

(JSC::BuiltinExecutables::BuiltinExecutables):
(JSC::JSC_FOREACH_BUILTIN_CODE):
(JSC::BuiltinExecutables::createExecutable):

  • builtins/BuiltinExecutables.h:
  • parser/Parser.cpp:

(JSC::Parser<LexerType>::Parser):
(JSC::Parser<LexerType>::parseExpressionOrLabelStatement):
(JSC::Parser<LexerType>::shouldCheckPropertyForUnderscoreProtoDuplicate):
(JSC::Parser<LexerType>::parseObjectLiteral):
(JSC::Parser<LexerType>::parseUnaryExpression):

  • parser/Parser.h:
  • parser/SourceCode.h:
  • parser/SourceProvider.cpp:

(JSC::SourceProvider::SourceProvider):

  • parser/SourceProvider.h:

(JSC::SourceProvider::isValid const): Deleted.
(JSC::SourceProvider::setValid): Deleted.

  • runtime/CachedTypes.cpp:

(JSC::CachedSourceProviderShape::encode):
(JSC::CachedSourceProviderShape::decode const):

9:40 PM Changeset in webkit [240227] by mmaxfield@apple.com
  • 3 edits
    1 move
    1 add
    1 delete in trunk/Source/WebCore

[WHLSL] Add the statement behavior checker
https://bugs.webkit.org/show_bug.cgi?id=193487

Reviewed by Dean Jackson.

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/WHLSLLoopChecker.cpp: Removed. StatementBehaviorChecker does everything that LoopChecker

does.

  • Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.cpp: Added.

(WebCore::WHLSL::StatementBehaviorChecker::takeFunctionBehavior):
(WebCore::WHLSL::checkStatementBehavior):

  • Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.h: Renamed from Source/WebCore/Modules/webgpu/WHLSL/WHLSLLoopChecker.h.
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
9:09 PM Changeset in webkit [240226] by Michael Catanzaro
  • 2 edits in trunk/Source/WebKit

Unreviewed, fix -Wreturn-type warning
https://bugs.webkit.org/show_bug.cgi?id=193333
<rdar://problem/45649489>

  • UIProcess/Automation/WebAutomationSession.cpp:

(WebKit::toProtocol):

9:04 PM Changeset in webkit [240225] by Michael Catanzaro
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, fix -Wint-in-bool-context warning
https://bugs.webkit.org/show_bug.cgi?id=193483
<rdar://problem/47280522>

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::addCheckStructureForOriginalStringObjectUse):

8:37 PM Changeset in webkit [240224] by sbarati@apple.com
  • 39 edits
    3 deletes in trunk

Rollout r240210: It broke tests on iOS
https://bugs.webkit.org/show_bug.cgi?id=193640

Source/JavaScriptCore:

Unreviewed. ~2650 tests are failing on iOS.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • builtins/BuiltinNames.cpp:

(JSC::BuiltinNames::BuiltinNames):

  • builtins/BuiltinNames.h:
  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::setConstantIdentifierSetRegisters):

  • bytecode/CodeBlock.h:
  • bytecode/HandlerInfo.h:
  • bytecode/InstructionStream.h:
  • bytecode/UnlinkedCodeBlock.h:

(JSC::UnlinkedCodeBlock::addSetConstant):
(JSC::UnlinkedCodeBlock::constantIdentifierSets):

  • bytecode/UnlinkedEvalCodeBlock.h:
  • bytecode/UnlinkedFunctionCodeBlock.h:
  • bytecode/UnlinkedFunctionExecutable.h:
  • bytecode/UnlinkedGlobalCodeBlock.h:

(JSC::UnlinkedGlobalCodeBlock::UnlinkedGlobalCodeBlock):

  • bytecode/UnlinkedMetadataTable.h:
  • bytecode/UnlinkedModuleProgramCodeBlock.h:
  • bytecode/UnlinkedProgramCodeBlock.h:
  • interpreter/Interpreter.cpp:
  • jsc.cpp:

(functionQuit):
(runJSC):

  • parser/SourceCode.h:
  • parser/SourceCodeKey.h:

(JSC::SourceCodeKey::operator!= const): Deleted.

  • parser/UnlinkedSourceCode.h:
  • parser/VariableEnvironment.h:
  • runtime/CachedTypes.cpp:

(): Deleted.
(JSC::Encoder::Allocation::buffer const): Deleted.
(JSC::Encoder::Allocation::offset const): Deleted.
(JSC::Encoder::Allocation::Allocation): Deleted.
(JSC::Encoder::Encoder): Deleted.
(JSC::Encoder::vm): Deleted.
(JSC::Encoder::malloc): Deleted.
(JSC::Encoder::offsetOf): Deleted.
(JSC::Encoder::cachePtr): Deleted.
(JSC::Encoder::offsetForPtr): Deleted.
(JSC::Encoder::release): Deleted.
(JSC::Encoder::Page::Page): Deleted.
(JSC::Encoder::Page::malloc): Deleted.
(JSC::Encoder::Page::buffer const): Deleted.
(JSC::Encoder::Page::size const): Deleted.
(JSC::Encoder::Page::getOffset const): Deleted.
(JSC::Encoder::allocateNewPage): Deleted.
(JSC::Decoder::Decoder): Deleted.
(JSC::Decoder::~Decoder): Deleted.
(JSC::Decoder::vm): Deleted.
(JSC::Decoder::offsetOf): Deleted.
(JSC::Decoder::cacheOffset): Deleted.
(JSC::Decoder::addFinalizer): Deleted.
(JSC::encode): Deleted.
(JSC::decode): Deleted.
(JSC::VariableLengthObject::buffer const): Deleted.
(JSC::VariableLengthObject::allocate): Deleted.
(JSC::CachedPtr::encode): Deleted.
(JSC::CachedPtr::decode const): Deleted.
(JSC::CachedPtr::operator-> const): Deleted.
(JSC::CachedPtr::get const): Deleted.
(JSC::CachedRefPtr::encode): Deleted.
(JSC::CachedRefPtr::decode const): Deleted.
(JSC::CachedWriteBarrier::encode): Deleted.
(JSC::CachedWriteBarrier::decode const): Deleted.
(JSC::CachedVector::encode): Deleted.
(JSC::CachedVector::decode const): Deleted.
(JSC::CachedPair::encode): Deleted.
(JSC::CachedPair::decode const): Deleted.
(JSC::CachedHashMap::encode): Deleted.
(JSC::CachedHashMap::decode const): Deleted.
(JSC::CachedUniquedStringImpl::encode): Deleted.
(JSC::CachedUniquedStringImpl::decode const): Deleted.
(JSC::CachedStringImpl::encode): Deleted.
(JSC::CachedStringImpl::decode const): Deleted.
(JSC::CachedString::encode): Deleted.
(JSC::CachedString::decode const): Deleted.
(JSC::CachedIdentifier::encode): Deleted.
(JSC::CachedIdentifier::decode const): Deleted.
(JSC::CachedOptional::encode): Deleted.
(JSC::CachedOptional::decode const): Deleted.
(JSC::CachedOptional::decodeAsPtr const): Deleted.
(JSC::CachedSimpleJumpTable::encode): Deleted.
(JSC::CachedSimpleJumpTable::decode const): Deleted.
(JSC::CachedStringJumpTable::encode): Deleted.
(JSC::CachedStringJumpTable::decode const): Deleted.
(JSC::CachedCodeBlockRareData::encode): Deleted.
(JSC::CachedCodeBlockRareData::decode const): Deleted.
(JSC::CachedBitVector::encode): Deleted.
(JSC::CachedBitVector::decode const): Deleted.
(JSC::CachedHashSet::encode): Deleted.
(JSC::CachedHashSet::decode const): Deleted.
(JSC::CachedConstantIdentifierSetEntry::encode): Deleted.
(JSC::CachedConstantIdentifierSetEntry::decode const): Deleted.
(JSC::CachedVariableEnvironment::encode): Deleted.
(JSC::CachedVariableEnvironment::decode const): Deleted.
(JSC::CachedArray::encode): Deleted.
(JSC::CachedArray::decode const): Deleted.
(JSC::CachedScopedArgumentsTable::encode): Deleted.
(JSC::CachedScopedArgumentsTable::decode const): Deleted.
(JSC::CachedSymbolTableEntry::encode): Deleted.
(JSC::CachedSymbolTableEntry::decode const): Deleted.
(JSC::CachedSymbolTable::encode): Deleted.
(JSC::CachedSymbolTable::decode const): Deleted.
(JSC::CachedImmutableButterfly::encode): Deleted.
(JSC::CachedImmutableButterfly::decode const): Deleted.
(JSC::CachedRegExp::encode): Deleted.
(JSC::CachedRegExp::decode const): Deleted.
(JSC::CachedTemplateObjectDescriptor::encode): Deleted.
(JSC::CachedTemplateObjectDescriptor::decode const): Deleted.
(JSC::CachedBigInt::encode): Deleted.
(JSC::CachedBigInt::decode const): Deleted.
(JSC::CachedJSValue::encode): Deleted.
(JSC::CachedJSValue::decode const): Deleted.
(JSC::CachedInstructionStream::encode): Deleted.
(JSC::CachedInstructionStream::decode const): Deleted.
(JSC::CachedMetadataTable::encode): Deleted.
(JSC::CachedMetadataTable::decode const): Deleted.
(JSC::CachedSourceOrigin::encode): Deleted.
(JSC::CachedSourceOrigin::decode const): Deleted.
(JSC::CachedTextPosition::encode): Deleted.
(JSC::CachedTextPosition::decode const): Deleted.
(JSC::CachedSourceProviderShape::encode): Deleted.
(JSC::CachedSourceProviderShape::decode const): Deleted.
(JSC::CachedStringSourceProvider::encode): Deleted.
(JSC::CachedStringSourceProvider::decode const): Deleted.
(JSC::CachedWebAssemblySourceProvider::encode): Deleted.
(JSC::CachedWebAssemblySourceProvider::decode const): Deleted.
(JSC::CachedSourceProvider::encode): Deleted.
(JSC::CachedSourceProvider::decode const): Deleted.
(JSC::CachedUnlinkedSourceCodeShape::encode): Deleted.
(JSC::CachedUnlinkedSourceCodeShape::decode const): Deleted.
(JSC::CachedSourceCode::encode): Deleted.
(JSC::CachedSourceCode::decode const): Deleted.
(JSC::CachedFunctionExecutable::firstLineOffset const): Deleted.
(JSC::CachedFunctionExecutable::lineCount const): Deleted.
(JSC::CachedFunctionExecutable::unlinkedFunctionNameStart const): Deleted.
(JSC::CachedFunctionExecutable::unlinkedBodyStartColumn const): Deleted.
(JSC::CachedFunctionExecutable::unlinkedBodyEndColumn const): Deleted.
(JSC::CachedFunctionExecutable::startOffset const): Deleted.
(JSC::CachedFunctionExecutable::sourceLength const): Deleted.
(JSC::CachedFunctionExecutable::parametersStartOffset const): Deleted.
(JSC::CachedFunctionExecutable::typeProfilingStartOffset const): Deleted.
(JSC::CachedFunctionExecutable::typeProfilingEndOffset const): Deleted.
(JSC::CachedFunctionExecutable::parameterCount const): Deleted.
(JSC::CachedFunctionExecutable::features const): Deleted.
(JSC::CachedFunctionExecutable::sourceParseMode const): Deleted.
(JSC::CachedFunctionExecutable::isInStrictContext const): Deleted.
(JSC::CachedFunctionExecutable::hasCapturedVariables const): Deleted.
(JSC::CachedFunctionExecutable::isBuiltinFunction const): Deleted.
(JSC::CachedFunctionExecutable::isBuiltinDefaultClassConstructor const): Deleted.
(JSC::CachedFunctionExecutable::constructAbility const): Deleted.
(JSC::CachedFunctionExecutable::constructorKind const): Deleted.
(JSC::CachedFunctionExecutable::functionMode const): Deleted.
(JSC::CachedFunctionExecutable::scriptMode const): Deleted.
(JSC::CachedFunctionExecutable::superBinding const): Deleted.
(JSC::CachedFunctionExecutable::derivedContextType const): Deleted.
(JSC::CachedFunctionExecutable::name const): Deleted.
(JSC::CachedFunctionExecutable::ecmaName const): Deleted.
(JSC::CachedFunctionExecutable::inferredName const): Deleted.
(JSC::CachedCodeBlock::instructions const): Deleted.
(JSC::CachedCodeBlock::thisRegister const): Deleted.
(JSC::CachedCodeBlock::scopeRegister const): Deleted.
(JSC::CachedCodeBlock::globalObjectRegister const): Deleted.
(JSC::CachedCodeBlock::sourceURLDirective const): Deleted.
(JSC::CachedCodeBlock::sourceMappingURLDirective const): Deleted.
(JSC::CachedCodeBlock::usesEval const): Deleted.
(JSC::CachedCodeBlock::isStrictMode const): Deleted.
(JSC::CachedCodeBlock::isConstructor const): Deleted.
(JSC::CachedCodeBlock::hasCapturedVariables const): Deleted.
(JSC::CachedCodeBlock::isBuiltinFunction const): Deleted.
(JSC::CachedCodeBlock::superBinding const): Deleted.
(JSC::CachedCodeBlock::scriptMode const): Deleted.
(JSC::CachedCodeBlock::isArrowFunctionContext const): Deleted.
(JSC::CachedCodeBlock::isClassContext const): Deleted.
(JSC::CachedCodeBlock::wasCompiledWithDebuggingOpcodes const): Deleted.
(JSC::CachedCodeBlock::constructorKind const): Deleted.
(JSC::CachedCodeBlock::derivedContextType const): Deleted.
(JSC::CachedCodeBlock::evalContextType const): Deleted.
(JSC::CachedCodeBlock::hasTailCalls const): Deleted.
(JSC::CachedCodeBlock::lineCount const): Deleted.
(JSC::CachedCodeBlock::endColumn const): Deleted.
(JSC::CachedCodeBlock::numVars const): Deleted.
(JSC::CachedCodeBlock::numCalleeLocals const): Deleted.
(JSC::CachedCodeBlock::numParameters const): Deleted.
(JSC::CachedCodeBlock::features const): Deleted.
(JSC::CachedCodeBlock::parseMode const): Deleted.
(JSC::CachedCodeBlock::codeType const): Deleted.
(JSC::CachedCodeBlock::rareData const): Deleted.
(JSC::CachedProgramCodeBlock::encode): Deleted.
(JSC::CachedProgramCodeBlock::decode const): Deleted.
(JSC::CachedModuleCodeBlock::encode): Deleted.
(JSC::CachedModuleCodeBlock::decode const): Deleted.
(JSC::CachedEvalCodeBlock::encode): Deleted.
(JSC::CachedEvalCodeBlock::decode const): Deleted.
(JSC::CachedFunctionCodeBlock::encode): Deleted.
(JSC::CachedFunctionCodeBlock::decode const): Deleted.
(JSC::UnlinkedFunctionCodeBlock::UnlinkedFunctionCodeBlock): Deleted.
(JSC::UnlinkedCodeBlock::UnlinkedCodeBlock): Deleted.
(JSC::CachedCodeBlock<CodeBlockType>::decode const): Deleted.
(JSC::UnlinkedProgramCodeBlock::UnlinkedProgramCodeBlock): Deleted.
(JSC::UnlinkedModuleProgramCodeBlock::UnlinkedModuleProgramCodeBlock): Deleted.
(JSC::UnlinkedEvalCodeBlock::UnlinkedEvalCodeBlock): Deleted.
(JSC::CachedFunctionExecutable::encode): Deleted.
(JSC::CachedFunctionExecutable::decode const): Deleted.
(JSC::UnlinkedFunctionExecutable::UnlinkedFunctionExecutable): Deleted.
(JSC::CachedCodeBlock<CodeBlockType>::encode): Deleted.
(JSC::CachedSourceCodeKey::encode): Deleted.
(JSC::CachedSourceCodeKey::decode const): Deleted.
(JSC::CacheEntry::encode): Deleted.
(JSC::CacheEntry:: const): Deleted.
(JSC:: const): Deleted.
(JSC::encodeCodeBlock): Deleted.
(JSC::decodeCodeBlockImpl): Deleted.

  • runtime/CachedTypes.h:

(JSC::decodeCodeBlock): Deleted.

  • runtime/CodeCache.cpp:

(JSC::CodeCacheMap::pruneSlowCase):
(JSC::CodeCache::getUnlinkedGlobalCodeBlock):
(JSC::CodeCache::getUnlinkedGlobalFunctionExecutable):
(JSC::CodeCache::write): Deleted.

  • runtime/CodeCache.h:

(JSC::CodeCacheMap::findCacheAndUpdateAge):
(JSC::CodeCache::clear):
(JSC::CodeCacheMap::begin): Deleted.
(JSC::CodeCacheMap::end): Deleted.
(JSC::CodeCacheMap::fetchFromDiskImpl): Deleted.
(): Deleted.
(JSC::writeCodeBlock): Deleted.

  • runtime/JSBigInt.cpp:

(JSC::JSBigInt::offsetOfData):
(JSC::JSBigInt::dataStorage):

  • runtime/JSBigInt.h:
  • runtime/Options.cpp:

(JSC::recomputeDependentOptions):

  • runtime/Options.h:
  • runtime/RegExp.h:
  • runtime/ScopedArgumentsTable.h:
  • runtime/StackFrame.h:
  • runtime/StructureInlines.h:
  • runtime/SymbolTable.h:

Source/WTF:

Unreviewed.

  • wtf/BitVector.h:

Tools:

Unreviewed.

  • Scripts/jsc-stress-test-helpers/bytecode-cache-test-helper:
  • Scripts/run-jsc-stress-tests:
7:54 PM Changeset in webkit [240223] by sbarati@apple.com
  • 4 edits
    2 adds in trunk

JSTests:
MovHint must merge NodeBytecodeUsesAsValue for its child
https://bugs.webkit.org/show_bug.cgi?id=186916
<rdar://problem/41396612>

Reviewed by Yusuke Suzuki.

  • stress/arith-abs-to-arith-negate-range-optimizaton.js:
  • stress/movhint-backwards-propagation-must-merge-use-as-value.js: Added.

Source/JavaScriptCore:
MovHint must merge NodeBytecodeUsesAsValue for its child in backwards propagation
https://bugs.webkit.org/show_bug.cgi?id=186916
<rdar://problem/41396612>

Reviewed by Yusuke Suzuki.

Otherwise, we may not think we care about the non-integral part in
a division (or perhaps overflow in an add, etc). Consider a program
like this:

return a / b

That gets compiled to:
`
a: ArithDiv We don't check that the remainder is zero here.
b: MovHint(@a)
c: ForceOSRExit
d: Unreachable
`

If we don't inform @a that we care about its result in full number
accuracy, it will choose to ignore its non-integral remainder. This
makes sense if *everybody* that all uses of the Div only cared about
the integral part. However, OSR exit is not one of those users. OSR
exit cares about the fractional bits in such a Div.

  • dfg/DFGBackwardsPropagationPhase.cpp:

(JSC::DFG::BackwardsPropagationPhase::propagate):

7:33 PM Changeset in webkit [240222] by Michael Catanzaro
  • 4 edits
    1 add
    1 delete in trunk/LayoutTests

Unreviewed GTK test gardening

  • accessibility/gtk/xml-roles-exposed-expected.txt:
  • platform/gtk/TestExpectations:
  • platform/gtk/imported/w3c/web-platform-tests/fetch/security/dangling-markup-mitigation-data-url.tentative.sub-expected.txt: Removed.
  • platform/gtk/inspector/css/shadow-scoped-style-expected.txt: Added.
  • platform/gtk/svg/text/font-size-below-point-five-expected.txt:
7:25 PM Changeset in webkit [240221] by Michael Catanzaro
  • 2 edits in trunk/Source/WebCore

REGRESSION(r240174): Wrong preprocessor guards in RenderImage::paintAreaElementFocusRing
https://bugs.webkit.org/show_bug.cgi?id=193630

Reviewed by Daniel Bates.

r240174 inadvertently disabled this function on non-Apple platforms.

This fixes layout test fast/images/image-map-outline-in-positioned-container.html.

  • rendering/RenderImage.cpp:

(WebCore::RenderImage::paintAreaElementFocusRing):

5:39 PM Changeset in webkit [240220] by commit-queue@webkit.org
  • 23 edits
    3 adds in trunk

[JSC] Invalidate old scope operations using global lexical binding epoch
https://bugs.webkit.org/show_bug.cgi?id=193603
<rdar://problem/47380869>

Patch by Yusuke Suzuki <ysuzuki@apple.com> on 2019-01-20
Reviewed by Saam Barati.

JSTests:

  • stress/let-lexical-binding-shadow-existing-global-property-ftl.js:
  • stress/scope-operation-cache-global-property-before-deleting.js: Added.

(shouldThrow):
(bar):

  • stress/scope-operation-cache-global-property-bump-counter.js: Added.

(shouldBe):
(get1):
(get2):
(get1If):
(get2If):

  • stress/scope-operation-cache-global-property-even-if-it-fails.js: Added.

(shouldThrow):
(foo):

Source/JavaScriptCore:

Even if the global lexical binding does not shadow the global property at that time, we need to clear the cached information in
scope related operations since we may have a global property previously. Consider the following example,

foo = 0;
function get() { return foo; }
print(get()); 0
print(get());
0
delete globalThis.foo;
$.evalScript(const foo = 42;);
print(get()); Should be 42, but it returns 0 if the cached information in get() is not cleared.

To invalidate the cache easily, we introduce global lexical binding epoch. It is bumped every time we introduce a new lexical binding
into JSGlobalLexicalEnvironment, since that name could shadow the global property name previously. In op_resolve_scope, we first check
the epoch stored in the metadata, and go to slow path if it is not equal to the current epoch. Our slow path code convert the scope
operation to the appropriate one even if the resolve type is not UnresolvedProperty type. After updating the resolve type of the bytecode,
we update the cached epoch to the current one, so that we can use the cached information as long as we stay in the same epoch.

In op_get_from_scope and op_put_to_scope, we do not use this epoch since Structure check can do the same thing instead. If op_resolve_type
is updated by the epoch, and if it starts returning JSGlobalLexicalEnvironment instead JSGlobalObject, obviously the structure check fails.
And in the slow path, we update op_get_from_scope and op_put_to_scope appropriately.

So, the metadata for scope related bytecodes are eventually updated to the appropriate one. In DFG and FTL, we use the watchpoint based approach.
In DFG and FTL, we concurrently attempt to get the watchpoint for the lexical binding and look into it by using isStillValid() to avoid
infinite compile-and-fail loop.

When the global lexical binding epoch overflows we iterate all the live CodeBlock and update the op_resolve_scope's epoch. Even if the shadowing
happens, it is OK if we bump the epoch, since op_resolve_scope will return JSGlobalLexicalEnvironment instead of JSGlobalObject, and following
structure check in op_put_to_scope and op_get_from_scope fail. We do not need to update op_get_from_scope and op_put_to_scope because of the same
reason.

  • bytecode/BytecodeList.rb:
  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::notifyLexicalBindingUpdate):
(JSC::CodeBlock::notifyLexicalBindingShadowing): Deleted.

  • bytecode/CodeBlock.h:
  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::parseBlock):

  • dfg/DFGDesiredGlobalProperties.cpp:

(JSC::DFG::DesiredGlobalProperties::isStillValidOnMainThread):

  • dfg/DFGDesiredGlobalProperties.h:
  • dfg/DFGGraph.cpp:

(JSC::DFG::Graph::watchGlobalProperty):

  • dfg/DFGGraph.h:
  • dfg/DFGPlan.cpp:

(JSC::DFG::Plan::isStillValidOnMainThread):

  • jit/JITPropertyAccess.cpp:

(JSC::JIT::emit_op_resolve_scope):

  • jit/JITPropertyAccess32_64.cpp:

(JSC::JIT::emit_op_resolve_scope):

  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • runtime/CommonSlowPaths.cpp:

(JSC::SLOW_PATH_DECL):

  • runtime/CommonSlowPaths.h:

(JSC::CommonSlowPaths::tryCachePutToScopeGlobal):
(JSC::CommonSlowPaths::tryCacheGetFromScopeGlobal):

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::bumpGlobalLexicalBindingEpoch):
(JSC::JSGlobalObject::getReferencedPropertyWatchpointSet):
(JSC::JSGlobalObject::ensureReferencedPropertyWatchpointSet):
(JSC::JSGlobalObject::notifyLexicalBindingShadowing): Deleted.

  • runtime/JSGlobalObject.h:

(JSC::JSGlobalObject::globalLexicalBindingEpoch const):
(JSC::JSGlobalObject::globalLexicalBindingEpochOffset):
(JSC::JSGlobalObject::addressOfGlobalLexicalBindingEpoch):

  • runtime/Options.cpp:

(JSC::correctOptions):
(JSC::Options::initialize):
(JSC::Options::setOptions):
(JSC::Options::setOptionWithoutAlias):

  • runtime/Options.h:
  • runtime/ProgramExecutable.cpp:

(JSC::ProgramExecutable::initializeGlobalProperties):

5:26 PM Changeset in webkit [240219] by Chris Fleizach
  • 21 edits
    2 adds in trunk

AX: Support returning relative frames for accessibility
https://bugs.webkit.org/show_bug.cgi?id=193414
<rdar://problem/47268501>

Reviewed by Zalan Bujtas.

Source/WebCore:

Create a way for assistive technologies to retrieve a frame in page space that can be transformed to its final screen space by having the AT message the UI process separately.

Consolidate rect/point conversion methods for macOS and iOS.
This is only needed on WebKit2, where we have to reach back across to the hosting process to get the final frame, so we can skip this test on WK1.

Tests: accessibility/mac/relative-frame.html

  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:

(-[WebAccessibilityObjectWrapper _accessibilityConvertPointToViewSpace:]):
(-[WebAccessibilityObjectWrapper _accessibilityRelativeFrame]):
(-[WebAccessibilityObjectWrapper accessibilityVisibleContentRect]):
(-[WebAccessibilityObjectWrapper accessibilityActivationPoint]):
(-[WebAccessibilityObjectWrapper accessibilityFrame]):
(-[WebAccessibilityObjectWrapper frameForTextMarkers:]):
(-[WebAccessibilityObjectWrapper rectsForSelectionRects:]):
(-[WebAccessibilityObjectWrapper convertPointToScreenSpace:]): Deleted.
(-[WebAccessibilityObjectWrapper convertRectToScreenSpace:]): Deleted.

  • accessibility/mac/WebAccessibilityObjectWrapperBase.h:
  • accessibility/mac/WebAccessibilityObjectWrapperBase.mm:

(convertPathToScreenSpaceFunction):
(-[WebAccessibilityObjectWrapperBase convertRectToSpace:space:]):
(-[WebAccessibilityObjectWrapperBase convertPointToScreenSpace:]): Deleted.

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(-[WebAccessibilityObjectWrapper IGNORE_WARNINGS_END]):
(-[WebAccessibilityObjectWrapper position]):
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):
(-[WebAccessibilityObjectWrapper convertPointToScreenSpace:]): Deleted.

Source/WebKit:

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView accessibilityAttributeValue:forParameter:]):
(-[WKWebView IGNORE_WARNINGS_END]):

  • UIProcess/API/mac/WKView.mm:

(-[WKView accessibilityAttributeValue:forParameter:]):
(-[WKView IGNORE_WARNINGS_END]):

  • UIProcess/Cocoa/WebViewImpl.h:
  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::accessibilityAttributeValue):

  • UIProcess/ios/WKContentView.mm:

(-[WKContentView accessibilityConvertRelativeFrameFromPage:]):

Tools:

  • WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
  • WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl:
  • WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm:

(WTR::AccessibilityUIElement::stringDescriptionOfAttributeValue):

  • WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:

(WTR::attributesOfElement):
(WTR::AccessibilityUIElement::stringDescriptionOfAttributeValue):

LayoutTests:

  • accessibility/mac/relative-frame-expected.txt: Added.
  • accessibility/mac/relative-frame.html: Added.
  • platform/mac-wk1/TestExpectations:
5:06 PM Changeset in webkit [240218] by Simon Fraser
  • 4 edits in trunk/Source/WebCore

On RenderBox, make client sizing be derived from padding box sizing
https://bugs.webkit.org/show_bug.cgi?id=193621

Reviewed by Daniel Bates.

I never liked how clientWidth/Height, an IE-originated term, was used as the basis
for various RenderBox geometry functions.

Fix by adding some functions which return the dimensions of the padding box (which
is the inside of the border and any scrollbar), and define clientWidth/Height in
terms of them.

Also add paddingBoxRectIncludingScrollbar() function that is used by compositing code.

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::clientWidth const):
(WebCore::RenderBox::clientHeight const):

  • rendering/RenderBox.h:

(WebCore::RenderBox::borderBoxRect const):
(WebCore::RenderBox::computedCSSContentBoxRect const):
(WebCore::RenderBox::contentWidth const):
(WebCore::RenderBox::contentHeight const):
(WebCore::RenderBox::paddingBoxWidth const):
(WebCore::RenderBox::paddingBoxHeight const):
(WebCore::RenderBox::paddingBoxRect const):
(WebCore::RenderBox::paddingBoxRectIncludingScrollbar const):
(WebCore::RenderBox::hasHorizontalOverflow const):
(WebCore::RenderBox::hasVerticalOverflow const):

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::computeParentGraphicsLayerRect const):
(WebCore::RenderLayerBacking::updateGeometry):

1:15 PM Changeset in webkit [240217] by yusukesuzuki@slowstart.org
  • 2 edits in trunk/Tools

Unreviewed, add my new email address

  • Scripts/webkitpy/common/config/contributors.json:
12:39 PM Changeset in webkit [240216] by yusukesuzuki@slowstart.org
  • 18 edits in trunk/Source/JavaScriptCore

[JSC] Shrink data structure size in JSC/heap
https://bugs.webkit.org/show_bug.cgi?id=193612

Reviewed by Saam Barati.

This patch reduces the size of data structures in JSC/heap. Basically, we reorder the members to remove paddings.

For Subspace, we drop CellAttributes m_attributes. Instead, we use heapCellType->attributes(). And we use
FreeList::cellSize() instead of holding m_cellSize in LocalAllocator.

This change reduces the size of JSC::VM too since it includes JSC::Heap. The size of VM becomes from 78208 to 76696.

  • heap/BlockDirectory.cpp:
  • heap/BlockDirectory.h:
  • heap/CollectionScope.h:
  • heap/CompleteSubspace.cpp:

(JSC::CompleteSubspace::allocatorForSlow):

  • heap/FreeList.h:

(JSC::FreeList::offsetOfCellSize):
(JSC::FreeList::cellSize const):

  • heap/Heap.cpp:

(JSC::Heap::Heap):
(JSC::Heap::updateObjectCounts):
(JSC::Heap::addToRememberedSet):
(JSC::Heap::runBeginPhase):
(JSC::Heap::willStartCollection):
(JSC::Heap::pruneStaleEntriesFromWeakGCMaps):
(JSC::Heap::deleteSourceProviderCaches):
(JSC::Heap::notifyIncrementalSweeper):
(JSC::Heap::updateAllocationLimits):

  • heap/Heap.h:
  • heap/IsoAlignedMemoryAllocator.h:
  • heap/LargeAllocation.cpp:
  • heap/LocalAllocator.cpp:

(JSC::LocalAllocator::LocalAllocator):

  • heap/LocalAllocator.h:

(JSC::LocalAllocator::cellSize const):
(JSC::LocalAllocator::offsetOfCellSize):

  • heap/MarkedSpace.cpp:

(JSC::MarkedSpace::MarkedSpace):

  • heap/MarkedSpace.h:
  • heap/MarkingConstraint.h:
  • heap/Subspace.cpp:

(JSC::Subspace::initialize):

  • heap/Subspace.h:

(JSC::Subspace::attributes const): Deleted.

  • heap/SubspaceInlines.h:

(JSC::Subspace::forEachMarkedCell):
(JSC::Subspace::forEachMarkedCellInParallel):
(JSC::Subspace::forEachLiveCell):
(JSC::Subspace::attributes const):

12:37 PM Changeset in webkit [240215] by Michael Catanzaro
  • 2 edits in trunk/Source/WebCore

Unreviewed, rolling out r238275.

Regressed css3/shapes/shape-outside/shape-image/shape-
image-025.html

Reverted changeset:

"ScalableImageDecoder: don't forcefully decode image data when
querying frame completeness, duration"
https://bugs.webkit.org/show_bug.cgi?id=191354
https://trac.webkit.org/changeset/238275

11:22 AM Changeset in webkit [240214] by Michael Catanzaro
  • 2 edits in trunk/LayoutTests

Unreviewed gardening, add failure expectation for js/intl-numberformat.html

This test requires an old version of ICU to pass.

  • platform/gtk/TestExpectations:
11:17 AM Changeset in webkit [240213] by Alan Bujtas
  • 4 edits in trunk

[LFC][BFC] <body>'s overflow property value is propagated to viewport
https://bugs.webkit.org/show_bug.cgi?id=193617

Reviewed by Antti Koivisto.

Source/WebCore:

When the root element is an HTML "HTML" element or an XHTML "html" element, and that element has an HTML "BODY" element
or an XHTML "body" element as a child, user agents must instead apply the 'overflow' property from the first such child element to the viewport,
if the value on the root element is 'visible'. The 'visible' value when used for the viewport must be interpreted as 'auto'.
The element from which the value is propagated must have a used value for 'overflow' of 'visible'.

This also has impact on layout since <body style="overflow: hidden"> would establish a block formatting context.

  • layout/layouttree/LayoutBox.cpp:

(WebCore::Layout::Box::isOverflowVisible const):

Tools:

  • LayoutReloaded/misc/LFC-passing-tests.txt:
10:37 AM Changeset in webkit [240212] by Michael Catanzaro
  • 18 edits
    2 deletes in trunk

Unreviewed, rolling out r240209.

Broke GTK/WPE injected bundle

Reverted changeset:

"AX: Support returning relative frames for accessibility"
https://bugs.webkit.org/show_bug.cgi?id=193414
https://trac.webkit.org/changeset/240209

10:02 AM Changeset in webkit [240211] by mitz@apple.com
  • 49 edits in trunk

[Cocoa] Avoid importing directly from subumbrella frameworks
https://bugs.webkit.org/show_bug.cgi?id=186016
<rdar://problem/40591038>

Reviewed by Sam Weinig.

Source/WebCore:

  • Configurations/WebCore.xcconfig: Removed -iframework options from OTHER_CFLAGS and OTHER_CPLUSPLUSFLAGS.
  • editing/mac/DictionaryLookupLegacy.mm: Import Quartz.h instead of a PDFKit header.
  • platform/mac/PlatformEventFactoryMac.mm: Import Carbon.h instead of HIToolbox headers.
  • platform/text/mac/TextEncodingRegistryMac.mm: Import Carbon.h instead of CarbonCore.h.

Source/WebCore/PAL:

  • Configurations/PAL.xcconfig: Removed -iframework options from OTHER_CFLAGS and OTHER_CPLUSPLUSFLAGS.
  • pal/spi/cg/CoreGraphicsSPI.h: Import ApplicationServices.h instead of ColorSync.h when using SDKs earlier than 10.13.
  • pal/spi/mac/HIToolboxSPI.h: Import CarbonPriv.h instead of HIToolboxPriv.h.
  • pal/spi/mac/QuickLookMacSPI.h: Import Quartz.h instead of a QuickLookUI header.

Source/WebKit:

  • Configurations/BaseTarget.xcconfig: Removed -iframework options from OTHER_CFLAGS and OTHER_CPLUSPLUSFLAGS.
  • UIProcess/Automation/mac/WebAutomationSessionMac.mm: Import Carbon.h instead of an HIToolbox header.
  • UIProcess/Cocoa/WebViewImpl.mm: Ditto.
  • UIProcess/mac/WKPrintingView.mm: Import Quartz.h instead of a PDFKit header.
  • UIProcess/mac/WKTextInputWindowController.mm: Import Carbon.h instead of an HIToolbox header.
  • WebProcess/Plugins/PDF/PDFAnnotationTextWidgetDetails.h: Import Quartz.h instead of a PDFKit header.
  • WebProcess/Plugins/PDF/PDFLayerControllerSPI.h: Ditto.
  • WebProcess/Plugins/PDF/PDFPlugin.mm: Ditto.
  • WebProcess/Plugins/PDF/PDFPluginAnnotation.mm: Ditto.
  • WebProcess/Plugins/PDF/PDFPluginChoiceAnnotation.mm: Ditto.
  • WebProcess/Plugins/PDF/PDFPluginPasswordField.mm: Ditto.
  • WebProcess/Plugins/PDF/PDFPluginTextAnnotation.mm: Ditto.
  • WebProcess/WebPage/mac/WebPageMac.mm: Ditto.

Source/WebKitLegacy/mac:

  • Carbon/CarbonWindowAdapter.h: Import Carbon.h instead of HIToolbox headers.
  • Carbon/CarbonWindowAdapter.mm: Ditto.
  • Carbon/CarbonWindowFrame.m: Ditto.
  • Carbon/HIViewAdapter.h: Ditto.
  • Configurations/WebKitLegacy.xcconfig: Removed -iframework options from OTHER_CFLAGS_COCOA_TOUCH_NO.
  • Plugins/WebNetscapePluginEventHandlerCarbon.mm: Import Carbon.h instead of CarbonEvents.h.
  • WebView/WebPDFDocumentExtras.mm: Import Quartz.h instead of a PDFKit header.
  • WebView/WebPDFView.h: Ditto.

Tools:

  • DumpRenderTree/cg/PixelDumpSupportCG.cpp: Include CoreServices.h instead of a LaunchServices header.
  • DumpRenderTree/mac/Configurations/BaseTarget.xcconfig: Removed -iframework options from OTHER_CFLAGS and OTHER_CPLUSPLUSFLAGS.
  • DumpRenderTree/mac/LayoutTestHelper.m: Import ApplicationServices.h instead of ColorSync.h when using SDKs earlier than 10.13.
  • TestWebKitAPI/Configurations/Base.xcconfig: Removed -iframework options from OTHER_CFLAGS and OTHER_CPLUSPLUSFLAGS.
  • WebKitTestRunner/Configurations/BaseTarget.xcconfig: Removed -iframework options from OTHER_CFLAGS and OTHER_CPLUSPLUSFLAGS.
  • WebKitTestRunner/cg/TestInvocationCG.cpp: Include CoreServices.h instead of a LaunchServices header.
3:20 AM Changeset in webkit [240210] by Tadeu Zagallo
  • 39 edits
    1 copy
    2 adds in trunk

Cache bytecode to disk
https://bugs.webkit.org/show_bug.cgi?id=192782
<rdar://problem/46084932>

Reviewed by Keith Miller.

Source/JavaScriptCore:

Add the logic to serialize and deserialize the new JSC bytecode. For now,
the cache is only used for tests.

Each class that can be serialized has a counterpart in CachedTypes, which
handles the decoding and encoding. When decoding, the cached objects are
mmap'd from disk, but only used for creating instances of the respective
in-memory version of each object. Ideally, the mmap'd objects should be
used at runtime in the future.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • builtins/BuiltinNames.cpp:

(JSC::BuiltinNames::BuiltinNames):

  • builtins/BuiltinNames.h:
  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::setConstantIdentifierSetRegisters):

  • bytecode/CodeBlock.h:
  • bytecode/HandlerInfo.h:

(JSC::UnlinkedHandlerInfo::UnlinkedHandlerInfo):

  • bytecode/InstructionStream.h:
  • bytecode/UnlinkedCodeBlock.h:

(JSC::UnlinkedCodeBlock::addSetConstant):
(JSC::UnlinkedCodeBlock::constantIdentifierSets):

  • bytecode/UnlinkedEvalCodeBlock.h:
  • bytecode/UnlinkedFunctionCodeBlock.h:
  • bytecode/UnlinkedFunctionExecutable.h:
  • bytecode/UnlinkedGlobalCodeBlock.h:

(JSC::UnlinkedGlobalCodeBlock::UnlinkedGlobalCodeBlock):

  • bytecode/UnlinkedMetadataTable.h:
  • bytecode/UnlinkedModuleProgramCodeBlock.h:
  • bytecode/UnlinkedProgramCodeBlock.h:
  • interpreter/Interpreter.cpp:
  • jsc.cpp:

(functionQuit):
(runJSC):

  • parser/SourceCode.h:
  • parser/SourceCodeKey.h:

(JSC::SourceCodeKey::operator!= const):

  • parser/UnlinkedSourceCode.h:
  • parser/VariableEnvironment.h:
  • runtime/CachedTypes.cpp: Added.

(JSC::Encoder::Allocation::buffer const):
(JSC::Encoder::Allocation::offset const):
(JSC::Encoder::Allocation::Allocation):
(JSC::Encoder::Encoder):
(JSC::Encoder::vm):
(JSC::Encoder::malloc):
(JSC::Encoder::offsetOf):
(JSC::Encoder::cachePtr):
(JSC::Encoder::offsetForPtr):
(JSC::Encoder::release):
(JSC::Encoder::Page::Page):
(JSC::Encoder::Page::malloc):
(JSC::Encoder::Page::buffer const):
(JSC::Encoder::Page::size const):
(JSC::Encoder::Page::getOffset const):
(JSC::Encoder::allocateNewPage):
(JSC::Decoder::Decoder):
(JSC::Decoder::~Decoder):
(JSC::Decoder::vm):
(JSC::Decoder::offsetOf):
(JSC::Decoder::cacheOffset):
(JSC::Decoder::addFinalizer):
(JSC::encode):
(JSC::decode):
(JSC::VariableLengthObject::buffer const):
(JSC::VariableLengthObject::allocate):
(JSC::CachedPtr::encode):
(JSC::CachedPtr::decode const):
(JSC::CachedPtr::operator-> const):
(JSC::CachedPtr::get const):
(JSC::CachedRefPtr::encode):
(JSC::CachedRefPtr::decode const):
(JSC::CachedWriteBarrier::encode):
(JSC::CachedWriteBarrier::decode const):
(JSC::CachedVector::encode):
(JSC::CachedVector::decode const):
(JSC::CachedPair::encode):
(JSC::CachedPair::decode const):
(JSC::CachedHashMap::encode):
(JSC::CachedHashMap::decode const):
(JSC::CachedUniquedStringImpl::encode):
(JSC::CachedUniquedStringImpl::decode const):
(JSC::CachedStringImpl::encode):
(JSC::CachedStringImpl::decode const):
(JSC::CachedString::encode):
(JSC::CachedString::decode const):
(JSC::CachedIdentifier::encode):
(JSC::CachedIdentifier::decode const):
(JSC::CachedOptional::encode):
(JSC::CachedOptional::decode const):
(JSC::CachedOptional::decodeAsPtr const):
(JSC::CachedSimpleJumpTable::encode):
(JSC::CachedSimpleJumpTable::decode const):
(JSC::CachedStringJumpTable::encode):
(JSC::CachedStringJumpTable::decode const):
(JSC::CachedCodeBlockRareData::encode):
(JSC::CachedCodeBlockRareData::decode const):
(JSC::CachedBitVector::encode):
(JSC::CachedBitVector::decode const):
(JSC::CachedHashSet::encode):
(JSC::CachedHashSet::decode const):
(JSC::CachedConstantIdentifierSetEntry::encode):
(JSC::CachedConstantIdentifierSetEntry::decode const):
(JSC::CachedVariableEnvironment::encode):
(JSC::CachedVariableEnvironment::decode const):
(JSC::CachedArray::encode):
(JSC::CachedArray::decode const):
(JSC::CachedScopedArgumentsTable::encode):
(JSC::CachedScopedArgumentsTable::decode const):
(JSC::CachedSymbolTableEntry::encode):
(JSC::CachedSymbolTableEntry::decode const):
(JSC::CachedSymbolTable::encode):
(JSC::CachedSymbolTable::decode const):
(JSC::CachedImmutableButterfly::encode):
(JSC::CachedImmutableButterfly::decode const):
(JSC::CachedRegExp::encode):
(JSC::CachedRegExp::decode const):
(JSC::CachedTemplateObjectDescriptor::encode):
(JSC::CachedTemplateObjectDescriptor::decode const):
(JSC::CachedBigInt::encode):
(JSC::CachedBigInt::decode const):
(JSC::CachedJSValue::encode):
(JSC::CachedJSValue::decode const):
(JSC::CachedInstructionStream::encode):
(JSC::CachedInstructionStream::decode const):
(JSC::CachedMetadataTable::encode):
(JSC::CachedMetadataTable::decode const):
(JSC::CachedSourceOrigin::encode):
(JSC::CachedSourceOrigin::decode const):
(JSC::CachedTextPosition::encode):
(JSC::CachedTextPosition::decode const):
(JSC::CachedSourceProviderShape::encode):
(JSC::CachedSourceProviderShape::decode const):
(JSC::CachedStringSourceProvider::encode):
(JSC::CachedStringSourceProvider::decode const):
(JSC::CachedWebAssemblySourceProvider::encode):
(JSC::CachedWebAssemblySourceProvider::decode const):
(JSC::CachedSourceProvider::encode):
(JSC::CachedSourceProvider::decode const):
(JSC::CachedUnlinkedSourceCodeShape::encode):
(JSC::CachedUnlinkedSourceCodeShape::decode const):
(JSC::CachedSourceCode::encode):
(JSC::CachedSourceCode::decode const):
(JSC::CachedFunctionExecutable::firstLineOffset const):
(JSC::CachedFunctionExecutable::lineCount const):
(JSC::CachedFunctionExecutable::unlinkedFunctionNameStart const):
(JSC::CachedFunctionExecutable::unlinkedBodyStartColumn const):
(JSC::CachedFunctionExecutable::unlinkedBodyEndColumn const):
(JSC::CachedFunctionExecutable::startOffset const):
(JSC::CachedFunctionExecutable::sourceLength const):
(JSC::CachedFunctionExecutable::parametersStartOffset const):
(JSC::CachedFunctionExecutable::typeProfilingStartOffset const):
(JSC::CachedFunctionExecutable::typeProfilingEndOffset const):
(JSC::CachedFunctionExecutable::parameterCount const):
(JSC::CachedFunctionExecutable::features const):
(JSC::CachedFunctionExecutable::sourceParseMode const):
(JSC::CachedFunctionExecutable::isInStrictContext const):
(JSC::CachedFunctionExecutable::hasCapturedVariables const):
(JSC::CachedFunctionExecutable::isBuiltinFunction const):
(JSC::CachedFunctionExecutable::isBuiltinDefaultClassConstructor const):
(JSC::CachedFunctionExecutable::constructAbility const):
(JSC::CachedFunctionExecutable::constructorKind const):
(JSC::CachedFunctionExecutable::functionMode const):
(JSC::CachedFunctionExecutable::scriptMode const):
(JSC::CachedFunctionExecutable::superBinding const):
(JSC::CachedFunctionExecutable::derivedContextType const):
(JSC::CachedFunctionExecutable::name const):
(JSC::CachedFunctionExecutable::ecmaName const):
(JSC::CachedFunctionExecutable::inferredName const):
(JSC::CachedCodeBlock::instructions const):
(JSC::CachedCodeBlock::thisRegister const):
(JSC::CachedCodeBlock::scopeRegister const):
(JSC::CachedCodeBlock::globalObjectRegister const):
(JSC::CachedCodeBlock::sourceURLDirective const):
(JSC::CachedCodeBlock::sourceMappingURLDirective const):
(JSC::CachedCodeBlock::usesEval const):
(JSC::CachedCodeBlock::isStrictMode const):
(JSC::CachedCodeBlock::isConstructor const):
(JSC::CachedCodeBlock::hasCapturedVariables const):
(JSC::CachedCodeBlock::isBuiltinFunction const):
(JSC::CachedCodeBlock::superBinding const):
(JSC::CachedCodeBlock::scriptMode const):
(JSC::CachedCodeBlock::isArrowFunctionContext const):
(JSC::CachedCodeBlock::isClassContext const):
(JSC::CachedCodeBlock::wasCompiledWithDebuggingOpcodes const):
(JSC::CachedCodeBlock::constructorKind const):
(JSC::CachedCodeBlock::derivedContextType const):
(JSC::CachedCodeBlock::evalContextType const):
(JSC::CachedCodeBlock::hasTailCalls const):
(JSC::CachedCodeBlock::lineCount const):
(JSC::CachedCodeBlock::endColumn const):
(JSC::CachedCodeBlock::numVars const):
(JSC::CachedCodeBlock::numCalleeLocals const):
(JSC::CachedCodeBlock::numParameters const):
(JSC::CachedCodeBlock::features const):
(JSC::CachedCodeBlock::parseMode const):
(JSC::CachedCodeBlock::codeType const):
(JSC::CachedCodeBlock::rareData const):
(JSC::CachedProgramCodeBlock::encode):
(JSC::CachedProgramCodeBlock::decode const):
(JSC::CachedModuleCodeBlock::encode):
(JSC::CachedModuleCodeBlock::decode const):
(JSC::CachedEvalCodeBlock::encode):
(JSC::CachedEvalCodeBlock::decode const):
(JSC::CachedFunctionCodeBlock::encode):
(JSC::CachedFunctionCodeBlock::decode const):
(JSC::UnlinkedFunctionCodeBlock::UnlinkedFunctionCodeBlock):
(JSC::UnlinkedCodeBlock::UnlinkedCodeBlock):
(JSC::CachedCodeBlock<CodeBlockType>::decode const):
(JSC::UnlinkedProgramCodeBlock::UnlinkedProgramCodeBlock):
(JSC::UnlinkedModuleProgramCodeBlock::UnlinkedModuleProgramCodeBlock):
(JSC::UnlinkedEvalCodeBlock::UnlinkedEvalCodeBlock):
(JSC::CachedFunctionExecutable::encode):
(JSC::CachedFunctionExecutable::decode const):
(JSC::UnlinkedFunctionExecutable::UnlinkedFunctionExecutable):
(JSC::CachedCodeBlock<CodeBlockType>::encode):
(JSC::CachedSourceCodeKey::encode):
(JSC::CachedSourceCodeKey::decode const):
(JSC::CacheEntry::encode):
(JSC::CacheEntry:: const):
(JSC:: const):
(JSC::encodeCodeBlock):
(JSC::decodeCodeBlockImpl):

  • runtime/CachedTypes.h: Copied from Source/JavaScriptCore/bytecode/UnlinkedGlobalCodeBlock.h.

(JSC::decodeCodeBlock):

  • runtime/CodeCache.cpp:

(JSC::CodeCacheMap::pruneSlowCase):
(JSC::CodeCache::getUnlinkedGlobalCodeBlock):
(JSC::CodeCache::getUnlinkedGlobalFunctionExecutable):
(JSC::CodeCache::write):

  • runtime/CodeCache.h:

(JSC::CodeCacheMap::begin):
(JSC::CodeCacheMap::end):
(JSC::CodeCacheMap::fetchFromDiskImpl):
(JSC::CodeCacheMap::findCacheAndUpdateAge):
(JSC::writeCodeBlock):

  • runtime/JSBigInt.cpp:
  • runtime/JSBigInt.h:
  • runtime/Options.cpp:

(JSC::recomputeDependentOptions):

  • runtime/Options.h:
  • runtime/RegExp.h:
  • runtime/ScopedArgumentsTable.h:
  • runtime/StackFrame.h:
  • runtime/StructureInlines.h:
  • runtime/SymbolTable.h:

Source/WTF:

BitVectors have to be friends with JSC::CacheBitVector to allow
serializing its buffer as part of the bytecode cache encoding.

  • wtf/BitVector.h:

Tools:

Add test helper to execute bytecode-cache tests: it executes each test
twice, the first with JSC_diskCachePath set to a temporary directory
and second with JSC_forceDiskCache=true (in addition to the cache path)
to guarantee that only the disk cache is being used and no new
UnlinkedCodeBlocks are being created.

  • Scripts/jsc-stress-test-helpers/bytecode-cache-test-helper: Added.
  • Scripts/run-jsc-stress-tests:
1:18 AM Changeset in webkit [240209] by Chris Fleizach
  • 18 edits
    2 adds in trunk

AX: Support returning relative frames for accessibility
https://bugs.webkit.org/show_bug.cgi?id=193414
<rdar://problem/47268501>

Reviewed by Zalan Bujtas.

Source/WebCore:

Create a way for assistive technologies to retrieve a frame in page space that can be transformed to its final screen space by having the AT message the UI process separately.

Consolidate rect/point conversion methods for macOS and iOS.
This is only needed on WebKit2, where we have to reach back across to the hosting process to get the final frame, so we can skip this test on WK1.

Tests: accessibility/mac/relative-frame.html

  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:

(-[WebAccessibilityObjectWrapper _accessibilityConvertPointToViewSpace:]):
(-[WebAccessibilityObjectWrapper _accessibilityRelativeFrame]):
(-[WebAccessibilityObjectWrapper accessibilityVisibleContentRect]):
(-[WebAccessibilityObjectWrapper accessibilityActivationPoint]):
(-[WebAccessibilityObjectWrapper accessibilityFrame]):
(-[WebAccessibilityObjectWrapper frameForTextMarkers:]):
(-[WebAccessibilityObjectWrapper rectsForSelectionRects:]):
(-[WebAccessibilityObjectWrapper convertPointToScreenSpace:]): Deleted.
(-[WebAccessibilityObjectWrapper convertRectToScreenSpace:]): Deleted.

  • accessibility/mac/WebAccessibilityObjectWrapperBase.h:
  • accessibility/mac/WebAccessibilityObjectWrapperBase.mm:

(convertPathToScreenSpaceFunction):
(-[WebAccessibilityObjectWrapperBase convertRectToSpace:space:]):
(-[WebAccessibilityObjectWrapperBase convertPointToScreenSpace:]): Deleted.

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(-[WebAccessibilityObjectWrapper IGNORE_WARNINGS_END]):
(-[WebAccessibilityObjectWrapper position]):
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):
(-[WebAccessibilityObjectWrapper convertPointToScreenSpace:]): Deleted.

Source/WebKit:

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView accessibilityAttributeValue:forParameter:]):
(-[WKWebView IGNORE_WARNINGS_END]):

  • UIProcess/API/mac/WKView.mm:

(-[WKView accessibilityAttributeValue:forParameter:]):
(-[WKView IGNORE_WARNINGS_END]):

  • UIProcess/Cocoa/WebViewImpl.h:
  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::accessibilityAttributeValue):

  • UIProcess/ios/WKContentView.mm:

(-[WKContentView accessibilityConvertRelativeFrameFromPage:]):

Tools:

  • WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
  • WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl:
  • WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm:

(WTR::AccessibilityUIElement::stringDescriptionOfAttributeValue):

  • WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:

(WTR::attributesOfElement):
(WTR::AccessibilityUIElement::stringDescriptionOfAttributeValue):

LayoutTests:

  • accessibility/mac/relative-frame-expected.txt: Added.
  • accessibility/mac/relative-frame.html: Added.
  • platform/mac-wk1/TestExpectations:
12:52 AM Changeset in webkit [240208] by graouts@webkit.org
  • 12 edits in trunk

Add a POINTER_EVENTS feature flag
https://bugs.webkit.org/show_bug.cgi?id=193577
<rdar://problem/47408511>

Unreviewed. Also enable Pointer Events for iosmac.

Source/JavaScriptCore:

  • Configurations/FeatureDefines.xcconfig:

Source/WebCore:

  • Configurations/FeatureDefines.xcconfig:

Source/WebCore/PAL:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKitLegacy/mac:

  • Configurations/FeatureDefines.xcconfig:

Tools:

  • TestWebKitAPI/Configurations/FeatureDefines.xcconfig:

Jan 19, 2019:

9:26 PM Changeset in webkit [240207] by Alan Bujtas
  • 6 edits
    2 adds in trunk

[LFC][Floats] Ensure that floats in FloatingContext::m_floats are always horizontally ordered.
https://bugs.webkit.org/show_bug.cgi?id=193613

Reviewed by Antti Koivisto.

Source/WebCore:

Float items in m_floats list should stay in horizontal position order (left/right edge).

When adding a new float item to floating state list, we have to ensure that it is definitely the left(right)-most item.
Normally it is, but negative horizontal margins can push the float box beyond another float box.

<div style="float: left; height: 10px; width: 10px;"></div>
<div style="float: left; height: 10px; width: 10px; margin-left: -80px;"></div>

The second float's right edge beyond the first float' left edge. THe second float is not the right(inner)-most float anymore.

Test: fast/block/float/floats-with-negative-horizontal-margin.html

  • layout/floats/FloatingContext.cpp:

(WebCore::Layout::areFloatsHorizontallySorted):
(WebCore::Layout::FloatingContext::positionForFloat const):
(WebCore::Layout::FloatingContext::positionForFloatAvoiding const):
(WebCore::Layout::FloatingContext::verticalPositionWithClearance const):

  • layout/floats/FloatingState.cpp:

(WebCore::Layout::FloatingState::append):

Tools:

  • LayoutReloaded/misc/LFC-passing-tests.txt:

LayoutTests:

  • fast/block/float/floats-with-negative-horizontal-margin-expected.html: Added.
  • fast/block/float/floats-with-negative-horizontal-margin.html: Added.
4:28 PM Changeset in webkit [240206] by youenn@apple.com
  • 5 edits in trunk

getUserMedia with a deviceId exact constraint with an empty string value should succeed
https://bugs.webkit.org/show_bug.cgi?id=193541
<rdar://problem/47357218>

Reviewed by Eric Carlson.

If there is a deviceId constraint, remove any empty string from ideal/exact string list.
This will make the device selection be solely based on other constraints.
An improvement might be for 'exact' constraint to pick the default device.
There is currently no such notion of a default device.
Picking the best fitting device seems a good tradeoff.
Covered by updated test.

  • platform/mediastream/MediaConstraints.cpp:

(WebCore::MediaTrackConstraintSetMap::set):

  • platform/mediastream/MediaConstraints.h:

(WebCore::StringConstraint::removeEmptyStringConstraint):

3:31 PM Changeset in webkit [240205] by commit-queue@webkit.org
  • 4 edits
    2 adds in trunk

AXSelected attribute on RadioButton should not be settable.
https://bugs.webkit.org/show_bug.cgi?id=193371

Patch by Eric Liang <ericliang@apple.com> on 2019-01-19
Reviewed by Chris Fleizach.

Source/WebCore:

Test: accessibility/set-selected-editable.html

  • accessibility/AccessibilityNodeObject.cpp:

(WebCore::AccessibilityNodeObject::canSetSelectedAttribute const):

LayoutTests:

This change make RadioButton AXSelected attribute no-settable. If this attribute is not writable, then the trackpad should work correctly.

  • accessibility/set-selected-editable-expected.txt: Added.
  • accessibility/set-selected-editable.html: Added.
3:15 PM Changeset in webkit [240204] by yusukesuzuki@slowstart.org
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] Reorder JSSegmentedVariableObject member for preparation of JSGlobalObject memory reduction
https://bugs.webkit.org/show_bug.cgi?id=193609

Reviewed by Sam Weinig.

Basically, we should order the members in large => small order not to add paddings.

  • runtime/JSSegmentedVariableObject.h:
9:38 AM Changeset in webkit [240203] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WebKit

Follow-up: iOS: Updating input mode should update the software keyboard
<https://bugs.webkit.org/show_bug.cgi?id=193565>
<rdar://problem/47376334>

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::focusedElementDidChangeInputMode): Fix iOS
Debug builds after r240199 by downcasting element to
HTMLElement before calling canonicalInputMode().

9:38 AM Changeset in webkit [240202] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WebKit

Sort WebKit Xcode project file

  • WebKit.xcodeproj/project.pbxproj:
4:24 AM Changeset in webkit [240201] by commit-queue@webkit.org
  • 16 edits in trunk

Add a POINTER_EVENTS feature flag
https://bugs.webkit.org/show_bug.cgi?id=193577

Patch by Antoine Quint <Antoine Quint> on 2019-01-19
Reviewed by Dean Jackson.

Source/JavaScriptCore:

  • Configurations/FeatureDefines.xcconfig:

Source/WebCore:

Only expose the PointerEvent interface if the POINTER_EVENTS feature is enabled.

  • Configurations/FeatureDefines.xcconfig:
  • dom/EventNames.in:
  • dom/PointerEvent.cpp:
  • dom/PointerEvent.h:
  • dom/PointerEvent.idl:

Source/WebCore/PAL:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKitLegacy/mac:

  • Configurations/FeatureDefines.xcconfig:

Tools:

  • TestWebKitAPI/Configurations/FeatureDefines.xcconfig:
1:08 AM Changeset in webkit [240200] by Dewei Zhu
  • 3 edits in trunk/Websites/perf.webkit.org

Updating commit in OSBuildFetcher should respect revision range in config.
https://bugs.webkit.org/show_bug.cgi?id=193558

Reviewed by Ryosuke Niwa.

OSBuildFetcher._fetchAvailableBuilds should filter out commits those are not in
revision range specified by cofnig.

  • server-tests/tools-os-build-fetcher-tests.js: Added a unit test for this change.
  • tools/js/os-build-fetcher.js:

(prototype.async._fetchAvailableBuilds): Filter out commits from update list if commit
revision is out of range.

Note: See TracTimeline for information about the timeline view.