diff --git a/basis/compiler/codegen/codegen.factor b/basis/compiler/codegen/codegen.factor index f1052da2d5..993edbf812 100755 --- a/basis/compiler/codegen/codegen.factor +++ b/basis/compiler/codegen/codegen.factor @@ -4,7 +4,7 @@ USING: namespaces make math math.order math.parser sequences accessors kernel kernel.private layouts assocs words summary arrays combinators classes.algebra alien alien.c-types alien.structs alien.strings alien.arrays alien.complex alien.libraries sets libc -continuations.private fry cpu.architecture +continuations.private fry cpu.architecture classes source-files.errors compiler.errors compiler.alien @@ -18,6 +18,10 @@ compiler.codegen.fixup compiler.utilities ; IN: compiler.codegen +SYMBOL: insn-counts + +H{ } clone insn-counts set-global + GENERIC: generate-insn ( insn -- ) SYMBOL: registers @@ -54,7 +58,12 @@ SYMBOL: labels [ word>> init-generator ] [ instructions>> - [ [ regs>> registers set ] [ generate-insn ] bi ] each + [ + [ class insn-counts get inc-at ] + [ regs>> registers set ] + [ generate-insn ] + tri + ] each ] bi ] with-fixup ;