[Vm-dev] VM Maker: VMMaker.oscog-eem.1581.mcz

Robert Withers robert.w.withers at gmail.com
Sat Dec 12 18:09:42 UTC 2015


Hi Eliot,

This fixed that issue and then I ran into another issue doing a 32-bit 
Cog/Spur build on Ubuntu 64-bit.


    In file included from
    /home/rabbit/warren/cogvm/platforms/Cross/plugins/B3DAcceleratorPlugin/sqOpenGLRenderer.c:30:0:
    /home/rabbit/warren/cogvm/platforms/Cross/plugins/B3DAcceleratorPlugin/sqOpenGLRenderer.h:16:3:
    error: conflicting types for 'glRenderer'
      } glRenderer;



I looked into the file and see this, not sure if it is the issue, tho:

    #if !defined(GL_RENDERER_DEFINED)
    typedef struct glRenderer {
             GLint bufferRect[4];
             GLint viewport[4];
    } glRenderer;
    #endif
    struct glRenderer *glRendererFromHandle(int rendererHandle);



- Robert

On 12/12/2015 05:37 PM, commits at source.squeak.org wrote:
>   
> Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
> http://source.squeak.org/VMMaker/VMMaker.oscog-eem.1581.mcz
>
> ==================== Summary ====================
>
> Name: VMMaker.oscog-eem.1581
> Author: eem
> Time: 12 December 2015, 9:36:18.788 am
> UUID: ceb64363-bb65-4efc-a5c9-ad90ef4fc645
> Ancestors: VMMaker.oscog-eem.1580
>
> Cogit: Fix regression from NoReg change.
>
> =============== Diff against VMMaker.oscog-eem.1580 ===============
>
> Item was changed:
>    ----- Method: Cogit>>genEnilopmartFor:and:and:forCall:called: (in category 'initialization') -----
>    genEnilopmartFor: regArg1 and: regArg2OrNone and: regArg3OrNone forCall: forCall called: trampolineName
>    	"An enilopmart (the reverse of a trampoline) is a piece of code that makes
>    	 the system-call-like transition from the C runtime into generated machine
>    	 code.  The desired arguments and entry-point are pushed on a stackPage's
>    	 stack.  The enilopmart pops off the values to be loaded into registers and
>    	 then executes a return instruction to pop off the entry-point and jump to it.
>    
>    						BEFORE				AFTER			(stacks grow down)
>    						whatever			stackPointer ->	whatever
>    						target address =>	reg1 = reg1val, etc
>    						reg1val				pc = target address
>    						reg2val
>    		stackPointer ->	reg3val"
>    
>    	<var: #trampolineName type: #'char *'>
> + 	<returnTypeC: #'void (*genEnilopmartForandandforCallcalled(sqInt regArg1, sqInt regArg2OrNone, sqInt regArg3OrNone, sqInt forCall, char *trampolineName))(void)'>
> - 	<returnTypeC: #'void (*genEnilopmartForandandforCallcalled(sqInt regArg1, sqInt regArg2, sqInt regArg3, sqInt forCall, char *trampolineName))(void)'>
>    
>    	| size endAddress enilopmart |
>    	self zeroOpcodeIndex.
>    	backEnd maybeEstablishVarBase. "Must happen first; value may be used in genLoadStackPointers"
>    	backEnd genLoadStackPointers.
>    	regArg3OrNone ~= NoReg ifTrue: [self PopR: regArg3OrNone].
>    	regArg2OrNone ~= NoReg ifTrue: [self PopR: regArg2OrNone].
>    	self PopR: regArg1.
>    	self genEnilopmartReturn: forCall.
>    	self computeMaximumSizes.
>    	size := self generateInstructionsAt: methodZoneBase.
>    	endAddress := self outputInstructionsAt: methodZoneBase.
>    	self assert: methodZoneBase + size = endAddress.
>    	enilopmart := methodZoneBase.
>    	methodZoneBase := self alignUptoRoutineBoundary: endAddress.
>    	backEnd stopsFrom: endAddress to: methodZoneBase - 1.
>    	self recordGeneratedRunTime: trampolineName address: enilopmart.
>    	^self cCoerceSimple: enilopmart to: #'void (*)(void)'!
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20151212/cb365968/attachment.htm


More information about the Vm-dev mailing list