| Index: src/arm/lithium-codegen-arm.cc
|
| diff --git a/src/arm/lithium-codegen-arm.cc b/src/arm/lithium-codegen-arm.cc
|
| index a83521c003292e0bc9011613f57e3aa6aa671885..ae242100253966303535caedb39c0ed59a949224 100644
|
| --- a/src/arm/lithium-codegen-arm.cc
|
| +++ b/src/arm/lithium-codegen-arm.cc
|
| @@ -431,7 +431,7 @@ Register LCodeGen::EmitLoadRegister(LOperand* op, Register scratch) {
|
| } else if (r.IsDouble()) {
|
| Abort(kEmitLoadRegisterUnsupportedDoubleImmediate);
|
| } else {
|
| - ASSERT(r.IsTagged());
|
| + ASSERT(r.IsSmiOrTagged());
|
| __ LoadObject(scratch, literal);
|
| }
|
| return scratch;
|
| @@ -1584,10 +1584,7 @@ void LCodeGen::DoMulI(LMulI* instr) {
|
| instr->hydrogen()->CheckFlag(HValue::kBailoutOnMinusZero);
|
|
|
| if (right_op->IsConstantOperand() && !can_overflow) {
|
| - // Use optimized code for specific constants.
|
| - int32_t constant = ToRepresentation(
|
| - LConstantOperand::cast(right_op),
|
| - instr->hydrogen()->right()->representation());
|
| + int32_t constant = ToInteger32(LConstantOperand::cast(right_op));
|
|
|
| if (bailout_on_minus_zero && (constant < 0)) {
|
| // The case of a null constant will be handled separately.
|
| @@ -5134,18 +5131,18 @@ void LCodeGen::DoCheckInstanceType(LCheckInstanceType* instr) {
|
| }
|
|
|
|
|
| -void LCodeGen::DoCheckFunction(LCheckFunction* instr) {
|
| +void LCodeGen::DoCheckValue(LCheckValue* instr) {
|
| Register reg = ToRegister(instr->value());
|
| - Handle<JSFunction> target = instr->hydrogen()->target();
|
| + Handle<HeapObject> object = instr->hydrogen()->object();
|
| AllowDeferredHandleDereference smi_check;
|
| - if (isolate()->heap()->InNewSpace(*target)) {
|
| + if (isolate()->heap()->InNewSpace(*object)) {
|
| Register reg = ToRegister(instr->value());
|
| - Handle<Cell> cell = isolate()->factory()->NewCell(target);
|
| + Handle<Cell> cell = isolate()->factory()->NewCell(object);
|
| __ mov(ip, Operand(Handle<Object>(cell)));
|
| __ ldr(ip, FieldMemOperand(ip, Cell::kValueOffset));
|
| __ cmp(reg, ip);
|
| } else {
|
| - __ cmp(reg, Operand(target));
|
| + __ cmp(reg, Operand(object));
|
| }
|
| DeoptimizeIf(ne, instr->environment());
|
| }
|
| @@ -5646,9 +5643,10 @@ void LCodeGen::DoStackCheck(LStackCheck* instr) {
|
| __ LoadRoot(ip, Heap::kStackLimitRootIndex);
|
| __ cmp(sp, Operand(ip));
|
| __ b(hs, &done);
|
| - StackCheckStub stub;
|
| PredictableCodeSizeScope predictable(masm_, 2 * Assembler::kInstrSize);
|
| - CallCode(stub.GetCode(isolate()), RelocInfo::CODE_TARGET, instr);
|
| + CallCode(isolate()->builtins()->StackCheck(),
|
| + RelocInfo::CODE_TARGET,
|
| + instr);
|
| EnsureSpaceForLazyDeopt();
|
| last_lazy_deopt_pc_ = masm()->pc_offset();
|
| __ bind(&done);
|
|
|