mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-07 08:48:08 +02:00
The sources of the Free Pascal compiler, RTL, packages and utilities.
See https://www.freepascal.org/ for more info.
![]() 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. |
||
---|---|---|
.gitlab | ||
compiler | ||
installer | ||
packages | ||
rtl | ||
tests | ||
utils | ||
.gitattributes | ||
.gitconfig | ||
.gitignore | ||
.gitlab-ci.yml | ||
fpmake_add1.inc | ||
fpmake_proc1.inc | ||
fpmake.pp | ||
LICENSE | ||
Makefile | ||
Makefile.fpc | ||
README.md |
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.