Skip to content

Commit 39f313a

Browse files
committed
better
1 parent 525ebf9 commit 39f313a

19 files changed

Lines changed: 1114 additions & 765 deletions

CMakeLists.txt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -646,9 +646,7 @@ SET(RUNTIME_DEFAULT_MODULES
646646
src/builtin/module_builtin_array.cpp
647647
src/builtin/module_builtin_ast_serialize.cpp
648648
src/builtin/module_builtin_dasbind.cpp
649-
src/builtin/module_builtin_debugger.cpp
650649
src/builtin/module_builtin_fio.cpp
651-
src/builtin/module_builtin_jobque.cpp
652650
src/builtin/module_builtin_math.cpp
653651
src/builtin/module_builtin_misc_types.cpp
654652
src/builtin/module_builtin_runtime.cpp
@@ -659,7 +657,6 @@ SET(RUNTIME_DEFAULT_MODULES
659657
src/builtin/module_builtin_vector.cpp
660658
src/builtin/module_builtin_vector_ctor.cpp
661659
src/builtin/module_file_access.cpp
662-
src/builtin/module_jit.cpp
663660
)
664661
LIST(APPEND RUNTIME_MODULES ${RUNTIME_DEFAULT_MODULES})
665662

@@ -678,8 +675,11 @@ src/builtin/module_builtin_ast_annotations_2.cpp
678675
src/builtin/module_builtin_ast_annotations_3.cpp
679676
src/builtin/module_builtin_ast_adapters.cpp
680677
src/builtin/module_builtin_ast.h
678+
src/builtin/module_builtin_debugger.cpp
679+
src/builtin/module_builtin_jobque.cpp
681680
src/builtin/module_builtin_uriparser.h
682681
src/builtin/module_builtin_network.cpp
682+
src/builtin/module_jit.cpp
683683
)
684684
list(SORT BUILTIN_SRC)
685685
SOURCE_GROUP_FILES("module builtin" BUILTIN_SRC)
@@ -702,6 +702,7 @@ src/simulate/simulate_exceptions.cpp
702702
src/simulate/simulate_instrument.cpp
703703

704704
src/runtime/context.cpp
705+
src/runtime/jit_runtime.cpp
705706
src/simulate/json_scan.cpp
706707
src/simulate/json_print.cpp
707708

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Iterates over all registered dynamic modules, invoking the block with the shared library path, C++ module name, and daslang module name for each entry.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Iterates over all registered native path prefix mappings, invoking the block with the module name, source prefix, and destination prefix for each entry.

include/daScript/ast/ast.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1249,6 +1249,7 @@ namespace das
12491249
das_hash_map<string,Type> options; // options
12501250
uint64_t cumulativeHash = 0; // hash of all mangled names in this module (for builtin modules)
12511251
string name;
1252+
string cppClassName; // C++ class name (e.g. "Module_Math"), set by REGISTER_MODULE
12521253
uint64_t nameHash = 0;
12531254
string fileName; // where the module was found, if not built-in
12541255
union {
@@ -1268,15 +1269,21 @@ namespace das
12681269
};
12691270
private:
12701271
Module * next = nullptr;
1272+
friend bool appendBuiltinModuleContent ( Module* mod, const string & modName, const unsigned char * const str, unsigned int str_len );
12711273
unique_ptr<FileInfo> ownFileInfo;
12721274
FileAccessPtr promotedAccess;
12731275
};
1276+
bool appendBuiltinModuleContent ( Module* mod, const string & modName, const unsigned char * const str, unsigned int str_len );
12741277

12751278
#define REGISTER_MODULE(ClassName) \
12761279
DAS_EXPORT_DLL das::Module * register_##ClassName () { \
12771280
das::daScriptEnvironment::ensure(); \
12781281
ClassName * module_##ClassName = new ClassName(); \
1282+
module_##ClassName->cppClassName = #ClassName; \
12791283
return module_##ClassName; \
1284+
} \
1285+
extern "C" DAS_EXPORT_DLL das::Module * jit_register_##ClassName () { \
1286+
return register_##ClassName(); \
12801287
}
12811288

12821289
#if DAS_ENABLE_DLL
@@ -1286,6 +1293,7 @@ namespace das
12861293
if ( buildId != DAS_BUILD_ID ) return nullptr; \
12871294
das::daScriptEnvironment::ensure(); \
12881295
ClassName * module_##ClassName = new ClassName(); \
1296+
module_##ClassName->cppClassName = #ClassName; \
12891297
return module_##ClassName; \
12901298
} \
12911299
}
@@ -1301,7 +1309,11 @@ namespace das
13011309
DAS_EXPORT_DLL das::Module * register_##ClassName () { \
13021310
das::daScriptEnvironment::ensure(); \
13031311
Namespace::ClassName * module_##ClassName = new Namespace::ClassName(); \
1312+
module_##ClassName->cppClassName = #ClassName; \
13041313
return module_##ClassName; \
1314+
} \
1315+
extern "C" DAS_EXPORT_DLL das::Module * jit_register_##ClassName () { \
1316+
return register_##ClassName(); \
13051317
}
13061318

