[intrinsics] Remove the %_IsDate intrinsic.
It's fine to only have the runtime call here, as it's only used in the debug mirror. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1699133002 Cr-Commit-Position: refs/heads/master@{#34056}
This commit is contained in:
parent
82289a989d
commit
0d595bb001
@ -49,8 +49,6 @@ Reduction JSIntrinsicLowering::Reduce(Node* node) {
|
||||
return ReduceIncrementStatsCounter(node);
|
||||
case Runtime::kInlineIsArray:
|
||||
return ReduceIsInstanceType(node, JS_ARRAY_TYPE);
|
||||
case Runtime::kInlineIsDate:
|
||||
return ReduceIsInstanceType(node, JS_DATE_TYPE);
|
||||
case Runtime::kInlineIsTypedArray:
|
||||
return ReduceIsInstanceType(node, JS_TYPED_ARRAY_TYPE);
|
||||
case Runtime::kInlineIsRegExp:
|
||||
|
@ -12452,16 +12452,6 @@ void HOptimizedGraphBuilder::GenerateValueOf(CallRuntime* call) {
|
||||
}
|
||||
|
||||
|
||||
void HOptimizedGraphBuilder::GenerateIsDate(CallRuntime* call) {
|
||||
DCHECK_EQ(1, call->arguments()->length());
|
||||
CHECK_ALIVE(VisitForValue(call->arguments()->at(0)));
|
||||
HValue* value = Pop();
|
||||
HHasInstanceTypeAndBranch* result =
|
||||
New<HHasInstanceTypeAndBranch>(value, JS_DATE_TYPE);
|
||||
return ast_context()->ReturnControl(result, call->id());
|
||||
}
|
||||
|
||||
|
||||
void HOptimizedGraphBuilder::GenerateOneByteSeqStringSetChar(
|
||||
CallRuntime* call) {
|
||||
DCHECK(call->arguments()->length() == 3);
|
||||
|
@ -2199,7 +2199,6 @@ class HOptimizedGraphBuilder : public HGraphBuilder, public AstVisitor {
|
||||
F(IsJSProxy) \
|
||||
F(Call) \
|
||||
F(ValueOf) \
|
||||
F(IsDate) \
|
||||
F(StringCharFromCode) \
|
||||
F(StringCharAt) \
|
||||
F(OneByteSeqStringSetChar) \
|
||||
|
@ -3182,28 +3182,6 @@ void FullCodeGenerator::EmitValueOf(CallRuntime* expr) {
|
||||
}
|
||||
|
||||
|
||||
void FullCodeGenerator::EmitIsDate(CallRuntime* expr) {
|
||||
ZoneList<Expression*>* args = expr->arguments();
|
||||
DCHECK_EQ(1, args->length());
|
||||
|
||||
VisitForAccumulatorValue(args->at(0));
|
||||
|
||||
Label materialize_true, materialize_false;
|
||||
Label* if_true = nullptr;
|
||||
Label* if_false = nullptr;
|
||||
Label* fall_through = nullptr;
|
||||
context()->PrepareTest(&materialize_true, &materialize_false, &if_true,
|
||||
&if_false, &fall_through);
|
||||
|
||||
__ JumpIfSmi(r0, if_false);
|
||||
__ CompareObjectType(r0, r1, r1, JS_DATE_TYPE);
|
||||
PrepareForBailoutBeforeSplit(expr, true, if_true, if_false);
|
||||
Split(eq, if_true, if_false, fall_through);
|
||||
|
||||
context()->Plug(if_true, if_false);
|
||||
}
|
||||
|
||||
|
||||
void FullCodeGenerator::EmitOneByteSeqStringSetChar(CallRuntime* expr) {
|
||||
ZoneList<Expression*>* args = expr->arguments();
|
||||
DCHECK_EQ(3, args->length());
|
||||
|
@ -2992,28 +2992,6 @@ void FullCodeGenerator::EmitValueOf(CallRuntime* expr) {
|
||||
}
|
||||
|
||||
|
||||
void FullCodeGenerator::EmitIsDate(CallRuntime* expr) {
|
||||
ZoneList<Expression*>* args = expr->arguments();
|
||||
DCHECK_EQ(1, args->length());
|
||||
|
||||
VisitForAccumulatorValue(args->at(0));
|
||||
|
||||
Label materialize_true, materialize_false;
|
||||
Label* if_true = nullptr;
|
||||
Label* if_false = nullptr;
|
||||
Label* fall_through = nullptr;
|
||||
context()->PrepareTest(&materialize_true, &materialize_false, &if_true,
|
||||
&if_false, &fall_through);
|
||||
|
||||
__ JumpIfSmi(x0, if_false);
|
||||
__ CompareObjectType(x0, x10, x11, JS_DATE_TYPE);
|
||||
PrepareForBailoutBeforeSplit(expr, true, if_true, if_false);
|
||||
Split(eq, if_true, if_false, fall_through);
|
||||
|
||||
context()->Plug(if_true, if_false);
|
||||
}
|
||||
|
||||
|
||||
void FullCodeGenerator::EmitOneByteSeqStringSetChar(CallRuntime* expr) {
|
||||
ZoneList<Expression*>* args = expr->arguments();
|
||||
DCHECK_EQ(3, args->length());
|
||||
|
@ -526,7 +526,6 @@ class FullCodeGenerator: public AstVisitor {
|
||||
F(IsJSProxy) \
|
||||
F(Call) \
|
||||
F(ValueOf) \
|
||||
F(IsDate) \
|
||||
F(StringCharFromCode) \
|
||||
F(StringCharAt) \
|
||||
F(OneByteSeqStringSetChar) \
|
||||
|
@ -3063,28 +3063,6 @@ void FullCodeGenerator::EmitValueOf(CallRuntime* expr) {
|
||||
}
|
||||
|
||||
|
||||
void FullCodeGenerator::EmitIsDate(CallRuntime* expr) {
|
||||
ZoneList<Expression*>* args = expr->arguments();
|
||||
DCHECK_EQ(1, args->length());
|
||||
|
||||
VisitForAccumulatorValue(args->at(0));
|
||||
|
||||
Label materialize_true, materialize_false;
|
||||
Label* if_true = nullptr;
|
||||
Label* if_false = nullptr;
|
||||
Label* fall_through = nullptr;
|
||||
context()->PrepareTest(&materialize_true, &materialize_false, &if_true,
|
||||
&if_false, &fall_through);
|
||||
|
||||
__ JumpIfSmi(eax, if_false);
|
||||
__ CmpObjectType(eax, JS_DATE_TYPE, ebx);
|
||||
PrepareForBailoutBeforeSplit(expr, true, if_true, if_false);
|
||||
Split(equal, if_true, if_false, fall_through);
|
||||
|
||||
context()->Plug(if_true, if_false);
|
||||
}
|
||||
|
||||
|
||||
void FullCodeGenerator::EmitOneByteSeqStringSetChar(CallRuntime* expr) {
|
||||
ZoneList<Expression*>* args = expr->arguments();
|
||||
DCHECK_EQ(3, args->length());
|
||||
|
@ -3171,28 +3171,6 @@ void FullCodeGenerator::EmitValueOf(CallRuntime* expr) {
|
||||
}
|
||||
|
||||
|
||||
void FullCodeGenerator::EmitIsDate(CallRuntime* expr) {
|
||||
ZoneList<Expression*>* args = expr->arguments();
|
||||
DCHECK_EQ(1, args->length());
|
||||
|
||||
VisitForAccumulatorValue(args->at(0));
|
||||
|
||||
Label materialize_true, materialize_false;
|
||||
Label* if_true = nullptr;
|
||||
Label* if_false = nullptr;
|
||||
Label* fall_through = nullptr;
|
||||
context()->PrepareTest(&materialize_true, &materialize_false, &if_true,
|
||||
&if_false, &fall_through);
|
||||
|
||||
__ JumpIfSmi(v0, if_false);
|
||||
__ GetObjectType(v0, a1, a1);
|
||||
PrepareForBailoutBeforeSplit(expr, true, if_true, if_false);
|
||||
Split(eq, a1, Operand(JS_DATE_TYPE), if_true, if_false, fall_through);
|
||||
|
||||
context()->Plug(if_true, if_false);
|
||||
}
|
||||
|
||||
|
||||
void FullCodeGenerator::EmitOneByteSeqStringSetChar(CallRuntime* expr) {
|
||||
ZoneList<Expression*>* args = expr->arguments();
|
||||
DCHECK_EQ(3, args->length());
|
||||
|
@ -3176,28 +3176,6 @@ void FullCodeGenerator::EmitValueOf(CallRuntime* expr) {
|
||||
}
|
||||
|
||||
|
||||
void FullCodeGenerator::EmitIsDate(CallRuntime* expr) {
|
||||
ZoneList<Expression*>* args = expr->arguments();
|
||||
DCHECK_EQ(1, args->length());
|
||||
|
||||
VisitForAccumulatorValue(args->at(0));
|
||||
|
||||
Label materialize_true, materialize_false;
|
||||
Label* if_true = nullptr;
|
||||
Label* if_false = nullptr;
|
||||
Label* fall_through = nullptr;
|
||||
context()->PrepareTest(&materialize_true, &materialize_false, &if_true,
|
||||
&if_false, &fall_through);
|
||||
|
||||
__ JumpIfSmi(v0, if_false);
|
||||
__ GetObjectType(v0, a1, a1);
|
||||
PrepareForBailoutBeforeSplit(expr, true, if_true, if_false);
|
||||
Split(eq, a1, Operand(JS_DATE_TYPE), if_true, if_false, fall_through);
|
||||
|
||||
context()->Plug(if_true, if_false);
|
||||
}
|
||||
|
||||
|
||||
void FullCodeGenerator::EmitOneByteSeqStringSetChar(CallRuntime* expr) {
|
||||
ZoneList<Expression*>* args = expr->arguments();
|
||||
DCHECK_EQ(3, args->length());
|
||||
|
@ -3049,28 +3049,6 @@ void FullCodeGenerator::EmitValueOf(CallRuntime* expr) {
|
||||
}
|
||||
|
||||
|
||||
void FullCodeGenerator::EmitIsDate(CallRuntime* expr) {
|
||||
ZoneList<Expression*>* args = expr->arguments();
|
||||
DCHECK_EQ(1, args->length());
|
||||
|
||||
VisitForAccumulatorValue(args->at(0));
|
||||
|
||||
Label materialize_true, materialize_false;
|
||||
Label* if_true = nullptr;
|
||||
Label* if_false = nullptr;
|
||||
Label* fall_through = nullptr;
|
||||
context()->PrepareTest(&materialize_true, &materialize_false, &if_true,
|
||||
&if_false, &fall_through);
|
||||
|
||||
__ JumpIfSmi(rax, if_false);
|
||||
__ CmpObjectType(rax, JS_DATE_TYPE, rbx);
|
||||
PrepareForBailoutBeforeSplit(expr, true, if_true, if_false);
|
||||
Split(equal, if_true, if_false, fall_through);
|
||||
|
||||
context()->Plug(if_true, if_false);
|
||||
}
|
||||
|
||||
|
||||
void FullCodeGenerator::EmitOneByteSeqStringSetChar(CallRuntime* expr) {
|
||||
ZoneList<Expression*>* args = expr->arguments();
|
||||
DCHECK_EQ(3, args->length());
|
||||
|
@ -3067,28 +3067,6 @@ void FullCodeGenerator::EmitValueOf(CallRuntime* expr) {
|
||||
}
|
||||
|
||||
|
||||
void FullCodeGenerator::EmitIsDate(CallRuntime* expr) {
|
||||
ZoneList<Expression*>* args = expr->arguments();
|
||||
DCHECK_EQ(1, args->length());
|
||||
|
||||
VisitForAccumulatorValue(args->at(0));
|
||||
|
||||
Label materialize_true, materialize_false;
|
||||
Label* if_true = nullptr;
|
||||
Label* if_false = nullptr;
|
||||
Label* fall_through = nullptr;
|
||||
context()->PrepareTest(&materialize_true, &materialize_false, &if_true,
|
||||
&if_false, &fall_through);
|
||||
|
||||
__ JumpIfSmi(eax, if_false);
|
||||
__ CmpObjectType(eax, JS_DATE_TYPE, ebx);
|
||||
PrepareForBailoutBeforeSplit(expr, true, if_true, if_false);
|
||||
Split(equal, if_true, if_false, fall_through);
|
||||
|
||||
context()->Plug(if_true, if_false);
|
||||
}
|
||||
|
||||
|
||||
void FullCodeGenerator::EmitOneByteSeqStringSetChar(CallRuntime* expr) {
|
||||
ZoneList<Expression*>* args = expr->arguments();
|
||||
DCHECK_EQ(3, args->length());
|
||||
|
@ -67,7 +67,7 @@ macro IS_ARRAYBUFFER(arg) = (%_ClassOf(arg) === 'ArrayBuffer');
|
||||
macro IS_BOOLEAN(arg) = (typeof(arg) === 'boolean');
|
||||
macro IS_BOOLEAN_WRAPPER(arg) = (%_ClassOf(arg) === 'Boolean');
|
||||
macro IS_DATAVIEW(arg) = (%_ClassOf(arg) === 'DataView');
|
||||
macro IS_DATE(arg) = (%_IsDate(arg));
|
||||
macro IS_DATE(arg) = (%IsDate(arg));
|
||||
macro IS_ERROR(arg) = (%_ClassOf(arg) === 'Error');
|
||||
macro IS_FUNCTION(arg) = (%IsFunction(arg));
|
||||
macro IS_GENERATOR(arg) = (%_ClassOf(arg) === 'Generator');
|
||||
|
@ -160,37 +160,6 @@ TEST_F(JSIntrinsicLoweringTest, InlineIsArray) {
|
||||
}
|
||||
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// %_IsDate
|
||||
|
||||
|
||||
TEST_F(JSIntrinsicLoweringTest, InlineIsDate) {
|
||||
Node* const input = Parameter(0);
|
||||
Node* const context = Parameter(1);
|
||||
Node* const effect = graph()->start();
|
||||
Node* const control = graph()->start();
|
||||
Reduction const r = Reduce(
|
||||
graph()->NewNode(javascript()->CallRuntime(Runtime::kInlineIsDate, 1),
|
||||
input, context, effect, control));
|
||||
ASSERT_TRUE(r.Changed());
|
||||
|
||||
Node* phi = r.replacement();
|
||||
Capture<Node*> branch, if_false;
|
||||
EXPECT_THAT(
|
||||
phi,
|
||||
IsPhi(
|
||||
MachineRepresentation::kTagged, IsFalseConstant(),
|
||||
IsWord32Equal(IsLoadField(AccessBuilder::ForMapInstanceType(),
|
||||
IsLoadField(AccessBuilder::ForMap(), input,
|
||||
effect, CaptureEq(&if_false)),
|
||||
effect, _),
|
||||
IsInt32Constant(JS_DATE_TYPE)),
|
||||
IsMerge(IsIfTrue(AllOf(CaptureEq(&branch),
|
||||
IsBranch(IsObjectIsSmi(input), control))),
|
||||
AllOf(CaptureEq(&if_false), IsIfFalse(CaptureEq(&branch))))));
|
||||
}
|
||||
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// %_IsTypedArray
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user