From f22a48f57668c742d35f73252def612fb2e2db4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Arroyo=20Calle?= Date: Tue, 6 Dec 2022 11:58:26 +0100 Subject: [PATCH 01/18] Compatible Doclog docs for library(sockets) --- src/lib/sockets.pl | 47 +++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 42 insertions(+), 5 deletions(-) diff --git a/src/lib/sockets.pl b/src/lib/sockets.pl index e2b1b723..541c3133 100644 --- a/src/lib/sockets.pl +++ b/src/lib/sockets.pl @@ -1,4 +1,9 @@ - +/** +Predicates for handling network sockets, both as a server and as a client. +As a server, you should open a socket an call socket\_server\_accept/4 to get a stream for each connection. +As a client, you should just open a socket and you will receive a stream. +In both cases, with a stream, you can use the usual predicates to read and write to the stream. +*/ :- module(sockets, [socket_client_open/3, socket_server_open/2, socket_server_accept/4, @@ -7,6 +12,18 @@ :- use_module(library(error)). +%% socket_client_open(+Addr, -Stream, +Options). +% +% Open a socket to a server, returning a stream. Addr must satisfy `Addr = Address:Port`. +% +% The following options are available: +% +% * alias(+Alias): Set an alias to the stream +% * eof_action(+Action): Defined what happens if the end of the stream is reached. Values: `error`, `eof_code` and `reset`. +% * reposition(+Boolean): Specifies whether repositioning is required for the stream. `false` is the default. +% * type(+Type): Type can be `text` or `binary`. Defines the type of the stream, if it's optimized for plain text +% or just binary +% socket_client_open(Addr, Stream, Options) :- ( var(Addr) -> throw(error(instantiation_error, socket_client_open/3)) @@ -27,7 +44,11 @@ socket_client_open(Addr, Stream, Options) :- socket_client_open/3), '$socket_client_open'(Address, Port, Stream, Alias, EOFAction, Reposition, Type). - +%% socket_server_open(+Addr, -ServerSocket). +% +% Open a server socket, returning a ServerSocket. Use that ServerSocket to accept incoming connections in +% socket\_server\_accept/4. Addr must satisfy `Addr = Address:Port`. Depending on the operating system +% configuration, some ports might be reserved for superusers. socket_server_open(Addr, ServerSocket) :- must_be(var, ServerSocket), ( ( integer(Addr) ; var(Addr) ) -> @@ -39,7 +60,19 @@ socket_server_open(Addr, ServerSocket) :- '$socket_server_open'(Address, Port, ServerSocket) ). - +%% socket_server_accept(+ServerSocket, -Client, -Stream, +Options). +% +% Given a ServerSocket and a list of Options, accepts a incoming connection, returning data from the Client and +% a Stream to read or write data. +% +% The following options are available: +% +% * alias(+Alias): Set an alias to the stream +% * eof_action(+Action): Defined what happens if the end of the stream is reached. Values: `error`, `eof_code` and `reset`. +% * reposition(+Boolean): Specifies whether repositioning is required for the stream. `false` is the default. +% * type(+Type): Type can be `text` or `binary`. Defines the type of the stream, if it's optimized for plain text +% or just binary +% socket_server_accept(ServerSocket, Client, Stream, Options) :- must_be(var, Client), must_be(var, Stream), @@ -48,10 +81,14 @@ socket_server_accept(ServerSocket, Client, Stream, Options) :- socket_server_accept/4), '$socket_server_accept'(ServerSocket, Client, Stream, Alias, EOFAction, Reposition, Type). - +%% socket_server_close(+ServerSocket). +% +% Stops listening on that ServerSocket. It's recommended to always close a ServerSocket once it's no longer needed socket_server_close(ServerSocket) :- '$socket_server_close'(ServerSocket). - +%% current_hostname(-HostName). +% +% Returns the current hostname of the computer in which Scryer Prolog is executing right now current_hostname(HostName) :- '$current_hostname'(HostName). From df4b56148f9c505cd170da8eb8b7cf35dfba823a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Arroyo=20Calle?= Date: Tue, 6 Dec 2022 13:19:10 +0100 Subject: [PATCH 02/18] Compatible Doclog docs for library(lists) --- src/lib/lists.pl | 203 +++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 171 insertions(+), 32 deletions(-) diff --git a/src/lib/lists.pl b/src/lib/lists.pl index 4eb204b1..15d9afa0 100644 --- a/src/lib/lists.pl +++ b/src/lib/lists.pl @@ -1,3 +1,7 @@ +/** +List manipulation predicates +*/ + :- module(lists, [member/2, select/3, append/2, append/3, foldl/4, foldl/5, memberchk/2, reverse/2, length/2, maplist/2, maplist/3, maplist/4, maplist/5, maplist/6, @@ -57,6 +61,18 @@ resource_error(Resource, Context) :- throw(error(resource_error(Resource), Context)). +%% length(?Xs, ?N). +% +% Relates a list to its length (number of items). It can be used to count the elements of a current list or +% to create a list full of free variables with N length. +% +% ?- length([a,b,c], 3). +% true. +% ?- length([a,b,c], N). +% N = 3. +% ?- length(Xs, 3). +% Xs = [_A, _B, _C]. + length(Xs0, N) :- '$skip_max_list'(M, N, Xs0,Xs), !, @@ -95,28 +111,61 @@ length_addendum([_|Xs], N, M) :- M1 is M + 1, length_addendum(Xs, N, M1). - +%% member(?X, ?Xs). +% +% Succeeds when X unifies with an item of the list Xs, which can be at any position. +% +% ?- member(X, "hello world"). +% X = h +% ; ... . +% member(X, [X|_]). member(X, [_|Xs]) :- member(X, Xs). - +%% select(X, Xs0, Xs1). +% +% Succeeds when the list Xs1 is the list Xs0 without the item X +% +% ?- select(c, "abcd", X). +% X = "abd". +% select(X, [X|Xs], Xs). select(X, [Y|Xs], [Y|Ys]) :- select(X, Xs, Ys). - +%% append(+XsXs, ?Xs). +% +% Concatenates a list of lists +% +% ?- append([[1, 2], [3]], Xs). +% Xs = [1, 2, 3]. +% append([], []). append([L0|Ls0], Ls) :- append(L0, Rest, Ls), append(Ls0, Rest). - +%% append(Xs0, Xs1, Xs). +% +% List Xs is the concatenation of Xs0 and Xs1 +% +% ?- append([1,2,3], [4,5,6], Xs). +% Xs = [1, 2, 3, 4, 5, 6]. +% append([], R, R). append([X|L], R, [X|S]) :- append(L, R, S). - +%% memberchk(?X, +Xs). +% +% This predicate is similar to member/2, but it only provides a single answer memberchk(X, Xs) :- member(X, Xs), !. - +%% reverse(?Xs, ?Ys). +% +% Xs is the Ys list in reverse order +% +% ?- reverse([1,2,3], [3,2,1]). +% true. +% reverse(Xs, Ys) :- ( nonvar(Xs) -> reverse(Xs, Ys, [], Xs) ; reverse(Ys, Xs, [], Ys) @@ -126,62 +175,111 @@ reverse([], [], YsRev, YsRev). reverse([_|Xs], [Y1|Ys], YsPreludeRev, Xss) :- reverse(Xs, Ys, [Y1|YsPreludeRev], Xss). +%% maplist(+Predicate, ?Xs0). +% +% This is a metapredicate that applies predicate to each element of the list Xs0 +% +% ?- maplist(write, [1,2,3]). +% 123 true. +% maplist(_, []). maplist(Cont1, [E1|E1s]) :- call(Cont1, E1), maplist(Cont1, E1s). +%% maplist(+Predicate, ?Xs0, ?Xs1). +% +% This is a metapredicate that applies predicate to each element of the lists Xs0 and Xs1. +% +% ?- maplist(length, ["hello", "prolog", "marseille"], Xs1). +% Xs1 = [5,6,9]. +% maplist(_, [], []). maplist(Cont2, [E1|E1s], [E2|E2s]) :- call(Cont2, E1, E2), maplist(Cont2, E1s, E2s). +%% maplist(+Predicate, ?Xs0, ?Xs1, ?Xs2). +% +% This is a metapredicate that applies predicate to each element of the lists Xs0, Xs1 and Xs2. maplist(_, [], [], []). maplist(Cont3, [E1|E1s], [E2|E2s], [E3|E3s]) :- call(Cont3, E1, E2, E3), maplist(Cont3, E1s, E2s, E3s). +%% maplist(+Predicate, ?Xs0, ?Xs1, ?Xs2, ?Xs3). +% +% This is a metapredicate that applies predicate to each element of the lists Xs0, Xs1, Xs2 and Xs3. maplist(_, [], [], [], []). maplist(Cont, [E1|E1s], [E2|E2s], [E3|E3s], [E4|E4s]) :- call(Cont, E1, E2, E3, E4), maplist(Cont, E1s, E2s, E3s, E4s). - +%% maplist(+Predicate, ?Xs0, ?Xs1, ?Xs2, ?Xs3, ?Xs4). +% +% This is a metapredicate that applies predicate to each element of the lists Xs0, Xs1, Xs2, Xs3 and Xs4. maplist(_, [], [], [], [], []). maplist(Cont, [E1|E1s], [E2|E2s], [E3|E3s], [E4|E4s], [E5|E5s]) :- call(Cont, E1, E2, E3, E4, E5), maplist(Cont, E1s, E2s, E3s, E4s, E5s). - +%% maplist(+Predicate, ?Xs0, ?Xs1, ?Xs2, ?Xs3, ?Xs4, ?Xs5). +% +% This is a metapredicate that applies predicate to each element of the lists Xs0, Xs1, Xs2, Xs3, Xs4 and Xs5. maplist(_, [], [], [], [], [], []). maplist(Cont, [E1|E1s], [E2|E2s], [E3|E3s], [E4|E4s], [E5|E5s], [E6|E6s]) :- call(Cont, E1, E2, E3, E4, E5, E6), maplist(Cont, E1s, E2s, E3s, E4s, E5s, E6s). - +%% maplist(+Predicate, ?Xs0, ?Xs1, ?Xs2, ?Xs3, ?Xs4, ?Xs5, ?Xs6). +% +% This is a metapredicate that applies predicate to each element of the lists Xs0, Xs1, Xs2, Xs3, Xs4, Xs5 and Xs6. maplist(_, [], [], [], [], [], [], []). maplist(Cont, [E1|E1s], [E2|E2s], [E3|E3s], [E4|E4s], [E5|E5s], [E6|E6s], [E7|E7s]) :- call(Cont, E1, E2, E3, E4, E5, E6, E7), maplist(Cont, E1s, E2s, E3s, E4s, E5s, E6s, E7s). - +%% maplist(+Predicate, ?Xs0, ?Xs1, ?Xs2, ?Xs3, ?Xs4, ?Xs5, ?Xs6, ?Xs7). +% +% This is a metapredicate that applies predicate to each element of the lists Xs0, Xs1, Xs2, Xs3, Xs4, Xs5, Xs6 and Xs7. maplist(_, [], [], [], [], [], [], [], []). maplist(Cont, [E1|E1s], [E2|E2s], [E3|E3s], [E4|E4s], [E5|E5s], [E6|E6s], [E7|E7s], [E8|E8s]) :- call(Cont, E1, E2, E3, E4, E5, E6, E7, E8), maplist(Cont, E1s, E2s, E3s, E4s, E5s, E6s, E7s, E8s). - +%% sum_list(+Xs, -Sum). +% +% Takes a lists of numbers and unifies Sum with the result of summing all the elements of the list. +% +% ?- sum_list([2,2,2], 6). +% true. sum_list(Ls, S) :- foldl(lists:sum_, Ls, 0, S). sum_(L, S0, S) :- S is S0 + L. - +%% same_length(?Xs, ?Ys). +% +% Succeeds if Xs and Ys are lists of the same length same_length([], []). same_length([_|As], [_|Bs]) :- same_length(As, Bs). +%% foldl(+Predicate, ?Ls, +A0, ?A). +% +% foldl, sometimes called reduce, is a metapredicate that takes a predicate, a list of items +% and a starting value, and outputs a single value. The predicate _Predicate_ must be able to take the current +% element of the list, the previous value of the computation and the next value of the computation. +% +% For example, if we define sum_ as: +% +% sum_(L, S0, S) :- S is S0 + L. +% +% Then we can define sum\_list/2 as the following: +% +% sum_list(Ls, S) :- foldl(sum_, Ls, 0, S). +% foldl(Goal_3, Ls, A0, A) :- foldl_(Ls, Goal_3, A0, A). @@ -191,7 +289,9 @@ foldl_([L|Ls], G_3, A0, A) :- call(G_3, L, A0, A1), foldl_(Ls, G_3, A1, A). - +%% foldl(+Predicate, ?Ls0, ?Ls1, +A0, ?A). +% +% Same as foldl/4 but with an extra list foldl(Goal_4, Xs, Ys, A0, A) :- foldl_(Xs, Ys, Goal_4, A0, A). @@ -201,6 +301,13 @@ foldl_([X|Xs], [Y|Ys], G_4, A0, A) :- call(G_4, X, Y, A0, A1), foldl_(Xs, Ys, G_4, A1, A). +%% transpose(?Ls, ?Ts). +% +% If Ls is a list of lists, Ts contains the transposition +% +% ?- transpose([[1,1],[2,2]], Ts). +% Ts = [[1,2],[1,2]]. +% transpose(Ls, Ts) :- lists_transpose(Ls, Ts). @@ -214,7 +321,13 @@ transpose_(_, Fs, Lists0, Lists) :- list_first_rest([L|Ls], L, Ls). - +%% list_to_set(+Ls0, -Set). +% +% Takes a list Ls0 and returns a list Set that doesn't contain any repeated element +% +% ?- list_to_set([2,3,4,4,1,2], Set). +% Set = [2,3,4,1]. +% list_to_set(Ls0, Ls) :- maplist(lists:with_var, Ls0, LVs0), keysort(LVs0, LVs), @@ -242,7 +355,12 @@ unify_same(E-V, Prev-Var, E-V) :- ; true ). - +%% nth0(?N, ?Ls, ?E). +% +% Succeeds if in the N position of the list Ls, we found the element E. The elements start counting from zero. +% +% ?- nth0(2, [1,2,3,4], 3). +% true. nth0(N, Es0, E) :- nonvar(N), '$skip_max_list'(Skip, N, Es0,Es1), @@ -277,6 +395,12 @@ nth0_el(N0,N, _,E, [E0|Es0]) :- N1 is N0+1, nth0_el(N1,N, E0,E, Es0). +%% nth1(?N, ?Ls, ?E). +% +% Succeeds if in the N position of the list Ls, we found the element E. The elements start counting from one. +% +% ?- nth1(2, [1,2,3,4], 2). +% true. nth1(N, Es0, E) :- N \== 0, nth0(N, [_|Es0], E), @@ -291,6 +415,12 @@ skipn(N0, Es0,Es, Xs0,Xs) :- skipn(N1, Es1,Es, Xs1,Xs). skipn(0, Es,Es, Xs,Xs). +%% nth0(?N, ?Ls, ?E, ?Rs). +% +% Succeeds if in the N position of the list Ls, we found the element E and the rest of the list is Rs. The elements start counting from zero. +% +% ?- nth0(2, [1,2,3,4], 3, [1,2,4]). +% true. nth0(N, Es0, E, Es) :- integer(N), N >= 0, @@ -315,45 +445,54 @@ nth0_elx(N0,N, E0,E, [E1|Es0], [E0|Es]) :- % p.p.8.5 +%% nth1(?N, ?Ls, ?E, ?Rs). +% +% Succeeds if in the N position of the list Ls, we found the element E and the rest of the list is Rs. The elements start counting from one. +% +% ?- nth1(2, [1,2,3,4], 2, [1,3,4]). +% true. nth1(N, Es0, E, Es) :- N \== 0, nth0(N, [_|Es0], E, [_|Es]), N \== 0. - +%% list_max(+Xs, -Max). +% +% Takes a list Xs and unifies with the maximum value of the list list_max([N|Ns], Max) :- foldl(lists:list_max_, Ns, N, Max). list_max_(N, Max0, Max) :- Max is max(N, Max0). +%% list_min(+Xs, -Min). +% +% Takes a list Xs and unifies with the minimum value of the list list_min([N|Ns], Min) :- foldl(lists:list_min_, Ns, N, Min). list_min_(N, Min0, Min) :- Min is min(N, Min0). -%! permutation(?Xs, ?Ys) is nondet. +%% permutation(?Xs, ?Ys) is nondet. % -% True when Xs is a permutation of Ys. This can solve for Ys given -% Xs or Xs given Ys, or even enumerate Xs and Ys together. The -% predicate permutation/2 is primarily intended to generate -% permutations. Note that a list of length N has N! permutations, -% and unbounded permutation generation becomes prohibitively -% expensive, even for rather short lists (10! = 3,628,800). +% True when Xs is a permutation of Ys. This can solve for Ys given +% Xs or Xs given Ys, or even enumerate Xs and Ys together. The +% predicate permutation/2 is primarily intended to generate +% permutations. Note that a list of length N has N! permutations, +% and unbounded permutation generation becomes prohibitively +% expensive, even for rather short lists (10! = 3,628,800). % -% The example below illustrates that Xs and Ys being proper lists -% is not a sufficient condition to use the above replacement. +% The example below illustrates that Xs and Ys being proper lists +% is not a sufficient condition to use the above replacement. % -% == % ?- permutation([1,2], [X,Y]). -% X = 1, Y = 2 ; -% X = 2, Y = 1 ; -% false. -% == +% X = 1, Y = 2 +% ; X = 2, Y = 1 +% ; false. % -% @error type_error(list, Arg) if either argument is not a proper -% or partial list. +% Throws type\_error(list, Arg) if either argument is not a proper +% or partial list. permutation(Xs, Ys) :- '$skip_max_list'(Xlen, _, Xs, XTail), From 56e5da6680f9259e292285b7a1dd2901d55b13a7 Mon Sep 17 00:00:00 2001 From: Markus Triska Date: Tue, 6 Dec 2022 20:24:08 +0100 Subject: [PATCH 03/18] introduce and use deref_register(n) --- src/machine/system_calls.rs | 411 ++++++++++++++++-------------------- 1 file changed, 187 insertions(+), 224 deletions(-) diff --git a/src/machine/system_calls.rs b/src/machine/system_calls.rs index 87ab9e48..f0dbc178 100644 --- a/src/machine/system_calls.rs +++ b/src/machine/system_calls.rs @@ -988,6 +988,11 @@ impl MachineState { } impl Machine { + #[inline(always)] + pub(crate) fn deref_register(&mut self, i: usize) -> HeapCellValue { + self.machine_st.store(self.machine_st.deref(self.machine_st.registers[i])) + } + #[inline(always)] pub(crate) fn call_inline( &mut self, @@ -995,7 +1000,7 @@ impl Machine { call_at_index: impl Fn(&mut Machine, Atom, usize, IndexPtr) -> CallResult, ) -> CallResult { let arity = arity - 1; - let goal = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])); + let goal = self.deref_register(1); let load_registers = |machine_st: &mut MachineState, goal: HeapCellValue| -> Option { read_heap_cell!(goal, @@ -1060,8 +1065,8 @@ impl Machine { #[inline(always)] pub(crate) fn compile_inline_or_expanded_goal(&mut self) -> CallResult { - let goal = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])); - let module_name = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[4])); + let goal = self.deref_register(1); + let module_name = self.deref_register(4); // supp_vars are the supplementary variables generated by // complete_partial_goal prior to goal_expansion. @@ -1364,7 +1369,7 @@ impl Machine { #[inline(always)] pub(crate) fn bind_from_register(&mut self) { - let reg = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[2])); + let reg = self.deref_register(2); let n = match Number::try_from(reg) { Ok(Number::Fixnum(n)) => usize::try_from(n.get_num()).ok(), Ok(Number::Integer(n)) => n.to_usize(), @@ -1393,9 +1398,10 @@ impl Machine { Some(host) => { let hostname = self.machine_st.atom_tbl.build_with(host); + let a1 = self.deref_register(1); self.machine_st.unify_atom( hostname, - self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])) + a1 ); return; @@ -1410,7 +1416,7 @@ impl Machine { #[inline(always)] pub(crate) fn current_input(&mut self) -> CallResult { - let addr = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])); + let addr = self.deref_register(1); let stream = self.user_input; if let Some(var) = addr.as_var() { @@ -1445,7 +1451,7 @@ impl Machine { #[inline(always)] pub(crate) fn current_output(&mut self) -> CallResult { - let addr = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])); + let addr = self.deref_register(1); let stream = self.user_output; if let Some(var) = addr.as_var() { @@ -1562,9 +1568,7 @@ impl Machine { #[inline(always)] pub(crate) fn file_time(&mut self) { if let Some(file) = self.machine_st.value_to_str_like(self.machine_st.registers[1]) { - let which = cell_as_atom!(self.machine_st.store(self.machine_st.deref( - self.machine_st.registers[2] - ))); + let which = cell_as_atom!(self.deref_register(2)); if let Ok(md) = fs::metadata(file.as_str()) { if let Ok(time) = match which { @@ -1677,16 +1681,17 @@ impl Machine { let current_atom = self.machine_st.atom_tbl.build_with(¤t); + let a1 = self.deref_register(1); self.machine_st.unify_complete_string( current_atom, - self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])), + a1 ); if self.machine_st.fail { return Ok(()); } - let target = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[2])); + let target = self.deref_register(2); if let Some(next) = self.machine_st.value_to_str_like(target) { if env::set_current_dir(std::path::Path::new(next.as_str())).is_ok() { @@ -1717,9 +1722,10 @@ impl Machine { let canonical_atom = self.machine_st.atom_tbl.build_with(cs); + let a2 = self.deref_register(2); self.machine_st.unify_complete_string( canonical_atom, - self.machine_st.store(self.machine_st.deref(self.machine_st.registers[2])), + a2 ); return Ok(()); @@ -1735,7 +1741,8 @@ impl Machine { #[inline(always)] pub(crate) fn atom_chars(&mut self) { - let a1 = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])); + let a1 = self.deref_register(1); + let a2 = self.deref_register(2); read_heap_cell!(a1, (HeapCellValueTag::Char) => { @@ -1753,7 +1760,7 @@ impl Machine { if arity == 0 { self.machine_st.unify_complete_string( name, - self.machine_st.store(self.machine_st.deref(self.machine_st.registers[2])), + a2, ); } else { self.machine_st.fail = true; @@ -1763,14 +1770,14 @@ impl Machine { if arity == 0 { self.machine_st.unify_complete_string( name, - self.machine_st.store(self.machine_st.deref(self.machine_st.registers[2])), + a2, ); } else { self.machine_st.fail = true; } } (HeapCellValueTag::Var | HeapCellValueTag::AttrVar | HeapCellValueTag::StackVar) => { - let a2 = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[2])); + let a2 = self.deref_register(2); if let Some(str_like) = self.machine_st.value_to_str_like(a2) { let atom_cell = match str_like { @@ -1800,7 +1807,7 @@ impl Machine { #[inline(always)] pub(crate) fn atom_codes(&mut self) -> CallResult { - let a1 = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])); + let a1 = self.deref_register(1); read_heap_cell!(a1, (HeapCellValueTag::Char, c) => { @@ -1861,7 +1868,7 @@ impl Machine { #[inline(always)] pub(crate) fn atom_length(&mut self) { - let a1 = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])); + let a1 = self.deref_register(1); let len: i64 = read_heap_cell!(a1, (HeapCellValueTag::Str, s) => { @@ -1891,16 +1898,17 @@ impl Machine { } ); + let a2 = self.deref_register(2); self.machine_st.unify_fixnum( Fixnum::build_with(len), - self.machine_st.store(self.machine_st.deref(self.machine_st.registers[2])), + a2, ); } #[inline(always)] pub(crate) fn call_continuation(&mut self, last_call: bool) -> CallResult { let stub_gen = || functor_stub(atom!("call_continuation"), 1); - let a1 = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])); + let a1 = self.deref_register(1); match self.machine_st.try_from_list(a1, stub_gen) { Err(e) => Err(e), @@ -1925,7 +1933,7 @@ impl Machine { #[inline(always)] pub(crate) fn chars_to_number(&mut self) -> CallResult { let stub_gen = || functor_stub(atom!("number_chars"), 2); - let a1 = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])); + let a1 = self.deref_register(1); let atom_or_string = self.machine_st.value_to_str_like(a1).unwrap(); self.machine_st.parse_number_from_string( @@ -1938,7 +1946,7 @@ impl Machine { #[inline(always)] pub(crate) fn create_partial_string(&mut self) { let atom = cell_as_atom!( - self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])) + self.deref_register(1) ); if atom == atom!("") { @@ -1961,7 +1969,7 @@ impl Machine { #[inline(always)] pub(crate) fn is_partial_string(&mut self) { - let value = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])); + let value = self.deref_register(1); let h = self.machine_st.heap.len(); self.machine_st.heap.push(value); @@ -1978,7 +1986,8 @@ impl Machine { #[inline(always)] pub(crate) fn partial_string_tail(&mut self) { - let pstr = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])); + let pstr = self.deref_register(1); + let a2 = self.deref_register(2); read_heap_cell!(pstr, (HeapCellValueTag::PStrLoc, h) => { @@ -1987,20 +1996,20 @@ impl Machine { if HeapCellValueTag::CStr == self.machine_st.heap[h].get_tag() { self.machine_st.unify_atom( atom!("[]"), - self.machine_st.store(self.machine_st.deref(self.machine_st.registers[2])) + a2 ); } else { unify_fn!( self.machine_st, heap_loc_as_cell!(h+1), - self.machine_st.registers[2] + a2 ); } } (HeapCellValueTag::CStr) => { self.machine_st.unify_atom( atom!("[]"), - self.machine_st.store(self.machine_st.deref(self.machine_st.registers[2])) + a2 ); } (HeapCellValueTag::Lis, h) => { @@ -2043,18 +2052,20 @@ impl Machine { } } + let addr = self.deref_register(2); + if stream.at_end_of_stream() { stream.set_past_end_of_stream(true); self.machine_st.unify_fixnum( Fixnum::build_with(-1), - self.machine_st.store(self.machine_st.deref(self.machine_st.registers[2])), + addr, ); return Ok(()); } - let addr = match self.machine_st.store(self.machine_st.deref(self.machine_st.registers[2])) { + match addr { addr if addr.is_var() => addr, addr => match Number::try_from(addr) { Ok(Number::Integer(n)) => { @@ -2136,20 +2147,20 @@ impl Machine { } } + let a2 = self.deref_register(2); + if stream.at_end_of_stream() { let end_of_file = atom!("end_of_file"); stream.set_past_end_of_stream(true); self.machine_st.unify_atom( end_of_file, - self.machine_st.store(self.machine_st.deref(self.machine_st.registers[2])), + a2, ); return Ok(()); } - let a2 = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[2])); - let a2 = read_heap_cell!(a2, (HeapCellValueTag::Char) => { a2 @@ -2233,20 +2244,20 @@ impl Machine { } } + let a2 = self.deref_register(2); + if stream.at_end_of_stream() { let end_of_file = atom!("end_of_file"); stream.set_past_end_of_stream(true); self.machine_st.unify_atom( end_of_file, - self.machine_st.store(self.machine_st.deref(self.machine_st.registers[2])), + a2, ); return Ok(()); } - let a2 = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[2])); - let addr = read_heap_cell!(a2, (HeapCellValueTag::Var | HeapCellValueTag::StackVar | HeapCellValueTag::AttrVar) => { a2 @@ -2319,10 +2330,8 @@ impl Machine { #[inline(always)] pub(crate) fn number_to_chars(&mut self) { - let n = self.machine_st.registers[1]; - let chs = self.machine_st.registers[2]; - - let n = self.machine_st.store(self.machine_st.deref(n)); + let n = self.deref_register(1); + let chs = self.deref_register(2); let string = match Number::try_from(n) { Ok(Number::Float(OrderedFloat(n))) => { @@ -2344,13 +2353,13 @@ impl Machine { let chars_atom = self.machine_st.atom_tbl.build_with(&string.trim()); self.machine_st.unify_complete_string( chars_atom, - self.machine_st.store(self.machine_st.deref(chs)), + chs, ); } #[inline(always)] pub(crate) fn number_to_codes(&mut self) { - let n = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])); + let n = self.deref_register(1); let chs = self.machine_st.registers[2]; let string = match Number::try_from(n) { @@ -2406,7 +2415,8 @@ impl Machine { #[inline(always)] pub(crate) fn char_code(&mut self) -> CallResult { let stub_gen = || functor_stub(atom!("char_code"), 2); - let a1 = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])); + let a1 = self.deref_register(1); + let a2 = self.deref_register(2); let c = read_heap_cell!(a1, (HeapCellValueTag::Atom, (name, _arity)) => { @@ -2423,8 +2433,6 @@ impl Machine { c } _ => { - let a2 = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[2])); - match Number::try_from(a2) { Ok(Number::Integer(n)) => { let c = match n.to_u32().and_then(std::char::from_u32) { @@ -2462,7 +2470,7 @@ impl Machine { self.machine_st.unify_fixnum( Fixnum::build_with(c as i64), - self.machine_st.store(self.machine_st.deref(self.machine_st.registers[2])), + a2, ); Ok(()) @@ -2470,8 +2478,8 @@ impl Machine { #[inline(always)] pub(crate) fn char_type(&mut self) { - let a1 = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])); - let a2 = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[2])); + let a1 = self.deref_register(1); + let a2 = self.deref_register(2); let c = read_heap_cell!(a1, (HeapCellValueTag::Char, c) => { @@ -2558,7 +2566,7 @@ impl Machine { #[inline(always)] pub(crate) fn check_cut_point(&mut self) { - let addr = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])); + let addr = self.deref_register(1); let old_b = cell_as_fixnum!(addr).get_num() as usize; let prev_b = self.machine_st.stack.index_or_frame(self.machine_st.b).prelude.b; @@ -2576,7 +2584,7 @@ impl Machine { #[inline(always)] pub(crate) fn fetch_global_var(&mut self) { - let key = cell_as_atom!(self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1]))); + let key = cell_as_atom!(self.deref_register(1)); let addr = self.machine_st.registers[2]; match self.indices.global_variables.get_mut(&key) { @@ -2621,7 +2629,7 @@ impl Machine { )?; let stub_gen = || functor_stub(atom!("put_code"), 2); - let addr = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[2])); + let addr = self.deref_register(2); if addr.is_var() { let err = self.machine_st.instantiation_error(); @@ -2671,7 +2679,7 @@ impl Machine { )?; let stub_gen = || functor_stub(atom!("put_char"), 2); - let addr = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[2])); + let addr = self.deref_register(2); if addr.is_var() { let err = self.machine_st.instantiation_error(); @@ -2757,7 +2765,7 @@ impl Machine { )?; let stub_gen = || functor_stub(atom!("put_byte"), 2); - let addr = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[2])); + let addr = self.deref_register(2); if addr.is_var() { let err = self.machine_st.instantiation_error(); @@ -2833,7 +2841,7 @@ impl Machine { } let stub_gen = || functor_stub(atom!("get_byte"), 2); - let addr = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[2])); + let addr = self.deref_register(2); let addr = if addr.is_var() { addr @@ -2912,13 +2920,15 @@ impl Machine { } } + let addr = self.deref_register(2); + if stream.at_end_of_stream() { let end_of_file = atom!("end_of_file"); stream.set_past_end_of_stream(true); self.machine_st.unify_atom( end_of_file, - self.machine_st.store(self.machine_st.deref(self.machine_st.registers[2])) + addr ); return Ok(()); @@ -2927,8 +2937,6 @@ impl Machine { let stub_gen = || functor_stub(atom!("get_char"), 2); let mut iter = self.machine_st.open_parsing_stream(stream, atom!("get_char"), 2)?; - let addr = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[2])); - let addr = if addr.is_var() { addr } else { @@ -2983,7 +2991,7 @@ impl Machine { 3, )?; - let num = match Number::try_from(self.machine_st.store(self.machine_st.deref(self.machine_st.registers[2]))) { + let num = match Number::try_from(self.deref_register(2)) { Ok(Number::Fixnum(n)) => usize::try_from(n.get_num()).unwrap(), Ok(Number::Integer(n)) => match n.to_usize() { Some(u) => u, @@ -3025,7 +3033,7 @@ impl Machine { } }; - let output = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[3])); + let output = self.deref_register(3); let atom = self.machine_st.atom_tbl.build_with(&string); self.machine_st.unify_complete_string(atom, output); @@ -3057,19 +3065,20 @@ impl Machine { } } + let addr = self.deref_register(2); + if stream.at_end_of_stream() { stream.set_past_end_of_stream(true); self.machine_st.unify_fixnum( Fixnum::build_with(-1), - self.machine_st.store(self.machine_st.deref(self.machine_st.registers[2])), + addr, ); return Ok(()); } let stub_gen = || functor_stub(atom!("get_code"), 2); - let addr = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[2])); let addr = if addr.is_var() { addr @@ -3155,9 +3164,7 @@ impl Machine { if let Some(first_stream) = first_stream { let stream = stream_as_cell!(first_stream); - let var = self.machine_st.store(self.machine_st.deref( - self.machine_st.registers[1] - )).as_var().unwrap(); + let var = self.deref_register(1).as_var().unwrap(); self.machine_st.bind(var, stream); } else { @@ -3167,9 +3174,7 @@ impl Machine { #[inline(always)] pub(crate) fn next_stream(&mut self) { - let prev_stream = cell_as_stream!(self.machine_st.store(self.machine_st.deref( - self.machine_st.registers[1] - ))); + let prev_stream = cell_as_stream!(self.deref_register(1)); let mut next_stream = None; let mut null_streams = BTreeSet::new(); @@ -3191,9 +3196,7 @@ impl Machine { self.indices.streams = self.indices.streams.sub(&null_streams); if let Some(next_stream) = next_stream { - let var = self.machine_st.store(self.machine_st.deref( - self.machine_st.registers[2] - )).as_var().unwrap(); + let var = self.deref_register(2).as_var().unwrap(); let next_stream = stream_as_cell!(next_stream); self.machine_st.bind(var, next_stream); @@ -3252,9 +3255,10 @@ impl Machine { _ => unreachable!(), }; + let a1 = self.deref_register(1); self.machine_st.unify_char( c, - self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])), + a1, ); Ok(()) @@ -3262,12 +3266,10 @@ impl Machine { #[inline(always)] pub(crate) fn head_is_dynamic(&mut self) { - let module_name = cell_as_atom!(self.machine_st.store(self.machine_st.deref( - self.machine_st.registers[1]) - )); + let module_name = cell_as_atom!(self.deref_register(1)); let (name, arity) = read_heap_cell!( - self.machine_st.store(self.machine_st.deref(self.machine_st.registers[2])), + self.deref_register(2), (HeapCellValueTag::Str, s) => { cell_as_atom_cell!(self.machine_st.heap[s]).get_name_and_arity() } @@ -3337,7 +3339,7 @@ impl Machine { #[inline(always)] pub(crate) fn copy_to_lifted_heap(&mut self) { let lh_offset = cell_as_fixnum!( - self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])) + self.deref_register(1) ).get_num() as usize; let copy_target = self.machine_st.registers[2]; @@ -3354,7 +3356,7 @@ impl Machine { #[inline(always)] pub(crate) fn delete_attribute(&mut self) { - let ls0 = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])); + let ls0 = self.deref_register(1); if let HeapCellValueTag::Lis = ls0.get_tag() { let l1 = ls0.get_value(); @@ -3392,7 +3394,7 @@ impl Machine { #[inline(always)] pub(crate) fn delete_head_attribute(&mut self) { - let addr = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])); + let addr = self.deref_register(1); debug_assert_eq!(addr.get_tag(), HeapCellValueTag::AttrVar); @@ -3422,9 +3424,7 @@ impl Machine { &mut self, narity: usize, ) -> Result<(Atom, PredicateKey), MachineStub> { - let module_name = self.machine_st.store(self.machine_st.deref( - self.machine_st.registers[1] - )); + let module_name = self.deref_register(1); let module_name = read_heap_cell!(module_name, (HeapCellValueTag::Atom, (name, _arity)) => { @@ -3446,9 +3446,7 @@ impl Machine { } ); - let goal = self.machine_st.store(self.machine_st.deref( - self.machine_st.registers[2] - )); + let goal = self.deref_register(2); let (name, arity, s) = self.machine_st.setup_call_n_init_goal_info(goal, narity)?; @@ -3477,7 +3475,7 @@ impl Machine { #[inline(always)] pub(crate) fn enqueue_attributed_var(&mut self) { - let addr = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])); + let addr = self.deref_register(1); read_heap_cell!(addr, (HeapCellValueTag::AttrVar, h) => { @@ -3490,7 +3488,7 @@ impl Machine { #[inline(always)] pub(crate) fn get_next_db_ref(&mut self) { - let a1 = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])); + let a1 = self.deref_register(1); if let Some(name_var) = a1.as_var() { let mut iter = self.indices.code_dir.iter(); @@ -3508,9 +3506,7 @@ impl Machine { self.machine_st.fail = true; } else if a1.get_tag() == HeapCellValueTag::Atom { let name = cell_as_atom!(a1); - let arity = cell_as_fixnum!(self.machine_st.store(self.machine_st.deref( - self.machine_st.registers[2]) - )).get_num() as usize; + let arity = cell_as_fixnum!(self.deref_register(2)).get_num() as usize; match self.machine_st.get_next_db_ref(&self.indices, &DBRef::NamedPred(name, arity)) { Some(DBRef::NamedPred(name, arity)) => { @@ -3534,12 +3530,12 @@ impl Machine { #[inline(always)] pub(crate) fn get_next_op_db_ref(&mut self) { - let prec = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])); + let prec = self.deref_register(1); if let Some(prec_var) = prec.as_var() { - let spec = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[2])); - let op = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[3])); - let orig_op = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[7])); + let spec = self.deref_register(2); + let op = self.deref_register(3); + let orig_op = self.deref_register(7); let spec_num = if spec.get_tag() == HeapCellValueTag::Atom { (match cell_as_atom!(spec) { @@ -3666,9 +3662,7 @@ impl Machine { match ossified_op_dir.iter().next() { Some(((op_atom, _), (op_prec, op_spec))) => { - let ossified_op_dir_var = self.machine_st.store(self.machine_st.deref( - self.machine_st.registers[4] - )).as_var().unwrap(); + let ossified_op_dir_var = self.deref_register(4).as_var().unwrap(); let spec_atom = match *op_spec { FX => atom!("fx"), @@ -3698,9 +3692,9 @@ impl Machine { } } } else { - let spec = cell_as_atom!(self.machine_st.store(self.machine_st.deref(self.machine_st.registers[2]))); - let op_atom = cell_as_atom!(self.machine_st.store(self.machine_st.deref(self.machine_st.registers[3]))); - let ossified_op_dir_cell = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[4])); + let spec = cell_as_atom!(self.deref_register(2)); + let op_atom = cell_as_atom!(self.deref_register(3)); + let ossified_op_dir_cell = self.deref_register(4); if ossified_op_dir_cell.is_var() { self.machine_st.fail = true; @@ -3783,7 +3777,7 @@ impl Machine { #[inline(always)] pub(crate) fn det_length_rundown(&mut self) -> CallResult { let stub_gen = || functor_stub(atom!("length"), 2); - let len = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[2])); + let len = self.deref_register(2); let n = match Number::try_from(len) { Ok(Number::Fixnum(n)) => n.get_num() as usize, @@ -3806,7 +3800,7 @@ impl Machine { (0 .. n).map(|i| heap_loc_as_cell!(h + 2 * i + 1)), ); - let tail = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])); + let tail = self.deref_register(1); self.machine_st.bind(tail.as_var().unwrap(), heap_loc_as_cell!(h)); Ok(()) @@ -3814,8 +3808,8 @@ impl Machine { #[inline(always)] pub(crate) fn http_open(&mut self) -> CallResult { - let address_sink = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])); - let method = read_heap_cell!(self.machine_st.store(self.machine_st.deref(self.machine_st.registers[3])), + let address_sink = self.deref_register(1); + let method = read_heap_cell!(self.deref_register(3), (HeapCellValueTag::Atom, (name, arity)) => { debug_assert_eq!(arity, 0); match name { @@ -3832,8 +3826,8 @@ impl Machine { unreachable!() } ); - let address_status = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[4])); - let address_data = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[5])); + let address_status = self.deref_register(4); + let address_data = self.deref_register(5); let mut bytes: Vec = Vec::new(); if let Some(string) = self.machine_st.value_to_str_like(address_data) { bytes = string.as_str().bytes().collect(); @@ -3915,7 +3909,7 @@ impl Machine { stream_as_cell!(stream) }); - let stream_addr = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[2])); + let stream_addr = self.deref_register(2); self.machine_st.bind(stream_addr.as_var().unwrap(), stream); } else { @@ -3930,7 +3924,7 @@ impl Machine { #[inline(always)] pub(crate) fn http_listen(&mut self) -> CallResult { - let address_sink = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])); + let address_sink = self.deref_register(1); if let Some(address_str) = self.machine_st.value_to_str_like(address_sink) { let address_string = address_str.as_str(); let addr: SocketAddr = match address_string.to_socket_addrs().ok().and_then(|mut s| s.next()) { @@ -3965,7 +3959,7 @@ impl Machine { }); let http_listener = HttpListener { incoming: rx }; let http_listener = arena_alloc!(http_listener, &mut self.machine_st.arena); - let addr = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[2])); + let addr = self.deref_register(2); self.machine_st.bind(addr.as_var().unwrap(), typed_arena_ptr_as_cell!(http_listener)); } Ok(()) @@ -3973,12 +3967,12 @@ impl Machine { #[inline(always)] pub(crate) fn http_accept(&mut self) -> CallResult { - let culprit = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])); - let method = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[2])); - let path = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[3])); - let query = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[5])); - let stream_addr = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[6])); - let handle_addr = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[7])); + let culprit = self.deref_register(1); + let method = self.deref_register(2); + let path = self.deref_register(3); + let query = self.deref_register(5); + let stream_addr = self.deref_register(6); + let handle_addr = self.deref_register(7); read_heap_cell!(culprit, (HeapCellValueTag::Cons, cons_ptr) => { match_untyped_arena_ptr!(cons_ptr, @@ -4056,8 +4050,8 @@ impl Machine { #[inline(always)] pub(crate) fn http_answer(&mut self) -> CallResult { - let culprit = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])); - let status_code = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[2])); + let culprit = self.deref_register(1); + let status_code = self.deref_register(2); let status_code: u16 = match Number::try_from(status_code) { Ok(Number::Fixnum(n)) => n.get_num() as u16, Ok(Number::Integer(n)) => match n.to_u16() { @@ -4089,7 +4083,7 @@ impl Machine { }, Err(e) => return Err(e) }; - let stream_addr = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[4])); + let stream_addr = self.deref_register(4); read_heap_cell!(culprit, (HeapCellValueTag::Cons, cons_ptr) => { @@ -4139,7 +4133,7 @@ impl Machine { let stream_type = self.machine_st.registers[7]; let options = self.machine_st.to_stream_options(alias, eof_action, reposition, stream_type); - let src_sink = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])); + let src_sink = self.deref_register(1); if let Some(file_spec) = self.machine_st.value_to_str_like(src_sink) { let file_spec = file_spec.as_atom(&mut self.machine_st.atom_tbl); @@ -4157,7 +4151,7 @@ impl Machine { self.indices.stream_aliases.insert(alias, stream); } - let stream_var = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[3])); + let stream_var = self.deref_register(3); self.machine_st.bind(stream_var.as_var().unwrap(), stream_as_cell!(stream)); } else { let err = self.machine_st.domain_error(DomainErrorType::SourceSink, src_sink); @@ -4262,7 +4256,7 @@ impl Machine { #[inline(always)] pub(crate) fn get_attributed_variable_list(&mut self) { - let attr_var = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])); + let attr_var = self.deref_register(1); let attr_var_list = read_heap_cell!(attr_var, (HeapCellValueTag::AttrVar, h) => { h + 1 @@ -4283,7 +4277,7 @@ impl Machine { } ); - let list_addr = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[2])); + let list_addr = self.deref_register(2); self.machine_st.bind(Ref::heap_cell(attr_var_list), list_addr); } @@ -4323,12 +4317,10 @@ impl Machine { #[inline(always)] pub(crate) fn get_continuation_chunk(&mut self) { - let e = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])); + let e = self.deref_register(1); let e = cell_as_fixnum!(e).get_num() as usize; - let p_functor = self.machine_st.store(self.machine_st.deref( - self.machine_st.registers[2] - )); + let p_functor = self.deref_register(2); let p = to_local_code_ptr(&self.machine_st.heap, p_functor).unwrap(); @@ -4421,7 +4413,7 @@ impl Machine { #[inline(always)] pub(crate) fn get_double_quotes(&mut self) { - let a1 = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])); + let a1 = self.deref_register(1); self.machine_st.unify_atom( match self.machine_st.flags.double_quotes { @@ -4457,7 +4449,7 @@ impl Machine { #[inline(always)] pub(crate) fn halt(&mut self) { - let code = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])); + let code = self.deref_register(1); let code = match Number::try_from(code) { Ok(Number::Fixnum(n)) => i32::try_from(n.get_num()).unwrap(), @@ -4491,8 +4483,8 @@ impl Machine { #[inline(always)] pub(crate) fn install_inference_counter(&mut self) -> CallResult { // A1 = B, A2 = L - let a1 = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])); - let a2 = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[2])); + let a1 = self.deref_register(1); + let a2 = self.deref_register(2); let n = match Number::try_from(a2) { Ok(Number::Fixnum(bp)) => bp.get_num() as usize, @@ -4514,7 +4506,7 @@ impl Machine { self.machine_st.increment_call_count_fn = MachineState::increment_call_count; - let a3 = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[3])); + let a3 = self.deref_register(3); self.machine_st.unify_big_int(count, a3); Ok(()) @@ -4522,24 +4514,18 @@ impl Machine { #[inline(always)] pub(crate) fn module_exists(&mut self) { - let module = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])); + let module = self.deref_register(1); let module_name = cell_as_atom!(module); self.machine_st.fail = !self.indices.modules.contains_key(&module_name); } - pub(crate) fn predicate_defined(&self) -> bool { - let module_name = cell_as_atom!(self.machine_st.store(self.machine_st.deref( - self.machine_st.registers[1] - ))); + pub(crate) fn predicate_defined(&mut self) -> bool { + let module_name = cell_as_atom!(self.deref_register(1)); + let name = cell_as_atom!(self.deref_register(2)); + let a3 = self.deref_register(3); - let name = cell_as_atom!(self.machine_st.store(self.machine_st.deref( - self.machine_st.registers[2] - ))); - - let arity = match Number::try_from(self.machine_st.store(self.machine_st.deref( - self.machine_st.registers[3] - ))) { + let arity = match Number::try_from(a3) { Ok(Number::Fixnum(n)) => n.get_num() as usize, Ok(Number::Integer(n)) => { if let Some(n) = n.to_usize() { @@ -4563,11 +4549,9 @@ impl Machine { #[inline(always)] pub(crate) fn no_such_predicate(&mut self) -> CallResult { - let module_name = cell_as_atom!(self.machine_st.store(self.machine_st.deref( - self.machine_st.registers[1] - ))); + let module_name = cell_as_atom!(self.deref_register(1)); - let head = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[2])); + let head = self.deref_register(2); self.machine_st.fail = read_heap_cell!(head, (HeapCellValueTag::Str, s) => { @@ -4623,8 +4607,8 @@ impl Machine { } #[inline(always)] pub(crate) fn redo_attr_var_binding(&mut self) { - let var = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])); - let value = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[2])); + let var = self.deref_register(1); + let value = self.deref_register(2); debug_assert_eq!(HeapCellValueTag::AttrVar, var.get_tag()); self.machine_st.heap[var.get_value()] = value; @@ -4653,9 +4637,7 @@ impl Machine { #[inline(always)] pub(crate) fn remove_call_policy_check(&mut self) { - let bp = cell_as_fixnum!(self.machine_st.store(self.machine_st.deref( - self.machine_st.registers[1] - ))).get_num() as usize; + let bp = cell_as_fixnum!(self.deref_register(1)).get_num() as usize; if bp == self.machine_st.b && self.machine_st.cwil.is_empty() { self.machine_st.cwil.reset(); @@ -4665,13 +4647,13 @@ impl Machine { #[inline(always)] pub(crate) fn remove_inference_counter(&mut self) { - let a1 = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])); + let a1 = self.deref_register(1); let bp = cell_as_fixnum!(a1).get_num() as usize; let count = self.machine_st.cwil.remove_limit(bp).clone(); let count = arena_alloc!(count.clone(), &mut self.machine_st.arena); - let a2 = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[2])); + let a2 = self.deref_register(2); self.machine_st.unify_big_int(count, a2); } @@ -4720,9 +4702,7 @@ impl Machine { #[inline(always)] pub(crate) fn set_input(&mut self) -> CallResult { - let addr = self.machine_st.store(self.machine_st.deref( - self.machine_st.registers[1] - )); + let addr = self.deref_register(1); let stream = self.machine_st.get_stream_or_alias( addr, @@ -4750,7 +4730,7 @@ impl Machine { #[inline(always)] pub(crate) fn set_output(&mut self) -> CallResult { - let addr = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])); + let addr = self.deref_register(1); let stream = self.machine_st.get_stream_or_alias( addr, &self.indices.stream_aliases, @@ -4792,8 +4772,8 @@ impl Machine { #[inline(always)] pub(crate) fn inference_level(&mut self) { - let a1 = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])); - let a2 = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[2])); + let a1 = self.deref_register(1); + let a2 = self.deref_register(2); let bp = cell_as_fixnum!(a2).get_num() as usize; let prev_b = self.machine_st.stack.index_or_frame(self.machine_st.b).prelude.b; @@ -4807,7 +4787,7 @@ impl Machine { #[inline(always)] pub(crate) fn clean_up_block(&mut self) { - let nb = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])); + let nb = self.deref_register(1); let nb = cell_as_fixnum!(nb).get_num() as usize; let b = self.machine_st.b; @@ -4819,7 +4799,7 @@ impl Machine { #[inline(always)] pub(crate) fn get_ball(&mut self) { - let addr = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])); + let addr = self.deref_register(1); let h = self.machine_st.heap.len(); if self.machine_st.ball.stub.len() > 0 { @@ -4881,7 +4861,7 @@ impl Machine { pub(crate) fn get_staggered_cut_point(&mut self) { use std::sync::Once; - let b = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])); + let b = self.deref_register(1); static mut SEMICOLON_SECOND_BRANCH_LOC: usize = 0; static LOC_INIT: Once = Once::new(); @@ -4935,7 +4915,7 @@ impl Machine { #[inline(always)] pub(crate) fn next_ep(&mut self) { - let first_arg = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])); + let first_arg = self.deref_register(1); let next_ep_atom = |machine_st: &mut MachineState, name, arity| { debug_assert_eq!(name, atom!("first")); @@ -5004,7 +4984,7 @@ impl Machine { #[inline(always)] pub(crate) fn points_to_continuation_reset_marker(&mut self) { - let addr = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])); + let addr = self.deref_register(1); let p = match to_local_code_ptr(&self.machine_st.heap, addr) { Some(p) => p + 1, @@ -5021,7 +5001,7 @@ impl Machine { #[inline(always)] pub(crate) fn quoted_token(&mut self) { - let addr = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])); + let addr = self.deref_register(1); read_heap_cell!(addr, (HeapCellValueTag::Fixnum, n) => { @@ -5102,9 +5082,7 @@ impl Machine { }; let result = heap_loc_as_cell!(term_write_result.heap_loc); - let var = self.machine_st.store(self.machine_st.deref( - self.machine_st.registers[2] - )).as_var().unwrap(); + let var = self.deref_register(2).as_var().unwrap(); self.machine_st.bind(var, result); } else { @@ -5137,7 +5115,7 @@ impl Machine { #[inline(always)] pub(crate) fn set_seed(&mut self) { - let seed = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])); + let seed = self.deref_register(1); let mut rand = RANDOM_STATE.borrow_mut(); match Number::try_from(seed) { @@ -5152,7 +5130,7 @@ impl Machine { #[inline(always)] pub(crate) fn sleep(&mut self) { - let time = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])); + let time = self.deref_register(1); let time = match Number::try_from(time) { Ok(Number::Float(n)) => n.into_inner(), @@ -5171,8 +5149,8 @@ impl Machine { #[inline(always)] pub(crate) fn socket_client_open(&mut self) -> CallResult { - let addr = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])); - let port = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[2])); + let addr = self.deref_register(1); + let port = self.deref_register(2); let socket_atom = cell_as_atom!(addr); @@ -5259,7 +5237,7 @@ impl Machine { } }; - let stream_addr = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[3])); + let stream_addr = self.deref_register(3); self.machine_st.bind(stream_addr.as_var().unwrap(), stream); Ok(()) @@ -5267,7 +5245,7 @@ impl Machine { #[inline(always)] pub(crate) fn socket_server_open(&mut self) -> CallResult { - let addr = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])); + let addr = self.deref_register(1); let socket_atom = cell_as_atom_cell!(addr).get_name(); let socket_atom = if socket_atom == atom!("[]") { @@ -5276,7 +5254,7 @@ impl Machine { socket_atom }; - let port = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[2])); + let port = self.deref_register(2); let port = if port.is_var() { String::from("0") @@ -5319,7 +5297,7 @@ impl Machine { } }; - let addr = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[3])); + let addr = self.deref_register(3); self.machine_st.bind(addr.as_var().unwrap(), typed_arena_ptr_as_cell!(tcp_listener)); if had_zero_port { @@ -5352,7 +5330,7 @@ impl Machine { } } - let culprit = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])); + let culprit = self.deref_register(1); read_heap_cell!(culprit, (HeapCellValueTag::Cons, cons_ptr) => { @@ -5379,12 +5357,8 @@ impl Machine { let tcp_stream = stream_as_cell!(tcp_stream); let client = atom_as_cell!(client); - let client_addr = self.machine_st.store(self.machine_st.deref( - self.machine_st.registers[2], - )); - let stream_addr = self.machine_st.store(self.machine_st.deref( - self.machine_st.registers[3], - )); + let client_addr = self.deref_register(2); + let stream_addr = self.deref_register(3); self.machine_st.bind(client_addr.as_var().unwrap(), client); self.machine_st.bind(stream_addr.as_var().unwrap(), tcp_stream); @@ -5433,7 +5407,7 @@ impl Machine { self.indices.streams.insert(stream); self.machine_st.heap.push(stream_as_cell!(stream)); - let stream_addr = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[3])); + let stream_addr = self.deref_register(3); self.machine_st.bind(stream_addr.as_var().unwrap(), stream_as_cell!(stream)); Ok(()) @@ -5483,7 +5457,7 @@ impl Machine { let stream = Stream::from_tls_stream(atom!("TLS"), stream, &mut self.machine_st.arena); self.indices.streams.insert(stream); - let stream_addr = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[4])); + let stream_addr = self.deref_register(4); self.machine_st.bind(stream_addr.as_var().unwrap(), stream_as_cell!(stream)); } else { unreachable!(); @@ -5494,7 +5468,7 @@ impl Machine { #[inline(always)] pub(crate) fn socket_server_close(&mut self) -> CallResult { - let culprit = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])); + let culprit = self.deref_register(1); read_heap_cell!(culprit, (HeapCellValueTag::Cons, cons_ptr) => { @@ -5543,7 +5517,7 @@ impl Machine { return Err(self.machine_st.error_form(err, stub)); } - let position = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[2])); + let position = self.deref_register(2); let position = match Number::try_from(position) { Ok(Number::Fixnum(n)) => n.get_num() as u64, @@ -5573,9 +5547,7 @@ impl Machine { 2, )?; - let atom = cell_as_atom!(self.machine_st.store(self.machine_st.deref( - self.machine_st.registers[2] - ))); + let atom = cell_as_atom!(self.deref_register(2)); let property = match atom { atom!("file_name") => { @@ -5647,7 +5619,7 @@ impl Machine { #[inline(always)] pub(crate) fn store_global_var(&mut self) { - let key = cell_as_atom!(self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1]))); + let key = cell_as_atom!(self.deref_register(1)); let value = self.machine_st.registers[2]; let mut ball = Ball::new(); @@ -5665,8 +5637,8 @@ impl Machine { #[inline(always)] pub(crate) fn store_backtrackable_global_var(&mut self) { - let key = cell_as_atom!(self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1]))); - let new_value = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[2])); + let key = cell_as_atom!(self.deref_register(1)); + let new_value = self.deref_register(2); match self.indices.global_variables.get_mut(&key) { Some((_, ref mut loc)) => match loc { @@ -5691,9 +5663,10 @@ impl Machine { #[inline(always)] pub(crate) fn term_attributed_variables(&mut self) { if self.machine_st.registers[1].is_constant() { + let a2 = self.deref_register(2); self.machine_st.unify_atom( atom!("[]"), - self.machine_st.store(self.machine_st.deref(self.machine_st.registers[2])), + a2, ); return; @@ -5709,13 +5682,11 @@ impl Machine { #[inline(always)] pub(crate) fn term_variables(&mut self) { - let a1 = self.machine_st.registers[1]; - let a2 = self.machine_st.registers[2]; - - let stored_v = self.machine_st.store(self.machine_st.deref(a1)); + let stored_v = self.deref_register(1); + let a2 = self.deref_register(2); if stored_v.is_constant() { - self.machine_st.unify_atom(atom!("[]"), self.machine_st.store(self.machine_st.deref(a2))); + self.machine_st.unify_atom(atom!("[]"), a2); return; } @@ -5734,7 +5705,7 @@ impl Machine { pub(crate) fn term_variables_under_max_depth(&mut self) { // Term, MaxDepth, VarList let max_depth = cell_as_fixnum!( - self.machine_st.store(self.machine_st.deref(self.machine_st.registers[2])) + self.deref_register(2) ).get_num() as usize; self.machine_st.term_variables_under_max_depth( @@ -5746,7 +5717,7 @@ impl Machine { #[inline(always)] pub(crate) fn truncate_lifted_heap_to(&mut self) { - let a1 = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])); + let a1 = self.deref_register(1); let lh_offset = cell_as_fixnum!(a1).get_num() as usize; self.machine_st.lifted_heap.truncate(lh_offset); @@ -5784,15 +5755,9 @@ impl Machine { #[inline(always)] pub(crate) fn wam_instructions(&mut self) -> CallResult { - let module_name = cell_as_atom!(self.machine_st.store(self.machine_st.deref( - self.machine_st.registers[1]) - )); - - let name = self.machine_st.registers[2]; - let arity = self.machine_st.registers[3]; - - let name = cell_as_atom!(self.machine_st.store(self.machine_st.deref(name))); - let arity = self.machine_st.store(self.machine_st.deref(arity)); + let module_name = cell_as_atom!(self.deref_register(1)); + let name = cell_as_atom!(self.deref_register(2)); + let arity = self.deref_register(3); let arity = match Number::try_from(arity) { Ok(Number::Fixnum(n)) => n.get_num() as usize, @@ -5968,9 +5933,7 @@ impl Machine { &mut self.machine_st.atom_tbl, ); - let result_addr = self.machine_st.store(self.machine_st.deref( - self.machine_st.registers[1] - )); + let result_addr = self.deref_register(1); if let Some(var) = result_addr.as_var() { self.machine_st.bind(var, chars); @@ -5988,9 +5951,10 @@ impl Machine { let buffer = git_version!(cargo_prefix = "cargo:", fallback = "unknown"); let buffer_atom = self.machine_st.atom_tbl.build_with(buffer); + let a1 = self.deref_register(1); self.machine_st.unify_complete_string( buffer_atom, - self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])), + a1, ); } @@ -6167,7 +6131,7 @@ impl Machine { let algorithm = cell_as_atom!(self.machine_st.registers[5]); - let length = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[6])); + let length = self.deref_register(6); let length = match Number::try_from(length) { Ok(Number::Fixnum(n)) => usize::try_from(n.get_num()).unwrap(), @@ -6229,7 +6193,7 @@ impl Machine { let stub2_gen = || functor_stub(atom!("crypto_password_hash"), 3); let salt = self.machine_st.integers_to_bytevec(self.machine_st.registers[2], stub2_gen); - let iterations = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[3])); + let iterations = self.deref_register(3); let iterations = match Number::try_from(iterations) { Ok(Number::Fixnum(n)) => u64::try_from(n.get_num()).unwrap(), @@ -6318,7 +6282,7 @@ impl Machine { #[inline(always)] pub(crate) fn crypto_data_decrypt(&mut self) { let data = self.string_encoding_bytes(self.machine_st.registers[1], atom!("octet")); - let encoding = cell_as_atom!(self.machine_st.store(self.machine_st.deref(self.machine_st.registers[5]))); + let encoding = cell_as_atom!(self.deref_register(5)); let aad = self.string_encoding_bytes(self.machine_st.registers[2], encoding); let stub1_gen = || functor_stub(atom!("crypto_data_decrypt"), 7); @@ -6473,7 +6437,7 @@ impl Machine { #[inline(always)] pub(crate) fn first_non_octet(&mut self) { - let addr = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])); + let addr = self.deref_register(1); if let Some(string) = self.machine_st.value_to_str_like(addr) { for c in string.as_str().chars() { @@ -6596,8 +6560,9 @@ impl Machine { } } + let a1 = self.deref_register(1); let command = self.machine_st.value_to_str_like( - self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])) + a1 ).unwrap(); match env::var("SHELL") { @@ -6644,7 +6609,7 @@ impl Machine { } }; - if self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])).is_var() { + if self.deref_register(1).is_var() { let b64 = self.machine_st.value_to_str_like(self.machine_st.registers[2]).unwrap(); let bytes = base64::decode_config(b64.as_str(), config); @@ -6676,9 +6641,7 @@ impl Machine { #[inline(always)] pub(crate) fn load_library_as_stream(&mut self) -> CallResult { - let library_name = cell_as_atom!(self.machine_st.store(self.machine_st.deref( - self.machine_st.registers[1] - ))); + let library_name = cell_as_atom!(self.deref_register(1)); use crate::machine::LIBRARIES; @@ -6792,7 +6755,7 @@ impl Machine { #[inline(always)] pub(crate) fn pop_count(&mut self) { - let number = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[1])); + let number = self.deref_register(1); let pop_count = integer_as_cell!(match Number::try_from(number) { Ok(Number::Fixnum(n)) => { Number::Fixnum(Fixnum::build_with(n.get_num().count_ones() as i64)) From 309e5b320eb29dd3aa9cef4c7a2dc4b82dcd7d57 Mon Sep 17 00:00:00 2001 From: Markus Triska Date: Wed, 7 Dec 2022 23:14:08 +0100 Subject: [PATCH 04/18] more uses of newly available deref_register(n) --- src/machine/system_calls.rs | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/src/machine/system_calls.rs b/src/machine/system_calls.rs index f0dbc178..275c0ce7 100644 --- a/src/machine/system_calls.rs +++ b/src/machine/system_calls.rs @@ -4165,11 +4165,8 @@ impl Machine { #[inline(always)] pub(crate) fn op_declaration(&mut self) -> CallResult { - let priority = self.machine_st.registers[1]; - let specifier = self.machine_st.registers[2]; - let op = self.machine_st.registers[3]; - - let priority = self.machine_st.store(self.machine_st.deref(priority)); + let priority = self.deref_register(1); + let specifier = cell_as_atom_cell!(self.deref_register(2)).get_name(); let priority = match Number::try_from(priority) { Ok(Number::Integer(n)) => n.to_u16().unwrap(), @@ -4179,10 +4176,7 @@ impl Machine { } }; - let specifier = cell_as_atom_cell!(self.machine_st.store(self.machine_st.deref(specifier))) - .get_name(); - - let op = read_heap_cell!(self.machine_st.store(self.machine_st.deref(op)), + let op = read_heap_cell!(self.deref_register(3), (HeapCellValueTag::Char, c) => { self.machine_st.atom_tbl.build_with(&c.to_string()) } @@ -4283,16 +4277,15 @@ impl Machine { #[inline(always)] pub(crate) fn get_attr_var_queue_delimiter(&mut self) { - let addr = self.machine_st.registers[1]; + let addr = self.deref_register(1); let value = Fixnum::build_with(self.machine_st.attr_var_init.attr_var_queue.len() as i64); - self.machine_st.unify_fixnum(value, self.machine_st.store(self.machine_st.deref(addr))); + self.machine_st.unify_fixnum(value, addr); } #[inline(always)] pub(crate) fn get_attr_var_queue_beyond(&mut self) { - let addr = self.machine_st.registers[1]; - let addr = self.machine_st.store(self.machine_st.deref(addr)); + let addr = self.deref_register(1); let b = match Number::try_from(addr) { Ok(Number::Integer(n)) => n.to_usize(), From e0464d54473e53ef73259ad91b027100dedcc832 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Arroyo=20Calle?= Date: Thu, 8 Dec 2022 22:30:48 +0100 Subject: [PATCH 05/18] Compatible Doclog docs for library(ordsets) --- src/lib/ordsets.pl | 187 +++++++++++++++++++++------------------------ 1 file changed, 87 insertions(+), 100 deletions(-) diff --git a/src/lib/ordsets.pl b/src/lib/ordsets.pl index b5886d38..fd17495b 100644 --- a/src/lib/ordsets.pl +++ b/src/lib/ordsets.pl @@ -54,20 +54,19 @@ :- use_module(library(lists)). -/** Ordered set manipulation +/** Ordered set manipulation + Ordered sets are lists with unique elements sorted to the standard order of terms (see sort/2). Exploiting ordering, many of the set operations can be expressed in order N rather than N^2 when dealing with unordered sets that may contain duplicates. The library(ordsets) is available in a number of Prolog implementations. Our predicates are designed to be -compatible with common practice in the Prolog community. The -implementation is incomplete and relies partly on library(oset), an -older ordered set library distributed with SWI-Prolog. New applications -are advised to use library(ordsets). +compatible with common practice in the Prolog community. Some of these predicates match directly to corresponding list operations. It is advised to use the versions from this library to make clear you are operating on ordered sets. An exception is member/2. See -ord_memberchk/2. +ord\_memberchk/2. + The ordsets library is based on the standard order of terms. This implies it can handle all Prolog terms, including variables. Note however, that the ordering is not stable if a term inside the set is @@ -80,13 +79,13 @@ fresh variable. In other cases one should cease using it as an ordset because the order it relies on may have been changed. */ -%! is_ordset(@Term) is semidet. +%% is_ordset(@Term) is semidet. % -% True if Term is an ordered set. All predicates in this library -% expect ordered sets as input arguments. Failing to fullfil this -% assumption results in undefined behaviour. Typically, ordered -% sets are created by predicates from this library, sort/2 or -% setof/3. +% True if Term is an ordered set. All predicates in this library +% expect ordered sets as input arguments. Failing to fullfil this +% assumption results in undefined behaviour. Typically, ordered +% sets are created by predicates from this library, sort/2 or +% setof/3. is_ordset(Term) :- '$skip_max_list'(_, _, Term, Tail), Tail == [], %% is_list(Term), @@ -102,37 +101,35 @@ is_ordset3([H2|T], H) :- is_ordset3(T, H2). -%! ord_empty(?List) is semidet. +%% ord_empty(?List) is semidet. % -% True when List is the empty ordered set. Simply unifies list -% with the empty list. Not part of Quintus. +% True when List is the empty ordered set. Simply unifies list +% with the empty list. Not part of Quintus. ord_empty([]). -%! ord_seteq(+Set1, +Set2) is semidet. +%% ord_seteq(+Set1, +Set2) is semidet. % -% True if Set1 and Set2 have the same elements. As both are -% canonical sorted lists, this is the same as ==/2. -% -% @compat sicstus +% True if Set1 and Set2 have the same elements. As both are +% canonical sorted lists, this is the same as ==/2. ord_seteq(Set1, Set2) :- Set1 == Set2. -%! list_to_ord_set(+List, -OrdSet) is det. +%% list_to_ord_set(+List, -OrdSet) is det. % -% Transform a list into an ordered set. This is the same as -% sorting the list. +% Transform a list into an ordered set. This is the same as +% sorting the list. list_to_ord_set(List, Set) :- sort(List, Set). -%! ord_intersect(+Set1, +Set2) is semidet. +%% ord_intersect(+Set1, +Set2) is semidet. % -% True if both ordered sets have a non-empty intersection. +% True if both ordered sets have a non-empty intersection. ord_intersect([H1|T1], L2) :- ord_intersect_(L2, H1, T1). @@ -148,31 +145,29 @@ ord_intersect__(>, H1, T1, _H2, T2) :- ord_intersect_(T2, H1, T1). -%! ord_disjoint(+Set1, +Set2) is semidet. +%% ord_disjoint(+Set1, +Set2) is semidet. % -% True if Set1 and Set2 have no common elements. This is the -% negation of ord_intersect/2. +% True if Set1 and Set2 have no common elements. This is the +% negation of ord\_intersect/2. ord_disjoint(Set1, Set2) :- \+ ord_intersect(Set1, Set2). -%! ord_intersect(+Set1, +Set2, -Intersection) +%% ord_intersect(+Set1, +Set2, -Intersection) % -% Intersection holds the common elements of Set1 and Set2. +% Intersection holds the common elements of Set1 and Set2. % -% @deprecated Use ord_intersection/3 +% This predicate is **deprecated**. Use ord\_intersection/3 ord_intersect(Set1, Set2, Intersection) :- oset_int(Set1, Set2, Intersection). -%! ord_intersection(+PowerSet, -Intersection) +%% ord_intersection(+PowerSet, -Intersection) % -% Intersection of a powerset. True when Intersection is an ordered -% set holding all elements common to all sets in PowerSet. -% -% @compat sicstus +% Intersection of a powerset. True when Intersection is an ordered +% set holding all elements common to all sets in PowerSet. ord_intersection(PowerSet, Intersection) :- key_by_length(PowerSet, Pairs), @@ -190,10 +185,10 @@ l_int([_-H|T], S0, S) :- l_int(T, S1, S). -%! ord_intersection(+Set1, +Set2, -Intersection) is det. +%% ord_intersection(+Set1, +Set2, -Intersection) is det. % -% Intersection holds the common elements of Set1 and Set2. Uses -% ord_disjoint/2 if Intersection is bound to `[]` on entry. +% Intersection holds the common elements of Set1 and Set2. Uses +% ord\_disjoint/2 if Intersection is bound to `[]` on entry. ord_intersection(Set1, Set2, Intersection) :- ( Intersection == [] @@ -202,13 +197,11 @@ ord_intersection(Set1, Set2, Intersection) :- ). -%! ord_intersection(+Set1, +Set2, ?Intersection, ?Difference) is det. +%% ord_intersection(+Set1, +Set2, ?Intersection, ?Difference) is det. % -% Intersection and difference between two ordered sets. -% Intersection is the intersection between Set1 and Set2, while -% Difference is defined by ord_subtract(Set2, Set1, Difference). -% -% @see ord_intersection/3 and ord_subtract/3. +% Intersection and difference between two ordered sets. +% Intersection is the intersection between Set1 and Set2, while +% Difference is defined by ord\_subtract(Set2, Set1, Difference). ord_intersection([], L, [], L) :- !. ord_intersection([_|_], [], [], []) :- !. @@ -224,35 +217,35 @@ ord_intersection2(>, H1, T1, H2, T2, Intersection, [H2|HDiff]) :- ord_intersection([H1|T1], T2, Intersection, HDiff). -%! ord_add_element(+Set1, +Element, ?Set2) is det. +%% ord_add_element(+Set1, +Element, ?Set2) is det. % -% Insert an element into the set. This is the same as -% ord_union(Set1, [Element], Set2). +% Insert an element into the set. This is the same as +% ord\_union(Set1, [Element], Set2). ord_add_element(Set1, Element, Set2) :- oset_addel(Set1, Element, Set2). -%! ord_del_element(+Set, +Element, -NewSet) is det. +%% ord_del_element(+Set, +Element, -NewSet) is det. % -% Delete an element from an ordered set. This is the same as -% ord_subtract(Set, [Element], NewSet). +% Delete an element from an ordered set. This is the same as +% ord\_subtract(Set, [Element], NewSet). ord_del_element(Set, Element, NewSet) :- oset_delel(Set, Element, NewSet). -%! ord_selectchk(+Item, ?Set1, ?Set2) is semidet. +%% ord_selectchk(+Item, ?Set1, ?Set2) is semidet. % -% Selectchk/3, specialised for ordered sets. Is true when -% select(Item, Set1, Set2) and Set1, Set2 are both sorted lists -% without duplicates. This implementation is only expected to work -% for Item ground and either Set1 or Set2 ground. The "chk" suffix -% is meant to remind you of memberchk/2, which also expects its -% first argument to be ground. ord_selectchk(X, S, T) => -% ord_memberchk(X, S) & \+ ord_memberchk(X, T). +% Selectchk/3, specialised for ordered sets. Is true when +% select(Item, Set1, Set2) and Set1, Set2 are both sorted lists +% without duplicates. This implementation is only expected to work +% for Item ground and either Set1 or Set2 ground. The "chk" suffix +% is meant to remind you of memberchk/2, which also expects its +% first argument to be ground. ord\_selectchk(X, S, T) => +% ord\_memberchk(X, S) & \\+ ord\_memberchk(X, T). % -% @author Richard O'Keefe +% Author: Richard O'Keefe ord_selectchk(Item, [X|Set1], [X|Set2]) :- X @< Item, @@ -266,19 +259,19 @@ ord_selectchk(Item, [Item|Set1], Set1) :- ). -%! ord_memberchk(+Element, +OrdSet) is semidet. +%% ord_memberchk(+Element, +OrdSet) is semidet. % -% True if Element is a member of OrdSet, compared using ==. Note -% that _enumerating_ elements of an ordered set can be done using -% member/2. +% True if Element is a member of OrdSet, compared using ==. Note +% that _enumerating_ elements of an ordered set can be done using +% member/2. % -% Some Prolog implementations also provide ord_member/2, with the -% same semantics as ord_memberchk/2. We believe that having a -% semidet ord_member/2 is unacceptably inconsistent with the *_chk -% convention. Portable code should use ord_memberchk/2 or -% member/2. +% Some Prolog implementations also provide ord\_member/2, with the +% same semantics as ord\_memberchk/2. We believe that having a +% semidet ord\_member/2 is unacceptably inconsistent with the \*\_chk +% convention. Portable code should use ord\_memberchk/2 or +% member/2. % -% @author Richard O'Keefe +% Author: Richard O'Keefe ord_memberchk(Item, [X1,X2,X3,X4|Xs]) :- !, @@ -303,9 +296,9 @@ ord_memberchk(Item, [X1]) :- Item == X1. -%! ord_subset(+Sub, +Super) is semidet. +%% ord_subset(+Sub, +Super) is semidet. % -% Is true if all elements of Sub are in Super +% Is true if all elements of Sub are in Super ord_subset([], _). ord_subset([H1|T1], [H2|T2]) :- @@ -319,22 +312,20 @@ ord_subset_(=, _, T1, T2) :- ord_subset(T1, T2). -%! ord_subtract(+InOSet, +NotInOSet, -Diff) is det. +%% ord_subtract(+InOSet, +NotInOSet, -Diff) is det. % -% Diff is the set holding all elements of InOSet that are not in -% NotInOSet. +% Diff is the set holding all elements of InOSet that are not in +% NotInOSet. ord_subtract(InOSet, NotInOSet, Diff) :- oset_diff(InOSet, NotInOSet, Diff). -%! ord_union(+SetOfSets, -Union) is det. +%% ord_union(+SetOfSets, -Union) is det. % -% True if Union is the union of all elements in the superset -% SetOfSets. Each member of SetOfSets must be an ordered set, the -% sets need not be ordered in any way. -% -% @author Copied from YAP, probably originally by Richard O'Keefe. +% True if Union is the union of all elements in the superset +% SetOfSets. Each member of SetOfSets must be an ordered set, the +% sets need not be ordered in any way. ord_union([], []). ord_union([Set|Sets], Union) :- @@ -355,18 +346,18 @@ ord_union_all(N, Sets0, Union, Sets) :- ). -%! ord_union(+Set1, +Set2, ?Union) is det. +%% ord_union(+Set1, +Set2, ?Union) is det. % -% Union is the union of Set1 and Set2 +% Union is the union of Set1 and Set2 ord_union(Set1, Set2, Union) :- oset_union(Set1, Set2, Union). -%! ord_union(+Set1, +Set2, -Union, -New) is det. +%% ord_union(+Set1, +Set2, -Union, -New) is det. % -% True iff ord_union(Set1, Set2, Union) and -% ord_subtract(Set2, Set1, New). +% True iff ord\_union(Set1, Set2, Union) and +% ord\_subtract(Set2, Set1, New). ord_union([], Set2, Set2, Set2). ord_union([H|T], Set2, Union, New) :- @@ -390,26 +381,22 @@ ord_union_2([H|T], H2, T2, Union, New) :- ord_union(Order, H, T, H2, T2, Union, New). -%! ord_symdiff(+Set1, +Set2, ?Difference) is det. +%% ord_symdiff(+Set1, +Set2, ?Difference) is det. % -% Is true when Difference is the symmetric difference of Set1 and -% Set2. I.e., Difference contains all elements that are not in the -% intersection of Set1 and Set2. The semantics is the same as the -% sequence below (but the actual implementation requires only a -% single scan). +% Is true when Difference is the symmetric difference of Set1 and +% Set2. I.e., Difference contains all elements that are not in the +% intersection of Set1 and Set2. The semantics is the same as the +% sequence below (but the actual implementation requires only a +% single scan). % -% == -% ord_union(Set1, Set2, Union), -% ord_intersection(Set1, Set2, Intersection), -% ord_subtract(Union, Intersection, Difference). -% == +% ord_union(Set1, Set2, Union), +% ord_intersection(Set1, Set2, Intersection), +% ord_subtract(Union, Intersection, Difference). % % For example: % -% == % ?- ord_symdiff([1,2], [2,3], X). % X = [1,3]. -% == ord_symdiff([], Set2, Set2). ord_symdiff([H1|T1], Set2, Difference) :- @@ -457,7 +444,7 @@ ord_symdiff(>, H1, T1, H2, Set2, [H2|Difference]) :- */ -/** Ordered set manipulation +/* Ordered set manipulation This library defines set operations on sets represented as ordered lists. From 21d6220f3ff61cf8e4fcbf18ce06e02d0d12b99f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Arroyo=20Calle?= Date: Thu, 8 Dec 2022 23:41:28 +0100 Subject: [PATCH 06/18] Compatible Doclog docs for library(files) --- src/lib/files.pl | 147 ++++++++++++++++++++++++++++++++++------------- 1 file changed, 106 insertions(+), 41 deletions(-) diff --git a/src/lib/files.pl b/src/lib/files.pl index ef73e851..1e856ff1 100644 --- a/src/lib/files.pl +++ b/src/lib/files.pl @@ -1,3 +1,22 @@ +/** Predicates for reasoning about files and directories. + +In this library, directories and files are represented as +*lists of characters*. This is an ideal representation: + +* Lists of characters can be conveniently reasoned about with DCGs + and built-in Prolog predicates from library(lists). This alone + is already a very compelling argument to use them. +* Other Scryer libraries such as library(http/http_open) also already + use lists of characters to represent paths. +* File names are mostly ephemeral, so it is good for efficiency + that they can quickly allocated transiently on the heap, leaving the + atom table mostly unaffected. Indexing is almost never needed + for file names. If needed, it should be added to the engine. +* The previous point is also good for security, since the system + leaves little trace of which files were even accessed. +* Scryer Prolog represents lists of characters extremely compactly. +*/ + /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Written 2020, 2022 by Markus Triska (triska@metalevel.at) Part of Scryer Prolog. @@ -67,41 +86,74 @@ :- use_module(library(charsio)). :- use_module(library(dcgs)). +%% directory_files(+Directory, -Files). +% +% Returns the list of files *and* directories available at a specific +% directory in the current system. + directory_files(Directory, Files) :- must_be(chars, Directory), can_be(list, Files), '$directory_files'(Directory, Files). +%% file_size(+File, -Size). +% +% Returns the size (in bytes) of a file. The file must exist. + file_size(File, Size) :- file_must_exist(File, file_size/2), can_be(integer, Size), '$file_size'(File, Size). +%% file_exists(+File). +% +% Succeeds if File is a file that exists in the current system. file_exists(File) :- must_be(chars, File), '$file_exists'(File). +%% directory_exists(+Directory). +% +% Succeeds if Directory is a directory that exists in the current system. directory_exists(Directory) :- must_be(chars, Directory), '$directory_exists'(Directory). +%% make_directory(+Directory). +% +% Succeeds if it creates a new directory named Directory in the current system. +% If you want to create a nested directory, use make\_directory\_path/1. make_directory(Directory) :- must_be(chars, Directory), '$make_directory'(Directory). +%% make_directory_path(+Directory). +% +% Similar to make\_directory/1 but recursively creates directories if they're missing. +% Equivalent to mkdir -p in Unix. make_directory_path(Directory) :- must_be(chars, Directory), '$make_directory_path'(Directory). +%% delete_file(+File). +% +% Succeeds if deletes File from the current system. delete_file(File) :- file_must_exist(File, delete_file/1), '$delete_file'(File). +%% rename_file(+File, +Renamed). +% +% Succeeds if File is renamed to Renamed rename_file(File, Renamed) :- file_must_exist(File, rename_file/2), must_be(chars, Renamed), '$rename_file'(File, Renamed). +%% delete_directory(+Directory). +% +% Succeeds if Directory is deleted from the current system. +% Directory must be empty. delete_directory(Directory) :- directory_must_exist(Directory, delete_directory/1), must_be(chars, Directory), @@ -117,31 +169,31 @@ directory_must_exist(Directory, Context) :- ; throw(error(existence_error(directory, Directory), Context)) ). -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Dir0 is the current working directory, and the working directory - is changed to Dir. +%% workind_directory(Dir0, Dir). +% +% Dir0 is the current working directory, and the working directory +% is changed to Dir. - Use working_directory(Ds, Ds) to determine the current working directory, - and leave it as is. -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ +% Use `working\_directory(Ds, Ds)` to determine the current working directory, +% and leave it as is. working_directory(Dir0, Dir) :- can_be(list, Dir0), can_be(list, Dir), '$working_directory'(Dir0, Dir). -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - True iff Cs is the canonical, absolute path of Ps. - - All intermediate components are normalized, and all symbolic links - are resolved. - - The predicate fails in the following situations, though not - necessarily *only* in these cases: - - 1. Ps is a path that does not exist. - 2. A non-final component in Ps is not a directory. -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ +%% path_canonical(Ps, Cs). +% +% True iff Cs is the canonical, absolute path of Ps. +% +% All intermediate components are normalized, and all symbolic links +% are resolved. +% +% The predicate fails in the following situations, though not +% necessarily *only* in these cases: +% +% 1. Ps is a path that does not exist. +% 2. A non-final component in Ps is not a directory. path_canonical(Ps, Cs) :- must_be(chars, Ps), @@ -155,12 +207,27 @@ path_canonical(Ps, Cs) :- For two time stamps A and B, if A precedes B, then A @< B holds. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ +%% file_modification_time(+File, -T). +% +% For a file File that must exist, it returns a time stamp T with the modification time +% +% T is a time stamp compatible with library(time). file_modification_time(File, T) :- file_time_(File, modification, T). +%% file_access_time(+File, -T). +% +% For a file File that must exist, it returns a time stamp T with the access time +% +% T is a time stamp compatible with library(time). file_access_time(File, T) :- file_time_(File, access, T). +%% file_creation_time(+File, -T). +% +% For a file File that must exist, it returns a time stamp T with the creation time +% +% T is a time stamp compatible with library(time). file_creation_time(File, T) :- file_time_(File, creation, T). @@ -170,29 +237,27 @@ file_time_(File, Which, T) :- read_from_chars(T0, T). -/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - path_segments(Ps, Segments): True iff Segments are the segments of Ps. - - Segments is the list of components of the path Ps that are - separated by the platform-specific directory separator. Each - segment is a list of characters. - - At least one of the arguments must be instantiated. - - Examples: - - ?- path_segments("/hello/there", Segments). - Segments = [[],"hello","there"]. - - ?- path_segments(Path, ["hello","there"]). - Path = "hello/there". - - - To obtain the platform-specific directory separator, you can use: - - ?- path_segments(Separator, ["",""]). - Separator = "/". -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ +%% path_segments(Ps, Segments). +% +% True iff Segments are the segments of Ps. +% +% Segments is the list of components of the path Ps that are +% separated by the platform-specific directory separator. Each +% segment is a list of characters. +% +% At least one of the arguments must be instantiated. +% +% Examples: +% +% ?- path_segments("/hello/there", Segments). +% Segments = [[],"hello","there"]. +% ?- path_segments(Path, ["hello","there"]). +% Path = "hello/there". +% +% To obtain the platform-specific directory separator, you can use: +% +% ?- path_segments(Separator, ["",""]). +% Separator = "/". path_segments(Path, Segments) :- '$directory_separator'(Sep), From c6aa2068e2068ec68673b9b91dc7b68445c48365 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Arroyo=20Calle?= Date: Fri, 9 Dec 2022 23:46:00 +0100 Subject: [PATCH 07/18] Add predicate copy_file/2 in library(files) --- build/instructions_template.rs | 4 ++++ src/lib/files.pl | 10 ++++++++-- src/machine/dispatch.rs | 8 ++++++++ src/machine/system_calls.rs | 13 +++++++++++++ 4 files changed, 33 insertions(+), 2 deletions(-) diff --git a/build/instructions_template.rs b/build/instructions_template.rs index bc1ca703..f8cce3f4 100644 --- a/build/instructions_template.rs +++ b/build/instructions_template.rs @@ -262,6 +262,8 @@ enum SystemClauseType { DeleteFile, #[strum_discriminants(strum(props(Arity = "2", Name = "$rename_file")))] RenameFile, + #[strum_discriminants(strum(props(Arity = "2", Name = "$copy_file")))] + CopyFile, #[strum_discriminants(strum(props(Arity = "2", Name = "$working_directory")))] WorkingDirectory, #[strum_discriminants(strum(props(Arity = "1", Name = "$delete_directory")))] @@ -1611,6 +1613,7 @@ fn generate_instruction_preface() -> TokenStream { &Instruction::CallMakeDirectoryPath(_) | &Instruction::CallDeleteFile(_) | &Instruction::CallRenameFile(_) | + &Instruction::CallCopyFile(_) | &Instruction::CallWorkingDirectory(_) | &Instruction::CallDeleteDirectory(_) | &Instruction::CallPathCanonical(_) | @@ -1825,6 +1828,7 @@ fn generate_instruction_preface() -> TokenStream { &Instruction::ExecuteMakeDirectoryPath(_) | &Instruction::ExecuteDeleteFile(_) | &Instruction::ExecuteRenameFile(_) | + &Instruction::ExecuteCopyFile(_) | &Instruction::ExecuteWorkingDirectory(_) | &Instruction::ExecuteDeleteDirectory(_) | &Instruction::ExecutePathCanonical(_) | diff --git a/src/lib/files.pl b/src/lib/files.pl index 1e856ff1..7d0afeda 100644 --- a/src/lib/files.pl +++ b/src/lib/files.pl @@ -70,8 +70,9 @@ In this library, directories and files are represented as file_exists/1, directory_exists/1, delete_file/1, - rename_file/2, - delete_directory/1, + rename_file/2, + copy_file/2, + delete_directory/1, make_directory/1, make_directory_path/1, working_directory/2, @@ -150,6 +151,11 @@ rename_file(File, Renamed) :- must_be(chars, Renamed), '$rename_file'(File, Renamed). +copy_file(File, Copied) :- + file_must_exist(File, copy_file/2), + must_be(chars, Copied), + '$copy_file'(File, Copied). + %% delete_directory(+Directory). % % Succeeds if Directory is deleted from the current system. diff --git a/src/machine/dispatch.rs b/src/machine/dispatch.rs index ee57a83e..1cc1d365 100644 --- a/src/machine/dispatch.rs +++ b/src/machine/dispatch.rs @@ -3533,6 +3533,14 @@ impl Machine { self.rename_file(); step_or_fail!(self, self.machine_st.p = self.machine_st.cp); } + &Instruction::CallCopyFile(_) => { + self.copy_file(); + step_or_fail!(self, self.machine_st.p += 1); + } + &Instruction::ExecuteCopyFile(_) => { + self.copy_file(); + step_or_fail!(self, self.machine_st.p = self.machine_st.cp); + } &Instruction::CallWorkingDirectory(_) => { try_or_throw!(self.machine_st, self.working_directory()); step_or_fail!(self, self.machine_st.p += 1); diff --git a/src/machine/system_calls.rs b/src/machine/system_calls.rs index 275c0ce7..515baba6 100644 --- a/src/machine/system_calls.rs +++ b/src/machine/system_calls.rs @@ -1653,6 +1653,19 @@ impl Machine { self.machine_st.fail = true; } + #[inline(always)] + pub(crate) fn copy_file(&mut self) { + if let Some(file) = self.machine_st.value_to_str_like(self.machine_st.registers[1]) { + if let Some(copied) = self.machine_st.value_to_str_like(self.machine_st.registers[2]) { + if fs::copy(file.as_str(), copied.as_str()).is_ok() { + return; + } + } + } + + self.machine_st.fail = true; + } + #[inline(always)] pub(crate) fn delete_directory(&mut self) { if let Some(dir) = self.machine_st.value_to_str_like(self.machine_st.registers[1]) { From 5f703afed11a2c8c191a7a06f19dc8be568606bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Arroyo=20Calle?= Date: Sun, 11 Dec 2022 00:08:41 +0100 Subject: [PATCH 08/18] Rename copy_file/2 to file_copy/2 --- build/instructions_template.rs | 8 ++++---- src/lib/files.pl | 11 +++++++---- src/machine/dispatch.rs | 8 ++++---- src/machine/system_calls.rs | 2 +- 4 files changed, 16 insertions(+), 13 deletions(-) diff --git a/build/instructions_template.rs b/build/instructions_template.rs index f8cce3f4..ade61a9c 100644 --- a/build/instructions_template.rs +++ b/build/instructions_template.rs @@ -262,8 +262,8 @@ enum SystemClauseType { DeleteFile, #[strum_discriminants(strum(props(Arity = "2", Name = "$rename_file")))] RenameFile, - #[strum_discriminants(strum(props(Arity = "2", Name = "$copy_file")))] - CopyFile, + #[strum_discriminants(strum(props(Arity = "2", Name = "$file_copy")))] + FileCopy, #[strum_discriminants(strum(props(Arity = "2", Name = "$working_directory")))] WorkingDirectory, #[strum_discriminants(strum(props(Arity = "1", Name = "$delete_directory")))] @@ -1613,7 +1613,7 @@ fn generate_instruction_preface() -> TokenStream { &Instruction::CallMakeDirectoryPath(_) | &Instruction::CallDeleteFile(_) | &Instruction::CallRenameFile(_) | - &Instruction::CallCopyFile(_) | + &Instruction::CallFileCopy(_) | &Instruction::CallWorkingDirectory(_) | &Instruction::CallDeleteDirectory(_) | &Instruction::CallPathCanonical(_) | @@ -1828,7 +1828,7 @@ fn generate_instruction_preface() -> TokenStream { &Instruction::ExecuteMakeDirectoryPath(_) | &Instruction::ExecuteDeleteFile(_) | &Instruction::ExecuteRenameFile(_) | - &Instruction::ExecuteCopyFile(_) | + &Instruction::ExecuteFileCopy(_) | &Instruction::ExecuteWorkingDirectory(_) | &Instruction::ExecuteDeleteDirectory(_) | &Instruction::ExecutePathCanonical(_) | diff --git a/src/lib/files.pl b/src/lib/files.pl index 7d0afeda..e920b5bd 100644 --- a/src/lib/files.pl +++ b/src/lib/files.pl @@ -71,7 +71,7 @@ In this library, directories and files are represented as directory_exists/1, delete_file/1, rename_file/2, - copy_file/2, + file_copy/2, delete_directory/1, make_directory/1, make_directory_path/1, @@ -151,10 +151,13 @@ rename_file(File, Renamed) :- must_be(chars, Renamed), '$rename_file'(File, Renamed). -copy_file(File, Copied) :- - file_must_exist(File, copy_file/2), +%% file_copy(+File, +Copied). +% +% Succeeds if File is copied to Copied +file_copy(File, Copied) :- + file_must_exist(File, file_copy/2), must_be(chars, Copied), - '$copy_file'(File, Copied). + '$file_copy'(File, Copied). %% delete_directory(+Directory). % diff --git a/src/machine/dispatch.rs b/src/machine/dispatch.rs index 1cc1d365..a93d9e22 100644 --- a/src/machine/dispatch.rs +++ b/src/machine/dispatch.rs @@ -3533,12 +3533,12 @@ impl Machine { self.rename_file(); step_or_fail!(self, self.machine_st.p = self.machine_st.cp); } - &Instruction::CallCopyFile(_) => { - self.copy_file(); + &Instruction::CallFileCopy(_) => { + self.file_copy(); step_or_fail!(self, self.machine_st.p += 1); } - &Instruction::ExecuteCopyFile(_) => { - self.copy_file(); + &Instruction::ExecuteFileCopy(_) => { + self.file_copy(); step_or_fail!(self, self.machine_st.p = self.machine_st.cp); } &Instruction::CallWorkingDirectory(_) => { diff --git a/src/machine/system_calls.rs b/src/machine/system_calls.rs index 515baba6..f72cbf8a 100644 --- a/src/machine/system_calls.rs +++ b/src/machine/system_calls.rs @@ -1654,7 +1654,7 @@ impl Machine { } #[inline(always)] - pub(crate) fn copy_file(&mut self) { + pub(crate) fn file_copy(&mut self) { if let Some(file) = self.machine_st.value_to_str_like(self.machine_st.registers[1]) { if let Some(copied) = self.machine_st.value_to_str_like(self.machine_st.registers[2]) { if fs::copy(file.as_str(), copied.as_str()).is_ok() { From 5f2c77fa74243a6f1192d4ddd5d67c7477efb048 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Arroyo=20Calle?= Date: Sun, 11 Dec 2022 21:49:41 +0100 Subject: [PATCH 09/18] Add predicate lcm/2 to library(arithmetic) --- src/lib/arithmetic.pl | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/lib/arithmetic.pl b/src/lib/arithmetic.pl index ee719a18..e557c90b 100644 --- a/src/lib/arithmetic.pl +++ b/src/lib/arithmetic.pl @@ -1,4 +1,4 @@ -:- module(arithmetic, [expmod/4, lsb/2, msb/2, number_to_rational/2, +:- module(arithmetic, [expmod/4, lcm/3, lsb/2, msb/2, number_to_rational/2, number_to_rational/3, popcount/2, rational_numerator_denominator/3]). @@ -28,6 +28,22 @@ expmod_(Base0, Expo0, Mod, C, R) :- Base is (Base0 * Base0) mod Mod, expmod_(Base, Expo, Mod, C, R). +%% lcm(+A, +B, -Lcm) is det. +% +% Calculates the Least common multiple for A and B: the smallest positive integer +% that is divisible by both A and B. +% +% A and B need to be integers. +lcm(A, B, X) :- + builtins:must_be_number(A, lcm/2), + builtins:must_be_number(B, lcm/2), + ( \+ integer(A) -> type_error(integer, A, lcm/2) + ; \+ integer(B) -> type_error(integer, B, lcm/2) + ; (A = 0, B = 0) -> X = 0 + ; builtins:can_be_number(X, lcm/2), + X is abs(B) // gcd(A,B) * abs(A) + ). + lsb(X, N) :- builtins:must_be_number(X, lsb/2), ( \+ integer(X) -> type_error(integer, X, lsb/2) From 4dc0114c521d82750a7502654e1c0450bf13f312 Mon Sep 17 00:00:00 2001 From: Mark Thom Date: Sun, 11 Dec 2022 16:11:57 -0700 Subject: [PATCH 10/18] fix mishandled if-then-else interpretation (#1659) --- build/instructions_template.rs | 4 -- src/lib/builtins.pl | 78 ++++++++++++++++------------------ src/machine/dispatch.rs | 8 ---- src/machine/system_calls.rs | 56 ------------------------ 4 files changed, 37 insertions(+), 109 deletions(-) diff --git a/build/instructions_template.rs b/build/instructions_template.rs index bc1ca703..8bc5d630 100644 --- a/build/instructions_template.rs +++ b/build/instructions_template.rs @@ -412,8 +412,6 @@ enum SystemClauseType { GetCurrentBlock, #[strum_discriminants(strum(props(Arity = "1", Name = "$get_cp")))] GetCutPoint, - #[strum_discriminants(strum(props(Arity = "1", Name = "$get_staggered_cp")))] - GetStaggeredCutPoint, #[strum_discriminants(strum(props(Arity = "1", Name = "$get_double_quotes")))] GetDoubleQuotes, #[strum_discriminants(strum(props(Arity = "1", Name = "$install_new_block")))] @@ -1688,7 +1686,6 @@ fn generate_instruction_preface() -> TokenStream { &Instruction::CallGetBall(_) | &Instruction::CallGetCurrentBlock(_) | &Instruction::CallGetCutPoint(_) | - &Instruction::CallGetStaggeredCutPoint(_) | &Instruction::CallGetDoubleQuotes(_) | &Instruction::CallInstallNewBlock(_) | &Instruction::CallMaybe(_) | @@ -1902,7 +1899,6 @@ fn generate_instruction_preface() -> TokenStream { &Instruction::ExecuteGetBall(_) | &Instruction::ExecuteGetCurrentBlock(_) | &Instruction::ExecuteGetCutPoint(_) | - &Instruction::ExecuteGetStaggeredCutPoint(_) | &Instruction::ExecuteGetDoubleQuotes(_) | &Instruction::ExecuteInstallNewBlock(_) | &Instruction::ExecuteMaybe(_) | diff --git a/src/lib/builtins.pl b/src/lib/builtins.pl index 1d2d0aed..11a76238 100644 --- a/src/lib/builtins.pl +++ b/src/lib/builtins.pl @@ -158,9 +158,8 @@ G1 -> G2 :- control_entry_point((G1 -> G2)). :- non_counted_backtracking staggered_if_then/2. staggered_if_then(G1, G2) :- - '$get_staggered_cp'(B), call(G1), - '$set_cp'(B), + !, call(G2). G1 ; G2 :- control_entry_point((G1 ; G2)). @@ -168,10 +167,16 @@ G1 ; G2 :- control_entry_point((G1 ; G2)). :- non_counted_backtracking staggered_sc/2. -staggered_sc(G, _) :- call(G). +staggered_sc(G, _) :- + ( nonvar(G), + G = '$call'(builtins:staggered_if_then(G1, G2)) -> + call(G1), + !, + call(G2) + ; call(G) + ). staggered_sc(_, G) :- call(G). - !. :- non_counted_backtracking set_cp/1. @@ -180,6 +185,7 @@ set_cp(B) :- '$set_cp'(B). ','(G1, G2) :- control_entry_point((G1, G2)). + :- non_counted_backtracking control_entry_point/1. control_entry_point(G) :- @@ -203,47 +209,15 @@ cont_list_goal([Cont], Cont) :- !. cont_list_goal(Conts, '$call'(builtins:dispatch_call_list(Conts))). -:- non_counted_backtracking module_qualified_cut/1. - -module_qualified_cut(Gs) :- - ( functor(Gs, call, 1) -> - arg(1, Gs, G1) - ; Gs = G1 - ), - functor(G1, (:), 2), - arg(2, G1, G2), - G2 == !. - - :- non_counted_backtracking dispatch_prep/3. dispatch_prep(Gs, B, [Cont|Conts]) :- ( callable(Gs) -> - ( functor(Gs, ',', 2) -> - arg(1, Gs, G1), - arg(2, Gs, G2), - dispatch_prep(G1, B, IConts1), - cont_list_goal(IConts1, Cont), - dispatch_prep(G2, B, Conts) - ; functor(Gs, ';', 2) -> - arg(1, Gs, G1), - arg(2, Gs, G2), - dispatch_prep(G1, B, IConts0), - dispatch_prep(G2, B, IConts1), - cont_list_goal(IConts0, Cont0), - cont_list_goal(IConts1, Cont1), - Cont = '$call'(builtins:staggered_sc(Cont0, Cont1)), - Conts = [] - ; functor(Gs, ->, 2) -> - arg(1, Gs, G1), - arg(2, Gs, G2), - dispatch_prep(G1, B, IConts1), - dispatch_prep(G2, B, IConts2), - cont_list_goal(IConts1, Cont1), - cont_list_goal(IConts2, Cont2), - Cont = '$call'(builtins:staggered_if_then(Cont1, Cont2)), - Conts = [] - ; ( Gs == ! ; module_qualified_cut(Gs) ) -> + strip_module(Gs, M, Gs0), + ( nonvar(Gs0), + dispatch_prep_(Gs0, B, [Cont|Conts]) -> + true + ; Gs0 == ! -> Cont = '$call'(builtins:set_cp(B)), Conts = [] ; Cont = Gs, @@ -256,6 +230,28 @@ dispatch_prep(Gs, B, [Cont|Conts]) :- ). +:- non_counted_backtracking dispatch_prep_/3. + +dispatch_prep_((G1, G2), B, [Cont|Conts]) :- + dispatch_prep(G1, B, IConts1), + cont_list_goal(IConts1, Cont), + dispatch_prep(G2, B, Conts). +dispatch_prep_((G1 ; G2), B, [Cont|Conts]) :- + dispatch_prep(G1, B, IConts0), + dispatch_prep(G2, B, IConts1), + cont_list_goal(IConts0, Cont0), + cont_list_goal(IConts1, Cont1), + Cont = '$call'(builtins:staggered_sc(Cont0, Cont1)), + Conts = []. +dispatch_prep_((G1 -> G2), B, [Cont|Conts]) :- + dispatch_prep(G1, B, IConts1), + dispatch_prep(G2, B, IConts2), + cont_list_goal(IConts1, Cont1), + cont_list_goal(IConts2, Cont2), + Cont = '$call'(builtins:staggered_if_then(Cont1, Cont2)), + Conts = []. + + :- non_counted_backtracking dispatch_call_list/1. dispatch_call_list([]). diff --git a/src/machine/dispatch.rs b/src/machine/dispatch.rs index ee57a83e..c9db5966 100644 --- a/src/machine/dispatch.rs +++ b/src/machine/dispatch.rs @@ -4152,14 +4152,6 @@ impl Machine { self.get_cut_point(); step_or_fail!(self, self.machine_st.p = self.machine_st.cp); } - &Instruction::CallGetStaggeredCutPoint(_) => { - self.get_staggered_cut_point(); - step_or_fail!(self, self.machine_st.p += 1); - } - &Instruction::ExecuteGetStaggeredCutPoint(_) => { - self.get_staggered_cut_point(); - step_or_fail!(self, self.machine_st.p = self.machine_st.cp); - } &Instruction::CallGetDoubleQuotes(_) => { self.get_double_quotes(); step_or_fail!(self, self.machine_st.p += 1); diff --git a/src/machine/system_calls.rs b/src/machine/system_calls.rs index 275c0ce7..be24526e 100644 --- a/src/machine/system_calls.rs +++ b/src/machine/system_calls.rs @@ -4850,62 +4850,6 @@ impl Machine { self.machine_st.unify_fixnum(n, self.machine_st.registers[1]); } - #[inline(always)] - pub(crate) fn get_staggered_cut_point(&mut self) { - use std::sync::Once; - - let b = self.deref_register(1); - - static mut SEMICOLON_SECOND_BRANCH_LOC: usize = 0; - static LOC_INIT: Once = Once::new(); - - let semicolon_second_clause_p = unsafe { - LOC_INIT.call_once(|| { - if let Some(builtins) = self.indices.modules.get(&atom!("builtins")) { - match builtins.code_dir.get(&(atom!("staggered_sc"), 2)).map(|cell| cell.get()) { - Some(ip) if ip.tag() == IndexPtrTag::Index => { - let p = ip.p() as usize; - - match &self.code[p] { - &Instruction::TryMeElse(o) => { - SEMICOLON_SECOND_BRANCH_LOC = p + o; - } - _ => { - unreachable!(); - } - } - } - _ => { - unreachable!(); - } - } - } else { - unreachable!(); - } - }); - - SEMICOLON_SECOND_BRANCH_LOC - }; - - let staggered_b0 = if self.machine_st.b > 0 { - let or_frame = self.machine_st.stack.index_or_frame(self.machine_st.b); - - if or_frame.prelude.bp == semicolon_second_clause_p { - or_frame.prelude.b0 - } else { - self.machine_st.b0 - } - } else { - self.machine_st.b0 - }; - - let staggered_b0 = integer_as_cell!( - Number::arena_from(staggered_b0, &mut self.machine_st.arena) - ); - - self.machine_st.bind(b.as_var().unwrap(), staggered_b0); - } - #[inline(always)] pub(crate) fn next_ep(&mut self) { let first_arg = self.deref_register(1); From a5054c006441b38e2092a9c28137f725413028b3 Mon Sep 17 00:00:00 2001 From: Mark Thom Date: Mon, 12 Dec 2022 23:55:43 -0700 Subject: [PATCH 11/18] use append/3 rather than set_difference/3 to gather witnesses in bagof/3 and setof/3 (#1663, #1664) --- src/lib/builtins.pl | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/lib/builtins.pl b/src/lib/builtins.pl index 1d2d0aed..d73ff8df 100644 --- a/src/lib/builtins.pl +++ b/src/lib/builtins.pl @@ -745,11 +745,10 @@ findall_with_existential(Template, Goal, PairedSolutions, Witnesses0, Witnesses) bagof(Template, Goal, Solution) :- error:can_be(list, Solution), - term_variables(Template, TemplateVars0), - term_variables(Goal, GoalVars0), - sort(TemplateVars0, TemplateVars), - sort(GoalVars0, GoalVars), - set_difference(GoalVars, TemplateVars, Witnesses0), + term_variables(Template, TemplateVars), + term_variables(Goal, GoalVars), + term_variables(TemplateVars+GoalVars, TGVs), + lists:append(TemplateVars, Witnesses0, TGVs), findall_with_existential(Template, Goal, PairedSolutions0, Witnesses0, Witnesses), keysort(PairedSolutions0, PairedSolutions), group_by_variants(PairedSolutions, GroupedSolutions), @@ -773,11 +772,10 @@ iterate_variants_and_sort([_|GroupSolutions], Ws, Solution) :- setof(Template, Goal, Solution) :- error:can_be(list, Solution), - term_variables(Template, TemplateVars0), - term_variables(Goal, GoalVars0), - sort(TemplateVars0, TemplateVars), - sort(GoalVars0, GoalVars), - set_difference(GoalVars, TemplateVars, Witnesses0), + term_variables(Template, TemplateVars), + term_variables(Goal, GoalVars), + term_variables(TemplateVars+GoalVars, TGVs), + lists:append(TemplateVars, Witnesses0, TGVs), findall_with_existential(Template, Goal, PairedSolutions0, Witnesses0, Witnesses), keysort(PairedSolutions0, PairedSolutions), group_by_variants(PairedSolutions, GroupedSolutions), From 0a8fc70ba9c70d8f4617182c92c5d232ef0f648f Mon Sep 17 00:00:00 2001 From: Mark Thom Date: Thu, 15 Dec 2022 23:26:36 -0700 Subject: [PATCH 12/18] detect cyclic bindings in attr_vars_of_term (#1666) --- src/machine/attributed_variables.pl | 1 - src/machine/attributed_variables.rs | 10 ++ src/machine/system_calls.rs | 156 ++++++++++++++-------------- 3 files changed, 88 insertions(+), 79 deletions(-) diff --git a/src/machine/attributed_variables.pl b/src/machine/attributed_variables.pl index 8c656e31..982ec495 100644 --- a/src/machine/attributed_variables.pl +++ b/src/machine/attributed_variables.pl @@ -1,6 +1,5 @@ :- module('$atts', []). - driver(Vars, Values) :- iterate(Vars, Values, ListOfListsOfGoalLists), !, diff --git a/src/machine/attributed_variables.rs b/src/machine/attributed_variables.rs index f74d3981..b11cf34c 100644 --- a/src/machine/attributed_variables.rs +++ b/src/machine/attributed_variables.rs @@ -147,6 +147,16 @@ impl MachineState { let value = unmark_cell_bits!(value); + if h != iter.focus() { + let deref_value = heap_bound_store(iter.heap, heap_bound_deref(iter.heap, value)); + + if deref_value.is_compound(iter.heap) { + // a cyclic structure is bound to the attributed variable at h. + // it mustn't be included in seen_vars. + continue; + } + } + seen_vars.push(value); seen_set.insert(h); diff --git a/src/machine/system_calls.rs b/src/machine/system_calls.rs index be24526e..c70c4dec 100644 --- a/src/machine/system_calls.rs +++ b/src/machine/system_calls.rs @@ -3354,71 +3354,6 @@ impl Machine { } } - #[inline(always)] - pub(crate) fn delete_attribute(&mut self) { - let ls0 = self.deref_register(1); - - if let HeapCellValueTag::Lis = ls0.get_tag() { - let l1 = ls0.get_value(); - let ls1 = self.machine_st.store(self.machine_st.deref(heap_loc_as_cell!(l1 + 1))); - - if let HeapCellValueTag::Lis = ls1.get_tag() { - let l2 = ls1.get_value(); - - let old_addr = self.machine_st.store(self.machine_st.deref(self.machine_st.heap[l1+1])); - let tail = self.machine_st.store(self.machine_st.deref(heap_loc_as_cell!(l2 + 1))); - - let tail = if tail.is_var() { - heap_loc_as_cell!(l1 + 1) - } else { - tail - }; - - let trail_ref = read_heap_cell!(old_addr, - (HeapCellValueTag::Var, h) => { - TrailRef::AttrVarHeapLink(h) - } - (HeapCellValueTag::Lis, l) => { - TrailRef::AttrVarListLink(l1 + 1, l) - } - _ => { - unreachable!() - } - ); - - self.machine_st.heap[l1 + 1] = tail; - self.machine_st.trail(trail_ref); - } - } - } - - #[inline(always)] - pub(crate) fn delete_head_attribute(&mut self) { - let addr = self.deref_register(1); - - debug_assert_eq!(addr.get_tag(), HeapCellValueTag::AttrVar); - - let h = addr.get_value(); - let addr = self.machine_st.store(self.machine_st.deref(self.machine_st.heap[h + 1])); - - debug_assert_eq!(addr.get_tag(), HeapCellValueTag::Lis); - - let l = addr.get_value(); - let tail = self.machine_st.store(self.machine_st.deref(self.machine_st.heap[l + 1])); - - let tail = if tail.is_var() { - self.machine_st.heap[h] = heap_loc_as_cell!(h); - self.machine_st.trail(TrailRef::Ref(Ref::attr_var(h))); - - heap_loc_as_cell!(h + 1) - } else { - tail - }; - - self.machine_st.heap[h + 1] = tail; - self.machine_st.trail(TrailRef::AttrVarListLink(h + 1, l)); - } - #[inline(always)] pub(crate) fn dynamic_module_resolution( &mut self, @@ -3473,19 +3408,6 @@ impl Machine { Ok((module_name, key)) } - #[inline(always)] - pub(crate) fn enqueue_attributed_var(&mut self) { - let addr = self.deref_register(1); - - read_heap_cell!(addr, - (HeapCellValueTag::AttrVar, h) => { - self.machine_st.attr_var_init.attr_var_queue.push(h); - } - _ => { - } - ); - } - #[inline(always)] pub(crate) fn get_next_db_ref(&mut self) { let a1 = self.deref_register(1); @@ -4308,6 +4230,84 @@ impl Machine { } } + #[inline(always)] + pub(crate) fn enqueue_attributed_var(&mut self) { + let addr = self.deref_register(1); + + read_heap_cell!(addr, + (HeapCellValueTag::AttrVar, h) => { + self.machine_st.attr_var_init.attr_var_queue.push(h); + } + _ => { + } + ); + } + + #[inline(always)] + pub(crate) fn delete_attribute(&mut self) { + let ls0 = self.deref_register(1); + + if let HeapCellValueTag::Lis = ls0.get_tag() { + let l1 = ls0.get_value(); + let ls1 = self.machine_st.store(self.machine_st.deref(heap_loc_as_cell!(l1 + 1))); + + if let HeapCellValueTag::Lis = ls1.get_tag() { + let l2 = ls1.get_value(); + + let old_addr = self.machine_st.store(self.machine_st.deref(self.machine_st.heap[l1+1])); + let tail = self.machine_st.store(self.machine_st.deref(heap_loc_as_cell!(l2 + 1))); + + let tail = if tail.is_var() { + heap_loc_as_cell!(l1 + 1) + } else { + tail + }; + + let trail_ref = read_heap_cell!(old_addr, + (HeapCellValueTag::Var, h) => { + TrailRef::AttrVarHeapLink(h) + } + (HeapCellValueTag::Lis, l) => { + TrailRef::AttrVarListLink(l1 + 1, l) + } + _ => { + unreachable!() + } + ); + + self.machine_st.heap[l1 + 1] = tail; + self.machine_st.trail(trail_ref); + } + } + } + + #[inline(always)] + pub(crate) fn delete_head_attribute(&mut self) { + let addr = self.deref_register(1); + + debug_assert_eq!(addr.get_tag(), HeapCellValueTag::AttrVar); + + let h = addr.get_value(); + let addr = self.machine_st.store(self.machine_st.deref(self.machine_st.heap[h + 1])); + + debug_assert_eq!(addr.get_tag(), HeapCellValueTag::Lis); + + let l = addr.get_value(); + let tail = self.machine_st.store(self.machine_st.deref(self.machine_st.heap[l + 1])); + + let tail = if tail.is_var() { + self.machine_st.heap[h] = heap_loc_as_cell!(h); + self.machine_st.trail(TrailRef::Ref(Ref::attr_var(h))); + + heap_loc_as_cell!(h + 1) + } else { + tail + }; + + self.machine_st.heap[h + 1] = tail; + self.machine_st.trail(TrailRef::AttrVarListLink(h + 1, l)); + } + #[inline(always)] pub(crate) fn get_continuation_chunk(&mut self) { let e = self.deref_register(1); From 1eff75875182b483f2a5a9b079e93f57835d1e72 Mon Sep 17 00:00:00 2001 From: Mark Thom Date: Fri, 16 Dec 2022 00:45:00 -0700 Subject: [PATCH 13/18] update README to point to local wambook (#1668) --- README.md | 2 +- wambook/wambook.pdf | Bin 0 -> 530191 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 wambook/wambook.pdf diff --git a/README.md b/README.md index 66f5cb82..d421bfa0 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ programming, which is itself written in a high-level language. Produce an implementation of the Warren Abstract Machine in Rust, done according to the progression of languages in [Warren's Abstract Machine: A Tutorial -Reconstruction](http://wambook.sourceforge.net/wambook.pdf). +Reconstruction](https://github.com/mthom/scryer-prolog/blob/master/wambook/wambook.pdf). Phase 1 has been completed in that Scryer Prolog implements in some form all of the WAM book, including lists, cuts, Debray allocation, first diff --git a/wambook/wambook.pdf b/wambook/wambook.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e2646ffa0d700f99c4bbf2013a37f64fe144f5e6 GIT binary patch literal 530191 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

