summaryrefslogtreecommitdiffstats
path: root/third_party/rust/jsparagus-stencil/src/env_coord.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 19:33:14 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 19:33:14 +0000
commit36d22d82aa202bb199967e9512281e9a53db42c9 (patch)
tree105e8c98ddea1c1e4784a60a5a6410fa416be2de /third_party/rust/jsparagus-stencil/src/env_coord.rs
parentInitial commit. (diff)
downloadfirefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz
firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip
Adding upstream version 115.7.0esr.upstream/115.7.0esrupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'third_party/rust/jsparagus-stencil/src/env_coord.rs')
-rw-r--r--third_party/rust/jsparagus-stencil/src/env_coord.rs50
1 files changed, 50 insertions, 0 deletions
diff --git a/third_party/rust/jsparagus-stencil/src/env_coord.rs b/third_party/rust/jsparagus-stencil/src/env_coord.rs
new file mode 100644
index 0000000000..257afbeb39
--- /dev/null
+++ b/third_party/rust/jsparagus-stencil/src/env_coord.rs
@@ -0,0 +1,50 @@
+//! (EnvironmentSlot,EnvironmentHops) pair represent the reference to a slot in
+//! an environment object in the environment chain.
+//!
+//! See the SMDOC comment in m-c/js/src/vm/EnvironmentObject.h for the details
+//! about environment object and environment chain.
+
+/// Slot in the environmentslot object.
+#[derive(Clone, Copy, Debug, PartialEq, Eq, Ord, PartialOrd)]
+pub struct EnvironmentSlot {
+ slot: u32,
+}
+
+impl EnvironmentSlot {
+ pub fn new(slot: u32) -> Self {
+ Self { slot }
+ }
+
+ pub fn next(&mut self) {
+ self.slot += 1;
+ }
+}
+
+impl From<EnvironmentSlot> for u32 {
+ fn from(slot: EnvironmentSlot) -> u32 {
+ slot.slot
+ }
+}
+
+/// The number of environment objects to skip (hop) on the environment chain in
+/// order to find the associated environment object.
+#[derive(Clone, Copy, Debug, PartialEq, Eq, Ord, PartialOrd)]
+pub struct EnvironmentHops {
+ hops: u8,
+}
+
+impl EnvironmentHops {
+ pub fn new(hops: u8) -> Self {
+ Self { hops }
+ }
+
+ pub fn next(&mut self) {
+ self.hops += 1;
+ }
+}
+
+impl From<EnvironmentHops> for u8 {
+ fn from(hops: EnvironmentHops) -> u8 {
+ hops.hops
+ }
+}