~ubuntu-branches/ubuntu/trusty/erlang/trusty

« back to all changes in this revision

Viewing changes to lib/compiler/src/beam_utils.erl

  • Committer: Bazaar Package Importer
  • Author(s): Clint Byrum
  • Date: 2011-05-05 15:48:43 UTC
  • mfrom: (3.5.13 sid)
  • Revision ID: james.westby@ubuntu.com-20110505154843-0om6ekzg6m7ugj27
Tags: 1:14.b.2-dfsg-3ubuntu1
* Merge from debian unstable.  Remaining changes:
  - Drop libwxgtk2.8-dev build dependency. Wx isn't in main, and not
    supposed to.
  - Drop erlang-wx binary.
  - Drop erlang-wx dependency from -megaco, -common-test, and -reltool, they
    do not really need wx. Also drop it from -debugger; the GUI needs wx,
    but it apparently has CLI bits as well, and is also needed by -megaco,
    so let's keep the package for now.
  - debian/patches/series: Do what I meant, and enable build-options.patch
    instead.
* Additional changes:
  - Drop erlang-wx from -et
* Dropped Changes:
  - patches/pcre-crash.patch: CVE-2008-2371: outer level option with
    alternatives caused crash. (Applied Upstream)
  - fix for ssl certificate verification in newSSL: 
    ssl_cacertfile_fix.patch (Applied Upstream)
  - debian/patches/series: Enable native.patch again, to get stripped beam
    files and reduce the package size again. (build-options is what
    actually accomplished this)
  - Remove build-options.patch on advice from upstream and because it caused
    odd build failures.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
%%
2
2
%% %CopyrightBegin%
3
 
%% 
4
 
%% Copyright Ericsson AB 2007-2009. All Rights Reserved.
5
 
%% 
 
3
%%
 
4
%% Copyright Ericsson AB 2007-2010. All Rights Reserved.
 
5
%%
6
6
%% The contents of this file are subject to the Erlang Public License,
7
7
%% Version 1.1, (the "License"); you may not use this file except in
8
8
%% compliance with the License. You should have received a copy of the
9
9
%% Erlang Public License along with this software. If not, it can be
10
10
%% retrieved online at http://www.erlang.org/.
11
 
%% 
 
11
%%
12
12
%% Software distributed under the License is distributed on an "AS IS"
13
13
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
14
14
%% the License for the specific language governing rights and limitations
15
15
%% under the License.
16
 
%% 
 
16
%%
17
17
%% %CopyrightEnd%
18
18
%%
19
19
%% Purpose : Common utilities used by several optimization passes.
407
407
        Other ->
408
408
            Other
409
409
    end;
410
 
check_liveness(R, [{gc_bif,Op,{f,Fail},_,Ss,D}|Is], St0) ->
411
 
    case check_liveness_fail(R, Op, Ss, Fail, St0) of
412
 
        {killed,St} = Killed ->
413
 
            case member(R, Ss) of
414
 
                true -> {used,St};
415
 
                false when R =:= D -> Killed;
416
 
                false -> check_liveness(R, Is, St)
417
 
            end;
418
 
        Other ->
419
 
            Other
 
410
check_liveness(R, [{gc_bif,Op,{f,Fail},Live,Ss,D}|Is], St0) ->
 
411
    case R of
 
412
        {x,X} when X >= Live ->
 
413
            {killed,St0};
 
414
        {x,_} ->
 
415
            {used,St0};
 
416
        _ ->
 
417
            case check_liveness_fail(R, Op, Ss, Fail, St0) of
 
418
                {killed,St}=Killed ->
 
419
                    case member(R, Ss) of
 
420
                        true -> {used,St};
 
421
                        false when R =:= D -> Killed;
 
422
                        false -> check_liveness(R, Is, St)
 
423
                    end;
 
424
                Other ->
 
425
                    Other
 
426
            end
420
427
    end;
421
428
check_liveness(R, [{bs_add,{f,0},Ss,D}|Is], St) ->
422
429
    case member(R, Ss) of
424
431
        false when R =:= D -> {killed,St};
425
432
        false -> check_liveness(R, Is, St)
426
433
    end;
427
 
check_liveness(R, [{bs_bits_to_bytes2,Src,Dst}|Is], St) ->
428
 
    case R of
429
 
        Src -> {used,St};
430
 
        Dst -> {killed,St};
431
 
        _ -> check_liveness(R, Is, St)
432
 
    end;
433
434
check_liveness(R, [{bs_put_binary,{f,0},Sz,_,_,Src}|Is], St) ->
434
435
    case member(R, [Sz,Src]) of
435
436
        true -> {used,St};
488
489
        S -> {used,St};
489
490
        _ -> check_liveness(R, Is, St)
490
491
    end;
491
 
check_liveness(R, [{loop_rec,{f,_},{x,0}}|Is], St) ->
 
492
check_liveness(R, [{loop_rec,{f,_},{x,0}}|_], St) ->
492
493
    case R of
493
 
        {x,_} -> {killed,St};
494
 
        _ -> check_liveness(R, Is, St)
 
494
        {x,_} ->
 
495
            {killed,St};
 
496
        _ ->
 
497
            %% y register. Rarely happens. Be very conversative.
 
498
            {unknown,St}
495
499
    end;
496
500
check_liveness(R, [{loop_rec_end,{f,Fail}}|_], St) ->
497
501
    check_liveness_at(R, Fail, St);