mirror of
https://github.com/godotengine/godot.git
synced 2025-10-19 16:03:29 +00:00
GDScript: Replace ptrcalls on MethodBind to validated calls
This improves the performance of typed calls to engine methods when the argument types are exact. Using validated calls delegate more of the work the core instead of doing argument unpacking in the VM. It also does not need different instructions for each return type, simplifying the code.
This commit is contained in:
parent
fba341ce44
commit
4a7d49a89a
8 changed files with 213 additions and 497 deletions
|
@ -241,45 +241,8 @@ public:
|
|||
OPCODE_CALL_METHOD_BIND_RET,
|
||||
OPCODE_CALL_BUILTIN_STATIC,
|
||||
OPCODE_CALL_NATIVE_STATIC,
|
||||
// ptrcall have one instruction per return type.
|
||||
OPCODE_CALL_PTRCALL_NO_RETURN,
|
||||
OPCODE_CALL_PTRCALL_BOOL,
|
||||
OPCODE_CALL_PTRCALL_INT,
|
||||
OPCODE_CALL_PTRCALL_FLOAT,
|
||||
OPCODE_CALL_PTRCALL_STRING,
|
||||
OPCODE_CALL_PTRCALL_VECTOR2,
|
||||
OPCODE_CALL_PTRCALL_VECTOR2I,
|
||||
OPCODE_CALL_PTRCALL_RECT2,
|
||||
OPCODE_CALL_PTRCALL_RECT2I,
|
||||
OPCODE_CALL_PTRCALL_VECTOR3,
|
||||
OPCODE_CALL_PTRCALL_VECTOR3I,
|
||||
OPCODE_CALL_PTRCALL_TRANSFORM2D,
|
||||
OPCODE_CALL_PTRCALL_VECTOR4,
|
||||
OPCODE_CALL_PTRCALL_VECTOR4I,
|
||||
OPCODE_CALL_PTRCALL_PLANE,
|
||||
OPCODE_CALL_PTRCALL_QUATERNION,
|
||||
OPCODE_CALL_PTRCALL_AABB,
|
||||
OPCODE_CALL_PTRCALL_BASIS,
|
||||
OPCODE_CALL_PTRCALL_TRANSFORM3D,
|
||||
OPCODE_CALL_PTRCALL_PROJECTION,
|
||||
OPCODE_CALL_PTRCALL_COLOR,
|
||||
OPCODE_CALL_PTRCALL_STRING_NAME,
|
||||
OPCODE_CALL_PTRCALL_NODE_PATH,
|
||||
OPCODE_CALL_PTRCALL_RID,
|
||||
OPCODE_CALL_PTRCALL_OBJECT,
|
||||
OPCODE_CALL_PTRCALL_CALLABLE,
|
||||
OPCODE_CALL_PTRCALL_SIGNAL,
|
||||
OPCODE_CALL_PTRCALL_DICTIONARY,
|
||||
OPCODE_CALL_PTRCALL_ARRAY,
|
||||
OPCODE_CALL_PTRCALL_PACKED_BYTE_ARRAY,
|
||||
OPCODE_CALL_PTRCALL_PACKED_INT32_ARRAY,
|
||||
OPCODE_CALL_PTRCALL_PACKED_INT64_ARRAY,
|
||||
OPCODE_CALL_PTRCALL_PACKED_FLOAT32_ARRAY,
|
||||
OPCODE_CALL_PTRCALL_PACKED_FLOAT64_ARRAY,
|
||||
OPCODE_CALL_PTRCALL_PACKED_STRING_ARRAY,
|
||||
OPCODE_CALL_PTRCALL_PACKED_VECTOR2_ARRAY,
|
||||
OPCODE_CALL_PTRCALL_PACKED_VECTOR3_ARRAY,
|
||||
OPCODE_CALL_PTRCALL_PACKED_COLOR_ARRAY,
|
||||
OPCODE_CALL_METHOD_BIND_VALIDATED_RETURN,
|
||||
OPCODE_CALL_METHOD_BIND_VALIDATED_NO_RETURN,
|
||||
OPCODE_AWAIT,
|
||||
OPCODE_AWAIT_RESUME,
|
||||
OPCODE_CREATE_LAMBDA,
|
||||
|
@ -425,7 +388,6 @@ private:
|
|||
int _argument_count = 0;
|
||||
int _stack_size = 0;
|
||||
int _instruction_args_size = 0;
|
||||
int _ptrcall_args_size = 0;
|
||||
|
||||
SelfList<GDScriptFunction> function_list{ this };
|
||||
mutable Variant nil;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue