Ignore:
Timestamp:
Apr 30, 2020, 10:38:06 PM (5 years ago)
Author:
Ross Kirsling
Message:

TriState should be an enum class and use "Indeterminate" instead of "Mixed"
https://bugs.webkit.org/show_bug.cgi?id=211268

Reviewed by Mark Lam.

Source/JavaScriptCore:

  • b3/B3Const32Value.cpp:

(JSC::B3::Const32Value::equalConstant const):
(JSC::B3::Const32Value::notEqualConstant const):
(JSC::B3::Const32Value::lessThanConstant const):
(JSC::B3::Const32Value::greaterThanConstant const):
(JSC::B3::Const32Value::lessEqualConstant const):
(JSC::B3::Const32Value::greaterEqualConstant const):
(JSC::B3::Const32Value::aboveConstant const):
(JSC::B3::Const32Value::belowConstant const):
(JSC::B3::Const32Value::aboveEqualConstant const):
(JSC::B3::Const32Value::belowEqualConstant const):

  • b3/B3Const64Value.cpp:

(JSC::B3::Const64Value::equalConstant const):
(JSC::B3::Const64Value::notEqualConstant const):
(JSC::B3::Const64Value::lessThanConstant const):
(JSC::B3::Const64Value::greaterThanConstant const):
(JSC::B3::Const64Value::lessEqualConstant const):
(JSC::B3::Const64Value::greaterEqualConstant const):
(JSC::B3::Const64Value::aboveConstant const):
(JSC::B3::Const64Value::belowConstant const):
(JSC::B3::Const64Value::aboveEqualConstant const):
(JSC::B3::Const64Value::belowEqualConstant const):

  • b3/B3ConstDoubleValue.cpp:

(JSC::B3::ConstDoubleValue::equalConstant const):
(JSC::B3::ConstDoubleValue::notEqualConstant const):
(JSC::B3::ConstDoubleValue::lessThanConstant const):
(JSC::B3::ConstDoubleValue::greaterThanConstant const):
(JSC::B3::ConstDoubleValue::lessEqualConstant const):
(JSC::B3::ConstDoubleValue::greaterEqualConstant const):
(JSC::B3::ConstDoubleValue::equalOrUnorderedConstant const):

  • b3/B3ConstFloatValue.cpp:

(JSC::B3::ConstFloatValue::equalConstant const):
(JSC::B3::ConstFloatValue::notEqualConstant const):
(JSC::B3::ConstFloatValue::lessThanConstant const):
(JSC::B3::ConstFloatValue::greaterThanConstant const):
(JSC::B3::ConstFloatValue::lessEqualConstant const):
(JSC::B3::ConstFloatValue::greaterEqualConstant const):
(JSC::B3::ConstFloatValue::equalOrUnorderedConstant const):

  • b3/B3Procedure.cpp:

(JSC::B3::Procedure::addBoolConstant):

  • b3/B3Procedure.h:
  • b3/B3ReduceStrength.cpp:
  • b3/B3Value.cpp:

(JSC::B3::Value::equalConstant const):
(JSC::B3::Value::notEqualConstant const):
(JSC::B3::Value::lessThanConstant const):
(JSC::B3::Value::greaterThanConstant const):
(JSC::B3::Value::lessEqualConstant const):
(JSC::B3::Value::greaterEqualConstant const):
(JSC::B3::Value::aboveConstant const):
(JSC::B3::Value::belowConstant const):
(JSC::B3::Value::aboveEqualConstant const):
(JSC::B3::Value::belowEqualConstant const):
(JSC::B3::Value::equalOrUnorderedConstant const):
(JSC::B3::Value::asTriState const):

  • b3/B3Value.h:
  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::~CodeBlock):
(JSC::CodeBlock::thresholdForJIT):

  • bytecode/UnlinkedCodeBlock.cpp:

(JSC::UnlinkedCodeBlock::UnlinkedCodeBlock):

  • bytecode/UnlinkedFunctionExecutable.cpp:

(JSC::UnlinkedFunctionExecutable::visitChildren):

  • bytecompiler/NodesCodegen.cpp:

(JSC::ConstantNode::emitBytecodeInConditionContext):
(JSC::BinaryOpNode::emitBytecodeInConditionContext):
(JSC::BinaryOpNode::tryFoldToBranch):

  • dfg/DFGByteCodeParser.cpp:

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

  • dfg/DFGCFGSimplificationPhase.cpp:

(JSC::DFG::CFGSimplificationPhase::run):

  • dfg/DFGLazyJSValue.cpp:

(JSC::DFG::equalToSingleCharacter):
(JSC::DFG::equalToStringImpl):
(JSC::DFG::LazyJSValue::strictEqual const):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileDataViewGet):
(JSC::FTL::DFG::LowerDFGToB3::compileDataViewSet):

  • ftl/FTLOutput.cpp:

(JSC::FTL::Output::equal):
(JSC::FTL::Output::notEqual):
(JSC::FTL::Output::above):
(JSC::FTL::Output::aboveOrEqual):
(JSC::FTL::Output::below):
(JSC::FTL::Output::belowOrEqual):
(JSC::FTL::Output::greaterThan):
(JSC::FTL::Output::greaterThanOrEqual):
(JSC::FTL::Output::lessThan):
(JSC::FTL::Output::lessThanOrEqual):

  • jit/JITOperations.cpp:
  • runtime/CachedTypes.cpp:

