Skip to content

Commit

Permalink
CogVM source as per VMMaker.oscog-eem.3034
Browse files Browse the repository at this point in the history
CogARMv8Compiler: Make sure the generated cache flush code flushes the range
(startAddress to endAddress], i.e. never flush endAddress, only addresses
less than endAddress.  Flushing endAddress can cause a segmentation violation
if the endAddress is on an empty page.
  • Loading branch information
eliotmiranda committed Aug 12, 2021
1 parent f86afd0 commit c6c1880
Show file tree
Hide file tree
Showing 13 changed files with 3,124 additions and 2,806 deletions.
3 changes: 2 additions & 1 deletion nsspur64src/vm/cogit.h
@@ -1,5 +1,5 @@
/* Automatically generated by
CCodeGenerator VMMaker.oscog-eem.2997 uuid: 2d21044e-f2db-40ea-91da-ba273faf9093
CCodeGenerator VMMaker.oscog-eem.3034 uuid: 3ea0aaa2-20e4-4c02-b448-c3e708578e16
*/


Expand Down Expand Up @@ -148,6 +148,7 @@ extern sqInt traceStores;
#define printOnTrace() (traceFlags & 1)
#define recordBlockTrace() (traceFlags & 4)
#define recordEventTrace() (traceFlags & 16)
#define recordFastCCallPrimTrace() (traceFlags & 512)
#define recordOverflowTrace() (traceFlags & 32)
#define recordPrimTrace() (traceFlags & 8)
#define recordSendTrace() (traceFlags & 2)
Expand Down
997 changes: 653 additions & 344 deletions nsspur64src/vm/cogitARMv8.c

Large diffs are not rendered by default.

979 changes: 664 additions & 315 deletions nsspur64src/vm/cogitX64SysV.c

Large diffs are not rendered by default.

1,012 changes: 695 additions & 317 deletions nsspur64src/vm/cogitX64WIN64.c

Large diffs are not rendered by default.

1,440 changes: 540 additions & 900 deletions nsspur64src/vm/cointerp.c

Large diffs are not rendered by default.

9 changes: 5 additions & 4 deletions nsspur64src/vm/cointerp.h
@@ -1,5 +1,5 @@
/* Automatically generated by
CCodeGeneratorGlobalStructure VMMaker.oscog-eem.2997 uuid: 2d21044e-f2db-40ea-91da-ba273faf9093
CCodeGeneratorGlobalStructure VMMaker.oscog-eem.3034 uuid: 3ea0aaa2-20e4-4c02-b448-c3e708578e16
*/


Expand Down Expand Up @@ -33,7 +33,6 @@ extern sqInt ceCannotAssignTowithIndexvalueToAssign(sqInt immutableObject, sqInt
extern sqInt ceCannotResume(void);
extern void ceCheckAndMaybeRetryPrimitive(sqInt primIndex);
extern void ceCheckForInterrupt(void);
extern void ceCheckProfileTick(void);
extern sqInt ceContextinstVar(sqInt maybeContext, sqInt slotIndex);
extern sqInt ceContextinstVarvalue(sqInt maybeMarriedContext, sqInt slotIndex, sqInt anOop);
extern void ceDynamicSuperSendreceiver(sqInt cacheAddress, sqInt methodReceiver);
Expand All @@ -54,6 +53,7 @@ extern void ceSendaboveClassBindingtonumArgs(sqInt selector, sqInt methodClassBi
extern sqInt ceSendabovetonumArgs(sqInt selector, sqInt methodClass, sqInt rcvr, sqInt numArgs);
extern sqInt ceSendsupertonumArgs(sqInt selector, sqInt superNormalBar, sqInt rcvr, sqInt numArgs);
extern void ceStackOverflow(sqInt contextSwitchIfNotNil);
extern void ceTakeProfileSample(CogMethod *aCogMethodOrNil);
extern void ceTraceBlockActivation(void);
extern void ceTraceLinkedSend(sqInt theReceiver);
extern void ceTraceStoreOfinto(sqInt aValue, sqInt anObject);
Expand Down Expand Up @@ -112,6 +112,7 @@ extern sqInt (*quickPrimitiveGeneratorFor(sqInt aQuickPrimitiveIndex))(void) ;
extern sqInt quickPrimitiveInstVarIndexFor(sqInt primIndex);
extern sqInt rawHeaderOf(sqInt methodPointer);
extern void rawHeaderOfput(sqInt methodOop, sqInt cogMethodOrMethodHeader);
extern sqInt recordFastCCallPrimTraceForMethod(sqInt aMethodObj);
extern sqInt recordPrimTraceForMethod(sqInt aMethodObj);
extern void reportMinimumUnusedHeadroom(void);
extern sqInt signed32BitIntegerFor(sqInt integerValue);
Expand Down Expand Up @@ -251,7 +252,7 @@ extern sqInt minSlotsForShortening(void);
extern sqInt nilObject(void);
extern sqInt nonIndexablePointerFormat(void);
extern sqInt numBytesOf(sqInt objOop);
extern sqInt numPointerSlotsOf(sqInt objOop);
extern usqInt numPointerSlotsOf(sqInt objOop);
extern usqInt numSlotsOf(sqInt objOop);
extern sqInt numStrongSlotsOfWeakling(sqInt objOop);
extern sqInt objectAfter(sqInt objOop);
Expand Down Expand Up @@ -390,7 +391,7 @@ extern sqInt suppressHeartbeatFlag;
compilationBreakpointFor(sel); \
} \
} while (0)
#define primNumberExternalCall() null
#define primNumberExternalCall() 117
#define startOfMemory() heapBase
#define numTagBits() 3
#define shiftForWord() 3
Expand Down

0 comments on commit c6c1880

Please sign in to comment.