From e31af112f63b11622d6a3a49cb444d5613af2f1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Gustavsson?= Date: Mon, 18 Oct 2010 16:39:59 +0200 Subject: 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. --- erts/configure.in | 5 +++++ erts/emulator/Makefile.in | 4 +++- erts/emulator/utils/beam_makeops | 2 ++ 3 files changed, 10 insertions(+), 1 deletion(-) 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"; } -- cgit v1.2.3