Changeset 71220 in webkit
- Timestamp:
- Nov 3, 2010 1:21:58 AM (13 years ago)
- Location:
- trunk/JavaScriptCore
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/ChangeLog
r71155 r71220 1 2010-11-03 Gabor Loki <loki@webkit.org> 2 3 Reviewed by Geoffrey Garen. 4 5 Unused class: JSFastMath with JSValue64 6 https://bugs.webkit.org/show_bug.cgi?id=48835 7 8 Remove unused JSFastMath class. 9 10 * runtime/JSImmediate.h: 11 1 12 2010-11-02 Adam Roben <aroben@apple.com> 2 13 -
trunk/JavaScriptCore/runtime/JSImmediate.h
r70111 r71220 40 40 class ExecState; 41 41 class JSCell; 42 class JSFastMath;43 42 class JSGlobalData; 44 43 class JSObject; … … 134 133 friend class JIT; 135 134 friend class JSValue; 136 friend class JSFastMath;137 135 friend class JSInterfaceJIT; 138 136 friend class SpecializedThunkJIT; … … 564 562 } 565 563 566 class JSFastMath {567 public:568 static ALWAYS_INLINE bool canDoFastBitwiseOperations(JSValue v1, JSValue v2)569 {570 return JSImmediate::areBothImmediateIntegerNumbers(v1, v2);571 }572 573 static ALWAYS_INLINE JSValue equal(JSValue v1, JSValue v2)574 {575 ASSERT(canDoFastBitwiseOperations(v1, v2));576 return jsBoolean(v1 == v2);577 }578 579 static ALWAYS_INLINE JSValue notEqual(JSValue v1, JSValue v2)580 {581 ASSERT(canDoFastBitwiseOperations(v1, v2));582 return jsBoolean(v1 != v2);583 }584 585 static ALWAYS_INLINE JSValue andImmediateNumbers(JSValue v1, JSValue v2)586 {587 ASSERT(canDoFastBitwiseOperations(v1, v2));588 return JSImmediate::makeValue(JSImmediate::rawValue(v1) & JSImmediate::rawValue(v2));589 }590 591 static ALWAYS_INLINE JSValue xorImmediateNumbers(JSValue v1, JSValue v2)592 {593 ASSERT(canDoFastBitwiseOperations(v1, v2));594 return JSImmediate::makeValue((JSImmediate::rawValue(v1) ^ JSImmediate::rawValue(v2)) | JSImmediate::TagTypeNumber);595 }596 597 static ALWAYS_INLINE JSValue orImmediateNumbers(JSValue v1, JSValue v2)598 {599 ASSERT(canDoFastBitwiseOperations(v1, v2));600 return JSImmediate::makeValue(JSImmediate::rawValue(v1) | JSImmediate::rawValue(v2));601 }602 603 static ALWAYS_INLINE bool canDoFastRshift(JSValue v1, JSValue v2)604 {605 return JSImmediate::areBothImmediateIntegerNumbers(v1, v2);606 }607 608 static ALWAYS_INLINE bool canDoFastUrshift(JSValue v1, JSValue v2)609 {610 return JSImmediate::areBothImmediateIntegerNumbers(v1, v2) && !(JSImmediate::rawValue(v1) & JSImmediate::signBit);611 }612 613 static ALWAYS_INLINE JSValue rightShiftImmediateNumbers(JSValue val, JSValue shift)614 {615 ASSERT(canDoFastRshift(val, shift) || canDoFastUrshift(val, shift));616 return JSImmediate::makeValue(static_cast<intptr_t>(static_cast<uint32_t>(static_cast<int32_t>(JSImmediate::rawValue(val)) >> ((JSImmediate::rawValue(shift) >> JSImmediate::IntegerPayloadShift) & 0x1f))) | JSImmediate::TagTypeNumber);617 }618 619 static ALWAYS_INLINE bool canDoFastAdditiveOperations(JSValue v)620 {621 // Number is non-negative and an operation involving two of these can't overflow.622 // Checking for allowed negative numbers takes more time than it's worth on SunSpider.623 return (JSImmediate::rawValue(v) & (JSImmediate::TagTypeNumber + (JSImmediate::signBit | (JSImmediate::signBit >> 1)))) == JSImmediate::TagTypeNumber;624 }625 626 static ALWAYS_INLINE bool canDoFastAdditiveOperations(JSValue v1, JSValue v2)627 {628 // Number is non-negative and an operation involving two of these can't overflow.629 // Checking for allowed negative numbers takes more time than it's worth on SunSpider.630 return canDoFastAdditiveOperations(v1) && canDoFastAdditiveOperations(v2);631 }632 633 static ALWAYS_INLINE JSValue addImmediateNumbers(JSValue v1, JSValue v2)634 {635 ASSERT(canDoFastAdditiveOperations(v1, v2));636 return JSImmediate::makeValue(JSImmediate::rawValue(v1) + JSImmediate::rawValue(v2) - JSImmediate::TagTypeNumber);637 }638 639 static ALWAYS_INLINE JSValue subImmediateNumbers(JSValue v1, JSValue v2)640 {641 ASSERT(canDoFastAdditiveOperations(v1, v2));642 return JSImmediate::makeValue(JSImmediate::rawValue(v1) - JSImmediate::rawValue(v2) + JSImmediate::TagTypeNumber);643 }644 645 static ALWAYS_INLINE JSValue incImmediateNumber(JSValue v)646 {647 ASSERT(canDoFastAdditiveOperations(v));648 return JSImmediate::makeValue(JSImmediate::rawValue(v) + (1 << JSImmediate::IntegerPayloadShift));649 }650 651 static ALWAYS_INLINE JSValue decImmediateNumber(JSValue v)652 {653 ASSERT(canDoFastAdditiveOperations(v));654 return JSImmediate::makeValue(JSImmediate::rawValue(v) - (1 << JSImmediate::IntegerPayloadShift));655 }656 };657 658 564 } // namespace JSC 659 565
Note: See TracChangeset
for help on using the changeset viewer.