Age | Commit message (Collapse) | Author |
|
* egil/call-time-trace-patterns:
Fix ops.tab to include i_return_time_trace
Let trace_call_time_SUITE scheduling test be more relaxed
Add documentation for call time breakpoints
Fix bp_hash_put to do hash value after rehash
Extend trace_call_time_SUITE with bif-tests
Fix assertion in trace_pattern for bifs
Teach erlang:system_info/1 to list snifs
Add bif tests to call time trace tests
Teach call time trace patterns to include bifs
Fix BeamInstr code array in export.h
Add trace call_time tests for nifs and bifs
Teach call count tracing to use atomics
Add first phase of trace call time test suite
Add a scheduler array for BpData at BeamInstr[-4]
Add search keys in breakpoints and a searchfunction
Fix BeamInstr for call_time
Teach call_time trace to use intruction pointers
Add return_time trace and PSD deletions
Remove trailing character in beam_bif_load
Fix set_function_break to use correct breakpoint
...
OTP-8677 egil/call-time-trace-patterns
|
|
of schedulers
|
|
Without the instruction defined in ops the interpreter will not
compile when using NO_JUMPTABLE.
|
|
|
|
Documented call time breakpoints in
- erlang:trace_pattern/3
- erlang:trace_info/2
|
|
If a rehash was done the old hash value was used. This was incorrect.
|
|
|
|
|
|
erlang:system_info(snifs) lists all static native implemented
functions. The function presents the lists with three tuple
values containing MFAs [{Module, Function, Arity}, ...].
|
|
|
|
|
|
|
|
|
|
Call count previously used a global lock for accessing and writing
its counter in the breakpoint. This is now changed to atomics instead.
The change will let call count tracing and cprof to scale better
when increasing the number of schedulers.
|
|
|
|
To solve the issue of multiple schedulers constantly updating the
head pointer to the bp data wheel, each scheduler now has its own
entrypoint to the wheel. This head pointer can be updated without
a locking being taken. Previously there were no lock ...
|
|
|
|
|
|
call_time trace will use instruction pointers instead of
breakpoint data pointers. More costly lookup but the bdt
structure might be deallocated, we do not want that.
Remove unnecessary pattern lock.
|
|
|
|
|
|
op_i_time_breakpoint is now used
|
|
Call time breakpoint tracing traces per call trace per process.
- Add hashes to support the extra dimension.
- Teach trace_info/2 to handle the extra information dimension.
|
|
|
|
Initial commit with a new breakpoint instruction and PSD areas
for temporary time storage during tracing.
|
|
erlang:system_info(multi_scheduling) sometimes erroneously returned enabled
when it should have returned blocked.
|
|
Alignment of scheduler data and run queues were adjusted.
|
|
The runtime system will by default bind schedulers to logical processors
using the default_bind bind type if the amount of schedulers are at least
equal to the amount of logical processors configured, binding of schedulers
is supported, and a CPU topology is available at startup.
NOTE: If the Erlang runtime system is the only operating system process
that binds threads to logical processors, this improves the performance of
the runtime system. However, if other operating system processes (as for
example another Erlang runtime system) also bind threads to logical
processors, there might be a performance penalty instead. If this is the
case you, are are advised to unbind the schedulers using the <seealso
marker="erl#+sbt">+sbtu</seealso> command line argument, or by invoking
<seealso
marker="erlang#system_flag_scheduler_bind_type">erlang:system_flag(schedule
r_bind_type, unbound)</seealso>.
|
|
New NIF features:
Send messages from a NIF, or from thread created by NIF, to any local
process (enif_send)
Store terms between NIF calls (enif_alloc_env, enif_make_copy)
Create binary terms with user defined memory management
(enif_make_resource_binary)
|
|
* origin/pan/otp_8579_autoimport_override:
Update preloaded modules
Update primary bootstrap
Remove outcommented code from erl_lint
Make port_command/3 auto-imported
Remove (harmless) warnings about min/max in core applications
Autoimport min/2 and max/2
Improve coverage of erl_int in testcases
Change warning to error for nowarn_bif_clash compiler directive
Add -compile({no_auto_import,[F/A]}) doc to compiler.xml
Add some testcases to compiler to verify that overriding really happens
Return nowarn_bif_clash functionality but with warning
Teach erl_lint to better override BIFs with local functions and imports
Teach compiler to override autoimport with import
First prototype for local functions overriding autoimported
OTP-8579 Local functions should override auto-imported
Local and imported functions now override the autoimported
BIFs when the names clash. The pre R14 behaviour was that
autoimported BIFs would override local functions. To avoid
that old programs change behaviour, the following will
generate an error:
Doing a call without explicit module name to a local function
having a name clashing with the name of an autoimported BIF
that was present (and autoimported) before OTP R14A
Explicitly importing a function having a name clashing with
the name of an autoimported BIF that was present (and
autoimported) before OTP R14A Using any form of the old
compiler directive nowarn_bif_clash
If the BIF was added or autoimported in OTP R14A or later,
overriding it with an import or a local function will only
result in a warning,
To resolve clashes, you can either use the explicit module
name erlang to call the BIF, or you can remove the autoimport
of that specific BIF by using the new compiler directive
-compile({no_auto_import,[F/A]})., which makes all calls to
the local or imported function without explicit module name
pass without warnings or errors.
The change makes it possible to add autoimported BIFs without
breaking or silently changing old code in the future. However
some current code ingeniously utilizing the old behaviour or
the nowarn_bif_clash compiler directive, might need changing
to be accepted by the compiler.
|
|
* pan/unregister_error:
Add possibly missing process lock before unregistering oneself
Keep process lock over trace of unregister
OTP-8663 Unregister may crash VM
Extreme combinations of register/unregister in a highly parallell SMP
application could crash the VM. The error is corrected.
|
|
* pan/otp_8086_ms_grammar:
Add match_specification grammar documentation specifically for ets
OTP-8086 Grammar for match specification describes tracing only
The grammar for match specifications in ERTS users guide only described the
tracing dialect of match specifications. An informal grammar for the ETS
dialect is added.
|
|
|
|
|
|
|
|
|
|
|
|
Import directives still not sorted out!
|
|
* jv/autoimport-binary_to_term_2:
Change binary_to_term/2 to be auto-imported
OTP-8671 jv/autoimport-binary_to_term_2
Now, binary_to_term/2 is auto-imported. This will cause a compile warning
if and only if a module has got a local function with that name.
|
|
See dwShareMode on
http://msdn.microsoft.com/en-us/library/aa363858(VS.85).aspx
|
|
|
|
ethr_rwmutex_tryrlock() acquired and refused to acquire a lock with
inverted logic. The lock was however never acquired in a thread unsafe
manner. (Thanks to JR Zhang for noting this issue)
|
|
Writer preferred pthread read/write locks has been enabled on Linux.
|
|
The number of spinlocks used when implementing atomic fall-backs when no
native atomic implementation is available has been increased from 16 to
1024.
|
|
Port locks could be prematurely destroyed.
|
|
Support for using gcc's built-in functions for atomic memory access has
been added. This functionallity will be used if available and no other
native atomic implementation in ERTS is available.
|
|
Missing memory barriers in erts_poll() could cause the runtime system to
hang indefinitely.
|
|
This BIF was only used by the now broken SAE support.
|
|
The experimental Standalone Erlang (SAE) support based on
Joe Armstrong's work has long been broken. Remove the remaining
code and Makefile rules.
|
|
|