54 lines
1.4 KiB
C
54 lines
1.4 KiB
C
|
/****************************************************************
|
||
|
* *
|
||
|
* Copyright 2001, 2009 Fidelity Information Services, Inc *
|
||
|
* *
|
||
|
* This source code contains the intellectual property *
|
||
|
* of its copyright holder(s), and is made available *
|
||
|
* under a license. If you do not know the terms of *
|
||
|
* the license, please stop and do not read further. *
|
||
|
* *
|
||
|
****************************************************************/
|
||
|
|
||
|
#include "mdef.h"
|
||
|
#include "compiler.h"
|
||
|
#include "rtnhdr.h"
|
||
|
#include "mdq.h"
|
||
|
#include "stringpool.h"
|
||
|
|
||
|
GBLREF mliteral literal_chain;
|
||
|
GBLREF spdesc stringpool;
|
||
|
GBLREF unsigned short source_name_len;
|
||
|
GBLREF mident routine_name;
|
||
|
|
||
|
GBLDEF uint4 lits_size, lit_addrs;
|
||
|
|
||
|
void comp_lits(rhead)
|
||
|
rhdtyp *rhead;
|
||
|
{
|
||
|
uint4 offset, cnt;
|
||
|
uint4 align_pad;
|
||
|
mliteral *p;
|
||
|
|
||
|
offset = stringpool.free - stringpool.base;
|
||
|
offset += PADLEN(offset, NATIVE_WSIZE);
|
||
|
rhead->src_full_name.len = source_name_len;
|
||
|
rhead->src_full_name.addr = (char *)offset;
|
||
|
offset += source_name_len;
|
||
|
offset += PADLEN(offset, NATIVE_WSIZE);
|
||
|
rhead->routine_name.len = routine_name.len;
|
||
|
rhead->routine_name.addr = (char *)offset;
|
||
|
offset += routine_name.len;
|
||
|
offset += PADLEN(offset, NATIVE_WSIZE);
|
||
|
cnt = 0;
|
||
|
dqloop(&literal_chain, que, p)
|
||
|
if (p->rt_addr < 0)
|
||
|
{
|
||
|
p->rt_addr = offset;
|
||
|
offset += SIZEOF(mval);
|
||
|
if (p->v.str.len)
|
||
|
cnt++;
|
||
|
}
|
||
|
lits_size = offset;
|
||
|
lit_addrs = cnt;
|
||
|
}
|