Skip to content

Commit 759d8f2

Browse files
committed
CogVM source as per VMMaker.oscog-eem.3739
Fix error reporting in the FFI plugin on the threaded VM. The old code used a single static variable ffiError which cannot work in a threaded context. The new code uses Process's osError to hold the FFILastError code in a byte array. Hence: - implement fetchInteger:ofObject:/storeInteger:ofObject:withValue: in the object memories, supporting variable integer collections (ByteArray, DoubleByteArray, et al, as supported) - provide a flag bit in vm parameter 65 that identifies the threaded VM - store/fetch the ffiError value in Process's osError inst var as the second element of a ByteArray, distinguishing it from an error reaper value, which should be an integer By the way: - fix a leak in the ThreadedFFIPlugin with string parameters. Not all return paths called clanupCalloutState:, hence forgetting to free string parameters. Now all return paths taken once argument marshalling has begun do so. - fix eeInstantiateMethodContextSlots: to use allocateSmallNewSpaceSlots:format:classIndex:, generating more compact code - fix an error in preemptDisowningThread that saved too much stack Now that fetchInteger:ofObject:/storeInteger:ofObject:withValue: have been extended to include all integral collecitons fetchInteger:ofObject: must return a #sqLong, and storeInteger:ofObject:withValue:'s last parameter must be a #sqLong ...and given the signature of storeInteger:ofObject:withValue: must change we might as well make it a void function. And given that InterpreterProxy/sqVirtualMachine now implements activeProcess, use theActiveProcess in primitiveSetPriority to avoid a Slang warning.
1 parent b651d85 commit 759d8f2

83 files changed

Lines changed: 5071 additions & 8495 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

platforms/Cross/vm/sqVirtualMachine.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ void addHighPriorityTickee(void (*ticker)(void), unsigned periodms);
4848
void addSynchronousTickee(void (*ticker)(void), unsigned periodms, unsigned roundms);
4949

