var searchIndex = {}; searchIndex["gccjit"] = {"doc":"","items":[[3,"Context","gccjit","Wrapper around a GCC JIT context object that keeps\nthe state of the JIT compiler. In GCCJIT, this object\nis responsible for all memory management of JIT data\nstructures, and as such anything made from this context\nmust have a lifetime strictly less than this object.",null,null],[3,"CompileResult","","Represents a successful compilation of a context. This type\nprovides the means to access compiled functions and globals.\nJIT compiled functions are exposted to Rust as an extern "C" function\npointer.",null,null],[3,"Location","","A Location represents a location used when debugging jitted code.",null,null],[3,"Object","","Object represents the root of all objects in gccjit. It is not useful\nin and of itself, but it provides the implementation for Debug\nused by most objects in this library.",null,null],[3,"Type","","A representation of a type, as it is known to the JIT compiler.\nTypes can be created through the Typeable trait or they can\nbe created dynamically by composing Field types.",null,null],[3,"Field","","Field represents a field that composes structs or unions. A number of fields\ncan be combined to create either a struct or a union.",null,null],[3,"Struct","","A Struct is gccjit's representation of a composite type. Despite the name,\nStruct can represent either a struct, an union, or an opaque named type.",null,null],[3,"LValue","","An LValue in gccjit represents a value that has a concrete\nlocation in memory. A LValue can be converted into an RValue\nthrough the ToRValue trait.\nIt is also possible to get the address of an LValue.",null,null],[3,"RValue","","An RValue is a value that may or may not have a storage address in gccjit.\nRValues can be dereferenced, used for field accesses, and are the parameters\ngiven to a majority of the gccjit API calls.",null,null],[3,"Parameter","","Parameter represents a parameter to a function. A series of parameteres\ncan be combined to form a function signature.",null,null],[3,"Function","","Function is gccjit's representation of a function. Functions are constructed\nby constructing basic blocks and connecting them together. Locals are declared\nat the function level.",null,null],[3,"Block","","Block represents a basic block in gccjit. Blocks are created by functions.\nA basic block consists of a series of instructions terminated by a terminator\ninstruction, which can be either a jump to one block, a conditional branch to\ntwo blocks (true/false branches), a return, or a void return.",null,null],[4,"OptimizationLevel","","Represents an optimization level that the JIT compiler\nwill use when compiling your code.",null,null],[13,"None","","",0,null],[13,"Limited","","",0,null],[13,"Standard","","",0,null],[13,"Aggressive","","",0,null],[4,"OutputKind","","This enum indicates to gccjit the format of the output\ncode that is written out by compile_to_file.",null,null],[13,"Assembler","","",1,null],[13,"ObjectFile","","",1,null],[13,"DynamicLibrary","","",1,null],[13,"Executable","","",1,null],[4,"FunctionType","","FunctionType informs gccjit what sort of function a new function will be.\nAn exported function is a function that will be exported using the CompileResult\ninterface, able to be called outside of the jit. An internal function is\na function that cannot be called outside of jitted code. An extern function\nis a function with external linkage, and always inline is a function that is\nalways inlined wherever it is called and cannot be accessed outside of the jit.",null,null],[13,"Exported","","",2,null],[13,"Internal","","",2,null],[13,"Extern","","",2,null],[13,"AlwaysInline","","",2,null],[4,"BinaryOp","","BinaryOp is a enum representing the various binary operations\nthat gccjit knows how to codegen.",null,null],[13,"Plus","","",3,null],[13,"Minus","","",3,null],[13,"Mult","","",3,null],[13,"Divide","","",3,null],[13,"Modulo","","",3,null],[13,"BitwiseAnd","","",3,null],[13,"BitwiseXor","","",3,null],[13,"BitwiseOr","","",3,null],[13,"LogicalAnd","","",3,null],[13,"LogicalOr","","",3,null],[13,"LShift","","",3,null],[13,"RShift","","",3,null],[4,"UnaryOp","","UnaryOp is an enum representing the various unary operations\nthat gccjit knows how to codegen.",null,null],[13,"Minus","","",4,null],[13,"BitwiseNegate","","",4,null],[13,"LogicalNegate","","",4,null],[13,"Abs","","",4,null],[4,"ComparisonOp","","ComparisonOp is an enum representing the various comparisons that\ngccjit is capable of doing.",null,null],[13,"Equals","","",5,null],[13,"NotEquals","","",5,null],[13,"LessThan","","",5,null],[13,"LessThanEquals","","",5,null],[13,"GreaterThan","","",5,null],[13,"GreaterThanEquals","","",5,null],[11,"clone","","",6,null],[11,"to_object","","",6,null],[11,"fmt","","",6,null],[11,"make_pointer","","Given a type T, changes the type to *T, a pointer to T.",6,null],[11,"make_const","","Given a type T, changes the type to const T.",6,null],[11,"make_volatile","","Given a type T, changes the type to volatile T, which\nhas the semantics of C's volatile.",6,null],[11,"get_function","","Gets a function pointer to a JIT compiled function. If the function\ndoes not exist (wasn't compiled by the Context that produced this\nCompileResult), this function returns None.\nIt is THE RESPONSIBILITY OF THE CALLER of this function to ensure\nthat this pointer does not outlive the CompileResult object. This\npointer must be transmuted to a function pointer in order to be\ncalled.",7,null],[11,"get_global","","Gets a pointer to a global variable that lives on the JIT heap.\nIt is similarly the caller's responsibility to ensure that this\nvalue stays valid.",7,null],[11,"drop","","",7,null],[11,"default","","",8,{"inputs":[],"output":{"name":"context"}}],[11,"set_program_name","","Sets the program name reported by the JIT.",8,null],[11,"set_optimization_level","","Sets the optimization level that the JIT compiler will use.\nThe higher the optimization level, the longer compilation will\ntake.",8,null],[11,"set_dump_code_on_compile","","",8,null],[11,"compile","","Compiles the context and returns a CompileResult that contains\nthe means to access functions and globals that have currently\nbeen JIT compiled.",8,null],[11,"compile_to_file","","Compiles the context and saves the result to a file. The\ntype of the file is controlled by the OutputKind parameter.",8,null],[11,"new_child_context","","Creates a new child context from this context. The child context\nis a fully-featured context, but it has a lifetime that is strictly\nless than the lifetime that spawned it.",8,null],[11,"new_location","","Creates a new location for use by gdb when debugging a JIT compiled\nprogram. The filename, line, and col are used by gdb to "show" your\nsource when in a debugger.",8,null],[11,"new_type","","Constructs a new type for any type that implements the Typeable trait.\nThis library only provides a handful of implementations of Typeable\nfor some primitive types - utilizers of this library are encouraged\nto provide their own types that implement Typeable for ease of type\ncreation.",8,null],[11,"new_field","","Constructs a new field with an optional source location, type, and name.\nThis field can be used to compose unions or structs.",8,null],[11,"new_array_type","","Constructs a new array type with a given base element type and a\nsize.",8,null],[11,"new_struct_type","","Constructs a new struct type with the given name, optional source location,\nand a list of fields. The returned struct is concrete and new fields cannot\nbe added to it.",8,null],[11,"new_opaque_struct_type","","Constructs a new struct type whose fields are not known. Fields can\nbe added to this struct later, but only once.",8,null],[11,"new_union_type","","Creates a new union type from a set of fields.",8,null],[11,"new_function_pointer_type","","Creates a new function pointer type with the given return type\nparameter types, and an optional location. The last flag can\nmake the function variadic, although Rust can't really handle\nthe varargs calling convention.",8,null],[11,"new_function","","Creates a new function with the given function kind, return type, parameters, name,\nand whether or not the function is variadic. It's not currently possible to call\nvariadic functions from Rust right now, so that option is turned off for now.",8,null],[11,"new_binary_op","","Creates a new binary operation between two RValues and produces a new RValue.",8,null],[11,"new_unary_op","","Creates a unary operation on one RValue and produces a result RValue.",8,null],[11,"new_comparison","","",8,null],[11,"new_call","","Creates a function call to a function object with a given number of parameters.\nThe RValue that is returned is the result of the function call.",8,null],[11,"new_call_through_ptr","","Creates an indirect function call that dereferences a function pointer and\nattempts to invoke it with the given arguments. The RValue that is returned\nis the result of the function call.",8,null],[11,"new_cast","","Cast an RValue to a specific type. I don't know what happens when the cast fails yet.",8,null],[11,"new_array_access","","Creates an LValue from an array pointer and an offset. The LValue can be the target\nof an assignment, or it can be converted into an RValue (i.e. loaded).",8,null],[11,"new_rvalue_from_long","","Creates a new RValue from a given long value.",8,null],[11,"new_rvalue_from_int","","Creates a new RValue from a given int value.",8,null],[11,"new_rvalue_from_double","","Creates a new RValue from a given double value.",8,null],[11,"new_rvalue_zero","","Creates a zero element for a given type.",8,null],[11,"new_rvalue_one","","Creates a one element for a given type.",8,null],[11,"new_rvalue_from_ptr","","Creates an RValue for a raw pointer.",8,null],[11,"new_null","","Creates a null RValue.",8,null],[11,"new_string_literal","","Creates a string literal RValue.",8,null],[11,"dump_reproducer_to_file","","Dumps a small C file to the path that can be used to reproduce a series\nof API calls. You should only ever need to call this if you are debugging\na segfault in gccjit or this library.",8,null],[11,"new_parameter","","Creates a new parameter with a given type, name, and location.",8,null],[11,"get_builtin_function","","",8,null],[11,"drop","","",8,null],[11,"clone","","",9,null],[11,"fmt","","",9,null],[11,"to_object","","",9,null],[11,"clone","","",10,null],[11,"to_object","","",10,null],[11,"fmt","","",10,null],[11,"clone","","",11,null],[11,"to_object","","",11,null],[11,"fmt","","",11,null],[11,"clone","","",12,null],[11,"as_type","","",12,null],[11,"set_fields","","",12,null],[11,"to_object","","",12,null],[11,"fmt","","",12,null],[11,"clone","","",13,null],[11,"to_object","","",13,null],[11,"fmt","","",13,null],[11,"to_lvalue","","",13,null],[11,"to_rvalue","","",13,null],[11,"access_field","","Given an LValue x and a Field f, gets an LValue for the field\naccess x.f.",13,null],[11,"get_address","","Given an LValue x, returns the RValue address of x, akin to C's &x.",13,null],[11,"clone","","",14,null],[11,"to_object","","",14,null],[11,"fmt","","",14,null],[11,"to_rvalue","","",14,null],[11,"add","","",14,null],[11,"sub","","",14,null],[11,"mul","","",14,null],[11,"div","","",14,null],[11,"rem","","",14,null],[11,"bitand","","",14,null],[11,"bitor","","",14,null],[11,"bitxor","","",14,null],[11,"shl","","",14,null],[11,"shr","","",14,null],[11,"get_type","","Gets the type of this RValue.",14,null],[11,"access_field","","Given an RValue x and a Field f, returns an RValue representing\nC's x.f.",14,null],[11,"dereference_field","","Given an RValue x and a Field f, returns an LValue representing\nC's x->f.",14,null],[11,"dereference","","Given a RValue x, returns an RValue that represents *x.",14,null],[11,"clone","","",15,null],[11,"to_object","","",15,null],[11,"fmt","","",15,null],[11,"to_rvalue","","",15,null],[11,"to_lvalue","","",15,null],[11,"clone","","",16,null],[11,"to_object","","",16,null],[11,"fmt","","",16,null],[11,"get_param","","",16,null],[11,"dump_to_dot","","",16,null],[11,"new_block","","",16,null],[11,"new_local","","",16,null],[11,"clone","","",17,null],[11,"to_object","","",17,null],[11,"fmt","","",17,null],[11,"get_function","","",17,null],[11,"add_eval","","",17,null],[11,"add_assignment","","",17,null],[11,"add_assignment_op","","",17,null],[11,"add_comment","","",17,null],[11,"end_with_conditional","","",17,null],[11,"end_with_jump","","",17,null],[11,"end_with_return","","",17,null],[11,"end_with_void_return","","",17,null],[8,"ToObject","","ToObject is a trait implemented by types that can be upcast to Object.",null,null],[10,"to_object","","",18,null],[8,"Typeable","","Typeable is a trait for types that have a corresponding type within\ngccjit. This library implements this type for a variety of primitive types,\nbut it's also possible to implement this trait for more complex types\nthat will use the API on Context to construct analagous struct/union types.",null,null],[10,"get_type","","",19,{"inputs":[{"name":"context"}],"output":{"name":"type"}}],[8,"ToLValue","","ToLValue is a trait implemented by types that can be converted (or treated\nas) LValues.",null,null],[10,"to_lvalue","","",20,null],[8,"ToRValue","","ToRValue is a trait implemented by types that can be converted to, or\ntreated as, an RValue.",null,null],[10,"to_rvalue","","",21,null]],"paths":[[4,"OptimizationLevel"],[4,"OutputKind"],[4,"FunctionType"],[4,"BinaryOp"],[4,"UnaryOp"],[4,"ComparisonOp"],[3,"Type"],[3,"CompileResult"],[3,"Context"],[3,"Object"],[3,"Location"],[3,"Field"],[3,"Struct"],[3,"LValue"],[3,"RValue"],[3,"Parameter"],[3,"Function"],[3,"Block"],[8,"ToObject"],[8,"Typeable"],[8,"ToLValue"],[8,"ToRValue"]]}; initSearch(searchIndex);