(c) 2022 YSI contibutors, licensed under MPL 1.1
CTRL_OnCodeInit()Initialise the system
CodeScanAddMatcherCodeScanInitCodeScanMatcherCodeScanMatcherInit_CodeScanMatcherPattern_CodeScanRunFastCodeScannerFunctional_FoundCall1Functional_FoundCall2LAM@0O@A_O@V_OP_CALLOP_CONST_PRIOP_PUSH_COP_PUSH_PRIOP_ZERO_PRI__1_cellgCodeScanCallback_match
public
713 cells
Functional_FoundAfter(scanner[])| Name | Info |
|---|---|
scanner |
[172] The code scanner that found a match. |
Called when a scanner matches a LAM@5() call, denoting the end of the lambda call. Just removes the call and stores the location.
CodeScanGetMatchAddressDataCodeScanNOPMatchYSI_g_sFunctionalAfterPosYSI_g_sFunctionalLastEndcellmin
4 cells
Functional_FoundCall(scanner[], nestingLevel)| Name | Info |
|---|---|
scanner |
[172] The code scanner that found a match. |
nestingLevel |
How many lambdas deep this call is. |
Once a lambda call is found this code is called to trigger a new set of scans to analyse the lambda function itself. It then does the code generation based on the results. This is to allow nested lambdas as the calls are found first, then the second set of scans run without preventing the call scanner from finding more results later.
AsmContextAsmEmitAddCAsmEmitHeapAsmEmitJumpRelAsmEmitLctrlAsmEmitLoadPriAsmEmitMovsAsmEmitSctrlAsmEmitStackAsmEmitStorPriAsmInitPtrCodeScanAddMatcherCodeScanCloneCodeScanGetMatchAddressDataCodeScanGetMatchStackCodeScanMatcherCodeScanMatcherInit_CodeScanMatcherPattern_CodeScanNOPMatchCodeScanRunCodeScannerFunctional_FoundAfterFunctional_FoundEndFunctional_FoundStartI@LAM@1LAM@2LAM@5O@A_O@V_OP_CALLOP_CONST_PRIOP_PUSH_COP_PUSH_PRIOP_ZERO_PRIYSI_g_sFunctionalAfterPosYSI_g_sFunctionalEndPosYSI_g_sFunctionalExpectedDepthYSI_g_sFunctionalLastEndYSI_g_sFunctionalStartPos__10_cells__12_cells__14_cells__1_cell__2_cells__4_cells__5_cells__8_cells__hea__stkgCodeScanCallback_match
1488 cells
Functional_FoundCall1(scanner[])| Name | Info |
|---|---|
scanner |
[172] The code scanner that found a match. |
Used when a matcher finds a lambda call with an explicit nesting level.
6 cells
Functional_FoundCall2(scanner[])| Name | Info |
|---|---|
scanner |
[172] The code scanner that found a match. |
Used when a matcher finds a lambda call with a ZERO op for the nesting level.
5 cells
Functional_FoundEnd(scanner[])| Name | Info |
|---|---|
scanner |
[172] The code scanner that found a match. |
Called when a scanner matches a LAM@2() call, denoting the end of a lambda function. Just removes the call and stores the location.
4 cells
Functional_FoundStart(scanner[])| Name | Info |
|---|---|
scanner |
[172] The code scanner that found a match. |
Called when a scanner matches a LAM@1() call, denoting the start of a lambda function. Just removes the call and stores the location.
CodeScanGetMatchAddressDataCodeScanGetMatchStackCodeScanNOPMatchYSI_g_sFunctionalExpectedDepthYSI_g_sFunctionalStartPos
4 cells
LAM@0(idx)| Name | Info |
|---|---|
idx |
Used by nested lambda calls. |
Marks the point in code where the lambda function gets called.
1 cells
LAM@1(idx, pattern0, pattern1, pattern2, pattern3)| Name | Info |
|---|---|
idx |
|
pattern0 |
|
pattern1 |
|
pattern2 |
|
pattern3 |
Placeholder function used to deonte the start of lambda code. All parameters are dummies, used for code scanning and generation space padding.
1 cells
LAM@2(par)| Name | Info |
|---|---|
par |
Placeholder function used to deonte the end of lambda code. The parameter is eventually used in the rewitten code to return the result.
1 cells
LAM@5(idx, pattern0, pattern1, pattern2, pattern3, pattern4, pattern5, pattern6)| Name | Info |
|---|---|
idx |
|
pattern0 |
|
pattern1 |
|
pattern2 |
|
pattern3 |
|
pattern4 |
|
pattern5 |
|
pattern6 |
The end of all the generated code; functions and calls.
1 cells