| Index: src/builtins/builtins-string.cc
|
| diff --git a/src/builtins/builtins-string.cc b/src/builtins/builtins-string.cc
|
| index 1b965b97b25d8fc3153127860c5022c9b983ece7..865b5cbc08d725be2c2db6b1d95d7bdb3d3aa642 100644
|
| --- a/src/builtins/builtins-string.cc
|
| +++ b/src/builtins/builtins-string.cc
|
| @@ -10,9 +10,10 @@
|
| namespace v8 {
|
| namespace internal {
|
|
|
| -namespace {
|
| +typedef CodeStubAssembler::ResultMode ResultMode;
|
| +typedef CodeStubAssembler::RelationalComparisonMode RelationalComparisonMode;
|
|
|
| -enum ResultMode { kDontNegateResult, kNegateResult };
|
| +namespace {
|
|
|
| void GenerateStringEqual(CodeStubAssembler* assembler, ResultMode mode) {
|
| // Here's pseudo-code for the algorithm below in case of kDontNegateResult
|
| @@ -168,9 +169,10 @@ void GenerateStringEqual(CodeStubAssembler* assembler, ResultMode mode) {
|
| {
|
| // TODO(bmeurer): Add fast case support for flattened cons strings;
|
| // also add support for two byte string equality checks.
|
| - Runtime::FunctionId function_id = (mode == kDontNegateResult)
|
| - ? Runtime::kStringEqual
|
| - : Runtime::kStringNotEqual;
|
| + Runtime::FunctionId function_id =
|
| + (mode == ResultMode::kDontNegateResult)
|
| + ? Runtime::kStringEqual
|
| + : Runtime::kStringNotEqual;
|
| assembler->TailCallRuntime(function_id, context, lhs, rhs);
|
| }
|
| }
|
| @@ -184,18 +186,14 @@ void GenerateStringEqual(CodeStubAssembler* assembler, ResultMode mode) {
|
| }
|
|
|
| assembler->Bind(&if_equal);
|
| - assembler->Return(assembler->BooleanConstant(mode == kDontNegateResult));
|
| + assembler->Return(
|
| + assembler->BooleanConstant(mode == ResultMode::kDontNegateResult));
|
|
|
| assembler->Bind(&if_notequal);
|
| - assembler->Return(assembler->BooleanConstant(mode == kNegateResult));
|
| + assembler->Return(
|
| + assembler->BooleanConstant(mode == ResultMode::kNegateResult));
|
| }
|
|
|
| -enum RelationalComparisonMode {
|
| - kLessThan,
|
| - kLessThanOrEqual,
|
| - kGreaterThan,
|
| - kGreaterThanOrEqual
|
| -};
|
|
|
| void GenerateStringRelationalComparison(CodeStubAssembler* assembler,
|
| RelationalComparisonMode mode) {
|
| @@ -320,19 +318,19 @@ void GenerateStringRelationalComparison(CodeStubAssembler* assembler,
|
| // TODO(bmeurer): Add fast case support for flattened cons strings;
|
| // also add support for two byte string relational comparisons.
|
| switch (mode) {
|
| - case kLessThan:
|
| + case RelationalComparisonMode::kLessThan:
|
| assembler->TailCallRuntime(Runtime::kStringLessThan, context, lhs,
|
| rhs);
|
| break;
|
| - case kLessThanOrEqual:
|
| + case RelationalComparisonMode::kLessThanOrEqual:
|
| assembler->TailCallRuntime(Runtime::kStringLessThanOrEqual, context,
|
| lhs, rhs);
|
| break;
|
| - case kGreaterThan:
|
| + case RelationalComparisonMode::kGreaterThan:
|
| assembler->TailCallRuntime(Runtime::kStringGreaterThan, context, lhs,
|
| rhs);
|
| break;
|
| - case kGreaterThanOrEqual:
|
| + case RelationalComparisonMode::kGreaterThanOrEqual:
|
| assembler->TailCallRuntime(Runtime::kStringGreaterThanOrEqual,
|
| context, lhs, rhs);
|
| break;
|
| @@ -342,39 +340,39 @@ void GenerateStringRelationalComparison(CodeStubAssembler* assembler,
|
|
|
| assembler->Bind(&if_less);
|
| switch (mode) {
|
| - case kLessThan:
|
| - case kLessThanOrEqual:
|
| + case RelationalComparisonMode::kLessThan:
|
| + case RelationalComparisonMode::kLessThanOrEqual:
|
| assembler->Return(assembler->BooleanConstant(true));
|
| break;
|
|
|
| - case kGreaterThan:
|
| - case kGreaterThanOrEqual:
|
| + case RelationalComparisonMode::kGreaterThan:
|
| + case RelationalComparisonMode::kGreaterThanOrEqual:
|
| assembler->Return(assembler->BooleanConstant(false));
|
| break;
|
| }
|
|
|
| assembler->Bind(&if_equal);
|
| switch (mode) {
|
| - case kLessThan:
|
| - case kGreaterThan:
|
| + case RelationalComparisonMode::kLessThan:
|
| + case RelationalComparisonMode::kGreaterThan:
|
| assembler->Return(assembler->BooleanConstant(false));
|
| break;
|
|
|
| - case kLessThanOrEqual:
|
| - case kGreaterThanOrEqual:
|
| + case RelationalComparisonMode::kLessThanOrEqual:
|
| + case RelationalComparisonMode::kGreaterThanOrEqual:
|
| assembler->Return(assembler->BooleanConstant(true));
|
| break;
|
| }
|
|
|
| assembler->Bind(&if_greater);
|
| switch (mode) {
|
| - case kLessThan:
|
| - case kLessThanOrEqual:
|
| + case RelationalComparisonMode::kLessThan:
|
| + case RelationalComparisonMode::kLessThanOrEqual:
|
| assembler->Return(assembler->BooleanConstant(false));
|
| break;
|
|
|
| - case kGreaterThan:
|
| - case kGreaterThanOrEqual:
|
| + case RelationalComparisonMode::kGreaterThan:
|
| + case RelationalComparisonMode::kGreaterThanOrEqual:
|
| assembler->Return(assembler->BooleanConstant(true));
|
| break;
|
| }
|
| @@ -384,32 +382,36 @@ void GenerateStringRelationalComparison(CodeStubAssembler* assembler,
|
|
|
| // static
|
| void Builtins::Generate_StringEqual(CodeStubAssembler* assembler) {
|
| - GenerateStringEqual(assembler, kDontNegateResult);
|
| + GenerateStringEqual(assembler, ResultMode::kDontNegateResult);
|
| }
|
|
|
| // static
|
| void Builtins::Generate_StringNotEqual(CodeStubAssembler* assembler) {
|
| - GenerateStringEqual(assembler, kNegateResult);
|
| + GenerateStringEqual(assembler, ResultMode::kNegateResult);
|
| }
|
|
|
| // static
|
| void Builtins::Generate_StringLessThan(CodeStubAssembler* assembler) {
|
| - GenerateStringRelationalComparison(assembler, kLessThan);
|
| + GenerateStringRelationalComparison(assembler,
|
| + RelationalComparisonMode::kLessThan);
|
| }
|
|
|
| // static
|
| void Builtins::Generate_StringLessThanOrEqual(CodeStubAssembler* assembler) {
|
| - GenerateStringRelationalComparison(assembler, kLessThanOrEqual);
|
| + GenerateStringRelationalComparison(
|
| + assembler, RelationalComparisonMode::kLessThanOrEqual);
|
| }
|
|
|
| // static
|
| void Builtins::Generate_StringGreaterThan(CodeStubAssembler* assembler) {
|
| - GenerateStringRelationalComparison(assembler, kGreaterThan);
|
| + GenerateStringRelationalComparison(assembler,
|
| + RelationalComparisonMode::kGreaterThan);
|
| }
|
|
|
| // static
|
| void Builtins::Generate_StringGreaterThanOrEqual(CodeStubAssembler* assembler) {
|
| - GenerateStringRelationalComparison(assembler, kGreaterThanOrEqual);
|
| + GenerateStringRelationalComparison(
|
| + assembler, RelationalComparisonMode::kGreaterThanOrEqual);
|
| }
|
|
|
| // -----------------------------------------------------------------------------
|
|
|