Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | remove ill-advised change to assembler
What made sense for the compiler does not for the assembler, as that can (and does) build code blocks entirely out of order. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
eabc1b8699e4a9d14326b1b4c5b0ea60 |
User & Date: | dkf 2013-12-31 10:47:19 |
Original Comment: | remove ill-advised change to assembler |
References
2014-09-26
| ||
16:19 | • New ticket [82521bfb67] Segfault from commit af06c0fbf8 onwards. artifact: 01f7bd1b90 user: anonymous | |
Context
2013-12-31
| ||
12:14 | clarify the resume sequence in TEBCresume; make checkInterp a local variable, remove it from the sav... check-in: af06c0fbf8 user: mig tags: trunk | |
10:49 | merge trunk check-in: f31bdb28e9 user: dkf tags: dkf-bytecode-8.6-main | |
10:47 |
remove ill-advised change to assembler
What made sense for the compiler does not for the assemble... check-in: eabc1b8699 user: dkf tags: trunk | |
2013-12-30
| ||
16:36 | merge trunk Closed-Leaf check-in: 014940909e user: dgp tags: dkf/asm-crash-20131022 | |
2013-12-23
| ||
11:28 | Added new tools for managing and verifying the stack depth during compilation. Used it in some spots... check-in: c91b235146 user: mig tags: trunk | |
Changes
Changes to generic/tclAssembly.c.
︙ | ︙ | |||
242 243 244 245 246 247 248 | int count); static void BBEmitInstInt1(AssemblyEnv* assemEnvPtr, int tblIdx, int opnd, int count); static void BBEmitInstInt4(AssemblyEnv* assemEnvPtr, int tblIdx, int opnd, int count); static void BBEmitInst1or4(AssemblyEnv* assemEnvPtr, int tblIdx, int param, int count); | < < | 242 243 244 245 246 247 248 249 250 251 252 253 254 255 | int count); static void BBEmitInstInt1(AssemblyEnv* assemEnvPtr, int tblIdx, int opnd, int count); static void BBEmitInstInt4(AssemblyEnv* assemEnvPtr, int tblIdx, int opnd, int count); static void BBEmitInst1or4(AssemblyEnv* assemEnvPtr, int tblIdx, int param, int count); static void BBEmitOpcode(AssemblyEnv* assemEnvPtr, int tblIdx, int count); static int BuildExceptionRanges(AssemblyEnv* assemEnvPtr); static int CalculateJumpRelocations(AssemblyEnv*, int*); static int CheckForUnclosedCatches(AssemblyEnv*); static int CheckForThrowInWrongContext(AssemblyEnv*); static int CheckNonThrowingBlock(AssemblyEnv*, BasicBlock*); |
︙ | ︙ | |||
677 678 679 680 681 682 683 | BBEmitOpcode(assemEnvPtr, tblIdx, count); TclEmitInt4(opnd, assemEnvPtr->envPtr); } /* *----------------------------------------------------------------------------- * | | | < < < | 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 | BBEmitOpcode(assemEnvPtr, tblIdx, count); TclEmitInt4(opnd, assemEnvPtr->envPtr); } /* *----------------------------------------------------------------------------- * * BBEmitInst1or4 -- * * Emits a 1- or 4-byte operation according to the magnitude of the * operand. * *----------------------------------------------------------------------------- */ static void BBEmitInst1or4( AssemblyEnv* assemEnvPtr, /* Assembly environment */ |
︙ | ︙ | |||
713 714 715 716 717 718 719 | TclEmitInt1(op, envPtr); if (param <= 0xff) { TclEmitInt1(param, envPtr); } else { TclEmitInt4(param, envPtr); } TclUpdateAtCmdStart(op, envPtr); | < < < < < < < < < < < < < < < < < < < < < < < | 708 709 710 711 712 713 714 715 716 717 718 719 720 721 | TclEmitInt1(op, envPtr); if (param <= 0xff) { TclEmitInt1(param, envPtr); } else { TclEmitInt4(param, envPtr); } TclUpdateAtCmdStart(op, envPtr); BBUpdateStackReqs(bbPtr, tblIdx, count); } /* *----------------------------------------------------------------------------- * * Tcl_AssembleObjCmd, TclNRAssembleObjCmd -- |
︙ | ︙ | |||
1474 1475 1476 1477 1478 1479 1480 | goto cleanup; } if (GetIntegerOperand(assemEnvPtr, &tokenPtr, &opnd) != TCL_OK || CheckStrictlyPositive(interp, opnd) != TCL_OK) { goto cleanup; } | | | 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 | goto cleanup; } if (GetIntegerOperand(assemEnvPtr, &tokenPtr, &opnd) != TCL_OK || CheckStrictlyPositive(interp, opnd) != TCL_OK) { goto cleanup; } BBEmitInst1or4(assemEnvPtr, tblIdx, opnd, opnd); break; case ASSEM_JUMP: case ASSEM_JUMP4: if (parsePtr->numWords != 2) { Tcl_WrongNumArgs(interp, 1, &instNameObj, "label"); goto cleanup; |
︙ | ︙ |