OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 1228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1239 } | 1239 } |
1240 | 1240 |
1241 // Check for (kMinInt / -1). | 1241 // Check for (kMinInt / -1). |
1242 if (instr->hydrogen()->CheckFlag(HValue::kCanOverflow)) { | 1242 if (instr->hydrogen()->CheckFlag(HValue::kCanOverflow)) { |
1243 Label left_not_min_int; | 1243 Label left_not_min_int; |
1244 __ Branch(&left_not_min_int, ne, left, Operand(kMinInt)); | 1244 __ Branch(&left_not_min_int, ne, left, Operand(kMinInt)); |
1245 DeoptimizeIf(eq, instr->environment(), right, Operand(-1)); | 1245 DeoptimizeIf(eq, instr->environment(), right, Operand(-1)); |
1246 __ bind(&left_not_min_int); | 1246 __ bind(&left_not_min_int); |
1247 } | 1247 } |
1248 | 1248 |
1249 __ mfhi(result); | 1249 if (!instr->hydrogen()->CheckFlag(HInstruction::kAllUsesTruncatingToInt32)) { |
1250 DeoptimizeIf(ne, instr->environment(), result, Operand(zero_reg)); | 1250 __ mfhi(result); |
| 1251 DeoptimizeIf(ne, instr->environment(), result, Operand(zero_reg)); |
| 1252 } |
1251 __ mflo(result); | 1253 __ mflo(result); |
1252 } | 1254 } |
1253 | 1255 |
1254 | 1256 |
1255 void LCodeGen::DoMultiplyAddD(LMultiplyAddD* instr) { | 1257 void LCodeGen::DoMultiplyAddD(LMultiplyAddD* instr) { |
1256 DoubleRegister addend = ToDoubleRegister(instr->addend()); | 1258 DoubleRegister addend = ToDoubleRegister(instr->addend()); |
1257 DoubleRegister multiplier = ToDoubleRegister(instr->multiplier()); | 1259 DoubleRegister multiplier = ToDoubleRegister(instr->multiplier()); |
1258 DoubleRegister multiplicand = ToDoubleRegister(instr->multiplicand()); | 1260 DoubleRegister multiplicand = ToDoubleRegister(instr->multiplicand()); |
1259 | 1261 |
1260 // This is computed in-place. | 1262 // This is computed in-place. |
(...skipping 4450 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5711 __ Subu(scratch, result, scratch); | 5713 __ Subu(scratch, result, scratch); |
5712 __ lw(result, FieldMemOperand(scratch, | 5714 __ lw(result, FieldMemOperand(scratch, |
5713 FixedArray::kHeaderSize - kPointerSize)); | 5715 FixedArray::kHeaderSize - kPointerSize)); |
5714 __ bind(&done); | 5716 __ bind(&done); |
5715 } | 5717 } |
5716 | 5718 |
5717 | 5719 |
5718 #undef __ | 5720 #undef __ |
5719 | 5721 |
5720 } } // namespace v8::internal | 5722 } } // namespace v8::internal |
OLD | NEW |