Age | Commit message (Collapse) | Author |
|
The bit syntax instructions are mixed among other instructions
in beam_hot.h and beam_cold.h.
Introduce a new hotness level called '%warm' with is associated
file beam_warm.h. Mark all bit syntax instructions as '%warm'.
|
|
|
|
* lukas/erts/port_SUITE_dropped_commands_fix:
erts: Fix port_SUITE:dropped_commands tc
|
|
* dszoboszlay/run-dropped_commands-test:
Execute the dropped_commands test case in port_SUITE
|
|
Remove backward compatibility support for float literals
OTP-14575
|
|
We start the port in the started process in order
to get the messages in the correct place and also
so that unloading the port driver does not kill the
test process.
|
|
Conflicts:
erts/emulator/beam/bif.c
erts/emulator/beam/dist.c
erts/emulator/beam/dist.h
erts/emulator/beam/erl_bif_info.c
erts/emulator/beam/erl_node_tables.c
erts/emulator/beam/erl_node_tables.h
erts/emulator/beam/external.c
|
|
|
|
|
|
|
|
|
|
|
|
Starting from R16B, floating point constants are stored
in the literal pool.
The backward compatibility support for the old representation
of floats has been kept long enough. Also, we might want to
ensure that all literals are unique in the future, and we certainly
don't want to update this code to ensure uniqueness.
|
|
* maint:
Remove time-consuming ethread_SUITE from smoke tests
|
|
The ethread_SUITE is unlikely to ever find a real bug
introduced in a pull request, but it frequently times
out when run by Travis CI.
|
|
|
|
* maint-20:
Updated OTP version
Prepare release
dialyzer: Fix a bug where merging PLT:s could lose info
|
|
|
|
* rickard/btm-auto-cleanup-bug/OTP-14554:
Fix BIF timer race between timeout and auto cleanup
|
|
* rickard/timer-sid-bug/OTP-14548:
Fix scheduler id field in timers
# Conflicts:
# erts/emulator/beam/erl_hl_timer.c
|
|
* maint:
Fix BIF timer race between timeout and auto cleanup
Conflicts:
erts/emulator/beam/erl_hl_timer.c
|
|
* rickard/btm-auto-cleanup-bug/OTP-14554:
Fix BIF timer race between timeout and auto cleanup
|
|
* maint:
Fix scheduler id field in timers
Conflicts:
erts/emulator/beam/erl_hl_timer.c
|
|
* rickard/timer-sid-bug/OTP-14548:
Fix scheduler id field in timers
Conflicts:
erts/emulator/beam/erl_hl_timer.c
|
|
* bjorn/erts/improve-beam-ops:
arith_instrs.tab: Clean up bsl/bsr
beam_makeops: Stop using the Arg() macro
Eliminate the beam_instrs.h file
Add the 'S' type for a register source
Introduce more packable types
Pack cold instructions too
Pack instructions using 'q', 'c', and 's'
beam_makeops: Rewrite the packer, fixing several bugs
Make map update instruction functions indepedent of instruction format
beam_makeops: Introduce the new type 'W' (machine word)
Use the wait_timeout_{un}locked_int instructions
beam_makeops: Remove the unused aliases 'N' and 'U'
beam_makeops: Add an additional sanity check
beam_makeops: Prevent truncation when packing 'I' values
Improve performance for bsl/bsr
arith_instrs.tab: Eliminate warning for uninitialized value
beam_emu: Remove unused macros
beam_makeops: Remove unused subroutine save_c_code
Add missing -no_next for badarg instruction
|
|
Conflicts:
OTP_VERSION
|
|
* maint-20:
Updated OTP version
Prepare release
Accept non-binary options as socket-options
Bump version
Fix broken handling of default values in extensions for PER
compiler: Fix live regs update on allocate in validator
Take fail labels into account when determining liveness in block ops
Check for overflow when appending binaries, and error out with system_limit
|
|
|
|
|
|
Eliminate the all-purpose variable 'ires'. Replace it with several
variables used that are used for their specific purpose. Narrow
the scope of the variables.
Do this to improve readability. It is not expected that it should
any impact on performance.
|
|
* maint:
Unicode support for erlang:display_string/1
|
|
* rickard/unicode-display_string/OTP-14545:
Unicode support for erlang:display_string/1
|
|
|
|
|
|
* lukas/erts/fix_dirty_trace_message_flush/OTP-14538:
erts: Fix incorrect merge of dirty_trace_message_flush fix to master
|
|
* sverker/halt-unicode-slogan/OTP-14553:
erts: Allow any unicode string as crash dump slogan
erts: Generate crash_dump slogan string as UTF8
erts: Refactor erts_unicode_list_to_buf
|
|
|
|
Generated code uses 'I' explicitly in other places, so it
can as well use 'I' when accessing the operands for instructions.
|
|
The beam_instrs.h file serves no useful purpose. Put the
instructions in beam_hot.h instead.
|
|
The type 'd' could be used both for destination registers and
source register.
Restrict the 'd' type to only be used for destinations, and
introduce the new 'S' type to be used when a source must be
a register.
|
|
i.e the first argument to erlang:halt
|
|
|
|
* john/erts/fix-binary-append-syslimit/OTP-14524:
Check for overflow when appending binaries, and error out with system_limit
# Conflicts:
# erts/emulator/test/bs_construct_SUITE.erl
|
|
* maint:
Fix ANSI support in the console
|
|
The 'I' type can be replaced with 't' if we know that the value
will fit in 16 bits. The 'P' type can be replaced with 'Q' if
it is used for deallocating a stack frame.
|
|
Cold instructions used to be cooler (less frequently executed),
so it did not seem worthwhile to pack their operands. Now bit
syntax instructions are included among the cold instructions,
and they are frequently used.
|
|
Update the pack engine to safely push literal operands to the pack
stack and to safely pop them back to another code address. That
will allow packing of more instructions.
|
|
The packer had several bugs and limitations. For instance, on
a 32-bit Erlang virtual machine it would gladly pack three
't' values into one word even though it would be not safe.
The rewritten version will be more careful how much it packs
into each word. It will also be able to do packing for more
instructions.
|
|
Having the helper functions for map update knowing all the details
of operands for the instruction will make it difficult to make
improvements such as better packing.
|
|
As a preparation for potentially improving packing in the future,
we will need to make sure that packable types have a defined maximum
size.
The packer algorithm assumes that two 'I' operands can be packed
into one 64-bit word, but there are instructions that use an 'I'
operand to store a pointer. It only works because those instructions
are not packed for other reasons.
Introduce the 'W' type and use it for operands that don't fit in
32 bits.
|