Age | Commit message (Collapse) | Author | |
---|---|---|---|
2014-02-07 | compiler: Add debug listing after sys_core_fold | Björn-Egil Dahlberg | |
2014-02-07 | Run sys_core_fold twice if any inliner is used | Anthony Ramine | |
2014-02-07 | compiler: Fix codegen multiple updates for Maps | Björn-Egil Dahlberg | |
This fixes an error on multiple updates optimization for map pairs. The error was introduced with moving to term order in Maps. This also fixes an error where register life time was lost for values and could result in erroneuos values being emitted in for map pairs. Simplified v3_codegen by moving multiple update optimizations to v3_kernel. | |||
2014-02-07 | erts,compiler: Correct and amend tests for Maps | Björn-Egil Dahlberg | |
Faulty test for maps update | |||
2014-02-07 | Merge branch 'hsv/using_lists_droplast' | Henrik Nord | |
* hsv/using_lists_droplast: lib/mnesia/test/ - Replace reverse(tl(reverse(L))) with lists:droplast/1 lib/ssh - Replace reverse(tl(reverse(L))) with lists:droplast/1 lib/wx - Replace reverse(tl(reverse(L))) with lists:droplast/1 Use lists:droplast/1 in orber/orber_interceptors.erl Import and use lists:droplast/1 in v3_core/v3_kernel OTP-11678 OTP-11677 | |||
2014-02-07 | Merge branch 'egil/erts/fix-maps-beam_load' | Björn-Egil Dahlberg | |
* egil/erts/fix-maps-beam_load: compiler: Update map_SUITE with error case test erts: Maps must fail on exact updates of empty Maps erts: Fix Maps for beam_load | |||
2014-02-07 | compiler: Update map_SUITE with error case test | Björn-Egil Dahlberg | |
M#{ key := V } should fail when M is not a Map | |||
2014-02-06 | Merge branch 'bjorn/compiler/applying-binary-crash/OTP-11672' | Björn Gustavsson | |
* bjorn/compiler/applying-binary-crash/OTP-11672: beam_bsm: Eliminate emulator crash when a binary is called beam_validator: Validate the "fun" argument for a call_fun/1 instruction | |||
2014-02-06 | Merge branch 'bjorn/compiler/optimizations/OTP-11584' | Björn Gustavsson | |
* bjorn/compiler/optimizations/OTP-11584: sys_core_fold: Prevent case expressions from being evaluated twice sys_core_fold_SUITE: For cleanliness, move id/1 to the end | |||
2014-02-05 | beam_bsm: Eliminate emulator crash when a binary is called | Björn Gustavsson | |
We must not do the delayed binary creation optimization if the code attempts to call the matched out binary. Calling a matchstate will crash the run-time system. Reported-by: Loïc Hoguin | |||
2014-02-05 | beam_validator: Validate the "fun" argument for a call_fun/1 instruction | Björn Gustavsson | |
The fun argument for a call_fun/1 instruction was not validated. | |||
2014-02-05 | Merge branch 'bjorn/eep37/OTP-11537' | Björn Gustavsson | |
* bjorn/eep37/OTP-11537: Issue a warning when a named fun is constructed but not used | |||
2014-02-04 | sys_core_fold: Prevent case expressions from being evaluated twice | Björn Gustavsson | |
In e12b7d5331c58b41db06cadfa4af75b78b62a2b1, a bug was introduced that would cause case expressions to be evaluated more than once if there were aliases in the pattern. Example: X = Y = io:put_chars("some chars"), {X,Y} That would be rewritten to code similar to (but in Core Erlang): X = io:put_chars("some chars"), X = io:put_chars("some chars"), {X,Y} Make sure that we only evalute the expression once by doing a transformation similar to (but in Core Erlang): NewVar = io:put_chars("some chars"), X = NewVar, Y = NewVar, {X,Y} Reported-by: José Valim Reported-by: Anthony Ramine | |||
2014-02-04 | sys_core_fold_SUITE: For cleanliness, move id/1 to the end | Björn Gustavsson | |
2014-01-31 | compiler: Teach beam_disasm has_map_field instruction | Björn-Egil Dahlberg | |
2014-01-31 | compiler: Fold binary Map key patterns to literals | Björn-Egil Dahlberg | |
2014-01-31 | v3_core: Annotate list comprehensions to help out dialyzer | Björn Gustavsson | |
2014-01-31 | compiler: Strengthen listings tests | Björn-Egil Dahlberg | |
2014-01-31 | compiler: Strengthen Maps tests | Björn-Egil Dahlberg | |
2014-01-30 | Issue a warning when a named fun is constructed but not used | Björn Gustavsson | |
2014-01-29 | compiler: Add core compile test for maps | Björn-Egil Dahlberg | |
2014-01-29 | compiler: Fix core parse for Maps | Björn-Egil Dahlberg | |
2014-01-29 | compiler: Fixup #map_pair{} spec | Björn-Egil Dahlberg | |
2014-01-29 | compiler: Update inliner tests | Björn-Egil Dahlberg | |
2014-01-29 | compiler: Squash #c_map_pair_*{} to #c_map_pair{} | Björn-Egil Dahlberg | |
Simplify compiler internals and parsing of core format. | |||
2014-01-29 | compiler: Squash #k_map_pair_*{} to #k_map_pair{} | Björn-Egil Dahlberg | |
Simplify compiler internals for kernel passes. | |||
2014-01-29 | compiler: Fix term order compiler for maps | Björn-Egil Dahlberg | |
2014-01-28 | compiler: Rename map pattern to proper name | Björn-Egil Dahlberg | |
2014-01-28 | compiler: Add Maps types to cerl | Björn-Egil Dahlberg | |
2014-01-28 | compiler: Format stacktrace on error | Björn-Egil Dahlberg | |
2014-01-28 | compiler: Teach Maps to beam_disasm | Björn-Egil Dahlberg | |
2014-01-28 | compiler: Fix v3_core for map update syntax | Björn-Egil Dahlberg | |
Make map update expressions safe, i.e. (foo())#{ k1 := 1 } | |||
2014-01-28 | compiler: Fix get_map_element bug with allocate | Björn-Egil Dahlberg | |
The instruction get_map_element has a faillabel so you may not use the instruction within a allocate/deallocate block. | |||
2014-01-28 | compiler: Test Maps inlining | Björn-Egil Dahlberg | |
2014-01-28 | compiler: Teach Maps understanding to inliner | Björn-Egil Dahlberg | |
2014-01-28 | compiler: Implement different instructions for => and := | Björn Gustavsson | |
2014-01-28 | Pass the map pair operators through to the v3_codegen pass | Björn Gustavsson | |
2014-01-28 | sys_core_fold: Remove optimization that has become invalid | Björn Gustavsson | |
With the => and := operators for updating maps, this optimization is no longer valid. | |||
2014-01-28 | compiler: Implement support for exact Op in Maps | Björn-Egil Dahlberg | |
The syntax is handled upto v3_kernel where it is reduced to previous behaviour for construction and updates. Meaning, the ':=' operator is handled exactly as '=>' operator. | |||
2014-01-28 | Extend representation for maps in Core Erlang | Björn-Egil Dahlberg | |
2014-01-28 | Update erl_lint, erl_expand_records, sys_pre_expand for Maps | Björn-Egil Dahlberg | |
Update erlang lint and syntax expand for #{ K := V } | |||
2014-01-28 | erts: Add the type-testing guard BIF is_map/1 | Björn-Egil Dahlberg | |
To add a type-testing guard BIF, the following steps are needed: * The BIF itself is added to bif.tab (note that it should be declared using "ubif", not "bif"), and its implementation to erl_bif_op.c. * erl_internal must be modified in 3 places: The type test must be recognized as guard BIF, as a type test, and it must be auto-imported. * There must be an instruction that implements the same type test as the BIF (it will be used in guards). beam_utils:bif_to_test/3 must be updated to recognize the new guard BIF. | |||
2014-01-28 | compiler: Fix sorted keys in put_map instruction | Björn-Egil Dahlberg | |
All pairs in a Map needs to be in strict ascending key order. | |||
2014-01-28 | compiler: Fix multiple same keys | Björn-Egil Dahlberg | |
2014-01-28 | compiler: Check for duplicate key literals in Map | Björn-Egil Dahlberg | |
If a literal key already is present in a Map update the latter should be used. Warn for previous duplicates in the Map. | |||
2014-01-28 | compiler: Handle literals, not just atoms, as keys in maps | Björn-Egil Dahlberg | |
2014-01-28 | compiler: Fix no basic blocks for maps | Björn-Egil Dahlberg | |
2014-01-28 | compiler: Fix stack register reordering | Björn-Egil Dahlberg | |
Can now handle {list [reg()]} elements in instructions. | |||
2014-01-28 | Implement support for maps in the compiler | Björn Gustavsson | |
To make it possible to build the entire OTP system, also define dummys for the instructions in ops.tab. | |||
2014-01-28 | Introduce a representation for maps in Core Erlang | Björn Gustavsson | |