Ticket #303 (closed enhancement: fixed)

Opened 8 months ago

Last modified 7 months ago

useless marking/unmarking reg as imm

Reported by: rme Assigned to: rme
Priority: minor Milestone: IA-32 port
Component: Compiler Version:
Keywords: Cc:

Description

The compiled code for the following function produces pointless mark-as-imm/mark-as-node vinsns. It shouldn't do that.

(defun rme-make-wsp ()
  (let ((str (make-string 6  :element-type 'base-char)))
    (set-schar str 0 #\Space)
    (set-schar str 1 #\^I)
    str))
 vinsns for NIL (after generation)
#<VINSN-LABEL 4>
#<ESTABLISH-FN>
#<CHECK-EXACT-NARGS 0>
#<SAVE-LISP-CONTEXT-NO-STACK-ARGS>
#<0 := LRI 1735>
#<SETUP-UVECTOR-ALLOCATION 0>
#<0 := LRI 26>
#<#<LREG 1 GPR {3}> := %ALLOCATE-UVECTOR>
#<VPUSH-REGISTER #<LREG 1 GPR {3}>>
#<#<LREG 4 GPR [1]> := VFRAME-LOAD 0 4>
#<#<LREG 5 GPR [6]> := LRI 0>
#<#<LREG 7 GPR [3]> := LOAD-CHARACTER-CONSTANT 32>
#<MARK-AS-IMM #<LREG 8 GPR {2}>>
#<TRAP-UNLESS-TYPECODE= #<LREG 4 GPR [1]> 199>
#<CHECK-MISC-BOUND #<LREG 5 GPR [6]> #<LREG 4 GPR [1]>>
#<MARK-AS-NODE #<LREG 8 GPR {2}>>
#<#<LREG 11 GPR {0}> := LRI 32>
#<MARK-AS-IMM #<LREG 12 GPR {2}>>
#<MISC-SET-C-U32 #<LREG 11 GPR {0}> #<LREG 4 GPR [1]> 0>
#<MARK-AS-NODE #<LREG 12 GPR {2}>>
#<#<LREG 14 GPR [1]> := VFRAME-LOAD 0 4>
#<#<LREG 15 GPR [6]> := LRI 4>
#<#<LREG 17 GPR [3]> := LOAD-CHARACTER-CONSTANT 9>
#<MARK-AS-IMM #<LREG 18 GPR {2}>>
#<TRAP-UNLESS-TYPECODE= #<LREG 14 GPR [1]> 199>
#<CHECK-MISC-BOUND #<LREG 15 GPR [6]> #<LREG 14 GPR [1]>>
#<MARK-AS-NODE #<LREG 18 GPR {2}>>
#<#<LREG 21 GPR {0}> := LRI 9>
#<MARK-AS-IMM #<LREG 22 GPR {2}>>
#<MISC-SET-C-U32 #<LREG 21 GPR {0}> #<LREG 14 GPR [1]> 1>
#<MARK-AS-NODE #<LREG 22 GPR {2}>>
#<#<LREG 0 GPR [3]> := VFRAME-LOAD 0 4>
#<POPJ>

Change History

05/30/08 23:38:08 changed by rme

  • status changed from new to closed.
  • resolution set to fixed.

Should be fixed in r9583