| Index: src/arm/macro-assembler-arm.cc
|
| diff --git a/src/arm/macro-assembler-arm.cc b/src/arm/macro-assembler-arm.cc
|
| index cc7fc4d3a4203706ce0a9cccee63e43d2adbdbb2..1f6ec65e71121648692121907c2ea7bb4ce576e0 100644
|
| --- a/src/arm/macro-assembler-arm.cc
|
| +++ b/src/arm/macro-assembler-arm.cc
|
| @@ -363,12 +363,14 @@ void MacroAssembler::Bfi(Register dst,
|
| }
|
|
|
|
|
| -void MacroAssembler::Bfc(Register dst, int lsb, int width, Condition cond) {
|
| +void MacroAssembler::Bfc(Register dst, Register src, int lsb, int width,
|
| + Condition cond) {
|
| ASSERT(lsb < 32);
|
| if (!CpuFeatures::IsSupported(ARMv7) || predictable_code_size()) {
|
| int mask = (1 << (width + lsb)) - 1 - ((1 << lsb) - 1);
|
| - bic(dst, dst, Operand(mask));
|
| + bic(dst, src, Operand(mask));
|
| } else {
|
| + Move(dst, src, cond);
|
| bfc(dst, lsb, width, cond);
|
| }
|
| }
|
| @@ -3497,7 +3499,7 @@ void MacroAssembler::CheckPageFlag(
|
| int mask,
|
| Condition cc,
|
| Label* condition_met) {
|
| - and_(scratch, object, Operand(~Page::kPageAlignmentMask));
|
| + Bfc(scratch, object, 0, kPageSizeBits);
|
| ldr(scratch, MemOperand(scratch, MemoryChunk::kFlagsOffset));
|
| tst(scratch, Operand(mask));
|
| b(cc, condition_met);
|
|
|