The sources of the Free Pascal compiler, RTL, packages and utilities. See https://www.freepascal.org/ for more info.
Go to file
Frederic Kehrein ca92c49f8c * Avoid calling copy operator when moving data from temporary objects
When a function returns a managed record, a new temporary object is
created for the result, which is then copied to the real destination.
For managed records with a deep copy implementation, this can create
immense overhead. So instead this introduces a move, which basically
consists of
```pascal
procedure Move(var src, dst);
begin
  Finalize(dst); // Finalize existing data
  Move(src,dst,sizeof(dst)); // Shallow copy
  Initialize(src); // Clear source
```

* nld.pas: use MOVE when assigning the function result from the
  temporary return object
* rtl/inc/systemh.pas: Adding new macro to mark new RTTI version with MOVE
  operation
* rtl/inc/compproc.inc, rtl/inc/rtti.inc: Adding new move mechanism when
  indicated by the compiler.
2024-11-16 22:08:06 +00:00
.gitlab Add two more templates to show the possibilities 2021-10-06 17:26:28 +00:00
compiler * Avoid calling copy operator when moving data from temporary objects 2024-11-16 22:08:06 +00:00
installer First compiler Build 2024-09-29 16:56:18 +03:00
packages * OpenAPI helper units and classes 2024-11-16 16:12:46 +01:00
rtl * Avoid calling copy operator when moving data from temporary objects 2024-11-16 22:08:06 +00:00
tests * Avoid calling copy operator when moving data from temporary objects 2024-11-16 22:08:06 +00:00
utils * OpenAPI to pascal conversion tool 2024-11-16 15:40:51 +01:00
.gitattributes Use pascal hunk for diff output for pascal source files 2021-09-06 23:31:20 +02:00
.gitconfig * + .gitconfig with configuration for better diffing, needs a 2021-09-18 14:26:18 +02:00
.gitignore - removed /psy-q-sdk/lib/* from .gitignore 2024-09-29 23:51:55 +03:00
.gitlab-ci.yml * update runner tag 2024-05-12 20:04:45 +00:00
fpmake_add1.inc
fpmake_proc1.inc
fpmake.pp
LICENSE + LICENSE and README.md added, taken from git test conversion as committed by Michael 2021-06-18 16:15:19 +00:00
Makefile First compiler Build 2024-09-29 16:56:18 +03:00
Makefile.fpc Add CROSSASTARGET and CROSSASPROG make variables. 2023-10-31 15:02:48 +00:00
README.md + LICENSE and README.md added, taken from git test conversion as committed by Michael 2021-06-18 16:15:19 +00:00

FPC Source code repository

Synopsis

This repository contains the sources of the Free Pascal compiler distribution.

It contains

  • The compiler sources in the directory compiler.
  • The run-time library in the directory rtl.
  • The packages distributed with the compiler in the directory packages.
  • Several utilities in the directory utils.
  • The compiler testsuite in the directory tests.

License

The compiler is licensed under GPL v2, the run-time files are licensed under modified LGPL. Both can be found in the LICENSE file, and the file rtl/COPYING.txt

Documentation

Extensive documentation can be found on the documentation website.