| line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
|
1
|
|
|
|
|
|
|
// Copyright (c) 2023 Yuki Kimoto |
|
2
|
|
|
|
|
|
|
// MIT License |
|
3
|
|
|
|
|
|
|
|
|
4
|
|
|
|
|
|
|
#include |
|
5
|
|
|
|
|
|
|
|
|
6
|
|
|
|
|
|
|
#include "spvm_native.h" |
|
7
|
|
|
|
|
|
|
|
|
8
|
|
|
|
|
|
|
#include "spvm_api_internal.h" |
|
9
|
|
|
|
|
|
|
#include "spvm_api.h" |
|
10
|
|
|
|
|
|
|
|
|
11
|
119269
|
|
|
|
|
|
SPVM_API_INTERNAL* SPVM_API_INTERNAL_new_api() { |
|
12
|
|
|
|
|
|
|
|
|
13
|
|
|
|
|
|
|
// Env Allocator |
|
14
|
119269
|
|
|
|
|
|
void* env_internal_init[] = { |
|
15
|
|
|
|
|
|
|
SPVM_API_INTERNAL_get_ref_count, |
|
16
|
|
|
|
|
|
|
SPVM_API_INTERNAL_inc_ref_count, |
|
17
|
|
|
|
|
|
|
SPVM_API_INTERNAL_dec_ref_count, |
|
18
|
|
|
|
|
|
|
SPVM_API_INTERNAL_leave_scope_local, |
|
19
|
|
|
|
|
|
|
SPVM_API_INTERNAL_lock_object, |
|
20
|
|
|
|
|
|
|
SPVM_API_INTERNAL_unlock_object, |
|
21
|
|
|
|
|
|
|
}; |
|
22
|
119269
|
|
|
|
|
|
SPVM_API_INTERNAL* env_internal = calloc(1, sizeof(env_internal_init)); |
|
23
|
119269
|
|
|
|
|
|
memcpy(env_internal, env_internal_init, sizeof(env_internal_init)); |
|
24
|
|
|
|
|
|
|
|
|
25
|
119269
|
|
|
|
|
|
return env_internal; |
|
26
|
|
|
|
|
|
|
} |
|
27
|
|
|
|
|
|
|
|
|
28
|
119269
|
|
|
|
|
|
void SPVM_API_INTERNAL_free_api(SPVM_API_INTERNAL* api) { |
|
29
|
119269
|
|
|
|
|
|
free(api); |
|
30
|
119269
|
|
|
|
|
|
} |
|
31
|
|
|
|
|
|
|
|
|
32
|
26
|
|
|
|
|
|
int32_t SPVM_API_INTERNAL_get_ref_count(SPVM_ENV* env, SPVM_VALUE* stack, SPVM_OBJECT* object) { |
|
33
|
|
|
|
|
|
|
|
|
34
|
26
|
|
|
|
|
|
return SPVM_API_get_ref_count(env, stack, object); |
|
35
|
|
|
|
|
|
|
} |
|
36
|
|
|
|
|
|
|
|
|
37
|
90267
|
|
|
|
|
|
void SPVM_API_INTERNAL_inc_ref_count(SPVM_ENV* env, SPVM_VALUE* stack, SPVM_OBJECT* object) { |
|
38
|
|
|
|
|
|
|
|
|
39
|
90267
|
|
|
|
|
|
SPVM_API_inc_ref_count(env, stack, object); |
|
40
|
90267
|
|
|
|
|
|
} |
|
41
|
|
|
|
|
|
|
|
|
42
|
90267
|
|
|
|
|
|
void SPVM_API_INTERNAL_dec_ref_count(SPVM_ENV* env, SPVM_VALUE* stack, SPVM_OBJECT* object) { |
|
43
|
|
|
|
|
|
|
|
|
44
|
90267
|
|
|
|
|
|
SPVM_API_dec_ref_count(env, stack, object); |
|
45
|
90267
|
|
|
|
|
|
} |
|
46
|
|
|
|
|
|
|
|
|
47
|
1317643
|
|
|
|
|
|
void SPVM_API_INTERNAL_leave_scope_local(SPVM_ENV* env, SPVM_VALUE* stack, SPVM_OBJECT** object_vars, int32_t* mortal_stack, int32_t* mortal_stack_top_ptr, int32_t original_mortal_stack_top) { |
|
48
|
|
|
|
|
|
|
|
|
49
|
1317643
|
|
|
|
|
|
SPVM_API_leave_scope_local(env, stack, object_vars, mortal_stack, mortal_stack_top_ptr, original_mortal_stack_top); |
|
50
|
1317643
|
|
|
|
|
|
} |
|
51
|
|
|
|
|
|
|
|
|
52
|
180534
|
|
|
|
|
|
void SPVM_API_INTERNAL_lock_object(SPVM_ENV* env, SPVM_VALUE* stack, SPVM_OBJECT* object) { |
|
53
|
|
|
|
|
|
|
|
|
54
|
180534
|
|
|
|
|
|
SPVM_API_lock_object(env, stack, object); |
|
55
|
180534
|
|
|
|
|
|
} |
|
56
|
|
|
|
|
|
|
|
|
57
|
180534
|
|
|
|
|
|
void SPVM_API_INTERNAL_unlock_object(SPVM_ENV* env, SPVM_VALUE* stack, SPVM_OBJECT* object) { |
|
58
|
|
|
|
|
|
|
|
|
59
|
180534
|
|
|
|
|
|
SPVM_API_unlock_object(env, stack, object); |
|
60
|
180534
|
|
|
|
|
|
} |