| 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 2544 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2555 has_smi_value_(Smi::IsValid(integer_value)), | 2555 has_smi_value_(Smi::IsValid(integer_value)), |
| 2556 has_int32_value_(true), | 2556 has_int32_value_(true), |
| 2557 has_double_value_(true), | 2557 has_double_value_(true), |
| 2558 has_external_reference_value_(false), | 2558 has_external_reference_value_(false), |
| 2559 is_internalized_string_(false), | 2559 is_internalized_string_(false), |
| 2560 is_not_in_new_space_(is_not_in_new_space), | 2560 is_not_in_new_space_(is_not_in_new_space), |
| 2561 is_cell_(false), | 2561 is_cell_(false), |
| 2562 boolean_value_(integer_value != 0), | 2562 boolean_value_(integer_value != 0), |
| 2563 int32_value_(integer_value), | 2563 int32_value_(integer_value), |
| 2564 double_value_(FastI2D(integer_value)) { | 2564 double_value_(FastI2D(integer_value)) { |
| 2565 set_type(has_smi_value_ ? HType::Smi() : HType::TaggedNumber()); | 2565 // It's possible to create a constant with a value in Smi-range but stored |
| 2566 // in a (pre-existing) HeapNumber. See crbug.com/349878. |
| 2567 bool could_be_heapobject = r.IsTagged() && !object.handle().is_null(); |
| 2568 bool is_smi = has_smi_value_ && !could_be_heapobject; |
| 2569 set_type(is_smi ? HType::Smi() : HType::TaggedNumber()); |
| 2566 Initialize(r); | 2570 Initialize(r); |
| 2567 } | 2571 } |
| 2568 | 2572 |
| 2569 | 2573 |
| 2570 HConstant::HConstant(double double_value, | 2574 HConstant::HConstant(double double_value, |
| 2571 Representation r, | 2575 Representation r, |
| 2572 bool is_not_in_new_space, | 2576 bool is_not_in_new_space, |
| 2573 Unique<Object> object) | 2577 Unique<Object> object) |
| 2574 : object_(object), | 2578 : object_(object), |
| 2575 has_int32_value_(IsInteger32(double_value)), | 2579 has_int32_value_(IsInteger32(double_value)), |
| 2576 has_double_value_(true), | 2580 has_double_value_(true), |
| 2577 has_external_reference_value_(false), | 2581 has_external_reference_value_(false), |
| 2578 is_internalized_string_(false), | 2582 is_internalized_string_(false), |
| 2579 is_not_in_new_space_(is_not_in_new_space), | 2583 is_not_in_new_space_(is_not_in_new_space), |
| 2580 is_cell_(false), | 2584 is_cell_(false), |
| 2581 boolean_value_(double_value != 0 && !std::isnan(double_value)), | 2585 boolean_value_(double_value != 0 && !std::isnan(double_value)), |
| 2582 int32_value_(DoubleToInt32(double_value)), | 2586 int32_value_(DoubleToInt32(double_value)), |
| 2583 double_value_(double_value) { | 2587 double_value_(double_value) { |
| 2584 has_smi_value_ = has_int32_value_ && Smi::IsValid(int32_value_); | 2588 has_smi_value_ = has_int32_value_ && Smi::IsValid(int32_value_); |
| 2585 set_type(has_smi_value_ ? HType::Smi() : HType::TaggedNumber()); | 2589 // It's possible to create a constant with a value in Smi-range but stored |
| 2590 // in a (pre-existing) HeapNumber. See crbug.com/349878. |
| 2591 bool could_be_heapobject = r.IsTagged() && !object.handle().is_null(); |
| 2592 bool is_smi = has_smi_value_ && !could_be_heapobject; |
| 2593 set_type(is_smi ? HType::Smi() : HType::TaggedNumber()); |
| 2586 Initialize(r); | 2594 Initialize(r); |
| 2587 } | 2595 } |
| 2588 | 2596 |
| 2589 | 2597 |
| 2590 HConstant::HConstant(ExternalReference reference) | 2598 HConstant::HConstant(ExternalReference reference) |
| 2591 : HTemplateInstruction<0>(HType::None()), | 2599 : HTemplateInstruction<0>(HType::None()), |
| 2592 object_(Unique<Object>(Handle<Object>::null())), | 2600 object_(Unique<Object>(Handle<Object>::null())), |
| 2593 has_smi_value_(false), | 2601 has_smi_value_(false), |
| 2594 has_int32_value_(false), | 2602 has_int32_value_(false), |
| 2595 has_double_value_(false), | 2603 has_double_value_(false), |
| (...skipping 1926 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4522 break; | 4530 break; |
| 4523 case kExternalMemory: | 4531 case kExternalMemory: |
| 4524 stream->Add("[external-memory]"); | 4532 stream->Add("[external-memory]"); |
| 4525 break; | 4533 break; |
| 4526 } | 4534 } |
| 4527 | 4535 |
| 4528 stream->Add("@%d", offset()); | 4536 stream->Add("@%d", offset()); |
| 4529 } | 4537 } |
| 4530 | 4538 |
| 4531 } } // namespace v8::internal | 4539 } } // namespace v8::internal |
| OLD | NEW |