File tree Expand file tree Collapse file tree 1 file changed +15
-4
lines changed
mrbgems/mruby-os-memsize/src Expand file tree Collapse file tree 1 file changed +15
-4
lines changed Original file line number Diff line number Diff line change @@ -16,13 +16,24 @@ static size_t
16
16
os_memsize_of_irep (mrb_state * state , const struct mrb_irep * irep )
17
17
{
18
18
size_t size ;
19
- int i ;
20
19
21
20
size = (irep -> slen * sizeof (mrb_sym )) +
22
- (irep -> plen * sizeof (mrb_code )) +
23
- (irep -> ilen * sizeof (mrb_code ));
21
+ (irep -> plen * sizeof (mrb_pool_value )) +
22
+ (irep -> ilen * sizeof (mrb_code )) +
23
+ (irep -> rlen * sizeof (struct mrb_irep * ));
24
24
25
- for (i = 0 ; i < irep -> rlen ; i ++ ) {
25
+ for (int i = 0 ; i < irep -> plen ; i ++ ) {
26
+ const mrb_pool_value * p = & irep -> pool [i ];
27
+ if ((p -> tt & IREP_TT_NFLAG ) == 0 ) { /* string pool value */
28
+ size += (p -> tt >>2 );
29
+ }
30
+ else if (p -> tt == IREP_TT_BIGINT ) { /* bigint pool value */
31
+ size += p -> u .str [0 ];
32
+ }
33
+ }
34
+
35
+ for (int i = 0 ; i < irep -> rlen ; i ++ ) {
36
+ size += sizeof (struct mrb_irep ); /* size of irep structure */
26
37
size += os_memsize_of_irep (state , irep -> reps [i ]);
27
38
}
28
39
return size ;
You can’t perform that action at this time.
0 commit comments