Commit Graph

46755 Commits

Author SHA1 Message Date
Jonas Maebe
c7a418829b * support for implementing interface method wrappers at the node tree
level, used by LLVM

git-svn-id: trunk@31636 -
2015-09-12 23:32:42 +00:00
Jonas Maebe
be2ec5be59 * write full/init rtti and VMTs separately instead of at the same time
o this allows us to write the VMTs earlier (before the synthetic method
     implementations are generated), which means we can create new synthetic
     methods while generating the VMTs (for interface trampolines)

git-svn-id: trunk@31635 -
2015-09-12 23:32:38 +00:00
Jonas Maebe
cabb16efdb - removed the no longer used generation of uninitialised results for
pure assembler routines

git-svn-id: trunk@31634 -
2015-09-12 23:32:35 +00:00
Jonas Maebe
839482751d * when generating code for a pure assembler routine with LLVM, instantiate
a code and temp generator for the architectural target instead of for LLVM
  * write the code for pure assembler routines using a GNU-style external
    assembler writer for the target, with a decorator to wrap it in
    LLVM module-level assembly statements

git-svn-id: trunk@31633 -
2015-09-12 23:32:31 +00:00
Jonas Maebe
5c69d57674 + TLLVMModuleInlineAssemblyDecorator to decorate inline module-level
assembly

git-svn-id: trunk@31632 -
2015-09-12 23:32:28 +00:00
Jonas Maebe
55e84df094 + GetExternalAssemblerWithAsmInfoWriter() to get a GNU-style external
assembler writer that is compatible with the current architecture,
    for use by the LLVM assembler writer to write inline assembly

git-svn-id: trunk@31631 -
2015-09-12 23:32:24 +00:00
Jonas Maebe
6dd06a1aae * put the code for pure assembler routines in a separate asmlist, so
we can easily use a different assembler writer for them on the
    llvm target

git-svn-id: trunk@31630 -
2015-09-12 23:32:21 +00:00
Jonas Maebe
c80fb6a20e * explicitly specify whether an llvm specification is a definition (= locally
defined) or a declaration (external symbol), instead of deriving it from
    from the bind of the tasmsymbol. The reason is that with module-level
    inline assembly, some locally implemented functions (in pure assembler)
    won't have an LLVM IR body

git-svn-id: trunk@31629 -
2015-09-12 23:32:17 +00:00
Jonas Maebe
991e1f49bd * store a pointer to the used tasminfo record in every assembler writer, so
that we can use assembler writers with different conventions from the
    currently set target_asm (e.g. an x86 assembler writer for inline assembly
    in LLVM IR)

git-svn-id: trunk@31628 -
2015-09-12 23:32:13 +00:00
Jonas Maebe
4bb82b0a3f - removed unused OnlyAsm procedure
git-svn-id: trunk@31627 -
2015-09-12 23:32:09 +00:00
Jonas Maebe
e1f78cb774 * added decorator support to the external assembler writers so the LLVM
assembler writer can postprocess their output

git-svn-id: trunk@31626 -
2015-09-12 23:32:05 +00:00
Jonas Maebe
b3d0197f98 * factored out the output file handling (mostly writing data) from the
external assembler writer, so we can reuse the archtecture-specific
    writers to write inline assembly in LLVM IR files

