Diff
Not logged in

Differences From Artifact [3d89f50ed6]:

To Artifact [9e7d5d85c0]:


2428
2429
2430
2431
2432
2433
2434
2435

2436
2437
2438
2439
2440
2441
2442

2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453


2454
2455
2456
2457

2458
2459

2460
2461

2462
2463
2464
2465
2466

2467
2468
2469
2470
2471
2472
2473
2428
2429
2430
2431
2432
2433
2434

2435


2436
2437
2438
2439

2440
2441
2442
2443
2444
2445
2446
2447
2448
2449


2450
2451
2452
2453
2454

2455
2456

2457
2458

2459


2460
2461

2462
2463
2464
2465
2466
2467
2468
2469







-
+
-
-




-
+









-
-
+
+



-
+

-
+

-
+
-
-


-
+







	    case COLON:
		CLANG_ASSERT(jumpPtr);
		if (jumpPtr->jump.jumpType == TCL_TRUE_JUMP) {
		    jumpPtr->jump.jumpType = TCL_UNCONDITIONAL_JUMP;
		    convert = 1;
		}
		target = jumpPtr->jump.codeOffset + 2;
		if (TclFixupForwardJumpToHere(envPtr, &jumpPtr->jump, 127)) {
		TclFixupForwardJumpToHere(envPtr, &jumpPtr->jump);
		    target += 3;
		}
		freePtr = jumpPtr;
		jumpPtr = jumpPtr->next;
		TclStackFree(interp, freePtr);
		TclFixupForwardJump(envPtr, &jumpPtr->jump,
			target - jumpPtr->jump.codeOffset, 127);
			target - jumpPtr->jump.codeOffset);

		freePtr = jumpPtr;
		jumpPtr = jumpPtr->next;
		TclStackFree(interp, freePtr);
		break;
	    case AND:
	    case OR:
		CLANG_ASSERT(jumpPtr);
		pc1 = CurrentOffset(envPtr);
		TclEmitInstInt1((nodePtr->lexeme == AND) ? INST_JUMP_FALSE1
			: INST_JUMP_TRUE1, 0, envPtr);
		TclEmitInstInt4((nodePtr->lexeme == AND) ? INST_JUMP_FALSE4
			: INST_JUMP_TRUE4, 0, envPtr);
		TclEmitPush(TclRegisterLiteral(envPtr,
			(nodePtr->lexeme == AND) ? "1" : "0", 1, 0), envPtr);
		pc2 = CurrentOffset(envPtr);
		TclEmitInstInt1(INST_JUMP1, 0, envPtr);
		TclEmitInstInt4(INST_JUMP4, 0, envPtr);
		TclAdjustStackDepth(-1, envPtr);
		TclStoreInt1AtPtr(CurrentOffset(envPtr) - pc1,
		TclStoreInt4AtPtr(CurrentOffset(envPtr) - pc1,
			envPtr->codeStart + pc1 + 1);
		if (TclFixupForwardJumpToHere(envPtr, &jumpPtr->jump, 127)) {
		TclFixupForwardJumpToHere(envPtr, &jumpPtr->jump);
		    pc2 += 3;
		}
		TclEmitPush(TclRegisterLiteral(envPtr,
			(nodePtr->lexeme == AND) ? "0" : "1", 1, 0), envPtr);
		TclStoreInt1AtPtr(CurrentOffset(envPtr) - pc2,
		TclStoreInt4AtPtr(CurrentOffset(envPtr) - pc2,
			envPtr->codeStart + pc2 + 1);
		convert = 0;
		freePtr = jumpPtr;
		jumpPtr = jumpPtr->next;
		TclStackFree(interp, freePtr);
		break;
	    default: