~ubuntu-branches/debian/squeeze/erlang/squeeze

« back to all changes in this revision

Viewing changes to erts/emulator/beam/ops.tab

  • Committer: Bazaar Package Importer
  • Author(s): Sergei Golovan
  • Date: 2009-05-07 15:07:37 UTC
  • mfrom: (1.2.1 upstream) (5.1.2 sid)
  • Revision ID: james.westby@ubuntu.com-20090507150737-i4yb5elwinm7r0hc
Tags: 1:13.b-dfsg1-1
* Removed another bunch of non-free RFCs from original tarball
  (closes: #527053).
* Fixed build-dependencies list by adding missing comma. This requires
  libsctp-dev again. Also, added libsctp1 dependency to erlang-base and
  erlang-base-hipe packages because the shared library is loaded via
  dlopen now and cannot be added using dh_slibdeps (closes: #526682).
* Weakened dependency of erlang-webtool on erlang-observer to recommends
  to avoid circular dependencies (closes: #526627).
* Added solaris-i386 to HiPE enabled architectures.
* Made script sources in /usr/lib/erlang/erts-*/bin directory executable,
  which is more convenient if a user wants to create a target Erlang system.
* Shortened extended description line for erlang-dev package to make it
  fit 80x25 terminals.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# ``The contents of this file are subject to the Erlang Public License,
 
1
#
 
2
# %CopyrightBegin%
 
3
 
4
# Copyright Ericsson AB 1997-2009. All Rights Reserved.
 
5
 
6
# The contents of this file are subject to the Erlang Public License,
2
7
# Version 1.1, (the "License"); you may not use this file except in
3
8
# compliance with the License. You should have received a copy of the
4
9
# Erlang Public License along with this software. If not, it can be
5
 
# retrieved via the world wide web at http://www.erlang.org/.
 
10
# retrieved online at http://www.erlang.org/.
6
11
7
12
# Software distributed under the License is distributed on an "AS IS"
8
13
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
9
14
# the License for the specific language governing rights and limitations
10
15
# under the License.
11
16
12
 
# The Initial Developer of the Original Code is Ericsson Utvecklings AB.
13
 
# Portions created by Ericsson are Copyright 1999, Ericsson Utvecklings
14
 
# AB. All Rights Reserved.''
15
 
16
 
#     $Id$
 
17
# %CopyrightEnd%
17
18
#
 
19
 
18
20
#
19
21
# The instructions that follows are only known by the loader and the emulator.
20
22
# They can be changed without recompiling old Beam files.
31
33
too_old_compiler
32
34
 
33
35
#
34
 
# Obsolete instructions follow.
 
36
# Obsolete instruction usage follow. (Nowdays we use f with
 
37
# a zero label instead of p.)
35
38
#
36
39
 
37
40
is_list p S => too_old_compiler
56
59
func_info M=a a==am_module_info A=u==0 | label L | move n r => too_old_compiler
57
60
func_info M=a a==am_module_info A=u==1 | label L | move n r => too_old_compiler
58
61
 
 
62
# The undocumented and unsupported guard BIF is_constant/1 was removed
 
63
# in R13. The is_constant/2 operation is marked as obosolete in genop.tab,
 
64
# so the loader will automatically generate a too_old_compiler message
 
65
# it is used, but we need to handle the is_constant/1 BIF specially here.
 
66
 
 
67
bif1 Fail u$func:erlang:is_constant/1 Src Dst => too_old_compiler
 
68
 
 
69
 
59
70
#
60
71
# All the other instructions.
61
72
#
220
231
is_number Fail=f na => jump Fail
221
232
is_number Fail Literal=q => move Literal x | is_number Fail x
222
233
 
223
 
%macro: is_constant IsConstant -fail_action
224
 
%cold
225
 
is_constant f x
226
 
is_constant f y
227
 
is_constant f r
228
 
%hot
229
 
is_constant Fail=f ia =>
230
 
is_constant Fail=f n => jump Fail
231
 
is_constant Fail Literal=q => move Literal x | is_constant Fail x
232
 
 
233
234
jump f
234
235
 
235
236
case_end Literal=q => move Literal x | case_end x
768
769
call_ext_only u==1 Bif=u$bif:erlang:throw/1 => call_bif1 Bif
769
770
 
770
771
#
771
 
# The error/1 and error/2 BIFs (and their old aliases fault/1 and
772
 
# fault/2) never execute the instruction following them;
 
772
# The error/1 and error/2 BIFs never execute the instruction following them;
773
773
# thus there is no need to generate any return instruction.
774
774
# However, they generate stack backtraces, so if the call instruction
775
775
# is call_ext_only/2 instruction, we explicitly do an allocate/2 to store
777
777
#
778
778
 
779
779
call_ext_last u==1 Bif=u$bif:erlang:error/1 D => call_bif1 Bif
780
 
call_ext_last u==1 Bif=u$bif:erlang:fault/1 D => call_bif1 Bif
781
780
call_ext_last u==2 Bif=u$bif:erlang:error/2 D => call_bif2 Bif
782
 
call_ext_last u==2 Bif=u$bif:erlang:fault/2 D => call_bif2 Bif
783
781
 
784
782
call_ext_only Ar=u==1 Bif=u$bif:erlang:error/1 => \
785
783
  allocate u Ar | call_bif1 Bif
786
 
call_ext_only Ar=u==1 Bif=u$bif:erlang:fault/1 => \
787
 
  allocate u Ar | call_bif1 Bif
788
784
call_ext_only Ar=u==2 Bif=u$bif:erlang:error/2 => \
789
785
  allocate u Ar | call_bif2 Bif
790
 
call_ext_only Ar=u==2 Bif=u$bif:erlang:fault/2 => \
791
 
  allocate u Ar | call_bif2 Bif
792
786
 
793
787
#
794
788
# The yield/0 BIF is an instruction