Skip to content

Commit 053b3b2

Browse files
committed
---
yaml --- r: 6358 b: refs/heads/master c: dd275cd h: refs/heads/master v: v3
1 parent 9ffb1be commit 053b3b2

File tree

6 files changed

+227
-197
lines changed

6 files changed

+227
-197
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
---
2-
refs/heads/master: f9231e932c6b6e613c54a977aafd658382992525
2+
refs/heads/master: dd275cd749fb33e272004cd946eff18ec4d10281

trunk/src/comp/middle/trans.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5724,7 +5724,7 @@ fn register_native_fn(ccx: @crate_ctxt, sp: span, _path: [str], name: str,
57245724
ast::native_abi_rust_intrinsic. {
57255725
let num_ty_param = native_fn_ty_param_count(ccx, id);
57265726
let fn_type = native_fn_wrapper_type(ccx, sp, num_ty_param, fn_type);
5727-
let ri_name = "rust_intrinsic_2_" + name;
5727+
let ri_name = "rust_intrinsic_" + name;
57285728
let llnativefn = get_extern_fn(ccx.externs, ccx.llmod, ri_name,
57295729
lib::llvm::LLVMCCallConv, fn_type);
57305730
ccx.item_ids.insert(id, llnativefn);

trunk/src/rt/arch/x86_64/morestack.S

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
#if defined(__APPLE__) || defined(_WIN32)
99
#define RUST_NEW_STACK _rust_new_stack
1010
#define RUST_DEL_STACK _rust_del_stack
11-
#define MORESTACK ___morestack
11+
#define MORESTACK __morestack
1212
#else
1313
#define RUST_NEW_STACK rust_new_stack
1414
#define RUST_DEL_STACK rust_del_stack

trunk/src/rt/intrinsics/intrinsics.cpp

Lines changed: 36 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ extern "C" CDECL void
1616
rust_task_sleep(size_t time_in_us);
1717

1818
extern "C" void
19-
rust_intrinsic_2_vec_len(size_t *retptr,
19+
rust_intrinsic_vec_len(size_t *retptr,
2020
void *env,
2121
type_desc *ty,
2222
rust_vec **vp)
@@ -25,7 +25,7 @@ rust_intrinsic_2_vec_len(size_t *retptr,
2525
}
2626

2727
extern "C" void
28-
rust_intrinsic_2_ptr_offset(void **retptr,
28+
rust_intrinsic_ptr_offset(void **retptr,
2929
void *env,
3030
type_desc *ty,
3131
void *ptr,
@@ -35,7 +35,7 @@ rust_intrinsic_2_ptr_offset(void **retptr,
3535
}
3636

3737
extern "C" void
38-
rust_intrinsic_2_cast(void *retptr,
38+
rust_intrinsic_cast(void *retptr,
3939
void *env,
4040
type_desc *t1,
4141
type_desc *t2,
@@ -51,91 +51,97 @@ rust_intrinsic_2_cast(void *retptr,
5151
}
5252

5353
extern "C" void
54-
rust_intrinsic_2_addr_of(void **retptr,
54+
rust_intrinsic_addr_of(void **retptr,
5555
void *env,
5656
type_desc *ty,
5757
void *valptr) {
5858
*retptr = valptr;
5959
}
6060

6161
extern "C" void
62-
rust_intrinsic_2_recv(void **retptr,
62+
rust_intrinsic_recv(void **retptr,
6363
void *env,
6464
type_desc *ty,
6565
rust_port *port) {
6666
port_recv((uintptr_t*)retptr, port);
6767
}
6868

6969
extern "C" void
70-
rust_intrinsic_2_get_type_desc(void **retptr,
70+
rust_intrinsic_get_type_desc(void **retptr,
7171
void *env,
7272
type_desc* ty) {
7373
*(type_desc**)retptr = ty;
7474
}
7575

7676
extern "C" void
77-
rust_intrinsic_2_task_sleep(void **retptr,
77+
rust_intrinsic_task_sleep(void **retptr,
7878
void *env,
7979
size_t time_in_us) {
8080
rust_task_sleep(time_in_us);
8181
}
8282

83+
8384
extern "C" void
84-
rust_intrinsic_vec_len(void *task,
85-
size_t *retptr,
86-
type_desc *ty,
87-
rust_vec **vp)
85+
rust_intrinsic_2_vec_len(size_t *retptr,
86+
void *env,
87+
type_desc *ty,
88+
rust_vec **vp)
8889
{
89-
rust_intrinsic_2_vec_len(retptr, NULL, ty, vp);
90+
*retptr = (*vp)->fill / ty->size;
9091
}
9192

9293
extern "C" void
93-
rust_intrinsic_ptr_offset(void *task,
94-
void **retptr,
94+
rust_intrinsic_2_ptr_offset(void **retptr,
95+
void *env,
9596
type_desc *ty,
9697
void *ptr,
9798
uintptr_t count)
9899
{
99-
rust_intrinsic_2_ptr_offset(retptr, NULL, ty, ptr, count);
100+
*retptr = &((uint8_t *)ptr)[ty->size * count];
100101
}
101102

102103
extern "C" void
103-
rust_intrinsic_cast(void *task,
104-
void *retptr,
104+
rust_intrinsic_2_cast(void *retptr,
105+
void *env,
105106
type_desc *t1,
106107
type_desc *t2,
107108
void *src)
108109
{
109-
rust_intrinsic_2_cast(retptr, NULL, t1, t2, src);
110+
if (t1->size != t2->size) {
111+
upcall_fail("attempt to cast values of differing sizes",
112+
__FILE__, __LINE__);
113+
return;
114+
}
115+
116+
memmove(retptr, src, t1->size);
110117
}
111118

112119
extern "C" void
113-
rust_intrinsic_addr_of(void *task,
114-
void **retptr,
120+
rust_intrinsic_2_addr_of(void **retptr,
121+
void *env,
115122
type_desc *ty,
116123
void *valptr) {
117-
rust_intrinsic_2_addr_of(retptr, NULL, ty, valptr);
124+
*retptr = valptr;
118125
}
119126

120127
extern "C" void
121-
rust_intrinsic_recv(void *task,
122-
void **retptr,
128+
rust_intrinsic_2_recv(void **retptr,
129+
void *env,
123130
type_desc *ty,
124131
rust_port *port) {
125-
rust_intrinsic_2_recv(retptr, NULL, ty, port);
132+
port_recv((uintptr_t*)retptr, port);
126133
}
127134

128135
extern "C" void
129-
rust_intrinsic_get_type_desc(void *task,
130-
void **retptr,
136+
rust_intrinsic_2_get_type_desc(void **retptr,
137+
void *env,
131138
type_desc* ty) {
132-
rust_intrinsic_2_get_type_desc(retptr, NULL, ty);
139+
*(type_desc**)retptr = ty;
133140
}
134141

135142
extern "C" void
136-
rust_intrinsic_task_sleep(void *task,
137-
void **retptr,
143+
rust_intrinsic_2_task_sleep(void **retptr,
144+
void *env,
138145
size_t time_in_us) {
139146
rust_task_sleep(time_in_us);
140147
}
141-

0 commit comments

Comments
 (0)