| OLD | NEW | 
|---|
| 1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 the V8 project authors. All rights reserved. | 
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without | 
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are | 
| 4 // met: | 4 // met: | 
| 5 // | 5 // | 
| 6 //     * Redistributions of source code must retain the above copyright | 6 //     * Redistributions of source code must retain the above copyright | 
| 7 //       notice, this list of conditions and the following disclaimer. | 7 //       notice, this list of conditions and the following disclaimer. | 
| 8 //     * Redistributions in binary form must reproduce the above | 8 //     * Redistributions in binary form must reproduce the above | 
| 9 //       copyright notice, this list of conditions and the following | 9 //       copyright notice, this list of conditions and the following | 
| 10 //       disclaimer in the documentation and/or other materials provided | 10 //       disclaimer in the documentation and/or other materials provided | 
| (...skipping 1478 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1489     EmitCmpI(left, right); | 1489     EmitCmpI(left, right); | 
| 1490   } | 1490   } | 
| 1491 | 1491 | 
| 1492   Condition cc = TokenToCondition(instr->op(), instr->is_double()); | 1492   Condition cc = TokenToCondition(instr->op(), instr->is_double()); | 
| 1493   EmitBranch(true_block, false_block, cc); | 1493   EmitBranch(true_block, false_block, cc); | 
| 1494 } | 1494 } | 
| 1495 | 1495 | 
| 1496 | 1496 | 
| 1497 void LCodeGen::DoCmpObjectEqAndBranch(LCmpObjectEqAndBranch* instr) { | 1497 void LCodeGen::DoCmpObjectEqAndBranch(LCmpObjectEqAndBranch* instr) { | 
| 1498   Register left = ToRegister(instr->InputAt(0)); | 1498   Register left = ToRegister(instr->InputAt(0)); | 
| 1499   Register right = ToRegister(instr->InputAt(1)); | 1499   Operand right = ToOperand(instr->InputAt(1)); | 
| 1500   int false_block = chunk_->LookupDestination(instr->false_block_id()); | 1500   int false_block = chunk_->LookupDestination(instr->false_block_id()); | 
| 1501   int true_block = chunk_->LookupDestination(instr->true_block_id()); | 1501   int true_block = chunk_->LookupDestination(instr->true_block_id()); | 
| 1502 | 1502 | 
| 1503   __ cmp(left, Operand(right)); | 1503   __ cmp(left, Operand(right)); | 
| 1504   EmitBranch(true_block, false_block, equal); | 1504   EmitBranch(true_block, false_block, equal); | 
| 1505 } | 1505 } | 
| 1506 | 1506 | 
| 1507 | 1507 | 
| 1508 void LCodeGen::DoCmpConstantEqAndBranch(LCmpConstantEqAndBranch* instr) { | 1508 void LCodeGen::DoCmpConstantEqAndBranch(LCmpConstantEqAndBranch* instr) { | 
| 1509   Register left = ToRegister(instr->InputAt(0)); | 1509   Register left = ToRegister(instr->InputAt(0)); | 
| (...skipping 2167 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 3677       __ and_(result_reg, 1); | 3677       __ and_(result_reg, 1); | 
| 3678       DeoptimizeIf(not_zero, instr->environment()); | 3678       DeoptimizeIf(not_zero, instr->environment()); | 
| 3679     } | 3679     } | 
| 3680     __ bind(&done); | 3680     __ bind(&done); | 
| 3681   } | 3681   } | 
| 3682 } | 3682 } | 
| 3683 | 3683 | 
| 3684 | 3684 | 
| 3685 void LCodeGen::DoCheckSmi(LCheckSmi* instr) { | 3685 void LCodeGen::DoCheckSmi(LCheckSmi* instr) { | 
| 3686   LOperand* input = instr->InputAt(0); | 3686   LOperand* input = instr->InputAt(0); | 
| 3687   __ test(ToRegister(input), Immediate(kSmiTagMask)); | 3687   __ test(ToOperand(input), Immediate(kSmiTagMask)); | 
| 3688   DeoptimizeIf(not_zero, instr->environment()); | 3688   DeoptimizeIf(not_zero, instr->environment()); | 
| 3689 } | 3689 } | 
| 3690 | 3690 | 
| 3691 | 3691 | 
| 3692 void LCodeGen::DoCheckNonSmi(LCheckNonSmi* instr) { | 3692 void LCodeGen::DoCheckNonSmi(LCheckNonSmi* instr) { | 
| 3693   LOperand* input = instr->InputAt(0); | 3693   LOperand* input = instr->InputAt(0); | 
| 3694   __ test(ToRegister(input), Immediate(kSmiTagMask)); | 3694   __ test(ToOperand(input), Immediate(kSmiTagMask)); | 
| 3695   DeoptimizeIf(zero, instr->environment()); | 3695   DeoptimizeIf(zero, instr->environment()); | 
| 3696 } | 3696 } | 
| 3697 | 3697 | 
| 3698 | 3698 | 
| 3699 void LCodeGen::DoCheckInstanceType(LCheckInstanceType* instr) { | 3699 void LCodeGen::DoCheckInstanceType(LCheckInstanceType* instr) { | 
| 3700   Register input = ToRegister(instr->InputAt(0)); | 3700   Register input = ToRegister(instr->InputAt(0)); | 
| 3701   Register temp = ToRegister(instr->TempAt(0)); | 3701   Register temp = ToRegister(instr->TempAt(0)); | 
| 3702 | 3702 | 
| 3703   __ mov(temp, FieldOperand(input, HeapObject::kMapOffset)); | 3703   __ mov(temp, FieldOperand(input, HeapObject::kMapOffset)); | 
| 3704 | 3704 | 
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 3736       __ and_(temp, mask); | 3736       __ and_(temp, mask); | 
| 3737       __ cmpb(Operand(temp), tag); | 3737       __ cmpb(Operand(temp), tag); | 
| 3738       DeoptimizeIf(not_equal, instr->environment()); | 3738       DeoptimizeIf(not_equal, instr->environment()); | 
| 3739     } | 3739     } | 
| 3740   } | 3740   } | 
| 3741 } | 3741 } | 
| 3742 | 3742 | 
| 3743 | 3743 | 
| 3744 void LCodeGen::DoCheckFunction(LCheckFunction* instr) { | 3744 void LCodeGen::DoCheckFunction(LCheckFunction* instr) { | 
| 3745   ASSERT(instr->InputAt(0)->IsRegister()); | 3745   ASSERT(instr->InputAt(0)->IsRegister()); | 
| 3746   Register reg = ToRegister(instr->InputAt(0)); | 3746   Operand operand = ToOperand(instr->InputAt(0)); | 
| 3747   __ cmp(reg, instr->hydrogen()->target()); | 3747   __ cmp(operand, instr->hydrogen()->target()); | 
| 3748   DeoptimizeIf(not_equal, instr->environment()); | 3748   DeoptimizeIf(not_equal, instr->environment()); | 
| 3749 } | 3749 } | 
| 3750 | 3750 | 
| 3751 | 3751 | 
| 3752 void LCodeGen::DoCheckMap(LCheckMap* instr) { | 3752 void LCodeGen::DoCheckMap(LCheckMap* instr) { | 
| 3753   LOperand* input = instr->InputAt(0); | 3753   LOperand* input = instr->InputAt(0); | 
| 3754   ASSERT(input->IsRegister()); | 3754   ASSERT(input->IsRegister()); | 
| 3755   Register reg = ToRegister(input); | 3755   Register reg = ToRegister(input); | 
| 3756   __ cmp(FieldOperand(reg, HeapObject::kMapOffset), | 3756   __ cmp(FieldOperand(reg, HeapObject::kMapOffset), | 
| 3757          instr->hydrogen()->map()); | 3757          instr->hydrogen()->map()); | 
| (...skipping 464 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 4222   __ mov(esi, Operand(ebp, StandardFrameConstants::kContextOffset)); | 4222   __ mov(esi, Operand(ebp, StandardFrameConstants::kContextOffset)); | 
| 4223   __ InvokeBuiltin(Builtins::IN, CALL_FUNCTION, safepoint_generator); | 4223   __ InvokeBuiltin(Builtins::IN, CALL_FUNCTION, safepoint_generator); | 
| 4224 } | 4224 } | 
| 4225 | 4225 | 
| 4226 | 4226 | 
| 4227 #undef __ | 4227 #undef __ | 
| 4228 | 4228 | 
| 4229 } }  // namespace v8::internal | 4229 } }  // namespace v8::internal | 
| 4230 | 4230 | 
| 4231 #endif  // V8_TARGET_ARCH_IA32 | 4231 #endif  // V8_TARGET_ARCH_IA32 | 
| OLD | NEW | 
|---|