NAME
experimental.ops - Experimental Opcodes
DESCRIPTION
This file contains experimental opcodes.
These opcodes should be considered implicitly deprecated - that is, they may be removed in any release.
If you rely on any of these opcodes, please open an issue at https://github.com/parrot/parrot/issues
When making changes to any ops file,
run make bootstrap-ops
to regenerate all generated ops files.
More Experimental Ops
- trap() Break into debugger. Implementation notes:
- set_label(invar PMC, inconst LABEL) Sets the opcode_t* label value for the given PMC. This is basically only useful for PMCs such as Sub, Continuation, ExceptionHandler and derivatives
- get_label(out INT, invar PMC) Gets the opcode_t* label value from the given PMC. This is basically only useful for PMCs such as Sub, Continuation, ExceptionHandler and derivatives
- get_id(out INT, in PMC) Gets a unique(*) ID for a PMC.This may or may not be based on the pointer of the PMC, but almost certainly is not the raw pointer value.(*) Uniqueness of these IDs is only guarranteed within code to which this PMC is currently visible (ie: not across processes, or share-nothing threads, and not beyond the lifetime of the PMC).
- fetch(out PMC, in PMC, in PMC, in PMC) Fetches a value from $2, keyed by $3 into $1. If the resulting PMC is PMCNULL, uses the type in $4 to create and return a new PMC.
- fetch(out PMC, in PMC, in INT, in PMC)
- fetch(out PMC, in PMC, in STR, in PMC)
- vivify(out PMC, in PMC, in PMC, in PMC) Fetches a value from $2, keyed by $3 into $1. If the resulting PMC is PMCNULL, uses the type in $4 to create and return a new PMC.
- vivify(out PMC, in PMC, in INT, in PMC)
- vivify(out PMC, in PMC, in STR, in PMC)
- new(out PMC, in STR, in INT)
- new(out PMC, in PMC, in INT)
- root_new(out PMC, in PMC, in INT)
- get_context(out PMC)
- new_call_context(out PMC)
- invokecc(invar PMC, invar PMC)
- flatten_array_into(invar PMC, invar PMC, in INT)
- flatten_hash_into(invar PMC, invar PMC, in INT)
- slurp_array_from(out PMC, invar PMC, in INT)
- receive(out PMC) Receive a message sent to the current task.If there is no waiting message, block and wait.
- wait(in PMC) Block and wait for a task to complete.
- pass() Pass the rest of the current quantum and schedule the next task in the task queue.
- disable_preemption() Disables preemption so the current task can run uninterrupted through a critical section.
- enable_preemption() Enables preemption. To be called after the current task has finished executing a critical section.
- terminate() Terminate the current task immediately.
- x86/gcc ... works with gdb/lldb - ppc/gcc ... works with gdb, to proceed: gdb> p $pc = $pc + 4 - TODOFor other architectures, this is a
noop
.
COPYRIGHT
Copyright (C) 2001-2012, Parrot Foundation.
LICENSE
This program is free software. It is subject to the same license as the Parrot interp itself.