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 568 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
579 State max_input = Max(left_state_, right_state_); | 579 State max_input = Max(left_state_, right_state_); |
580 | 580 |
581 if (!has_int_result() && op_ != Token::SHR && | 581 if (!has_int_result() && op_ != Token::SHR && |
582 max_input <= NUMBER && max_input > result_state_) { | 582 max_input <= NUMBER && max_input > result_state_) { |
583 result_state_ = max_input; | 583 result_state_ = max_input; |
584 } | 584 } |
585 | 585 |
586 ASSERT(result_state_ <= (has_int_result() ? INT32 : NUMBER) || | 586 ASSERT(result_state_ <= (has_int_result() ? INT32 : NUMBER) || |
587 op_ == Token::ADD); | 587 op_ == Token::ADD); |
588 | 588 |
| 589 // Reset overwrite mode unless we can actually make use of it, or may be able |
| 590 // to make use of it at some point in the future. |
| 591 if ((mode_ == OVERWRITE_LEFT && left_state_ > NUMBER) || |
| 592 (mode_ == OVERWRITE_RIGHT && right_state_ > NUMBER) || |
| 593 result_state_ > NUMBER) { |
| 594 mode_ = NO_OVERWRITE; |
| 595 } |
| 596 |
589 if (old_state == GetExtraICState()) { | 597 if (old_state == GetExtraICState()) { |
590 // Tagged operations can lead to non-truncating HChanges | 598 // Tagged operations can lead to non-truncating HChanges |
591 if (left->IsUndefined() || left->IsBoolean()) { | 599 if (left->IsUndefined() || left->IsBoolean()) { |
592 left_state_ = GENERIC; | 600 left_state_ = GENERIC; |
593 } else if (right->IsUndefined() || right->IsBoolean()) { | 601 } else if (right->IsUndefined() || right->IsBoolean()) { |
594 right_state_ = GENERIC; | 602 right_state_ = GENERIC; |
595 } else { | 603 } else { |
596 // Since the fpu is to precise, we might bail out on numbers which | 604 // Since the fpu is to precise, we might bail out on numbers which |
597 // actually would truncate with 64 bit precision. | 605 // actually would truncate with 64 bit precision. |
598 ASSERT(!CpuFeatures::IsSupported(SSE2) && | 606 ASSERT(!CpuFeatures::IsSupported(SSE2) && |
(...skipping 601 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1200 InstallDescriptor(isolate, &stub3); | 1208 InstallDescriptor(isolate, &stub3); |
1201 } | 1209 } |
1202 | 1210 |
1203 InternalArrayConstructorStub::InternalArrayConstructorStub( | 1211 InternalArrayConstructorStub::InternalArrayConstructorStub( |
1204 Isolate* isolate) { | 1212 Isolate* isolate) { |
1205 InternalArrayConstructorStubBase::GenerateStubsAheadOfTime(isolate); | 1213 InternalArrayConstructorStubBase::GenerateStubsAheadOfTime(isolate); |
1206 } | 1214 } |
1207 | 1215 |
1208 | 1216 |
1209 } } // namespace v8::internal | 1217 } } // namespace v8::internal |
OLD | NEW |