Changeset 43122 in webkit for trunk/JavaScriptCore/runtime/JSNumberCell.h
- Timestamp:
- May 1, 2009, 3:43:39 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/runtime/JSNumberCell.h
r40174 r43122 36 36 extern const double Inf; 37 37 38 JSValue PtrjsNumberCell(ExecState*, double);38 JSValue jsNumberCell(ExecState*, double); 39 39 40 40 #if !USE(ALTERNATE_JSIMMEDIATE) … … 51 51 class JSNumberCell : public JSCell { 52 52 friend class JIT; 53 friend JSValue PtrjsNumberCell(JSGlobalData*, double);54 friend JSValue PtrjsNumberCell(ExecState*, double);53 friend JSValue jsNumberCell(JSGlobalData*, double); 54 friend JSValue jsNumberCell(ExecState*, double); 55 55 public: 56 56 double value() const { return m_value; } 57 57 58 virtual JSValue PtrtoPrimitive(ExecState*, PreferredPrimitiveType) const;59 virtual bool getPrimitiveNumber(ExecState*, double& number, JSValue Ptr& value);58 virtual JSValue toPrimitive(ExecState*, PreferredPrimitiveType) const; 59 virtual bool getPrimitiveNumber(ExecState*, double& number, JSValue& value); 60 60 virtual bool toBoolean(ExecState*) const; 61 61 virtual double toNumber(ExecState*) const; … … 65 65 virtual UString toThisString(ExecState*) const; 66 66 virtual JSObject* toThisObject(ExecState*) const; 67 virtual JSValue PtrgetJSNumber();67 virtual JSValue getJSNumber(); 68 68 69 69 void* operator new(size_t size, ExecState* exec) … … 85 85 } 86 86 87 static PassRefPtr<Structure> createStructure(JSValue Ptrproto) { return Structure::create(proto, TypeInfo(NumberType, NeedsThisConversion)); }87 static PassRefPtr<Structure> createStructure(JSValue proto) { return Structure::create(proto, TypeInfo(NumberType, NeedsThisConversion)); } 88 88 89 89 private: … … 107 107 }; 108 108 109 JSValue PtrjsNumberCell(JSGlobalData*, double);110 111 inline bool isNumberCell(JSValue Ptrv)109 JSValue jsNumberCell(JSGlobalData*, double); 110 111 inline bool isNumberCell(JSValue v) 112 112 { 113 113 return v.isCell() && v.asCell()->isNumber(); 114 114 } 115 115 116 inline JSNumberCell* asNumberCell(JSValue Ptrv)116 inline JSNumberCell* asNumberCell(JSValue v) 117 117 { 118 118 ASSERT(isNumberCell(v)); … … 120 120 } 121 121 122 ALWAYS_INLINE JSValue PtrjsNumber(ExecState* exec, double d)123 { 124 JSValue Ptrv = JSImmediate::from(d);122 ALWAYS_INLINE JSValue jsNumber(ExecState* exec, double d) 123 { 124 JSValue v = JSImmediate::from(d); 125 125 return v ? v : jsNumberCell(exec, d); 126 126 } 127 127 128 ALWAYS_INLINE JSValue PtrjsNumber(ExecState* exec, int i)129 { 130 JSValue Ptrv = JSImmediate::from(i);128 ALWAYS_INLINE JSValue jsNumber(ExecState* exec, int i) 129 { 130 JSValue v = JSImmediate::from(i); 131 131 return v ? v : jsNumberCell(exec, i); 132 132 } 133 133 134 ALWAYS_INLINE JSValue PtrjsNumber(ExecState* exec, unsigned i)135 { 136 JSValue Ptrv = JSImmediate::from(i);134 ALWAYS_INLINE JSValue jsNumber(ExecState* exec, unsigned i) 135 { 136 JSValue v = JSImmediate::from(i); 137 137 return v ? v : jsNumberCell(exec, i); 138 138 } 139 139 140 ALWAYS_INLINE JSValue PtrjsNumber(ExecState* exec, long i)141 { 142 JSValue Ptrv = JSImmediate::from(i);140 ALWAYS_INLINE JSValue jsNumber(ExecState* exec, long i) 141 { 142 JSValue v = JSImmediate::from(i); 143 143 return v ? v : jsNumberCell(exec, i); 144 144 } 145 145 146 ALWAYS_INLINE JSValue PtrjsNumber(ExecState* exec, unsigned long i)147 { 148 JSValue Ptrv = JSImmediate::from(i);146 ALWAYS_INLINE JSValue jsNumber(ExecState* exec, unsigned long i) 147 { 148 JSValue v = JSImmediate::from(i); 149 149 return v ? v : jsNumberCell(exec, i); 150 150 } 151 151 152 ALWAYS_INLINE JSValue PtrjsNumber(ExecState* exec, long long i)153 { 154 JSValue Ptrv = JSImmediate::from(i);152 ALWAYS_INLINE JSValue jsNumber(ExecState* exec, long long i) 153 { 154 JSValue v = JSImmediate::from(i); 155 155 return v ? v : jsNumberCell(exec, static_cast<double>(i)); 156 156 } 157 157 158 ALWAYS_INLINE JSValue PtrjsNumber(ExecState* exec, unsigned long long i)159 { 160 JSValue Ptrv = JSImmediate::from(i);158 ALWAYS_INLINE JSValue jsNumber(ExecState* exec, unsigned long long i) 159 { 160 JSValue v = JSImmediate::from(i); 161 161 return v ? v : jsNumberCell(exec, static_cast<double>(i)); 162 162 } 163 163 164 ALWAYS_INLINE JSValue PtrjsNumber(JSGlobalData* globalData, double d)165 { 166 JSValue Ptrv = JSImmediate::from(d);164 ALWAYS_INLINE JSValue jsNumber(JSGlobalData* globalData, double d) 165 { 166 JSValue v = JSImmediate::from(d); 167 167 return v ? v : jsNumberCell(globalData, d); 168 168 } 169 169 170 ALWAYS_INLINE JSValue PtrjsNumber(JSGlobalData* globalData, int i)171 { 172 JSValue Ptrv = JSImmediate::from(i);170 ALWAYS_INLINE JSValue jsNumber(JSGlobalData* globalData, int i) 171 { 172 JSValue v = JSImmediate::from(i); 173 173 return v ? v : jsNumberCell(globalData, i); 174 174 } 175 175 176 ALWAYS_INLINE JSValue PtrjsNumber(JSGlobalData* globalData, unsigned i)177 { 178 JSValue Ptrv = JSImmediate::from(i);176 ALWAYS_INLINE JSValue jsNumber(JSGlobalData* globalData, unsigned i) 177 { 178 JSValue v = JSImmediate::from(i); 179 179 return v ? v : jsNumberCell(globalData, i); 180 180 } 181 181 182 ALWAYS_INLINE JSValue PtrjsNumber(JSGlobalData* globalData, long i)183 { 184 JSValue Ptrv = JSImmediate::from(i);182 ALWAYS_INLINE JSValue jsNumber(JSGlobalData* globalData, long i) 183 { 184 JSValue v = JSImmediate::from(i); 185 185 return v ? v : jsNumberCell(globalData, i); 186 186 } 187 187 188 ALWAYS_INLINE JSValue PtrjsNumber(JSGlobalData* globalData, unsigned long i)189 { 190 JSValue Ptrv = JSImmediate::from(i);188 ALWAYS_INLINE JSValue jsNumber(JSGlobalData* globalData, unsigned long i) 189 { 190 JSValue v = JSImmediate::from(i); 191 191 return v ? v : jsNumberCell(globalData, i); 192 192 } 193 193 194 ALWAYS_INLINE JSValue PtrjsNumber(JSGlobalData* globalData, long long i)195 { 196 JSValue Ptrv = JSImmediate::from(i);194 ALWAYS_INLINE JSValue jsNumber(JSGlobalData* globalData, long long i) 195 { 196 JSValue v = JSImmediate::from(i); 197 197 return v ? v : jsNumberCell(globalData, static_cast<double>(i)); 198 198 } 199 199 200 ALWAYS_INLINE JSValue PtrjsNumber(JSGlobalData* globalData, unsigned long long i)201 { 202 JSValue Ptrv = JSImmediate::from(i);200 ALWAYS_INLINE JSValue jsNumber(JSGlobalData* globalData, unsigned long long i) 201 { 202 JSValue v = JSImmediate::from(i); 203 203 return v ? v : jsNumberCell(globalData, static_cast<double>(i)); 204 204 } 205 205 206 inline bool JSValue Ptr::isDoubleNumber() const206 inline bool JSValue::isDoubleNumber() const 207 207 { 208 208 return isNumberCell(asValue()); 209 209 } 210 210 211 inline double JSValue Ptr::getDoubleNumber() const211 inline double JSValue::getDoubleNumber() const 212 212 { 213 213 return asNumberCell(asValue())->value(); 214 214 } 215 215 216 inline bool JSValue Ptr::isNumber() const216 inline bool JSValue::isNumber() const 217 217 { 218 218 return JSImmediate::isNumber(asValue()) || isDoubleNumber(); 219 219 } 220 220 221 inline double JSValue Ptr::uncheckedGetNumber() const221 inline double JSValue::uncheckedGetNumber() const 222 222 { 223 223 ASSERT(isNumber()); … … 227 227 #else 228 228 229 ALWAYS_INLINE JSValue PtrjsNumber(ExecState*, double d)230 { 231 JSValue Ptrv = JSImmediate::from(d);232 ASSERT(v); 233 return v; 234 } 235 236 ALWAYS_INLINE JSValue PtrjsNumber(ExecState*, int i)237 { 238 JSValue Ptrv = JSImmediate::from(i);239 ASSERT(v); 240 return v; 241 } 242 243 ALWAYS_INLINE JSValue PtrjsNumber(ExecState*, unsigned i)244 { 245 JSValue Ptrv = JSImmediate::from(i);246 ASSERT(v); 247 return v; 248 } 249 250 ALWAYS_INLINE JSValue PtrjsNumber(ExecState*, long i)251 { 252 JSValue Ptrv = JSImmediate::from(i);253 ASSERT(v); 254 return v; 255 } 256 257 ALWAYS_INLINE JSValue PtrjsNumber(ExecState*, unsigned long i)258 { 259 JSValue Ptrv = JSImmediate::from(i);260 ASSERT(v); 261 return v; 262 } 263 264 ALWAYS_INLINE JSValue PtrjsNumber(ExecState*, long long i)265 { 266 JSValue Ptrv = JSImmediate::from(static_cast<double>(i));267 ASSERT(v); 268 return v; 269 } 270 271 ALWAYS_INLINE JSValue PtrjsNumber(ExecState*, unsigned long long i)272 { 273 JSValue Ptrv = JSImmediate::from(static_cast<double>(i));274 ASSERT(v); 275 return v; 276 } 277 278 ALWAYS_INLINE JSValue PtrjsNumber(JSGlobalData*, double d)279 { 280 JSValue Ptrv = JSImmediate::from(d);281 ASSERT(v); 282 return v; 283 } 284 285 ALWAYS_INLINE JSValue PtrjsNumber(JSGlobalData*, int i)286 { 287 JSValue Ptrv = JSImmediate::from(i);288 ASSERT(v); 289 return v; 290 } 291 292 ALWAYS_INLINE JSValue PtrjsNumber(JSGlobalData*, unsigned i)293 { 294 JSValue Ptrv = JSImmediate::from(i);295 ASSERT(v); 296 return v; 297 } 298 299 ALWAYS_INLINE JSValue PtrjsNumber(JSGlobalData*, long i)300 { 301 JSValue Ptrv = JSImmediate::from(i);302 ASSERT(v); 303 return v; 304 } 305 306 ALWAYS_INLINE JSValue PtrjsNumber(JSGlobalData*, unsigned long i)307 { 308 JSValue Ptrv = JSImmediate::from(i);309 ASSERT(v); 310 return v; 311 } 312 313 ALWAYS_INLINE JSValue PtrjsNumber(JSGlobalData*, long long i)314 { 315 JSValue Ptrv = JSImmediate::from(static_cast<double>(i));316 ASSERT(v); 317 return v; 318 } 319 320 ALWAYS_INLINE JSValue PtrjsNumber(JSGlobalData*, unsigned long long i)321 { 322 JSValue Ptrv = JSImmediate::from(static_cast<double>(i));323 ASSERT(v); 324 return v; 325 } 326 327 inline bool JSValue Ptr::isDoubleNumber() const229 ALWAYS_INLINE JSValue jsNumber(ExecState*, double d) 230 { 231 JSValue v = JSImmediate::from(d); 232 ASSERT(v); 233 return v; 234 } 235 236 ALWAYS_INLINE JSValue jsNumber(ExecState*, int i) 237 { 238 JSValue v = JSImmediate::from(i); 239 ASSERT(v); 240 return v; 241 } 242 243 ALWAYS_INLINE JSValue jsNumber(ExecState*, unsigned i) 244 { 245 JSValue v = JSImmediate::from(i); 246 ASSERT(v); 247 return v; 248 } 249 250 ALWAYS_INLINE JSValue jsNumber(ExecState*, long i) 251 { 252 JSValue v = JSImmediate::from(i); 253 ASSERT(v); 254 return v; 255 } 256 257 ALWAYS_INLINE JSValue jsNumber(ExecState*, unsigned long i) 258 { 259 JSValue v = JSImmediate::from(i); 260 ASSERT(v); 261 return v; 262 } 263 264 ALWAYS_INLINE JSValue jsNumber(ExecState*, long long i) 265 { 266 JSValue v = JSImmediate::from(static_cast<double>(i)); 267 ASSERT(v); 268 return v; 269 } 270 271 ALWAYS_INLINE JSValue jsNumber(ExecState*, unsigned long long i) 272 { 273 JSValue v = JSImmediate::from(static_cast<double>(i)); 274 ASSERT(v); 275 return v; 276 } 277 278 ALWAYS_INLINE JSValue jsNumber(JSGlobalData*, double d) 279 { 280 JSValue v = JSImmediate::from(d); 281 ASSERT(v); 282 return v; 283 } 284 285 ALWAYS_INLINE JSValue jsNumber(JSGlobalData*, int i) 286 { 287 JSValue v = JSImmediate::from(i); 288 ASSERT(v); 289 return v; 290 } 291 292 ALWAYS_INLINE JSValue jsNumber(JSGlobalData*, unsigned i) 293 { 294 JSValue v = JSImmediate::from(i); 295 ASSERT(v); 296 return v; 297 } 298 299 ALWAYS_INLINE JSValue jsNumber(JSGlobalData*, long i) 300 { 301 JSValue v = JSImmediate::from(i); 302 ASSERT(v); 303 return v; 304 } 305 306 ALWAYS_INLINE JSValue jsNumber(JSGlobalData*, unsigned long i) 307 { 308 JSValue v = JSImmediate::from(i); 309 ASSERT(v); 310 return v; 311 } 312 313 ALWAYS_INLINE JSValue jsNumber(JSGlobalData*, long long i) 314 { 315 JSValue v = JSImmediate::from(static_cast<double>(i)); 316 ASSERT(v); 317 return v; 318 } 319 320 ALWAYS_INLINE JSValue jsNumber(JSGlobalData*, unsigned long long i) 321 { 322 JSValue v = JSImmediate::from(static_cast<double>(i)); 323 ASSERT(v); 324 return v; 325 } 326 327 inline bool JSValue::isDoubleNumber() const 328 328 { 329 329 return JSImmediate::isDoubleNumber(asValue()); 330 330 } 331 331 332 inline double JSValue Ptr::getDoubleNumber() const332 inline double JSValue::getDoubleNumber() const 333 333 { 334 334 return JSImmediate::doubleValue(asValue()); 335 335 } 336 336 337 inline bool JSValue Ptr::isNumber() const337 inline bool JSValue::isNumber() const 338 338 { 339 339 return JSImmediate::isNumber(asValue()); 340 340 } 341 341 342 inline double JSValue Ptr::uncheckedGetNumber() const342 inline double JSValue::uncheckedGetNumber() const 343 343 { 344 344 ASSERT(isNumber()); … … 348 348 #endif 349 349 350 ALWAYS_INLINE JSValue PtrjsNumber(ExecState*, char i)351 { 352 ASSERT(JSImmediate::from(i)); 353 return JSImmediate::from(i); 354 } 355 356 ALWAYS_INLINE JSValue PtrjsNumber(ExecState*, unsigned char i)357 { 358 ASSERT(JSImmediate::from(i)); 359 return JSImmediate::from(i); 360 } 361 362 ALWAYS_INLINE JSValue PtrjsNumber(ExecState*, short i)363 { 364 ASSERT(JSImmediate::from(i)); 365 return JSImmediate::from(i); 366 } 367 368 ALWAYS_INLINE JSValue PtrjsNumber(ExecState*, unsigned short i)369 { 370 ASSERT(JSImmediate::from(i)); 371 return JSImmediate::from(i); 372 } 373 374 ALWAYS_INLINE JSValue PtrjsNumber(JSGlobalData*, short i)375 { 376 ASSERT(JSImmediate::from(i)); 377 return JSImmediate::from(i); 378 } 379 380 ALWAYS_INLINE JSValue PtrjsNumber(JSGlobalData*, unsigned short i)381 { 382 ASSERT(JSImmediate::from(i)); 383 return JSImmediate::from(i); 384 } 385 386 inline JSValue PtrjsNaN(ExecState* exec)350 ALWAYS_INLINE JSValue jsNumber(ExecState*, char i) 351 { 352 ASSERT(JSImmediate::from(i)); 353 return JSImmediate::from(i); 354 } 355 356 ALWAYS_INLINE JSValue jsNumber(ExecState*, unsigned char i) 357 { 358 ASSERT(JSImmediate::from(i)); 359 return JSImmediate::from(i); 360 } 361 362 ALWAYS_INLINE JSValue jsNumber(ExecState*, short i) 363 { 364 ASSERT(JSImmediate::from(i)); 365 return JSImmediate::from(i); 366 } 367 368 ALWAYS_INLINE JSValue jsNumber(ExecState*, unsigned short i) 369 { 370 ASSERT(JSImmediate::from(i)); 371 return JSImmediate::from(i); 372 } 373 374 ALWAYS_INLINE JSValue jsNumber(JSGlobalData*, short i) 375 { 376 ASSERT(JSImmediate::from(i)); 377 return JSImmediate::from(i); 378 } 379 380 ALWAYS_INLINE JSValue jsNumber(JSGlobalData*, unsigned short i) 381 { 382 ASSERT(JSImmediate::from(i)); 383 return JSImmediate::from(i); 384 } 385 386 inline JSValue jsNaN(ExecState* exec) 387 387 { 388 388 return jsNumber(exec, NaN); 389 389 } 390 390 391 inline JSValue PtrjsNaN(JSGlobalData* globalData)391 inline JSValue jsNaN(JSGlobalData* globalData) 392 392 { 393 393 return jsNumber(globalData, NaN); … … 396 396 // --- JSValue inlines ---------------------------- 397 397 398 ALWAYS_INLINE JSValue Ptr JSValuePtr::toJSNumber(ExecState* exec) const398 ALWAYS_INLINE JSValue JSValue::toJSNumber(ExecState* exec) const 399 399 { 400 400 return isNumber() ? asValue() : jsNumber(exec, this->toNumber(exec)); 401 401 } 402 402 403 inline bool JSValue Ptr::getNumber(double &result) const403 inline bool JSValue::getNumber(double &result) const 404 404 { 405 405 if (isInt32Fast()) … … 414 414 } 415 415 416 inline bool JSValue Ptr::numberToInt32(int32_t& arg)416 inline bool JSValue::numberToInt32(int32_t& arg) 417 417 { 418 418 if (isInt32Fast()) … … 427 427 } 428 428 429 inline bool JSValue Ptr::numberToUInt32(uint32_t& arg)429 inline bool JSValue::numberToUInt32(uint32_t& arg) 430 430 { 431 431 if (isUInt32Fast())
Note:
See TracChangeset
for help on using the changeset viewer.