add chdir
[snitchaser:mainline.git] / src / interp / code_cache.c
1 /* 
2  * code_cache.c
3  * by WN @ Mar. 12, 2010
4  */
5
6 #include <config.h>
7 #include <common/defs.h>
8 #include <common/debug.h>
9 #include <interp/code_cache.h>
10 #include <interp/mm.h>
11 #include <interp/dict.h>
12 #include <xasm/tls.h>
13 #include <xasm/logger.h>
14
15 void
16 clear_code_cache(struct tls_code_cache_t * cc)
17 {
18         destroy_dict(&(cc->cache_dict));
19         clear_obj_pages(&(cc->code_blocks));
20 }
21
22
23 /* the dict and obj pages are reset to NULL when
24  * init tls */
25 void
26 init_code_cache(struct tls_code_cache_t * cc)
27 {
28
29         /* 
30          * make sure the current_block not NULL, we can omit
31          * an NULL check
32          */
33         cc->first_fake_block.entry = NULL;
34         cc->first_fake_block.exit_inst_addr = NULL;
35         cc->first_fake_block.ori_code_end = NULL;
36         cc->first_fake_block.last_target_entry = NULL;
37         cc->first_fake_block.last_target_code = cc->first_fake_block.__code;
38         cc->first_fake_block.exit_type = EXIT_SYSCALL;
39         cc->current_block = &(cc->first_fake_block);
40 }
41
42 // vim:ts=4:sw=4
43