5050
#if SPURVM // For now these are here; perhaps they're better in the VM.
51-
static sqInt
51+
static sqLong
5252
interceptFetchIntegerofObject(sqInt fieldIndex, sqInt objectPointer)
5353
{
5454
if (fieldIndex == 0
@@ -72,7 +72,7 @@ shouldNotImplementCharacterTable(void)
7272
}
7373
#endif
7474

75-
sqInt fetchIntegerofObject(sqInt fieldIndex, sqInt objectPointer);
75+
sqLong fetchIntegerofObject(sqInt fieldIndex, sqInt objectPointer);
7676
struct VirtualMachine* sqGetInterpreterProxy(void)
7777
{
7878
if(VM) return VM;

platforms/Cross/vm/sqVirtualMachine.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ typedef struct VirtualMachine {
6262
void *(*fetchArrayofObject)(sqInt fieldIndex, sqInt objectPointer);
6363
sqInt (*fetchClassOf)(sqInt oop);
6464
double (*fetchFloatofObject)(sqInt fieldIndex, sqInt objectPointer);
65-
sqInt (*fetchIntegerofObject)(sqInt fieldIndex, sqInt objectPointer);
65+
sqLong (*fetchIntegerofObject)(sqInt fieldIndex, sqInt objectPointer);
6666
sqInt (*fetchPointerofObject)(sqInt fieldIndex, sqInt oop);
6767
#if OLD_FOR_REFERENCE
6868
/* sqInt (*fetchWordofObject)(sqInt fieldFieldIndex, sqInt oop); *
@@ -88,7 +88,7 @@ typedef struct VirtualMachine {
8888
sqInt (*stObjectat)(sqInt array, sqInt fieldIndex);
8989
sqInt (*stObjectatput)(sqInt array, sqInt fieldIndex, sqInt value);
9090
sqInt (*stSizeOf)(sqInt oop);
91-
sqInt (*storeIntegerofObjectwithValue)(sqInt fieldIndex, sqInt oop, sqInt integer);
91+
void (*storeIntegerofObjectwithValue)(sqInt fieldIndex, sqInt oop, sqLong integer);
9292
sqInt (*storePointerofObjectwithValue)(sqInt fieldIndex, sqInt oop, sqInt valuePointer);
9393

9494
/* InterpreterProxy methodsFor: 'testing' */
@@ -411,7 +411,7 @@ sqInt byteSizeOf(sqInt oop);
411411
void *fetchArrayofObject(sqInt fieldIndex, sqInt objectPointer);
412412
sqInt fetchClassOf(sqInt oop);
413413
double fetchFloatofObject(sqInt fieldIndex, sqInt objectPointer);
414-
sqInt fetchIntegerofObject(sqInt fieldIndex, sqInt objectPointer);
414+
sqLong fetchIntegerofObject(sqInt fieldIndex, sqInt objectPointer);
415415
sqInt fetchPointerofObject(sqInt index, sqInt oop);
416416
#if OLD_FOR_REFERENCE /* slot repurposed for error */
417417
/* sqInt fetchWordofObject(sqInt fieldIndex, sqInt oop); *
@@ -437,7 +437,7 @@ sqInt slotSizeOf(sqInt oop);
437437
sqInt stObjectat(sqInt array, sqInt index);
438438
sqInt stObjectatput(sqInt array, sqInt index, sqInt value);
439439
sqInt stSizeOf(sqInt oop);
440-
sqInt storeIntegerofObjectwithValue(sqInt index, sqInt oop, sqInt integer);
440+
void storeIntegerofObjectwithValue(sqInt index, sqInt oop, sqLong integer);
441441
sqInt storePointerofObjectwithValue(sqInt index, sqInt oop, sqInt valuePointer);
442442

443443

src/plugins/ADPCMCodecPlugin/ADPCMCodecPlugin.c

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
/* Automatically generated by
2-
VMPluginCodeGenerator VMMaker.oscog-eem.3668 uuid: d0a2c840-707b-457e-9ff3-c455828ac41c
3-
(Compiler-eem.523)
2+
VMPluginCodeGenerator VMMaker.oscog-eem.3739 uuid: 2d2f2ceb-57d6-4381-b5c9-1a3f4bc795de
3+
(Compiler-ct.529)
44
from
5-
ADPCMCodecPlugin VMMaker.oscog-eem.3668 uuid: d0a2c840-707b-457e-9ff3-c455828ac41c
6-
ADPCMCodec * Sound-ct.99 uuid: 7a1c260a-5b6b-4cb3-8482-de3a78628508
5+
ADPCMCodecPlugin VMMaker.oscog-eem.3739 uuid: 2d2f2ceb-57d6-4381-b5c9-1a3f4bc795de
6+
ADPCMCodec Sound-eem.101 uuid: 4ab78406-7cdb-4a35-abbd-b155a7a18bf4
77
*/
8-
static char __buildInfo[] = "ADPCMCodecPlugin VMMaker.oscog-eem.3668 uuid: d0a2c840-707b-457e-9ff3-c455828ac41c\n\
9-
ADPCMCodec * Sound-ct.99 uuid: 7a1c260a-5b6b-4cb3-8482-de3a78628508 " __DATE__ ;
8+
static char __buildInfo[] = "ADPCMCodecPlugin VMMaker.oscog-eem.3739 uuid: 2d2f2ceb-57d6-4381-b5c9-1a3f4bc795de\n\
9+
ADPCMCodec Sound-eem.101 uuid: 4ab78406-7cdb-4a35-abbd-b155a7a18bf4 " __DATE__ ;
1010

1111

1212
#include "config.h"
@@ -50,25 +50,25 @@ EXPORT(sqInt) setInterpreter(struct VirtualMachine *anInterpreter);
5050
#if !defined(SQUEAK_BUILTIN_PLUGIN)
5151
static sqInt (*failed)(void);
5252
static void * (*fetchArrayofObject)(sqInt fieldIndex, sqInt objectPointer);
53-
static sqInt (*fetchIntegerofObject)(sqInt fieldIndex, sqInt objectPointer);
53+
static sqLong (*fetchIntegerofObject)(sqInt fieldIndex, sqInt objectPointer);
5454
static sqInt (*methodReturnReceiver)(void);
5555
static sqInt (*stackIntegerValue)(sqInt offset);
5656
static sqInt (*stackValue)(sqInt offset);
57-
static sqInt (*storeIntegerofObjectwithValue)(sqInt index, sqInt oop, sqInt integer);
57+
static void (*storeIntegerofObjectwithValue)(sqInt index, sqInt oop, sqLong integer);
5858
static sqInt (*success)(sqInt aBoolean);
5959
#else /* !defined(SQUEAK_BUILTIN_PLUGIN) */
6060
extern sqInt failed(void);
6161
extern void * fetchArrayofObject(sqInt fieldIndex, sqInt objectPointer);
62-
extern sqInt fetchIntegerofObject(sqInt fieldIndex, sqInt objectPointer);
62+
extern sqLong fetchIntegerofObject(sqInt fieldIndex, sqInt objectPointer);
6363
extern sqInt methodReturnReceiver(void);
6464
extern sqInt stackIntegerValue(sqInt offset);
6565
extern sqInt stackValue(sqInt offset);
66-
extern sqInt storeIntegerofObjectwithValue(sqInt index, sqInt oop, sqInt integer);
66+
extern void storeIntegerofObjectwithValue(sqInt index, sqInt oop, sqLong integer);
6767
extern sqInt success(sqInt aBoolean);
6868
extern
6969
#endif
7070
struct VirtualMachine* interpreterProxy;
71-
static const char *moduleName = "ADPCMCodecPlugin VMMaker.oscog-eem.3668 " INT_EXT;
71+
static const char *moduleName = "ADPCMCodecPlugin VMMaker.oscog-eem.3739 " INT_EXT;
7272

7373

7474
/*** Methods ***/

src/plugins/AsynchFilePlugin/AsynchFilePlugin.c

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
/* Automatically generated by
2-
SmartSyntaxPluginCodeGenerator VMMaker.oscog-eem.3668 uuid: d0a2c840-707b-457e-9ff3-c455828ac41c
3-
(Compiler-eem.523)
2+
SmartSyntaxPluginCodeGenerator VMMaker.oscog-eem.3735 uuid: 495c00ff-78b6-4fe0-b5c3-01f52534ee25
3+
(Compiler-ct.529)
44
from
5-
AsynchFilePlugin VMMaker.oscog-eem.3668 uuid: d0a2c840-707b-457e-9ff3-c455828ac41c
5+
AsynchFilePlugin VMMaker.oscog-eem.3735 uuid: 495c00ff-78b6-4fe0-b5c3-01f52534ee25
66
*/
7-
static char __buildInfo[] = "AsynchFilePlugin VMMaker.oscog-eem.3668 uuid: d0a2c840-707b-457e-9ff3-c455828ac41c " __DATE__ ;
7+
static char __buildInfo[] = "AsynchFilePlugin VMMaker.oscog-eem.3735 uuid: 495c00ff-78b6-4fe0-b5c3-01f52534ee25 " __DATE__ ;
88

99

1010
#include "config.h"
@@ -54,7 +54,11 @@ EXPORT(sqInt) shutdownModule(void);
5454
#if !defined(SQUEAK_BUILTIN_PLUGIN)
5555
static sqInt (*booleanValueOf)(sqInt obj);
5656
static sqInt (*byteSizeOf)(sqInt oop);
57+
#if VM_PROXY_MAJOR > 1 || (VM_PROXY_MAJOR == 1 && VM_PROXY_MINOR >= 17)
5758
static sqInt (*bytesPerElement)(sqInt oop);
59+
#else
60+
# define bytesPerElement(oop) 0
61+
#endif
5862
static sqInt (*classByteArray)(void);
5963
static sqInt (*failed)(void);
6064
static void * (*firstIndexableField)(sqInt oop);
@@ -66,7 +70,11 @@ static sqInt (*integerObjectOf)(sqInt value);
6670
static sqInt (*integerValueOf)(sqInt oop);
6771
#endif
6872
static void * (*ioLoadFunctionFrom)(char *functionName, char *moduleName);
73+
#if VM_PROXY_MAJOR > 1 || (VM_PROXY_MAJOR == 1 && VM_PROXY_MINOR >= 15)
6974
static sqInt (*isBooleanObject)(sqInt oop);
75+
#else
76+
# define isBooleanObject(oop) 0
77+
#endif
7078
static sqInt (*isBytes)(sqInt oop);
7179
#if !defined(isIntegerObject)
7280
static sqInt (*isIntegerObject)(sqInt objectPointer);
@@ -112,7 +120,7 @@ extern sqInt stackValue(sqInt offset);
112120
extern
113121
#endif
114122
struct VirtualMachine* interpreterProxy;
115-
static const char *moduleName = "AsynchFilePlugin VMMaker.oscog-eem.3668 " INT_EXT;
123+
static const char *moduleName = "AsynchFilePlugin VMMaker.oscog-eem.3735 " INT_EXT;
116124
static void * sCOAFfn;
117125

118126

src/plugins/B2DPlugin/B2DPlugin.c

Lines changed: 36 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
/* Automatically generated by
2-
VMPluginCodeGenerator VMMaker.oscog-eem.3699 uuid: 2952dbcc-35c1-4c63-8bf1-bfac32f0e33d
3-
(Compiler-eem.526)
2+
VMPluginCodeGenerator VMMaker.oscog-eem.3739 uuid: 2d2f2ceb-57d6-4381-b5c9-1a3f4bc795de
3+
(Compiler-ct.529)
44
from
5-
BalloonEnginePlugin VMMaker.oscog-eem.3699 uuid: 2952dbcc-35c1-4c63-8bf1-bfac32f0e33d
5+
BalloonEnginePlugin VMMaker.oscog-eem.3739 uuid: 2d2f2ceb-57d6-4381-b5c9-1a3f4bc795de
66
*/
7-
static char __buildInfo[] = "BalloonEnginePlugin VMMaker.oscog-eem.3699 uuid: 2952dbcc-35c1-4c63-8bf1-bfac32f0e33d " __DATE__ ;
7+
static char __buildInfo[] = "BalloonEnginePlugin VMMaker.oscog-eem.3739 uuid: 2d2f2ceb-57d6-4381-b5c9-1a3f4bc795de " __DATE__ ;
88

99

1010
#include "config.h"
@@ -419,7 +419,7 @@ static sqInt (*classBitmap)(void);
419419
static sqInt (*classPoint)(void);
420420
static sqInt (*failed)(void);
421421
static sqInt (*fetchClassOf)(sqInt oop);
422-
static sqInt (*fetchIntegerofObject)(sqInt fieldIndex, sqInt objectPointer);
422+
static sqLong (*fetchIntegerofObject)(sqInt fieldIndex, sqInt objectPointer);
423423
static sqInt (*fetchPointerofObject)(sqInt index, sqInt oop);
424424
static void * (*firstIndexableField)(sqInt oop);
425425
static double (*floatValueOf)(sqInt oop);
@@ -432,14 +432,22 @@ static sqInt (*isArray)(sqInt oop);
432432
static sqInt (*isBytes)(sqInt oop);
433433
static sqInt (*isFloatObject)(sqInt oop);
434434
#if !defined(isImmediate)
435+
#if VM_PROXY_MAJOR > 1 || (VM_PROXY_MAJOR == 1 && VM_PROXY_MINOR >= 13)
435436
static sqInt (*isImmediate)(sqInt anObject);
437+
#else
438+
# define isImmediate(anObject) 0
436439
#endif
440+
#endif /* !defined(isImmediate) */
437441
#if !defined(isIntegerObject)
438442
static sqInt (*isIntegerObject)(sqInt objectPointer);
439443
#endif
440444
#if IMMUTABILITY
445+
#if IMMUTABILITY
441446
static sqInt (*isOopImmutable)(sqInt oop);
442447
#endif /* IMMUTABILITY */
448+
#else
449+
# define isOopImmutable(oop) 0
450+
#endif
443451
static sqInt (*isPointers)(sqInt oop);
444452
static sqInt (*isWords)(sqInt oop);
445453
static sqInt (*makePointwithxValueyValue)(sqInt xValue, sqInt yValue);
@@ -460,10 +468,14 @@ static sqInt (*pushBool)(sqInt trueOrFalse);
460468
static sqInt (*pushInteger)(sqInt integerValue);
461469
static sqInt (*slotSizeOf)(sqInt oop);
462470
static sqInt (*stackIntegerValue)(sqInt offset);
471+
#if VM_PROXY_MAJOR > 1 || (VM_PROXY_MAJOR == 1 && VM_PROXY_MINOR >= 17)
463472
static sqInt (*stackMutableObjectValue)(sqInt offset);
473+
#else
474+
# define stackMutableObjectValue(offset) 0
475+
#endif
464476
static sqInt (*stackObjectValue)(sqInt offset);
465477
static sqInt (*stackValue)(sqInt offset);
466-
static sqInt (*storeIntegerofObjectwithValue)(sqInt index, sqInt oop, sqInt integer);
478+
static void (*storeIntegerofObjectwithValue)(sqInt index, sqInt oop, sqLong integer);
467479
static sqInt (*storePointerofObjectwithValue)(sqInt index, sqInt oop, sqInt valuePointer);
468480
#else /* !defined(SQUEAK_BUILTIN_PLUGIN) */
469481
extern sqInt booleanValueOf(sqInt obj);
@@ -472,7 +484,7 @@ extern sqInt classBitmap(void);
472484
extern sqInt classPoint(void);
473485
extern sqInt failed(void);
474486
extern sqInt fetchClassOf(sqInt oop);
475-
extern sqInt fetchIntegerofObject(sqInt fieldIndex, sqInt objectPointer);
487+
extern sqLong fetchIntegerofObject(sqInt fieldIndex, sqInt objectPointer);
476488
extern sqInt fetchPointerofObject(sqInt index, sqInt oop);
477489
extern void * firstIndexableField(sqInt oop);
478490
extern double floatValueOf(sqInt oop);
@@ -528,13 +540,13 @@ extern sqInt stackMutableObjectValue(sqInt offset);
528540
#endif
529541
extern sqInt stackObjectValue(sqInt offset);
530542
extern sqInt stackValue(sqInt offset);
531-
extern sqInt storeIntegerofObjectwithValue(sqInt index, sqInt oop, sqInt integer);
543+
extern void storeIntegerofObjectwithValue(sqInt index, sqInt oop, sqLong integer);
532544
extern sqInt storePointerofObjectwithValue(sqInt index, sqInt oop, sqInt valuePointer);
533545
extern
534546
#endif
535547
struct VirtualMachine* interpreterProxy;
536548
static void * loadBBFn;
537-
static const char *moduleName = "B2DPlugin VMMaker.oscog-eem.3699 " INT_EXT;
549+
static const char *moduleName = "B2DPlugin VMMaker.oscog-eem.3739 " INT_EXT;
538550
static int* objBuffer;
539551
static sqInt objUsed;
540552
static unsigned int* spanBuffer;
@@ -4523,22 +4535,22 @@ loadEdgeStateFrom(sqInt edgeOop)
45234535
if ((slotSizeOf(edgeOop)) < ETBalloonEdgeDataSize) {
45244536
return null;
45254537
}
4526-
value = fetchIntegerofObject(ETXValueIndex, edgeOop);
4538+
value = ((sqInt) (fetchIntegerofObject(ETXValueIndex, edgeOop)));
45274539

45284540
/* begin edgeXValueOf:put: */
45294541
/* obj:at:put: */
45304542
objBuffer[edge + GEXValue] = value;
4531-
value = fetchIntegerofObject(ETYValueIndex, edgeOop);
4543+
value = ((sqInt) (fetchIntegerofObject(ETYValueIndex, edgeOop)));
45324544

45334545
/* begin edgeYValueOf:put: */
45344546
/* obj:at:put: */
45354547
objBuffer[edge + GEYValue] = value;
4536-
value = fetchIntegerofObject(ETZValueIndex, edgeOop);
4548+
value = ((sqInt) (fetchIntegerofObject(ETZValueIndex, edgeOop)));
45374549

45384550
/* begin edgeZValueOf:put: */
45394551
/* obj:at:put: */
45404552
objBuffer[edge + GEZValue] = value;
4541-
value = fetchIntegerofObject(ETLinesIndex, edgeOop);
4553+
value = ((sqInt) (fetchIntegerofObject(ETLinesIndex, edgeOop)));
45424554

45434555
/* begin edgeNumLinesOf:put: */
45444556
/* obj:at:put: */
@@ -4713,13 +4725,13 @@ loadFormsFrom(sqInt arrayOop)
47134725
{
47144726
sqInt bmBits;
47154727
sqInt bmBitsSize;
4716-
sqInt bmDepth;
4717-
sqInt bmHeight;
4718-
sqInt bmRaster;
4719-
sqInt bmWidth;
4728+
sqLong bmDepth;
4729+
sqLong bmHeight;
4730+
sqLong bmRaster;
4731+
sqLong bmWidth;
47204732
sqInt formOop;
47214733
sqInt i;
4722-
sqInt ppw;
4734+
sqLong ppw;
47234735
sqInt toDoLimit;
47244736

47254737
if (!(isArray(arrayOop))) {
@@ -6493,11 +6505,11 @@ primitiveAddBitmapFill(void)
64936505
{
64946506
sqInt bmBits;
64956507
sqInt bmBitsSize;
6496-
sqInt bmDepth;
6508+
sqLong bmDepth;
64976509
sqInt bmFill;
6498-
sqInt bmHeight;
6499-
sqInt bmRaster;
6500-
sqInt bmWidth;
6510+
sqLong bmHeight;
6511+
sqLong bmRaster;
6512+
sqLong bmWidth;
65016513
int *cm;
65026514
int *cmBits;
65036515
sqInt cmOop;
@@ -6511,7 +6523,7 @@ primitiveAddBitmapFill(void)
65116523
sqInt i;
65126524
sqInt nrmOop;
65136525
sqInt originOop;
6514-
sqInt ppw;
6526+
sqLong ppw;
65156527
sqInt tileFlag;
65166528
sqInt tileFlagSqInt;
65176529
sqInt xIndex;
@@ -8368,7 +8380,7 @@ primitiveMergeFillFrom(void)
83688380
sqInt bitsOop;
83698381
sqInt failureCode;
83708382
sqInt fillOop;
8371-
sqInt value;
8383+
sqLong value;
83728384
sqInt valueSqInt;
83738385

83748386
if (doProfileStats) {

src/plugins/B3DAcceleratorPlugin/B3DAcceleratorPlugin.c

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
/* Automatically generated by
2-
VMPluginCodeGenerator VMMaker.oscog-eem.3675 uuid: 4b2d2b05-7985-4fbc-9eb5-ebbc0f408b65
3-
(* Compiler-eem.523)
2+
VMPluginCodeGenerator VMMaker.oscog-eem.3739 uuid: 2d2f2ceb-57d6-4381-b5c9-1a3f4bc795de
3+
(Compiler-ct.529)
44
from
5-
B3DAcceleratorPlugin VMMaker.oscog-eem.3675 uuid: 4b2d2b05-7985-4fbc-9eb5-ebbc0f408b65
5+
B3DAcceleratorPlugin VMMaker.oscog-eem.3739 uuid: 2d2f2ceb-57d6-4381-b5c9-1a3f4bc795de
66
*/
7-
static char __buildInfo[] = "B3DAcceleratorPlugin VMMaker.oscog-eem.3675 uuid: 4b2d2b05-7985-4fbc-9eb5-ebbc0f408b65 " __DATE__ ;
7+
static char __buildInfo[] = "B3DAcceleratorPlugin VMMaker.oscog-eem.3739 uuid: 2d2f2ceb-57d6-4381-b5c9-1a3f4bc795de " __DATE__ ;
88

99

1010
#include "config.h"
@@ -90,7 +90,7 @@ static sqInt doRangeChecks;
9090
#if !defined(SQUEAK_BUILTIN_PLUGIN)
9191
static sqInt (*booleanValueOf)(sqInt obj);
9292
static sqInt (*failed)(void);
93-
static sqInt (*fetchIntegerofObject)(sqInt fieldIndex, sqInt objectPointer);
93+
static sqLong (*fetchIntegerofObject)(sqInt fieldIndex, sqInt objectPointer);
9494
static sqInt (*fetchPointerofObject)(sqInt index, sqInt oop);
9595
static void * (*firstIndexableField)(sqInt oop);
9696
static double (*floatValueOf)(sqInt oop);
@@ -108,14 +108,18 @@ static sqInt (*pushBool)(sqInt trueOrFalse);
108108
static sqInt (*pushInteger)(sqInt integerValue);
109109
static sqInt (*slotSizeOf)(sqInt oop);
110110
static sqInt (*stackIntegerValue)(sqInt offset);
111+
#if VM_PROXY_MAJOR > 1 || (VM_PROXY_MAJOR == 1 && VM_PROXY_MINOR >= 17)
111112
static sqInt (*stackMutableObjectValue)(sqInt offset);
113+
#else
114+
# define stackMutableObjectValue(offset) 0
115+
#endif
112116
static sqInt (*stackObjectValue)(sqInt offset);
113117
static sqInt (*stackValue)(sqInt offset);
114118
static sqInt (*storePointerofObjectwithValue)(sqInt index, sqInt oop, sqInt valuePointer);
115119
#else /* !defined(SQUEAK_BUILTIN_PLUGIN) */
116120
extern sqInt booleanValueOf(sqInt obj);
117121
extern sqInt failed(void);
118-
extern sqInt fetchIntegerofObject(sqInt fieldIndex, sqInt objectPointer);
122+
extern sqLong fetchIntegerofObject(sqInt fieldIndex, sqInt objectPointer);
119123
extern sqInt fetchPointerofObject(sqInt index, sqInt oop);
120124
extern void * firstIndexableField(sqInt oop);
121125
extern double floatValueOf(sqInt oop);
@@ -144,7 +148,7 @@ extern sqInt storePointerofObjectwithValue(sqInt index, sqInt oop, sqInt valuePo
144148
extern
145149
#endif
146150
struct VirtualMachine* interpreterProxy;
147-
static const char *moduleName = "B3DAcceleratorPlugin VMMaker.oscog-eem.3675 " INT_EXT;
151+
static const char *moduleName = "B3DAcceleratorPlugin VMMaker.oscog-eem.3739 " INT_EXT;
148152

149153

150154
/*** Methods ***/
@@ -1342,14 +1346,14 @@ primitiveTextureUpload(void)
13421346
{
13431347
sqInt bits;
13441348
void *bitsPtr;
1345-
sqInt d;
1349+
sqLong d;
13461350
sqInt form;
1347-
sqInt h;
1351+
sqLong h;
13481352
sqInt handle;
1349-
sqInt ppw;
1353+
sqLong ppw;
13501354
sqInt renderer;
13511355
sqInt result;
1352-
sqInt w;
1356+
sqLong w;
13531357

13541358
if (!((methodArgumentCount()) == 3)) {
13551359
return primitiveFail();

0 commit comments

Comments
 (0)