1 /**
2  * \file
3  */
4 
5 #ifndef __MONO_METADATA_BASIC_BLOCK_H__
6 #define __MONO_METADATA_BASIC_BLOCK_H__
7 
8 #include <glib.h>
9 #include <mono/metadata/metadata.h>
10 #include <mono/utils/mono-compiler.h>
11 #include <mono/utils/mono-error.h>
12 
13 G_BEGIN_DECLS
14 
15 typedef struct _MonoSimpleBasicBlock MonoSimpleBasicBlock;
16 
17 struct _MonoSimpleBasicBlock {
18 	MonoSimpleBasicBlock *next, *left, *right, *parent;
19 	GSList *out_bb;
20 	int start, end;
21 	unsigned colour   : 1;
22 	unsigned dead     : 1;
23 };
24 
25 MonoSimpleBasicBlock*
26 mono_basic_block_split (MonoMethod *method, MonoError *error, MonoMethodHeader *header);
27 
28 void
29 mono_basic_block_free (MonoSimpleBasicBlock *bb);
30 
31 
32 /*This function is here because opcodes.h is a public header*/
33 int
34 mono_opcode_value_and_size (const unsigned char **ip, const unsigned char *end, int *value);
35 
36 int
37 mono_opcode_size (const unsigned char *ip, const unsigned char *end);
38 
39 G_END_DECLS
40 
41 #endif  /* __MONO_METADATA_BASIC_BLOCK_H__ */
42 
43