-// TODO Optimize this by sorting the symbols
-// TODO Make this function thread safe
-Symbol* Runtime_symbol(Runtime* self, const char* name)
-{
- assert(strlen(name) <= MAX_SYMBOL_LENGTH);
-
- for(size_t i = 0; i < self->symbolsLength; i++)
- {
- if(strcmp(self->symbols[i]->name, name) == 0)
- {
- return self->symbols[i];
- }
- }
-
- if(self->symbolsLength == self->symbolsAllocated)
- {
- if(self->symbolsAllocated == 0)
- {
- self->symbolsAllocated = 8;
- }
- else
- {
- self->symbolsAllocated = self->symbolsAllocated * 2;
- }
-
- self->symbols = realloc(
- self->symbols,
- sizeof(Symbol*) * self->symbolsAllocated
- );
-
- // TODO Handle realloc returning NULL
- }
-
- Symbol* result = malloc(sizeof(Symbol));
- result->length = strlen(name);
- strcpy(result->name, name);
-
- self->symbols[self->symbolsLength] = result;
- self->symbolsLength++;
-
- return result;
-}
-