| 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 1375 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1386 __ test(reg, Operand(reg)); | 1386 __ test(reg, Operand(reg)); |
| 1387 EmitBranch(true_block, false_block, not_zero); | 1387 EmitBranch(true_block, false_block, not_zero); |
| 1388 } else if (r.IsDouble()) { | 1388 } else if (r.IsDouble()) { |
| 1389 XMMRegister reg = ToDoubleRegister(instr->InputAt(0)); | 1389 XMMRegister reg = ToDoubleRegister(instr->InputAt(0)); |
| 1390 __ xorps(xmm0, xmm0); | 1390 __ xorps(xmm0, xmm0); |
| 1391 __ ucomisd(reg, xmm0); | 1391 __ ucomisd(reg, xmm0); |
| 1392 EmitBranch(true_block, false_block, not_equal); | 1392 EmitBranch(true_block, false_block, not_equal); |
| 1393 } else { | 1393 } else { |
| 1394 ASSERT(r.IsTagged()); | 1394 ASSERT(r.IsTagged()); |
| 1395 Register reg = ToRegister(instr->InputAt(0)); | 1395 Register reg = ToRegister(instr->InputAt(0)); |
| 1396 if (instr->hydrogen()->value()->type().IsBoolean()) { | 1396 HType type = instr->hydrogen()->value()->type(); |
| 1397 if (type.IsBoolean()) { |
| 1397 __ cmp(reg, factory()->true_value()); | 1398 __ cmp(reg, factory()->true_value()); |
| 1398 EmitBranch(true_block, false_block, equal); | 1399 EmitBranch(true_block, false_block, equal); |
| 1400 } else if (type.IsSmi()) { |
| 1401 __ test(reg, Operand(reg)); |
| 1402 EmitBranch(true_block, false_block, not_equal); |
| 1399 } else { | 1403 } else { |
| 1400 Label* true_label = chunk_->GetAssemblyLabel(true_block); | 1404 Label* true_label = chunk_->GetAssemblyLabel(true_block); |
| 1401 Label* false_label = chunk_->GetAssemblyLabel(false_block); | 1405 Label* false_label = chunk_->GetAssemblyLabel(false_block); |
| 1402 | 1406 |
| 1403 ToBooleanStub::Types expected = instr->hydrogen()->expected_input_types(); | 1407 ToBooleanStub::Types expected = instr->hydrogen()->expected_input_types(); |
| 1404 // Avoid deopts in the case where we've never executed this path before. | 1408 // Avoid deopts in the case where we've never executed this path before. |
| 1405 if (expected.IsEmpty()) expected = ToBooleanStub::all_types(); | 1409 if (expected.IsEmpty()) expected = ToBooleanStub::all_types(); |
| 1406 | 1410 |
| 1407 if (expected.Contains(ToBooleanStub::UNDEFINED)) { | 1411 if (expected.Contains(ToBooleanStub::UNDEFINED)) { |
| 1408 // undefined -> false. | 1412 // undefined -> false. |
| (...skipping 2986 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4395 env->deoptimization_index()); | 4399 env->deoptimization_index()); |
| 4396 __ InvokeBuiltin(Builtins::IN, CALL_FUNCTION, safepoint_generator); | 4400 __ InvokeBuiltin(Builtins::IN, CALL_FUNCTION, safepoint_generator); |
| 4397 } | 4401 } |
| 4398 | 4402 |
| 4399 | 4403 |
| 4400 #undef __ | 4404 #undef __ |
| 4401 | 4405 |
| 4402 } } // namespace v8::internal | 4406 } } // namespace v8::internal |
| 4403 | 4407 |
| 4404 #endif // V8_TARGET_ARCH_IA32 | 4408 #endif // V8_TARGET_ARCH_IA32 |
| OLD | NEW |