aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam
AgeCommit message (Collapse)Author
2012-02-21erts: Refactor code_ixSverker Eriksson
Move implementation from beam_load into new file code_ix.c and module.c and make some function inline.
2012-02-21erts: Document code_ix interfaceSverker Eriksson
2012-02-21erts: Fallback to blocking upgrade when tracing is enabledSverker Eriksson
2012-02-21erts: Keep count of number of global traced functions per moduleSverker Eriksson
2012-02-21erts: Move number-of-breakpoint counter from code to Module structSverker Eriksson
The is a refactoring in preparation to add a counter in Module struct for export entry tracing. It is nicer if the two are kept together.
2012-02-21erts: Fix print-bug in lock checker on debug-vmSverker Eriksson
2012-02-21erts: Cleanup code loadingSverker Eriksson
2012-02-21erts: Rename "loader" code_ix as "staging" code_ixSverker Eriksson
Staging is a better and more general name as does not necessary need to involve code loading (can be deletion, tracing, etc).
2012-02-21erts: Fix purge of module with loaded nif librarySverker Eriksson
Easy fallback solution that goes single threaded if the module to be purged has a loaded nif lib.
2012-02-21erts: Remove secondary_export_tableSverker Eriksson
2012-02-21erts: Refactor new function index_put_entry()Sverker Eriksson
Same as index_put() but returns pointer to entry instead of index integer.
2012-02-21erts: Refactor export entry allocationSverker Eriksson
Use a more general approach that does not assume in which order the table entries in a blob are allocated and freed.
2012-02-21erts: Fix case of breakpoint when deleting moduleSverker Eriksson
2012-02-21erts: Cleanup in export.cSverker Eriksson
2012-02-21erts: Rename erts_load_module to erts_preload_moduleSverker Eriksson
As it can only be used at initialization for preloading
2012-02-21erts: Call erts_export_consolidate automaticallySverker Eriksson
Renamed merge_secondary_table and called by export_start_load
2012-02-21First try at non-blocking code loading!Sverker Eriksson
Implemented some code_ix locks and commented calls to erts_smp_thr_progress_block()
2012-02-21beam_ranges: Make ranges safe with multi-scheduling activeBjörn Gustavsson
2012-02-21BEAM loader: Break out handling of ranges into beam_ranges.cBjörn Gustavsson
Having the entire implementation of range handling (address table) in one source file will help when we'll need to update the ranges without stopping all schedulers in the next commit.
2012-02-21erts: Remove unused erts_put_fun_entry2 declarationSverker Eriksson
2012-02-21erts: Add abort logic to export tablesSverker Eriksson
2012-02-21erts: Fix code_ix handling and locking for some more bifsSverker Eriksson
2012-02-21erts: Multiple module tables using code_ixSverker Eriksson
2012-02-21erts: Use several addresses in each ExportSverker Eriksson
2012-02-21erts: Multiple export tab's using code_ixSverker Eriksson
Still blocking code loading
2012-02-21erts: First stab at code_ix interface and beam_catches using itSverker Eriksson
Code loading still blocking
2012-02-21erts: First refactor step of export tableSverker Eriksson
2012-02-21erts: Make use of def_lambdas optimization during loadingSverker Eriksson
The default array was defined but not used.
2012-02-21erts: Refactor new helper function erts_init_trap_exportSverker Eriksson
2012-02-21erts: Refactor Module structSverker Eriksson
2012-02-20Merge branch 'maint'Rickard Green
* maint: Reduce thread progress read operations in handle_aux_work() Misc memory barrier fixes
2012-02-20Merge branch 'rickard/barriers/OTP-9922' into maintRickard Green
* rickard/barriers/OTP-9922: Reduce thread progress read operations in handle_aux_work() Misc memory barrier fixes
2012-02-19Reduce thread progress read operations in handle_aux_work()Rickard Green
2012-02-19Misc memory barrier fixesRickard Green
- Document barrier semantics - Introduce ddrb suffix on atomic ops - Barrier macros for both non-SMP and SMP case - Make the thread progress API a bit more intuitive
2012-02-16Merge branch 'maint'Henrik Nord
Conflicts: lib/hipe/cerl/erl_bif_types.erl lib/stdlib/doc/src/binary.xml
2012-02-16Merge branch 'jz/erts-remove-unused-var' into maintHenrik Nord
* jz/erts-remove-unused-var: erts: Remove unused variable OTP-9926
2012-02-16Merge branch 'rc/spell-registered' into maintHenrik Nord
* rc/spell-registered: Correct spelling of "registered" in various places in the source code OTP-9925
2012-02-14Merge branch 'maint'Henrik Nord
2012-02-14Merge branch 'jz/reduce-smp-locking-time-range' into maintHenrik Nord
* jz/reduce-smp-locking-time-range: erts: reduce smp locking time range in erts_garbage_collect OTP-9912
2012-02-07Merge branch 'maint'Patrik Nyblom
Conflicts: erts/doc/src/erlang.xml erts/preloaded/ebin/erlang.beam
2012-02-07Merge branch 'dgud/sched-work-time/OTP-9858' into maintPatrik Nyblom
* dgud/sched-work-time/OTP-9858: emulator: Document and test scheduler_wall_time Implement statistics(scheduler_wall_time)
2012-02-01beam_bp: Fix faulty assertion in erts_find_local_func()Björn Gustavsson
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.
2012-02-01beam_load: Fix faulty assertion in module_info(native_addresses)Björn Gustavsson
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.
2012-01-31Merge branch 'maint'Björn Gustavsson
* maint: erts: Correct incorrect assertion in erl_alloc_util.c
2012-01-31erts: Correct incorrect assertion in erl_alloc_util.cBjörn Gustavsson
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).
2012-01-27Merge branch 'bjorn/erts/bif-stubs/OTP-9861'Björn Gustavsson
* 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
2012-01-26Implement statistics(scheduler_wall_time)Rickard Green
2012-01-25Fix crash in trace_info({M,F,A}, Flags) when M:F/A has native codeBjörn Gustavsson
2012-01-24beam_load.c: Allow stubs for BIFsBjörn Gustavsson
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.
2012-01-24Merge branch 'egil/fix-profiler-pid' into maintBjörn-Egil Dahlberg
* 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"