tested ok byteCode_getTotleSize

This commit is contained in:
lyon1998 2022-03-11 17:08:12 +08:00
parent 716abf833c
commit a4cd654b45
5 changed files with 26 additions and 23 deletions

View File

@ -31,7 +31,11 @@
"datastack.h": "c",
"dataqueueobj.h": "c",
"datastring.h": "c",
"datalink.h": "c"
"datalink.h": "c",
"array": "c",
"string_view": "c",
"initializer_list": "c",
"utility": "c"
},
"python.formatting.provider": "autopep8"
}

View File

@ -773,15 +773,12 @@ TEST(ByteCodeUnit, base) {
ByteCodeUnit bu = {
.deepth = 0,
.isNewLine_instruct = 0,
.data_size = 0,
};
byteCodeUnit_setDataSize(&bu, 11);
byteCodeUnit_setBlockDeepth(&bu, 2);
byteCodeUnit_setIsNewLine(&bu, 1);
byteCodeUnit_setInvokeDeepth(&bu, 3);
byteCodeUnit_setInstruct(&bu, (Instruct)4);
EXPECT_EQ(byteCodeUnit_getDataSize(&bu), 11);
EXPECT_EQ(byteCodeUnit_getBlockDeepth(&bu), 2);
EXPECT_EQ(byteCodeUnit_getIsNewLine(&bu), 1);
EXPECT_EQ(byteCodeUnit_getInvokeDeepth(&bu), 3);
@ -790,9 +787,11 @@ TEST(ByteCodeUnit, base) {
TEST(ByteCodeUnit, new_) {
char data[] = "test";
ByteCodeUnit* bu_p = New_byteCodeUnit(strGetSize(data) + 1);
ByteCodeUnit* bu_p = New_byteCodeUnit(strGetSize(data));
byteCodeUnit_setData(bu_p, data);
EXPECT_STREQ(byteCodeUnit_getData(bu_p), (char*)"test");
EXPECT_EQ(byteCodeUnit_getTotleSize(bu_p), 8);
EXPECT_EQ(byteCodeUnit_getTotleSize_withDataSize(strGetSize(data)), 8);
byteCodeUnit_deinit(bu_p);
EXPECT_EQ(pikaMemNow(), 0);
}

View File

@ -839,11 +839,11 @@ exit:
}
ByteCodeUnit* New_byteCodeUnit(uint8_t data_size) {
ByteCodeUnit* self = pikaMalloc(sizeof(ByteCodeUnit) + data_size);
byteCodeUnit_setDataSize(self, data_size);
ByteCodeUnit* self =
pikaMalloc(byteCodeUnit_getTotleSize_withDataSize(data_size));
return self;
}
void byteCodeUnit_deinit(ByteCodeUnit* self) {
pikaFree(self, sizeof(ByteCodeUnit) + byteCodeUnit_getDataSize(self));
pikaFree(self, (byteCodeUnit_getTotleSize(self)));
}

View File

@ -38,7 +38,6 @@ enum Instruct {
typedef struct ByteCodeUnit_t {
uint8_t deepth;
uint8_t isNewLine_instruct;
uint8_t data_size;
uint8_t data[];
} ByteCodeUnit;
@ -47,7 +46,7 @@ VMParameters* pikaVM_runAsm(PikaObj* self, char* pikaAsm);
#define byteCodeUnit_getBlockDeepth(self) (((self)->deepth) & 0x0F)
#define byteCodeUnit_getInvokeDeepth(self) (((self)->deepth) >> 4)
#define byteCodeUnit_getDataSize(self) ((self)->data_size)
#define byteCodeUnit_getDataSize(self) (strGetSize((char*)(self)->data))
#define byteCodeUnit_getData(self) (char*)((self)->data)
#define byteCodeUnit_getInstruct(self) ((self)->isNewLine_instruct & 0x7F)
#define byteCodeUnit_getIsNewLine(self) ((self)->isNewLine_instruct >> 7)
@ -62,27 +61,28 @@ VMParameters* pikaVM_runAsm(PikaObj* self, char* pikaAsm);
((self)->deepth) |= ((0x0F & val) << 4); \
} while (0)
#define byteCodeUnit_setDataSize(self, val) \
do { \
((self)->data_size) = val; \
#define byteCodeUnit_setData(self, val) \
do { \
__platform_memcpy((self)->data, val, strGetSize(val) + 1); \
} while (0)
#define byteCodeUnit_setData(self, val) \
do { \
__platform_memcpy((self)->data, val, byteCodeUnit_getDataSize(self)); \
} while (0)
#define byteCodeUnit_setInstruct(self, val) \
do { \
#define byteCodeUnit_setInstruct(self, val) \
do { \
((self)->isNewLine_instruct) |= (0x7F & val); \
} while (0)
#define byteCodeUnit_setIsNewLine(self, val) \
do { \
#define byteCodeUnit_setIsNewLine(self, val) \
do { \
((self)->isNewLine_instruct) |= ((0x01 & val) << 7); \
} while (0)
ByteCodeUnit* New_byteCodeUnit(uint8_t data_size);
void byteCodeUnit_deinit(ByteCodeUnit* self);
#define __get_alined_size(size) (((((size)-1) / 4) + 1) * 4)
#define byteCodeUnit_getTotleSize_withDataSize(data_size) \
(__get_alined_size(sizeof(ByteCodeUnit) + data_size + 1))
#define byteCodeUnit_getTotleSize(self) \
(byteCodeUnit_getTotleSize_withDataSize(byteCodeUnit_getDataSize(self)))
#endif

View File

@ -35,7 +35,7 @@ void* pikaMalloc(uint32_t size) {
if (0 != __is_locked_pikaMemory()) {
__platform_wait();
}
//! if you unsure about the __impl_pikaMalloc, uncomment this to force alignment
#if 0
/* force alignment to avoid unaligned access */