Age | Commit message (Collapse) | Author | |
---|---|---|---|
2014-01-29 | erts: Change 'size' argument of enif_get_map_size from int* to size_t* | Sverker Eriksson | |
2014-01-29 | erts: Fix compile error for halfword emulator | Sverker Eriksson | |
2014-01-29 | erts: Add more tests for the NIF map API | Sverker Eriksson | |
2014-01-29 | erts: Optimize struct ErlNifMapIterator | Sverker Eriksson | |
No need to use 64bit integers on 32bit machines. | |||
2014-01-29 | erts: Fix map iterator bug when reverting from end of map position | Sverker Eriksson | |
and simplify code by ignoring h_limit which is always zero. | |||
2014-01-29 | erts: Simplify some map iterator code | Sverker Eriksson | |
2014-01-29 | erts: Remove use of h_limit which is always zero. | Sverker Eriksson | |
2014-01-29 | erts: Let enif_map_iterator_next/prev return 0 to signal end of map. | Sverker Eriksson | |
2014-01-29 | erts: Do not allow map iterator created without map | Sverker Eriksson | |
2014-01-29 | erts: Increase version for NIF API and reject experimental v2.5 | Sverker Eriksson | |
2014-01-29 | erts: Remove enif_find_map_value | Sverker Eriksson | |
as it does the same thing as enif_get_map_value. Replace with placeholder to be ABI backward compatible on Windows as long as enif_find_map_value is not called. | |||
2014-01-29 | Update map_SUITE to test "unsorted" encoded maps | Björn-Egil Dahlberg | |
2014-01-29 | erts: Let erlang:binary_to_term/1 handle unsorted Maps | Björn-Egil Dahlberg | |
Maps may be encoded with keys in arbitrary order. This is fine, as long as keys are unique. | |||
2014-01-29 | Update map_SUITE to respect term order | Björn-Egil Dahlberg | |
2014-01-29 | erts: Optimize erts_map_update/remove | Sverker Eriksson | |
to not continue comparing keys once it has been found. | |||
2014-01-29 | erts: Fix bug in erts_maps_remove | Sverker Eriksson | |
HRelease was called with wrong arguments and left garbage on heap when key was not found. | |||
2014-01-29 | erts: Update maps serializing to use term order | Björn-Egil Dahlberg | |
* erlang:term_to_binary/1 * erlang:binary_to_term/1 | |||
2014-01-29 | erts: Update maps instructions to use term order | Björn-Egil Dahlberg | |
Maps internally uses term order to store keys in an ordered fashion. | |||
2014-01-29 | erts: Update maps BIFs to use term order | Björn-Egil Dahlberg | |
Maps internally uses term order to store keys in an ordered fashion. | |||
2014-01-29 | erts: Add BIF erts_internal:cmp_term/2 | Björn-Egil Dahlberg | |
Compares terms where integer() < float(). | |||
2014-01-29 | erts: Add cmp_term to compare | Björn-Egil Dahlberg | |
Uses total order of types meaning int < float | |||
2014-01-29 | erts: NIFs Map API fixup | Björn-Egil Dahlberg | |
2014-01-29 | erts: Test Maps with NIFs | Björn-Egil Dahlberg | |
2014-01-29 | erts: Add NIFs for Maps | Björn-Egil Dahlberg | |
- int enif_is_map(ErlNifEnv* env, ERL_NIF_TERM map) - int enif_get_map_size(ErlNifEnv *env, ERL_NIF_TERM, int*) - ERL_NIF_TERM enif_make_new_map(ErlNifEnv *env) - int enif_make_map_put(ErlNifEnv *env, ERL_NIF_TERM map_in, ERL_NIF_TERM key, ERL_NIF_TERM value, ERL_NIF_TERM* map_out) - int enif_get_map_value(ErlNifEnv *env, ERL_NIF_TERM map, ERL_NIF_TERM key, ERL_NIF_TERM* value) - int enif_find_map_value(ErlNifEnv *env, ERL_NIF_TERM map, ERL_NIF_TERM key, ERL_NIF_TERM* value) - int enif_make_map_update(ErlNifEnv *env, ERL_NIF_TERM map_in, ERL_NIF_TERM key, ERL_NIF_TERM value, ERL_NIF_TERM* map_out) - int enif_make_map_remove(ErlNifEnv *env, ERL_NIF_TERM map_in, ERL_NIF_TERM key, ERL_NIF_TERM* map_out) - int enif_map_iterator_create(ErlNifEnv *env, ERL_NIF_TERM map, ErlNifMapIterator *iter) - void enif_map_iterator_destroy(ErlNifEnv *env, ErlNifMapIterator *iter) - int enif_map_iterator_next(ErlNifEnv *env, ErlNifMapIterator *iter) - int enif_map_iterator_get_pair(ErlNifEnv *env, ErlNifMapIterator *iter, ERL_NIF_TERM *key, ERL_NIF_TERM *value) | |||
2014-01-28 | erts: Add tests for Map update on expressions | Björn-Egil Dahlberg | |
(foo())#{ k1 := V1, k2 => V2 } | |||
2014-01-28 | erts: Add tests for non BIFs in Maps module | Björn-Egil Dahlberg | |
* maps:without/2 * maps:foldl/3 * maps:foldr/3 * maps:map/2 * maps:size/1 | |||
2014-01-28 | erts,stdlib: Change map module name to maps | Björn-Egil Dahlberg | |
Name conforms to EEP. | |||
2014-01-28 | erts: Fix map_SUITE match spec tests | Björn-Egil Dahlberg | |
2014-01-28 | Add tests for pditc, ets and tracing | Lukas Larsson | |
2014-01-28 | erts,stdlib: Teach matchspec compiler map guards | Björn-Egil Dahlberg | |
2014-01-28 | erts: Remove erlang:size/1 test from map_SUITE | Björn-Egil Dahlberg | |
2014-01-28 | stdlib: Deny variables as keys and disallow ':=' in map construction | Björn-Egil Dahlberg | |
In the current iteration of Maps we should deny *any* variables in Map keys. | |||
2014-01-28 | erts: Update Maps erlang:phash2/1 tests | Björn-Egil Dahlberg | |
2014-01-28 | erts: erlang:phash2 should hash Maps independent of order | Björn-Egil Dahlberg | |
2014-01-28 | erts: Add Map tests for erlang:phash/2 | Björn-Egil Dahlberg | |
2014-01-28 | erts: Add Maps to erlang:phash/2 and erlang:hash/2 | Björn-Egil Dahlberg | |
The hashing a map in these functions uses the same strategy as the other terms. The exception being a prime number with size so we do not get erlang:phash(#{}) -> 1 which would be the same as erlang:phash({}) and erlang:phash(<<>>). Same argument for erlang:hash/1. | |||
2014-01-28 | erts: Add Map tests for hashing and external format | Björn-Egil Dahlberg | |
- Update map_SUITE with hash and encode tests - Update map_SUITE with external format decode tests - Update map_SUITE with map:to_list/1 and map:from_list/1 tests | |||
2014-01-28 | erts: Teach term_to_binary/1 and binary_to_term/1 Map encoding | Björn-Egil Dahlberg | |
2014-01-28 | erts: Fixup map instructions for halfword | Björn-Egil Dahlberg | |
2014-01-28 | compiler: Implement different instructions for => and := | Björn Gustavsson | |
2014-01-28 | erts: Conform map_SUITE to extended syntax | Björn-Egil Dahlberg | |
2014-01-28 | erts: Add testsuite for Maps | Björn-Egil Dahlberg | |
2014-01-28 | erts: Introduce more Maps BIFs | Björn-Egil Dahlberg | |
* map:remove/2 * map:keys/1 * map:values/1 * map:is_key/2 * map:update/3 - Equivalent to ':=' operator in #{ K := V } maps. * map:from_list/1 - map:from_list/1 takes any unsorted key/value list, [{K,V}], and produces a map. Duplicate keys are removed. The latest key is kept. * map:find/2 - Searches for a pair that *equals* input key. * map:merge/2 - Merge two maps to one map. | |||
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 | erts: Add the size-testing guard BIF map_size/1 | Björn-Egil Dahlberg | |
2014-01-28 | erts: Add phash2 Map functionality | Björn-Egil Dahlberg | |
2014-01-28 | erts: Initial Map instructions, type and structure | Björn-Egil Dahlberg | |
2014-01-28 | erts: Maps beam-instruction definitions | Björn Gustavsson | |
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 | BEAM loader: Support preservation of extra operand in transforms | Björn Gustavsson | |
It was not possible to preserve extra arguments in transformations. The following (hypothetical) example will now work: some_op Lit=c SizeArg Rest=* => move Lit x | some_op x SizeArg Rest |