Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Make use of the existing JumpFixup fields. Eliminate extra storage field 'offset' in JumpList that we don't require. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
df49cdf29115b25062e510cbfc4e6e94 |
User & Date: | dgp 2013-09-11 04:49:08 |
Context
2013-09-11
| ||
05:07 | Eliminate another surplus storage field. Make a(n ab)use of the existing JumpFixup fields instead. check-in: 263b4394a2 user: dgp tags: trunk | |
04:52 | merge trunk check-in: f90afb1831 user: dgp tags: dgp-refactor | |
04:49 | Make use of the existing JumpFixup fields. Eliminate extra storage field 'offset' in JumpList that ... check-in: df49cdf291 user: dgp tags: trunk | |
02:32 | Stop the save and restore of currStackDepth. Just manage it correctly so it doesn't need correcting... check-in: 6c5624d40f user: dgp tags: trunk | |
Changes
Changes to generic/tclCompExpr.c.
︙ | ︙ | |||
486 487 488 489 490 491 492 | * Keeping a stack permits the CompileExprTree() routine to be non-recursive. */ typedef struct JumpList { JumpFixup jump; /* Pass this argument to matching calls of * TclEmitForwardJump() and * TclFixupForwardJump(). */ | < < | 486 487 488 489 490 491 492 493 494 495 496 497 498 499 | * Keeping a stack permits the CompileExprTree() routine to be non-recursive. */ typedef struct JumpList { JumpFixup jump; /* Pass this argument to matching calls of * TclEmitForwardJump() and * TclFixupForwardJump(). */ int convert; /* Temporary storage used to compute whether * numeric conversion will be needed following * the operator we're compiling. */ struct JumpList *next; /* Point to next item on the stack */ } JumpList; /* |
︙ | ︙ | |||
2316 2317 2318 2319 2320 2321 2322 | TclEmitForwardJump(envPtr, TCL_FALSE_JUMP, &jumpPtr->jump); break; case COLON: CLANG_ASSERT(jumpPtr); TclEmitForwardJump(envPtr, TCL_UNCONDITIONAL_JUMP, &jumpPtr->next->jump); TclAdjustStackDepth(-1, envPtr); | < | 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 | TclEmitForwardJump(envPtr, TCL_FALSE_JUMP, &jumpPtr->jump); break; case COLON: CLANG_ASSERT(jumpPtr); TclEmitForwardJump(envPtr, TCL_UNCONDITIONAL_JUMP, &jumpPtr->next->jump); TclAdjustStackDepth(-1, envPtr); jumpPtr->convert = convert; convert = 1; break; case AND: TclEmitForwardJump(envPtr, TCL_FALSE_JUMP, &jumpPtr->jump); break; case OR: |
︙ | ︙ | |||
2370 2371 2372 2373 2374 2375 2376 | numWords++; break; case COLON: CLANG_ASSERT(jumpPtr); if (TclFixupForwardJump(envPtr, &jumpPtr->next->jump, (envPtr->codeNext - envPtr->codeStart) - jumpPtr->next->jump.codeOffset, 127)) { | | | | 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 | numWords++; break; case COLON: CLANG_ASSERT(jumpPtr); if (TclFixupForwardJump(envPtr, &jumpPtr->next->jump, (envPtr->codeNext - envPtr->codeStart) - jumpPtr->next->jump.codeOffset, 127)) { jumpPtr->next->jump.codeOffset += 3; } TclFixupForwardJump(envPtr, &jumpPtr->jump, jumpPtr->next->jump.codeOffset + 2 -jumpPtr->jump.codeOffset, 127); convert |= jumpPtr->convert; freePtr = jumpPtr; jumpPtr = jumpPtr->next; TclStackFree(interp, freePtr); freePtr = jumpPtr; jumpPtr = jumpPtr->next; TclStackFree(interp, freePtr); |
︙ | ︙ |