aboutsummaryrefslogtreecommitdiffstats
path: root/lib/hipe
AgeCommit message (Collapse)Author
2010-11-29Fix type information of 'file' and 'code' modulesKostis Sagonas
Dialyzer for a long time now has had hard-coded type information about key functions of the 'file' and 'code' modules in 'erl_bif_types'. Some of this information was not up-to-date according to the published Erlang/OTP documentation, while some other part contained small errors. Now that specs are available, this information should be moved to the corresponding files, not be hard-coded in erl_bif_types. This change takes out all information for the 'file' module and fixes some small errors in type information for the 'code' module.
2010-11-22Merge branch 'ks/file_open-mode' into devBjörn Gustavsson
* ks/file_open-mode: Add the {encoding, _} options to file:open/2's modes
2010-11-22Merge branch 'ks/hipe-patches' into devBjörn Gustavsson
* ks/hipe-patches: hipe: Update types and specs
2010-11-22hipe: Update types and specsKostis Sagonas
2010-11-22erl_types: Fix pretty rare crashes and an infinite loopKostis Sagonas
- Fixed pretty rare crash when taking the infimum of two tuple_sets (initial fix by Kostis Sagonas but then a better fix was provided by Stavros Aronis and this is the one adopted). - Fixed pretty rare crash when using parameterized types containing unbound variables (thanks to Nicolas Trangez for reporting it). - Fixed pretty rare infinite loop when refining the types of an SCC whose functions all returned none() (thanks to Stavros Aronis).
2010-10-29Merge branch 'ks/rec-erl_types' into devBjörn Gustavsson
* ks/rec-erl_types: Deeper unfolding of recursive types
2010-10-29Deeper unfolding of recursive typesKostis Sagonas
The change of taking out some hard-coded information about the file module uncovered that the unfolding of recursive types was probably too shallow. This has been fixed by unfolding it until a deeper limit (REC_TYPE_LIMIT). While at erl_types.erl also did some cleanup changes and fixed an erroneous io:format message.
2010-10-20hipe: Add translation of BIFs with arity threeKostis Sagonas
2010-10-14Add the {encoding, _} options to file:open/2's modesKostis Sagonas
Although the {encoding, encoding()} set of options is documented in the manual page of the 'file' module, they do not appear in the Mode description on that page nor in the mode() type declaration. The patch adds this information in both the code of the module and the documentation of the module. To avoid duplication, the declaration of the encoding() type is added to the 'unicode' module where it most probably belongs. While at it, added a proper declaration for posix(), took out the now superfluous information about the types of file:open/2 from the erl_bif_types module, and corrected the return type of file:open/2 so that it corresponds to the published documentation.
2010-10-06Merge branch 'ks/ets-update-counter' into devBjörn Gustavsson
* ks/ets-update-counter: Fix type of ets:update_counter/3 to correspond with the documentation
2010-10-02Fix type of ets:update_counter/3 to correspond with the documentationKostis Sagonas
2010-09-30Merge branch 'ks/dialyzer-fixes' into devBjörn Gustavsson
* ks/dialyzer-fixes: Fix two errors in dialyzer
2010-09-24Fix two errors in dialyzerKostis Sagonas
Changes which fix some problems reported by dialyzer users: 1. The handling of nested opaque types 2. The handling of remote types in record expressions used as types While at it, updated dialyzer's RELEASE_NOTES to reflect these fixes and did some cleanups to dialyzer_utils.erl so that it gets in sync with dialyzer's main development branch.
2010-09-24Cleanup and small fixes in hipe filesKostis Sagonas
2010-09-15hipe: Do not auto-import min/2 and max/2Tuncer Ayaz
Resolve name clash with auto-imported BIFs min/2 and max/2.
2010-09-13Prepare releaseOTP_R14BErlang/OTP
2010-09-01Merge branch 'pg/fix-hipe-load' into devBjörn Gustavsson
* pg/fix-hipe-load: Fix hipe:load/1 OTP-8802
2010-08-30fix crash in hipe_icode_exceptionsMikael Pettersson
This fixes a problem in the HiPE compiler's BEAM-to-Icode pass where it can crash due to the BEAM compiler's merging of identical basic blocks with different exception handling contexts. This bug has been latent, but is now exposed by what appears to be more aggressive optimizations in BEAM. The added comment explains things in more detail.
2010-08-27Fix hipe:load/1Paul Guyot
hipe:load/1 (and unexported hipe:load/2) just did not work. Calling it would fail with a badmatch because only the hipe chunk was passed to do_load/3's third parameter called WholeModule. Since this parameter is then passed to beam_lib:all_chunks/1 which accepts the whole module as a binary as well as a path to the beam file, and since a path is exactly what we have in load/2, the fix consists in letting do_load/3 accept a path and passing it from load/2.
2010-08-17erts: Remove broken elib_mallocBjörn Gustavsson
elib_malloc is an alternate memory allocator that is no longer possible to build.
2010-07-20One off-heap list, to eliminate two words per ETS object.Sverker Eriksson
Merging the three off-heap lists (binaries, funs and externals) into one list. This reduces memory consumption by two words (pointers) per ETS object.
2010-07-07Fix a bug in the type of lists:flatmap/2.Kostis Sagonas
The code handling this BIF did not take into account that the fun in the first argument that could return [] and therefore the return value of the BIF could also be [].
2010-06-11Update release notesBjörn Gustavsson
2010-06-11Merge branch 'egil/eprof' into devErlang/OTP
* egil/eprof: Fix eprof to handle error cases Dialyzer cleanup for eprof Fix fprof_SUITE to use new eprof API Switch pattern API for eprof profile with mfa Update eprof documentation Update eprof_SUITE with more basic tests Rename sorting choices for eprof Teach eprof to align text output Add dump functionality to eprof Add log functionality to eprof Update eprof tests to reflect new eprof Add start timestamp to eprof profiling Teach eprof to use the new breakpoints OTP-8706 egil/eprof eprof has been reimplemented with support in the Erlang virtual machine and is now both faster (i.e. slows down the code being measured less) and scales much better. In measurements we saw speed-ups compared to the old eprof ranging from 6 times (for sequential code that only uses one scheduler/core) up to 84 times (for parallel code that uses 8 cores).
2010-06-10Update version numbersBjörn Gustavsson
2010-06-09Dialyzer cleanup for eprofBjörn-Egil Dahlberg
2010-06-09Merge branch 'ks/dialyzer-R14-fixes' into devErlang/OTP
* ks/dialyzer-R14-fixes: Various changes to dialyzer-related files for R14. OTP-8699 ks/dialyzer-R14-fixes Various changes to dialyzer-related files for R14. - Dialyzer properly supports the new attribute -export_type and checks that remote types only refer to exported types. A warning is produced if some files/applications refer to types defined in modules which are neither in the PLT nor in the analyzed applications. - Support for detecting data races involving whereis/1 and unregister/1. - More precise identification of the reason(s) why a record construction violates the types declared for its fields. - Fixed bug in the handling of the 'or' guard. - Better handling of the erlang:element/2 BIF. - Complete handling of Erlang BIFs.
2010-06-08Various changes to dialyzer-related files for R14.Kostis Sagonas
Bumped version number and wrote RELEASE_NOTES. Included all changes described in release notes. Some spec-related changes to some files in lib/hipe/cerl.
2010-06-08Merge branch 'bg/bif-types' into devErlang/OTP
* bg/bif-types: Add type information for erlang:garbage_collect_message_area/0 Add type information for erts_debug:* BIFs Add type information for erlang:port_call/2 Add type information for erlang:display* BIFs Add type information for the BIFs in the binary module Introduce and use the t_endian() helper Add type information for erlang:binary_part/2,3 Add type info for erlang:append/2 and erlang:subtract/2 Add type information for the erlang:adler32* BIFs Add ppc64 return for erlang:system_info(hipe_architecture) Test that all BIFs have known types erl_types: Export is_erl_type/1
2010-06-08Merge branch 'bg/nif_error' into devErlang/OTP
* commit 'bg/nif_error': crypto: Add type specs for all documented functions crypto: Use erlang:nif_error/1 to squelch false Dialyzer warnings Add erlang:nif_error/1,2
2010-06-07Add type information for erlang:garbage_collect_message_area/0Björn Gustavsson
erlang:garbage_collect_message_area/0 is undocumented and unsupported.
2010-06-07Add type information for erts_debug:* BIFsBjörn Gustavsson
2010-06-07Add type information for erlang:port_call/2Björn Gustavsson
(erlang:port_call/2 is undocumented.)
2010-06-07Add type information for erlang:display* BIFsBjörn Gustavsson
2010-06-07Add type information for the BIFs in the binary moduleBjörn Gustavsson
2010-06-07Introduce and use the t_endian() helperBjörn Gustavsson
2010-06-07Add type information for erlang:binary_part/2,3Björn Gustavsson
2010-06-07Add type info for erlang:append/2 and erlang:subtract/2Kostis Sagonas
These are aliases for '++'/2 and '--'/2.
2010-06-07Add type information for the erlang:adler32* BIFsKostis Sagonas
While at it, introduce a new type for adler32 and crc32 and use it consistently within the file.
2010-06-07Add ppc64 return for erlang:system_info(hipe_architecture)Kostis Sagonas
2010-06-06erl_types: Export is_erl_type/1Björn Gustavsson
It is useful for testing.
2010-06-04Merge branch 'ks/dialyzer' into devErlang/OTP
* ks/dialyzer: dialyzer: Build the PLT even if there are unresolved remote types proplists: Export the type property() erl_lint: Issue warnings for undefined exported types Minor fix in a print message Add handling of unknown types Add declaration for exported types Add types and specs; performed some cleanups also erl_scan: Add declarations for exported types stdlib: Add declarations for exported types hipe: Add declarations for exported types compiler: Add declarations for exported types syntax_tools: Add declarations for exported types kernel: Add declaration for exported types Support -export_type() in dialyzer and erl_types Add infrastructure for the -export_type() attribute OTP-8678 ks/dialyzer
2010-06-03dialyzer: Build the PLT even if there are unresolved remote typesKostis Sagonas
2010-06-03Add handling of unknown typesMaria Christakis
2010-06-03hipe: Add declarations for exported typesKostis Sagonas
2010-06-03Support -export_type() in dialyzer and erl_typesKostis Sagonas
2010-06-02Remove (harmless) warnings about min/max in core applicationsPatrik Nyblom
2010-05-31Add erlang:nif_error/1,2Björn Gustavsson
A stub function that is supposed to be replaced by a NIF usually calls erlang:error/1 to cause an exception if the NIF library is not loaded. For example: foo() -> erlang:error(nif_not_loaded). The problem is that although erlang:error/1 will normally never be called, Dialyzer will think that any call to the function will fail and thus generate false warnings. Adding a spec for the function will not help because Dialyzer will not believe the spec. Add erlang:nif_error/1,2 that work exactly like erlang:error/1,2. Define the return types for both BIFs to be t_any(). erlang:nif_error is used like this: -spec foo() -> binary(). foo() -> erlang:nif_error(nif_not_loaded). (The -spec is optional but highly recommended, since Dialyzer otherwise has no chance to figure out the types.)
2010-05-20Remove stray support for the put_literal/2 instructionBjörn Gustavsson
put_literal/2 was an experimental instruction added in R11 to support literals, but before the R12 release support for literals was implemented for all instruction, making the put_literal/2 instruction redundant. Although the beam_disasm module supports dissambley of instructions in older releases, there is no reason to have it support experimental instructions.
2010-05-20Remove stray support for the bs_bits_to_bytes2/2 instructionBjörn Gustavsson
bs_bits_to_bytes2/2 was an experimental instruction added in R11, but was removed in R12. Although the beam_disasm and beam_validator modules do support instructions in older releases, there is no reason to have them support experimental instructions.