git-svn-id: trunk@31625 -
2015-09-12 23:32:01 +00:00
Jonas Maebe
6ffd8f0201 * finalize managed data passed to untyped "out" parameters after r31328
(mantis #2863)

git-svn-id: trunk@31624 -
2015-09-12 23:31:57 +00:00
Jonas Maebe
6be050b729 * fixed finalization of open array out parameters after r31328
git-svn-id: trunk@31623 -
2015-09-12 23:31:53 +00:00
Jonas Maebe
2205549316 * changed fix for webtbs/tw20075 so that we don't check the need for
parameter/local finalization at all in pure assembler routines;
    the routines that check this also set pi_needs_got, which should
    not be set either for pure assembler routines (fixes tw20075 on
    Darwin/i386, where PIC code is enabled by default)

git-svn-id: trunk@31622 -
2015-09-12 23:31:50 +00:00
nickysn
e5153db532 + added the win16api drawing functions
git-svn-id: trunk@31621 -
2015-09-12 15:47:23 +00:00
nickysn
48a28c1256 + added the win16api clipping support functions
git-svn-id: trunk@31620 -
2015-09-12 14:33:27 +00:00
nickysn
5900db62ce + added the win16api palette functions
git-svn-id: trunk@31619 -
2015-09-12 14:05:38 +00:00
nickysn
df0ae96738 + added the win16api gdi region support functions
git-svn-id: trunk@31618 -
2015-09-12 13:13:07 +00:00
nickysn
5738869120 + added the win16api brush gdi functions
git-svn-id: trunk@31617 -
2015-09-12 12:46:45 +00:00
nickysn
c0a63ea0ab + added the win16api pen support functions
git-svn-id: trunk@31616 -
2015-09-12 12:27:54 +00:00
nickysn
1181eb0ddb * fixed compilation of the compiler with -dEXTDEBUG after r31588
git-svn-id: trunk@31615 -
2015-09-12 11:55:54 +00:00
nickysn
3a8acd3f33 + initial implementation of win16 file support, based on the msdos rtl
git-svn-id: trunk@31614 -
2015-09-12 00:17:11 +00:00
nickysn
d579c45656 * pass the option "dosseg" to wlink when compiling for win16 to ensure the
proper segment ordering

git-svn-id: trunk@31613 -
2015-09-12 00:08:23 +00:00
nickysn
04cb0cf615 + check for LFN support at startup on win16
git-svn-id: trunk@31612 -
2015-09-11 22:03:50 +00:00
nickysn
181ee0b4d2 + init exceptions and the unicode string manager in the win16 system unit startup
git-svn-id: trunk@31611 -
2015-09-11 21:54:40 +00:00
nickysn
9997ee54fb + initialize IsConsole and IsLibrary in the win16 system unit startup code
git-svn-id: trunk@31610 -
2015-09-11 21:48:20 +00:00
nickysn
694d93d011 + ported the MsDos() routine from the msdos rtl to win16
git-svn-id: trunk@31609 -
2015-09-11 21:29:45 +00:00
florian
fbda104d54 * do not use a_call_ref for procedures allocating all registers since it break spilling, see also issue #28639, resolves issue #28639
git-svn-id: trunk@31608 -
2015-09-11 20:56:05 +00:00
marcus
8096ad3d1b Amiga, AROS, MorphOS: MUI/Zune corrections, Escape sequences, Macros
git-svn-id: trunk@31607 -
2015-09-11 20:50:42 +00:00
marcus
5e94e3ab9e Amiga, AROS, MorphOS: Overloads for some var parameter/pointer as return value functions, set all filehandle, locks to BPTR (as defined in the SDKs)
git-svn-id: trunk@31606 -
2015-09-11 20:17:51 +00:00
nickysn
182dffcbd8 * fixed i8086 compilation after r31593
git-svn-id: trunk@31605 -
2015-09-11 16:20:50 +00:00
nickysn
f3a4d00a9e + added the gdi object support win16api functions
git-svn-id: trunk@31604 -
2015-09-11 15:56:41 +00:00
svenbarth
2cf8cdd885 Fix for Mantis #28650.
rtl/objpas/sysutils/sysstrh.inc:
  * forward PString to ObjPas.PString to avoid potential type conflicts

+ added test

git-svn-id: trunk@31603 -
2015-09-11 15:38:59 +00:00
nickysn
c65af63459 + added the win16api color functions
git-svn-id: trunk@31602 -
2015-09-11 15:33:09 +00:00
svenbarth
00f776ef76 pgenutil.pas, parse_generic_specialization_types_internal:
* in case of an inline specialization inside a generic function's/method's parameter list using type parameters of the generic function/method itself fulltypename of the generic type parameter must not be used as the procdef is not yet owned by anyone; this is no problem for non-generic functions/methods or specializations with type parameters that don't belong to the generic function/method, because they don't have the generic, ownerless procdef as owner => use a name that provides sufficient uniqueness

git-svn-id: trunk@31601 -
2015-09-11 15:18:44 +00:00
marcus
5a77040787 AROS, Amiga: Exec.library AllocMem renamed to ExecAllocMem (unification with MorphOS)
git-svn-id: trunk@31600 -
2015-09-11 15:08:31 +00:00
nickysn
c9a1ee5c8f + added the win16api coordinate transformation functions
git-svn-id: trunk@31599 -
2015-09-11 15:00:07 +00:00
nickysn
b8846771bf + added the win16api getdevicecaps function and its constants
git-svn-id: trunk@31596 -
2015-09-11 14:14:20 +00:00
svenbarth
6eef28fd03 pdecsub.pas, proc_add_definition:
* special handling for matching generic procdefs with their forward declarations

git-svn-id: trunk@31595 -
2015-09-11 14:13:54 +00:00
svenbarth
8fbd57080b defcmp.pas, compare_paras:
+ new flag cpo_generic to allow a declaration of a generic function in the interface to be matched to its implementation as for each new undefined defs for the type parameters will be created

git-svn-id: trunk@31594 -
2015-09-11 13:42:51 +00:00
svenbarth
65c37df999 + extend tprocdef with the possiblity to create it as unregistered
* for now all procdefs are created as registered
Note: an additional parameter instead of an overload is used for tprocdef.create as otherwise both constructors would need to be overridden in potential descendant CPU-specific classes...

git-svn-id: trunk@31593 -
2015-09-11 13:36:00 +00:00
svenbarth
84b9d9839c + extend tobjectdef with the possiblity to create it as unregistered
* for now all objectdefs are created as registered
Note: an additional parameter instead of an overload is used for tobjectdef.create as otherwise both constructors would need to be overridden in potential descendant CPU-specific classes...

git-svn-id: trunk@31592 -
2015-09-11 13:28:49 +00:00
svenbarth
d45c275ef3 + extend ttypesym with the possiblity to create it as unregistered
* for now all typesyms are created as registered
Note: an additional parameter instead of an overload is used for ttypesym.create as otherwise both constructors would need to be overridden in potential descendant CPU-specific classes...

git-svn-id: trunk@31591 -
2015-09-11 13:22:12 +00:00
nickysn
6bac838fce + added the win16api basic gdi types
git-svn-id: trunk@31590 -
2015-09-11 13:10:36 +00:00
svenbarth
6fb71e55fd symtable.pas, tparasymtable:
* checkduplicate: also ensure that the owner of the procdef is assigned before using it

git-svn-id: trunk@31589 -
2015-09-11 13:09:17 +00:00
svenbarth
4f5fc66298 + new parser-only node class to handle Delphi-mode inline specializations
git-svn-id: trunk@31588 -
2015-09-11 12:58:25 +00:00
nickysn
09a4efe5d3 + added the win16api keyboard functions
git-svn-id: trunk@31587 -
2015-09-11 12:47:09 +00:00
nickysn
afcc5a9e11 + added the win16api string functions
git-svn-id: trunk@31586 -
2015-09-11 12:38:01 +00:00
nickysn
6567700025 + added the win.ini win16api functions
git-svn-id: trunk@31585 -
2015-09-11 12:00:36 +00:00