Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(33)

Side by Side Diff: src/assembler.cc

Issue 6881003: Prevent deopt when assigning double values to typed arrays (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Fixes to make ia32 tests run Created 9 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 1994-2006 Sun Microsystems Inc. 1 // Copyright (c) 1994-2006 Sun Microsystems Inc.
2 // All Rights Reserved. 2 // All Rights Reserved.
3 // 3 //
4 // Redistribution and use in source and binary forms, with or without 4 // Redistribution and use in source and binary forms, with or without
5 // modification, are permitted provided that the following conditions are 5 // modification, are permitted provided that the following conditions are
6 // met: 6 // met:
7 // 7 //
8 // - Redistributions of source code must retain the above copyright notice, 8 // - Redistributions of source code must retain the above copyright notice,
9 // this list of conditions and the following disclaimer. 9 // this list of conditions and the following disclaimer.
10 // 10 //
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
62 #endif // Target architecture. 62 #endif // Target architecture.
63 #endif // V8_INTERPRETED_REGEXP 63 #endif // V8_INTERPRETED_REGEXP
64 64
65 namespace v8 { 65 namespace v8 {
66 namespace internal { 66 namespace internal {
67 67
68 68
69 const double DoubleConstant::min_int = kMinInt; 69 const double DoubleConstant::min_int = kMinInt;
70 const double DoubleConstant::one_half = 0.5; 70 const double DoubleConstant::one_half = 0.5;
71 const double DoubleConstant::minus_zero = -0.0; 71 const double DoubleConstant::minus_zero = -0.0;
72 const double DoubleConstant::uint8_max_value = 255;
73 const double DoubleConstant::zero = 0.0;
72 const double DoubleConstant::nan = OS::nan_value(); 74 const double DoubleConstant::nan = OS::nan_value();
73 const double DoubleConstant::negative_infinity = -V8_INFINITY; 75 const double DoubleConstant::negative_infinity = -V8_INFINITY;
74 const char* RelocInfo::kFillerCommentString = "DEOPTIMIZATION PADDING"; 76 const char* RelocInfo::kFillerCommentString = "DEOPTIMIZATION PADDING";
75 77
76 // ----------------------------------------------------------------------------- 78 // -----------------------------------------------------------------------------
77 // Implementation of Label 79 // Implementation of Label
78 80
79 int Label::pos() const { 81 int Label::pos() const {
80 if (pos_ < 0) return -pos_ - 1; 82 if (pos_ < 0) return -pos_ - 1;
81 if (pos_ > 0) return pos_ - 1; 83 if (pos_ > 0) return pos_ - 1;
(...skipping 800 matching lines...) Expand 10 before | Expand all | Expand 10 after
882 const_cast<double*>(&DoubleConstant::one_half))); 884 const_cast<double*>(&DoubleConstant::one_half)));
883 } 885 }
884 886
885 887
886 ExternalReference ExternalReference::address_of_minus_zero() { 888 ExternalReference ExternalReference::address_of_minus_zero() {
887 return ExternalReference(reinterpret_cast<void*>( 889 return ExternalReference(reinterpret_cast<void*>(
888 const_cast<double*>(&DoubleConstant::minus_zero))); 890 const_cast<double*>(&DoubleConstant::minus_zero)));
889 } 891 }
890 892
891 893
894 ExternalReference ExternalReference::address_of_zero() {
895 return ExternalReference(reinterpret_cast<void*>(
896 const_cast<double*>(&DoubleConstant::zero)));
897 }
898
899
900 ExternalReference ExternalReference::address_of_uint8_max_value() {
901 return ExternalReference(reinterpret_cast<void*>(
902 const_cast<double*>(&DoubleConstant::uint8_max_value)));
903 }
904
905
892 ExternalReference ExternalReference::address_of_negative_infinity() { 906 ExternalReference ExternalReference::address_of_negative_infinity() {
893 return ExternalReference(reinterpret_cast<void*>( 907 return ExternalReference(reinterpret_cast<void*>(
894 const_cast<double*>(&DoubleConstant::negative_infinity))); 908 const_cast<double*>(&DoubleConstant::negative_infinity)));
895 } 909 }
896 910
897 911
898 ExternalReference ExternalReference::address_of_nan() { 912 ExternalReference ExternalReference::address_of_nan() {
899 return ExternalReference(reinterpret_cast<void*>( 913 return ExternalReference(reinterpret_cast<void*>(
900 const_cast<double*>(&DoubleConstant::nan))); 914 const_cast<double*>(&DoubleConstant::nan)));
901 } 915 }
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after
1173 assembler_->RecordRelocInfo(RelocInfo::POSITION, state_.current_position); 1187 assembler_->RecordRelocInfo(RelocInfo::POSITION, state_.current_position);
1174 state_.written_position = state_.current_position; 1188 state_.written_position = state_.current_position;
1175 written = true; 1189 written = true;
1176 } 1190 }
1177 1191
1178 // Return whether something was written. 1192 // Return whether something was written.
1179 return written; 1193 return written;
1180 } 1194 }
1181 1195
1182 } } // namespace v8::internal 1196 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/assembler.h ('k') | src/conversions.h » ('j') | src/hydrogen.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698