poke-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] pkl: fix `get_time'


From: Mohammad-Reza Nabipoor
Subject: [PATCH] pkl: fix `get_time'
Date: Mon, 23 Jan 2023 23:32:00 +0100

2023-01-23  Mohammad-Reza Nabipoor  <mnabipoor@gnu.org>

        * libpoke/pvm.jitter (time): Change the instruction to push
        SEC and NSEC to the stack (instead of creating an array and
        pushing the array to the stack).
        * libpoke/pkl-rt.pk (get_time): Adapt.
        * testsuite/poke.pkl/get-time-1.pk: New test.
        * testsuite/Makefile.am (EXTRA_DIST): Add new test.
---
 ChangeLog                        |  9 +++++++++
 libpoke/pkl-rt.pk                |  5 ++++-
 libpoke/pvm.jitter               | 15 ++++-----------
 testsuite/Makefile.am            |  1 +
 testsuite/poke.pkl/get-time-1.pk |  7 +++++++
 5 files changed, 25 insertions(+), 12 deletions(-)
 create mode 100644 testsuite/poke.pkl/get-time-1.pk

diff --git a/ChangeLog b/ChangeLog
index 65cff30d..d40ffc62 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2023-01-23  Mohammad-Reza Nabipoor  <mnabipoor@gnu.org>
+
+       * libpoke/pvm.jitter (time): Change the instruction to push
+       SEC and NSEC to the stack (instead of creating an array and
+       pushing the array to the stack).
+       * libpoke/pkl-rt.pk (get_time): Adapt.
+       * testsuite/poke.pkl/get-time-1.pk: New test.
+       * testsuite/Makefile.am (EXTRA_DIST): Add new test.
+
 2023-01-23  Mohammad-Reza Nabipoor  <mnabipoor@gnu.org>
 
        * libpoke/pkl-typify.c (pkl_typify1_ps_type_integral): Reject
diff --git a/libpoke/pkl-rt.pk b/libpoke/pkl-rt.pk
index 7cb81ec7..151e3ce4 100644
--- a/libpoke/pkl-rt.pk
+++ b/libpoke/pkl-rt.pk
@@ -178,7 +178,10 @@ immutable fun flush = (int<32> ios, offset<uint<64>,1> 
offset) void:
 
 immutable fun get_time = int<64>[2]:
 {
-  return asm int<64>[2]: ("time");
+  var t = int<64>[2] ();
+
+  asm ("time" : t[0], t[1]);
+  return t;
 }
 
 immutable fun strace = void:
diff --git a/libpoke/pvm.jitter b/libpoke/pvm.jitter
index 757915ef..1f266683 100644
--- a/libpoke/pvm.jitter
+++ b/libpoke/pvm.jitter
@@ -6819,25 +6819,18 @@ end
 # Instruction: time
 #
 # Push the current system time to the stack in the form of
-# an array of two long elements containing the number of seconds
+# two long elements containing the number of seconds
 # and nanoseconds since the epoch.
 #
-# Stack: ( -- ARR )
+# Stack: ( -- LONG(sec) LONG(nsec) )
 
 instruction time ()
   code
     struct timespec ts;
-    pvm_val arr = pvm_make_array (
-      PVM_MAKE_ULONG (2, 64),
-      pvm_make_integral_type (PVM_MAKE_ULONG (64, 64), PVM_MAKE_INT (1, 32)));
 
     pvm_gettime (&ts);
-    (void) pvm_array_insert (arr, PVM_MAKE_LONG (0, 64),
-                             PVM_MAKE_LONG (ts.tv_sec, 64));
-    (void) pvm_array_insert (arr, PVM_MAKE_LONG (1, 64),
-                             PVM_MAKE_LONG (ts.tv_nsec, 64));
-
-    JITTER_PUSH_STACK (arr);
+    JITTER_PUSH_STACK (PVM_MAKE_LONG (ts.tv_sec, 64));
+    JITTER_PUSH_STACK (PVM_MAKE_LONG (ts.tv_nsec, 64));
   end
 end
 
diff --git a/testsuite/Makefile.am b/testsuite/Makefile.am
index cff03d63..35ab2bd4 100644
--- a/testsuite/Makefile.am
+++ b/testsuite/Makefile.am
@@ -1522,6 +1522,7 @@ EXTRA_DIST = \
   poke.pkl/get-endian-1.pk \
   poke.pkl/get-ios-1.pk \
   poke.pkl/get-ios-2.pk \
+  poke.pkl/get-time-1.pk \
   poke.pkl/getenv-1.pk \
   poke.pkl/getenv-2.pk \
   poke.pkl/gt-arrays-diag-1.pk \
diff --git a/testsuite/poke.pkl/get-time-1.pk b/testsuite/poke.pkl/get-time-1.pk
new file mode 100644
index 00000000..2a794d98
--- /dev/null
+++ b/testsuite/poke.pkl/get-time-1.pk
@@ -0,0 +1,7 @@
+/* { dg-do run } */
+
+var t = get_time;
+
+/* { dg-command {.set obase 10} } */
+/* { dg-command {t isa int<64>[2]} } */
+/* { dg-output "1" } */
-- 
2.39.1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]