mirror of
https://github.com/DarkPlacesEngine/gmqcc.git
synced 2025-01-31 03:50:36 +00:00
cache the IMMEDIATE string in the builder directly
This commit is contained in:
parent
1fc8c2f697
commit
b2315777d1
2 changed files with 15 additions and 1 deletions
12
ir.c
12
ir.c
|
@ -168,6 +168,7 @@ ir_builder* ir_builder_new(const char *modulename)
|
|||
MEM_VECTOR_INIT(self, fields);
|
||||
MEM_VECTOR_INIT(self, filenames);
|
||||
MEM_VECTOR_INIT(self, filestrings);
|
||||
self->str_immediate = 0;
|
||||
self->name = NULL;
|
||||
if (!ir_builder_set_name(self, modulename)) {
|
||||
mem_d(self);
|
||||
|
@ -2679,7 +2680,18 @@ static bool ir_builder_gen_global(ir_builder *self, ir_value *global, bool isloc
|
|||
|
||||
def.type = global->vtype;
|
||||
def.offset = code_globals_elements;
|
||||
|
||||
if (global->name) {
|
||||
if (global->name[0] == '#') {
|
||||
if (!self->str_immediate)
|
||||
self->str_immediate = code_genstring("IMMEDIATE");
|
||||
def.name = global->code.name = self->str_immediate;
|
||||
}
|
||||
else
|
||||
def.name = global->code.name = code_genstring(global->name);
|
||||
}
|
||||
else
|
||||
def.name = 0;
|
||||
|
||||
switch (global->vtype)
|
||||
{
|
||||
|
|
2
ir.h
2
ir.h
|
@ -308,6 +308,8 @@ typedef struct ir_builder_s
|
|||
|
||||
MEM_VECTOR_MAKE(const char*, filenames);
|
||||
MEM_VECTOR_MAKE(qcint, filestrings);
|
||||
/* we cache the #IMMEDIATE string here */
|
||||
qcint str_immediate;
|
||||
} ir_builder;
|
||||
|
||||
ir_builder* ir_builder_new(const char *modulename);
|
||||
|
|
Loading…
Reference in a new issue