Commit e28b1626 authored by peterssen's avatar peterssen Committed by Commit bot

Fix FastAccessorAssembler inverted jump conditions

BUG=chromium:508898

Review-Url: https://codereview.chromium.org/2135153002
Cr-Commit-Position: refs/heads/master@{#37640}
parent 897b6f78
...@@ -120,7 +120,7 @@ void FastAccessorAssembler::CheckFlagSetOrReturnNull(ValueId value, int mask) { ...@@ -120,7 +120,7 @@ void FastAccessorAssembler::CheckFlagSetOrReturnNull(ValueId value, int mask) {
assembler_->Word32Equal( assembler_->Word32Equal(
assembler_->Word32And(FromId(value), assembler_->Int32Constant(mask)), assembler_->Word32And(FromId(value), assembler_->Int32Constant(mask)),
assembler_->Int32Constant(0)), assembler_->Int32Constant(0)),
&pass, &fail); &fail, &pass);
assembler_->Bind(&fail); assembler_->Bind(&fail);
assembler_->Return(assembler_->NullConstant()); assembler_->Return(assembler_->NullConstant());
assembler_->Bind(&pass); assembler_->Bind(&pass);
...@@ -154,7 +154,7 @@ void FastAccessorAssembler::CheckNotZeroOrJump(ValueId value_id, ...@@ -154,7 +154,7 @@ void FastAccessorAssembler::CheckNotZeroOrJump(ValueId value_id,
CodeStubAssembler::Label pass(assembler_.get()); CodeStubAssembler::Label pass(assembler_.get());
assembler_->Branch( assembler_->Branch(
assembler_->WordEqual(FromId(value_id), assembler_->IntPtrConstant(0)), assembler_->WordEqual(FromId(value_id), assembler_->IntPtrConstant(0)),
&pass, FromId(label_id)); FromId(label_id), &pass);
assembler_->Bind(&pass); assembler_->Bind(&pass);
} }
......
...@@ -189,9 +189,9 @@ TEST(FastAccessorOrReturnNull) { ...@@ -189,9 +189,9 @@ TEST(FastAccessorOrReturnNull) {
// CheckFlagSetOrReturnNull: // CheckFlagSetOrReturnNull:
CompileRun(FN_WARMUP("maskcheck", "return obj.maskcheck")); CompileRun(FN_WARMUP("maskcheck", "return obj.maskcheck"));
obj->SetAlignedPointerInInternalField(1, reinterpret_cast<void*>(0xf0)); obj->SetAlignedPointerInInternalField(1, reinterpret_cast<void*>(0xf0));
ExpectInt32("maskcheck()", 42);
obj->SetAlignedPointerInInternalField(1, reinterpret_cast<void*>(0xfe));
ExpectNull("maskcheck()"); ExpectNull("maskcheck()");
obj->SetAlignedPointerInInternalField(1, reinterpret_cast<void*>(0xfe));
ExpectInt32("maskcheck()", 42);
} }
...@@ -212,9 +212,9 @@ TEST(FastAccessorControlFlowWithLabels) { ...@@ -212,9 +212,9 @@ TEST(FastAccessorControlFlowWithLabels) {
auto label = builder->MakeLabel(); auto label = builder->MakeLabel();
auto val = builder->LoadInternalField(builder->GetReceiver(), 0); auto val = builder->LoadInternalField(builder->GetReceiver(), 0);
builder->CheckNotZeroOrJump(val, label); builder->CheckNotZeroOrJump(val, label);
builder->ReturnValue(builder->IntegerConstant(0));
builder->SetLabel(label);
builder->ReturnValue(builder->IntegerConstant(1)); builder->ReturnValue(builder->IntegerConstant(1));
builder->SetLabel(label);
builder->ReturnValue(builder->IntegerConstant(0));
foo->SetAccessorProperty(v8_str("isnull"), foo->SetAccessorProperty(v8_str("isnull"),
v8::FunctionTemplate::NewWithFastHandler( v8::FunctionTemplate::NewWithFastHandler(
isolate, NativePropertyAccessor, builder)); isolate, NativePropertyAccessor, builder));
...@@ -262,9 +262,9 @@ TEST(FastAccessorLoad) { ...@@ -262,9 +262,9 @@ TEST(FastAccessorLoad) {
auto val = builder->LoadValue( auto val = builder->LoadValue(
builder->LoadInternalField(builder->GetReceiver(), 0), intval_offset); builder->LoadInternalField(builder->GetReceiver(), 0), intval_offset);
builder->CheckNotZeroOrJump(val, label); builder->CheckNotZeroOrJump(val, label);
builder->ReturnValue(builder->IntegerConstant(0));
builder->SetLabel(label);
builder->ReturnValue(builder->IntegerConstant(1)); builder->ReturnValue(builder->IntegerConstant(1));
builder->SetLabel(label);
builder->ReturnValue(builder->IntegerConstant(0));
foo->SetAccessorProperty(v8_str("nonzero"), foo->SetAccessorProperty(v8_str("nonzero"),
v8::FunctionTemplate::NewWithFastHandler( v8::FunctionTemplate::NewWithFastHandler(
isolate, NativePropertyAccessor, builder)); isolate, NativePropertyAccessor, builder));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment