Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
In many (not all) cases, the value for the 'I' type will
fit into 32 bits.
|
|
We don't want the packable types listed in two places.
|
|
|
|
|
|
|
|
|
|
Introduce a new 'Q' type, similar to 'P' except that it
can be packed.
|
|
In the 32-bit BEAM emulator, it is only possible to pack
3 register operands into one word. Therefore, the move2
instruction (that has 4 operands) needs two words for its
operands.
Take advantage of the larger wordsize in the 64-bit emulator
and pack up to 4 operands into a single word.
|
|
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.
|
|
In the transformation engine in the loader, an is_eq/1 instruction
is currently always preceded by an is_type/1 instruction. Therefore,
save a word and slight amount of time by combining those
instructions into an is_type_eq/2 instruction.
|
|
|
|
The i_jump_on_val_zero/3 and i_select_tuple_arity/3 instructions
were not disassembled correctly.
|
|
|
|
|
|
|
|
It would only really work in simple case like:
select_val S=q Fail=f Size=u Rest=* => ...
where all operands for a single instruction where bound to
variables, and not for more complicated cases such as:
i_put_tuple Dst Arity Puts=* | put PutSrc => ...
|
|
There was a version of the BEAM loader and emulator that
had two versions of the fmove/2 instruction, one version
that allocated heap space internally and a newer version that
assumed that a previous test_heap/2 instruction had already
allocated the heap space.
Though the allocating fmove/2 instruction is no longer
supported, some vestiges of it still remains.
|
|
|
|
|
|
erts_debug:instructions/0 is useful for finding which specific
instructions that are not used at all.
|
|
* pan/fortify-source-gcc-4.5:
Remove strange name field in efile_drv.c as it upsets -D_FORTIFY_SOURCE
OTP-9025
|
|
Also added ASSERTion in beam_emu.c that the tmp-heap-counter in 0.
|
|
|
|
|
|
The listen() call can fail due to a variety of conditions, so check
its return value and if it fails, print a suitable debug message if
appropriate and then exit. The exit values used are the same for those
already used for bind() failures: 0 if the error is EADDRINUSE, 1
otherwise.
|
|
enif_realloc_binary return int
enif_alloc/enif_free does not accept env as first argument.
enif_send return int
enif_self in alphabetic order
|
|
* egil/timer-wheel-min-time/OTP-8990:
Teach timer-wheel slots to use double linked lists
Remove timer-thread implementation
Refactor timer interface
Teach timer-wheel to keep min time
|
|
Conflicts:
erts/emulator/beam/erl_time.h
|
|
* bjorn/bs-zero-width-bug/OTP-8997:
Fix type-checking of variable used in zero-width bit syntax construction
|
|
<<A:0>> will always produce an empty binary, regardless of the
type of A. The bug is in the run-time system. Fix it so that a
non-numeric value for A will cause a badarg exception.
Reported-by: Zvi
|
|
|
|
|
|
Increases the speed of the timer-wheel
|
|
* pan/r14b01-file-driver-fix:
Correct usage of pointer-to-size in unix_efile
|
|
* pan/bad-dist-msg/OTP-8993:
Remove ancient distribution message DOP_NODE_LINK from all code
Teach VM not to dump core on bad dist message structure
|
|
* pan/werl-scrollwheel/OTP-8985:
Teach win_con.c about scroll wheels
|
|
|
|
* raimo/getifaddrs_ifa_addr_NULL/OTP-8996:
Fix segfault for NULL return value fields from getifaddrs()
|
|
* rickard/exit/2-refc/OTP-9005:
Decrement refc after unlock in exit/2
|
|
|
|
|
|
* rickard/fix-warnings/R14B02:
Remove unused variable
Remove stray semicolons in erl_term.h
|
|
* rickard/ets-no-write-refc/OTP-9000:
Stop using reference counter when write accessing ETS-tables
Conflicts:
erts/emulator/beam/erl_db.c
|
|
* rickard/ets-tab-delete/OTP-8999:
Safe deallocation of ETS-table structures
Fix rwlock resource leak when hitting system limit
Conflicts:
erts/emulator/beam/erl_process.h
erts/emulator/beam/erl_process.c
|
|
* rickard/atomic-type/OTP-8974:
Unbreak atomic fallback
|
|
|
|
* rickard/atomic-type/OTP-8974:
Use 32-bit atomics for system block
Use 32-bit atomics for misc scheduling specific information
Use 32-bit atomic for uaflgs in thread specific events
Use 32-bit atomics for process lock flags
Add 32-bit atomics to emulator APIs
Use new atomic types in emulator
Use 32-bit atomics for ethr_thr_create
Use 32-bit atomics for mutex and rwmutex flags
Use 32-bit atomics for events
Add support for 32-bit atomics
Move atomic API into own files
Add support for 64-bit atomics on Windows
Remove unused ethread time functionality
Introduce ethr_sint_t and use it for atomics
|