From: Wolfgang (Blub) Bumiller Date: Fri, 24 Aug 2012 17:52:06 +0000 (+0200) Subject: cache the IMMEDIATE string in the builder directly X-Git-Tag: 0.1-rc1~41 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=b2315777d1106a8ae6652acfc0507ac2fd510fc5;p=xonotic%2Fgmqcc.git cache the IMMEDIATE string in the builder directly --- diff --git a/ir.c b/ir.c index 7af6979..133aca5 100644 --- a/ir.c +++ b/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; - def.name = global->code.name = code_genstring(global->name); + + 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) { diff --git a/ir.h b/ir.h index 825f6a7..1059c6e 100644 --- a/ir.h +++ b/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);