summaryrefslogtreecommitdiff
path: root/erts/emulator/beam/beam_catches.c
Commit message (Collapse)AuthorAgeFilesLines
* Update copyright yearRickard Green2021-12-131-1/+1
|
* erts: Replace `BeamInstr*` with `ErtsCodePtr` (void*)John Högberg2020-11-121-20/+34
| | | | | Using `BeamInstr*` means that all code must be word-aligned even when we're not pointing at BEAM opcodes, which is rather wasteful.
* jit: Make all code read-only, dual-mapping writable pagesJohn Högberg2020-11-051-3/+3
| | | | | | | | This allows the JIT to be used on systems that enforce a W^X policy. To help catch related errors at compile time, all code pointers have been marked `const`.
* erts: Implement the BeamAsm JITLukas Larsson2020-09-221-1/+14
| | | | | | Co-authored-by: John Högberg <john@erlang.org> Co-authored-by: Dan Gudmundsson <dgud@erlang.org> Co-authored-by: Björn Gustavsson <bjorn@erlang.org>
* update copyright-yearHenrik Nord2016-03-151-1/+1
|
* erts: Change erl_exit into erts_exitSverker Eriksson2016-02-241-3/+3
| | | | | | | | | | | | | | | | | This is mostly a pure refactoring. Except for the buggy cases when calling erlang:halt() with a positive integer in the range -(INT_MIN+2) to -INT_MIN that got confused with ERTS_ABORT_EXIT, ERTS_DUMP_EXIT and ERTS_INTR_EXIT. Outcome OLD erl_exit(n, ) NEW erts_exit(n, ) ------- ------------------- ------------------------------------------- exit(Status) n = -Status <= 0 n = Status >= 0 crashdump+abort n > 0, ignore n n = ERTS_ERROR_EXIT < 0 The outcome of the old ERTS_ABORT_EXIT, ERTS_INTR_EXIT and ERTS_DUMP_EXIT are the same as before (even though their values have changed).
* Change license text to APLv2Bruce Yinhe2015-06-181-9/+10
|
* erts: Correct some printf type formattingSverker Eriksson2013-02-201-4/+3
| | | | Using %p, %bpx and %bex for pointers, UWords and Uint.
* Update copyright yearsBjörn-Egil Dahlberg2013-01-251-1/+1
|
* erts: Cleanup non-blocking loadSverker Eriksson2012-02-211-16/+18
|
* erts: Rename "loader" code_ix as "staging" code_ixSverker Eriksson2012-02-211-7/+7
| | | | | Staging is a better and more general name as does not necessary need to involve code loading (can be deletion, tracing, etc).
* erts: First stab at code_ix interface and beam_catches using itSverker Eriksson2012-02-211-32/+96
| | | | Code loading still blocking
* Update copyright yearsBjörn-Egil Dahlberg2011-12-091-1/+1
|
* erts: Teach VM to reallocate beam catch tableBjörn-Egil Dahlberg2011-11-101-20/+26
| | | | | | | | | Previously this table were statically allocated to 16*1024 entries. Now the default size is 1024 entries but that is doubled each time the limit is reached. Theoretical upper limit is 2^26 entries (the remaining bits on a catch datatype) in a 32 bit system.
* Merge branch 'pan/otp_8332_halfword' into devErlang/OTP2010-03-221-9/+9
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * pan/otp_8332_halfword: Teach testcase in driver_suite the new prototype for driver_async wx: Correct usage of driver callbacks from wx thread Adopt the new (R13B04) Nif functionality to the halfword codebase Support monitoring and demonitoring from driver threads Fix further test-suite problems Correct the VM to work for more test suites Teach {wordsize,internal|external} to system_info/1 Make tracing and distribution work Turn on instruction packing in the loader and virtual machine Add the BeamInstr data type for loaded BEAM code Fix the BEAM dissambler for the half-word emulator Store pointers to heap data in 32-bit words Add a custom mmap wrapper to force heaps into the lower address range Fit all heap data into the 32-bit address range
| * Add the BeamInstr data type for loaded BEAM codePatrik Nyblom2010-03-101-4/+4
| | | | | | | | | | | | | | For cleanliness, use BeamInstr instead of the UWord data type to any machine-sized words that are used for BEAM instructions. Only use UWord for untyped words in general.
| * Store pointers to heap data in 32-bit wordsPatrik Nyblom2010-03-101-4/+4
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | Store Erlang terms in 32-bit entities on the heap, expanding the pointers to 64-bit when needed. This works because all terms are stored on addresses in the 32-bit address range (the 32 most significant bits of pointers to term data are always 0). Introduce a new datatype called UWord (along with its companion SWord), which is an integer having the exact same size as the machine word (a void *), but might be larger than Eterm/Uint. Store code as machine words, as the instructions are pointers to executable code which might reside outside the 32-bit address range. Continuation pointers are stored on the 32-bit stack and hence must point to addresses in the low range, which means that loaded beam code much be placed in the low 32-bit address range (but, as said earlier, the instructions themselves are full words). No Erlang term data can be stored on C stacks (enforced by an earlier commit). This version gives a prompt, but test cases still fail (and dump core). The loader (and emulator loop) has instruction packing disabled. The main issues has been in rewriting loader and actual virtual machine. Subsystems (like distribution) does not work yet.
* The R13B03 release.OTP_R13B03Erlang/OTP2009-11-201-0/+102