Skip to content

Commit

Permalink
make an EXTZONES namespace
Browse files Browse the repository at this point in the history
  • Loading branch information
nic-donaldson committed Jun 28, 2020
1 parent 5f4304c commit 39d9935
Show file tree
Hide file tree
Showing 6 changed files with 31 additions and 35 deletions.
4 changes: 1 addition & 3 deletions include/EXTZONES.h
Expand Up @@ -31,13 +31,11 @@ struct llvm_zone_stack
llvm_zone_stack* tail;
};



extern THREAD_LOCAL llvm_zone_stack* tls_llvm_zone_stack;
extern THREAD_LOCAL uint64_t tls_llvm_zone_stacksize;

namespace extemp {
namespace EXTLLVM {
namespace EXTZONES {
const unsigned LLVM_ZONE_ALIGN = 32; // MUST BE POWER OF 2!
const unsigned LLVM_ZONE_ALIGNPAD = LLVM_ZONE_ALIGN - 1;

Expand Down
34 changes: 17 additions & 17 deletions src/AudioDevice.cpp
Expand Up @@ -206,7 +206,7 @@ void* audioCallbackMT(void* Args)
//printf("Starting RT Audio Process\n");
unsigned idx = uintptr_t(Args);
auto cache_wrapper(AudioDevice::I()->getDSPWrapper());
auto zone(extemp::EXTLLVM::llvm_peek_zone_stack());
auto zone(extemp::EXTZONES::llvm_peek_zone_stack());
SAMPLE* outbuf = AudioDevice::I()->getDSPMTOutBuffer();
SAMPLE* outbufs[2];
outbufs[0] = outbuf + UNIV::CHANNELS * UNIV::NUM_FRAMES * idx * 2;
Expand Down Expand Up @@ -243,17 +243,17 @@ void* audioCallbackMT(void* Args)
if (UNIV::IN_CHANNELS==UNIV::CHANNELS) {
for(uint64_t k=0; k<UNIV::CHANNELS; k++) {
outbuf[iout+k] = audio_sanity(cache_wrapper(zone, (void*)closure, (SAMPLE)inbuf[iin+k], (i+LTIME),k,&(indata[0])));
extemp::EXTLLVM::llvm_zone_reset(zone);
extemp::EXTZONES::llvm_zone_reset(zone);
}
} else if (UNIV::IN_CHANNELS==1) {
for(uint64_t k=0; k<UNIV::CHANNELS; k++) {
outbuf[iout+k] = audio_sanity(cache_wrapper(zone, (void*)closure, (SAMPLE)inbuf[iin], (i+LTIME),k,&(indata[0])));
extemp::EXTLLVM::llvm_zone_reset(zone);
extemp::EXTZONES::llvm_zone_reset(zone);
}
} else {
for(uint64_t k=0; k<UNIV::CHANNELS; k++) {
outbuf[iout+k] = audio_sanity(cache_wrapper(zone, (void*)closure, 0.0, (i+LTIME),k,&(indata[0])));
extemp::EXTLLVM::llvm_zone_reset(zone);
extemp::EXTZONES::llvm_zone_reset(zone);
}
}
}
Expand All @@ -278,7 +278,7 @@ void* audioCallbackMTBuf(void* dat) {

dsp_f_ptr_array dsp_wrapper_array = AudioDevice::I()->getDSPWrapperArray();
dsp_f_ptr_array cache_wrapper = dsp_wrapper_array;
llvm_zone_t* zone = extemp::EXTLLVM::llvm_peek_zone_stack();
llvm_zone_t* zone = extemp::EXTZONES::llvm_peek_zone_stack();
float* outbuf = AudioDevice::I()->getDSPMTOutBufferArray();
outbuf = outbuf+(UNIV::CHANNELS*UNIV::NUM_FRAMES*idx);
float* inbuf = AudioDevice::I()->getDSPMTInBufferArray();
Expand All @@ -299,7 +299,7 @@ void* audioCallbackMTBuf(void* dat) {
} // spin
lcount++;
cache_wrapper(zone, reinterpret_cast<void*>(closure), inbuf, outbuf, UNIV::DEVICE_TIME, NULL);
extemp::EXTLLVM::llvm_zone_reset(zone);
extemp::EXTZONES::llvm_zone_reset(zone);
++sThreadDoneCount;
}
return 0;
Expand Down Expand Up @@ -339,7 +339,7 @@ int audioCallback(const void* InputBuffer, void* OutputBuffer, unsigned long Fra
auto dsp_wrapper(AudioDevice::I()->getDSPWrapper());
auto cache_wrapper(dsp_wrapper);
auto closure = *((SAMPLE(**)(SAMPLE, uint64_t, uint64_t,SAMPLE*)) cache_closure);
llvm_zone_t* zone = extemp::EXTLLVM::llvm_peek_zone_stack();
llvm_zone_t* zone = extemp::EXTZONES::llvm_peek_zone_stack();
auto dat(reinterpret_cast<float*>(OutputBuffer));
auto in(reinterpret_cast<const float*>(InputBuffer));
auto time(UNIV::DEVICE_TIME);
Expand All @@ -349,7 +349,7 @@ int audioCallback(const void* InputBuffer, void* OutputBuffer, unsigned long Fra
for (uint64_t k = 0; k < UNIV::CHANNELS; ++k) {
*(dat++) = audio_sanity_f(float(cache_wrapper(zone, reinterpret_cast<void*>(closure), 0.0, time, k,
&dummy)));
extemp::EXTLLVM::llvm_zone_reset(zone);
extemp::EXTZONES::llvm_zone_reset(zone);
}
}
} else if (UNIV::IN_CHANNELS == UNIV::CHANNELS) {
Expand All @@ -358,15 +358,15 @@ int audioCallback(const void* InputBuffer, void* OutputBuffer, unsigned long Fra
for (uint64_t k = 0; k < UNIV::CHANNELS; ++k) {
*(dat++) = audio_sanity_f(float(cache_wrapper(zone, reinterpret_cast<void*>(closure), *(in++),
time, k, indata)));
extemp::EXTLLVM::llvm_zone_reset(zone);
extemp::EXTZONES::llvm_zone_reset(zone);
}
}
} else if (UNIV::IN_CHANNELS == 1) {
for (uint64_t i = 0; i < FramesPerBuffer; ++i, ++time) {
for (uint64_t k = 0; k < UNIV::CHANNELS; k++) {
*(dat++) = audio_sanity_f(float(cache_wrapper(zone, reinterpret_cast<void*>(closure), *in,
time, k, in)));
extemp::EXTLLVM::llvm_zone_reset(zone);
extemp::EXTZONES::llvm_zone_reset(zone);
}
++in;
}
Expand All @@ -378,7 +378,7 @@ int audioCallback(const void* InputBuffer, void* OutputBuffer, unsigned long Fra
for (uint64_t k = 0; k < UNIV::CHANNELS; ++k) {
*(dat++) = audio_sanity_f(float(cache_wrapper(zone, reinterpret_cast<void*>(closure), 0.0,
time, k, &indata[i*UNIV::IN_CHANNELS])));
extemp::EXTLLVM::llvm_zone_reset(zone);
extemp::EXTZONES::llvm_zone_reset(zone);
}
}
}
Expand All @@ -387,11 +387,11 @@ int audioCallback(const void* InputBuffer, void* OutputBuffer, unsigned long Fra
if (AudioDevice::I()->getDSPWrapperArray() && !AudioDevice::I()->getDSPSUMWrapperArray()) { // if true then we must be buffer by buffer
dsp_f_ptr_array cache_wrapper = AudioDevice::I()->getDSPWrapperArray();
auto closure = *((void(**)(float*,float*,uint64_t,void*)) cache_closure);
llvm_zone_t* zone = extemp::EXTLLVM::llvm_peek_zone_stack();
llvm_zone_t* zone = extemp::EXTZONES::llvm_peek_zone_stack();
float* indat = (float*) InputBuffer;
float* outdat = (float*) OutputBuffer;
cache_wrapper(zone, (void*)closure, indat, outdat, UNIV::DEVICE_TIME, UserData);
extemp::EXTLLVM::llvm_zone_reset(zone);
extemp::EXTZONES::llvm_zone_reset(zone);
} else if (AudioDevice::I()->getDSPSUMWrapper()) { // if true then multi threaded sample-by-sample
int numthreads = AudioDevice::I()->getNumThreads();
bool zerolatency = AudioDevice::I()->getZeroLatency();
Expand Down Expand Up @@ -419,7 +419,7 @@ int audioCallback(const void* InputBuffer, void* OutputBuffer, unsigned long Fra
dsp_f_ptr_sum dsp_wrapper = AudioDevice::I()->getDSPSUMWrapper();
dsp_f_ptr_sum cache_wrapper = dsp_wrapper;
auto closure = * ((SAMPLE(**)(SAMPLE*,uint64_t,uint64_t,SAMPLE*)) cache_closure);
llvm_zone_t* zone = extemp::EXTLLVM::llvm_peek_zone_stack();
llvm_zone_t* zone = extemp::EXTZONES::llvm_peek_zone_stack();
bool toggle = AudioDevice::I()->getToggle();
SAMPLE* indats[AudioDevice::MAX_RT_AUDIO_THREADS]; // can't be variable on wi
indats[0] = AudioDevice::I()->getDSPMTOutBuffer();
Expand All @@ -441,7 +441,7 @@ int audioCallback(const void* InputBuffer, void* OutputBuffer, unsigned long Fra
in[jj] = indats[jj][iout+k];
}
dat[iout+k] = audio_sanity_f((float)cache_wrapper(zone, (void*)closure, in, (i+UNIV::DEVICE_TIME),k,nullptr));
extemp::EXTLLVM::llvm_zone_reset(zone);
extemp::EXTZONES::llvm_zone_reset(zone);
}
}
if (!zerolatency) {
Expand Down Expand Up @@ -484,7 +484,7 @@ int audioCallback(const void* InputBuffer, void* OutputBuffer, unsigned long Fra
dsp_f_ptr_sum_array dsp_wrapper = AudioDevice::I()->getDSPSUMWrapperArray();
dsp_f_ptr_sum_array cache_wrapper = dsp_wrapper;
auto closure = *((void(**)(float**,float*,uint64_t,void*)) cache_closure);
llvm_zone_t* zone = extemp::EXTLLVM::llvm_peek_zone_stack();
llvm_zone_t* zone = extemp::EXTZONES::llvm_peek_zone_stack();
//float** indat = (float**)
float* indats[AudioDevice::MAX_RT_AUDIO_THREADS];
float* outdat = (float*) OutputBuffer;
Expand All @@ -493,7 +493,7 @@ int audioCallback(const void* InputBuffer, void* OutputBuffer, unsigned long Fra
indats[jj] = indats[0]+(UNIV::NUM_FRAMES*UNIV::CHANNELS*jj);
}
cache_wrapper(zone, (void*)closure, indats, outdat, UNIV::DEVICE_TIME, UserData);
extemp::EXTLLVM::llvm_zone_reset(zone);
extemp::EXTZONES::llvm_zone_reset(zone);
//printf("main out\n");
} else {
//zero out audiobuffer
Expand Down
6 changes: 3 additions & 3 deletions src/EXTLLVM.cpp
Expand Up @@ -412,7 +412,7 @@ EXPORT closure_address_table* add_address_table(llvm_zone_t* zone, char* name, u
if (alloctype == 1) {
t = reinterpret_cast<closure_address_table*>(malloc(sizeof(struct closure_address_table)));
} else {
t = (struct closure_address_table*) extemp::EXTLLVM::llvm_zone_malloc(zone,sizeof(struct closure_address_table));
t = (struct closure_address_table*) extemp::EXTZONES::llvm_zone_malloc(zone,sizeof(struct closure_address_table));
}
t->id = string_hash(name);
t->name = name;
Expand Down Expand Up @@ -592,7 +592,7 @@ EXPORT const char* llvm_disassemble(const unsigned char* Code, int syntax)

static extemp::CMG DestroyMallocZoneWithDelayCM(
[](extemp::TaskI* Task)->void {
llvm_zone_destroy(static_cast<extemp::Task<llvm_zone_t*>*>(Task)->getArg());
extemp::EXTZONES::llvm_zone_destroy(static_cast<extemp::Task<llvm_zone_t*>*>(Task)->getArg());
});

EXPORT void llvm_destroy_zone_after_delay(llvm_zone_t* Zone, uint64_t Delay)
Expand Down Expand Up @@ -738,7 +738,7 @@ void initLLVM()

// tell LLVM about some built-in functions
extemp::EXTLLVM2::addGlobalMapping("llvm_zone_destroy",
uintptr_t(&llvm_zone_destroy));
uintptr_t(&extemp::EXTZONES::llvm_zone_destroy));
extemp::EXTLLVM2::addGlobalMapping("get_address_offset",
(uint64_t)&get_address_offset);
extemp::EXTLLVM2::addGlobalMapping("string_hash", (uint64_t)&string_hash);
Expand Down
2 changes: 1 addition & 1 deletion src/EXTZONES.cpp
Expand Up @@ -7,7 +7,7 @@ THREAD_LOCAL llvm_zone_stack* tls_llvm_zone_stack = 0;
THREAD_LOCAL uint64_t tls_llvm_zone_stacksize = 0;

namespace extemp {
namespace EXTLLVM {
namespace EXTZONES {

llvm_zone_t* llvm_zone_create(uint64_t size)
{
Expand Down
6 changes: 2 additions & 4 deletions src/SchemeProcess.cpp
Expand Up @@ -87,10 +87,8 @@ static const char TERMINATION_CHAR = 23;
#endif

namespace extemp {
namespace EXTLLVM {

namespace EXTZONES {
llvm_zone_t* llvm_zone_create(uint64_t);

}
}

Expand Down Expand Up @@ -125,7 +123,7 @@ SchemeProcess::SchemeProcess(const std::string& LoadPath, const std::string& Nam
}
m_scheme = scheme_init_new();
m_scheme->m_process = this;
m_defaultZone = extemp::EXTLLVM::llvm_zone_create(50 * 1024 * 1024); // allocate default zone of 50M
m_defaultZone = extemp::EXTZONES::llvm_zone_create(50 * 1024 * 1024); // allocate default zone of 50M
strcpy(m_scheme->name, m_name.c_str());
m_maxDuration = m_scheme->call_default_time;
memset(m_schemeOutportString, 0, SCHEME_OUTPORT_STRING_LENGTH);
Expand Down
14 changes: 7 additions & 7 deletions src/ffi/sys_zone.inc
@@ -1,9 +1,9 @@
static pointer createMallocZone(scheme* Scheme, pointer Args)
{
if (Args == Scheme->NIL) {
return mk_cptr(Scheme, extemp::EXTLLVM::llvm_zone_create(1024 * 100));
return mk_cptr(Scheme, extemp::EXTZONES::llvm_zone_create(1024 * 100));
}
return mk_cptr(Scheme, extemp::EXTLLVM::llvm_zone_create(ivalue(pair_car(Args))));
return mk_cptr(Scheme, extemp::EXTZONES::llvm_zone_create(ivalue(pair_car(Args))));
}

static pointer defaultMallocZone(scheme* Scheme, pointer Args)
Expand All @@ -17,7 +17,7 @@ static pointer destroyMallocZone(scheme* Scheme, pointer Args)
if (pair_cdr(Args) != Scheme->NIL) {
llvm_destroy_zone_after_delay(ptr, ivalue(pair_cadr(Args)));
} else {
extemp::EXTLLVM::llvm_zone_destroy(ptr);
extemp::EXTZONES::llvm_zone_destroy(ptr);
}
return Scheme->T;
}
Expand All @@ -30,23 +30,23 @@ static pointer copyToDefaultZone(scheme* Scheme, pointer Args)
static pointer resetMallocZone(scheme* Scheme, pointer Args)
{
llvm_zone_t* zone = reinterpret_cast<llvm_zone_t*>(cptr_value(pair_car(Args)));
extemp::EXTLLVM::llvm_zone_reset(zone);
extemp::EXTZONES::llvm_zone_reset(zone);
return Scheme->T;
}

static pointer peekMemoryZone(scheme* Scheme, pointer Args)
{
return mk_cptr(Scheme, extemp::EXTLLVM::llvm_peek_zone_stack());
return mk_cptr(Scheme, extemp::EXTZONES::llvm_peek_zone_stack());
}

static pointer popMemoryZone(scheme* Scheme, pointer Args)
{
return mk_cptr(Scheme, extemp::EXTLLVM::llvm_pop_zone_stack());
return mk_cptr(Scheme, extemp::EXTZONES::llvm_pop_zone_stack());
}

static pointer pushMemoryZone(scheme* Scheme, pointer Args)
{
extemp::EXTLLVM::llvm_push_zone_stack(reinterpret_cast<llvm_zone_t*>(cptr_value(pair_car(Args))));
extemp::EXTZONES::llvm_push_zone_stack(reinterpret_cast<llvm_zone_t*>(cptr_value(pair_car(Args))));
return Scheme->T;
}

Expand Down

0 comments on commit 39d9935

Please sign in to comment.