SPVM::Document::NativeAPI::Method − Method Native APIs
The method native APIs in SPVM are the APIs to get definition information for methods.
SPVM_API_METHOD*
api_method = env−>api−>method;
void* basic_type = env−>get_basic_type(env, stack,
"Foo");
void* method =
env−>api−>basic_type−>get_method_by_name(env−>runtime,
basic_type, "get");
const char* method_name =
api_method−>get_name(env−>runtime,
method);
"const char* (*get_name)(void* runtime, void* method);"
Returns the name of the method method.
"int32_t (*get_index)(void* runtime, void* method);"
Returns the index of the method method. This index is the position of the method method in its belonging class.
"void* (*get_return_basic_type)(void* runtime, void* method);"
Returns the basic type of the return type of the method method.
"int32_t (*get_return_type_dimension)(void* runtime, void* method);"
Returns the type dimention of the return type of the method method.
"int32_t (*get_return_type_flag)(void* runtime, void* method);"
Returns the type flag ID of the return type of the method method.
"void* (*get_arg_by_index)(void* runtime, void* method, int32_t arg_index);"
Searches a argument at the index arg_index.
If it is found, returns it. Otherwise, returns "NULL".
"int32_t (*get_args_length)(void* runtime, void* method);"
Returns the length of the arguments of the method method.
"int32_t (*get_required_args_length)(void* runtime, void* method);"
Returns the length of the required arguments of the method method.
"void* (*get_current_basic_type)(void* runtime, void* method);"
Returns the basic type that owns the method method.
"void* (*get_opcode_by_index)(void* runtime, void* method, int32_t opcode_index);"
Searches an operation code at the index opcode_index.
If it is found, returns it. Otherwise, returns "NULL".
"int32_t (*get_opcodes_length)(void* runtime, void* method);"
Returns the length of operation codes.
"int32_t (*is_class_method)(void* runtime, void* method);"
If the method method is a class method, returns 1, otherwise returns 0.
"int32_t (*is_anon)(void* runtime, void* method);"
If the method method is an anon method, returns 1, otherwise returns 0.
"int32_t (*is_native)(void* runtime, void* method);"
If the method method is a native method, returns 1, otherwise returns 0.
"int32_t (*is_precompile)(void* runtime, void* method);"
If the method method is a method with the "precompile" attribute, returns 1, otherwise returns 0.
"int32_t (*is_enum)(void* runtime, void* method);"
If the method method is an enumeration, returns 1, otherwise returns 0.
"int32_t (*get_byte_vars_width)(void* runtime, void* method);"
Returns the length of the variables of the "byte" type allocated by the method method.
"int32_t (*get_short_vars_width)(void* runtime, void* method);"
Returns the length of the variables of the "short" type allocated by the method method.
"int32_t (*get_int_vars_width)(void* runtime, void* method);"
Returns the length of the variables of the "int" type allocated by the method method.
"int32_t (*get_long_vars_width)(void* runtime, void* method);"
Returns the length of the variables of the "long" type allocated by the method method.
"int32_t (*get_float_vars_width)(void* runtime, void* method);"
Returns the length of the variables of the "float" type allocated by the method method.
"int32_t (*get_double_vars_width)(void* runtime, void* method);"
Returns the length of the variables of the "double" type allocated by the method method.
"int32_t (*get_object_vars_width)(void* runtime, void* method);"
Returns the length of the variables of the object type allocated by the method method.
"int32_t (*get_ref_vars_width)(void* runtime, void* method);"
Returns the length of the variables of the reference type allocated by the method method.
"int32_t (*get_mortal_stack_length)(void* runtime, void* method);"
Returns the length of the mortal stack of the method method.
"void* (*get_native_address)(void* runtime, void* method);"
Returns the "native_address" field of the method method. The address of the machine code for a native method is stored to this field.
"void (*set_native_address)(void* runtime, void* method, void* address);"
Sets address to the "native_address" field of the method method.
"void* (*get_precompile_address)(void* runtime, void* method);"
Returns the "precompile_address" field of the method method. The address of the machine code for a precompiled method is stored to this field.
"void (*set_precompile_address)(void* runtime, void* method, void* address);"
Sets address to the "precompile_address" field of the method method.
"int32_t (*is_precompile_fallback)(void* runtime, void* method);"
Gets the "is_precompile_fallback" field.
If this field is a true value, the precompilation method that does not have the execution address is fallback to the vm method.
"void (*set_is_precompile_fallback)(void* runtime, void* method, int32_t is_precompile_fallback);"
Sets the "is_precompile_fallback" field to is_precompile_fallback.
"int32_t (*is_not_permitted)(void* runtime, void* method);"
Gets the "is_not_permitted" field.
If this field is a true value, the method throw an exception with "eval_error_id" set to the basic type ID of L<>
"void (*set_is_not_permitted)(void* runtime, void* method, int32_t is_not_permitted);"
Sets the "is_not_permitted" field to is_not_permitted.
This native API is intended for use by browser applications that want to implement a security sandbox.
"const char* (*get_args_signature)(void* runtime, void* method);"
Returns the arguments signature of the method method.
0 get_name
1 get_index
2 get_return_basic_type
3 get_return_type_dimension
4 get_return_type_flag
5 get_arg_by_index
6 get_args_length
7 get_required_args_length
8 get_current_basic_type
9 get_opcode_by_index
10 get_opcodes_length
11 is_class_method
12 is_anon
13 is_native
14 is_precompile
15 is_enum
16 get_byte_vars_width
17 get_short_vars_width
18 get_int_vars_width
19 get_long_vars_width
20 get_float_vars_width
21 get_double_vars_width
22 get_object_vars_width
23 get_ref_vars_width
24 get_mortal_stack_length
25 get_native_address
26 set_native_address
27 get_precompile_address
28 set_precompile_address
29 is_precompile_fallback
30 set_is_precompile_fallback
31 is_not_permitted
32 set_is_not_permitted
32 get_args_signature
|
• |
SPVM::Document::NativeAPI |
|||
|
• |
SPVM::Document::NativeClass |
|||
|
• |
SPVM::Document |
Copyright (c) 2023 Yuki Kimoto
MIT License
Hey! The
above document had some coding errors, which are explained
below:
Around line 219:
Unterminated L<...> sequence
An empty L<>