Age | Commit message (Collapse) | Author | |
---|---|---|---|
2018-06-18 | Update copyright year | Henrik Nord | |
2017-11-30 | Add syntax in try/catch to retrieve the stacktrace directly | Björn Gustavsson | |
This commit adds a new syntax for retrieving the stacktrace without calling erlang:get_stacktrace/0. That allow us to deprecate erlang:get_stacktrace/0 and ultimately remove it. The problem with erlang:get_stacktrace/0 is that it can keep huge terms in a process for an indefinite time after an exception. The stacktrace can be huge after a 'function_clause' exception or a failed call to a BIF or operator, because the arguments for the call will be included in the stacktrace. For example: 1> catch abs(lists:seq(1, 1000)). {'EXIT',{badarg,[{erlang,abs, [[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20|...]], []}, {erl_eval,do_apply,6,[{file,"erl_eval.erl"},{line,674}]}, {erl_eval,expr,5,[{file,"erl_eval.erl"},{line,431}]}, {shell,exprs,7,[{file,"shell.erl"},{line,687}]}, {shell,eval_exprs,7,[{file,"shell.erl"},{line,642}]}, {shell,eval_loop,3,[{file,"shell.erl"},{line,627}]}]}} 2> erlang:get_stacktrace(). [{erlang,abs, [[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22, 23,24|...]], []}, {erl_eval,do_apply,6,[{file,"erl_eval.erl"},{line,674}]}, {erl_eval,expr,5,[{file,"erl_eval.erl"},{line,431}]}, {shell,exprs,7,[{file,"shell.erl"},{line,687}]}, {shell,eval_exprs,7,[{file,"shell.erl"},{line,642}]}, {shell,eval_loop,3,[{file,"shell.erl"},{line,627}]}] 3> We can extend the syntax for clauses in try/catch to optionally bind the stacktrace to a variable. Here is an example using the current syntax: try Expr catch C:E -> Stk = erlang:get_stacktrace(), . . . In the new syntax, it would look like: try Expr catch C:E:Stk -> . . . Only a variable (not a pattern) is allowed in the stacktrace position, to discourage matching of the stacktrace. (Matching would also be expensive, because the raw format of the stacktrace would have to be converted to the cooked form before matching.) Note that: try Expr catch E -> . . . is a shorthand for: try Expr catch throw:E -> . . . If the stacktrace is to be retrieved for a throw, the 'throw:' prefix must be explicitly included: try Expr catch throw:E:Stk -> . . . | |||
2017-07-17 | erts: Replace usage of all erts_smp prefixes to just erts | Lukas Larsson | |
2017-07-17 | erts: Cleanup removal of non-smp emulators | Lukas Larsson | |
2017-01-12 | Support for dirty BIFs | Rickard Green | |
2016-03-15 | update copyright-year | Henrik Nord | |
2015-06-18 | Change license text to APLv2 | Bruce Yinhe | |
2014-03-07 | Add a BIF that only returns the atom ok | Yiannis Tsiouris | |
A call in llvm_fix_pinned_regs/0 is inserted in the beginning of LLVM unwind blocks (i.e. code executed when an LLVM 'invoke' call triggers an exception) in order to get the BP and SP registers right. This is needed because LLVM exception handling doesn't provide the return value (that also contains the values for these registers, as defined in the HiPE Calling Convention for LLVM) on the 'landingpad's. | |||
2014-02-24 | erts: Make source file info available in lc | Lukas Larsson | |
2014-01-28 | erts: Initial Map instructions, type and structure | Björn-Egil Dahlberg | |
2012-08-31 | Merge branch 'maint' | Björn-Egil Dahlberg | |
Conflicts: lib/diameter/autoconf/vxworks/sed.general xcomp/README.md | |||
2012-08-31 | Update copyright years | Björn-Egil Dahlberg | |
2012-06-04 | Merge branch 'maint' | Lukas Larsson | |
* maint: Remove stale code for hybrid heap and incremental GC Remove the hipe_bifs:show_message_area/0 BIF Remove support for erlang:system_info(global_heaps_size) Remove the erlang:garbage_collect_message_area/0 BIF Remove workarounds for hybrid and shared heaps in test suites Conflicts: erts/doc/src/erlang.xml erts/emulator/beam/erl_message.c erts/emulator/beam/erl_process.c erts/emulator/beam/erl_process.h erts/emulator/hipe/hipe_bif2.tab lib/hipe/cerl/erl_bif_types.erl | |||
2012-05-10 | Remove the hipe_bifs:show_message_area/0 BIF | Björn Gustavsson | |
2012-02-09 | hipe,erts: Debug support for native call trace | Sverker Eriksson | |
2011-10-26 | erts-hipe: Enable debug compiled hipe-VM with lock checker | Sverker Eriksson | |
Add hipe_debug_bif_wrapper() as a wrapper for every BIF called by native code. | |||
2011-05-11 | lock checking fix in hipe_bif2.c | Sverker Eriksson | |
2011-04-05 | Merge branch 'ks/hipe-ppc64' into dev | Henrik Nord | |
* ks/hipe-ppc64: Enable HiPE by default when compiling for PPC64 Translate RTL to PPC code on PPC64 too Changes in ppc files for PPC64 Additions for the PPC64 backend Changes for the PPC64 backend Added loader for ppc64 New files for the 64-bit backends Cleanup tags OTP-9198 | |||
2011-03-11 | Update copyright years | Björn-Egil Dahlberg | |
2011-02-14 | Cleanup tags | Kostis Sagonas | |
2011-01-31 | Remove hipe constants pool | Paul Guyot | |
Hipe constants used to be allocated within a single, fixed-size pool for interaction with the garbage collector. However, the garbage collector no longer depends on constants being allocated within a single pool, and the fixed size of the pool both meant unnecessary allocations on most deployments and crashes on deployments requiring more constants. The code was simplified to directly invoke erts_alloc. Debugging and undocumented function hipe_bifs:show_literals/0 was removed (it returned true and output text to the console), and debugging and undocumented function hipe_bifs:constants_size/0 was rewritten with a global to count the size of allocated constants. | |||
2009-11-20 | The R13B03 release.OTP_R13B03 | Erlang/OTP | |