Changeset 26899 in webkit for trunk/JavaScriptCore/kjs/JSImmediate.h
- Timestamp:
- Oct 22, 2007, 4:36:36 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/kjs/JSImmediate.h
r26893 r26899 88 88 static JSType type(const JSValue*); 89 89 90 static bool toInt32(const JSValue*, int32_t&);91 static bool toUInt32(const JSValue*, uint32_t&);90 static bool getInt32(const JSValue*, int32_t&); 91 static bool getUInt32(const JSValue*, uint32_t&); 92 92 93 93 // It would nice just to use fromDouble() to create these values, but that would prevent them from … … 172 172 } 173 173 174 static bool toInt32(const JSValue* v, int32_t& i)174 static bool getInt32(const JSValue* v, int32_t& i) 175 175 { 176 176 ASSERT(isImmediate(v)); … … 179 179 floatUnion.asBits = static_cast<uint32_t>(unTag(v)); 180 180 float f = floatUnion.asFloat; 181 if (!(f >= -2147483648.0F && f < 2147483648.0F))182 return false;183 181 i = static_cast<int32_t>(f); 184 return isNumber(v) ;185 } 186 187 static bool toUInt32(const JSValue* v, uint32_t& i)182 return isNumber(v) && i == f; 183 } 184 185 static bool getUInt32(const JSValue* v, uint32_t& i) 188 186 { 189 187 ASSERT(isImmediate(v)); … … 192 190 floatUnion.asBits = static_cast<uint32_t>(unTag(v)); 193 191 float f = floatUnion.asFloat; 194 if (!(f >= 0.0F && f < 4294967296.0F))195 return false;196 192 i = static_cast<uint32_t>(f); 197 return isNumber(v) ;193 return isNumber(v) && i == f; 198 194 } 199 195 }; … … 225 221 } 226 222 227 static bool toInt32(const JSValue* v, int32_t& i)223 static bool getInt32(const JSValue* v, int32_t& i) 228 224 { 229 225 double d = toDouble(v); 230 if (!(d >= -2147483648.0 && d < 2147483648.0))231 return false;232 226 i = static_cast<int32_t>(d); 233 return isNumber(v) ;234 } 235 236 static bool toUInt32(const JSValue* v, uint32_t& i)227 return isNumber(v) && i == d; 228 } 229 230 static bool getUInt32(const JSValue* v, uint32_t& i) 237 231 { 238 232 double d = toDouble(v); 239 if (!(d >= 0.0 && d < 4294967296.0))240 return false;241 233 i = static_cast<uint32_t>(d); 242 return isNumber(v) ;234 return isNumber(v) && i == d; 243 235 } 244 236 }; … … 271 263 } 272 264 273 inline bool JSImmediate:: toInt32(const JSValue* v, int32_t& i)274 { 275 return FPBitValues<is32bit, is64bit>:: toInt32(v, i);276 } 277 278 inline bool JSImmediate:: toUInt32(const JSValue* v, uint32_t& i)279 { 280 return FPBitValues<is32bit, is64bit>:: toUInt32(v, i);265 inline bool JSImmediate::getInt32(const JSValue* v, int32_t& i) 266 { 267 return FPBitValues<is32bit, is64bit>::getInt32(v, i); 268 } 269 270 inline bool JSImmediate::getUInt32(const JSValue* v, uint32_t& i) 271 { 272 return FPBitValues<is32bit, is64bit>::getUInt32(v, i); 281 273 } 282 274
Note:
See TracChangeset
for help on using the changeset viewer.