Parcourir la source

lib_link_bytecode test ok

lyon il y a 3 ans
Parent
commit
09fa1e5a22
5 fichiers modifiés avec 22 ajouts et 11 suppressions
  1. 0 1
      docker/run.sh
  2. 1 1
      port/linux/CMakeLists.txt
  3. 11 4
      port/linux/test/compile-test.cpp
  4. 8 1
      src/pikaCompiler.c
  5. 2 4
      src/pikaCompiler.h

+ 0 - 1
docker/run.sh

@@ -2,7 +2,6 @@ DOCKER_NAME=pikadev
 
 docker rm $DOCKER_NAME -f
 docker run -it --name $DOCKER_NAME \
---restart=always \
 -v $PWD/..:/usr/src/pikascript \
 -w /usr/src/pikascript/port/linux \
 $DOCKER_NAME \

+ 1 - 1
port/linux/CMakeLists.txt

@@ -1,5 +1,5 @@
 cmake_minimum_required(VERSION 3.0.0)
-add_compile_options(-Wall -Wextra -Wno-unused-parameter -Wno-sign-conversion)
+add_compile_options(-Wall -Wextra -Wno-unused-parameter -Wno-sign-conversion -Wno-write-strings)
 OPTION(PIKA_CONFIG_ENABLE "pika config enable" OFF)
 IF(PIKA_CONFIG_ENABLE)
     ADD_DEFINITIONS(-DPIKA_CONFIG_ENABLE)

+ 11 - 4
port/linux/test/compile-test.cpp

@@ -7,15 +7,13 @@ extern "C" {
 #include "dataArgs.h"
 #include "dataMemory.h"
 #include "dataStrs.h"
+#include "pikaCompiler.h"
 #include "pikaScript.h"
 #include "pika_config_gtest.h"
-#include "pikaCompiler.h"
 }
 
 extern char log_buff[LOG_BUFF_MAX][LOG_SIZE];
 
-
-
 TEST(compiler, file) {
     char* lines =(char*)
         "len = __calls.len()\n"
@@ -320,7 +318,6 @@ TEST(compiler, import_bf2) {
     EXPECT_EQ(pikaMemNow(), 0);
 }
 
-
 TEST(compiler, file1) {
     pikaCompileFile((char*)"test/python/main.py");
     EXPECT_EQ(pikaMemNow(), 0);
@@ -336,3 +333,13 @@ TEST(lib, init) {
     PikaLib_deinit(lib);
     EXPECT_EQ(pikaMemNow(), 0);
 }
+
+TEST(lib, lib_link_bytecode) {
+    PikaLib* lib = New_PikaLib();
+    PikaLib_LinkByteCode(lib, "module1", (uint8_t*)0x3344);
+    EXPECT_STREQ(obj_getStr(lib, "index.module1.name"), "module1");
+    EXPECT_EQ((uintptr_t)obj_getPtr(lib, "index.module1.bytecode"), 0x3344);
+    /* deinit */
+    PikaLib_deinit(lib);
+    EXPECT_EQ(pikaMemNow(), 0);
+}

+ 8 - 1
src/pikaCompiler.c

@@ -114,7 +114,9 @@ int pikaCompileFile(char* input_file_name) {
 }
 
 PikaLib* New_PikaLib(void) {
-    return New_TinyObj(NULL);
+    PikaLib* self = New_TinyObj(NULL);
+    obj_newObj(self, "index", "", New_TinyObj);
+    return self;
 }
 
 void PikaLib_deinit(PikaLib* self) {
@@ -122,4 +124,9 @@ void PikaLib_deinit(PikaLib* self) {
 }
 
 void PikaLib_LinkByteCode(PikaLib* self, char* module_name, uint8_t* bytecode) {
+    PikaObj* index_obj = obj_getObj(self, "index");
+    obj_newObj(index_obj, module_name, "", New_TinyObj);
+    PikaObj* module_obj = obj_getObj(index_obj, module_name);
+    obj_setStr(module_obj, "name", module_name);
+    obj_setPtr(module_obj, "bytecode", bytecode);
 }

+ 2 - 4
src/pikaCompiler.h

@@ -1,6 +1,7 @@
 #ifndef __PIKA_COMPILER__H
 #define __PIKA_COMPILER__H
 #include "PikaObj.h"
+#include "stdint.h"
 
 int pikaCompileFile(char* input_file_name);
 int pikaCompileFileWithOutputName(char* output_file_name,
@@ -10,8 +11,5 @@ int pikaCompile(char* output_file_name, char* py_lines);
 typedef PikaObj PikaLib;
 PikaLib* New_PikaLib(void);
 void PikaLib_deinit(PikaLib* self);
-void PikaLib_importByteCodeFrame(PikaLib* self,
-                                 char* module_name,
-                                 ByteCodeFrame* bf);
-
+void PikaLib_LinkByteCode(PikaLib* self, char* module_name, uint8_t* bytecode);
 #endif