13071319
using module_pull_t = das::Module*(*)();

include/daScript/simulate/aot_builtin_jit.h

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,43 @@
33
#include "daScript/misc/vectypes.h"
44
#include "daScript/misc/arraytype.h"
55
#include "daScript/misc/smart_ptr.h"
6+
#include "daScript/simulate/simulate.h"
67

78
namespace das {
89

10+
11+
typedef vec4f ( * JitFunction ) ( Context * , vec4f *, void * );
12+
13+
struct SimNode_Jit : SimNode {
14+
SimNode_Jit ( const LineInfo & at, JitFunction eval )
15+
: SimNode(at), func(eval) {}
16+
virtual SimNode * visit ( SimVisitor & vis ) override;
17+
DAS_EVAL_ABI virtual vec4f eval ( Context & context ) override;
18+
virtual bool rtti_node_isJit() const override { return true; }
19+
JitFunction func = nullptr;
20+
// saved original node
21+
SimNode * saved_code = nullptr;
22+
bool saved_aot = false;
23+
void * saved_aot_function = nullptr;
24+
};
25+
26+
struct SimNode_JitBlock;
27+
28+
struct JitBlock : Block {
29+
vec4f node[10];
30+
};
31+
32+
struct SimNode_JitBlock : SimNode_ClosureBlock {
33+
SimNode_JitBlock ( const LineInfo & at, JitBlockFunction eval, Block * bptr, uint64_t ad )
34+
: SimNode_ClosureBlock(at,false,false,ad), func(eval), blockPtr(bptr) {}
35+
virtual SimNode * visit ( SimVisitor & vis ) override;
36+
DAS_EVAL_ABI virtual vec4f eval ( Context & context ) override;
37+
JitBlockFunction func = nullptr;
38+
Block * blockPtr = nullptr;
39+
};
40+
static_assert(sizeof(SimNode_JitBlock)<=sizeof(JitBlock().node),"jit block node must fit under node size");
41+
42+
943
class Context;
1044
struct LineInfo;
1145
struct LineInfoArg;

modules/dasAudio/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ IF ((NOT DAS_AUDIO_INCLUDED) AND ((NOT ${DAS_AUDIO_DISABLED}) OR (NOT DEFINED DA
5252

5353
SETUP_AUDIO(libDasModuleAudio)
5454
SETUP_AUDIO(dasModuleAudio)
55+
# audio depends on rtti module => required libDaScriptDyn.
56+
TARGET_LINK_LIBRARIES(dasModuleAudio PRIVATE libDaScriptDyn)
5557

5658
# HRTF FFT convolution — compile minfft.c directly (avoids cross-DLL static lib issues on Windows)
5759
SET(DAS_MINFFT_INCLUDE ${PROJECT_SOURCE_DIR}/modules/dasMinfft/minfft)

modules/dasHV/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ IF ((NOT DAS_HV_INCLUDED) AND ((NOT ${DAS_HV_DISABLED}) OR (NOT DEFINED DAS_HV_D
104104

105105
ADD_MODULE_CPP(HV)
106106
ADD_MODULE_LIB(libDasModuleHV dasModuleHV ${DAS_HV_MODULE_SRC} ${DAS_HV_MODULE_PLATFORM_SRC})
107+
TARGET_LINK_LIBRARIES(dasModuleHV PRIVATE libDaScriptDyn)
107108
MACRO(SETUP_HV lib)
108109
TARGET_INCLUDE_DIRECTORIES(${lib} PRIVATE "${DAS_HV_DIR}/hv/include")
109110
TARGET_LINK_LIBRARIES(${lib} PRIVATE ${HV_LIBRARIES} ${OPENSSL_LIBRARIES_FILES})

modules/dasHV/src/dasHV.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#include "daScript/misc/platform.h"
2+
#include "daScript/daScriptModule.h"
23

34
#include <future>
45

@@ -15,6 +16,12 @@ IMPLEMENT_EXTERNAL_TYPE_FACTORY(HttpResponse,HttpResponse)
1516
IMPLEMENT_EXTERNAL_TYPE_FACTORY(HttpContext,hv::HttpContext)
1617
IMPLEMENT_EXTERNAL_TYPE_FACTORY(HttpResponseWriter,hv::HttpResponseWriter)
1718

19+
void addDependencies() {
20+
if (!das::Module::require("rtti_core")) {
21+
NEED_MODULE(Module_Rtti);
22+
}
23+
}
24+
1825
namespace das {
1926

2027
class Enumeration_ws_opcode : public das::Enumeration {
@@ -1125,6 +1132,7 @@ class Module_HV : public Module {
11251132
ModuleLibrary lib;
11261133
lib.addModule(this);
11271134
lib.addBuiltInModule();
1135+
addDependencies();
11281136
lib.addModule(Module::require("rtti_core"));
11291137
addEnumeration(make_smart<Enumeration_ws_opcode>());
11301138
addEnumeration(make_smart<Enumeration_ws_session_type>());

0 commit comments

Comments
 (0)