Age | Commit message (Collapse) | Author |
|
|
|
It seems that the code was duplicated only to avoid emitting
a semi-colon before the first case clause. Handle that by passing
a Sep argument instead.
While at it, also do the following clean-ups:
* Replace lists:keysearch/3 with lists:keyfind/3.
* Replace the use of is_record/2 with matching
|
|
Do the following optimizations:
* Optimize construction of OCTET STRINGs of size 2 by using
the 45 opcode instead of the 10 opcode for each character.
* Use exact comparison (implicit by matching) instead of '=='.
* Use list literals when more than one integer is added to a
list (e.g. [[45,16,2],...] instead of [45,16,2,...]). Results
in fewer BEAM instructions and less garbage.
* Cons instead of building a nested list when possible. Example:
[20,TempLen|TmpVal] instead of [20,TempLen,TmpVal].
* Omit the "2" opcode (align to byte boundary) before the "20" and
"21" opcodes (because they imply alignment).
* Assign the value to be encoded to a temporary variable, to avoid
calling element/2 more than once.
|
|
|
|
Support for the notation was removed in 6ef8cbdaaaa1c30a7dc462063.
|
|
UNION and "|" are synonyms, as are INTERSECTION and "^". Use the same
parsing code for the synonyms.
|
|
The constraint simplification pass need to be seriously rethought
and rewritten.
As a starting point, add a test case to test that equivalent ways
to write a constraint are reduced to the same simplified constraint.
Fix a few obvious bugs to make the test cases to pass.
|
|
|
|
Extensions following a double bracket group were not skipped correctly.
Fix this bug and add tests to ensure that extensions are skipped
correctly.
|
|
Commit 1b622484ea984f3bc424d2a6760e2d961bfcf816 changed the type of
the extension bitmap for uper (from a tuple to a bitstring), but did
not do the the corresponding change to the run-time module.
|
|
|
|
|
|
Also run the test case for all back-ends.
|
|
|
|
|
|
|
|
Make the test suite more readable by introducing and using a
roundtrip/2 function.
|
|
|
|
|
|
Eliminate the spawning of the process since the original bug is
fixed.
|
|
|
|
|
|
* egil/r16/insert_delete_element/OTP-10643:
Update preloaded erlang.beam
erts: Document insert_element and delete_element
tests: Update tuple_SUITE for insert and delete
Add insert_element/3 and delete_element/2
|
|
|
|
Document new BIFs:
* erlang:insert_element/3
* erlang:delete_element/2
|
|
* Test erlang:insert_element/3 BIF
* Test erlang:delete_element/2 BIF
|
|
* erlang:insert_element/3 - extend a tuple at an index
* erlang:delete_element/2 - remove an element at an index
|
|
OTP-10415
* sverk/egil/r16/new-alloc-header-scheme/OTP-10273: (42 commits)
erts: Make ll main mbc fit into 2pow size
erts: Clear entire mseg cache upon request
erts: Reduce max heap sizes
tests: Refactor away ?line macro in beam_SUITE
tests: Fix heap_sizes check
tests: Refactor away ?line macro in process_SUITE
tests: Use new correct min_bin_vheap_size in test
erts: Set super alignment (256kb) and limits for sbct (8Mb) and lmbcs (128Mb)
erts: Do not cache segments that are misaligned
erts: Add mseg cache for large sbc segments
erts: Reintroduce mseg options amcbf and rmcbf
erts: Optimize erl_alloc_util.c by substitute MBC_BLK_SZ
erts: Fix bug when allocating size near sbc_threshold
erts: Make gc sizes fit into MB Carrier blocks
erts: Force sbmbc to be disabled in a crude way
erts: Fix new header scheme for win64
erts: Fix mseg cache. Malplaced NULL pointer
erts: Remove unused mseg options amcbf and rmcbf
erts: Use aligned bits as constant in mseg_alloc
erts: Don't let zero be considered a power of two
...
Conflicts:
erts/emulator/test/process_SUITE.erl
|
|
|
|
|
|
Reduces max heap sizes to max addressable memory space. In reality this could be
even less since we need at least twice as much adressable memory to do a garbage
collection.
The rest of the system also uses memory thus further constraining heap memory
space and in the 64 bit case we really only have 48 bits mappable memory.
|
|
|
|
|
|
|
|
|
|
|
|
* SBC may realloc carriers to misaligned addresses which
is perfectly fine. However, those segments may not be cached
because MBC allocations might find them and MBC's *needs*
correct alignment.
|
|
* Not a power of two (unpowered) segements
|
|
Used with new sbc cache
|
|
with either MBC_ABLK_SZ or MBC_FBLK_SZ in all cases when we already know
what kind of block it is.
|
|
A block larger than sbc_threshold can be allocated in MBC if the subsequent
"residue block" is smaller than min_block_size.
Solved by lowering sbc_threshold to ("hard limit" - min_block_size).
|
|
* Account for block header size in gc-sizes
* Also slow down growth to 20% instead of 25% when
size threshold is reached
|
|
|
|
|
|
|
|
|
|
HAVE_SUPER_ALIGNED_MB_CARRIERS is always true with mmap and thus
aligned bits is a constant and so is "page" size for mmap.
Conflicts:
erts/emulator/sys/common/erl_mseg.h
|
|
* ia/ssh/add_users_guide/OTP-7786:
ssh: Document and clean up SSH behaviours
ssh: Add Users Guide and enhance man pages
ssh: Added User's Guide framework and minor enhancements
|
|
|
|
* ao/fix_mnesia_overload_msg_format:
Fix format of mnesia overload message
OTP-10639
|