Age | Commit message (Collapse) | Author |
|
Conflicts:
lib/hipe/cerl/erl_bif_types.erl
lib/stdlib/doc/src/binary.xml
|
|
* jz/erts-remove-unused-var:
erts: Remove unused variable
OTP-9926
|
|
* rc/spell-registered:
Correct spelling of "registered" in various places in the source code
OTP-9925
|
|
|
|
* jz/reduce-smp-locking-time-range:
erts: reduce smp locking time range in erts_garbage_collect
OTP-9912
|
|
|
|
|
|
erts/test/autoimport_SUITE tested that auto-import information in
erl_internal:bif/2 was consistent with the documentation. It did
it by scanning erlang.xml.
Since the documentation is now based on the specs in erlang.erl,
we should now test consistency of the specs and erl_internal:bif/2.
Since anyone that adds a new BIF runs the emulator test suite, it
makes sense to do this test in bif_SUITE in the emulator test suite.
|
|
Rename the existing types/1 test case to erl_bif_types/1 to make
it clearer what it does. Also no longer test for missing type
information for BIFs (since it has become optional), but only
check that the information provided seems to be consistent.
Introduce the specs/1 test case to ensure that all BIFs have
specs.
Also introduce improper_bif_stubs/1 to check for proper stubs.
Since the BEAM loader will now silently allow stubs for BIFs, we
want to be particular about exactly what a stub look like, so that
an Erlang function is not unintentionally overridden by a BIF.
|
|
Conflicts:
erts/doc/src/erlang.xml
erts/preloaded/ebin/erlang.beam
|
|
* dgud/sched-work-time/OTP-9858:
emulator: Document and test scheduler_wall_time
Implement statistics(scheduler_wall_time)
|
|
* bjorn/erts/bif-stubs/OTP-9861:
beam_bp: Fix faulty assertion in erts_find_local_func()
beam_load: Fix faulty assertion in module_info(native_addresses)
|
|
* maint:
erlang.xml: Fix a few typos and grammatical errors
debugger tests: Increase time trap timeout
fprof_SUITE: Skip create_file_slow/1 if libraries are native
etop_SUITE: Skip a test case if libraries are native-compiled
Skip all inviso test cases if libraries are native-compiled
erl_prim_loader_SUITE: Handle native-compiled erl_boot_server
re_SUITE: Skip error_handling/1 if 're' is native code
shell_SUITE: Handle different EXIT reasons from native code
sofs_SUITE: Handle different EXIT reasons from native code
erl_eval_SUITE: Skip test of parameterized modules if native code
trace_port_SUITE: Skip test cases if 'lists' is native-compiled
call_trace_SUITE: Skip test cases if libraries are native-compiled
|
|
* bjorn/hipe-test-cases:
debugger tests: Increase time trap timeout
fprof_SUITE: Skip create_file_slow/1 if libraries are native
etop_SUITE: Skip a test case if libraries are native-compiled
Skip all inviso test cases if libraries are native-compiled
erl_prim_loader_SUITE: Handle native-compiled erl_boot_server
re_SUITE: Skip error_handling/1 if 're' is native code
shell_SUITE: Handle different EXIT reasons from native code
sofs_SUITE: Handle different EXIT reasons from native code
erl_eval_SUITE: Skip test of parameterized modules if native code
trace_port_SUITE: Skip test cases if 'lists' is native-compiled
call_trace_SUITE: Skip test cases if libraries are native-compiled
|
|
|
|
Commit 64ccd8c9b7a782ca777ca4649dbb1f4a1ef00bce introduced BIF
stubs. The stub functions were not actually remove the loaded
code, but the name of the function in the func_info instruction
was changed to [] to mark it as invalid.
|
|
Commit 64ccd8c9b7a782ca777ca4649dbb1f4a1ef00bce introduced BIF
stubs. The stub functions were not actually remove the loaded
code, but the name of the function in the func_info instruction
was changed to [] to mark it as invalid.
The actual code for module_info(native_addresses) did not need
to be updated (a BIF stub can never have a native address and
a function without a native address will never be included in
the list), but the assertion that the name is an atom is no
no longer correct.
|
|
* maint:
erts: Correct incorrect assertion in erl_alloc_util.c
|
|
The incorrect assertion would fire when '+Muramv true' has been
given, i.e. when a reallocation always forces a move.
Change the assertion to not call the lock checker if the mutex is
not used (because the allocator will only be accessed from a
specific scheduler and thus no lock is needed).
|
|
* bjorn/erts/bif-stubs/OTP-9861:
beam_load.c: Allow stubs for BIFs
beam_load.c: Don't show unnecessary context in errors
beam_load.c: Remove useless call to next_heap_size()
beam_load.c: apply/2 does not need a special case
|
|
|
|
Skip test cases that trace lists or filename if those modules are
native-compiled.
While we are at it, also eliminate two compilation warnings.
|
|
|
|
|
|
* raimo/parallel-make/OTP-9857:
hipe: Fix rtl dependencies
erts: Simplify toplevel makefile due to better dependencies
erts: Fix make omissions for void emulators
erts: Fix dependencies between targets generate and depend
erts: Cleanup dependencies for target generate
erts,tools: Fix parallel make for erts/lib_src
erts: Fix parallel make for emulator zlib
Conflicts:
erts/emulator/Makefile.in
|
|
We want to be able to write type specifications for BIFs in the same
way as for any other function. Currently, the type for BIFs need
to be described in erl_bif_types.
To avoid extending the compiler and Dialyzer with special directives
for providing specifications for BIFs, we have decided to let the
loader accept a local definition for a function which exists as a
BIF. As an example, here is how a stub for lists:reverse/2 can be
defined:
-export([reverse/2]).
-spec reverse([term()], term()) -> [term()].
reverse(_, _) ->
erlang:nif_error(undef).
Essentially, the loader will discard the local definition of reverse/2.
Other functions in the same module must *not* do local calls to a BIF
stub. If a local call to a BIF is found, the loader will refuse to load
the module. That is, the following call is not allowed:
reverse(List) ->
reverse(List, []).
but the following is:
reverse(List) ->
?MODULE:reverse(List, []).
A few words about the implementation.
It turns out to be too complicated to actually discard the BIF
stubs. Although it would be possibly with some jiggery pokery in
ops.tab, the code would be difficult to maintain and it could slow
down loading of modules that don't define BIFs (which are almost
all modules).
Therefore, the stub functions are kept in the loaded code, but
their names in the func_info instruction are invalidated so that
module_info(functions) can filter them out.
|
|
* egil/fix-profiler-pid:
erts: Do not profile profiler pid (non smp)
erts: Do not profile profiler pid (smp)
Revert "erts: Do not profile system profiler pid"
|
|
|
|
* Make generate and depend.mk automatically.
* Do not make depend.mk for targets clean and generate.
* Remove old replaced CREATE_DIRS cruft.
* Fiercer remove by target clean.
* Move depend.mk to Target/Type/Flavor directory.
|
|
* jz/error-logic-efile_sendfile:
erts: minor fix for unnecessary condition
OTP-9872
|
|
* jz/sendfile_chunk_size:
erts: change SENDFILE_CHUNK_SIZE from signed to unsigned
Conflicts:
erts/emulator/drivers/unix/unix_efile.c
OTP-9872
|
|
* raimo/64-bit-efile_drv/OTP-9820:
file_SUITE: Assume 64-bit windows has enough memory
erts: Badarg if port output overflows iov_len
prim_file_SUITE: large_file success depends on wordsize
file_SUITE: Increase timeout for large_file
file_SITE,prim_file_SUITE: Accept old OpenBSD pecularity
prim_file_SUITE: large_write - meaner test data and check result content
file_SUITE: large_write - check mem size before creating huge binary
erts: rewrite efile_writev to handle partial writes correctly
erts: Bugfix - driver_deq freed wrong length due to short type (int)
prim_file_SUITE: Add large_write/1
file_SUITE: Add large_write/1
file_SUITE: Refactor large_file/1
file_SUITE: Fix unix_free/1
|
|
|
|
|
|
This reverts commit 4a8ce05083b9c88b94560f400370dbc656893b6e.
* Above commit has a lock order violation
|
|
|
|
Use a make timestamp file to condense dependencies to some
part(s) of erts/lib_src build results.
|
|
Convert the recursive make for zlib into a make include file.
|
|
* sverk/inet_drv-valgrind-uninitialised:
otp,erts: Add phony valgrind target
erts: Better suppression of uninitialised sctp_sndrcvinfo
|
|
* sverk/hipe-hibernate-sparc-bug:
erts: Make GC tolerate hibernated process without hipe stack
|
|
* sverk/nif_SUITE-skip-threading:
erts: Add missing cleanup to nif_SUITE:threading
erts: Skip nif_SUITE:threading if not supported
|
|
For errors that occur after reading the code chunking, saying
that the error occurred in the last function in the module and
in the instruction int_code_end/0 is just confusing.
|
|
The idea was probably to cause less fragmentation. Even if that would
be true, it is irrelevant because the short-lived allocator that is
used does not have any problems with fragmentation.
In CodeNeed() we will simply double the size of the area used for code
instead of using the next heap size.
|
|
It is wrongly assumed in the BEAM loader that apply/2 is a BIF
and must be treated specially. Also make it clearer in ops.tab
that apply/3 is a BIF, but apply/2 is not.
|
|
|
|
* egil/fix-compiler-warnings:
erts: Use re instead of regexp in testsuite
erts: Remove unused code in testsuites
orber: Use modern list guard in testsuite
orber: Ignore unused variable in orber_tb.erl
xmerl: Ignore unused variable in xmerl_uri.erl
syntax_tool: Add missing type information
hipe: Suppress warnings for unused variables
hipe: Add type information to cfg_info record
tools: Use literal formatting in erl_memory.c
asn1: Remove unused variable in asn1_erl_nif.c
ei: Remove unused variable in ei_format.c
erts: Add missing prototype to DRIVER_INIT
runtime_tools: Fix signedness in trace_ip_drv.c
to_erl: Remove compiler warnings
heart: Suppress compiler warnings
erts: Remove compiler warnings in inet_gethost.c
erts: Remove dead code in inet_gethost.c
erts: Remove dead code
|
|
|
|
* The DRIVER_INIT macro will now produce an prototype for
the driver_init() function in addition to previous
behaviour.
|
|
|
|
|