Skip to content

Commit fbbc1a7

Browse files
committed
Rewrite everything to use [] instead of vec() in value position.
1 parent ae030c5 commit fbbc1a7

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

87 files changed

+1137
-1134
lines changed

src/comp/back/upcall.rs

Lines changed: 41 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,8 @@ type upcalls = rec(
6363
fn declare_upcalls(type_names tn, ModuleRef llmod) -> @upcalls {
6464
fn decl(type_names tn, ModuleRef llmod, str name, vec[TypeRef] tys,
6565
TypeRef rv) -> ValueRef {
66-
let vec[TypeRef] arg_tys = vec(T_taskptr(tn));
67-
for (TypeRef t in tys) { arg_tys += vec(t); }
66+
let vec[TypeRef] arg_tys = [T_taskptr(tn)];
67+
for (TypeRef t in tys) { arg_tys += [t]; }
6868
auto fn_ty = T_fn(arg_tys, rv);
6969
ret trans::decl_cdecl_fn(llmod, "upcall_" + name, fn_ty);
7070
}
@@ -74,61 +74,61 @@ fn declare_upcalls(type_names tn, ModuleRef llmod) -> @upcalls {
7474

7575
// FIXME: Sigh:.. remove this when I fix the typechecker pushdown.
7676
// --pcwalton
77-
let vec[TypeRef] empty_vec = vec();
77+
let vec[TypeRef] empty_vec = [];
7878

7979
ret @rec(
80-
grow_task=dv("grow_task", vec(T_size_t())),
81-
log_int=dv("log_int", vec(T_i32(), T_i32())),
82-
log_float=dv("log_float", vec(T_i32(), T_f32())),
83-
log_double=dv("log_double", vec(T_i32(), T_ptr(T_f64()))),
84-
log_str=dv("log_str", vec(T_i32(), T_ptr(T_str()))),
85-
trace_word=dv("trace_word", vec(T_int())),
86-
trace_str=dv("trace_str", vec(T_ptr(T_i8()))),
87-
new_port=d("new_port", vec(T_size_t()), T_opaque_port_ptr()),
88-
del_port=dv("del_port", vec(T_opaque_port_ptr())),
89-
new_chan=d("new_chan", vec(T_opaque_port_ptr()), T_opaque_chan_ptr()),
90-
flush_chan=dv("flush_chan", vec(T_opaque_chan_ptr())),
91-
del_chan=dv("del_chan", vec(T_opaque_chan_ptr())),
92-
clone_chan=d("clone_chan", vec(T_taskptr(tn), T_opaque_chan_ptr()),
80+
grow_task=dv("grow_task", [T_size_t()]),
81+
log_int=dv("log_int", [T_i32(), T_i32()]),
82+
log_float=dv("log_float", [T_i32(), T_f32()]),
83+
log_double=dv("log_double", [T_i32(), T_ptr(T_f64())]),
84+
log_str=dv("log_str", [T_i32(), T_ptr(T_str())]),
85+
trace_word=dv("trace_word", [T_int()]),
86+
trace_str=dv("trace_str", [T_ptr(T_i8())]),
87+
new_port=d("new_port", [T_size_t()], T_opaque_port_ptr()),
88+
del_port=dv("del_port", [T_opaque_port_ptr()]),
89+
new_chan=d("new_chan", [T_opaque_port_ptr()], T_opaque_chan_ptr()),
90+
flush_chan=dv("flush_chan", [T_opaque_chan_ptr()]),
91+
del_chan=dv("del_chan", [T_opaque_chan_ptr()]),
92+
clone_chan=d("clone_chan", [T_taskptr(tn), T_opaque_chan_ptr()],
9393
T_opaque_chan_ptr()),
9494
_yield=dv("yield", empty_vec),
95-
sleep=dv("sleep", vec(T_size_t())),
96-
_join=dv("join", vec(T_taskptr(tn))),
97-
send=dv("send", vec(T_opaque_chan_ptr(), T_ptr(T_i8()))),
98-
recv=dv("recv", vec(T_ptr(T_ptr(T_i8())), T_opaque_port_ptr())),
99-
_fail=dv("fail", vec(T_ptr(T_i8()), T_ptr(T_i8()), T_size_t())),
100-
kill=dv("kill", vec(T_taskptr(tn))),
95+
sleep=dv("sleep", [T_size_t()]),
96+
_join=dv("join", [T_taskptr(tn)]),
97+
send=dv("send", [T_opaque_chan_ptr(), T_ptr(T_i8())]),
98+
recv=dv("recv", [T_ptr(T_ptr(T_i8())), T_opaque_port_ptr()]),
99+
_fail=dv("fail", [T_ptr(T_i8()), T_ptr(T_i8()), T_size_t()]),
100+
kill=dv("kill", [T_taskptr(tn)]),
101101
exit=dv("exit", empty_vec),
102-
malloc=d("malloc", vec(T_size_t(), T_ptr(T_tydesc(tn))),
102+
malloc=d("malloc", [T_size_t(), T_ptr(T_tydesc(tn))],
103103
T_ptr(T_i8())),
104-
free=dv("free", vec(T_ptr(T_i8()), T_int())),
105-
mark=d("mark", vec(T_ptr(T_i8())), T_int()),
106-
new_str=d("new_str", vec(T_ptr(T_i8()), T_size_t()), T_ptr(T_str())),
107-
new_vec=d("new_vec", vec(T_size_t(), T_ptr(T_tydesc(tn))),
104+
free=dv("free", [T_ptr(T_i8()), T_int()]),
105+
mark=d("mark", [T_ptr(T_i8())], T_int()),
106+
new_str=d("new_str", [T_ptr(T_i8()), T_size_t()], T_ptr(T_str())),
107+
new_vec=d("new_vec", [T_size_t(), T_ptr(T_tydesc(tn))],
108108
T_opaque_vec_ptr()),
109-
vec_grow=d("vec_grow", vec(T_opaque_vec_ptr(), T_size_t(),
110-
T_ptr(T_int()), T_ptr(T_tydesc(tn))),
109+
vec_grow=d("vec_grow", [T_opaque_vec_ptr(), T_size_t(),
110+
T_ptr(T_int()), T_ptr(T_tydesc(tn))],
111111
T_opaque_vec_ptr()),
112112
require_rust_sym=d("require_rust_sym",
113-
vec(T_ptr(T_crate(tn)), T_size_t(), T_size_t(),
113+
[T_ptr(T_crate(tn)), T_size_t(), T_size_t(),
114114
T_size_t(), T_ptr(T_i8()),
115-
T_ptr(T_ptr(T_i8()))),
115+
T_ptr(T_ptr(T_i8()))],
116116
T_int()),
117117
require_c_sym=d("require_c_sym",
118-
vec(T_ptr(T_crate(tn)), T_size_t(), T_size_t(),
119-
T_ptr(T_i8()), T_ptr(T_i8())),
118+
[T_ptr(T_crate(tn)), T_size_t(), T_size_t(),
119+
T_ptr(T_i8()), T_ptr(T_i8())],
120120
T_int()),
121121
get_type_desc=d("get_type_desc",
122-
vec(T_ptr(T_crate(tn)), T_size_t(), T_size_t(),
123-
T_size_t(), T_ptr(T_ptr(T_tydesc(tn)))),
122+
[T_ptr(T_crate(tn)), T_size_t(), T_size_t(),
123+
T_size_t(), T_ptr(T_ptr(T_tydesc(tn)))],
124124
T_ptr(T_tydesc(tn))),
125-
new_task=d("new_task", vec(T_ptr(T_i8())), T_taskptr(tn)),
126-
start_task=d("start_task", vec(T_taskptr(tn), T_int(), T_int(),
127-
T_int(), T_size_t()),
125+
new_task=d("new_task", [T_ptr(T_i8())], T_taskptr(tn)),
126+
start_task=d("start_task", [T_taskptr(tn), T_int(), T_int(),
127+
T_int(), T_size_t()],
128128
T_taskptr(tn)),
129-
new_thread=d("new_thread", vec(T_ptr(T_i8())), T_taskptr(tn)),
130-
start_thread=d("start_thread", vec(T_taskptr(tn), T_int(), T_int(),
131-
T_int(), T_size_t()),
129+
new_thread=d("new_thread", [T_ptr(T_i8())], T_taskptr(tn)),
130+
start_thread=d("start_thread", [T_taskptr(tn), T_int(), T_int(),
131+
T_int(), T_size_t()],
132132
T_taskptr(tn))
133133
);
134134
}

src/comp/back/x86.rs

Lines changed: 40 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -12,78 +12,78 @@ fn wstr(int i) -> str {
1212
}
1313

1414
fn start() -> vec[str] {
15-
ret vec(".cfi_startproc");
15+
ret [".cfi_startproc"];
1616
}
1717

1818
fn end() -> vec[str] {
19-
ret vec(".cfi_endproc");
19+
ret [".cfi_endproc"];
2020
}
2121

2222
fn save_callee_saves() -> vec[str] {
23-
ret vec("pushl %ebp",
23+
ret ["pushl %ebp",
2424
"pushl %edi",
2525
"pushl %esi",
26-
"pushl %ebx");
26+
"pushl %ebx"];
2727
}
2828

2929
fn save_callee_saves_with_cfi() -> vec[str] {
3030
auto offset = 8;
3131
auto t;
32-
t = vec("pushl %ebp");
33-
t += vec(".cfi_def_cfa_offset " + istr(offset));
34-
t += vec(".cfi_offset %ebp, -" + istr(offset));
32+
t = ["pushl %ebp"];
33+
t += [".cfi_def_cfa_offset " + istr(offset)];
34+
t += [".cfi_offset %ebp, -" + istr(offset)];
3535

36-
t += vec("pushl %edi");
36+
t += ["pushl %edi"];
3737
offset += 4;
38-
t += vec(".cfi_def_cfa_offset " + istr(offset));
38+
t += [".cfi_def_cfa_offset " + istr(offset)];
3939

40-
t += vec("pushl %esi");
40+
t += ["pushl %esi"];
4141
offset += 4;
42-
t += vec(".cfi_def_cfa_offset " + istr(offset));
42+
t += [".cfi_def_cfa_offset " + istr(offset)];
4343

44-
t += vec("pushl %ebx");
44+
t += ["pushl %ebx"];
4545
offset += 4;
46-
t += vec(".cfi_def_cfa_offset " + istr(offset));
46+
t += [".cfi_def_cfa_offset " + istr(offset)];
4747
ret t;
4848
}
4949

5050
fn restore_callee_saves() -> vec[str] {
51-
ret vec("popl %ebx",
51+
ret ["popl %ebx",
5252
"popl %esi",
5353
"popl %edi",
54-
"popl %ebp");
54+
"popl %ebp"];
5555
}
5656

5757
fn load_esp_from_rust_sp_first_arg() -> vec[str] {
58-
ret vec("movl " + wstr(abi::task_field_rust_sp) + "(%ecx), %esp");
58+
ret ["movl " + wstr(abi::task_field_rust_sp) + "(%ecx), %esp"];
5959
}
6060

6161
fn load_esp_from_runtime_sp_first_arg() -> vec[str] {
62-
ret vec("movl " + wstr(abi::task_field_runtime_sp) + "(%ecx), %esp");
62+
ret ["movl " + wstr(abi::task_field_runtime_sp) + "(%ecx), %esp"];
6363
}
6464

6565
fn store_esp_to_rust_sp_first_arg() -> vec[str] {
66-
ret vec("movl %esp, " + wstr(abi::task_field_rust_sp) + "(%ecx)");
66+
ret ["movl %esp, " + wstr(abi::task_field_rust_sp) + "(%ecx)"];
6767
}
6868

6969
fn store_esp_to_runtime_sp_first_arg() -> vec[str] {
70-
ret vec("movl %esp, " + wstr(abi::task_field_runtime_sp) + "(%ecx)");
70+
ret ["movl %esp, " + wstr(abi::task_field_runtime_sp) + "(%ecx)"];
7171
}
7272

7373
fn load_esp_from_rust_sp_second_arg() -> vec[str] {
74-
ret vec("movl " + wstr(abi::task_field_rust_sp) + "(%edx), %esp");
74+
ret ["movl " + wstr(abi::task_field_rust_sp) + "(%edx), %esp"];
7575
}
7676

7777
fn load_esp_from_runtime_sp_second_arg() -> vec[str] {
78-
ret vec("movl " + wstr(abi::task_field_runtime_sp) + "(%edx), %esp");
78+
ret ["movl " + wstr(abi::task_field_runtime_sp) + "(%edx), %esp"];
7979
}
8080

8181
fn store_esp_to_rust_sp_second_arg() -> vec[str] {
82-
ret vec("movl %esp, " + wstr(abi::task_field_rust_sp) + "(%edx)");
82+
ret ["movl %esp, " + wstr(abi::task_field_rust_sp) + "(%edx)"];
8383
}
8484

8585
fn store_esp_to_runtime_sp_second_arg() -> vec[str] {
86-
ret vec("movl %esp, " + wstr(abi::task_field_runtime_sp) + "(%edx)");
86+
ret ["movl %esp, " + wstr(abi::task_field_runtime_sp) + "(%edx)"];
8787
}
8888

8989

@@ -105,7 +105,7 @@ fn store_esp_to_runtime_sp_second_arg() -> vec[str] {
105105
*/
106106

107107
fn rust_activate_glue() -> vec[str] {
108-
ret vec("movl 4(%esp), %ecx # ecx = rust_task")
108+
ret ["movl 4(%esp), %ecx # ecx = rust_task"]
109109
+ save_callee_saves()
110110
+ store_esp_to_runtime_sp_first_arg()
111111
+ load_esp_from_rust_sp_first_arg()
@@ -157,7 +157,7 @@ fn rust_activate_glue() -> vec[str] {
157157
* will be a no-op. Esp won't move, and the task's stack won't
158158
* grow.
159159
*/
160-
+ vec("addl $20, " + wstr(abi::task_field_rust_sp) + "(%ecx)")
160+
+ ["addl $20, " + wstr(abi::task_field_rust_sp) + "(%ecx)"]
161161

162162

163163
/*
@@ -167,10 +167,10 @@ fn rust_activate_glue() -> vec[str] {
167167
* activating, the task needs to be in the fastcall 2nd parameter
168168
* expected by the rust main function. That's edx.
169169
*/
170-
+ vec("mov %ecx, %edx")
170+
+ ["mov %ecx, %edx"]
171171

172172
+ restore_callee_saves()
173-
+ vec("ret");
173+
+ ["ret"];
174174
}
175175

176176
/* More glue code, this time the 'bottom half' of yielding.
@@ -200,13 +200,13 @@ fn rust_activate_glue() -> vec[str] {
200200
*/
201201

202202
fn rust_yield_glue() -> vec[str] {
203-
ret vec("movl 0(%esp), %ecx # ecx = rust_task")
203+
ret ["movl 0(%esp), %ecx # ecx = rust_task"]
204204
+ load_esp_from_rust_sp_first_arg()
205205
+ save_callee_saves()
206206
+ store_esp_to_rust_sp_first_arg()
207207
+ load_esp_from_runtime_sp_first_arg()
208208
+ restore_callee_saves()
209-
+ vec("ret");
209+
+ ["ret"];
210210
}
211211

212212
fn native_glue(int n_args, abi::native_glue_type ngt) -> vec[str] {
@@ -239,8 +239,8 @@ fn native_glue(int n_args, abi::native_glue_type ngt) -> vec[str] {
239239
} else {
240240
src_off = wstr(5 + (i as int));
241241
}
242-
auto m = vec("movl " + src_off + "(%ebp),%eax",
243-
"movl %eax," + dst_off + "(%esp)");
242+
auto m = ["movl " + src_off + "(%ebp),%eax",
243+
"movl %eax," + dst_off + "(%esp)"];
244244
ret _str::connect(m, "\n\t");
245245
}
246246

@@ -250,24 +250,24 @@ fn native_glue(int n_args, abi::native_glue_type ngt) -> vec[str] {
250250
start()
251251
+ save_callee_saves_with_cfi()
252252

253-
+ vec("movl %esp, %ebp # ebp = rust_sp")
254-
+ vec(".cfi_def_cfa_register %ebp")
253+
+ ["movl %esp, %ebp # ebp = rust_sp"]
254+
+ [".cfi_def_cfa_register %ebp"]
255255

256256
+ store_esp_to_rust_sp_second_arg()
257257
+ load_esp_from_runtime_sp_second_arg()
258258

259-
+ vec("subl $" + wstr(n_args) + ", %esp # esp -= args",
260-
"andl $~0xf, %esp # align esp down")
259+
+ ["subl $" + wstr(n_args) + ", %esp # esp -= args",
260+
"andl $~0xf, %esp # align esp down"]
261261

262262
+ _vec::init_fn[str](carg, (n_args) as uint)
263263

264-
+ vec("movl %edx, %edi # save task from edx to edi",
264+
+ ["movl %edx, %edi # save task from edx to edi",
265265
"call *%ecx # call *%ecx",
266-
"movl %edi, %edx # restore edi-saved task to edx")
266+
"movl %edi, %edx # restore edi-saved task to edx"]
267267

268268
+ load_esp_from_rust_sp_second_arg()
269269
+ restore_callee_saves()
270-
+ vec("ret")
270+
+ ["ret"]
271271
+ end();
272272

273273
}
@@ -305,13 +305,13 @@ fn get_module_asm() -> str {
305305
auto prefix = get_symbol_prefix();
306306

307307
auto glues =
308-
vec(decl_glue(align, prefix,
308+
[decl_glue(align, prefix,
309309
abi::activate_glue_name(),
310310
rust_activate_glue()),
311311

312312
decl_glue(align, prefix,
313313
abi::yield_glue_name(),
314-
rust_yield_glue()))
314+
rust_yield_glue())]
315315

316316
+ _vec::init_fn[str](bind decl_native_glue(align, prefix,
317317
abi::ngt_rust, _), (abi::n_native_glues + 1) as uint)

0 commit comments

Comments
 (0)