diff options
author | Patrik Nyblom <[email protected]> | 2010-02-05 11:03:51 +0100 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2010-03-10 14:25:14 +0100 |
commit | 64415f09de0691c2ccdf65df169a211b7917728b (patch) | |
tree | bf852ce9dcdec87b240906b733fc6fd5b831069f /erts/emulator/utils/beam_makeops | |
parent | 20ba5ed3c281d3f0be587395fa66182873d229f0 (diff) | |
download | otp-64415f09de0691c2ccdf65df169a211b7917728b.tar.gz otp-64415f09de0691c2ccdf65df169a211b7917728b.tar.bz2 otp-64415f09de0691c2ccdf65df169a211b7917728b.zip |
Turn on instruction packing in the loader and virtual machine
Diffstat (limited to 'erts/emulator/utils/beam_makeops')
-rwxr-xr-x | erts/emulator/utils/beam_makeops | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/erts/emulator/utils/beam_makeops b/erts/emulator/utils/beam_makeops index 1a76e80620..7b1cd817cf 100755 --- a/erts/emulator/utils/beam_makeops +++ b/erts/emulator/utils/beam_makeops @@ -499,7 +499,11 @@ sub emulator_output { print "\n"; print "#ifdef ARCH_64\n"; print "# define BEAM_LOOSE_MASK 0x1FFFUL\n"; + print "#if HALFWORD_HEAP\n"; + print "# define BEAM_TIGHT_MASK 0x1FFCUL\n"; + print "#else\n"; print "# define BEAM_TIGHT_MASK 0x1FF8UL\n"; + print "#endif\n"; print "# define BEAM_LOOSE_SHIFT 16\n"; print "# define BEAM_TIGHT_SHIFT 16\n"; print "#else\n"; @@ -812,10 +816,9 @@ sub basic_generator { # Pack arguments if requested. # - # /* XXX:PaN temporarilly disabled during halfword implementation step 1 */ - #if ($flags =~ /-pack/ && $hot) { - # ($prefix, $pack_spec, @args) = &do_pack(@args); - #} + if ($flags =~ /-pack/ && $hot) { + ($prefix, $pack_spec, @args) = &do_pack(@args); + } # # Calculate the size of the instruction and generate each argument for @@ -908,16 +911,16 @@ sub basic_generator { my($code); if (defined $macro{$name}) { my($macro_code) = "$prefix$macro(" . join(', ', @f) . ");"; - $var_decls .= "Uint tmp_packed1;" + $var_decls .= "BeamInstr tmp_packed1;" if $macro_code =~ /tmp_packed1/; - $var_decls .= "Uint tmp_packed2;" + $var_decls .= "BeamInstr tmp_packed2;" if $macro_code =~ /tmp_packed2/; if ($flags =~ /-nonext/) { $code = "$macro_code\n"; } else { $code = join("\n", "{ $var_decls", - "UWord* next;", + "BeamInstr* next;", "PreFetch($size, next);", "$macro_code", "NextPF($size, next);", |