| Index: src/arm/lithium-codegen-arm.cc
|
| ===================================================================
|
| --- src/arm/lithium-codegen-arm.cc (revision 7254)
|
| +++ src/arm/lithium-codegen-arm.cc (working copy)
|
| @@ -3533,12 +3533,18 @@
|
|
|
| void LCodeGen::DoCheckSmi(LCheckSmi* instr) {
|
| LOperand* input = instr->InputAt(0);
|
| - ASSERT(input->IsRegister());
|
| __ tst(ToRegister(input), Operand(kSmiTagMask));
|
| - DeoptimizeIf(instr->condition(), instr->environment());
|
| + DeoptimizeIf(ne, instr->environment());
|
| }
|
|
|
|
|
| +void LCodeGen::DoCheckNonSmi(LCheckNonSmi* instr) {
|
| + LOperand* input = instr->InputAt(0);
|
| + __ tst(ToRegister(input), Operand(kSmiTagMask));
|
| + DeoptimizeIf(eq, instr->environment());
|
| +}
|
| +
|
| +
|
| void LCodeGen::DoCheckInstanceType(LCheckInstanceType* instr) {
|
| Register input = ToRegister(instr->InputAt(0));
|
| Register scratch = scratch0();
|
| @@ -3728,8 +3734,9 @@
|
| // space for nested functions that don't need literals cloning.
|
| Handle<SharedFunctionInfo> shared_info = instr->shared_info();
|
| bool pretenure = instr->hydrogen()->pretenure();
|
| - if (shared_info->num_literals() == 0 && !pretenure) {
|
| - FastNewClosureStub stub;
|
| + if (!pretenure && shared_info->num_literals() == 0) {
|
| + FastNewClosureStub stub(
|
| + shared_info->strict_mode() ? kStrictMode : kNonStrictMode);
|
| __ mov(r1, Operand(shared_info));
|
| __ push(r1);
|
| CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr);
|
|
|