aboutsummaryrefslogtreecommitdiff
path: root/src/rt/rust_internal.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/rt/rust_internal.h')
-rw-r--r--src/rt/rust_internal.h41
1 files changed, 14 insertions, 27 deletions
diff --git a/src/rt/rust_internal.h b/src/rt/rust_internal.h
index a89144d7..d6618873 100644
--- a/src/rt/rust_internal.h
+++ b/src/rt/rust_internal.h
@@ -10,6 +10,7 @@
#include <stdlib.h>
#include <stdint.h>
#include <inttypes.h>
+#include <stdarg.h>
#include <stdio.h>
#include <string.h>
@@ -38,19 +39,22 @@ extern "C" {
#error "Platform not supported."
#endif
+#include "sync/sync.h"
+#include "sync/timer.h"
#include "sync/condition_variable.h"
#ifndef __i386__
#error "Target CPU not supported."
#endif
-#define I(dom, e) ((e) ? (void)0 : \
- (dom)->srv->fatal(#e, __FILE__, __LINE__))
-#define W(dom, e, s) ((e) ? (void)0 : \
- (dom)->srv->warning(#e " : " #s, __FILE__, __LINE__))
+#define I(dom, e) ((e) ? (void)0 : \
+ (dom)->srv->fatal(#e, __FILE__, __LINE__, ""))
-#define A(dom, e, s) ((e) ? (void)0 : \
- (dom)->srv->fatal(#e " : " #s, __FILE__, __LINE__))
+#define W(dom, e, s, ...) ((e) ? (void)0 : \
+ (dom)->srv->warning(#e, __FILE__, __LINE__, s, ## __VA_ARGS__))
+
+#define A(dom, e, s, ...) ((e) ? (void)0 : \
+ (dom)->srv->fatal(#e, __FILE__, __LINE__, s, ## __VA_ARGS__))
struct rust_task;
struct rust_port;
@@ -75,7 +79,7 @@ template <typename T>
struct
rc_base
{
- size_t ref_count;
+ intptr_t ref_count;
void ref() {
++ref_count;
@@ -151,6 +155,7 @@ public:
T *& operator[](size_t offset);
void push(T *p);
T *pop();
+ T *peek();
void trim(size_t fill);
void swap_delete(T* p);
};
@@ -161,32 +166,14 @@ template <typename T> inline T
check_null(rust_dom *dom, T value, char const *expr,
char const *file, size_t line) {
if (value == NULL) {
- dom->srv->fatal(expr, file, line);
+ dom->srv->fatal(expr, file, line, "is null");
}
return value;
}
#define CHECK_NULL(dom, e) (check_null(dom, e, #e, __FILE__, __LINE__))
-inline void *operator new(size_t sz, void *mem) {
- return mem;
-}
-
-inline void *operator new(size_t sz, rust_dom *dom) {
- return dom->malloc(sz);
-}
-
-inline void *operator new[](size_t sz, rust_dom *dom) {
- return dom->malloc(sz);
-}
-
-inline void *operator new(size_t sz, rust_dom &dom) {
- return dom.malloc(sz);
-}
-
-inline void *operator new[](size_t sz, rust_dom &dom) {
- return dom.malloc(sz);
-}
+#include "memory.h"
struct
rust_timer