mirror of
				https://github.com/tc39/test262.git
				synced 2025-10-31 11:44:31 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			106 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			106 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| //@ runBigIntEnabled
 | |
| 
 | |
| function assert(a, e) {
 | |
|     if (a !== e)
 | |
|         throw new Error("Expected: " + e + " but got: " + a);
 | |
| }
 | |
| 
 | |
| function doesGCAdd(a) {
 | |
|     let o = {};
 | |
|     let c = a + 1n;
 | |
|     o.b = c;
 | |
| 
 | |
|     return o;
 | |
| }
 | |
| noInline(doesGCAdd);
 | |
| 
 | |
| for (var i = 0; i < 10000; i++) {
 | |
|     let o = doesGCAdd(3n);
 | |
|     assert(o.b, 4n);
 | |
| }
 | |
| 
 | |
| function doesGCSub(a) {
 | |
|     let o = {};
 | |
|     let c = a - 1n;
 | |
|     o.b = c;
 | |
| 
 | |
|     return o;
 | |
| }
 | |
| noInline(doesGCSub);
 | |
| 
 | |
| for (var i = 0; i < 10000; i++) {
 | |
|     let o = doesGCSub(3n);
 | |
|     assert(o.b, 2n);
 | |
| }
 | |
| 
 | |
| function doesGCDiv(a) {
 | |
|     let o = {};
 | |
|     let c = a / 2n;
 | |
|     o.b = c;
 | |
| 
 | |
|     return o;
 | |
| }
 | |
| noInline(doesGCDiv);
 | |
| 
 | |
| for (var i = 0; i < 10000; i++) {
 | |
|     let o = doesGCDiv(4n);
 | |
|     assert(o.b, 2n);
 | |
| }
 | |
| 
 | |
| function doesGCMul(a) {
 | |
|     let o = {};
 | |
|     let c = a * 2n;
 | |
|     o.b = c;
 | |
| 
 | |
|     return o;
 | |
| }
 | |
| noInline(doesGCMul);
 | |
| 
 | |
| for (var i = 0; i < 10000; i++) {
 | |
|     let o = doesGCMul(4n);
 | |
|     assert(o.b, 8n);
 | |
| }
 | |
| 
 | |
| function doesGCBitAnd(a) {
 | |
|     let o = {};
 | |
|     let c = a & 0b11n;
 | |
|     o.b = c;
 | |
| 
 | |
|     return o;
 | |
| }
 | |
| noInline(doesGCBitAnd);
 | |
| 
 | |
| for (var i = 0; i < 10000; i++) {
 | |
|     let o = doesGCBitAnd(0b1010n);
 | |
|     assert(o.b, 0b10n);
 | |
| }
 | |
| 
 | |
| function doesGCBitOr(a) {
 | |
|     let o = {};
 | |
|     let c = a | 0b11n;
 | |
|     o.b = c;
 | |
| 
 | |
|     return o;
 | |
| }
 | |
| noInline(doesGCBitOr);
 | |
| 
 | |
| for (var i = 0; i < 10000; i++) {
 | |
|     let o = doesGCBitOr(0b10n);
 | |
|     assert(o.b, 0b11n);
 | |
| }
 | |
| 
 | |
| function doesGCBitXor(a) {
 | |
|     let o = {};
 | |
|     let c = a ^ 0b11n;
 | |
|     o.b = c;
 | |
| 
 | |
|     return o;
 | |
| }
 | |
| noInline(doesGCBitXor);
 | |
| 
 | |
| for (var i = 0; i < 10000; i++) {
 | |
|     let o = doesGCBitXor(0b10n);
 | |
|     assert(o.b, 0b1n);
 | |
| }
 | |
| 
 |