-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinit.cpp
More file actions
123 lines (100 loc) · 3.09 KB
/
init.cpp
File metadata and controls
123 lines (100 loc) · 3.09 KB
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#include "std.h"
#include "rope.h"
#include "Helper.h"
static int VM_initing = TRUE;
extern void initialisePlatform();
// 根据环境变量调整默认参数值
void
use_env_args(InitArgs *args)
{
args->do_log = get_bool(getenv("log"), "1");
args->do_probe = get_bool(getenv("probe"), "1");
args->model = get_int(getenv("model"), "3");
args->do_graph = get_bool(getenv("graph"), "1");
args->do_event = get_bool(getenv("event"), "1");
args->support_invoker_execute = get_bool(getenv("support_invoker_execute"), "1");
args->support_irrevocable = get_bool(getenv("support_irrevocable"), "1");
args->support_spec_safe_native = get_bool(getenv("support_spec_safe_native"), "1");
args->support_spec_barrier = get_bool(getenv("support_spec_barrier"), "1");
args->support_self_read = get_bool(getenv("support_self_read"), "1");
}
/* Setup default values for command line args */
// 设置默认的参数值,并根据环境变量,调整这些参数值
// 注意:这些参数值后边还会受命令行选项控制,当然,不在这里,而在其他函数中
void setDefaultInitArgs(InitArgs *args) {
args->do_log = FALSE;
args->do_probe = TRUE;
args->model = 3;
args->do_graph = FALSE;
args->do_event= FALSE;
args->support_invoker_execute = true;
args->support_irrevocable = true;
args->support_spec_safe_native = true;
args->support_spec_barrier = true;
args->support_self_read = true;
args->noasyncgc = FALSE;
args->verbosegc = FALSE;
args->verbosedll = FALSE;
args->verboseclass = FALSE;
args->compact_specified = FALSE;
args->classpath = NULL;
args->bootpath = NULL;
args->java_stack = DEFAULT_STACK;
args->min_heap = DEFAULT_MIN_HEAP;
args->max_heap = DEFAULT_MAX_HEAP;
args->props_count = 0;
args->vfprintf = vfprintf;
args->abort = abort;
args->exit = exit;
#ifdef INLINING
args->replication = 10;
args->codemem = args->max_heap / 4;
#endif
use_env_args(args);
}
int VMInitialising() {
return VM_initing;
}
void initVM(InitArgs *args) {
//initialiseLoggers(args);
initialiseJvm(args);
/* Perform platform dependent initialisation */
initialisePlatform();
/* Initialise the VM modules -- ordering is important! */
initialiseHooks(args);
initialiseProperties(args);
initialiseAlloc(args);
initialiseDll(args);
initialiseUtf8();
initialiseThreadStage1(args);
initialiseSymbol();
initialiseClass(args);
initialiseMonitor();
initialiseString();
initialiseException();
initialiseNatives();
initialiseJNI();
initialiseInterpreter(args);
initialiseThreadStage2(args);
initialiseGC(args);
VM_initing = FALSE;
}
unsigned long parseMemValue(char *str) {
char *end;
unsigned long n = strtol(str, &end, 0);
switch(end[0]) {
case '\0':
break;
case 'M':
case 'm':
n *= MB;
break;
case 'K':
case 'k':
n *= KB;
break;
default:
n = 0;
}
return n;
}