github.com/wasilibs/wazerox@v0.0.0-20240124024944-4923be63ab5f/experimental/experimental.go (about)

     1  // Package experimental includes features we aren't yet sure about. These are enabled with context.Context keys.
     2  //
     3  // Note: All features here may be changed or deleted at any time, so use with caution!
     4  package experimental
     5  
     6  import (
     7  	"github.com/wasilibs/wazerox/api"
     8  )
     9  
    10  // InternalModule is an api.Module that exposes additional
    11  // information.
    12  type InternalModule interface {
    13  	api.Module
    14  
    15  	// NumGlobal returns the count of all globals in the module.
    16  	NumGlobal() int
    17  
    18  	// Global provides a read-only view for a given global index.
    19  	//
    20  	// The methods panics if i is out of bounds.
    21  	Global(i int) api.Global
    22  }
    23  
    24  // ProgramCounter is an opaque value representing a specific execution point in
    25  // a module. It is meant to be used with Function.SourceOffsetForPC and
    26  // StackIterator.
    27  type ProgramCounter uint64
    28  
    29  // InternalFunction exposes some information about a function instance.
    30  type InternalFunction interface {
    31  	// Definition provides introspection into the function's names and
    32  	// signature.
    33  	Definition() api.FunctionDefinition
    34  
    35  	// SourceOffsetForPC resolves a program counter into its corresponding
    36  	// offset in the Code section of the module this function belongs to.
    37  	// The source offset is meant to help map the function calls to their
    38  	// location in the original source files. Returns 0 if the offset cannot
    39  	// be calculated.
    40  	SourceOffsetForPC(pc ProgramCounter) uint64
    41  }