(JSC::UnlinkedCodeBlock::UnlinkedCodeBlock):

  • runtime/DefinePropertyAttributes.h:

(JSC::DefinePropertyAttributes::DefinePropertyAttributes):
(JSC::DefinePropertyAttributes::hasWritable const):
(JSC::DefinePropertyAttributes::writable const):
(JSC::DefinePropertyAttributes::hasConfigurable const):
(JSC::DefinePropertyAttributes::configurable const):
(JSC::DefinePropertyAttributes::hasEnumerable const):
(JSC::DefinePropertyAttributes::enumerable const):
(JSC::DefinePropertyAttributes::setWritable):
(JSC::DefinePropertyAttributes::setConfigurable):
(JSC::DefinePropertyAttributes::setEnumerable):

  • runtime/IntlCollator.cpp:

(JSC::IntlCollator::initializeCollator):

  • runtime/IntlDateTimeFormat.cpp:

(JSC::IntlDateTimeFormat::initializeDateTimeFormat):

  • runtime/IntlNumberFormat.cpp:

(JSC::IntlNumberFormat::initializeNumberFormat):

  • runtime/IntlObject.cpp:

(JSC::intlBooleanOption):

  • runtime/JSCJSValueInlines.h:

(JSC::JSValue::pureStrictEqual):
(JSC::JSValue::pureToBoolean const):

  • runtime/JSCellInlines.h:

(JSC::JSCell::pureToBoolean const):

Source/WebCore:

  • dom/Document.cpp:

(WebCore::Document::queryCommandIndeterm):
(WebCore::Document::queryCommandState):

  • editing/EditingStyle.cpp:

(WebCore::EditingStyle::triStateOfStyle const):
(WebCore::EditingStyle::hasStyle):

  • editing/Editor.cpp:

(WebCore::Editor::selectionUnorderedListState const):
(WebCore::Editor::selectionOrderedListState const):

  • editing/EditorCommand.cpp:

(WebCore::isStylePresent):
(WebCore::stateStyle):
(WebCore::stateTextWritingDirection):
(WebCore::stateNone):
(WebCore::stateStyleWithCSS):
(WebCore::Editor::Command::state const):
(WebCore::Editor::Command::value const):

  • page/ContextMenuController.cpp:

(WebCore::ContextMenuController::checkOrEnableIfNeeded const):

Source/WebKit:

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::validateCommand):

  • WebProcess/WebPage/glib/WebPageGLib.cpp:

(WebKit::WebPage::getPlatformEditorState const):

Source/WebKitLegacy/mac:

  • WebView/WebHTMLView.mm:

(kit):
(-[WebHTMLView validateUserInterfaceItemWithoutDelegate:]):

Source/WTF:

The word "indeterminate" comes from boost::tribool.
A third state is generally not "mixed" but rather unknown.

  • wtf/TriState.h:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp

    r260520 r260984  
    104104
    105105    if (UNLIKELY(needsDebugHook())) {
    106         if (value != MixedTriState)
     106        if (value != TriState::Indeterminate)
    107107            generator.emitDebugHook(this);
    108108    }
    109109
    110     if (value == MixedTriState)
     110    if (value == TriState::Indeterminate)
    111111        ExpressionNode::emitBytecodeInConditionContext(generator, trueTarget, falseTarget, fallThroughMode);
    112     else if (value == TrueTriState && fallThroughMode == FallThroughMeansFalse)
     112    else if (value == TriState::True && fallThroughMode == FallThroughMeansFalse)
    113113        generator.emitJump(trueTarget);
    114     else if (value == FalseTriState && fallThroughMode == FallThroughMeansTrue)
     114    else if (value == TriState::False && fallThroughMode == FallThroughMeansTrue)
    115115        generator.emitJump(falseTarget);
    116116
     
    24772477
    24782478    if (UNLIKELY(needsDebugHook())) {
    2479         if (branchCondition != MixedTriState)
     2479        if (branchCondition != TriState::Indeterminate)
    24802480            generator.emitDebugHook(this);
    24812481    }
    24822482
    2483     if (branchCondition == MixedTriState)
     2483    if (branchCondition == TriState::Indeterminate)
    24842484        ExpressionNode::emitBytecodeInConditionContext(generator, trueTarget, falseTarget, fallThroughMode);
    2485     else if (branchCondition == TrueTriState)
     2485    else if (branchCondition == TriState::True)
    24862486        generator.emitNodeInConditionContext(branchExpression, trueTarget, falseTarget, fallThroughMode);
    24872487    else
     
    25052505void BinaryOpNode::tryFoldToBranch(BytecodeGenerator& generator, TriState& branchCondition, ExpressionNode*& branchExpression)
    25062506{
    2507     branchCondition = MixedTriState;
     2507    branchCondition = TriState::Indeterminate;
    25082508    branchExpression = 0;
    25092509
     
    25282528
    25292529    if (opcodeID == op_eq || opcodeID == op_stricteq)
    2530         branchCondition = triState(value.pureToBoolean());
     2530        branchCondition = triState(value.pureToBoolean() != TriState::False);
    25312531    else if (opcodeID == op_neq || opcodeID == op_nstricteq)
    2532         branchCondition = triState(!value.pureToBoolean());
     2532        branchCondition = triState(value.pureToBoolean() == TriState::False);
    25332533}
    25342534
Note: See TracChangeset for help on using the changeset viewer.