[fpc-devel] Proposal/discussion: Simple nested functions and 'outlining'

Jonas Maebe jonas at freepascal.org
Sat Oct 3 20:14:03 CEST 2020


On 03/10/2020 18:43, J. Gareth Moreton via fpc-devel wrote:
> Sounds like a fun thing to research, that's for sure.  Thanks Jonas.
> 
> I'm under the impression that exception code tends to be separated
> anyway, so it can't easily be separated much further.

Implicit exception code, yes, but explicit try/except blocks can appear
anywhere.

> Code that executes if, say, a LongInt variable equals "-1" might be cold
> code, especially as that's often an error flag and is otherwise just one
> value out of 2^32 possibilities (i.e. statistically unlikely to be
> True), although it's tricky to know if an assumption is correct or not
> given an arbitrary block of code, and what the penalty is if code that's
> marked as cold is actually hot.

There's a pretty famous paper that investigated what kind of checks
often (in about 80% of the cases) result in taken/non-taken branches.
You can find it at
https://www.classes.cs.uchicago.edu/archive/2017/fall/32001-1/papers/ball-larus-branch-predict.pdf

You will indeed get penalties from mispredictions, but you can be as
conservative as you want.


Jonas


More information about the fpc-devel mailing list