Browse Source

Use SHA1 key for machine code cache.

faust
Stephane Letz Andrew Belt 4 years ago
parent
commit
fdb65b847c
1 changed files with 8 additions and 7 deletions
  1. +8
    -7
      src/FaustEngine.cpp

+ 8
- 7
src/FaustEngine.cpp View File

@@ -1,6 +1,8 @@
#include "ScriptEngine.hpp"

#include <faust/dsp/llvm-dsp.h>
#include <faust/dsp/libfaust.h>

#include <iostream>

#define kBufferSize 64
@@ -27,34 +29,33 @@ class FaustEngine : public ScriptEngine {
int run(const std::string& path, const std::string& script) override
{
std::string filename = path.substr(path.find_last_of("/"));
#if defined ARCH_MAC
std::string tempDir = "/private/var/tmp/";
std::string temp_cache = "/private/var/tmp/VCV_" + generateSHA1(script);
#else
std::string tempDir = "";
std::string temp_cache = "" + generateSHA1(script);
#endif
std::string error_msg;
// Try to load the machine code cache
fDSPFactory = readDSPFactoryFromMachineFile(tempDir + filename, "", error_msg);
fDSPFactory = readDSPFactoryFromMachineFile(temp_cache, "", error_msg);
if (!fDSPFactory) {
// Otherwise recompile the DSP
fDSPFactory = createDSPFactoryFromString("FaustDSP", script, 0, NULL, "", error_msg, -1);
if (!fDSPFactory) {
display("ERROR: cannot create Faust factory !");
display("ERROR: cannot create factory !");
return -1;
} else {
// And save the cache
display("Compiling factory finished");
writeDSPFactoryToMachineFile(fDSPFactory, tempDir + filename, "");
writeDSPFactoryToMachineFile(fDSPFactory, temp_cache, "");
}
}
// Create DSP
fDSP = fDSPFactory->createDSPInstance();
if (!fDSP) {
display("ERROR: cannot create Faust instance !");
display("ERROR: cannot create instance !");
return -1;
} else {
display("Created DSP");


Loading…
Cancel
Save