diff options
author | Björn Gustavsson <[email protected]> | 2010-10-18 16:39:59 +0200 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2011-01-17 15:23:38 +0100 |
commit | e31af112f63b11622d6a3a49cb444d5613af2f1f (patch) | |
tree | 99972deacdd447774d5892bccc06389843885f48 | |
parent | ec325cc785916c6a4991fe2e03747a97b7e1ae75 (diff) | |
download | otp-e31af112f63b11622d6a3a49cb444d5613af2f1f.tar.gz otp-e31af112f63b11622d6a3a49cb444d5613af2f1f.tar.bz2 otp-e31af112f63b11622d6a3a49cb444d5613af2f1f.zip |
Pass the external word size to the beam_makeops script
Giving the beam_makeops script access to the external word
size (=the size of instruction words) will allow it to pack
more operands into a word for the 64 bits emulator.
-rw-r--r-- | erts/configure.in | 5 | ||||
-rw-r--r-- | erts/emulator/Makefile.in | 4 | ||||
-rwxr-xr-x | erts/emulator/utils/beam_makeops | 2 |
3 files changed, 10 insertions, 1 deletions
diff --git a/erts/configure.in b/erts/configure.in index 6e983a07b0..627f734409 100644 --- a/erts/configure.in +++ b/erts/configure.in @@ -580,6 +580,11 @@ AC_SUBST(WFLAGS) AC_SUBST(CFLAG_RUNTIME_LIBRARY_PATH) AC_CHECK_SIZEOF(void *) # Needed for ARCH and smp checks below +if test "x$ac_cv_sizeof_void_p" = x8; then + AC_SUBST(EXTERNAL_WORD_SIZE, 64) +else + AC_SUBST(EXTERNAL_WORD_SIZE, 32) +fi dnl dnl Figure out operating system and cpu architecture diff --git a/erts/emulator/Makefile.in b/erts/emulator/Makefile.in index 1420fd6bfa..f04df354a8 100644 --- a/erts/emulator/Makefile.in +++ b/erts/emulator/Makefile.in @@ -506,7 +506,9 @@ OPCODE_TABLES += hipe/hipe_ops.tab endif $(TTF_DIR)/beam_opcodes.h $(TTF_DIR)/beam_opcodes.c: $(OPCODE_TABLES) utils/beam_makeops - LANG=C $(PERL) utils/beam_makeops -outdir $(TTF_DIR) \ + LANG=C $(PERL) utils/beam_makeops \ + -wordsize @EXTERNAL_WORD_SIZE@ \ + -outdir $(TTF_DIR) \ -emulator $(OPCODE_TABLES) # bif and atom table diff --git a/erts/emulator/utils/beam_makeops b/erts/emulator/utils/beam_makeops index cb91517f04..aa1aba6856 100755 --- a/erts/emulator/utils/beam_makeops +++ b/erts/emulator/utils/beam_makeops @@ -27,6 +27,7 @@ my $outdir = "."; # Directory for output files. my $verbose = 0; my $hot = 1; my $num_file_opcodes = 0; +my $wordsize = 32; # This is shift counts and mask for the packer. my $WHOLE_WORD = ''; @@ -171,6 +172,7 @@ while (@ARGV && $ARGV[0] =~ /^-(.*)/) { ($target = \&emulator_output), next if /^emulator/; ($target = \&compiler_output), next if /^compiler/; ($outdir = shift), next if /^outdir/; + ($wordsize = shift), next if /^wordsize/; ($verbose = 1), next if /^v/; die "$0: Bad option: -$_\n"; } |