diff options
author | Björn Gustavsson <[email protected]> | 2013-01-28 10:51:11 +0100 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2013-01-31 11:11:35 +0100 |
commit | 9cfd4261240fffc51ca5aa7d1df5a29a30f42a38 (patch) | |
tree | 90ef3cc303a0b02bee31b954f3e02542c60bf2ad /lib/compiler/src/beam_asm.erl | |
parent | 68b804f34d4ec420d86953e3f519179a40fbee8f (diff) | |
download | otp-9cfd4261240fffc51ca5aa7d1df5a29a30f42a38.tar.gz otp-9cfd4261240fffc51ca5aa7d1df5a29a30f42a38.tar.bz2 otp-9cfd4261240fffc51ca5aa7d1df5a29a30f42a38.zip |
compiler: Use the literal pool for floating point constants
The BEAM loader will put floating point constants into the
literal pools for the module, but it will not check for duplicates.
We can do much better by having the compiler use the literal
pool for floating point constants.
Diffstat (limited to 'lib/compiler/src/beam_asm.erl')
-rw-r--r-- | lib/compiler/src/beam_asm.erl | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/compiler/src/beam_asm.erl b/lib/compiler/src/beam_asm.erl index a7c8508321..98967e651f 100644 --- a/lib/compiler/src/beam_asm.erl +++ b/lib/compiler/src/beam_asm.erl @@ -387,7 +387,7 @@ encode_arg({list, List}, Dict0) -> {L, Dict} = encode_list(List, Dict0, []), {[encode(?tag_z, 1), encode(?tag_u, length(List))|L], Dict}; encode_arg({float, Float}, Dict) when is_float(Float) -> - {[encode(?tag_z, 0),<<Float:64/float>>], Dict}; + encode_arg({literal,Float}, Dict); encode_arg({fr,Fr}, Dict) -> {[encode(?tag_z, 2),encode(?tag_u, Fr)], Dict}; encode_arg({field_flags,Flags0}, Dict) -> |