<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Exchange Server">
<!-- converted from text --><style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left: #800000 2px solid; } --></style>
</head>
<body>
<div>
<p dir="ltr">Sorry guys that was the wrong channel...I was telling them that I enjoy reading this list :)</p>
<p dir="ltr">BR, basti </p>
<div class="x_quote">Am 12.12.2014 14:25 schrieb "vm-dev-request@lists.squeakfoundation.org" <vm-dev-request@lists.squeakfoundation.org>:<br type="attribution">
</div>
</div>
<font size="2"><span style="font-size:10pt;">
<div class="PlainText">Send Vm-dev mailing list submissions to<br>
vm-dev@lists.squeakfoundation.org<br>
<br>
To subscribe or unsubscribe via the World Wide Web, visit<br>
<a href="http://lists.squeakfoundation.org/mailman/listinfo/vm-dev">http://lists.squeakfoundation.org/mailman/listinfo/vm-dev</a><br>
or, via email, send a message with subject or body 'help' to<br>
vm-dev-request@lists.squeakfoundation.org<br>
<br>
You can reach the person managing the list at<br>
vm-dev-owner@lists.squeakfoundation.org<br>
<br>
When replying, please edit your Subject line so it is more specific<br>
than "Re: Contents of Vm-dev digest..."<br>
<br>
<br>
Today's Topics:<br>
<br>
1. GCC version > 4.4 (Norbert Hartl)<br>
2. Re: Vm-dev Digest, Vol 102, Issue 47 (Kruck, Bastian)<br>
<br>
<br>
----------------------------------------------------------------------<br>
<br>
Message: 1<br>
Date: Fri, 12 Dec 2014 14:22:41 +0100<br>
From: Norbert Hartl <norbert@hartl.name><br>
Subject: [Vm-dev] GCC version > 4.4<br>
To: Squeak Virtual Machine Development Discussion<br>
<vm-dev@lists.squeakfoundation.org><br>
Message-ID: <4DDE316D-34B7-4631-AEBE-498C38A0796C@hartl.name><br>
Content-Type: text/plain; charset=us-ascii<br>
<br>
I tried to compile the vm with a newer gcc than 4.4. It didn't work with 4.9 and I tested 4.8 and 4.7 which do not work either. The last one I was successful was 4.4. Trying to compile it gives an error about conflicting types. Looking into brought to the signature
of procedures in cogit.c. Here we have something like<br>
<br>
static sqInt abstractRegisterForConcreteRegister(AbstractInstruction * self_in_abstractRegisterForConcreteRegister, sqInt reg) NoDbgRegParms;<br>
<br>
and the definition is<br>
<br>
static sqInt<br>
abstractRegisterForConcreteRegister(AbstractInstruction * self_in_abstractRegisterForConcreteRegister, sqInt reg)<br>
{<br>
<br>
It seems that the NoDbgRegParms is changing the game. So I assume the signatures have to be exactly the same. Putting NoDbgRegParms after the parentheses in the definition does not work. So I changed both to have it in front like<br>
<br>
NoDbgRegParms static sqInt abstractRegisterForConcreteRegister(AbstractInstruction * self_in_abstractRegisterForConcreteRegister, sqInt reg);<br>
<br>
and<br>
<br>
NoDbgRegParms static sqInt<br>
abstractRegisterForConcreteRegister(AbstractInstruction * self_in_abstractRegisterForConcreteRegister, sqInt reg)<br>
{<br>
<br>
and this compiles for me. So two questions:<br>
<br>
- am I write with my assumption and is the change a valid solution for the problem<br>
- if yes will you change it or should I give it a try. It will take some time for me to figure out where that is exactly in the VMMaker code and I assume that it is a no-brainer for someone developing actively with VMMaker<br>
<br>
regards,<br>
<br>
Norbert<br>
<br>
------------------------------<br>
<br>
Message: 2<br>
Date: Fri, 12 Dec 2014 13:25:49 +0000<br>
From: "Kruck, Bastian" <Bastian.Kruck@student.hpi.uni-potsdam.de><br>
Subject: [Vm-dev] Re: Vm-dev Digest, Vol 102, Issue 47<br>
To: "vm-dev@lists.squeakfoundation.org"<br>
<vm-dev@lists.squeakfoundation.org><br>
Message-ID:<br>
<C977D65C57965347851FA58806AFD2550E1BC6B7@MXSTU2012.hpi.uni-potsdam.de><br>
<br>
Content-Type: text/plain; charset="iso-8859-1"<br>
<br>
Oh Mann, das ist spannend, die vm-dev List zu verfolgen!<br>
<br>
Danke Tobi f?r die Aufforderung, mich da einzischreiben,<br>
<br>
Danke Bert f?r die Diskussionen<br>
<br>
:=]]<br>
<br>
Basti<br>
<br>
Am 12.12.2014 13:01 schrieb "vm-dev-request@lists.squeakfoundation.org" <vm-dev-request@lists.squeakfoundation.org>:<br>
Send Vm-dev mailing list submissions to<br>
vm-dev@lists.squeakfoundation.org<br>
<br>
To subscribe or unsubscribe via the World Wide Web, visit<br>
<a href="http://lists.squeakfoundation.org/mailman/listinfo/vm-dev">http://lists.squeakfoundation.org/mailman/listinfo/vm-dev</a><br>
or, via email, send a message with subject or body 'help' to<br>
vm-dev-request@lists.squeakfoundation.org<br>
<br>
You can reach the person managing the list at<br>
vm-dev-owner@lists.squeakfoundation.org<br>
<br>
When replying, please edit your Subject line so it is more specific<br>
than "Re: Contents of Vm-dev digest..."<br>
<br>
<br>
Today's Topics:<br>
<br>
1. Re: Re: Pharo/Squeak versions (using CogVM?) fail immediately<br>
when executed on AMD Athlon XP (Steve Rees)<br>
2. VM Maker: VMMaker.oscog-eem.978.mcz (commits@source.squeak.org)<br>
3. VM Maker: VMMaker.oscog-eem.979.mcz (commits@source.squeak.org)<br>
4. VM Maker: VMMaker.oscog-eem.980.mcz (commits@source.squeak.org)<br>
5. 32/64 bit VM and image combinations (was: egg sucking alert)<br>
(David T. Lewis)<br>
6. 64-bit FFI (was: egg sucking alert) (David T. Lewis)<br>
7. Re: egg sucking alert (Stefan Marr)<br>
<br>
<br>
----------------------------------------------------------------------<br>
<br>
Message: 1<br>
Date: Thu, 11 Dec 2014 22:50:53 +0000<br>
From: Steve Rees <squeak-vm-dev@vimes.worldonline.co.uk><br>
Subject: Re: [Vm-dev] Re: Pharo/Squeak versions (using CogVM?) fail<br>
immediately when executed on AMD Athlon XP<br>
To: vm-dev@lists.squeakfoundation.org<br>
Message-ID: <548A1FCD.4010406@vimes.worldonline.co.uk><br>
Content-Type: text/plain; charset=UTF-8; format=flowed<br>
<br>
<br>
On 11/12/2014 19:29, osl wrote:<br>
> Eliot Miranda-2 wrote<br>
>> But an Athlon is 15 years old now and very sloooooow. You could pick up a<br>
>> modern machine very cheaply. Can you not upgrade your hardware?<br>
> I guess it's a mix of nostalgia and an "if it ain't broke don't upgrade it"<br>
> mindset. :)<br>
Well, in this context at least, you could class it as "broke" in that it<br>
won't run the stuff you want, if you are looking for an excuse to upgrade :D<br>
<br>
Steve<br>
<br>
--<br>
You can follow me on twitter at <a href="http://twitter.com/smalltalkhacker">http://twitter.com/smalltalkhacker</a><br>
<br>
<br>
<br>
<br>
------------------------------<br>
<br>
Message: 2<br>
Date: Thu, 11 Dec 2014 22:58:04.522 0000<br>
From: commits@source.squeak.org<br>
Subject: [Vm-dev] VM Maker: VMMaker.oscog-eem.978.mcz<br>
To: vm-dev@lists.squeakfoundation.org<br>
Message-ID:<br>
<mailman.0.1418385633.10973.vm-dev@lists.squeakfoundation.org><br>
<br>
Eliot Miranda uploaded a new version of VMMaker to project VM Maker:<br>
<a href="http://source.squeak.org/VMMaker/VMMaker.oscog-eem.978.mcz">http://source.squeak.org/VMMaker/VMMaker.oscog-eem.978.mcz</a><br>
<br>
==================== Summary ====================<br>
<br>
Name: VMMaker.oscog-eem.978<br>
Author: eem<br>
Time: 11 December 2014, 2:56:59.634 pm<br>
UUID: 1af5bc4f-0f74-4dcb-bebb-24e2d2265a05<br>
Ancestors: VMMaker.oscog-eem.977<br>
<br>
Generate the right casts for left shift beyond the int<br>
range.<br>
Generate the right error code for negative arguments<br>
to primitiveSizeInBytesOfInstance<br>
<br>
=============== Diff against VMMaker.oscog-eem.977 ===============<br>
<br>
Item was changed:<br>
----- Method: CCodeGenerator>>generateShiftLeft:on:indent: (in category 'C translation') -----<br>
generateShiftLeft: msgNode on: aStream indent: level<br>
"Generate a C bitShift. If we can determine the result<br>
would overflow the word size, cast to a long integer."<br>
+ | rcvr arg valueBeyondInt castToLong |<br>
- | rcvr arg bitSizeOfInt |<br>
- bitSizeOfInt := 1 bitShift: BytesPerWord * 4. "The default type of const << N is int."<br>
rcvr := msgNode receiver.<br>
arg := msgNode args first.<br>
+ valueBeyondInt := 1 bitShift: BytesPerWord * 4. "The default type of const << N is int."<br>
+ castToLong := false.<br>
+ rcvr constantNumbericValueOrNil ifNotNil:<br>
+ [:rcvrVal|<br>
+ arg constantNumbericValueOrNil ifNotNil:<br>
+ [:argVal|<br>
+ castToLong := rcvrVal < valueBeyondInt<br>
+ and: [(rcvrVal bitShift: argVal) >= valueBeyondInt]]].<br>
+ castToLong<br>
+ ifTrue:<br>
+ [rcvr isConstant<br>
+ ifTrue:<br>
+ [self emitCExpression: rcvr on: aStream.<br>
+ aStream nextPutAll: 'LL']<br>
+ ifFalse:<br>
+ [aStream nextPutAll: '((unsigned long)'.<br>
+ self emitCExpression: rcvr on: aStream.<br>
+ aStream nextPut: $)]]<br>
+ ifFalse:<br>
+ [self emitCExpression: rcvr on: aStream].<br>
- self emitCExpression: rcvr on: aStream.<br>
- (rcvr isConstant and: [arg isConstant<br>
- and: [rcvr value isInteger and: [arg value isInteger<br>
- and: [rcvr value < (1 bitShift: BytesPerWord * 8)<br>
- and: [(rcvr value bitShift: arg value) >= bitSizeOfInt]]]]]) ifTrue:<br>
- [aStream nextPutAll: 'LL'].<br>
aStream nextPutAll: ' << '.<br>
self emitCExpression: arg on: aStream!<br>
<br>
Item was changed:<br>
----- Method: SpurMemoryManager>>byteSizeOfInstanceOf:withIndexableSlots:errInto: (in category 'indexing primitive support') -----<br>
byteSizeOfInstanceOf: classObj withIndexableSlots: nElements errInto: errorBlock<br>
| instSpec classFormat numSlots |<br>
<var: 'numSlots' type: #usqInt><br>
classFormat := self formatOfClass: classObj.<br>
instSpec := self instSpecOfClassFormat: classFormat.<br>
instSpec caseOf: {<br>
[self arrayFormat] -><br>
[numSlots := nElements].<br>
[self indexablePointersFormat] -><br>
[numSlots := (self fixedFieldsOfClassFormat: classFormat) + nElements].<br>
[self weakArrayFormat] -><br>
[numSlots := (self fixedFieldsOfClassFormat: classFormat) + nElements].<br>
[self sixtyFourBitIndexableFormat] -><br>
[numSlots := self bytesPerOop = 4 ifTrue: [nElements * 2] ifFalse: [nElements]].<br>
[self firstLongFormat] -><br>
[numSlots := self bytesPerOop = 4 ifTrue: [nElements] ifFalse: [nElements + 1 // 2]].<br>
[self firstShortFormat] -><br>
[numSlots := self bytesPerOop = 4 ifTrue: [nElements + 1 // 2] ifFalse: [nElements + 3 // 4]].<br>
[self firstByteFormat] -><br>
[numSlots := nElements + (self bytesPerOop - 1) // self bytesPerOop].<br>
[self firstCompiledMethodFormat] -> "Assume nElements is derived from CompiledMethod>>basicSize."<br>
[numSlots := nElements + (self bytesPerOop - 1) // self bytesPerOop] }<br>
otherwise: [^errorBlock value: PrimErrBadReceiver negated]. "non-indexable"<br>
+ numSlots >= (1 asLong << (self bytesPerOop * 8 - self logBytesPerOop)) ifTrue:<br>
+ [^errorBlock value: (nElements < 0 ifTrue: [PrimErrBadArgument] ifFalse: [PrimErrLimitExceeded])].<br>
- numSlots >= (1 << (self bytesPerOop * 8 - self logBytesPerOop)) ifTrue:<br>
- [^errorBlock value: PrimErrLimitExceeded].<br>
^self objectBytesForSlots: numSlots!<br>
<br>
<br>
<br>
------------------------------<br>
<br>
Message: 3<br>
Date: Fri, 12 Dec 2014 01:15:09.064 0000<br>
From: commits@source.squeak.org<br>
Subject: [Vm-dev] VM Maker: VMMaker.oscog-eem.979.mcz<br>
To: vm-dev@lists.squeakfoundation.org<br>
Message-ID:<br>
<mailman.1.1418385633.10973.vm-dev@lists.squeakfoundation.org><br>
<br>
Eliot Miranda uploaded a new version of VMMaker to project VM Maker:<br>
<a href="http://source.squeak.org/VMMaker/VMMaker.oscog-eem.979.mcz">http://source.squeak.org/VMMaker/VMMaker.oscog-eem.979.mcz</a><br>
<br>
==================== Summary ====================<br>
<br>
Name: VMMaker.oscog-eem.979<br>
Author: eem<br>
Time: 11 December 2014, 5:14:05.949 pm<br>
UUID: 6e5d060a-75ea-42ab-8dd3-ac3d7a550ed9<br>
Ancestors: VMMaker.oscog-eem.978<br>
<br>
Handle not in nilOrBooleanConstantReceiverOf:<br>
<br>
Don't do the 32-bit swap in a 32-bit words object in<br>
64-bit Spur. May have to do it in a 64-bit word obj<br>
in 64-bit Spur, but it can wait.<br>
<br>
=============== Diff against VMMaker.oscog-eem.978 ===============<br>
<br>
Item was changed:<br>
----- Method: CCodeGenerator>>nilOrBooleanConstantReceiverOf: (in category 'utilities') -----<br>
nilOrBooleanConstantReceiverOf: aNode<br>
"Answer nil or the boolean constant that is the receiver of the given message send.<br>
Used to suppress conditional code when the condition is a translation-time constant."<br>
<br>
| val receiver argument |<br>
generateDeadCode ifTrue:[^nil].<br>
((self isConstantNode: aNode valueInto: [:v| val := v])<br>
and: [#(true false) includes: val]) ifTrue:<br>
[^val].<br>
aNode isSend ifTrue:<br>
+ [aNode selector == #not ifTrue:<br>
+ [(self nilOrBooleanConstantReceiverOf: aNode receiver) ifNotNil:<br>
+ [:bool| ^bool not]].<br>
+ ((#(or: and:) includes: aNode selector)<br>
- [((#(or: and:) includes: aNode selector)<br>
and: [aNode args last isStmtList<br>
and: [aNode args last statements size = 1]]) ifTrue:<br>
[(self nilOrBooleanConstantReceiverOf: aNode receiver) ifNotNil:<br>
[:rcvr|<br>
((rcvr == false and: [aNode selector == #and:])<br>
or: [rcvr == true and: [aNode selector == #or:]]) ifTrue:<br>
[^rcvr].<br>
(self nilOrBooleanConstantReceiverOf: aNode args last statements first) ifNotNil:<br>
[:arg|<br>
^rcvr perform: aNode selector with: [arg]]]].<br>
((#(= ~= < > <= >=) includes: aNode selector)<br>
and: [(self isConstantNode: aNode receiver valueInto: [:v| receiver := v])<br>
and: [receiver isInteger<br>
and: [(self isConstantNode: aNode args first valueInto: [:v| argument := v])<br>
and: [argument isInteger]]]]) ifTrue:<br>
[^receiver perform: aNode selector with: argument]].<br>
^nil!<br>
<br>
Item was changed:<br>
----- Method: StackInterpreter>>updateObjectsPostByteSwap (in category 'image save/restore') -----<br>
updateObjectsPostByteSwap<br>
"Byte-swap the words of all bytes objects in the image, including Strings, ByteArrays,<br>
and CompiledMethods. This returns these objects to their original byte ordering<br>
after blindly byte-swapping the entire image. For compiled methods, byte-swap<br>
only their bytecodes part. Ensure floats are in platform-order."<br>
| swapFloatWords |<br>
swapFloatWords := objectMemory vmEndianness ~= imageFloatsBigEndian.<br>
self assert: ClassFloatCompactIndex ~= 0.<br>
objectMemory allObjectsDo:<br>
[:oop| | fmt wordAddr methodHeader temp |<br>
fmt := objectMemory formatOf: oop.<br>
fmt >= self firstByteFormat ifTrue: "oop contains bytes"<br>
[wordAddr := oop + objectMemory baseHeaderSize.<br>
fmt >= self firstCompiledMethodFormat ifTrue: "compiled method; start after methodHeader and literals"<br>
[methodHeader := self longAt: oop + objectMemory baseHeaderSize.<br>
wordAddr := wordAddr + (((objectMemory literalCountOfMethodHeader: methodHeader) + LiteralStart) * objectMemory bytesPerOop)].<br>
objectMemory reverseBytesFrom: wordAddr to: oop + (objectMemory sizeBitsOf: oop)].<br>
fmt = self firstLongFormat ifTrue: "Bitmap, Float etc"<br>
[(swapFloatWords<br>
and: [(objectMemory compactClassIndexOf: oop) = ClassFloatCompactIndex])<br>
ifTrue:<br>
[temp := self longAt: oop + objectMemory baseHeaderSize.<br>
self longAt: oop + objectMemory baseHeaderSize put: (self longAt: oop + objectMemory baseHeaderSize + 4).<br>
self longAt: oop + objectMemory baseHeaderSize + 4 put: temp]<br>
ifFalse:<br>
+ [(objectMemory hasSpurMemoryManagerAPI not<br>
+ and: [objectMemory wordSize = 8]) ifTrue: "Object contains 32-bit half-words packed into 64-bit machine words."<br>
- [objectMemory wordSize = 8 ifTrue: "Object contains 32-bit half-words packed into 64-bit machine words."<br>
[wordAddr := oop + objectMemory baseHeaderSize.<br>
objectMemory reverseWordsFrom: wordAddr to: oop + (objectMemory sizeBitsOf: oop)]]]]!<br>
<br>
<br>
<br>
------------------------------<br>
<br>
Message: 4<br>
Date: Fri, 12 Dec 2014 01:26:36.921 0000<br>
From: commits@source.squeak.org<br>
Subject: [Vm-dev] VM Maker: VMMaker.oscog-eem.980.mcz<br>
To: vm-dev@lists.squeakfoundation.org<br>
Message-ID:<br>
<mailman.2.1418385633.10973.vm-dev@lists.squeakfoundation.org><br>
<br>
Eliot Miranda uploaded a new version of VMMaker to project VM Maker:<br>
<a href="http://source.squeak.org/VMMaker/VMMaker.oscog-eem.980.mcz">http://source.squeak.org/VMMaker/VMMaker.oscog-eem.980.mcz</a><br>
<br>
==================== Summary ====================<br>
<br>
Name: VMMaker.oscog-eem.980<br>
Author: eem<br>
Time: 11 December 2014, 5:25:43.82 pm<br>
UUID: 3d7d339f-6a22-4bd1-b959-cddf9c41cc60<br>
Ancestors: VMMaker.oscog-eem.979<br>
<br>
And fix the regression in generateShiftLeft:on:indent:<br>
<br>
=============== Diff against VMMaker.oscog-eem.979 ===============<br>
<br>
Item was changed:<br>
----- Method: CCodeGenerator>>generateShiftLeft:on:indent: (in category 'C translation') -----<br>
generateShiftLeft: msgNode on: aStream indent: level<br>
"Generate a C bitShift. If we can determine the result<br>
would overflow the word size, cast to a long integer."<br>
| rcvr arg valueBeyondInt castToLong |<br>
rcvr := msgNode receiver.<br>
arg := msgNode args first.<br>
+ valueBeyondInt := 1 bitShift: 32. "The default type of const << N is int."<br>
- valueBeyondInt := 1 bitShift: BytesPerWord * 4. "The default type of const << N is int."<br>
castToLong := false.<br>
rcvr constantNumbericValueOrNil ifNotNil:<br>
[:rcvrVal|<br>
arg constantNumbericValueOrNil ifNotNil:<br>
[:argVal|<br>
castToLong := rcvrVal < valueBeyondInt<br>
and: [(rcvrVal bitShift: argVal) >= valueBeyondInt]]].<br>
castToLong<br>
ifTrue:<br>
[rcvr isConstant<br>
ifTrue:<br>
[self emitCExpression: rcvr on: aStream.<br>
aStream nextPutAll: 'LL']<br>
ifFalse:<br>
[aStream nextPutAll: '((unsigned long)'.<br>
self emitCExpression: rcvr on: aStream.<br>
aStream nextPut: $)]]<br>
ifFalse:<br>
[self emitCExpression: rcvr on: aStream].<br>
aStream nextPutAll: ' << '.<br>
self emitCExpression: arg on: aStream!<br>
<br>
<br>
<br>
------------------------------<br>
<br>
Message: 5<br>
Date: Thu, 11 Dec 2014 23:25:06 -0500<br>
From: "David T. Lewis" <lewis@mail.msen.com><br>
Subject: [Vm-dev] 32/64 bit VM and image combinations (was: egg<br>
sucking alert)<br>
To: Squeak Virtual Machine Development Discussion<br>
<vm-dev@lists.squeakfoundation.org><br>
Message-ID: <20141212042506.GA3243@shell.msen.com><br>
Content-Type: text/plain; charset=us-ascii<br>
<br>
On Thu, Dec 11, 2014 at 10:30:41AM -0800, John McIntosh wrote:<br>
><br>
> Recall at the time Apple didn't have 64bit support for a program to run<br>
> under Cocoa, plus only a limited number of machines support 64 bit kernels.<br>
> The fact you could go with a a 64 bit image on an 32bit machine allowed us<br>
> to debug the base VM.<br>
><br>
> I agree the 32/64 64/32 is nice and symmetric, but I'm afraid it's a nice<br>
> to have versus need now. If it's not seamless to write software and plugins<br>
> that honour that agreement, then it's a world of trouble and hassle that<br>
> it's not worth pursuing further.<br>
<br>
For the record, and possibly to offer some perspective:<br>
<br>
Getting the VM to work for all combinations of 32/64 bit image and VM was<br>
not any extra work at all. The hard part was getting the 64-bit VM with<br>
32-bit image to work. Once the type declarations were cleaned up well enough<br>
to support this, the rest came along for free.<br>
<br>
The 64-bit VMs work fine, and I have been using them for a long time (several<br>
years I guess). Linux users can find one at <a href="http://squeakvm.org/unix/">http://squeakvm.org/unix/</a>.<br>
<br>
The 64-bit VM with 32-bit image is a particularly important configuration,<br>
because it involves 64-bit machine pointers and 32-bit ints. This combination<br>
will quickly expose the majority of problems related to pointer and word sizes.<br>
If you want to make a plugin 32/64 bit clean (and there are several remaining<br>
to be tidied up), this configuration is essential.<br>
<br>
Dave<br>
<br>
<br>
<br>
------------------------------<br>
<br>
Message: 6<br>
Date: Thu, 11 Dec 2014 23:32:14 -0500<br>
From: "David T. Lewis" <lewis@mail.msen.com><br>
Subject: [Vm-dev] 64-bit FFI (was: egg sucking alert)<br>
To: Squeak Virtual Machine Development Discussion<br>
<vm-dev@lists.squeakfoundation.org><br>
Message-ID: <20141212043214.GB3243@shell.msen.com><br>
Content-Type: text/plain; charset=us-ascii<br>
<br>
On Thu, Dec 11, 2014 at 10:28:04AM -0800, Eliot Miranda wrote:<br>
><br>
> On Thu, Dec 11, 2014 at 3:12 AM, Bert Freudenberg <bert@freudenbergs.de> wrote:<br>
> ><br>
> > On 11.12.2014, at 03:01, Eliot Miranda <eliot.miranda@gmail.com> wrote:<br>
> ><br>
> > There's an oddity of a 32-bit VM compiled in 64-bit mode on a 64-bit<br>
> > machine. I don't know of anyone using it.<br>
> ><br>
> Right. But since the rationale for this VM is only to interface with<br>
> 64-bit libraries, it depends on a 64-bit FFI, which we do not have.<br>
<br>
I realize that this refers to the VMs and FFI implementations that are<br>
actually available in released VMs, but just for the historical record:<br>
<br>
A working 64-bit FFI has been available since 2008, but the patches were not<br>
adopted. Source patches and issue status are here:<br>
<br>
<a href="http://bugs.squeak.org/view.php?id=7237">http://bugs.squeak.org/view.php?id=7237</a><br>
<br>
My intention had been to make this a top priority for the VM team circa 2009,<br>
but other priorities took precedence.<br>
<br>
Since then, the original FFI has been rendered obsolete by later development,<br>
and as a practical matter there is no 64-bit FFI available today.<br>
<br>
There were image side changes to the Mantis 7237 patches, and I'm not sure<br>
if these will be relevant to Eliot's newer FFI implementation. I'll try<br>
to look into this and report back if I find anything of interest.<br>
<br>
Dave<br>
<br>
<br>
<br>
------------------------------<br>
<br>
Message: 7<br>
Date: Fri, 12 Dec 2014 11:03:00 +0100<br>
From: Stefan Marr <smalltalk@stefan-marr.de><br>
Subject: Re: [Vm-dev] egg sucking alert<br>
To: Squeak Virtual Machine Development Discussion<br>
<vm-dev@lists.squeakfoundation.org><br>
Message-ID: <BEBAC3AD-5E96-4401-990F-D87B13699DD1@stefan-marr.de><br>
Content-Type: text/plain; charset=us-ascii<br>
<br>
Hi:<br>
<br>
> On 11 Dec 2014, at 19:28, Eliot Miranda <eliot.miranda@gmail.com> wrote:<br>
><br>
> Bollocks. long is an integral type defined to be large enough to take a pointer.<br>
<br>
Ignoring all the other issues in this thread, I would be very hesitant to take this statement as a general truth.<br>
The last time I checked, the C standard defined only intptr_t and uintptr_t to be guaranteed to be a capable of holding pointers.<br>
<br>
Best regards<br>
Stefan<br>
<br>
--<br>
Stefan Marr<br>
INRIA Lille - Nord Europe<br>
<a href="http://stefan-marr.de/research/">http://stefan-marr.de/research/</a><br>
<br>
<br>
<br>
<br>
<br>
------------------------------<br>
<br>
_______________________________________________<br>
Vm-dev mailing list<br>
Vm-dev@lists.squeakfoundation.org<br>
<a href="http://lists.squeakfoundation.org/mailman/listinfo/vm-dev">http://lists.squeakfoundation.org/mailman/listinfo/vm-dev</a><br>
<br>
<br>
End of Vm-dev Digest, Vol 102, Issue 47<br>
***************************************<br>
-------------- next part --------------<br>
An HTML attachment was scrubbed...<br>
URL: <a href="http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20141212/f2b51d79/attachment.htm">
http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20141212/f2b51d79/attachment.htm</a><br>
<br>
------------------------------<br>
<br>
_______________________________________________<br>
Vm-dev mailing list<br>
Vm-dev@lists.squeakfoundation.org<br>
<a href="http://lists.squeakfoundation.org/mailman/listinfo/vm-dev">http://lists.squeakfoundation.org/mailman/listinfo/vm-dev</a><br>
<br>
<br>
End of Vm-dev Digest, Vol 102, Issue 48<br>
***************************************<br>
</div>
</span></font>
</body>
</html>