-
Notifications
You must be signed in to change notification settings - Fork 646
/
Copy pathaot_comp_option.h
91 lines (79 loc) · 2.8 KB
/
aot_comp_option.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
/*
* Copyright (C) 2019 Intel Corporation. All rights reserved.
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
*/
#ifndef __AOT_COMP_OPTION_H__
#define __AOT_COMP_OPTION_H__
#include <stdint.h>
typedef struct {
/* Enables or disables bounds checks for stack frames. When enabled, the AOT
* compiler generates code to check if the stack pointer is within the
* bounds of the current stack frame (and if not, traps). */
bool bounds_checks;
/* Enables or disables instruction pointer (IP) tracking. */
bool ip;
/* Enables or disables function index in the stack trace. Please note that
* function index can be recovered from the instruction pointer using
* ip2function.py script, so enabling this feature along with `ip` might
* often be redundant.
* This option will automatically be enabled for GC and Perf Profiling mode.
*/
bool func_idx;
/* Enables or disables tracking instruction pointer of a trap. Only takes
* effect when `ip` is enabled. */
bool trap_ip;
/* Enables or disables parameters, locals and stack operands. */
bool values;
/* If enabled, stack frame is generated at the beginning of each
* function (frame-per-function mode). Otherwise, stack frame is
* generated before each call of a function (frame-per-call mode). */
bool frame_per_function;
} AOTCallStackFeatures;
void
aot_call_stack_features_init_default(AOTCallStackFeatures *features);
typedef enum {
AOT_STACK_FRAME_OFF = 0,
/* Use a small stack frame data structure (AOTTinyFrame) */
AOT_STACK_FRAME_TYPE_TINY,
/* Use a regular stack frame data structure (AOTFrame) */
AOT_STACK_FRAME_TYPE_STANDARD,
} AOTStackFrameType;
typedef struct AOTCompOption {
bool is_jit_mode;
bool is_indirect_mode;
char *target_arch;
char *target_abi;
char *target_cpu;
char *cpu_features;
bool is_sgx_platform;
bool enable_bulk_memory;
bool enable_thread_mgr;
bool enable_tail_call;
bool enable_simd;
bool enable_ref_types;
bool enable_gc;
bool enable_aux_stack_check;
AOTStackFrameType aux_stack_frame_type;
AOTCallStackFeatures call_stack_features;
bool enable_perf_profiling;
bool enable_memory_profiling;
bool disable_llvm_intrinsics;
bool disable_llvm_lto;
bool enable_llvm_pgo;
bool enable_stack_estimation;
bool quick_invoke_c_api_import;
bool enable_shared_heap;
char *use_prof_file;
uint32_t opt_level;
uint32_t size_level;
uint32_t output_format;
uint32_t bounds_checks;
uint32_t stack_bounds_checks;
uint32_t segue_flags;
char **custom_sections;
uint32_t custom_sections_count;
const char *stack_usage_file;
const char *llvm_passes;
const char *builtin_intrinsics;
} AOTCompOption, *aot_comp_option_t;
#endif