summaryrefslogtreecommitdiff
path: root/lib/hipe/icode
Commit message (Collapse)AuthorAgeFilesLines
* Update copyright yearsBjörn-Egil Dahlberg2013-06-126-6/+6
|
* Merge branch 'ks/hipe-cleanup-escaping/OTP-11031' into maintFredrik Gustafsson2013-04-111-10/+8
|\ | | | | | | | | * ks/hipe-cleanup-escaping/OTP-11031: Loosen the assumptions of code that handles escaping functions
| * Loosen the assumptions of code that handles escaping functionsKostis Sagonas2013-03-121-10/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The HiPE compiler implicitly relied on the assumption that a function will never appear as both exported and also used as function closure. This was true because the BEAM compiler prior to R16B created module local anonymous functions for each closure. A proposed change to the BEAM compiler invalidates this invariant, so in order to accommodate for this change there needs to be a change of how the set of possibly escaping functions is computed. While doing this, the code was simplified by taking out a boolean() tag that indicated whether a function is a closure or exported and also slightly cleaned up the affected modules.
* | Take out 'constant' type test and unnecessary type declarationKostis Sagonas2013-03-101-7/+1
| |
* | Take out 'constant' type test from left over commentsKostis Sagonas2013-03-101-2/+0
| |
* | Enable more warningsKostis Sagonas2013-03-101-1/+1
| |
* | Use remote type instead of relying on hipe_icode.hrlKostis Sagonas2013-03-102-10/+10
|/
* Fix bug related to the handling of is_number/1 by the range analysisKostis Sagonas2013-02-251-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | The following module produced erroneous results when compiled with HiPE: -module(a). -export([foo/1]). foo(X) when is_number(X) -> is_integer(X). Running: 1> c(a). 2> a:foo(0). true 3> hipe:c(a). 4> a:foo(0). false % *** WRONG *** The problem was that the 'number' case for the `hipe_icode:type_test/1` was going to the default case where the argument was determined as being something other than an integer. Thanks to Sebastian Egner and Johannes Weißl for bringing the bug into attention. Fixed on the day it was reported.
* Prepare OTP files for Unicode as default encodingHans Bolinder2013-01-091-7/+7
|
* Merge branch 'maint'Björn-Egil Dahlberg2012-08-311-1/+1
|\ | | | | | | | | | | Conflicts: lib/diameter/autoconf/vxworks/sed.general xcomp/README.md
| * Update copyright yearsBjörn-Egil Dahlberg2012-08-311-1/+1
| |
* | Merge branch 'maint'Fredrik Gustafsson2012-08-283-26/+23
|\ \ | |/
| * Changes in comments and minor code cleanupsKostis Sagonas2012-08-241-19/+18
| |
| * Fix a typo and strengthen some type declarationsKostis Sagonas2012-08-241-3/+3
| |
| * Remove unused importsKostis Sagonas2012-08-241-4/+2
| |
* | Merge branch 'maint'Lukas Larsson2012-06-081-4/+4
|\ \ | |/ | | | | | | | | * maint: Update to work with space in include path Update to work with whitespace in exec path
| * Update to work with whitespace in exec pathLukas Larsson2012-06-051-4/+4
| | | | | | | | | | OTP-10106 OTP-10107
* | Merge branch 'maint'Björn-Egil Dahlberg2012-03-304-4/+4
|\ \ | |/
| * Update copyright yearsBjörn-Egil Dahlberg2012-03-304-4/+4
| |
* | Merge branch 'maint'Patrik Nyblom2012-02-281-0/+3
|\ \ | |/
| * Make hipe hipe-compiled w/ --enable-native-libsPatrik Nyblom2012-02-281-0/+3
| |
* | hipe,erts: Debug support for native call traceSverker Eriksson2012-02-092-5/+35
|/
* HiPE: Remove support for is_constant/1Björn Gustavsson2012-01-263-11/+2
|
* hipe: Remove warnings of missing types in recordsBjörn-Egil Dahlberg2012-01-051-1/+1
|
* Update copyright yearsBjörn-Egil Dahlberg2011-12-094-4/+4
|
* Fix Dialyzer's warnings in HiPEStavros Aronis2011-11-302-4/+9
|
* hipe: Remove single function compilationBjörn Gustavsson2011-11-281-60/+1
| | | | | | | | | | | Compiling single functions (as opposed to whole modules) to native code complicates code management in HiPE. It would also vastly complicate whole-module optimizations, such as returning multiple return values instead of tuples within a module. As a first step, remove the external interface for the single compilation feature. In the future, there are many things that could be restructured and simplified.
* Remove exec bit from: erl, hrl, xml, html, asn, gif, xpmRicardo Catalinas Jiménez2011-11-102-0/+0
|
* Merge branch 'dev' into majorHenrik Nord2011-09-201-1/+1
|\ | | | | | | | | | | Conflicts: erts/aclocal.m4 erts/include/internal/ethread_header_config.h.in
| * Fix bug with binary pattern matching of floats of variable sizePaul Guyot2011-09-051-1/+1
| | | | | | | | | | | | Pattern matching of floats with variable size (<<F:S/float>>) did always fail. Judging from similar code for ints, this bug is simply a typo.
* | Include location information for line instructions in BEAM filesBjörn Gustavsson2011-08-161-0/+6
| |
* | compiler, emulator: Introduce the line/1 instructionBjörn Gustavsson2011-08-161-0/+5
|/ | | | | | Introduce the line/1 instruction in the compiler and the BEAM virtual machine. It will not yet be generated by the compiler and will not actually carry any information.
* Update copyright yearsBjörn-Egil Dahlberg2011-03-112-2/+2
|
* Merge branch 'ks/hipe-icode-range-fix' into devNiclas Axelsson2011-03-041-181/+183
|\ | | | | | | | | | | | | | | | | * ks/hipe-icode-range-fix: Cleanup specs Fix bug in the simplification of inexact comparisons Various cleanups and cosmetic changes OTP-9101
| * Cleanup specsKostis Sagonas2011-02-141-75/+77
| |
| * Fix bug in the simplification of inexact comparisonsKostis Sagonas2011-02-141-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On 31/1/2011 Paul Guyot reported a bug in the native code compilation of inexact equality/inequality tests between floats and integers. The relevant test was: f(X) -> Y = X / 2, Y == 0. and hipe erroneously evaluated the calls f(0) and f(0.0) to 'false'. The culprit was in the simplification code of the Icode range analysis which used an erroneous test (lists:any/1 instead of lists:all/1).
| * Various cleanups and cosmetic changesKostis Sagonas2011-02-141-106/+106
| |
* | Fix translation of bs_add's fail labelsKostis Sagonas2011-02-031-3/+3
|/
* Fix erroneous fail info of a hipe_bs_primopKostis Sagonas2011-01-061-8/+5
|
* hipe: Update types and specsKostis Sagonas2010-11-222-6/+4
|
* hipe: Add translation of BIFs with arity threeKostis Sagonas2010-10-201-0/+4
|
* Cleanup and small fixes in hipe filesKostis Sagonas2010-09-241-13/+9
|
* hipe: Do not auto-import min/2 and max/2Tuncer Ayaz2010-09-151-0/+2
| | | | Resolve name clash with auto-imported BIFs min/2 and max/2.
* fix crash in hipe_icode_exceptionsMikael Pettersson2010-08-301-0/+10
| | | | | | | | | | 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.
* Remove stray support for the put_literal/2 instructionBjörn Gustavsson2010-05-201-7/+0
| | | | | | | | | 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.
* Remove stray support for the bs_bits_to_bytes2/2 instructionBjörn Gustavsson2010-05-201-5/+0
| | | | | | | 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.
* hipe_beam_to_icode: Correct names of new recv_* instructionsKostis Sagonas2010-05-121-5/+3
| | | | The bug was introduced in d60f055697cfe8e7f94be4d291d49bb00a66bc52.
* Merge branch 'bg/opt-receive' into devErlang/OTP2010-05-121-5/+10
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * bg/opt-receive: Test that gen_server:call/2,3 are fast even with a huge message queue erts: Add tests for the receive optimization Update primary bootstrap erts: Implement recv_mark/1 and recv_set/1 for real compiler tests: Cover the error handling code in beam_receive compiler test: Test optimization of receive statements Optimize selective receives in the presence of a large message queue Introduce the new recv_mark/1 and recv_mark/1 instructions Compile tests that communicate with R12 nodes with the r12 option Move p_run/2 to test_lib gen: Inline wait_resp_mon/2 to help the compiler optimize OTP-8623 bg/opt-receive reveive statements that can only read out a newly created reference are now specially optimized so that it will execute in constant time regardless of the number of messages in the receive queue for the process. That optimization will benefit calls to gen_server:call(). (See gen:do_call/4 for an example of a receive statement that will be optimized.)
| * Introduce the new recv_mark/1 and recv_mark/1 instructionsBjörn Gustavsson2010-05-111-0/+5
| | | | | | | | | | | | | | | | Make the recv_mark/1 and recv_mark/1 instructions known to the compiler and run-time system. For the moment, make the loader ignore any occurrences of those instructions in BEAM files. Also update hipe_beam_to_icode to ignore those instructions.
* | hipe_icode: Suppress a dialyzer warningKostis Sagonas2010-05-111-20/+12
|/