Eable post-MVP feature wasm-c-api (#315)

This commit is contained in:
lum1n0us
2020-07-23 16:54:13 +08:00
committed by GitHub
parent 32b2943369
commit 08d01b65c5
26 changed files with 4405 additions and 39 deletions

View File

@ -15,6 +15,7 @@
#include "bh_list.h"
#include "bh_log.h"
#include "bh_queue.h"
#include "bh_vector.h"
#include "runtime_timer.h"

View File

@ -27,7 +27,7 @@ extend_vector(Vector *vector, uint32 length)
{
uint8 *data;
if (length <= vector->max_elements)
if (length <= vector->max_elems)
return true;
if (length < vector->size_elem * 3 / 2)
@ -37,10 +37,10 @@ extend_vector(Vector *vector, uint32 length)
return false;
}
memcpy(data, vector->data, vector->size_elem * vector->max_elements);
memcpy(data, vector->data, vector->size_elem * vector->max_elems);
BH_FREE(vector->data);
vector->data = data;
vector->max_elements = length;
vector->max_elems = length;
return true;
}
@ -62,8 +62,8 @@ bh_vector_init(Vector *vector, uint32 init_length, uint32 size_elem)
}
vector->size_elem = size_elem;
vector->max_elements = init_length;
vector->num_elements = 0;
vector->max_elems = init_length;
vector->num_elems = 0;
return true;
}
@ -75,7 +75,7 @@ bh_vector_set(Vector *vector, uint32 index, const void *elem_buf)
return false;
}
if (index >= vector->num_elements) {
if (index >= vector->num_elems) {
LOG_ERROR("Set vector elem failed: invalid elem index.\n");
return false;
}
@ -92,7 +92,7 @@ bool bh_vector_get(const Vector *vector, uint32 index, void *elem_buf)
return false;
}
if (index >= vector->num_elements) {
if (index >= vector->num_elems) {
LOG_ERROR("Get vector elem failed: invalid elem index.\n");
return false;
}
@ -112,24 +112,24 @@ bool bh_vector_insert(Vector *vector, uint32 index, const void *elem_buf)
return false;
}
if (index >= vector->num_elements) {
if (index >= vector->num_elems) {
LOG_ERROR("Insert vector elem failed: invalid elem index.\n");
return false;
}
if (!extend_vector(vector, vector->num_elements + 1)) {
if (!extend_vector(vector, vector->num_elems + 1)) {
LOG_ERROR("Insert vector elem failed: extend vector failed.\n");
return false;
}
p = vector->data + vector->size_elem * vector->num_elements;
for (i = vector->num_elements - 1; i > index; i--) {
p = vector->data + vector->size_elem * vector->num_elems;
for (i = vector->num_elems - 1; i > index; i--) {
memcpy(p, p - vector->size_elem, vector->size_elem);
p -= vector->size_elem;
}
memcpy(p, elem_buf, vector->size_elem);
vector->num_elements++;
vector->num_elems++;
return true;
}
@ -140,14 +140,14 @@ bool bh_vector_append(Vector *vector, const void *elem_buf)
return false;
}
if (!extend_vector(vector, vector->num_elements + 1)) {
if (!extend_vector(vector, vector->num_elems + 1)) {
LOG_ERROR("Append ector elem failed: extend vector failed.\n");
return false;
}
memcpy(vector->data + vector->size_elem * vector->num_elements,
memcpy(vector->data + vector->size_elem * vector->num_elems,
elem_buf, vector->size_elem);
vector->num_elements++;
vector->num_elems++;
return true;
}
@ -162,7 +162,7 @@ bh_vector_remove(Vector *vector, uint32 index, void *old_elem_buf)
return false;
}
if (index >= vector->num_elements) {
if (index >= vector->num_elems) {
LOG_ERROR("Remove vector elem failed: invalid elem index.\n");
return false;
}
@ -173,19 +173,19 @@ bh_vector_remove(Vector *vector, uint32 index, void *old_elem_buf)
memcpy(old_elem_buf, p, vector->size_elem);
}
for (i = index; i < vector->num_elements - 1; i++) {
for (i = index; i < vector->num_elems - 1; i++) {
memcpy(p, p + vector->size_elem, vector->size_elem);
p += vector->size_elem;
}
vector->num_elements--;
vector->num_elems--;
return true;
}
uint32
bh_vector_size(const Vector *vector)
{
return vector ? vector->num_elements : 0;
return vector ? vector->num_elems : 0;
}
bool

View File

@ -15,14 +15,14 @@ extern "C" {
#define DEFAULT_VECTOR_INIT_SIZE 8
typedef struct Vector {
/* size of each element */
uint32 size_elem;
/* max element number */
uint32 max_elements;
/* current element num */
uint32 num_elements;
size_t max_elems;
/* vector data allocated */
uint8 *data;
/* current element num */
size_t num_elems;
/* size of each element */
size_t size_elem;
} Vector;
/**