diff options
author | olgeni <olgeni@FreeBSD.org> | 2005-05-01 17:16:02 +0800 |
---|---|---|
committer | olgeni <olgeni@FreeBSD.org> | 2005-05-01 17:16:02 +0800 |
commit | cab8c8f37fd00ac648a5512f0223371bee012f7c (patch) | |
tree | f6f480a389f0d442a82eeb8492cf415672a7cce5 | |
parent | 1d00c2fbc3e6c0d0612597eb33b357eb98ba9c42 (diff) | |
download | freebsd-ports-gnome-cab8c8f37fd00ac648a5512f0223371bee012f7c.tar.gz freebsd-ports-gnome-cab8c8f37fd00ac648a5512f0223371bee012f7c.tar.zst freebsd-ports-gnome-cab8c8f37fd00ac648a5512f0223371bee012f7c.zip |
Upgrade to version R10B-4.
-rw-r--r-- | lang/erlang/Makefile | 9 | ||||
-rw-r--r-- | lang/erlang/Makefile.lib | 32 | ||||
-rw-r--r-- | lang/erlang/distinfo | 12 | ||||
-rw-r--r-- | lang/erlang/files/patch-lib_compiler_src_beam__validator.erl | 117 | ||||
-rw-r--r-- | lang/erlang/files/patch-lib_inets_src_http__client_httpc__request.erl | 14 | ||||
-rw-r--r-- | lang/erlang/files/patch-lib_kernel_src_rpc.erl | 28 | ||||
-rw-r--r-- | lang/erlang/pkg-message | 2 | ||||
-rw-r--r-- | lang/erlang14/Makefile | 9 | ||||
-rw-r--r-- | lang/erlang14/Makefile.lib | 32 | ||||
-rw-r--r-- | lang/erlang14/distinfo | 12 | ||||
-rw-r--r-- | lang/erlang14/files/patch-lib_compiler_src_beam__validator.erl | 117 | ||||
-rw-r--r-- | lang/erlang14/files/patch-lib_inets_src_http__client_httpc__request.erl | 14 | ||||
-rw-r--r-- | lang/erlang14/files/patch-lib_kernel_src_rpc.erl | 28 | ||||
-rw-r--r-- | lang/erlang14/pkg-message | 2 |
14 files changed, 288 insertions, 140 deletions
diff --git a/lang/erlang/Makefile b/lang/erlang/Makefile index 1c0445cfc89d..603de9479e31 100644 --- a/lang/erlang/Makefile +++ b/lang/erlang/Makefile @@ -6,8 +6,7 @@ # PORTNAME= erlang -PORTVERSION= r10b3 -PORTREVISION= 1 +PORTVERSION= r10b4 PORTEPOCH= 1 CATEGORIES= lang parallel MASTER_SITES= http://www.erlang.org/download/ \ @@ -15,7 +14,7 @@ MASTER_SITES= http://www.erlang.org/download/ \ http://www.erlang.org/download/ \ http://erlang.stacken.kth.se/download/ \ http://www.csd.uu.se/ftp/mirror/erlang/download/ -DISTNAME= otp_src_R10B-3 +DISTNAME= otp_src_R10B-4 DISTFILES= ${DISTNAME}${EXTRACT_SUFX} ${ERLANG_MAN} ${ERLANG_DOCS} DIST_SUBDIR= erlang @@ -32,9 +31,9 @@ RUN_DEPENDS= wish8.4:${PORTSDIR}/x11-toolkits/tk84 JAVABINDIR?= ${LOCALBASE}/jdk1.4.2/bin JAVAPORT?= ${JAVABINDIR}/javac:${PORTSDIR}/java/jdk14 -ERLANG_MAN= otp_doc_man_R10B-3.tar.gz +ERLANG_MAN= otp_doc_man_R10B-4.tar.gz .if !defined(NOPORTDOCS) -ERLANG_DOCS= otp_doc_html_R10B-3.tar.gz +ERLANG_DOCS= otp_doc_html_R10B-4.tar.gz .endif USE_GMAKE= yes diff --git a/lang/erlang/Makefile.lib b/lang/erlang/Makefile.lib index 1e38ead4abee..754c2e65a78c 100644 --- a/lang/erlang/Makefile.lib +++ b/lang/erlang/Makefile.lib @@ -1,9 +1,9 @@ # $FreeBSD$ -ERTS_VSN= 5.4.4 +ERTS_VSN= 5.4.5 OTP_LIBS= appmon-2.1.4 \ - asn1-1.4.4.4 \ - compiler-4.3.3 \ + asn1-1.4.4.5 \ + compiler-4.3.5 \ cosEvent-2.1 \ cosEventDomain-1.1 \ cosFileTransfer-1.1.2 \ @@ -14,33 +14,33 @@ OTP_LIBS= appmon-2.1.4 \ crypto-1.2.3 \ debugger-2.3.2 \ edoc-0.6.1 \ - erl_interface-3.5.1 \ + erl_interface-3.5.2 \ et-1.0 \ gs-1.5.4 \ - hipe-3.0.2 \ - ic-4.2.7 \ - inets-4.2 \ + hipe-3.4.0 \ + ic-4.2.9 \ + inets-4.3.1 \ jinterface-1.3 \ - kernel-2.10.4 \ - megaco-3.0 \ + kernel-2.10.6 \ + megaco-3.0.1 \ mnemosyne-1.2.5 \ mnesia-4.2.1 \ mnesia_session-1.1.5 \ - observer-0.9.6 \ - odbc-2.0.2 \ + observer-0.9.6.1 \ + odbc-2.0.3 \ orber-3.5.3 \ - os_mon-1.7.2 \ + os_mon-1.7.3 \ otp_mibs-1.0.4 \ - parsetools-1.3.1 \ + parsetools-1.3.2 \ pman-2.5.2 \ runtime_tools-1.5.1 \ sasl-2.0.1 \ - snmp-4.1.1 \ + snmp-4.1.2 \ ssl-3.0.5 \ - stdlib-1.13.4 \ + stdlib-1.13.5 \ syntax_tools-1.4.1 \ toolbar-1.2.1 \ - tools-2.4.1 \ + tools-2.4.2 \ tv-2.1.2 \ webtool-0.8.2 \ xmerl-1.0 diff --git a/lang/erlang/distinfo b/lang/erlang/distinfo index 5e48b9defbc6..a34260b78705 100644 --- a/lang/erlang/distinfo +++ b/lang/erlang/distinfo @@ -1,6 +1,6 @@ -MD5 (erlang/otp_src_R10B-3.tar.gz) = 4eb8a702b6cf98f3dfa8602d9d7c20fb -SIZE (erlang/otp_src_R10B-3.tar.gz) = 9936188 -MD5 (erlang/otp_doc_man_R10B-3.tar.gz) = 4ceb6d8b9c44716b1695ecb36e3d8330 -SIZE (erlang/otp_doc_man_R10B-3.tar.gz) = 593032 -MD5 (erlang/otp_doc_html_R10B-3.tar.gz) = 4b0bf3a4fff2d4632885efa047b5fd5b -SIZE (erlang/otp_doc_html_R10B-3.tar.gz) = 4568533 +MD5 (erlang/otp_src_R10B-4.tar.gz) = 253700bdcd966909f140ea0bfbeb9b7c +SIZE (erlang/otp_src_R10B-4.tar.gz) = 9988051 +MD5 (erlang/otp_doc_man_R10B-4.tar.gz) = 1d5f850706c0d321e712bc7971adedc5 +SIZE (erlang/otp_doc_man_R10B-4.tar.gz) = 594849 +MD5 (erlang/otp_doc_html_R10B-4.tar.gz) = 57fffd9113d88cc1a16c7890c3552f9e +SIZE (erlang/otp_doc_html_R10B-4.tar.gz) = 4582699 diff --git a/lang/erlang/files/patch-lib_compiler_src_beam__validator.erl b/lang/erlang/files/patch-lib_compiler_src_beam__validator.erl new file mode 100644 index 000000000000..23d4a21953a0 --- /dev/null +++ b/lang/erlang/files/patch-lib_compiler_src_beam__validator.erl @@ -0,0 +1,117 @@ + +$FreeBSD$ + +--- lib/compiler/src/beam_validator.erl.orig ++++ lib/compiler/src/beam_validator.erl +@@ -415,7 +415,7 @@ + TupleType0 = get_term_type(Tuple, Vst0), + PosType = get_term_type(Pos, Vst0), + Vst1 = branch_state(Fail, Vst0), +- TupleType = upgrade_type({tuple,[get_tuple_size(PosType)]}, TupleType0), ++ TupleType = upgrade_tuple_type({tuple,[get_tuple_size(PosType)]}, TupleType0), + Vst = set_type(TupleType, Tuple, Vst1), + set_type_reg(term, Dst, Vst); + valfun_4({arithbif,Op,F,Src,Dst}, Vst) -> +@@ -529,8 +529,9 @@ + assert_term(Float, Vst), + set_type({float,[]}, Float, branch_state(Lbl, Vst)); + valfun_4({test,is_tuple,{f,Lbl},[Tuple]}, Vst) -> +- assert_term(Tuple, Vst), +- set_type({tuple,[0]}, Tuple, branch_state(Lbl, Vst)); ++ Type0 = get_term_type(Tuple, Vst), ++ Type = upgrade_tuple_type({tuple,[0]}, Type0), ++ set_type(Type, Tuple, branch_state(Lbl, Vst)); + valfun_4({test,is_nonempty_list,{f,Lbl},[Cons]}, Vst) -> + assert_term(Cons, Vst), + set_type(cons, Cons, branch_state(Lbl, Vst)); +@@ -843,54 +844,25 @@ + assert_type(Needed, Actual) -> + error({bad_type,{needed,Needed},{actual,Actual}}). + +-%% upgrade_type/2 is used when linear code finds out more and +-%% more information about a type, so the type gets "narrower" +-%% or perhaps inconsistent. In the case of inconsistency +-%% we mostly widen the type to 'term' to make subsequent +-%% code fail if it assumes anything about the type. + +-upgrade_type(Same, Same) -> Same; +-upgrade_type(term, OldT) -> OldT; +-upgrade_type(NewT, term) -> NewT; +-upgrade_type({Type,New}=NewT, {Type,Old}=OldT) +- when Type == atom; Type == integer; Type == float -> +- if New =:= Old -> OldT; +- New =:= [] -> OldT; +- Old =:= [] -> NewT; +- true -> term +- end; +-upgrade_type({Type,_}=NewT, number) +- when Type == integer; Type == float -> +- NewT; +-upgrade_type(number, {Type,_}=OldT) +- when Type == integer; Type == float -> +- OldT; +-upgrade_type(bool, {atom,A}) -> +- upgrade_bool(A); +-upgrade_type({atom,A}, bool) -> +- upgrade_bool(A); +-upgrade_type({tuple,[Sz]}, {tuple,[OldSz]}) +- when is_integer(Sz) -> +- {tuple,[max(Sz, OldSz)]}; +-upgrade_type({tuple,Sz}=T, {tuple,[_]}) +- when is_integer(Sz) -> +- %% This also takes care of the user error when a tuple element +- %% is accesed outside the known exact tuple size; there is +- %% no more type information, just a runtime error which is not +- %% our problem. +- T; +-upgrade_type({tuple,[Sz]}, {tuple,_}=T) +- when is_integer(Sz) -> +- %% Same as the previous clause but mirrored. +- T; +-upgrade_type(_A, _B) -> +- %%io:format("upgrade_type: ~p ~p\n", [_A,_B]), +- term. ++%% upgrade_tuple_type(NewTupleType, OldType) -> TupleType. ++%% upgrade_tuple_type/2 is used when linear code finds out more and ++%% more information about a tuple type, so that the type gets more ++%% specialized. If OldType is not a tuple type, the type information ++%% is inconsistent, and we know that some instructions will never ++%% be executed at run-time. + +-upgrade_bool([]) -> bool; +-upgrade_bool(true) -> {atom,true}; +-upgrade_bool(false) -> {atom,false}; +-upgrade_bool(_) -> term. ++upgrade_tuple_type({tuple,[Sz]}, {tuple,[OldSz]}=T) when Sz < OldSz -> ++ %% The old type has a higher value for the least tuple size. ++ T; ++upgrade_tuple_type({tuple,_}=T, _) -> ++ %% The new type information is exact or has a higher value for ++ %% the least tuple size. ++ %% Note that inconsistencies are also handled in this ++ %% clause, e.g. if the old type was an integer or a tuple accessed ++ %% outside its size; inconsistences will generally cause an exception ++ %% at run-time but are safe from our point of view. ++ T. + + get_tuple_size({integer,[]}) -> 0; + get_tuple_size({integer,Sz}) -> Sz; +@@ -1172,7 +1144,7 @@ + end, + case get_term_type({x,0}, Vst) of + {integer,[]} -> TupleType; +- {integer,I} -> upgrade_type({tuple,[I]}, TupleType); ++ {integer,I} -> upgrade_tuple_type({tuple,[I]}, TupleType); + _ -> TupleType + end; + return_type_1(erlang, F, A, _) -> +@@ -1214,9 +1186,6 @@ + + min(A, B) when is_integer(A), is_integer(B), A < B -> A; + min(A, B) when is_integer(A), is_integer(B) -> B. +- +-max(A, B) when is_integer(A), is_integer(B), A > B -> A; +-max(A, B) when is_integer(A), is_integer(B) -> B. + + gb_trees_from_list(L) -> gb_trees:from_orddict(orddict:from_list(L)). + diff --git a/lang/erlang/files/patch-lib_inets_src_http__client_httpc__request.erl b/lang/erlang/files/patch-lib_inets_src_http__client_httpc__request.erl deleted file mode 100644 index 41663e663413..000000000000 --- a/lang/erlang/files/patch-lib_inets_src_http__client_httpc__request.erl +++ /dev/null @@ -1,14 +0,0 @@ - -$FreeBSD$ - ---- lib/inets/src/http_client/httpc_request.erl.orig -+++ lib/inets/src/http_client/httpc_request.erl -@@ -78,7 +78,7 @@ - %%%======================================================================== - post_data(Method, Headers, {ContentType, Body}) - when Method == post; Method == put -> -- ContentLength = length(Body), -+ ContentLength = integer_to_list(length(Body)), - NewBody = case Headers#http_request_h.expect of - "100-continue" -> - ""; diff --git a/lang/erlang/files/patch-lib_kernel_src_rpc.erl b/lang/erlang/files/patch-lib_kernel_src_rpc.erl deleted file mode 100644 index 7a94e2a96574..000000000000 --- a/lang/erlang/files/patch-lib_kernel_src_rpc.erl +++ /dev/null @@ -1,28 +0,0 @@ - -$FreeBSD$ - ---- lib/kernel/src/rpc.erl.orig -+++ lib/kernel/src/rpc.erl -@@ -495,16 +495,16 @@ - ReplyTo ! {self(), {promise_reply, R}} %% self() is key - end). - --yield(Key) when pid(Key) -> -- {value, R} = do_yield(Key, infinite), -+yield(Key) when is_pid(Key) -> -+ {value,R} = do_yield(Key, infinity), - R. - --nb_yield(Key, infinite) when pid(Key) -> -- do_yield(Key, infinite); --nb_yield(Key, Timeout) when pid(Key), integer(Timeout), Timeout >= 0 -> -+nb_yield(Key, infinity=Inf) when is_pid(Key) -> -+ do_yield(Key, Inf); -+nb_yield(Key, Timeout) when is_pid(Key), is_integer(Timeout), Timeout >= 0 -> - do_yield(Key, Timeout). - --nb_yield(Key) when pid(Key) -> -+nb_yield(Key) when is_pid(Key) -> - do_yield(Key, 0). - - do_yield(Key, Timeout) -> diff --git a/lang/erlang/pkg-message b/lang/erlang/pkg-message index d6bad9c38311..663ff59e717e 100644 --- a/lang/erlang/pkg-message +++ b/lang/erlang/pkg-message @@ -7,7 +7,7 @@ Installation tips: You can find an emacs mode for Erlang here: - ${LOCALBASE}/lib/erlang/lib/tools-2.4.1/emacs + ${LOCALBASE}/lib/erlang/lib/tools-2.4.2/emacs You may wish to add the following line to /etc/manpath.config: diff --git a/lang/erlang14/Makefile b/lang/erlang14/Makefile index 1c0445cfc89d..603de9479e31 100644 --- a/lang/erlang14/Makefile +++ b/lang/erlang14/Makefile @@ -6,8 +6,7 @@ # PORTNAME= erlang -PORTVERSION= r10b3 -PORTREVISION= 1 +PORTVERSION= r10b4 PORTEPOCH= 1 CATEGORIES= lang parallel MASTER_SITES= http://www.erlang.org/download/ \ @@ -15,7 +14,7 @@ MASTER_SITES= http://www.erlang.org/download/ \ http://www.erlang.org/download/ \ http://erlang.stacken.kth.se/download/ \ http://www.csd.uu.se/ftp/mirror/erlang/download/ -DISTNAME= otp_src_R10B-3 +DISTNAME= otp_src_R10B-4 DISTFILES= ${DISTNAME}${EXTRACT_SUFX} ${ERLANG_MAN} ${ERLANG_DOCS} DIST_SUBDIR= erlang @@ -32,9 +31,9 @@ RUN_DEPENDS= wish8.4:${PORTSDIR}/x11-toolkits/tk84 JAVABINDIR?= ${LOCALBASE}/jdk1.4.2/bin JAVAPORT?= ${JAVABINDIR}/javac:${PORTSDIR}/java/jdk14 -ERLANG_MAN= otp_doc_man_R10B-3.tar.gz +ERLANG_MAN= otp_doc_man_R10B-4.tar.gz .if !defined(NOPORTDOCS) -ERLANG_DOCS= otp_doc_html_R10B-3.tar.gz +ERLANG_DOCS= otp_doc_html_R10B-4.tar.gz .endif USE_GMAKE= yes diff --git a/lang/erlang14/Makefile.lib b/lang/erlang14/Makefile.lib index 1e38ead4abee..754c2e65a78c 100644 --- a/lang/erlang14/Makefile.lib +++ b/lang/erlang14/Makefile.lib @@ -1,9 +1,9 @@ # $FreeBSD$ -ERTS_VSN= 5.4.4 +ERTS_VSN= 5.4.5 OTP_LIBS= appmon-2.1.4 \ - asn1-1.4.4.4 \ - compiler-4.3.3 \ + asn1-1.4.4.5 \ + compiler-4.3.5 \ cosEvent-2.1 \ cosEventDomain-1.1 \ cosFileTransfer-1.1.2 \ @@ -14,33 +14,33 @@ OTP_LIBS= appmon-2.1.4 \ crypto-1.2.3 \ debugger-2.3.2 \ edoc-0.6.1 \ - erl_interface-3.5.1 \ + erl_interface-3.5.2 \ et-1.0 \ gs-1.5.4 \ - hipe-3.0.2 \ - ic-4.2.7 \ - inets-4.2 \ + hipe-3.4.0 \ + ic-4.2.9 \ + inets-4.3.1 \ jinterface-1.3 \ - kernel-2.10.4 \ - megaco-3.0 \ + kernel-2.10.6 \ + megaco-3.0.1 \ mnemosyne-1.2.5 \ mnesia-4.2.1 \ mnesia_session-1.1.5 \ - observer-0.9.6 \ - odbc-2.0.2 \ + observer-0.9.6.1 \ + odbc-2.0.3 \ orber-3.5.3 \ - os_mon-1.7.2 \ + os_mon-1.7.3 \ otp_mibs-1.0.4 \ - parsetools-1.3.1 \ + parsetools-1.3.2 \ pman-2.5.2 \ runtime_tools-1.5.1 \ sasl-2.0.1 \ - snmp-4.1.1 \ + snmp-4.1.2 \ ssl-3.0.5 \ - stdlib-1.13.4 \ + stdlib-1.13.5 \ syntax_tools-1.4.1 \ toolbar-1.2.1 \ - tools-2.4.1 \ + tools-2.4.2 \ tv-2.1.2 \ webtool-0.8.2 \ xmerl-1.0 diff --git a/lang/erlang14/distinfo b/lang/erlang14/distinfo index 5e48b9defbc6..a34260b78705 100644 --- a/lang/erlang14/distinfo +++ b/lang/erlang14/distinfo @@ -1,6 +1,6 @@ -MD5 (erlang/otp_src_R10B-3.tar.gz) = 4eb8a702b6cf98f3dfa8602d9d7c20fb -SIZE (erlang/otp_src_R10B-3.tar.gz) = 9936188 -MD5 (erlang/otp_doc_man_R10B-3.tar.gz) = 4ceb6d8b9c44716b1695ecb36e3d8330 -SIZE (erlang/otp_doc_man_R10B-3.tar.gz) = 593032 -MD5 (erlang/otp_doc_html_R10B-3.tar.gz) = 4b0bf3a4fff2d4632885efa047b5fd5b -SIZE (erlang/otp_doc_html_R10B-3.tar.gz) = 4568533 +MD5 (erlang/otp_src_R10B-4.tar.gz) = 253700bdcd966909f140ea0bfbeb9b7c +SIZE (erlang/otp_src_R10B-4.tar.gz) = 9988051 +MD5 (erlang/otp_doc_man_R10B-4.tar.gz) = 1d5f850706c0d321e712bc7971adedc5 +SIZE (erlang/otp_doc_man_R10B-4.tar.gz) = 594849 +MD5 (erlang/otp_doc_html_R10B-4.tar.gz) = 57fffd9113d88cc1a16c7890c3552f9e +SIZE (erlang/otp_doc_html_R10B-4.tar.gz) = 4582699 diff --git a/lang/erlang14/files/patch-lib_compiler_src_beam__validator.erl b/lang/erlang14/files/patch-lib_compiler_src_beam__validator.erl new file mode 100644 index 000000000000..23d4a21953a0 --- /dev/null +++ b/lang/erlang14/files/patch-lib_compiler_src_beam__validator.erl @@ -0,0 +1,117 @@ + +$FreeBSD$ + +--- lib/compiler/src/beam_validator.erl.orig ++++ lib/compiler/src/beam_validator.erl +@@ -415,7 +415,7 @@ + TupleType0 = get_term_type(Tuple, Vst0), + PosType = get_term_type(Pos, Vst0), + Vst1 = branch_state(Fail, Vst0), +- TupleType = upgrade_type({tuple,[get_tuple_size(PosType)]}, TupleType0), ++ TupleType = upgrade_tuple_type({tuple,[get_tuple_size(PosType)]}, TupleType0), + Vst = set_type(TupleType, Tuple, Vst1), + set_type_reg(term, Dst, Vst); + valfun_4({arithbif,Op,F,Src,Dst}, Vst) -> +@@ -529,8 +529,9 @@ + assert_term(Float, Vst), + set_type({float,[]}, Float, branch_state(Lbl, Vst)); + valfun_4({test,is_tuple,{f,Lbl},[Tuple]}, Vst) -> +- assert_term(Tuple, Vst), +- set_type({tuple,[0]}, Tuple, branch_state(Lbl, Vst)); ++ Type0 = get_term_type(Tuple, Vst), ++ Type = upgrade_tuple_type({tuple,[0]}, Type0), ++ set_type(Type, Tuple, branch_state(Lbl, Vst)); + valfun_4({test,is_nonempty_list,{f,Lbl},[Cons]}, Vst) -> + assert_term(Cons, Vst), + set_type(cons, Cons, branch_state(Lbl, Vst)); +@@ -843,54 +844,25 @@ + assert_type(Needed, Actual) -> + error({bad_type,{needed,Needed},{actual,Actual}}). + +-%% upgrade_type/2 is used when linear code finds out more and +-%% more information about a type, so the type gets "narrower" +-%% or perhaps inconsistent. In the case of inconsistency +-%% we mostly widen the type to 'term' to make subsequent +-%% code fail if it assumes anything about the type. + +-upgrade_type(Same, Same) -> Same; +-upgrade_type(term, OldT) -> OldT; +-upgrade_type(NewT, term) -> NewT; +-upgrade_type({Type,New}=NewT, {Type,Old}=OldT) +- when Type == atom; Type == integer; Type == float -> +- if New =:= Old -> OldT; +- New =:= [] -> OldT; +- Old =:= [] -> NewT; +- true -> term +- end; +-upgrade_type({Type,_}=NewT, number) +- when Type == integer; Type == float -> +- NewT; +-upgrade_type(number, {Type,_}=OldT) +- when Type == integer; Type == float -> +- OldT; +-upgrade_type(bool, {atom,A}) -> +- upgrade_bool(A); +-upgrade_type({atom,A}, bool) -> +- upgrade_bool(A); +-upgrade_type({tuple,[Sz]}, {tuple,[OldSz]}) +- when is_integer(Sz) -> +- {tuple,[max(Sz, OldSz)]}; +-upgrade_type({tuple,Sz}=T, {tuple,[_]}) +- when is_integer(Sz) -> +- %% This also takes care of the user error when a tuple element +- %% is accesed outside the known exact tuple size; there is +- %% no more type information, just a runtime error which is not +- %% our problem. +- T; +-upgrade_type({tuple,[Sz]}, {tuple,_}=T) +- when is_integer(Sz) -> +- %% Same as the previous clause but mirrored. +- T; +-upgrade_type(_A, _B) -> +- %%io:format("upgrade_type: ~p ~p\n", [_A,_B]), +- term. ++%% upgrade_tuple_type(NewTupleType, OldType) -> TupleType. ++%% upgrade_tuple_type/2 is used when linear code finds out more and ++%% more information about a tuple type, so that the type gets more ++%% specialized. If OldType is not a tuple type, the type information ++%% is inconsistent, and we know that some instructions will never ++%% be executed at run-time. + +-upgrade_bool([]) -> bool; +-upgrade_bool(true) -> {atom,true}; +-upgrade_bool(false) -> {atom,false}; +-upgrade_bool(_) -> term. ++upgrade_tuple_type({tuple,[Sz]}, {tuple,[OldSz]}=T) when Sz < OldSz -> ++ %% The old type has a higher value for the least tuple size. ++ T; ++upgrade_tuple_type({tuple,_}=T, _) -> ++ %% The new type information is exact or has a higher value for ++ %% the least tuple size. ++ %% Note that inconsistencies are also handled in this ++ %% clause, e.g. if the old type was an integer or a tuple accessed ++ %% outside its size; inconsistences will generally cause an exception ++ %% at run-time but are safe from our point of view. ++ T. + + get_tuple_size({integer,[]}) -> 0; + get_tuple_size({integer,Sz}) -> Sz; +@@ -1172,7 +1144,7 @@ + end, + case get_term_type({x,0}, Vst) of + {integer,[]} -> TupleType; +- {integer,I} -> upgrade_type({tuple,[I]}, TupleType); ++ {integer,I} -> upgrade_tuple_type({tuple,[I]}, TupleType); + _ -> TupleType + end; + return_type_1(erlang, F, A, _) -> +@@ -1214,9 +1186,6 @@ + + min(A, B) when is_integer(A), is_integer(B), A < B -> A; + min(A, B) when is_integer(A), is_integer(B) -> B. +- +-max(A, B) when is_integer(A), is_integer(B), A > B -> A; +-max(A, B) when is_integer(A), is_integer(B) -> B. + + gb_trees_from_list(L) -> gb_trees:from_orddict(orddict:from_list(L)). + diff --git a/lang/erlang14/files/patch-lib_inets_src_http__client_httpc__request.erl b/lang/erlang14/files/patch-lib_inets_src_http__client_httpc__request.erl deleted file mode 100644 index 41663e663413..000000000000 --- a/lang/erlang14/files/patch-lib_inets_src_http__client_httpc__request.erl +++ /dev/null @@ -1,14 +0,0 @@ - -$FreeBSD$ - ---- lib/inets/src/http_client/httpc_request.erl.orig -+++ lib/inets/src/http_client/httpc_request.erl -@@ -78,7 +78,7 @@ - %%%======================================================================== - post_data(Method, Headers, {ContentType, Body}) - when Method == post; Method == put -> -- ContentLength = length(Body), -+ ContentLength = integer_to_list(length(Body)), - NewBody = case Headers#http_request_h.expect of - "100-continue" -> - ""; diff --git a/lang/erlang14/files/patch-lib_kernel_src_rpc.erl b/lang/erlang14/files/patch-lib_kernel_src_rpc.erl deleted file mode 100644 index 7a94e2a96574..000000000000 --- a/lang/erlang14/files/patch-lib_kernel_src_rpc.erl +++ /dev/null @@ -1,28 +0,0 @@ - -$FreeBSD$ - ---- lib/kernel/src/rpc.erl.orig -+++ lib/kernel/src/rpc.erl -@@ -495,16 +495,16 @@ - ReplyTo ! {self(), {promise_reply, R}} %% self() is key - end). - --yield(Key) when pid(Key) -> -- {value, R} = do_yield(Key, infinite), -+yield(Key) when is_pid(Key) -> -+ {value,R} = do_yield(Key, infinity), - R. - --nb_yield(Key, infinite) when pid(Key) -> -- do_yield(Key, infinite); --nb_yield(Key, Timeout) when pid(Key), integer(Timeout), Timeout >= 0 -> -+nb_yield(Key, infinity=Inf) when is_pid(Key) -> -+ do_yield(Key, Inf); -+nb_yield(Key, Timeout) when is_pid(Key), is_integer(Timeout), Timeout >= 0 -> - do_yield(Key, Timeout). - --nb_yield(Key) when pid(Key) -> -+nb_yield(Key) when is_pid(Key) -> - do_yield(Key, 0). - - do_yield(Key, Timeout) -> diff --git a/lang/erlang14/pkg-message b/lang/erlang14/pkg-message index d6bad9c38311..663ff59e717e 100644 --- a/lang/erlang14/pkg-message +++ b/lang/erlang14/pkg-message @@ -7,7 +7,7 @@ Installation tips: You can find an emacs mode for Erlang here: - ${LOCALBASE}/lib/erlang/lib/tools-2.4.1/emacs + ${LOCALBASE}/lib/erlang/lib/tools-2.4.2/emacs You may wish to add the following line to /etc/manpath.config: |