Changeset 11838
- Timestamp:
- 05/07/09 18:01:06 (14 years ago)
- Location:
- trunk/abcl/src/org/armedbear/lisp
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abcl/src/org/armedbear/lisp/compiler-pass2.lisp
r11837 r11838 1126 1126 166 ; if_acmpne 1127 1127 167 ; goto 1128 168 ; jsr1129 169 ; ret1130 1128 176 ; areturn 1131 1129 177 ; return … … 1323 1321 (return-from walk-code)) 1324 1322 (let ((opcode (instruction-opcode instruction))) 1325 (unless (eql opcode 168) ; JSR 1326 (setf depth (+ depth instruction-stack))) 1323 (setf depth (+ depth instruction-stack)) 1327 1324 (setf (instruction-depth instruction) depth) 1328 (if (eql opcode 168) ; JSR 1329 (let ((label (car (instruction-args instruction)))) 1330 (declare (type symbol label)) 1331 (walk-code code (symbol-value label) (1+ depth))) 1332 (when (branch-opcode-p opcode) 1333 (let ((label (car (instruction-args instruction)))) 1334 (declare (type symbol label)) 1335 (walk-code code (symbol-value label) depth)))) 1336 (when (member opcode '(167 169 176 191)) ; GOTO RET ARETURN ATHROW 1325 (when (branch-opcode-p opcode) 1326 (let ((label (car (instruction-args instruction)))) 1327 (declare (type symbol label)) 1328 (walk-code code (symbol-value label) depth))) 1329 (when (member opcode '(167 176 191)) ; GOTO ARETURN ATHROW 1337 1330 ;; Current path ends. 1338 1331 (return-from walk-code)))))) -
trunk/abcl/src/org/armedbear/lisp/opcodes.lisp
r11639 r11838 221 221 (define-opcode if_acmpne 166 3 -2) 222 222 (define-opcode goto 167 3 0) 223 (define-opcode jsr 168 3 1) 224 (define-opcode ret 169 2 0) 223 ;;(define-opcode jsr 168 3 1) Don't use these 2 opcodes: deprecated 224 ;;(define-opcode ret 169 2 0) their use results in JVM verifier errors 225 225 (define-opcode tableswitch 170 0 nil) 226 226 (define-opcode lookupswitch 171 0 nil)
Note: See TracChangeset
for help on using the changeset viewer.