Skip to content

Glossary

Levente Santha edited this page May 15, 2026 · 76 revisions

Glossary

Project-specific terminology used throughout JNode and this wiki.

Term Definition
Addressing mode A classification of how an operand accesses data — e.g., register (R), memory displacement (E), immediate constant (C), absolute memory (A), scaled-index (S). JNasm encodes up to 3 operand types per instruction as a 3-digit base-8 integer in AbstractX86Module. See JNAsm-Instruction-Encoding.
Argument (Shell) Typed holder class (e.g., FileArgument) used by JNode's shell to declaratively parse and validate command-line tokens.
ARP cache A time-limited (10-minute TTL) in-memory map maintained by the ARP layer that stores IPv4-to-MAC address mappings to avoid repeated broadcast requests. See ARP.
Assembler A software tool that converts assembly language source code into machine code. JNode uses its custom JNasm assembler. See JNasm-Assembler-Design.
BDF (Bitmap Distribution Format) A text-based bitmap font format used by JNode's BDF renderer. BDF files are parsed by the JavaCC-generated BDFParser (gui/src/font/org/jnode/font/bdf/), producing BDFFontContainer with BDFGlyph entries. Supports multiple bit depths (1-8 bpp) via pixel unpacking in BDFGlyph.decode(). See Font-Rendering.
block bitmap A per-block-group bitmap stored in a single block, where each bit marks whether the corresponding data block is allocated or free. JNode's implementation is in BlockBitmap.java. See Ext2-Ext3-Filesystem.
block group A partition of the ext2 filesystem containing a superblock copy, group descriptor table, block bitmap, inode bitmap, inode table, and free data blocks. JNode's implementation is in GroupDescriptor.java. See Ext2-Ext3-Filesystem.
BootImageBuilder Build tool (builder/src/builder/org/jnode/build/x86/BootImageBuilder.java) that compiles Java classes and assembles them into the boot image at build time.
BootLog JNode's logging interface used during the bootstrap phase before full logging systems are initialized. Provides a singleton accessor via BootLogInstance.get() with five severity levels: DEBUG, INFO, WARN, ERROR, FATAL. See Boot-Log.
BootFloppyBuilder Ant task (org.jnode.build.BootFloppyBuilder) that creates GRUB-bootable FAT disk images. Subclassed by BootDiskBuilder for partitioned hard disk images. See Boot-Floppy-Builder.
Capability chain A linked list of optional feature structures in PCI configuration space. Each capability (MSI, Power Management, etc.) has an ID, a next pointer, and capability-specific registers at its offset. See PCI-Capability-Structure.
CardBus A 32-bit PCMCIA bus standard implemented as a PCI-to-CardBus bridge. CardBus controllers are enumerated via the PCI layer and manage CardBus sockets and cards. JNode's implementation is in core/src/driver/org/jnode/driver/bus/pcmcia/. See CardBus.
Catalog (HFS+) The B-Tree file storing all file and directory records on an HFS+ volume. Keys are (parent CNID + Unicode name) pairs; leaf records are CatalogFolder, CatalogFile, or CatalogThread entries. JNode's implementation is org.jnode.fs.hfsplus.catalog.Catalog. See HFS+-Filesystem.
Classlib The GNU Classpath / OpenJDK standard library JAR (all/lib/classlib.jar), downloaded during the build. Provides java.* and javax.* classes.
CNID (Catalog Node ID) The numeric identifier for each file and directory in HFS+. The root directory is CNID 2; CNID 1 is the parent-of-root. Used as the parent key in catalog lookups. See HFS+-Filesystem.
CoreThreadScheduling JNode's hybrid preemptive/cooperative thread scheduler. Combines compiler-injected yieldpoints (INT 0x30) for cooperative switching with timer interrupts for preemptive time-slicing. Managed by VmScheduler per VmProcessor, uses TSI flags to coordinate switch conditions. See Core-Thread-Scheduling.
Descriptor An XML file in <subproject>/descriptors/ that defines a plugin's identity, dependencies, exports, and extensions.
Device-to-driver mapping The process of matching a discovered device to a suitable driver via the DeviceToDriverMapper strategy pattern. Mappers are registered via the org.jnode.driver.mappers extension point, sorted by match level, and the first mapper that returns a non-null driver wins. See DeviceToDriverMapper.
DeviceException Base exception for device-level errors (registration, lookup, API access). Extends Exception; subclasses include ApiNotFoundException, DeviceAlreadyRegisteredException, DeviceNotFoundException. See DeviceException-DriverException.
DriverException Base exception for driver-level errors (connection, resource claiming). Extends Exception; subclasses include DeviceAlreadyConnectedException, InvalidDriverException. See DeviceException-DriverException.
DeviceFinder An interface (org.jnode.driver.DeviceFinder) that defines the strategy for discovering hardware devices on a specific bus. Implementations are loaded via the org.jnode.driver.finders extension point and invoked by DeviceManager.findDevices() at boot to enumerate all hardware. See DeviceFinder.
DeviceManagerListener Observer interface (org.jnode.driver.DeviceManagerListener) providing deviceRegistered and deviceUnregister callbacks, used for deferred device initialization (e.g., FBConsole waiting for a framebuffer). Distinct from DeviceListener which fires on device start/stop. See DeviceManagerListener.
DMA Direct Memory Access. JNode's x86 ISA DMA controller abstraction providing Java-level channel allocation, transfer setup (address/page/count registers), and enable/disable control. Three-layer architecture: DMAResource/DMAManager interfaces → DMAPlugin → DMA hardware. Limited to lower 16 MB of physical memory. See DMA.
DMA channel One of 8 x86 DMA controller channels (0-3: 8-bit, 4: cascade, 5-7: 16-bit) managed by DMAPlugin for direct memory access transfers. Channel 4 is permanently reserved for cascading. See DMA.
DMAResource An allocated DMA channel (org.jnode.system.resource.DMAResource) supporting setup(), enable(), and getLength() for transferring data between memory and I/O devices. See DMA.
DNS Resolver JNode's singleton service (ResolverImpl) that translates hostnames to IPv4 addresses using the dnsjava library (ExtendedResolver, Lookup). Configured dynamically via DHCP; accessed via NetAPIImpl and IPv4NetworkLayer. No caching — each lookup queries the DNS server. See DNS-Resolver.
double buffering A rendering technique used by JNode's JNodeSurfaceGraphics2D where drawing operations write to an offscreen BufferedImage, and updateRaster() blits the result to the physical Surface in a single operation. Reduces visible tearing on update. See JNode-Graphics2D.
Exception handler table JNode's compiled representation of bytecode try-catch blocks. For interpreted code, handlers use bytecode PC offsets (VmInterpretedExceptionHandler); for compiled code, they use native addresses (VmCompiledExceptionHandler). The VmCompiledCode.eTable array drives stack unwinding via VmSystem.findThrowableHandler(). See Exception-Handler-Table.
Extension A contribution by one plugin to another plugin's extension point. Declared via <extension> in the descriptor XML.
Extension point A named hook declared by a plugin where other plugins can register extensions. Declared via <extension-point> in the descriptor XML.
ExFAT Extended File Allocation Table. A Microsoft filesystem for flash storage that removes FAT32's 4GB file size limit and supports volumes larger than 2TB. JNode's read-only implementation is in fs/src/fs/org/jnode/fs/exfat/. See ExFAT-Filesystem.
extent A contiguous range of data blocks stored in an inode's extent tree (ExtentHeader/Extent), used by ext4 to map file logical blocks to physical blocks more efficiently than indirect addressing. JNode's implementation is in INode.java under the EXT4_INODE_EXTENTS_FLAG flag. See Ext2-Ext3-Filesystem.
FAT12 The 12-bit File Allocation Table variant, used on floppies and small media (up to 4KB clusters, ~16MB capacity). See FAT-Filesystem.
FAT16 The 16-bit File Allocation Table variant, used on media up to 2GB with 32KB clusters. See FAT-Filesystem.
FAT32 The 32-bit File Allocation Table variant, supporting media up to 8TB (with 32KB clusters) and root directory as a cluster chain. See FAT-Filesystem.
Field offset The memory offset (in slots) of an instance field relative to an object's base address. Calculated during class loading and stored in VmInstanceField.offset for runtime field access. See Field-Offset-Calculation.
File handle A lightweight wrapper around an open file that tracks the current read/write position and access mode. JNode's implementation is FileHandleImpl managed by FileHandleManager. See FileHandle-Implementation.
FileSystemType The factory interface for filesystem drivers in JNode (org.jnode.fs.FileSystemType). Each plugin implements create(Device, boolean) to probe a block device and instantiate a FileSystem instance. Managed by FileSystemTypeManager via the plugin extension point. See VFS-Layer.
Flags slot A slot in the JNode object header (typically at offset -2) used for GC marking, synchronization state, and hashcode storage.
FSEntry A file or directory entry returned by FSDirectory.getEntry() (org.jnode.fs.FSEntry). Provides metadata (name, dates, permissions) and access to FSFile or FSDirectory views. Used throughout the VFS path resolution chain. See VFS-Layer.
FSEntry Table Per-directory data structure (org.jnode.fs.spi.FSEntryTable) mapping entry names and IDs to FSEntry objects, with lazy loading, case sensitivity support, and free-slot management. See FSEntry-Table.
group descriptor A per-block-group metadata structure in ext2 storing the block bitmap block number, inode bitmap block number, inode table block number, and free block/inode counts. JNode's implementation is GroupDescriptor.java. See Ext2-Ext3-Filesystem.
IMT Interface Method Table. A fixed 64-element hash table in the TIB used for interface method dispatch. Lookup uses selector % 64; collisions are handled via chained lists. See IMT.
Init-jar A nested archive inside the boot image containing all plugin JARs and descriptors. Extracted by InitJarProcessor at boot.
InitialNaming JNode's service registry (org.jnode.naming.InitialNaming). A simple name→object map used to register and look up OS singleton services. Uses Class keys (not strings) for type-safe, refactor-friendly lookups. See InitialNaming-Service-Registry.
inode A data structure in ext2 storing file metadata (mode, timestamps, size, block pointers) accessed via an inode number. JNode's implementation is INode.java with direct/indirect block addressing and extents support. See Ext2-Ext3-Filesystem.
inode bitmap A per-block-group bitmap where each bit marks whether the corresponding inode in the inode table is allocated or free. JNode's implementation is in INodeBitmap.java. See Ext2-Ext3-Filesystem.
Instruction encoding The process of translating an assembly mnemonic and operands into x86 machine code bytes. JNasm uses emit methods in X86Core.java that select the correct encoding variant based on addressing mode, then delegate to X86Assembler.writeXXX() for byte emission. See JNAsm-Instruction-Encoding.
ISO9660 A CD-ROM filesystem standard (ISO-9660 Level 1/2) supported by JNode's org.jnode.fs.iso9660 plugin. Defines directory structure, volume descriptors, and filename restrictions (8.3 format). See Boot-CD-ROM-Builder.
Isolate A lightweight process abstraction in JNode. Each isolate has its own VmIsolatedStatics table for per-isolate static fields. See Isolate-Implementation.
IsolateThread The main thread type used to start a new isolate (core/src/core/org/jnode/vm/isolate/IsolateThread.java). Wraps the main thread of each isolate with isolate-specific I/O streams and the VmIsolatedStatics table. See IsolateThread.
JNasm JNode's custom x86 assembler written in Java (builder/src/builder/org/jnode/jnasm/). Assembles .asm files into native code for the boot image. See JNasm-Assembler-Design.
journaling A filesystem feature (ext3) where changes are first written to a circular log (journal) before being applied to the filesystem, enabling crash recovery and consistency. JNode's ext2 driver handles ext3 as read-only; the journal inode and UUID are stored in the superblock. See Ext2-Ext3-Filesystem.
L1 Compiler The fast, non-optimizing JIT compiler (org.jnode.vm.x86.compiler.l1a). Uses a VirtualStack with delayed emission to keep values in registers within basic blocks. Applies lightweight optimizations (inlining, constant folding) via OptimizingBytecodeVisitor. See L1-Compiler-Deep-Dive.
L1 Compiler Registers The register allocation (X86RegisterPool) and virtual stack (VirtualStack) mechanisms used by the L1 compiler. Manages GPR and XMM pools, item state transitions (CONSTANT→GPR→STACK), and type-safe stack operations. See L1-Compiler.
L2 compiler The optimizing JIT compiler (org.jnode.vm.x86.compiler.l2). Uses an SSA-based IR, linear-scan register allocation, and multiple optimization passes. See L2-Compiler-Deep-Dive.
LBA (Logical Block Addressing) A disk addressing scheme that uses linear sector numbers instead of CHS (Cylinder-Head-Sector) geometry. JNode's IDE driver supports both 28-bit LBA (up to 128GB) and 48-bit LBA (up to 128PB). See IDEDisk-Driver.
LFN Long File Name. A VFAT extension to the FAT filesystem that stores Unicode filenames in special directory entries preceding the 8.3 alias. Supports filenames up to 255 characters. See FAT-Filesystem.
MAC address Media Access Control address. A unique 48-bit hardware identifier assigned to network interfaces, used for link-layer addressing in Ethernet frames. JNode's EthernetAddress class wraps 6 bytes with parsing, formatting, and broadcast detection. See Ethernet-Driver.
Macro A text substitution mechanism in assembly language that enables code reuse. JNasm supports single-line (#define) and multi-line (.macro/.endm) macros. See JNasm-Assembler-Design.
MFT (Master File Table) The central metadata structure in NTFS. A fixed-size record table where record 0 is the MFT itself, record 1 is the MFT mirror, record 2 is the log file, record 5 is the root directory, etc. Every file and directory on the volume is represented by an MFT record. JNode's implementation is org.jnode.fs.ntfs.MasterFileTable. See NTFS-Filesystem.
MMTk Memory Management Toolkit. A GC framework integrated into JNode via a VM interface layer under core/src/mmtk-vm/, providing plan and space abstractions for various GC strategies (NoGC, MarkSweep, GenRC). See MMTk-Bindings.
data run A (cluster offset, cluster length) pair in NTFS that locates a contiguous extent of clusters belonging to a non-resident attribute. Multiple data runs are chained into a runlist to represent fragmented or sparse file extents. The first run is absolute; subsequent runs are delta-compressed relative to the previous run's ending cluster. JNode's implementation is org.jnode.fs.ntfs.DataRun. See NTFS-Filesystem.
NTFS attribute A variable-length on-disk structure stored within an MFT record. Attribute types (identified by a 32-bit type ID) include STANDARD_INFORMATION (0x10), FILE_NAME (0x30), DATA (0x80), INDEX_ROOT (0x90), INDEX_ALLOCATION (0xA0), etc. Small attributes are resident (stored inline in the record); large attributes are non-resident (mapped via data runs). JNode's implementation is org.jnode.fs.ntfs.attribute.NTFSAttribute. See NTFS-Filesystem.
ModR/M byte An x86 addressing byte that encodes the addressing mode (register-direct, register-indirect, base+index, etc.) and register operands for an instruction. Generated by X86Assembler (not directly in JNasm). See JNAsm-Instruction-Encoding.
MSI (Message Signaled Interrupts) A PCI capability (MSICapability, ID 0x05) that allows devices to trigger interrupts via memory writes instead of wire-based IRQ lines. Supports multiple message vectors and works across APIC topologies. See PCI-Capability-Structure.
Multiboot The boot protocol used by GRUB. JNode's kernel.asm includes a Multiboot header so GRUB can load it.
MuParser JNode's custom backtracking parser that validates shell command tokens against a declarative syntax tree.
NetDeviceImpl Wrapper class extending VMNetDevice that bridges JNode's Device framework to the Java networking API. Instances are created by NetAPIImpl during device enumeration. See Network Device Plugin.
Object layout The internal memory structure of a Java object in the JNode heap, including the two-slot header (Flags and TIB) and the alignment rules.
PIO (Programmed I/O) A disk transfer mode where the CPU directly reads/writes data via I/O port commands. In JNode's IDE driver, PIO transfers use the 16-bit data register at I/O port 0x1F0/0x170 with polling-based status checking. See IDEDisk-Driver.
Plugin A modular unit in JNode. Has an XML descriptor, its own classloader, declared dependencies, and a lifecycle (start/stop).
PluginBuilder Ant task in org.jnode.build.packager.PluginBuilder that transforms third-party JARs/directories into JNode plugins with generated descriptors and shell scripts.
PluginManager The service that manages plugin lifecycle — loading, starting, stopping (DefaultPluginManager).
PluginRegistry The registry of all known plugin descriptors. Pre-populated at build time by BootImageBuilder.
Pointer event An event (PointerEvent) generated by mouse or pointing devices containing X/Y/Z (wheel) values, button state (left/middle/right bitmask), and absolute/relative coordinate mode. Delivered to registered PointerListener instances via the driver framework. See Input-Drivers.
Power Management capability A PCI capability (PMCapability, ID 0x01) that provides standardized power state control (D0-D3), status registers, and data registers. Implemented via configuration space registers at capability offsets. See PCI-Capability-Structure.
SCSI command A command descriptor block (CDB) sent to a SCSI device via executeCommand(CDB, byte[], int, long). JNode implements CDBs in org.jnode.driver.bus.scsi.cdb organized by command set (SPC for primary commands, MMC for multimedia). See SCSI-Driver.
Sense data Fixed-format status data returned by a SCSI device after a check condition, containing a sense key, additional sense code (ASC), and ASC qualifier (ASCQ). JNode's SenseData wraps the sense buffer. See SCSI-Driver.
Serial Port Driver Driver for PC serial ports (COM1-4) using 16550/16450 UART hardware. Accessed via I/O ports with configurable baud rate, data bits, stop bits, and parity. Implements ByteChannel for NIO-based I/O. See Serial-Port-Driver.
Shell syntax A declarative system in org.jnode.shell.syntax for defining command-line argument patterns and auto-completion.
SIB byte Scale-Index-Base byte. An optional x86 byte following the ModR/M byte that encodes complex memory addressing: [base + index * scale + displacement]. Generated by X86Assembler. See JNAsm-Instruction-Encoding.
SocketBuffer The packet container class in JNode's network stack (org.jnode.net.SocketBuffer). Inspired by Linux's sk_buff, it chains header objects (LinkLayerHeader, NetworkLayerHeader, TransportLayerHeader) and supports in-place header prepend/strip without copying payload data. See Network-Layers.
sparse_super A feature in ext2/ext3 where superblock and group descriptor copies are stored only in selected block groups (groups whose number is a power of 3, 5, or 7, plus group 0), reducing metadata overhead on large volumes. Implemented via groupHasDescriptors() in Ext2FileSystem.java. See Ext2-Ext3-Filesystem.
SPD (Serial Presence Detect) A 128-byte EEPROM on DIMM modules containing memory configuration data (size, type, timing, manufacturer). Accessed via SMBus at address 0xA0-0xA7. JNode's DIMM class reads and parses this data. See SMBus-DIMM.
Stack frame The region of memory allocated on the stack for a single method invocation. Contains saved EBP, method ID, local variables, and the operand stack. Accessed via EBP-relative offsets.
superblock The primary filesystem metadata structure in ext2, stored in the first 1024 bytes of each partition (after the boot sector). Contains block/inode counts, feature flags, UUID, volume name, and a copy in each block group via sparse_super. JNode's implementation is Superblock.java. See Ext2-Ext3-Filesystem.
Surface A paintable 2D region interface (org.jnode.driver.video.Surface) that exposes drawing, filling, and image blitting operations on either a video device framebuffer or an in-memory image buffer. The core abstraction for all GUI rendering in JNode. See Video-Driver-Architecture.
TCP Transmission Control Protocol. A connection-oriented transport layer protocol providing reliable, ordered, error-checked data delivery. JNode's implementation includes a full 11-state state machine (CLOSED through TIME_WAIT), three-way handshake connection establishment, four-way handshake teardown, and flow control via sliding window. See TCP-Protocol.
TCPInputStream JNode's input stream wrapper around TCPControlBlock.appRead() (org.jnode.net.ipv4.tcp.TCPInputStream). Closing the stream calls impl.close(), which triggers the FIN handshake and destroys the underlying control block. See TCP-Socket-Impl.
TCPOutputStream JNode's output stream wrapper around TCPControlBlock.appSendData() (org.jnode.net.ipv4.tcp.TCPOutputStream). Closing the stream calls impl.close(), which triggers the FIN handshake and destroys the underlying control block. See TCP-Socket-Impl.
Thinlet A lightweight, pure-Java GUI toolkit for JNode (gui/src/thinlet/thinlet/Thinlet.java). UIs are defined declaratively via XML markup parsed at runtime, and all widgets are rendered directly onto an AWT Container using custom Graphics painting — no native peers. See Thinlet.
TIB (Type Information Block) A per-class array (linked at object header offset -1) containing the class's vtable, IMT, superclass chain, and other runtime type metadata. See TIB.
TrueType A scalable outline font format supported by JNode via TTFFontData and its table parsers (cmap, glyf, head, hhea, hmtx, loca, etc.) in gui/src/awt/org/jnode/awt/font/truetype/. Glyphs are anti-aliased via summed-area table rendering in GlyphRenderer. See Font-Rendering.
TSI (Thread Switch Indicator) A 4-bit atomic flags word in VmProcessor (TSI_SWITCH_NEEDED, TSI_SYSTEM_READY, TSI_SWITCH_ACTIVE, TSI_BLOCK_SWITCH) that coordinates when and whether thread context switches can occur. Accessed from both Java (atomic Word operations) and assembly code (direct memory access). See TSI.
VMMagic Annotations JIT compiler directives in org.jnode.annotation including @Uninterruptible (prevents context switches/GC safepoints), @Inline/@NoInline (inlining hints), @MagicPermission (grants Unsafe access), and @KernelSpace (ring-0 privilege). See VMMagic-Annotations.
UDP User Datagram Protocol. A connectionless transport layer protocol providing minimal overhead datagram delivery over IPv4. JNode's UDP implementation uses an 8-byte header (source port, destination port, length, checksum) with pseudo-header checksums, supports ephemeral port allocation (1024–65535), and sends ICMP port-unreachable for undeliverable datagrams. See UDP-Protocol.
Unboxed types High-performance value types (Address, Word, Offset, Extent) in org.vmmagic.unboxed that JIT compilers compile directly into machine registers, bypassing object allocation. Used throughout JNode's core and driver code (~400 references). See Unboxed-Types-and-VM-Magic.
Unsafe org.jnode.vm.Unsafe — the constrained low-level operations API providing direct memory access, debug output, hardware I/O, and VM introspection. Requires @MagicPermission annotation. See VM-Unsafe.
Virtual Methods Dispatch The layered method dispatch system in JNode: vtable for virtual calls, IMT for interface calls, CompiledIMT for optimized dispatch, and constant-pool resolution for static calls. See Virtual-Methods-Dispatch.
VMagic / vmmagic org.vmmagic — unboxed types (Address, Word, Offset) and pragma annotations used by the VM and JIT compiler.
VmArray The base runtime object header for array instances (org.jnode.vm.classmgr.VmArray). Extends VmSystemObject and defines LENGTH_OFFSET and DATA_OFFSET for the array length word and data area. Not to be confused with VmArrayClass. See VmType-Hierarchy.
VmMagic org.jnode.vm.VmMagic — static methods for low-level VM operations (getting object addresses, type info, etc.).
VmProcess JNode's java.lang.Process implementation (org.jnode.vm.VmProcess). Represents a user-level VM process created via VmProcess.createProcess(), which uses VmProcessClassLoader for process-level class isolation. Distinct from Isolate which provides stronger isolation via separate statics tables. See VMProcessClassLoader, Isolate-Implementation.
VmProcessor Represents a CPU core. Manages the per-processor thread queue and scheduler state.
VmScheduler The scheduler per VmProcessor. Maintains the readyQueue, sleepQueue, and allThreadsQueue; implements the priority-based thread selection policy. See Core-Thread-Scheduling.
VmSystem org.jnode.vm.VmSystem — the VM's main initialization class. Sets up classloading, memory, scheduler, I/O.
VmThread JNode's thread implementation (org.jnode.vm.scheduler.VmThread). Wraps java.lang.Thread with scheduler-specific state.
VmType The VM's representation of a Java class (org.jnode.vm.classmgr.VmType). Holds the method table, field layout, constant pool, and TIB reference. See Type-System-Internals.
vtable Virtual method table. A per-class array of method pointers in the TIB starting at index 5, used for class inheritance method dispatch. Grows with each subclass. See vtable.
XDR (External Data Representation) A binary serialization format for NFS and ONC/RPC protocol data. JNode's NFS client uses anonymous inner classes implementing XdrAble with xdrEncode()/xdrDecode() methods to marshal/unmarshal requests and responses over the wire. See NFS2-Client.
Yieldpoint A compiler-injected checkpoint in compiled code that triggers INT 0x30, invoking the context-switch handler in VmProcessor.reschedule(). Yieldpoints enable cooperative scheduling; methods marked @Uninterruptible have yieldpoints suppressed. See Yieldpoint.

Clone this wiki locally