on+i(y0h~7z9mPWntM3P9w2_f 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 literal 0 HcmV?d00001 From cf63e8375d810687f8cfa84ce10bc4570693465e Mon Sep 17 00:00:00 2001 From: Mark Thom Date: Fri, 16 Dec 2022 00:42:31 -0700 Subject: [PATCH 14/18] track attr_var_init lengths on the stack (#1667) --- build/instructions_template.rs | 4 ---- src/machine/attributed_variables.pl | 1 - src/machine/attributed_variables.rs | 4 ++-- src/machine/dispatch.rs | 8 -------- src/machine/machine_state.rs | 2 ++ src/machine/mod.rs | 10 ++++++---- src/machine/stack.rs | 1 + src/machine/system_calls.rs | 6 ++++-- 8 files changed, 15 insertions(+), 21 deletions(-) diff --git a/build/instructions_template.rs b/build/instructions_template.rs index 8bc5d630..3780f2c9 100644 --- a/build/instructions_template.rs +++ b/build/instructions_template.rs @@ -296,8 +296,6 @@ enum SystemClauseType { GetCode, #[strum_discriminants(strum(props(Arity = "1", Name = "$get_single_char")))] GetSingleChar, - #[strum_discriminants(strum(props(Arity = "0", Name = "$reset_attr_var_state")))] - ResetAttrVarState, #[strum_discriminants(strum(props(Arity = "2", Name = "$truncate_if_no_lh_growth_diff")))] TruncateIfNoLiftedHeapGrowthDiff, #[strum_discriminants(strum(props(Arity = "1", Name = "$truncate_if_no_lh_growth")))] @@ -1628,7 +1626,6 @@ fn generate_instruction_preface() -> TokenStream { &Instruction::CallGetNChars(_) | &Instruction::CallGetCode(_) | &Instruction::CallGetSingleChar(_) | - &Instruction::CallResetAttrVarState(_) | &Instruction::CallTruncateIfNoLiftedHeapGrowthDiff(_) | &Instruction::CallTruncateIfNoLiftedHeapGrowth(_) | &Instruction::CallGetAttributedVariableList(_) | @@ -1841,7 +1838,6 @@ fn generate_instruction_preface() -> TokenStream { &Instruction::ExecuteGetNChars(_) | &Instruction::ExecuteGetCode(_) | &Instruction::ExecuteGetSingleChar(_) | - &Instruction::ExecuteResetAttrVarState(_) | &Instruction::ExecuteTruncateIfNoLiftedHeapGrowthDiff(_) | &Instruction::ExecuteTruncateIfNoLiftedHeapGrowth(_) | &Instruction::ExecuteGetAttributedVariableList(_) | diff --git a/src/machine/attributed_variables.pl b/src/machine/attributed_variables.pl index 982ec495..c288511b 100644 --- a/src/machine/attributed_variables.pl +++ b/src/machine/attributed_variables.pl @@ -4,7 +4,6 @@ driver(Vars, Values) :- iterate(Vars, Values, ListOfListsOfGoalLists), !, call_goals(ListOfListsOfGoalLists), - '$reset_attr_var_state', '$return_from_verify_attr'. iterate([Var|VarBindings], [Value|ValueBindings], [ListOfGoalLists | ListsCubed]) :- diff --git a/src/machine/attributed_variables.rs b/src/machine/attributed_variables.rs index b11cf34c..2bab7451 100644 --- a/src/machine/attributed_variables.rs +++ b/src/machine/attributed_variables.rs @@ -33,8 +33,8 @@ impl AttrVarInitializer { } #[inline] - pub(super) fn reset(&mut self) { - self.attr_var_queue.clear(); + pub(super) fn reset(&mut self, len: usize) { + self.attr_var_queue.truncate(len); self.bindings.clear(); } } diff --git a/src/machine/dispatch.rs b/src/machine/dispatch.rs index c9db5966..72da8bad 100644 --- a/src/machine/dispatch.rs +++ b/src/machine/dispatch.rs @@ -3683,14 +3683,6 @@ impl Machine { try_or_throw!(self.machine_st, self.get_single_char()); step_or_fail!(self, self.machine_st.p = self.machine_st.cp); } - &Instruction::CallResetAttrVarState(_) => { - self.reset_attr_var_state(); - self.machine_st.p += 1; - } - &Instruction::ExecuteResetAttrVarState(_) => { - self.reset_attr_var_state(); - self.machine_st.p = self.machine_st.cp; - } &Instruction::CallTruncateIfNoLiftedHeapGrowthDiff(_) => { self.truncate_if_no_lifted_heap_growth_diff(); step_or_fail!(self, self.machine_st.p += 1); diff --git a/src/machine/machine_state.rs b/src/machine/machine_state.rs index 6aa51916..2db02c01 100644 --- a/src/machine/machine_state.rs +++ b/src/machine/machine_state.rs @@ -849,6 +849,7 @@ impl MachineState { or_frame.prelude.tr = self.tr; or_frame.prelude.h = self.heap.len(); or_frame.prelude.b0 = self.b0; + or_frame.prelude.attr_var_queue_len = self.attr_var_init.attr_var_queue.len(); self.b = b; @@ -876,6 +877,7 @@ impl MachineState { or_frame.prelude.tr = self.tr; or_frame.prelude.h = self.heap.len(); or_frame.prelude.b0 = self.b0; + or_frame.prelude.attr_var_queue_len = self.attr_var_init.attr_var_queue.len(); self.b = b; diff --git a/src/machine/mod.rs b/src/machine/mod.rs index 4cd1fce8..164471f4 100644 --- a/src/machine/mod.rs +++ b/src/machine/mod.rs @@ -570,10 +570,11 @@ impl Machine { let old_tr = or_frame.prelude.tr; let curr_tr = self.machine_st.tr; let target_h = or_frame.prelude.h; + let attr_var_queue_len = or_frame.prelude.attr_var_queue_len; self.machine_st.tr = or_frame.prelude.tr; + self.reset_attr_var_state(attr_var_queue_len); - self.reset_attr_var_state(); self.machine_st.hb = target_h; self.unwind_trail(old_tr, curr_tr); @@ -603,9 +604,10 @@ impl Machine { let old_tr = or_frame.prelude.tr; let curr_tr = self.machine_st.tr; let target_h = or_frame.prelude.h; + let attr_var_queue_len = or_frame.prelude.attr_var_queue_len; self.machine_st.tr = or_frame.prelude.tr; - self.reset_attr_var_state(); + self.reset_attr_var_state(attr_var_queue_len); self.machine_st.hb = target_h; self.machine_st.p = self.machine_st.p + offset; @@ -640,7 +642,7 @@ impl Machine { self.machine_st.tr = or_frame.prelude.tr; self.machine_st.b = or_frame.prelude.b; - self.reset_attr_var_state(); + self.reset_attr_var_state(or_frame.prelude.attr_var_queue_len); self.machine_st.hb = target_h; self.machine_st.p = self.machine_st.p + offset; @@ -676,7 +678,7 @@ impl Machine { self.machine_st.tr = or_frame.prelude.tr; self.machine_st.b = or_frame.prelude.b; - self.reset_attr_var_state(); + self.reset_attr_var_state(or_frame.prelude.attr_var_queue_len); self.machine_st.hb = target_h; self.machine_st.p += 1; diff --git a/src/machine/stack.rs b/src/machine/stack.rs index 388c3008..47a4fbf4 100644 --- a/src/machine/stack.rs +++ b/src/machine/stack.rs @@ -123,6 +123,7 @@ pub(crate) struct OrFramePrelude { pub(crate) tr: usize, pub(crate) h: usize, pub(crate) b0: usize, + pub(crate) attr_var_queue_len: usize, } #[derive(Debug)] diff --git a/src/machine/system_calls.rs b/src/machine/system_calls.rs index c70c4dec..3517f76b 100644 --- a/src/machine/system_calls.rs +++ b/src/machine/system_calls.rs @@ -4623,9 +4623,9 @@ impl Machine { } #[inline(always)] - pub(crate) fn reset_attr_var_state(&mut self) { + pub(crate) fn reset_attr_var_state(&mut self, queue_len: usize) { self.restore_instr_at_verify_attr_interrupt(); - self.machine_st.attr_var_init.reset(); + self.machine_st.attr_var_init.reset(queue_len); } #[inline(always)] @@ -4653,6 +4653,8 @@ impl Machine { #[inline(always)] pub(crate) fn return_from_verify_attr(&mut self) { + self.restore_instr_at_verify_attr_interrupt(); + let e = self.machine_st.e; let frame_len = self.machine_st.stack.index_and_frame(e).prelude.univ_prelude.num_cells; From d804d8a92ea844e795670f4d0e8a90291d8b936e Mon Sep 17 00:00:00 2001 From: Mark Thom Date: Sat, 17 Dec 2022 11:54:20 -0700 Subject: [PATCH 15/18] use proper dynamic arities in JmpByCall and JmpByExecute (#1605, #1606) --- build/instructions_template.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build/instructions_template.rs b/build/instructions_template.rs index 3780f2c9..f58dbfed 100644 --- a/build/instructions_template.rs +++ b/build/instructions_template.rs @@ -722,9 +722,9 @@ enum InstructionTemplate { Allocate(usize), // num_frames. #[strum_discriminants(strum(props(Arity = "0", Name = "deallocate")))] Deallocate, - #[strum_discriminants(strum(props(Arity = "3", Name = "jmp_by_call")))] + #[strum_discriminants(strum(props(Arity = "arity", Name = "jmp_by_call")))] JmpByCall(usize, usize), // arity, relative offset. - #[strum_discriminants(strum(props(Arity = "3", Name = "jmp_by_execute")))] + #[strum_discriminants(strum(props(Arity = "arity", Name = "jmp_by_execute")))] JmpByExecute(usize, usize), // arity, relative offset. #[strum_discriminants(strum(props(Arity = "1", Name = "rev_jmp_by")))] RevJmpBy(usize), From 6a995fb62b02900d1958349be70f00c1dbaa9c10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Arroyo=20Calle?= Date: Sat, 17 Dec 2022 20:43:43 +0100 Subject: [PATCH 16/18] Compatible Doclog docs for library(http/http_open). --- src/lib/http/http_open.pl | 47 +++++++++++++++++++++------------------ 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/src/lib/http/http_open.pl b/src/lib/http/http_open.pl index 1c89b5a5..7d0503c2 100644 --- a/src/lib/http/http_open.pl +++ b/src/lib/http/http_open.pl @@ -1,34 +1,37 @@ /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Written 2022 by Adrián Arroyo Calle (adrian.arroyocalle@gmail.com) Part of Scryer Prolog. +*/ - http_open(+Address, -Stream, +Options) - ====================================== +/** Make HTTP requests. - Yields Stream to read the body of an HTTP reply from Address. - Address is a list of characters, and includes the method. Both HTTP - and HTTPS are supported. - - Options supported: - - * method(+Method): Sets the HTTP method of the call. Method can be get (default), head, delete, post, put or patch. - * data(+Data): Data to be sent in the request. Useful for POST, PUT and PATCH operations. - * size(-Size): Unifies with the value of the Content-Length header - * request_headers(+RequestHeaders): Headers to be used in the request - * headers(-ListHeaders): Unifies with a list with all headers returned in the response - * status_code(-Code): Unifies with the status code of the request (200, 201, 404, ...) - - Example: - - ?- http_open("https://github.com/mthom/scryer-prolog", S, []). - %@ S = '$stream'(0x7fcfc9e00f00). - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ +This library contains the predicate http\_open/3 which allows you to perform HTTP(S) calls. +Useful for making API calls, or parsing websites. It uses Hyper underneath. +*/ :- module(http_open, [http_open/3]). :- use_module(library(lists)). +%% http_open(+Address, -Stream, +Options). +% +% Yields Stream to read the body of an HTTP reply from Address. +% Address is a list of characters, and includes the method. Both HTTP +% and HTTPS are supported. +% +% Options supported: +% +% * `method(+Method)`: Sets the HTTP method of the call. Method can be `get` (default), `head`, `delete`, `post`, `put` or `patch`. +% * `data(+Data)`: Data to be sent in the request. Useful for POST, PUT and PATCH operations. +% * `size(-Size)`: Unifies with the value of the Content-Length header +% * `request_headers(+RequestHeaders)`: Headers to be used in the request +% * `headers(-ListHeaders)`: Unifies with a list with all headers returned in the response +% * `status_code(-Code)`: Unifies with the status code of the request (200, 201, 404, ...) +% +% Example: +% +% ?- http_open("https://www.example.com", S, []), get_n_chars(S, N, HTML). +% S = '$stream'(0x7fb548001be8), N = 1256, HTML = "\n true; Method = get), @@ -65,4 +68,4 @@ parse_http_options_(request_headers(Headers), request_headers(Headers)) :- parse_http_options_(size(Size), size(Size)). parse_http_options_(status_code(Code), status_code(Code)). -parse_http_options_(headers(Headers), headers(Headers)). \ No newline at end of file +parse_http_options_(headers(Headers), headers(Headers)). From 0166c3bf0fc943aadbe5634881728e8a921402f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Arroyo=20Calle?= Date: Sat, 17 Dec 2022 22:46:44 +0100 Subject: [PATCH 17/18] Compatible Doclog docs for library(iso_ext) --- src/lib/iso_ext.pl | 94 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 91 insertions(+), 3 deletions(-) diff --git a/src/lib/iso_ext.pl b/src/lib/iso_ext.pl index 26b4713c..2ae3bf84 100644 --- a/src/lib/iso_ext.pl +++ b/src/lib/iso_ext.pl @@ -1,3 +1,9 @@ +/** Useful general predicates that are not ISO standard yet + +Predicates available here are similar to the ones defined in builtin.pl, +but they're not part of the ISO Prolog standard at the moment. +*/ + :- module(iso_ext, [bb_b_put/2, bb_get/2, bb_put/2, @@ -22,25 +28,70 @@ :- meta_predicate(forall(0, 0)). +%% forall(Generate, Test). +% +% For all bindings possible by Generate, Test must be true. +% +% In this example, it checks that all numbers are even: +% +% ?- Ns = [2,4,6], forall(member(N, Ns), 0 is N mod 2). +% Ns = [2,4,6]. forall(Generate, Test) :- \+ (Generate, \+ Test). -%% (non-)backtrackable global variables. +% (non-)backtrackable global variables. +%% bb_put(+Key, +Value). +% +% Sets a global variable named Key (must be an atom) with value Value. +% The global variable isn't backtrackable. Check bb\_b\_put/2 for the +% backtrackable version. +% +% ?- bb_put(city, "Valladolid"). +% true. +% ?- bb_get(city, X). +% X = "Valladolid". +% In this example one can understand the difference between bb\_put/2 and +% bb\_b\_put/2: +% +% ?- bb_put(city, "Valladolid"), (bb_put(city, "Salamanca"), false);(bb_get(city, X)). +% X = "Salamanca". +% ?- bb_put(city, "Valladolid"), (bb_b_put(city, "Salamanca"), false);(bb_get(city, X)). +% X = "Valladolid". bb_put(Key, Value) :- ( atom(Key) -> '$store_global_var'(Key, Value) ; type_error(atom, Key, bb_put/2) ). -%% backtrackable global variables. +% backtrackable global variables. +%% bb_b_put(+Key, +Value). +% +% Sets a global variable named Key (must be an atom) with value Value. +% The global variable is backtrackable. Check bb\_put/2 for the +% non-backtrackable version. +% +% ?- bb_b_put(city, "Valladolid"). +% true. +% ?- bb_get(city, X). +% X = "Valladolid". +% In this example one can understand the difference between bb\_put/2 and +% bb\_b\_put/2: +% +% ?- bb_put(city, "Valladolid"), (bb_put(city, "Salamanca"), false);(bb_get(city, X)). +% X = "Salamanca". +% ?- bb_put(city, "Valladolid"), (bb_b_put(city, "Salamanca"), false);(bb_get(city, X)). +% X = "Valladolid". bb_b_put(Key, Value) :- ( atom(Key) -> '$store_backtrackable_global_var'(Key, Value) ; type_error(atom, Key, bb_b_put/2) ). +%% bb_get(+Key, -Value). +% +% Gets the value Value of a global variable named Key (must be an atom) bb_get(Key, Value) :- ( atom(Key) -> '$fetch_global_var'(Key, Value) @@ -52,12 +103,23 @@ bb_get(Key, Value) :- :- meta_predicate(call_cleanup(0, 0)). +%% call_cleanup(Goal, Cleanup). +% +% Executes Goal and then, either on success or failure, executes Cleanup. +% The success or failure of Cleanup is ignored and choice points created inside are destroyed. call_cleanup(G, C) :- setup_call_cleanup(true, G, C). :- meta_predicate(setup_call_cleanup(0, 0, 0)). :- non_counted_backtracking setup_call_cleanup/3. +%% setup_call_cleanup(Setup, Goal, Cleanup). +% +% If Setup succeeds, Cleanup will be called after the execution of Goal. Goal itself can succeed or not. +% +% In this example, we use the predicate to always close an open file: +% +% ?- setup_call_cleanup(open(File, read, Stream), do_something_with_stream(Stream), close(Stream)). setup_call_cleanup(S, G, C) :- '$get_b_value'(B), '$call_with_inference_counting'(call(S)), @@ -144,6 +206,9 @@ handle_ile(B, _, _) :- :- non_counted_backtracking call_with_inference_limit/3. +%% call_with_inference_limit(Goal, Limit, Result). +% +% Similar to `call(Goal)` but it limits the number of inferences for each solution of Goal. call_with_inference_limit(G, L, R) :- ( integer(L) -> ( L < 0 -> @@ -186,6 +251,10 @@ call_with_inference_limit(_, _, R, Bb, B) :- ), handle_ile(B, Ball, R). +%% partial_string(String, L, L0) +% +% Explicitly construct a partial string "manually". It can be used as an optimized append/3. +% It's not recommended to use this predicate in application code. partial_string(String, L, L0) :- ( String == [] -> L = L0 @@ -195,9 +264,17 @@ partial_string(String, L, L0) :- '$create_partial_string'(Atom, L, L0) ). +%% partial_string(+String) +% +% Succeeds if String is a _partial string_. A partial string is a string composed of several smaller +% strings, even just one. That means all strings in Scryer are partial strings. partial_string(String) :- '$is_partial_string'(String). +%% partial_string_tail(+String, -Tail). +% +% Unifies Tail with the last section of the partial string. +% It's not recommended to use this predicate in application code. partial_string_tail(String, Tail) :- ( partial_string(String) -> '$partial_string_tail'(String, Tail) @@ -209,6 +286,9 @@ partial_string_tail(String, Tail) :- :- meta_predicate(call_nth(0, ?)). +%% call_nth(Goal, N). +% +% Succeeds when Goal succeeded for the Nth time (there are at least N solutions) call_nth(Goal, N) :- can_be(integer, N), ( integer(N) -> @@ -247,16 +327,24 @@ call_nth_nesting(C, ID) :- bb_put(i_call_nth_counter, C). +%% copy_term_nat(Source, Dest) +% +% Similar to copy\_term/2 but without attribute variables copy_term_nat(Source, Dest) :- '$copy_term_without_attr_vars'(Source, Dest). - +%% asserta(Module, Rule_Fact). +% +% Similar to asserta/1 but allows specifying a Module asserta(Module, (Head :- Body)) :- !, '$asserta'(Module, Head, Body). asserta(Module, Fact) :- '$asserta'(Module, Fact, true). +%% assertz(Module, Rule_Fact). +% +% Similar to assertz/1 but allows specifying a Module assertz(Module, (Head :- Body)) :- !, '$assertz'(Module, Head, Body). From 6cb8d7596a52d49c3eadb12f7aecb666a51e03ca Mon Sep 17 00:00:00 2001 From: Markus Triska Date: Sun, 18 Dec 2022 17:43:33 +0100 Subject: [PATCH 18/18] dereference more registers, analogous to d660e4244ff48bbcd558fab07a4dd4a5e9d68209 See also #1654 for a nice test case by @notoria which this corrects. --- src/machine/system_calls.rs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/machine/system_calls.rs b/src/machine/system_calls.rs index 3517f76b..289a6c97 100644 --- a/src/machine/system_calls.rs +++ b/src/machine/system_calls.rs @@ -5919,10 +5919,10 @@ impl Machine { #[inline(always)] pub(crate) fn crypto_data_hash(&mut self) { - let encoding = cell_as_atom!(self.machine_st.registers[2]); + let encoding = cell_as_atom!(self.deref_register(2)); let bytes = self.string_encoding_bytes(self.machine_st.registers[1], encoding); - let algorithm = cell_as_atom!(self.machine_st.registers[4]); + let algorithm = cell_as_atom!(self.deref_register(4)); let ints_list = match algorithm { atom!("sha3_224") => { @@ -6059,7 +6059,7 @@ impl Machine { #[inline(always)] pub(crate) fn crypto_data_hkdf(&mut self) { - let encoding = cell_as_atom!(self.machine_st.registers[2]); + let encoding = cell_as_atom!(self.deref_register(2)); let data = self.string_encoding_bytes(self.machine_st.registers[1], encoding); let stub1_gen = || functor_stub(atom!("crypto_data_hkdf"), 4); @@ -6068,7 +6068,7 @@ impl Machine { let stub2_gen = || functor_stub(atom!("crypto_data_hkdf"), 4); let info = self.machine_st.integers_to_bytevec(self.machine_st.registers[4], stub2_gen); - let algorithm = cell_as_atom!(self.machine_st.registers[5]); + let algorithm = cell_as_atom!(self.deref_register(5)); let length = self.deref_register(6); @@ -6174,7 +6174,7 @@ impl Machine { #[inline(always)] pub(crate) fn crypto_data_encrypt(&mut self) { - let encoding = cell_as_atom!(self.machine_st.registers[3]); + let encoding = cell_as_atom!(self.deref_register(3)); let data = self.string_encoding_bytes(self.machine_st.registers[1], encoding); let aad = self.string_encoding_bytes(self.machine_st.registers[2], encoding); @@ -6314,7 +6314,7 @@ impl Machine { #[inline(always)] pub(crate) fn ed25519_sign(&mut self) { let key = self.string_encoding_bytes(self.machine_st.registers[1], atom!("octet")); - let encoding = cell_as_atom!(self.machine_st.registers[3]); + let encoding = cell_as_atom!(self.deref_register(3)); let data = self.string_encoding_bytes(self.machine_st.registers[2], encoding); let key_pair = match signature::Ed25519KeyPair::from_pkcs8(&key) { @@ -6342,7 +6342,7 @@ impl Machine { #[inline(always)] pub(crate) fn ed25519_verify(&mut self) { let key = self.string_encoding_bytes(self.machine_st.registers[1], atom!("octet")); - let encoding = cell_as_atom!(self.machine_st.registers[3]); + let encoding = cell_as_atom!(self.deref_register(3)); let data = self.string_encoding_bytes(self.machine_st.registers[2], encoding); let stub_gen = || functor_stub(atom!("ed25519_verify"), 5); let signature = self.machine_st.integers_to_bytevec(self.machine_st.registers[4], stub_gen); @@ -6531,8 +6531,8 @@ impl Machine { #[inline(always)] pub(crate) fn chars_base64(&mut self) -> CallResult { - let padding = cell_as_atom!(self.machine_st.registers[3]); - let charset = cell_as_atom!(self.machine_st.registers[4]); + let padding = cell_as_atom!(self.deref_register(3)); + let charset = cell_as_atom!(self.deref_register(4)); let config = if padding == atom!("true") { if charset == atom!("standard") {