var searchIndex = {}; searchIndex["gluon_vm"] = {"doc":"Crate which contain the virtual machine which executes gluon programs","items":[[3,"Variants","gluon_vm","",null,null],[4,"Error","","Representation of all possible errors that can occur when interacting with the `vm` crate",null,null],[13,"Yield","","",0,null],[13,"Dead","","",0,null],[13,"UndefinedBinding","","",0,null],[13,"UndefinedField","","",0,null],[13,"TypeAlreadyExists","","",0,null],[13,"GlobalAlreadyExists","","",0,null],[13,"MetadataDoesNotExist","","",0,null],[13,"WrongType","","",0,null],[13,"Message","","",0,null],[0,"api","","The marshalling api",null,null],[3,"Data","gluon_vm::api","",null,null],[3,"Primitive","","",null,null],[3,"Generic","","",null,null],[12,"0","","",1,null],[3,"WithVM","","Wrapper type which passes acts as the type `T` but also passes the `VM` to the called function",null,null],[12,"vm","","",2,null],[12,"value","","",2,null],[3,"Userdata","","",null,null],[12,"0","","",3,null],[3,"OpaqueValue","","Type which represents an array in gluon\nType implementing both `Pushable` and `Getable` of values of `V`.\nThe actual value, `V` is not accessible directly but is only intended to be transferred between\ntwo different threads.",null,null],[3,"Array","","Type which represents an array in embed_lang",null,null],[3,"CPrimitive","","",null,null],[3,"Function","","Type which represents an function in gluon",null,null],[4,"ValueRef","","",null,null],[13,"Byte","","",4,null],[13,"Int","","",4,null],[13,"Float","","",4,null],[13,"String","","",4,null],[13,"Data","","",4,null],[13,"Tag","","",4,null],[13,"Userdata","","",4,null],[13,"Internal","","",4,null],[4,"IO","","Type representing gluon's IO type#[derive(Debug)]",null,null],[13,"Value","","",5,null],[13,"Exception","","",5,null],[4,"MaybeError","","",null,null],[13,"Ok","","",6,null],[13,"Err","","",6,null],[5,"primitive","","",null,null],[5,"primitive_f","","",null,null],[0,"generic","","Module containing types which represent generic variables in gluon's type system",null,null],[4,"A","gluon_vm::api::generic","",null,null],[4,"B","","",null,null],[4,"C","","",null,null],[4,"D","","",null,null],[4,"E","","",null,null],[4,"F","","",null,null],[4,"G","","",null,null],[4,"H","","",null,null],[4,"I","","",null,null],[4,"J","","",null,null],[4,"K","","",null,null],[4,"L","","",null,null],[4,"M","","",null,null],[4,"N","","",null,null],[4,"O","","",null,null],[4,"P","","",null,null],[4,"Q","","",null,null],[4,"R","","",null,null],[4,"X","","",null,null],[4,"Y","","",null,null],[4,"Z","","",null,null],[11,"eq","","",7,null],[11,"clone","","",7,null],[11,"make_type","","",7,{"inputs":[{"name":"thread"}],"output":{"name":"tctype"}}],[11,"eq","","",8,null],[11,"clone","","",8,null],[11,"make_type","","",8,{"inputs":[{"name":"thread"}],"output":{"name":"tctype"}}],[11,"eq","","",9,null],[11,"clone","","",9,null],[11,"make_type","","",9,{"inputs":[{"name":"thread"}],"output":{"name":"tctype"}}],[11,"eq","","",10,null],[11,"clone","","",10,null],[11,"make_type","","",10,{"inputs":[{"name":"thread"}],"output":{"name":"tctype"}}],[11,"eq","","",11,null],[11,"clone","","",11,null],[11,"make_type","","",11,{"inputs":[{"name":"thread"}],"output":{"name":"tctype"}}],[11,"eq","","",12,null],[11,"clone","","",12,null],[11,"make_type","","",12,{"inputs":[{"name":"thread"}],"output":{"name":"tctype"}}],[11,"eq","","",13,null],[11,"clone","","",13,null],[11,"make_type","","",13,{"inputs":[{"name":"thread"}],"output":{"name":"tctype"}}],[11,"eq","","",14,null],[11,"clone","","",14,null],[11,"make_type","","",14,{"inputs":[{"name":"thread"}],"output":{"name":"tctype"}}],[11,"eq","","",15,null],[11,"clone","","",15,null],[11,"make_type","","",15,{"inputs":[{"name":"thread"}],"output":{"name":"tctype"}}],[11,"eq","","",16,null],[11,"clone","","",16,null],[11,"make_type","","",16,{"inputs":[{"name":"thread"}],"output":{"name":"tctype"}}],[11,"eq","","",17,null],[11,"clone","","",17,null],[11,"make_type","","",17,{"inputs":[{"name":"thread"}],"output":{"name":"tctype"}}],[11,"eq","","",18,null],[11,"clone","","",18,null],[11,"make_type","","",18,{"inputs":[{"name":"thread"}],"output":{"name":"tctype"}}],[11,"eq","","",19,null],[11,"clone","","",19,null],[11,"make_type","","",19,{"inputs":[{"name":"thread"}],"output":{"name":"tctype"}}],[11,"eq","","",20,null],[11,"clone","","",20,null],[11,"make_type","","",20,{"inputs":[{"name":"thread"}],"output":{"name":"tctype"}}],[11,"eq","","",21,null],[11,"clone","","",21,null],[11,"make_type","","",21,{"inputs":[{"name":"thread"}],"output":{"name":"tctype"}}],[11,"eq","","",22,null],[11,"clone","","",22,null],[11,"make_type","","",22,{"inputs":[{"name":"thread"}],"output":{"name":"tctype"}}],[11,"eq","","",23,null],[11,"clone","","",23,null],[11,"make_type","","",23,{"inputs":[{"name":"thread"}],"output":{"name":"tctype"}}],[11,"eq","","",24,null],[11,"clone","","",24,null],[11,"make_type","","",24,{"inputs":[{"name":"thread"}],"output":{"name":"tctype"}}],[11,"eq","","",25,null],[11,"clone","","",25,null],[11,"make_type","","",25,{"inputs":[{"name":"thread"}],"output":{"name":"tctype"}}],[11,"eq","","",26,null],[11,"clone","","",26,null],[11,"make_type","","",26,{"inputs":[{"name":"thread"}],"output":{"name":"tctype"}}],[11,"eq","","",27,null],[11,"clone","","",27,null],[11,"make_type","","",27,{"inputs":[{"name":"thread"}],"output":{"name":"tctype"}}],[0,"record","gluon_vm::api","",null,null],[3,"Record","gluon_vm::api::record","",null,null],[12,"fields","","",28,null],[3,"HList","","",null,null],[12,"0","","",29,null],[12,"1","","",29,null],[8,"Field","","",null,null],[10,"name","","",30,{"inputs":[],"output":{"name":"str"}}],[8,"FieldList","","",null,null],[10,"len","","",31,{"inputs":[],"output":{"name":"vmindex"}}],[8,"FieldTypes","","",null,null],[10,"field_types","","",32,{"inputs":[{"name":"thread"},{"name":"vec"}],"output":null}],[8,"PushableFieldList","","",null,null],[10,"push","","",33,null],[8,"GetableFieldList","","",null,null],[10,"from_value","","",34,null],[11,"split","","",28,null],[11,"len","","",29,{"inputs":[],"output":{"name":"vmindex"}}],[11,"field_types","","",29,{"inputs":[{"name":"thread"},{"name":"vec"}],"output":null}],[11,"push","","",29,null],[11,"from_value","","",29,null],[11,"make_type","","",28,{"inputs":[{"name":"thread"}],"output":{"name":"tctype"}}],[11,"push","","",28,null],[11,"from_value","","",28,{"inputs":[{"name":"thread"},{"name":"variants"}],"output":{"name":"option"}}],[6,"FunctionRef","gluon_vm::api","Type which represents a function reference in gluon",null,null],[8,"VMType","","Trait which maps a type in rust to a type in gluon",null,null],[16,"Type","","A version of `Self` which implements `Any` allowing a `TypeId` to be retrieved",35,null],[11,"make_type","","Creates an gluon type which maps to `Self` in rust",35,{"inputs":[{"name":"thread"}],"output":{"name":"tctype"}}],[11,"extra_args","","How many extra arguments a function returning this type requires.\nUsed for abstract types which when used in return position should act like they still need\nmore arguments before they are called",35,{"inputs":[],"output":{"name":"vmindex"}}],[8,"Pushable","","Trait which allows a rust value to be pushed to the virtual machine",null,null],[10,"push","","Pushes `self` to `stack`. If the call is successful a single element should have been added\nto the stack and `Status::Ok` should be returned. If the call is unsuccessful `Status:Error`\nshould be returned and the stack should be left intact",36,null],[8,"Getable","","Trait which allows rust values to be retrieved from the virtual machine",null,null],[11,"from_value_unsafe","","unsafe version of from_value which allows references to the internal of GcPtr's to be\nextracted if `value` is rooted",37,{"inputs":[{"name":"thread"},{"name":"variants"}],"output":{"name":"option"}}],[10,"from_value","","",37,{"inputs":[{"name":"thread"},{"name":"variants"}],"output":{"name":"option"}}],[8,"FunctionType","","Trait which represents a function",null,null],[10,"arguments","","Returns how many arguments the function needs to be provided to call it",38,{"inputs":[],"output":{"name":"vmindex"}}],[8,"VMFunction","","Trait which abstracts over types which can be called by being pulling the arguments it needs\nfrom the virtual machine's stack",null,null],[10,"unpack_and_call","","",39,null],[11,"eq","","",4,null],[11,"ne","","",4,null],[11,"clone","","",4,null],[11,"new","","",4,{"inputs":[{"name":"value"}],"output":{"name":"valueref"}}],[11,"eq","","",40,null],[11,"ne","","",40,null],[11,"clone","","",40,null],[11,"tag","","",40,null],[11,"len","","",40,null],[11,"get","","",40,null],[11,"eq","","",5,null],[11,"ne","","",5,null],[11,"fmt","","",5,null],[11,"eq","","",1,null],[11,"ne","","",1,null],[11,"fmt","","",1,null],[11,"from","","",1,{"inputs":[{"name":"value"}],"output":{"name":"generic"}}],[11,"make_type","","",1,{"inputs":[{"name":"thread"}],"output":{"name":"tctype"}}],[11,"extra_args","","",1,{"inputs":[],"output":{"name":"vmindex"}}],[11,"push","","",1,null],[11,"from_value","","",1,{"inputs":[{"name":"thread"},{"name":"variants"}],"output":{"name":"option"}}],[11,"traverse","","",1,null],[11,"make_type","","",2,{"inputs":[{"name":"thread"}],"output":{"name":"tctype"}}],[11,"extra_args","","",2,{"inputs":[],"output":{"name":"vmindex"}}],[11,"push","","",2,null],[11,"from_value_unsafe","","",2,{"inputs":[{"name":"thread"},{"name":"variants"}],"output":{"name":"option"}}],[11,"from_value","","",2,{"inputs":[{"name":"thread"},{"name":"variants"}],"output":{"name":"option"}}],[11,"push","","",3,null],[11,"from_value","","",3,{"inputs":[{"name":"thread"},{"name":"variants"}],"output":{"name":"option"}}],[11,"make_type","","",6,{"inputs":[{"name":"thread"}],"output":{"name":"tctype"}}],[11,"push","","",6,null],[11,"make_type","","",5,{"inputs":[{"name":"thread"}],"output":{"name":"tctype"}}],[11,"extra_args","","",5,{"inputs":[],"output":{"name":"vmindex"}}],[11,"from_value","","",5,{"inputs":[{"name":"thread"},{"name":"variants"}],"output":{"name":"option"}}],[11,"push","","",5,null],[11,"make_type","","",41,{"inputs":[{"name":"thread"}],"output":{"name":"tctype"}}],[11,"push","","",41,null],[11,"from_value","","",41,{"inputs":[{"name":"thread"},{"name":"variants"}],"output":{"name":"option"}}],[11,"from_value","","",41,{"inputs":[{"name":"thread"},{"name":"variants"}],"output":{"name":"option"}}],[11,"deref","","",42,null],[11,"vm","","",42,null],[11,"get","","",42,null],[11,"make_type","","",42,{"inputs":[{"name":"thread"}],"output":{"name":"tctype"}}],[11,"push","","",42,null],[11,"from_value","","",42,{"inputs":[{"name":"thread"},{"name":"variants"}],"output":{"name":"option"}}],[11,"make_type","","",43,{"inputs":[{"name":"thread"}],"output":{"name":"tctype"}}],[11,"push","","",43,null],[11,"new","","",44,null],[11,"push","","",44,null],[11,"value","","",45,null],[11,"make_type","","",45,{"inputs":[{"name":"thread"}],"output":{"name":"tctype"}}],[11,"push","","",45,null],[11,"from_value","","",45,{"inputs":[{"name":"thread"},{"name":"variants"}],"output":{"name":"option"}}],[11,"call","","",45,null],[11,"call","","",45,null],[11,"call","","",45,null],[11,"call","","",45,null],[11,"call","","",45,null],[11,"call","","",45,null],[11,"call","","",45,null],[11,"call","","",45,null],[0,"channel","gluon_vm","",null,null],[3,"Sender","gluon_vm::channel","",null,null],[3,"Receiver","","",null,null],[5,"load","","",null,{"inputs":[{"name":"thread"}],"output":{"name":"vmresult"}}],[6,"ChannelRecord","","",null,null],[11,"fmt","","",46,null],[11,"traverse","","",46,null],[11,"traverse","","",47,null],[11,"fmt","","",47,null],[11,"make_type","","",46,{"inputs":[{"name":"thread"}],"output":{"name":"tctype"}}],[11,"make_type","","",47,{"inputs":[{"name":"thread"}],"output":{"name":"tctype"}}],[0,"compiler","gluon_vm","",null,null],[3,"CompiledFunction","gluon_vm::compiler","",null,null],[12,"args","","",48,null],[12,"id","","",48,null],[12,"typ","","",48,null],[12,"instructions","","",48,null],[12,"inner_functions","","",48,null],[12,"strings","","",48,null],[12,"module_globals","","Storage for globals which are needed by the module which is currently being compiled",48,null],[3,"Compiler","","",null,null],[4,"Variable","","",null,null],[13,"Stack","","",49,null],[13,"Global","","",49,null],[13,"Constructor","","",49,null],[13,"UpVar","","",49,null],[6,"CExpr","","",null,null],[8,"CompilerEnv","","",null,null],[10,"find_var","","",50,null],[11,"fmt","","",49,null],[11,"clone","","",49,null],[11,"fmt","","",48,null],[11,"new","","",48,{"inputs":[{"name":"vmindex"},{"name":"symbol"},{"name":"tctype"}],"output":{"name":"compiledfunction"}}],[11,"find_kind","","",51,null],[11,"find_type","","",51,null],[11,"find_type_info","","",51,null],[11,"find_record","","",51,null],[11,"new","","",51,{"inputs":[{"name":"compilerenv"},{"name":"globalvmstate"},{"name":"symbolmodule"}],"output":{"name":"compiler"}}],[11,"compile_expr","","Compiles an expression to a zero argument function which can be directly fed to the\ninterpreter",51,null],[0,"gc","gluon_vm","",null,null],[3,"WriteOnly","gluon_vm::gc","Pointer type which can only be written to.",null,null],[3,"Gc","","A mark and sweep garbage collector.",null,null],[3,"Move","","`DataDef` that moves its value directly into the pointer\nuseful for sized types",null,null],[12,"0","","",52,null],[3,"GcPtr","","A pointer to a garbage collected value.",null,null],[8,"FromPtr","","Trait which creates a typed pointer from a *mut () pointer.\nFor `Sized` types this is just a cast but for unsized types some more metadata must be taken\nfrom the provided `D` value to make it initialize correctly.",null,null],[10,"make_ptr","","",53,null],[8,"DataDef","","A definition of some data which may be allocated by the garbage collector.",null,null],[16,"Value","","The type of the value allocated.",54,null],[10,"size","","Returns how many bytes need to be allocted for this `DataDef`",54,null],[10,"initialize","","Consumes `self` to initialize the allocated value.\nReturns the initialized pointer.",54,null],[8,"Traverseable","","Trait which must be implemented on all root types which contain `GcPtr`\nA type implementing Traverseable must call traverse on each of its fields\nwhich in turn contains `GcPtr`",null,null],[11,"traverse","","",55,null],[11,"as_mut_ptr","","Retrieves the pointer allowing it to be manipulated freely.\nAs it points to uninitialized data care must be taken so to not read it before it has been\ninitialized",56,null],[11,"write","","Writes a value to the pointer and returns a pointer to the now initialized value.",56,null],[11,"write_slice","","",56,null],[11,"write_str","","",56,null],[11,"fmt","","",57,null],[11,"size","","",52,null],[11,"initialize","","",52,null],[11,"clone","","",58,null],[11,"deref","","",58,null],[11,"borrow","","",58,null],[11,"eq","","",58,null],[11,"cmp","","",58,null],[11,"partial_cmp","","",58,null],[11,"hash","","",58,null],[11,"fmt","","",58,null],[11,"fmt","","",58,null],[11,"as_mut","","Unsafe as it is up to the caller to ensure that this pointer is not referenced somewhere\nelse",58,null],[11,"from_raw","","Unsafe as `ptr` must have been allocted by this garbage collector",58,null],[11,"generation","","",58,null],[11,"as_traverseable","","Coerces `self` to a `Traverseable` trait object",58,null],[11,"as_traverseable_string","","Coerces `self` to a `Traverseable` trait object",58,null],[11,"traverse","","",52,null],[11,"traverse","","",58,null],[11,"new","","Constructs a new garbage collector",57,{"inputs":[{"name":"usize"}],"output":{"name":"gc"}}],[11,"generation","","",57,null],[11,"new_child_gc","","",57,null],[11,"alloc_and_collect","","Allocates a new object. If the garbage collector has hit the collection limit a collection\nwill occur.",57,null],[11,"alloc","","Allocates a new object.",57,null],[11,"check_collect","","",57,null],[11,"collect","","Does a mark and sweep collection by walking from `roots`. This function is unsafe since\nroots need to cover all reachable object.",57,null],[11,"mark","","Marks the GcPtr\nReturns true if the pointer was already marked",57,null],[0,"macros","gluon_vm","Module providing the building blocks to create macros and expand them.",null,null],[3,"MacroEnv","gluon_vm::macros","Type containing macros bound to symbols which can be applied on an AST expression to transform\nit.",null,null],[6,"Error","","",null,null],[8,"Macro","","A trait which abstracts over macros.",null,null],[10,"expand","","",59,null],[10,"clone","","",59,null],[11,"is","","Returns true if the boxed type is the same as `T`",59,null],[11,"downcast_ref","","Returns some reference to the boxed value if it is of type `T`, or\n`None` if it isn't.",59,null],[11,"downcast_ref_unchecked","","Returns a reference to the boxed value, blindly assuming it to be of type `T`.\nIf you are not *absolutely certain* of `T`, you *must not* call this.",59,null],[11,"downcast_mut","","Returns some mutable reference to the boxed value if it is of type `T`, or\n`None` if it isn't.",59,null],[11,"downcast_mut_unchecked","","Returns a mutable reference to the boxed value, blindly assuming it to be of type `T`.\nIf you are not *absolutely certain* of `T`, you *must not* call this.",59,null],[11,"downcast","","Returns the boxed value if it is of type `T`, or `Err(Self)` if it isn't.",59,{"inputs":[{"name":"box"}],"output":{"name":"result"}}],[11,"downcast_unchecked","","Returns the boxed value, blindly assuming it to be of type `T`.\nIf you are not *absolutely certain* of `T`, you *must not* call this.",59,{"inputs":[{"name":"box"}],"output":{"name":"box"}}],[11,"new","","Creates a new `MacroEnv`",60,{"inputs":[],"output":{"name":"macroenv"}}],[11,"insert","","Inserts a `Macro` which acts on any occurance of `symbol` when applied to an expression.",60,null],[11,"get","","Retrieves the macro bound to `symbol`",60,null],[11,"run","","Runs the macros in this `MacroEnv` on `expr` using `env` as the context of the expansion",60,null],[0,"thread","gluon_vm","The thread/vm type",null,null],[3,"RootedValue","gluon_vm::thread","A rooted value",null,null],[3,"Root","","A rooted userdata value",null,null],[3,"RootStr","","A rooted string",null,null],[3,"Thread","","Representation of the virtual machine",null,null],[3,"RootedThread","","An instance of `Thread` which is rooted. See the `Thread` type for documentation on interacting\nwith the type.",null,null],[4,"Status","","Enum signaling a successful or unsuccess ful call to an extern function.\nIf an error occured the error message is expected to be on the top of the stack.",null,null],[13,"Ok","","",61,null],[13,"Yield","","",61,null],[13,"Error","","",61,null],[8,"ThreadInternal","","Internal functions for interacting with threads. These functions should be considered both\nunsafe and unstable",null,null],[10,"current_frame","","Returns the current stackframe",62,null],[10,"root","","Roots a userdata",62,null],[10,"root_string","","Roots a string",62,null],[10,"root_value","","Roots a value",62,null],[10,"root_value_ref","","Roots a value",62,null],[10,"alloc","","Allocates a new value from a given `DataDef`.\nTakes the stack as it may collect if the collection limit has been reached.",62,null],[10,"new_data","","",62,null],[10,"add_bytecode","","",62,null],[10,"call_module","","Calls a module, allowed to to run IO expressions",62,null],[10,"call_function","","Calls a function on the stack.\nWhen this function is called it is expected that the function exists at\n`stack.len() - args - 1` and that the arguments are of the correct type",62,null],[10,"resume","","",62,null],[10,"global_env","","",62,null],[10,"deep_clone","","",62,null],[11,"eq","","",61,null],[11,"eq","","",63,null],[11,"ne","","",63,null],[11,"clone","","",63,null],[11,"drop","","",63,null],[11,"fmt","","",63,null],[11,"deref","","",63,null],[11,"vm","","",63,null],[11,"vm_","","",63,null],[11,"drop","","",64,null],[11,"deref","","",64,null],[11,"deref","","",65,null],[11,"traverse","","",66,null],[11,"eq","","",66,null],[11,"push","","",67,null],[11,"drop","","",67,null],[11,"deref","","",67,null],[11,"clone","","",67,null],[11,"traverse","","",67,null],[11,"new","","Creates a new virtual machine with an empty global environment",67,{"inputs":[],"output":{"name":"rootedthread"}}],[11,"into_raw","","Converts a `RootedThread` into a raw pointer allowing to be passed through a C api.\nThe reference count for the thread is not modified",67,null],[11,"from_raw","","Converts a raw pointer into a `RootedThread`.\nThe reference count for the thread is not modified so it is up to the caller to ensure that\nthe count is correct.",67,null],[11,"new_thread","","Spawns a new gluon thread with its own stack and heap but while still sharing the same\nglobal environment",66,null],[11,"define_global","","Creates a new global value at `name`.\nFails if a global called `name` already exists.",66,null],[11,"get_global","","Retrieves the global called `name`.\nFails if the global does not exist or it does not have the correct type.",66,null],[11,"find_type_info","","Retrieves type information about the type `name`. Types inside records can be accessed\nusing dot notation (std.prelude.Option)",66,null],[11,"get_type","","Returns the gluon type that was bound to `T`",66,null],[11,"register_type","","Registers the type `T` as being a gluon type called `name` with generic arguments `args`",66,null],[11,"get_env","","Locks and retrieves the global environment of the vm",66,null],[11,"get_stack","","Locks and retrives this threads stack",66,null],[11,"get_macros","","Retrieves the macros defined for this vm",66,null],[11,"collect","","Runs a garbage collection.",66,null],[11,"push","","Pushes a value to the top of the stack",66,null],[11,"pop","","Removes the top value from the stack",66,null],[11,"current_frame","","Returns the current stackframe",66,null],[11,"root","","Roots a userdata",66,null],[11,"root_string","","Roots a string",66,null],[11,"root_value","","Roots a value",66,null],[11,"root_value_ref","","Roots a value",66,null],[11,"alloc","","Allocates a new value from a given `DataDef`.\nTakes the stack as it may collect if the collection limit has been reached.",66,null],[11,"new_data","","",66,null],[11,"add_bytecode","","",66,null],[11,"call_module","","Calls a module, allowed to to run IO expressions",66,null],[11,"call_function","","Calls a function on the stack.\nWhen this function is called it is expected that the function exists at\n`stack.len() - args - 1` and that the arguments are of the correct type",66,null],[11,"resume","","",66,null],[11,"global_env","","",66,null],[11,"deep_clone","","",66,null],[0,"primitives","gluon_vm","Module containing functions for interacting with gluon's primitive types.",null,null],[5,"load","gluon_vm::primitives","",null,{"inputs":[{"name":"thread"}],"output":{"name":"result"}}],[0,"stack","gluon_vm","",null,null],[3,"Frame","gluon_vm::stack","",null,null],[12,"offset","","",68,null],[12,"instruction_index","","",68,null],[12,"state","","",68,null],[12,"excess","","",68,null],[3,"Lock","","",null,null],[3,"Stack","","",null,null],[3,"StackFrame","","",null,null],[12,"stack","","",69,null],[12,"frame","","",69,null],[3,"Stacktrace","","",null,null],[4,"State","","",null,null],[13,"Unknown","","",70,null],[13,"Lock","","Locked frame which can only be unlocked by the caller which introduced the lock",70,null],[13,"Excess","","Extra frame introduced to store a call with excess arguments",70,null],[13,"Closure","","",70,null],[13,"Extern","","",70,null],[11,"eq","","",70,null],[11,"ne","","",70,null],[11,"fmt","","",70,null],[11,"clone","","",70,null],[11,"eq","","",68,null],[11,"ne","","",68,null],[11,"fmt","","",68,null],[11,"clone","","",68,null],[11,"fmt","","",71,null],[11,"fmt","","",72,null],[11,"new","","",72,{"inputs":[],"output":{"name":"stack"}}],[11,"pop","","",72,null],[11,"push","","",72,null],[11,"remove_range","","",72,null],[11,"len","","",72,null],[11,"get_values","","",72,null],[11,"get_frames","","",72,null],[11,"release_lock","","Release a lock on the stack.",72,null],[11,"index","","",72,null],[11,"index_mut","","",72,null],[11,"index","","",72,null],[11,"index","","",72,null],[11,"drop","","",69,null],[11,"fmt","","",69,null],[11,"len","","",69,null],[11,"push","","",69,null],[11,"top","","",69,null],[11,"pop","","",69,null],[11,"get_variants","","",69,null],[11,"insert_slice","","",69,null],[11,"remove_range","","",69,null],[11,"get_rooted_value","","",69,null],[11,"get_upvar","","",69,null],[11,"excess_args","","",69,null],[11,"enter_scope","","",69,null],[11,"exit_scope","","",69,null],[11,"frame","","",69,{"inputs":[{"name":"mutexguard"},{"name":"vmindex"},{"name":"state"}],"output":{"name":"stackframe"}}],[11,"current","","",69,{"inputs":[{"name":"mutexguard"}],"output":{"name":"stackframe"}}],[11,"into_lock","","Lock the stack below the current offset",69,null],[11,"stacktrace","","Creates a stackrace starting from `frame_level`",69,null],[11,"deref","","",69,null],[11,"deref_mut","","",69,null],[11,"index","","",69,null],[11,"index_mut","","",69,null],[11,"index","","",69,null],[11,"index_mut","","",69,null],[11,"index","","",69,null],[11,"index_mut","","",69,null],[11,"index","","",69,null],[11,"index_mut","","",69,null],[11,"index","","",69,null],[11,"index_mut","","",69,null],[11,"fmt","","",73,null],[11,"fmt","","",73,null],[0,"types","gluon_vm","",null,null],[3,"TypeInfos","gluon_vm::types","",null,null],[12,"id_to_type","","",74,null],[12,"type_to_id","","",74,null],[4,"Instruction","","",null,null],[13,"PushInt","","",75,null],[13,"PushByte","","",75,null],[13,"PushFloat","","",75,null],[13,"PushString","","",75,null],[13,"Push","","",75,null],[13,"PushGlobal","","",75,null],[13,"Call","","",75,null],[13,"TailCall","","",75,null],[13,"Construct","","",75,null],[13,"ConstructArray","","",75,null],[13,"GetField","","",75,null],[13,"Split","","",75,null],[13,"TestTag","","",75,null],[13,"Jump","","",75,null],[13,"CJump","","",75,null],[13,"Pop","","",75,null],[13,"Slide","","",75,null],[13,"MakeClosure","","",75,null],[13,"NewClosure","","",75,null],[13,"CloseClosure","","",75,null],[13,"PushUpVar","","",75,null],[13,"GetIndex","","",75,null],[13,"AddInt","","",75,null],[13,"SubtractInt","","",75,null],[13,"MultiplyInt","","",75,null],[13,"DivideInt","","",75,null],[13,"IntLT","","",75,null],[13,"IntEQ","","",75,null],[13,"AddByte","","",75,null],[13,"SubtractByte","","",75,null],[13,"MultiplyByte","","",75,null],[13,"DivideByte","","",75,null],[13,"ByteLT","","",75,null],[13,"ByteEQ","","",75,null],[13,"AddFloat","","",75,null],[13,"SubtractFloat","","",75,null],[13,"MultiplyFloat","","",75,null],[13,"DivideFloat","","",75,null],[13,"FloatLT","","",75,null],[13,"FloatEQ","","",75,null],[6,"VMIndex","","",null,null],[6,"VMTag","","",null,null],[6,"VMInt","","",null,null],[11,"fmt","","",75,null],[11,"clone","","",75,null],[11,"adjust","","",75,null],[11,"fmt","","",74,null],[11,"find_kind","","",74,null],[11,"find_type","","",74,null],[11,"find_type_info","","",74,null],[11,"find_record","","",74,null],[11,"new","","",74,{"inputs":[],"output":{"name":"typeinfos"}}],[11,"extend","","",74,null],[0,"internal","gluon_vm","Internal types and functions exposed to the main `gluon` crate",null,null],[3,"ClosureDataDef","gluon_vm::internal","",null,null],[12,"0","","",76,null],[12,"1","","",76,null],[4,"Value","","",null,null],[13,"Byte","","",77,null],[13,"Int","","",77,null],[13,"Float","","",77,null],[13,"String","","",77,null],[13,"Tag","","",77,null],[13,"Data","","",77,null],[13,"Array","","",77,null],[13,"Function","","",77,null],[13,"Closure","","",77,null],[13,"PartialApplication","","",77,null],[13,"Userdata","","",77,null],[13,"Thread","","",77,null],[6,"Result","gluon_vm","Type returned from vm functions which may fail",null,null],[11,"fmt","","",78,null],[11,"new","","Creates a new `Variants` value which assumes that `value` is alive for the lifetime of the\nvalue",78,{"inputs":[{"name":"value"}],"output":{"name":"variants"}}],[11,"as_ref","","Returns an instance of `ValueRef` which allows users to safely retrieve the interals of a\nvalue",78,null],[11,"eq","","",0,null],[11,"ne","","",0,null],[11,"fmt","","",0,null],[11,"fmt","","",0,null],[11,"description","","",0,null],[11,"cause","","",0,null],[14,"primitive!","","",null,null],[14,"types!","","",null,null],[14,"hlist!","","",null,null],[14,"field_decl!","","",null,null],[14,"record_no_decl!","","",null,null],[14,"record!","","Macro that creates a record that can be passed to gluon",null,null],[14,"vm_function!","","",null,null],[14,"on_array!","","",null,null],[11,"from_value","gluon_vm::internal","",77,{"inputs":[{"name":"thread"},{"name":"variants"}],"output":{"name":"option"}}],[11,"push","gluon_vm::types","",79,null],[11,"from_value","","",79,{"inputs":[{"name":"thread"},{"name":"variants"}],"output":{"name":"option"}}],[11,"from_value","gluon_vm::thread","",64,{"inputs":[{"name":"thread"},{"name":"variants"}],"output":{"name":"option"}}],[11,"from_value","","",65,{"inputs":[{"name":"thread"},{"name":"variants"}],"output":{"name":"option"}}],[11,"find_var","gluon_vm::types","",74,null],[11,"traverse","gluon_vm::internal","",76,null],[11,"size","","",76,null],[11,"initialize","","",76,null],[11,"eq","","",77,null],[11,"ne","","",77,null],[11,"clone","","",77,null],[11,"generation","","",77,null],[11,"traverse","","",77,null],[11,"fmt","","",77,null]],"paths":[[4,"Error"],[3,"Generic"],[3,"WithVM"],[3,"Userdata"],[4,"ValueRef"],[4,"IO"],[4,"MaybeError"],[4,"A"],[4,"B"],[4,"C"],[4,"D"],[4,"E"],[4,"F"],[4,"G"],[4,"H"],[4,"I"],[4,"J"],[4,"K"],[4,"L"],[4,"M"],[4,"N"],[4,"O"],[4,"P"],[4,"Q"],[4,"R"],[4,"X"],[4,"Y"],[4,"Z"],[3,"Record"],[3,"HList"],[8,"Field"],[8,"FieldList"],[8,"FieldTypes"],[8,"PushableFieldList"],[8,"GetableFieldList"],[8,"VMType"],[8,"Pushable"],[8,"Getable"],[8,"FunctionType"],[8,"VMFunction"],[3,"Data"],[3,"OpaqueValue"],[3,"Array"],[3,"Primitive"],[3,"CPrimitive"],[3,"Function"],[3,"Sender"],[3,"Receiver"],[3,"CompiledFunction"],[4,"Variable"],[8,"CompilerEnv"],[3,"Compiler"],[3,"Move"],[8,"FromPtr"],[8,"DataDef"],[8,"Traverseable"],[3,"WriteOnly"],[3,"Gc"],[3,"GcPtr"],[8,"Macro"],[3,"MacroEnv"],[4,"Status"],[8,"ThreadInternal"],[3,"RootedValue"],[3,"Root"],[3,"RootStr"],[3,"Thread"],[3,"RootedThread"],[3,"Frame"],[3,"StackFrame"],[4,"State"],[3,"Lock"],[3,"Stack"],[3,"Stacktrace"],[3,"TypeInfos"],[4,"Instruction"],[3,"ClosureDataDef"],[4,"Value"],[3,"Variants"],[6,"VMInt"]]}; initSearch(searchIndex);