Therefore if a shared library is loaded by JVM ( using dlopen() ),
it is not possible to use dlopen() in a units initialization code -
dlopen() simply hangs.
To workaround this issue, if a library exports JNI_OnLoad(), then
no unit initialization is performed during library load.
The initialization is called when JVM has loaded the library and calls
JNI_OnLoad().
git-svn-id: trunk@34406 -
that it is done before it had the chance to call RTLEventSetEvent() (since
then no memory barrier synchronised the thread state with what the main
thread would see)
git-svn-id: trunk@34401 -
of all globals and to contain all fppkg-related stuff into this
structure. So it will be easier to embed fppkg into other applications.
git-svn-id: trunk@34400 -
tabstractprocdef.typename_paras(), after accidentally committing the
removal of the double quotes in r34358
o the reason for not using double quotes is that the output of this routine
is used for some LLVM identifier names, and you can't have double quotes in
LLVM identifiers (any other character, including space, is no problem)
git-svn-id: trunk@34392 -
in the high level typed constant builder, as it does not work if the
passed list to start_internal_data_builder() is used for multiple
nested builders (you can't know what the last section was) -> always
emit a section header for a nested typed const builder
git-svn-id: trunk@34391 -
rather than for any anonymous aggregate, since for arrays we do know
the alignment even if we don't know the element count (because it only
depends on the elementdef, which is/will be set immediately)
git-svn-id: trunk@34390 -
refer to these type names when writing the s2o and o2s arrays in the LLVM
assembler writer (otherwise we have to write out the entire definition
of those fields and their subtypes for every access, resulting in a 139MB
cpubase.ll instead of a more reasonable 1.5MB one now)
git-svn-id: trunk@34386 -
* Correct computation of CRC for if add_tail is true:
tail is before extra_info, not after.
Use tail_size variable to cacluate CRC use the whole tail memory area.
+ New function released_modified. Checks if released memory
was modified after it release (used if keep_released is true).
* TraceGetMem,TraceFreeMem TraceReallocMem: adapt to new tail_size variable.
* TraceInit: Store previous memory manager in local variable,
to be able to restore it in TracExit call.
* LoadEnvironment: Add parsing of tail_size=XXX, where XXX is a decimal value,
rounded up to next multiple of sizeof(ptruint).
git-svn-id: trunk@34385 -
string constants instead of giving an internal error if we can't find it in
the current context (in most cases it will exist, but not when inlining a
routine from another unit that accesses a locally declared string constant)
git-svn-id: trunk@34373 -
This was brkoken because the -dHEAPTRC option
adds ppheap unit at top of the uses clause in pp.pas source,
which leads to a change in the loading order of the units.
This order change revealed that initialization of fpkg unit
was supposed to happen after globals unit.
Fixed here by testing if initdoneprocs local variable is assigned,
both in register_initdone_proc and in allocinitdoneprocs,
to avoid double initialization.
git-svn-id: trunk@34361 -
and getters for the ttemp*node classes instead
o this will allow descendants to prevent certain flags from being added
or removed. E.g. for LLVM, certain temps must never be put in registers
because it cannot typecast a value in a register from a non-record/array
type to an array type without forcing it to memory (so if that is done
on an lvalue, the result will be written to the memory temp instead of
to the register)
git-svn-id: trunk@34358 -