<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel rdf:about="http://blog.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel">
    <title>gmane.comp.lang.smalltalk.squeak.vm.devel</title>
    <link>http://blog.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel</link>
    <description/>
    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>1</syn:updateFrequency>
    <syn:updateBase>1901-01-01T00:00+00:00</syn:updateBase>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8268"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8265"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8261"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8253"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8251"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8250"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8247"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8244"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8243"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8242"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8236"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8234"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8233"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8232"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8231"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8220"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8218"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8212"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8211"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8207"/>
      </rdf:Seq>
    </items>
    <image rdf:resource="http://gmane.org/img/gmane-25t.png"/>
    <textinput rdf:resource=""/>
  </channel>
  <image rdf:about="http://gmane.org/img/gmane-25t.png">
    <title>Gmane</title>
    <url>http://gmane.org/img/gmane-25t.png</url>
    <link>http://gmane.org</link>
  </image>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8268">
    <title>VM Maker: CMakeVMMaker-EstebanLorenzano.162.mcz</title>
    <link>http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8268</link>
    <description>&lt;pre&gt; 
Esteban Lorenzano uploaded a new version of CMakeVMMaker to project VM Maker:
http://source.squeak.org/VMMaker/CMakeVMMaker-EstebanLorenzano.162.mcz

==================== Summary ====================

Name: CMakeVMMaker-EstebanLorenzano.162
Author: EstebanLorenzano
Time: 26 May 2012, 4:41:12.404 pm
UUID: 089b3b44-e5ce-4136-8c58-92e3cd02523f
Ancestors: CMakeVMMaker-EstebanLorenzano.161

configuration for SocketPlugin (still not working)

=============== Diff against CMakeVMMaker-EstebanLorenzano.161 ===============

Item was changed:
  ----- Method: StackIPhoneConfig&amp;gt;&amp;gt;configureSocketPlugin: (in category 'plugin extra rules') -----
  configureSocketPlugin: maker
+ super configureSocketPlugin: maker.
+ maker includeDirectories: '${SDKROOT}/usr/include'.  "for tcp.h"!
- !


&lt;/pre&gt;</description>
    <dc:creator>commits&lt; at &gt;source.squeak.org</dc:creator>
    <dc:date>2012-05-26T00:00:00</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8265">
    <title>VM Maker: CMakeVMMaker-EstebanLorenzano.161.mcz</title>
    <link>http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8265</link>
    <description>&lt;pre&gt; 
Esteban Lorenzano uploaded a new version of CMakeVMMaker to project VM Maker:
http://source.squeak.org/VMMaker/CMakeVMMaker-EstebanLorenzano.161.mcz

==================== Summary ====================

Name: CMakeVMMaker-EstebanLorenzano.161
Author: EstebanLorenzano
Time: 26 May 2012, 2:40:25.949 pm
UUID: df6334ae-3ff0-4ab9-bc23-215b2943adf4
Ancestors: CMakeVMMaker-EstebanLorenzano.160

changes for iphone

=============== Diff against CMakeVMMaker-EstebanLorenzano.160 ===============

Item was changed:
  ----- Method: CogFamilyCocoaIOSConfig&amp;gt;&amp;gt;compilerFlagsDebug (in category 'settings') -----
  compilerFlagsDebug
+ ^#('-g3' '-O1' '-DDEBUGVM=1')!
- ^#('-g3' '-O0' '-DDEBUGVM=1')!

Item was changed:
  ----- Method: StackIPhoneConfig&amp;gt;&amp;gt;commonCompilerFlags (in category 'settings') -----
  commonCompilerFlags
  "Common compiler flags"
  ^{
  "'-miphoneos-version-min=4.3'. "
  '-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS', self sdkVersion, '.sdk'.
  '-x objective-c'.
  '-std=gnu99'.
  '-falign-functions=16'.
  '-fno-gcse'.
  '-fno-cse-follow-jumps'.
  '-fvisibility=hidden'.
  '-funroll-loops'.
  '-finline-functions'.
  '-mno-thumb'.
+ '-fwrapv'.
  '-DSTACKVM=1'.
  '-DCOGMTVM=0'. 
  '-DUSE_GLOBAL_STRUCT=0'. 
  '-DBASE_HEADER_SIZE=4'.
  '-DTARGET_OS_IS_IPHONE'.
  '-DHAVE_UUID_GENERATE'.
  '-DUSE_INLINE_MEMORY_ACCESSORS'. 
  '-DHAVE_SYS_TIME_H'.
  '-DLSB_FIRST'.
  '-DHAVE_NANOSLEEP'.
- "'-DXXXUSE_INLINE_MEMORY_ACCESSORS'."
  '-DISQUEAK_IMAGE=', self imageName.
  '-DISQUEAK_SOURCES=PharoV10'}!

Item was changed:
  ----- Method: StackIPhoneConfig&amp;gt;&amp;gt;compilerFlagsDebug (in category 'settings') -----
  compilerFlagsDebug
+ ^#('-g3' '-O0' '-DDEBUGVM=1')!
- ^#('-g3' '-O2' '-DDEBUGVM=1')!

Item was changed:
  ----- Method: StackIPhoneConfig&amp;gt;&amp;gt;compilerFlagsRelease (in category 'settings') -----
  compilerFlagsRelease
+ ^#('-g0' '-O3' '-fomit-frame-pointer' '-DNDEBUG' '-DDEBUGVM=0' '-DSTACKVM')!
- ^#('-g0' '-O2' '-fomit-frame-pointer' '-DNDEBUG' '-DDEBUGVM=0' '-DSTACKVM')!

Item was added:
+ ----- Method: StackIPhoneConfig&amp;gt;&amp;gt;configureSocketPlugin: (in category 'plugin extra rules') -----
+ configureSocketPlugin: maker
+ !

Item was changed:
  ----- Method: StackIPhoneConfig&amp;gt;&amp;gt;defaultInternalPlugins (in category 'settings') -----
  defaultInternalPlugins
  ^ #(
  ADPCMCodecPlugin
  BMPReadWriterPlugin 
  BalloonEnginePlugin 
  BitBltSimulation 
  DSAPlugin 
  DeflatePlugin 
  "DropPlugin"
  LocalePlugin 
  FFTPlugin 
  FilePlugin 
  FloatArrayPlugin 
  HostWindowPlugin 
  JPEGReadWriter2Plugin 
  JPEGReaderPlugin 
  LargeIntegersPlugin 
  Matrix2x3Plugin 
  MiscPrimitivePlugin 
  "RePlugin" 
  SecurityPlugin 
+ SocketPlugin
- "SocketPlugin"
  SoundCodecPlugin 
  SoundGenerationPlugin 
  SoundPlugin
  SurfacePlugin
  UUIDPlugin
  ObjectiveCPlugin 
+ IOSPlugin)!
- #IOSPlugin)!

Item was changed:
  ----- Method: StackIPhoneConfig&amp;gt;&amp;gt;frameworks (in category 'accessing') -----
  frameworks
  ^ #(
  CoreAudio
  CoreGraphics
  CoreLocation
  UIKit
+ CoreFoundation
  Foundation
  QuartzCore
  OpenGLES
  AudioToolbox
  SystemConfiguration)!


&lt;/pre&gt;</description>
    <dc:creator>commits&lt; at &gt;source.squeak.org</dc:creator>
    <dc:date>2012-05-26T00:00:00</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8261">
    <title>open SlangBrowser??</title>
    <link>http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8261</link>
    <description>&lt;pre&gt; Hi all,
  I'm following the instructions on this page
http://www.squeakvm.org/unix/devel.html ,
  I've loaded the package VMMaker and the SlangBrowser but i have no idea
how to open the SlangBrowser.
  any ideas?


Thanks

&lt;/pre&gt;</description>
    <dc:creator>Bernardo Ezequiel Contreras</dc:creator>
    <dc:date>2012-05-26T05:45:44</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8253">
    <title>About Primitives</title>
    <link>http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8253</link>
    <description>&lt;pre&gt; Hi All

Im analyzing primtives to use them for the concrete type inference project.

Im currently working with primitiveArrayBecomeOneWayCopyHash


primitiveArrayBecomeOneWayCopyHash
      "Similar to primitiveArrayBecomeOneWay but accepts a third argument
whether to copy
      the receiver's identity hash over the argument's identity hash."

      | copyHashFlag arg rcvr |
      copyHashFlag := self booleanValueOf: (self stackTop).
      arg := self stackValue: 1.
      rcvr := self stackValue: 2.
      self success: (self become: rcvr with: arg twoWay: false copyHash:
copyHashFlag).
      successFlag ifTrue: [ self pop: 2 ].


Well, i'm seeing that pop:2, in a method which don't receive any argument.
If pop was 1, i could think in self, but is 2, so the questions are:

1) what is pop:2 in this context
2) why? there's any generalization or rules for understand the stack manage?

Thanks!

Santiago.
&lt;/pre&gt;</description>
    <dc:creator>Santiago Bragagnolo</dc:creator>
    <dc:date>2012-05-25T18:46:40</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8251">
    <title>OSProcess chdir</title>
    <link>http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8251</link>
    <description>&lt;pre&gt; 
UnixOSProcessPlugin&amp;gt;&amp;gt;primitiveChdir
...
(self chdir: path)
ifTrue: [interpreterProxy pop: 2; push: interpreterProxy nilObject]
ifFalse: [interpreterProxy pop: 2; pushInteger: errno].

Shouldn't the conditional branches be reversed (or the test be "(self chdir:
path) == 0" - however you would write that in Slang)? chdir returns 0 on
success and -1 on error. In c, the above becomes:
if (chdir(path))
{...interpreterProxy-&amp;gt;push(interpreterProxy-&amp;gt;nilObject());}
else {...interpreterProxy-&amp;gt;pushInteger(errno);}
So success takes the else branch and returns the irrelevant errno, which I
guess is why I'm getting confusing error codes in Pharo 2.0 even though the
chdir has taken effect.

b.t.w. if the above is correct, how would I submit a patch (i.e. changes to
the UnixOSProcessPlugin class)? 

Thanks,
Sean

--
View this message in context: http://forum.world.st/OSProcess-chdir-tp4631844.html
Sent from the Squeak VM mailing list archive at Nabble.com.

&lt;/pre&gt;</description>
    <dc:creator>Sean P. DeNigris</dc:creator>
    <dc:date>2012-05-25T18:33:17</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8250">
    <title>VM Maker: VMMaker-dtl.272.mcz</title>
    <link>http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8250</link>
    <description>&lt;pre&gt; 
David T. Lewis uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker-dtl.272.mcz

==================== Summary ====================

Name: VMMaker-dtl.272
Author: dtl
Time: 22 May 2012, 11:29:58.621 pm
UUID: 5eeb4798-b79f-4599-aa4e-eaa57e32b4a2
Ancestors: VMMaker-dtl.271

VMMaker 4.9.2

Fix slang browsing for inlined methods in ObjectMemory. The interpreter now collaborates with an object memory, so arrange for Interpreter methods that are inlined into ObjectMemory methods to be properly inlined for #asInlinedCString: code generation.

=============== Diff against VMMaker-dtl.271 ===============

Item was added:
+ ----- Method: Interpreter class&amp;gt;&amp;gt;initializeCodeGenerator: (in category 'translation') -----
+ initializeCodeGenerator: cg
+ "Load a code generator with classes in a manner suitable for generating
+ code for this class."
+ 
+ super initializeCodeGenerator: cg.
+ ^ self initializeClassicObjectMemoryInCodeGenerator: cg
+ "^ self initializeNewObjectMemoryInCodeGenerator: cg"
+ !

Item was removed:
- ----- Method: InterpreterPrimitives class&amp;gt;&amp;gt;initializeCodeGenerator: (in category 'translation') -----
- initializeCodeGenerator: cg
- "Load a code generator with classes in a manner suitable for generating
- code for this class."
- 
- super initializeCodeGenerator: cg.
- ^ self initializeClassicObjectMemoryInCodeGenerator: cg
- "^ self initializeNewObjectMemoryInCodeGenerator: cg"
- !

Item was added:
+ ----- Method: Object&amp;gt;&amp;gt;buildCodeGeneratorInlined: (in category '*VMMaker-translation support') -----
+ buildCodeGeneratorInlined: doInlining
+ "Build a CCodeGenerator for this class. By default, generate only the
+ the methods for aClass. Classes that are normally translated along with
+ other collaborating classes, such as an object memory and its interpreter,
+ may include the collaborating classes when doInlining is true, allowing methods
+ in those classes to be included in the inlining process."
+ 
+  ^self buildCodeGenerator
+ !

Item was added:
+ ----- Method: ObjectMemory class&amp;gt;&amp;gt;buildCodeGeneratorInlined: (in category 'translation') -----
+ buildCodeGeneratorInlined: doInlining
+ "Build a CCodeGenerator for this class. By default, generate only the
+ the methods for aClass. Classes that are normally translated along with
+ other collaborating classes, such as an object memory and its interpreter,
+ may include the collaborating classes when doInlining is true, allowing methods
+ in those classes to be included in the inlining process."
+ 
+  | cg |
+ cg := VMMaker new createCodeGenerator.
+ cg declareMethodsStatic: false.
+ cg permitMethodPruning: true.
+ doInlining
+ ifTrue: ["Include methods from associated classes so that inlining for each
+ method is performed as in normal interp.c generation"
+ ^self interpreterClass initializeCodeGenerator: cg]
+ ifFalse: [^self initializeCodeGenerator: cg]
+ !

Item was added:
+ ----- Method: ObjectMemory class&amp;gt;&amp;gt;interpreterClass (in category 'translation') -----
+ interpreterClass
+ "Answer the interpreter class that is commonly used in collaboration with
+ this type of object memory. When generating inlined methods, some methods
+ from the interpreter class may be inlined into methods in the object memory."
+ 
+ ^Interpreter
+ !

Item was added:
+ ----- Method: StackInterpreter class&amp;gt;&amp;gt;initializeCodeGenerator: (in category 'translation') -----
+ initializeCodeGenerator: cg
+ "Load a code generator with classes in a manner suitable for generating
+ code for this class."
+ 
+ super initializeCodeGenerator: cg.
+ ^ self initializeNewObjectMemoryInCodeGenerator: cg
+ !

Item was changed:
  ----- Method: VMMaker class&amp;gt;&amp;gt;versionString (in category 'version testing') -----
  versionString
  
  "VMMaker versionString"
  
+ ^'4.9.2'!
- ^'4.9.1'!


&lt;/pre&gt;</description>
    <dc:creator>commits&lt; at &gt;source.squeak.org</dc:creator>
    <dc:date>2012-05-23T00:00:00</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8247">
    <title>StackVM on general Unix ARM</title>
    <link>http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8247</link>
    <description>&lt;pre&gt; 
Hi,

Igor Stasenko wrote:



Because of Android build system (NDK) - a thing very much unto itself
;) The way they use regular Make is rather contrived; having CMake
adopted for that seemed an unnecessary trouble.

&lt;/pre&gt;</description>
    <dc:creator>Dmitry Golubovsky</dc:creator>
    <dc:date>2012-05-22T13:32:08</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8244">
    <title>StackVM on general Unix ARM</title>
    <link>http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8244</link>
    <description>&lt;pre&gt; 
Pavel,

Pavel Krivanek wrote:


By eliminating all asynchronicity from Cog and turning it into an
event-driven VM.

See this for the general discussion:

http://permalink.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/6910

The message referred mentions StackEvtUnixConfig which may be your
starting point.

You may follow the recommendations from

http://lists.squeakfoundation.org/pipermail/vm-dev/2012-May/010632.html

where your last (per these recommendations) step will be

sh ./generate.sh -headless StackEvtUnixConfig ### (instead of AndroidConfig)

I never polished this configuration, however it somehow ran on Linux.
I believe it is still a CMake project (as opposed to the Android build
where CMake stuff was eliminated).

You may also find this helpful:

http://lists.squeakfoundation.org/pipermail/vm-dev/2011-August/009209.html

which discusses some aspects of Morphic algorithms suitability for
event driven VMs (although some of them may have been already fixed).

Hope this helps. Feel free to ask more questions.

Thanks.

&lt;/pre&gt;</description>
    <dc:creator>Dmitry Golubovsky</dc:creator>
    <dc:date>2012-05-22T12:55:23</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8243">
    <title>VM Maker: CMakeVMMaker-EstebanLorenzano.160.mcz</title>
    <link>http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8243</link>
    <description>&lt;pre&gt; 
Esteban Lorenzano uploaded a new version of CMakeVMMaker to project VM Maker:
http://source.squeak.org/VMMaker/CMakeVMMaker-EstebanLorenzano.160.mcz

==================== Summary ====================

Name: CMakeVMMaker-EstebanLorenzano.160
Author: EstebanLorenzano
Time: 22 May 2012, 2:47:17.738 pm
UUID: 37450971-39f9-4ead-86bc-e8c0522383f5
Ancestors: CMakeVMMaker-EstebanLorenzano.159

-added some flags for iphone
-added force gcc-4.2 to mac builds

=============== Diff against CMakeVMMaker-EstebanLorenzano.159 ===============

Item was changed:
  ----- Method: CogFamilyCocoaIOSConfig&amp;gt;&amp;gt;setExtraTargetProperties: (in category 'settings') -----
  setExtraTargetProperties: maker
  | plist |
  
  maker addFrameworks: self frameworks.
  
  " generated and add Info.plist file "
  plist := self plistFile.
  
  (maker buildDir forceNewFileNamed: 'Info.plist') 
  nextPutAll: plist; 
  close.
  
  maker 
  addProperty: 'MACOSX_BUNDLE_INFO_PLIST' 
  value: '${buildDir}/Info.plist'.  
  
  (maker buildDir forceNewFileNamed: self prefixHeaderFileName) 
  nextPutAll: self precompiledHeaders;
  close.
  maker addXCodeProperty: 'GCC_PREFIX_HEADER' value: '${buildDir}/', self prefixHeaderFileName.
  
  maker 
  addXCodeProperty: 'PER_ARCH_CFLAGS_i386' value: '-DLSB_FIRST -mfpmath=sse -finline-functions  -fno-cse-follow-jumps -fno-gcse -mtune=prescott -march=pentium-m -falign-functions=16'.
  
  "maker 
  addXCodeProperty: 'GCC_VERSION' value: '4.3'."
  
  maker 
  cmd: 'set_target_properties' 
  params: self executableName, ' PROPERTIES COMPILE_FLAGS "-include \"', (self buildDir / self prefixHeaderFileName) fullName, '\""'. 
+ 
+ maker set: 'CMAKE_C_COMPILER' to: '/usr/bin/gcc-4.2'.
+ maker set: 'CMAKE_CXX_COMPILER' to: '/usr/bin/g++-4.2'.
  
  maker set: 'EXECUTABLE_OUTPUT_PATH' toString: self outputDir.
  maker set: 'RUNTIME_OUTPUT_DIRECTORY' toString: self outputDir.!

Item was changed:
  ----- Method: StackIPhoneConfig&amp;gt;&amp;gt;commonCompilerFlags (in category 'settings') -----
  commonCompilerFlags
  "Common compiler flags"
  ^{
  "'-miphoneos-version-min=4.3'. "
  '-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS', self sdkVersion, '.sdk'.
  '-x objective-c'.
  '-std=gnu99'.
  '-falign-functions=16'.
  '-fno-gcse'.
  '-fno-cse-follow-jumps'.
  '-fvisibility=hidden'.
  '-funroll-loops'.
  '-finline-functions'.
  '-mno-thumb'.
  '-DSTACKVM=1'.
  '-DCOGMTVM=0'. 
  '-DUSE_GLOBAL_STRUCT=0'. 
  '-DBASE_HEADER_SIZE=4'.
  '-DTARGET_OS_IS_IPHONE'.
  '-DHAVE_UUID_GENERATE'.
  '-DUSE_INLINE_MEMORY_ACCESSORS'. 
  '-DHAVE_SYS_TIME_H'.
  '-DLSB_FIRST'.
  '-DHAVE_NANOSLEEP'.
  "'-DXXXUSE_INLINE_MEMORY_ACCESSORS'."
  '-DISQUEAK_IMAGE=', self imageName.
  '-DISQUEAK_SOURCES=PharoV10'}!

Item was added:
+ ----- Method: StackIPhoneConfig&amp;gt;&amp;gt;compilerFlagsDebug (in category 'settings') -----
+ compilerFlagsDebug
+ ^#('-g3' '-O2' '-DDEBUGVM=1')!

Item was changed:
  ----- Method: StackIPhoneConfig&amp;gt;&amp;gt;compilerFlagsRelease (in category 'settings') -----
  compilerFlagsRelease
  ^#('-g0' '-O2' '-fomit-frame-pointer' '-DNDEBUG' '-DDEBUGVM=0' '-DSTACKVM')!

Item was changed:
  ----- Method: StackIPhoneConfig&amp;gt;&amp;gt;setExtraTargetProperties: (in category 'settings') -----
  setExtraTargetProperties: maker
  "super setExtraTargetProperties: maker."
  
  | precompiledHeaders plist |
  
  precompiledHeaders := (self executableName, '_Prefix.pch').
  (maker buildDir forceNewFileNamed: precompiledHeaders) 
  nextPutAll: self precompiledHeaders;
  close.
  
  maker addXCodeProperty: 'GCC_PREFIX_HEADER' value: '${buildDir}/', precompiledHeaders.
  
  self setCommonProperties: maker.
  
  " generated and add Info.plist file "
  plist := self plistFile.
  (maker buildDir forceNewFileNamed: 'Info.plist') 
  nextPutAll: plist; 
  close.
  
  maker addProperty: 'MACOSX_BUNDLE_INFO_PLIST' value: '${buildDir}/Info.plist'.  
  maker 
  cmd: 'set_target_properties' 
  params: self executableName, ' PROPERTIES COMPILE_FLAGS "-include \"', (self buildDir / self prefixHeaderFileName) fullName, '\""'. 
  
+ maker set: 'CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY' 
+ toString: self codeSignIdentity.
+ maker set: 'CMAKE_XCODE_ATTRIBUTE_TARGETED_DEVICE_FAMILY' 
+ toString: self targetedDeviceFamilyAsString.
+ maker set: 'CMAKE_XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET' 
+ to: self deploymentTargetVersion.
+ maker set: 'CMAKE_XCODE_ATTRIBUTE_CONFIGURATION_BUILD_DIR' 
+ toString: '$(BUILD_DIR)/$(CONFIGURATION)'.
+ maker set: 'CMAKE_XCODE_ATTRIBUTE_CONFIGURATION_TEMP_DIR' 
+ toString: '$(BUILD_DIR)/$(CONFIGURATION)'.
+ 
- maker set: 'CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY' toString: self codeSignIdentity.
- maker set: 'CMAKE_XCODE_ATTRIBUTE_TARGETED_DEVICE_FAMILY' toString: self targetedDeviceFamilyAsString.
- maker set: 'CMAKE_XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET' to: self deploymentTargetVersion.
  maker set: 'EXECUTABLE_OUTPUT_PATH' toString: self outputDir.
  
  maker puts: 'set_source_files_properties(${srcVMDir}/gcc3x-cointerp.c PROPERTIES COMPILE_FLAGS -O0)'
  !


&lt;/pre&gt;</description>
    <dc:creator>commits&lt; at &gt;source.squeak.org</dc:creator>
    <dc:date>2012-05-22T00:00:00</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8242">
    <title>StackVM on general Unix ARM</title>
    <link>http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8242</link>
    <description>&lt;pre&gt; Hi,

I'm trying to compile StackVM for Raspberry Pi but I face some problems.
The biggest one seems to be the absence of High Res Timer Ticker. CogDroid
and iOS builds are for ARM too. How did you solve this?

Cheers,
&lt;/pre&gt;</description>
    <dc:creator>Pavel Krivanek</dc:creator>
    <dc:date>2012-05-22T10:54:29</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8236">
    <title>Linux 4.4.7.2357 VM crash under memory pressure</title>
    <link>http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8236</link>
    <description>&lt;pre&gt; 
Hilaire discovered that his newest DrGeo segfaults on the XO-1. It works fine elsewhere, including the XO-1.5, which has pretty much the same OS.

We narrowed down the problem to the XO-1 having only 256 MB of RAM and no swap space. I can reproduce the crash in a virtual Ubuntu 12 with 768 MB RAM (!) but no swap. Top reports:

Mem:    766204k total,   601588k used,   164616k free,    45624k buffers
Swap:        0k total,        0k used,        0k free,   277024k cached

but DrGeo still crashes. Etoys runs fine using the same Squeak VM on the same system (and on XO-1). DrGeo is based on Pharo 1.4, using a closure image. Etoys still is pre-closure. 

I ran the DrGeo under GDB. Here is the backtrace after the SEGFAULT, "gnu-interp.c:27272" maps to the "newOop = longAt(fwdBlock);" line in updatePointersInRootObjectsFromto():

=============
(gdb) bt
#0  0x0807acdb in updatePointersInRootObjectsFromto (memStart=-1314145112, 
    memEnd=-1312574048)
    at /home/olpc/Squeak-4.4.7.2357-src/bld/gnu-interp.c:27272
#1  0x08068586 in mapPointersInObjectsFromto (memStart=-1314145112, 
    memEnd=-1312574048)
    at /home/olpc/Squeak-4.4.7.2357-src/bld/gnu-interp.c:13495
#2  0x0805b53f in incCompBody ()
    at /home/olpc/Squeak-4.4.7.2357-src/bld/gnu-interp.c:5068
#3  0x0805bbe8 in incrementalGC ()
    at /home/olpc/Squeak-4.4.7.2357-src/bld/gnu-interp.c:5405
#4  0x0805c9c7 in instantiateContextsizeInBytes (classPointer=-1324064796, 
    sizeInBytes=92) at /home/olpc/Squeak-4.4.7.2357-src/bld/gnu-interp.c:6099
#5  0x080575b8 in allocateOrRecycleContext (needsLarge=0)
    at /home/olpc/Squeak-4.4.7.2357-src/bld/gnu-interp.c:2050
#6  0x08061898 in interpret ()
    at /home/olpc/Squeak-4.4.7.2357-src/bld/gnu-interp.c:9310
#7  0x0807f107 in main (argc=2, argv=0xbffff494, envp=0xbffff4a0)
    at /home/olpc/Squeak-4.4.7.2357-src/unix/vm/sqUnixMain.c:1444
(gdb) p/x memory
$3 = 0xb1094000
(gdb) p/x foo-&amp;gt;endOfMemory
$4 = 0xb1c3b5a0
(gdb) p/x memStart
$5 = 0xb1abbca8
(gdb) p/x memEnd
$6 = 0xb1c3b5a0
(gdb) p/x fwdBlock
$7 = 0x63577a08
=============

fwdBlock appears to be clearly outside the object memory, that can't be right? Any idea how to fix it?


- Bert -
&lt;/pre&gt;</description>
    <dc:creator>Bert Freudenberg</dc:creator>
    <dc:date>2012-05-20T13:08:20</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8234">
    <title>VM Maker: VMMaker-dtl.271.mcz</title>
    <link>http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8234</link>
    <description>&lt;pre&gt; 
David T. Lewis uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker-dtl.271.mcz

==================== Summary ====================

Name: VMMaker-dtl.271
Author: dtl
Time: 19 May 2012, 6:43:01.788 pm
UUID: 570b9903-ef97-4a2a-9159-086175f5fbfb
Ancestors: VMMaker-dtl.270

VMMaker 4.9.1

Additional factoring to merge Interpreter/ObjectMemory with StackInterpreter/NewObjectMemory. No change to generated code for the interpreter VM.

Inlining note: Moved #postGCAction: from StackInterpreter to object memory because NewObjectMemory is the only sender, and the presence of both #postGCAction and #postGCAction: in the Intepreter would prevent inlining of #postGCAction when translating class Interpreter (relevant for the case of an Interpreter using a NewObjectMemory).

=============== Diff against VMMaker-dtl.270 ===============

Item was added:
+ ----- Method: Interpreter&amp;gt;&amp;gt;checkCodeIntegrity: (in category 'stack interpreter support') -----
+ checkCodeIntegrity: fullGCFlag
+ "This is a no-op in the Interpreter and the StackVM"
+ ^true!

Item was added:
+ ----- Method: Interpreter&amp;gt;&amp;gt;checkInterpreterIntegrity (in category 'stack interpreter support') -----
+ checkInterpreterIntegrity
+ "Perform an integrity/leak check using the heapMap.  Assume
+  clearLeakMapAndMapAccessibleObjects has set a bit at each
+  object's header.  Check that all oops in the interpreter's state
+  points to a header.  Answer if all checks pass."
+ 
+ ^true!

Item was added:
+ ----- Method: Interpreter&amp;gt;&amp;gt;checkStackIntegrity (in category 'stack interpreter support') -----
+ checkStackIntegrity
+ "Perform an integrity/leak check using the heapMap.  Assume
+  clearLeakMapAndMapAccessibleObjects has set a bit at each
+  object's header.  Scan all objects accessible from the stack
+  checking that every pointer points to a header.  Answer if no
+  dangling pointers were detected."
+ 
+ ^true!

Item was added:
+ ----- Method: Interpreter&amp;gt;&amp;gt;interpreterAllocationReserveBytes (in category 'stack interpreter support') -----
+ interpreterAllocationReserveBytes
+ "Extra allocation space in the object memory required by StackInterpreter"
+ ^ 0
+ !

Item was added:
+ ----- Method: Interpreter&amp;gt;&amp;gt;isMarriedOrWidowedContext: (in category 'stack interpreter support') -----
+ isMarriedOrWidowedContext: aContext
+ ^false!

Item was added:
+ ----- Method: Interpreter&amp;gt;&amp;gt;markAndTraceAndMaybeFreeStackPages: (in category 'stack interpreter support') -----
+ markAndTraceAndMaybeFreeStackPages: fullGCFlag
+ "This is a no-op in Interpreter"
+ !

Item was added:
+ ----- Method: Interpreter&amp;gt;&amp;gt;markAndTraceOrFreeMachineCode: (in category 'stack interpreter support') -----
+ markAndTraceOrFreeMachineCode: fullGCFlag
+ "This is a no-op in Interpreter"
+ !

Item was changed:
  ----- Method: NewObjectMemory&amp;gt;&amp;gt;fullGC (in category 'garbage collection') -----
  fullGC
  "Do a mark/sweep garbage collection of the entire object memory. Free inaccessible objects but do not move them."
  
  &amp;lt;inline: false&amp;gt;
  fullGCLock &amp;gt; 0 ifTrue:
  [self warning: 'aborting fullGC because fullGCLock &amp;gt; 0'.
   ^false].
  self initializeFreeBlocksPreSweep.
  self runLeakCheckerForFullGC: true.
+ interpreter preGCAction: true.
+ gcStartUsecs := self ioMicroSecondClock.
- self preGCAction: true.
- gcStartUsecs := self ioUTCMicrosecondsNow.
  statSweepCount := statMarkCount := statMkFwdCount := statCompMoveCount := 0.
  self clearRootsTable.
  youngStart := self startOfMemory.  "process all of memory"
  self markPhase: true.
  "Sweep phase returns the number of survivors.
  Use the up-to-date version instead the one from startup."
  totalObjectCount := self sweepPhaseForFullGC.
  self runLeakCheckerForFullGC: true.
  self fullCompaction.
  statFullGCs := statFullGCs + 1.
+ statGCEndUsecs := self ioMicroSecondClock.
- statGCEndUsecs := self ioUTCMicrosecondsNow.
  statFullGCUsecs := statFullGCUsecs + (statGCEndUsecs - gcStartUsecs).
  self capturePendingFinalizationSignals.
  
  youngStart := freeStart.  "reset the young object boundary"
  self postGCAction: true.
  self runLeakCheckerForFullGC: true!

Item was added:
+ ----- Method: NewObjectMemory&amp;gt;&amp;gt;heapMapAtWord: (in category 'debug printing') -----
+ heapMapAtWord: wordPointer
+ "Implemented in support code for Cog branch in Cross/vm/sqHeapMap.c and
+ stubbed out here for use with trunk platform sources"
+ 
+ self flag: #FIXME. "remove this method and add sqHeapMap.c to Cross when 64 bit address space can be supported"
+ ^ 1
+ 
+ "
+ /*
+  * Answer non-zero if the heapMap is set at wordPointer, 0 otherwise
+  */
+ int heapMapAtWord(void *wordPointer)
+ { . . . }
+ "!

Item was added:
+ ----- Method: NewObjectMemory&amp;gt;&amp;gt;heapMapAtWord:Put: (in category 'debug printing') -----
+ heapMapAtWord: wordPointer Put: bit
+ "Implemented in support code for Cog branch in Cross/vm/sqHeapMap.c and
+ stubbed out here for use with trunk platform sources"
+ 
+ self flag: #FIXME. "remove this method and add sqHeapMap.c to Cross when 64 bit address space can be supported"
+ 
+ "
+ /*
+  * Set the value in the map at wordPointer to bit.
+  */
+ void heapMapAtWordPut(void *wordPointer, int bit)
+ { . . . }
+ "!

Item was changed:
  ----- Method: NewObjectMemory&amp;gt;&amp;gt;incrementalGC (in category 'garbage collection') -----
  incrementalGC
  "Do a mark/sweep garbage collection of just the young object
  area of object memory (i.e., objects above youngStart), using
  the root table to identify objects containing pointers to
  young objects from the old object area."
  | survivorCount weDidGrow |
  &amp;lt;inline: false&amp;gt;
  
  rootTableCount &amp;gt;= RootTableSize ifTrue:
  ["root table overflow; cannot do an incremental GC (this should be very rare)"
   statRootTableOverflows := statRootTableOverflows + 1.
   ^self fullGC].
  
  self initializeFreeBlocksPreSweep.
  self runLeakCheckerForFullGC: false.
  
+ interpreter preGCAction: false.
- self preGCAction: false.
  "incremental GC and compaction"
  
+ gcStartUsecs := self ioMicroSecondClock.
- gcStartUsecs := self ioUTCMicrosecondsNow.
  weakRootCount := 0.
  statSweepCount := statMarkCount := statMkFwdCount := statCompMoveCount := 0.
  self markPhase: false.
  self assert: weakRootCount &amp;lt;= WeakRootTableSize.
  1 to: weakRootCount do:
  [:i| self finalizeReference: (weakRoots at: i)].
  survivorCount := self sweepPhase.
  self runLeakCheckerForFullGC: false.
  self incrementalCompaction.
  statIncrGCs := statIncrGCs + 1.
+ statGCEndUsecs := self ioMicroSecondClock.
- statGCEndUsecs := self ioUTCMicrosecondsNow.
  statIGCDeltaUsecs := statGCEndUsecs - gcStartUsecs.
  statIncrGCUsecs := statIncrGCUsecs + statIGCDeltaUsecs.
  self capturePendingFinalizationSignals.
  
  statRootTableCount  := rootTableCount.
  statSurvivorCount := survivorCount.
  weDidGrow := false.
  (((survivorCount &amp;gt; tenuringThreshold)
   or: [rootTableCount &amp;gt;= RootTableRedZone])
   or: [forceTenureFlag == true]) ifTrue:
  ["move up the young space boundary if
    * there are too many survivors:
  this limits the number of objects that must be
  processed on future incremental GC's
    * we're about to overflow the roots table:
  this limits the number of full GCs that may be caused
  by root table overflows in the near future"
  forceTenureFlag := false.
  statTenures := statTenures + 1.
  self clearRootsTable.
  ((self freeSize &amp;lt; growHeadroom)
   and: [gcBiasToGrow &amp;gt; 0]) ifTrue:
  [self biasToGrow.
   weDidGrow := true].
  youngStart := freeStart].
  self postGCAction: false.
  
  self runLeakCheckerForFullGC: false.
  weDidGrow ifTrue:
  [self biasToGrowCheckGCLimit]!

Item was changed:
  ----- Method: NewObjectMemory&amp;gt;&amp;gt;lastPointerWhileForwarding: (in category 'gc -- compaction') -----
  lastPointerWhileForwarding: oop 
  "The given object may have its header word in a forwarding block. Find  
   the offset of the last pointer in the object in spite of this obstacle."
  | header fmt size contextSize |
  &amp;lt;inline: true&amp;gt;
  header := self headerWhileForwardingOf: oop.
  fmt := self formatOfHeader: header.
  fmt &amp;lt;= 4 ifTrue:
  [(fmt = 3
    and: [interpreter isContextHeader: header]) ifTrue:
  ["contexts end at the stack pointer"
+  contextSize := self nacFetchStackPointerOf: oop.
-  contextSize := coInterpreter nacFetchStackPointerOf: oop.
   self assert: ReceiverIndex + contextSize &amp;lt; (self lengthOf: oop baseHeader: header format: fmt).
   ^CtxtTempFrameStart + contextSize * self bytesPerWord].
   "do sizeBitsOf: using the header we obtained"
   size := (header bitAnd: TypeMask) = HeaderTypeSizeAndClass
  ifTrue: [(self sizeHeader: oop) bitAnd: self allButTypeMask]
  ifFalse: [header bitAnd: self sizeMask].
   ^size - self baseHeaderSize].
  fmt &amp;lt; 12 ifTrue: [^0]. "no pointers"
  
  "CompiledMethod: contains both pointers and bytes"
  ^(coInterpreter literalCountOf: oop) * self bytesPerWord + self baseHeaderSize!

Item was changed:
  ----- Method: NewObjectMemory&amp;gt;&amp;gt;markPhase: (in category 'gc -- mark and sweep') -----
  markPhase: fullGCFlag
  "Mark phase of the mark and sweep garbage collector. Set 
   the mark bits of all reachable objects. Free chunks are 
   untouched by this process."
  "Assume: All non-free objects are initially unmarked. Root 
   objects were unmarked when they were made roots.
   (Make sure this stays true!!!!)."
  | oop statMarkCountPriorToStackPageFreeing |
  &amp;lt;inline: false&amp;gt;
  "trace the interpreter's objects, including the active stacks
   and special objects array"
  self markAndTraceInterpreterOops: fullGCFlag.
  statSpecialMarkCount := statMarkCount.
  "trace the roots"
  1 to: rootTableCount do:
  [:i | 
  oop := rootTable at: i.
  self markAndTrace: oop].
  1 to: extraRootCount do:
  [:i|
  oop := (extraRoots at: i) at: 0.
  (self isIntegerObject: oop) ifFalse:
  [self markAndTrace: oop]].
  statMarkCountPriorToStackPageFreeing := statMarkCount.
  "Only safe to free stack pages after all roots have been traced."
+ interpreter markAndTraceAndMaybeFreeStackPages: fullGCFlag.
- self markAndTraceAndMaybeFreeStackPages: fullGCFlag.
  "Only safe to free any machine code methods after all
   stack pages have been traced."
+ coInterpreter markAndTraceOrFreeMachineCode: fullGCFlag.
- self markAndTraceOrFreeMachineCode: fullGCFlag.
  statSpecialMarkCount := statSpecialMarkCount + (statMarkCount - statMarkCountPriorToStackPageFreeing)!

Item was added:
+ ----- Method: NewObjectMemory&amp;gt;&amp;gt;nacFetchStackPointerOf: (in category 'gc -- compaction') -----
+ nacFetchStackPointerOf: aContext
+ "A version of fetchStackPointerOf: for use when objects may be forwarded.
+  Does not do an assert-check of the stack pointer being in bounds."
+ | sp |
+ sp := self fetchPointer: StackPointerIndex ofObject: aContext.
+ (self isIntegerObject: sp) ifFalse: [^0].
+ ^self integerValueOf: sp!

Item was added:
+ ----- Method: NewObjectMemory&amp;gt;&amp;gt;postGCAction: (in category 'garbage collection') -----
+ postGCAction: fullGCFlag
+ "Shrink free memory and signal the gc semaphore."
+ | freeSizeNow |
+ 
+ freeSizeNow := self freeSize.
+ (freeSizeNow &amp;gt; self shrinkThreshold
+  and: [freeSizeNow &amp;gt; self growHeadroom]) ifTrue:
+ ["Attempt to shrink memory after successfully reclaiming lots of memory"
+  self shrinkObjectMemory: freeSizeNow - self growHeadroom].
+ 
+ interpreter signalSemaphoreWithIndex: self gcSemaphoreIndex!

Item was changed:
  ----- Method: NewObjectMemory&amp;gt;&amp;gt;printMemField:name:size: (in category 'debug printing') -----
  printMemField: memField name: name size: length
  &amp;lt;var: #memField type: #usqInt&amp;gt;
  &amp;lt;var: #name type: #'char *'&amp;gt;
  self print: name; tab; printHexPtr: (self cCoerce: memField to: 'char *');
  printChar: $/;
+ printNum: memField - (self cCode: '(usqInt) sqMemoryBase');
- printNum: memField - (self cCoerce: self sqMemoryBaseAddress to: 'usqInt');
  print: ' sz: '; printHex: length.
  length ~= 0 ifTrue:
  [self printChar: $/; printNum: length].
  self cr!

Item was added:
+ ----- Method: ObjectMemory&amp;gt;&amp;gt;checkHeapIntegrity (in category 'memory access') -----
+ checkHeapIntegrity
+ "Perform an integrity/leak check using the heapMap.  Assume
+  clearLeakMapAndMapAccessibleObjects has set a bit at each
+  object's header.  Scan all objects in the heap checking that every
+  pointer points to a header.  Scan the rootTable, remapBuffer and
+  extraRootTable checking that every entry is a pointer to a header.
+  Check that the number of roots is correct and that all rootTable
+  entries have their rootBit set. Answer if all checks pass."
+ | ok obj sz hdr fmt fi fieldOop numRootsInHeap |
+ &amp;lt;inline: false&amp;gt;
+ ok := true.
+ numRootsInHeap := 0.
+ obj := self firstObject.
+ [self oop: obj isLessThan: self startOfFreeSpace] whileTrue:
+ [(self isFreeObject: obj)
+ ifTrue:
+ [sz := self sizeOfFree: obj]
+ ifFalse:
+ [hdr := self baseHeader: obj.
+  (hdr bitAnd: self rootBit) ~= 0 ifTrue:
+ [numRootsInHeap := numRootsInHeap + 1].
+  (self compactClassIndexOfHeader: hdr) = 0 ifTrue:
+ [fieldOop := (self classHeader: obj) bitAnd: self allButTypeMask.
+  ((self isIntegerObject: fieldOop)
+    or: [(self heapMapAtWord: (self pointerForOop: fieldOop)) = 0]) ifTrue:
+ [self print: 'object leak in '; printHex: obj; print: ' class = '; printHex: fieldOop; cr.
+  ok := false]].
+  fmt := self formatOfHeader: hdr.
+  (fmt &amp;lt;= 4 "pointers" or: [fmt &amp;gt;= 12 "compiled method"]) ifTrue:
+ [fmt &amp;gt;= 12
+ ifTrue: [fi := (self literalCountOf: obj) + 1 "+ 1 = methodHeader slot"]
+ ifFalse: [(fmt = 3 and: [self isContextHeader: hdr])
+ ifTrue: [fi := CtxtTempFrameStart + (self fetchStackPointerOf: obj)]
+ ifFalse: [fi := self lengthOf: obj]].
+ [(fi := fi - 1) &amp;gt;= 0] whileTrue:
+ [fieldOop := self fetchPointer: fi ofObject: obj.
+  (self isNonIntegerObject: fieldOop) ifTrue:
+ [(fieldOop bitAnd: self bytesPerWord - 1) ~= 0
+ ifTrue:
+ [self print: 'misaligned oop in '; printHex: obj; print: ' &amp;lt; at &amp;gt; '; printNum: fi; print: ' = '; printHex: fieldOop; cr.
+  ok := false]
+ ifFalse:
+ [(self heapMapAtWord: (self pointerForOop: fieldOop)) = 0 ifTrue:
+ [self print: 'object leak in '; printHex: obj; print: ' &amp;lt; at &amp;gt; '; printNum: fi; print: ' = '; printHex: fieldOop; cr.
+  ok := false]]]]].
+  sz := self sizeBitsOf: obj].
+  obj := self oopFromChunk: obj + sz].
+ numRootsInHeap ~= rootTableCount ifTrue:
+ [self print: 'root count mismatch. #heap roots '; printNum: numRootsInHeap; print: '; #roots '; printNum: rootTableCount; cr.
+  ok := false].
+ 1 to: rootTableCount do:
+ [:ri|
+ obj := rootTable at: ri.
+ (obj bitAnd: self bytesPerWord - 1) ~= 0
+ ifTrue:
+ [self print: 'misaligned oop in rootTable &amp;lt; at &amp;gt; '; printNum: ri; print: ' = '; printHex: obj; cr.
+  ok := false]
+ ifFalse:
+ [(self heapMapAtWord: (self pointerForOop: obj)) = 0
+ ifTrue:
+ [self print: 'object leak in rootTable &amp;lt; at &amp;gt; '; printNum: ri; print: ' = '; printHex: obj; cr.
+  ok := false]
+ ifFalse:
+ [hdr := self baseHeader: obj.
+  (hdr bitAnd: self rootBit) = 0 ifTrue:
+ [self print: 'non-root in rootTable &amp;lt; at &amp;gt; '; printNum: ri; print: ' = '; printHex: obj; cr.
+  ok := false]]]].
+ 1 to: remapBufferCount do:
+ [:ri|
+ obj := remapBuffer at: ri.
+ (obj bitAnd: self bytesPerWord - 1) ~= 0
+ ifTrue:
+ [self print: 'misaligned remapRoot &amp;lt; at &amp;gt; '; printNum: ri; print: ' = '; printHex: obj; cr.
+  ok := false]
+ ifFalse:
+ [(self heapMapAtWord: (self pointerForOop: obj)) = 0
+ ifTrue:
+ [self print: 'object leak in remapRoots &amp;lt; at &amp;gt; '; printNum: ri; print: ' = '; printHex: obj; cr.
+  ok := false]]].
+ 1 to: extraRootCount do:
+ [:ri|
+ obj := (extraRoots at: ri) at: 0.
+ (obj bitAnd: self bytesPerWord - 1) ~= 0
+ ifTrue:
+ [self print: 'misaligned extraRoot &amp;lt; at &amp;gt; '; printNum: ri; print: ' =&amp;gt; '; printHex: obj; cr.
+  ok := false]
+ ifFalse:
+ [(self heapMapAtWord: (self pointerForOop: obj)) = 0
+ ifTrue:
+ [self print: 'object leak in extraRoots &amp;lt; at &amp;gt; '; printNum: ri; print: ' =&amp;gt; '; printHex: obj; cr.
+  ok := false]]].
+ ^ok!

Item was added:
+ ----- Method: ObjectMemory&amp;gt;&amp;gt;containOnlyOops: (in category 'become') -----
+ containOnlyOops: array
+ "Return true if the array contains a small integer. You 
+   can't become: SmallIntegers!!"
+ | fieldOffset |
+ fieldOffset := self lastPointerOf: array.
+ "same size as array2"
+ [fieldOffset &amp;gt;= self baseHeaderSize] whileTrue:
+ [(self isIntegerObject: (self longAt: array + fieldOffset)) ifTrue: [^ false].
+  fieldOffset := fieldOffset - self bytesPerWord].
+ ^true!

Item was changed:
  ----- Method: ObjectMemory&amp;gt;&amp;gt;containOnlyOops:and: (in category 'become') -----
  containOnlyOops: array1 and: array2 
  "Return true if neither array contains a small integer. You 
  can't become: integers!!"
  | fieldOffset |
  fieldOffset := self lastPointerOf: array1.
  "same size as array2"
  [fieldOffset &amp;gt;= self baseHeaderSize]
  whileTrue: [(self isIntegerObject: (self longAt: array1 + fieldOffset)) ifTrue: [^ false].
  (self isIntegerObject: (self longAt: array2 + fieldOffset)) ifTrue: [^ false].
  fieldOffset := fieldOffset - self bytesPerWord].
  ^ true!

Item was added:
+ ----- Method: ObjectMemory&amp;gt;&amp;gt;forwardingPointerOf: (in category 'gc -- compaction') -----
+ forwardingPointerOf: forwardedObj
+ "Answer the pointer to the given forwardedOop's forwarding block."
+ 
+ ^((self longAt: forwardedObj) bitAnd: self allButMarkBitAndTypeMask) &amp;lt;&amp;lt; 1!

Item was added:
+ ----- Method: ObjectMemory&amp;gt;&amp;gt;fwdBlockValid: (in category 'gc -- compaction') -----
+ fwdBlockValid: addr 
+ "Answer if the given address is a valid forward table entry."
+ ^(self oop: addr isGreaterThan: endOfMemory)
+    and: [(self oop: addr isLessThanOrEqualTo: fwdTableNext)
+    and: [(addr bitAnd: 3) = 0]]!

Item was added:
+ ----- Method: ObjectMemory&amp;gt;&amp;gt;headerWhileForwardingOf: (in category 'gc -- compaction') -----
+ headerWhileForwardingOf: oop
+ "Answer the header of the argument even though
+  it may have its header word in a forwarding block."
+ | header fwdBlock |
+ &amp;lt;inline: true&amp;gt;
+ header := self longAt: oop.
+ (header bitAnd: self markBit) ~= 0 ifTrue:
+ ["oop is forwarded; get its real header from its forwarding table entry"
+  fwdBlock := (header bitAnd: self allButMarkBitAndTypeMask) &amp;lt;&amp;lt; 1.
+  self assert: (self fwdBlockValid: fwdBlock).
+  header := self longAt: fwdBlock + self bytesPerWord].
+ ^header!

Item was added:
+ ----- Method: ObjectMemory&amp;gt;&amp;gt;oop:isGreaterThan:andLessThan: (in category 'oop comparison') -----
+ oop: anOop isGreaterThan: baseOop andLessThan: limitOop
+ "Compare two oop values, treating them as object memory locations.
+ Use #cCoerce:to: to ensure comparison of unsigned magnitudes. This
+ method will be inlined during C translation."
+ 
+ ^(self cCoerce: anOop to: #usqInt) &amp;gt; (self cCoerce: baseOop to: #usqInt)
+   and: [(self cCoerce: anOop to: #usqInt) &amp;lt; (self cCoerce: limitOop to: #usqInt)]!

Item was added:
+ ----- Method: ObjectMemory&amp;gt;&amp;gt;setEndOfMemory: (in category 'initialization') -----
+ setEndOfMemory: newEndOfMemory
+ self assert: (newEndOfMemory bitAnd: self bytesPerWord - 1) = 0.
+ endOfMemory := newEndOfMemory!

Item was added:
+ ----- Method: ObjectMemory&amp;gt;&amp;gt;setMemoryLimit: (in category 'initialization') -----
+ setMemoryLimit: newMemoryLimit
+ self assert: (newMemoryLimit bitAnd: self bytesPerWord - 1) = 0.
+ memoryLimit := newMemoryLimit!

Item was changed:
  ----- Method: StackInterpreter&amp;gt;&amp;gt;interpreterAllocationReserveBytes (in category 'stack pages') -----
  interpreterAllocationReserveBytes
  "At a rough approximation we may need to allocate up to a couple
   of page's worth of contexts when switching stack pages, assigning
   to senders, etc.  But the snapshot primitive voids all stack pages.
   So a safe margin is the size of a large context times the maximum
   number of frames per page times the number of pages."
  | availableBytesPerPage maxFramesPerPage |
  availableBytesPerPage := self stackPageByteSize - self stackLimitOffset - self stackPageHeadroom.
  maxFramesPerPage := availableBytesPerPage / self bytesPerWord // FrameSlots.
  ^2 raisedTo: (maxFramesPerPage * LargeContextSize * numStackPages) highBit!

Item was removed:
- ----- Method: StackInterpreter&amp;gt;&amp;gt;nacFetchStackPointerOf: (in category 'internal interpreter access') -----
- nacFetchStackPointerOf: aContext
- "A version of fetchStackPointerOf: for use when objects may be forwarded.
-  Does not do an assert-check of the stack pointer being in bounds."
- | sp |
- &amp;lt;inline: true&amp;gt;
- sp := objectMemory fetchPointer: StackPointerIndex ofObject: aContext.
- (objectMemory isIntegerObject: sp) ifFalse: [^0].
- ^objectMemory integerValueOf: sp!

Item was removed:
- ----- Method: StackInterpreter&amp;gt;&amp;gt;postGCAction: (in category 'object memory support') -----
- postGCAction: fullGCFlag
- "Shrink free memory and signal the gc semaphore"
- | freeSizeNow |
- 
- freeSizeNow := objectMemory freeSize.
- (freeSizeNow &amp;gt; objectMemory shrinkThreshold
-  and: [freeSizeNow &amp;gt; objectMemory growHeadroom]) ifTrue:
- ["Attempt to shrink memory after successfully reclaiming lots of memory"
-  objectMemory shrinkObjectMemory: freeSizeNow - objectMemory growHeadroom].
- 
- self signalSemaphoreWithIndex: objectMemory gcSemaphoreIndex!

Item was changed:
  ----- Method: VMMaker class&amp;gt;&amp;gt;versionString (in category 'version testing') -----
  versionString
  
  "VMMaker versionString"
  
+ ^'4.9.1'!
- ^'4.9'!


&lt;/pre&gt;</description>
    <dc:creator>commits&lt; at &gt;source.squeak.org</dc:creator>
    <dc:date>2012-05-19T00:00:00</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8233">
    <title>[commit] r2554 - Fix the undeclared variable ref for thelinux BochsIA32Plugin.</title>
    <link>http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8233</link>
    <description>&lt;pre&gt; 
Author: eliot
Date: 2012-05-19 15:07:03 -0700 (Sat, 19 May 2012)
New Revision: 2554

Removed:
   branches/Cog/image/BaseExtensionsForVMMaker.1.cs
Modified:
   branches/Cog/image/
   branches/Cog/platforms/unix/plugins/BochsIA32Plugin/Makefile.inc
Log:
Fix the undeclared variable ref for the linux BochsIA32Plugin.
Nuke an obsolete changeset.



Property changes on: branches/Cog/image
___________________________________________________________________
Modified: svn:ignore
   - prefs
special-dirs
package-cache

   + prefs
special-dirs
package-cache
SqueakDebug.log


Deleted: branches/Cog/image/BaseExtensionsForVMMaker.1.cs
===================================================================
--- branches/Cog/image/BaseExtensionsForVMMaker.1.cs2012-05-19 21:41:17 UTC (rev 2553)
+++ branches/Cog/image/BaseExtensionsForVMMaker.1.cs2012-05-19 22:07:03 UTC (rev 2554)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,172 +0,0 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
-'From Squeak4.1 of 17 April 2010 [latest update: #9957] on 21 May 2010 at 11:13:17 am'!
-
-!Character methodsFor: 'printing' stamp: 'eem 5/21/2010 11:11'!
-hex
-^value printStringBase: 16! !
-
-
-!Collection methodsFor: 'enumerating' stamp: 'eem 1/11/2009 14:11'!
-fold: binaryBlock
-"Evaluate the block with the first two elements of the receiver,
- then with the result of the first evaluation and the next element,
- and so on.  Answer the result of the final evaluation. If the receiver
- is empty, raise an error. If the receiver has a single element, answer
- that element."
-"#('if' 'it' 'is' 'to' 'be' 'it' 'is' 'up' 'to' 'me') fold: [:a :b | a, ' ', b]"
-
-| firstValue nextValue |
-firstValue := nextValue := Object new. "something that can't be in the receiver"
-self do:
-[:each |
-nextValue := firstValue == nextValue
-ifTrue: [each]
-ifFalse: [binaryBlock value: nextValue value: each]].
-^nextValue == firstValue
-ifTrue: [self errorEmptyCollection]
-ifFalse: [nextValue]! !
-
-
-!HexTest methodsFor: 'as yet unclassified' stamp: 'eem 5/21/2010 11:12'!
-testIntegerHex
-| result |
-result := 15 asInteger hex.
-self assert: result = '16rF'.
-result := 0 asInteger hex.
-self assert: result = '16r0'.
-result := 255 asInteger hex.
-self assert: result = '16rFF'.
-result := 90 asInteger hex.
-self assert: result = '16r5A'! !
-
-
-!Integer methodsFor: 'printing' stamp: 'eem 5/21/2010 11:06'!
-hex
-"Print the receiver as hex, prefixed with 16r.  DO NOT CHANGE THIS!!  The Cog VMMaker depends on this.
- Consider using any of
-printStringHex
-printStringBase: 16
-printStringBase: 16 length: 8 padded: true
-storeStringHex
-storeStringBase: 16
-storeStringBase: 16 length: 11 padded: true"
-^self storeStringBase: 16! !
-
-!Integer methodsFor: 'printing' stamp: 'eem 5/21/2010 11:09'!
-hex8
-"Print the receiver in base 16 with prefixed base, using at least 8 digits.
- DO NOT CHANGE THIS!!  The Cog VMMaker depends on this.
- Consider using storeStringBase: 16 length: 11 padded: true instead."
-  "16r3333 hex8"
-| hex |
-hex := self hex.  "16rNNN"
-^hex size &amp;lt; 11
-ifTrue: [hex copyReplaceFrom: 4 to: 3
- with: ('00000000' copyFrom: 1 to: 11-hex size)]
-ifFalse: [hex]! !
-
-
-!SequenceableCollection methodsFor: 'copying' stamp: 'eem 2/10/2009 11:44'!
-copyUpThrough: anElement 
-"Answer all elements up to and including anObject. If there
-is no such object, answer a copy of the receiver."
-
-^self first: (self indexOf: anElement ifAbsent: [^ self copy])! !
-
-
-!SmalltalkImage methodsFor: 'special objects' stamp: 'Igor.Stasenko 5/4/2010 17:01'!
-recreateSpecialObjectsArray
-"Smalltalk recreateSpecialObjectsArray"
-
-"To external package developers:
-**** DO NOT OVERRIDE THIS METHOD.  *****
-If you are writing a plugin and need an additional special object(s) for own use, 
-use addGCRoot() function and use own, separate special objects registry "
-
-"The Special Objects Array is an array of object pointers used
-by the
-Squeak virtual machine. Its contents are critical and
-unchecked, so don't even think of playing here unless you
-know what you are doing."
-| newArray |
-newArray := Array new: 55.
-"Nil false and true get used throughout the interpreter"
-newArray at: 1 put: nil.
-newArray at: 2 put: false.
-newArray at: 3 put: true.
-"This association holds the active process (a ProcessScheduler)"
-newArray at: 4 put: (self associationAt: #Processor).
-"Numerous classes below used for type checking and instantiation"
-newArray at: 5 put: Bitmap.
-newArray at: 6 put: SmallInteger.
-newArray at: 7 put: ByteString.
-newArray at: 8 put: Array.
-newArray at: 9 put: Smalltalk.
-newArray at: 10 put: Float.
-newArray at: 11 put: MethodContext.
-newArray at: 12 put: BlockContext.
-newArray at: 13 put: Point.
-newArray at: 14 put: LargePositiveInteger.
-newArray at: 15 put: Display.
-newArray at: 16 put: Message.
-newArray at: 17 put: CompiledMethod.
-newArray at: 18 put: (self specialObjectsArray at: 18).
-"(low space Semaphore)"
-newArray at: 19 put: Semaphore.
-newArray at: 20 put: Character.
-newArray at: 21 put: #doesNotUnderstand:.
-newArray at: 22 put: #cannotReturn:.
-newArray at: 23 put: nil.
-"An array of the 32 selectors that are compiled as special bytecodes,
- paired alternately with the number of arguments each takes."
-newArray at: 24 put: #(#+ 1 #- 1 #&amp;lt; 1 #&amp;gt; 1 #&amp;lt;= 1 #&amp;gt;= 1 #= 1 #~= 1
-#* 1 #/ 1 #\\ 1 #&amp;lt; at &amp;gt; 1 #bitShift: 1 #// 1 #bitAnd: 1 #bitOr: 1
-#at: 1 #at:put: 2 #size 0 #next 0 #nextPut: 1 #atEnd 0 #== 1 #class 0
-#blockCopy: 1 #value 0 #value: 1 #do: 1 #new 0 #new: 1 #x 0 #y 0 ).
-"An array of the 255 Characters in ascii order."
-newArray at: 25 put: ((0 to: 255) collect: [:ascii | Character value: ascii]).
-newArray at: 26 put: #mustBeBoolean.
-newArray at: 27 put: ByteArray.
-newArray at: 28 put: Process.
-"An array of up to 31 classes whose instances will have compact headers"
-newArray at: 29 put: self compactClassesArray.
-newArray at: 30 put: (self specialObjectsArray at: 30).
-"(delay Semaphore)"
-newArray at: 31 put: (self specialObjectsArray at: 31).
-"(user interrupt Semaphore)"
-"Prototype instances that can be copied for fast initialization"
-newArray at: 32 put: (Float new: 2).
-newArray at: 33 put: (LargePositiveInteger new: 4).
-newArray at: 34 put: Point new.
-newArray at: 35 put: #cannotInterpret:.
-"Note: This must be fixed once we start using context prototypes (yeah, right)"
-"(MethodContext new: CompiledMethod fullFrameSize)."
-newArray at: 36 put: (self specialObjectsArray at: 36). "Is the prototype MethodContext (unused by the VM)"
-newArray at: 37 put: BlockClosure.
-"(BlockContext new: CompiledMethod fullFrameSize)."
-newArray at: 38 put: (self specialObjectsArray at: 38). "Is the prototype BlockContext (unused by the VM)"
-newArray at: 39 put: (self specialObjectsArray at: 39)."preserve external semaphores"
-"array of objects referred to by external code"
-newArray at: 40 put: PseudoContext.
-newArray at: 41 put: TranslatedMethod.
-"finalization Semaphore"
-newArray at: 42 put: ((self specialObjectsArray at: 42) ifNil: [Semaphore new]).
-newArray at: 43 put: LargeNegativeInteger.
-"External objects for callout.
- Note: Written so that one can actually completely remove the FFI."
-newArray at: 44 put: (self at: #ExternalAddress ifAbsent: []).
-newArray at: 45 put: (self at: #ExternalStructure ifAbsent: []).
-newArray at: 46 put: (self at: #ExternalData ifAbsent: []).
-newArray at: 47 put: (self at: #ExternalFunction ifAbsent: []).
-newArray at: 48 put: (self at: #ExternalLibrary ifAbsent: []).
-newArray at: 49 put: #aboutToReturn:through:.
-newArray at: 50 put: #run:with:in:.
-newArray at: 51 put: (self at: #WeakFinalizationList ifAbsent: []).
-newArray at: 52 put: nil.
-newArray at: 53 put: (self at: #Alien ifAbsent: []).
-newArray at: 54 put: #invokeCallback:stack:registers:jmpbuf:.
-newArray at: 55 put: (self at: #UnsafeAlien ifAbsent: []).
-
-"Now replace the interpreter's reference in one atomic operation"
-self specialObjectsArray become: newArray
-! !
-
Modified: branches/Cog/platforms/unix/plugins/BochsIA32Plugin/Makefile.inc
===================================================================
--- branches/Cog/platforms/unix/plugins/BochsIA32Plugin/Makefile.inc2012-05-19 21:41:17 UTC (rev 2553)
+++ branches/Cog/platforms/unix/plugins/BochsIA32Plugin/Makefile.inc2012-05-19 22:07:03 UTC (rev 2554)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -7,4 +7,5 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 XLDFLAGS=-L$(topdir)/processors/IA32/linuxbochs/cpu \
 -L$(topdir)/processors/IA32/linuxbochs/fpu \
 -L$(topdir)/processors/IA32/linuxbochs/disasm \
--lcpu -lfpu -ldisasm
+-lcpu -lfpu -ldisasm \
+-lstdc++


&lt;/pre&gt;</description>
    <dc:creator>commits&lt; at &gt;squeakvm.org</dc:creator>
    <dc:date>2012-05-19T22:07:03</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8232">
    <title>New plugins for Linux</title>
    <link>http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8232</link>
    <description>&lt;pre&gt; Hi Ian,

here are 4 new plugins for Linux, taken from Scratch (MIT licensed, inside the GPL release), moved into the unix source layout, with added cmake files (also did one for VideoForLinuxPlugin).

I did comment out the system() call in ScratchPlugin, since that is too dangerous to compile in by default, for my taste.

I also added the new plugins (along with the missing OggPlugin and VideoForLinuxPlugin) to plugins.ext, and edited CMakeLists.txt to use "PROJECT (squeak C)" because otherwise CMake would insist to want both C and C++ compilers.

I noticed by default it builds and installs vm-display-custom and vm-sound-custom, but I did nothing about that yet.

The attached tarball contains the files differing from your Squeak-4.4.7.2357-src.tar.gz release (SVN head didn't build for me).

I verified the Camera, Unicode, and Scratch plugins do work. Cannot test WeDo.

When you do a new release, it would be nicer to exclude the old autotools stuff, I think. I did:

rm -r unix/config
find unix/ -name acinclude.m4 -o -name Makefile.in -o -name Makefile.inc | xargs rm

and things seemed to work fine.

And maybe for some it would be helpful to list the build requirements to have all modules and features get built?

On Ubuntu 12 I had to install these additional packages:

cmake libx11-dev libxext-dev libxrender-dev libfreetype6-dev libpulse-dev libasound-dev libaudio-dev libogg-dev libvorbis-dev libspeex-dev uuid-dev libdbus-1-dev libpango1.0-dev libgstreamer0.10-dev libgl1-mesa-dev

On Fedora 14 (here I started without any dev tools):

make gcc cmake pulseaudio-libs-devel alsa-lib-devel nas-devel libogg-devel libvorbis-devel speex-devel uuid-devel dbus-devel pango-devel gstreamer-devel mesa-libGL-devel

(where pango-devel loads in libX11-devel, libXext-devel, libXrender-devel, and freetype-devel to be loaded, amongst others)

(and UUID compiling gives up with an error that the storage size of 'uuid' is unknown, I ignored that)

Maybe you could quickly make a Squeak-4.4.8.2357 release by just adding these files and removing the autotools junk? I want the Fedora guys to package a 4.x VM (one for ARM is needed in particular) but it would be good to get all the stuff in first.

Thanks!

- Bert -
&lt;/pre&gt;</description>
    <dc:creator>Bert Freudenberg</dc:creator>
    <dc:date>2012-05-19T18:39:09</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8231">
    <title>Mac + OpenGL and makeCurrent()</title>
    <link>http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8231</link>
    <description>&lt;pre&gt; 
Hello,

lately i discovered that my small NBOpenGL demos is not working under
Cocoas VMs.
The reason, i found is that Cocoa VM using OpenGL by own for blitting
the image on screen, and
activates own opengl context when doing that.

The problem is that it doesn't restores back the previously active context,
as result, all calls in image invoked under wrong context , and things
are messed up.

We tried to quickly fix the problem with Esteban by introducing
save/restore calls before changing
the context, but no success.

It seems like Cocoa doing something extra in addition to making call
to makeCurrent() ,
or probably tracking the active context by own, and simply don't sees
the context created outside of
it.

I modified the demo code to switch back to my context when rendering.
And things are working.
Unless you will need to debug the rendering code and step over gl
calls. This won't work anymore,
because VM stealing the context. :(

Any ideas what can be done?

&lt;/pre&gt;</description>
    <dc:creator>Igor Stasenko</dc:creator>
    <dc:date>2012-05-17T13:54:36</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8220">
    <title>CogDroid VMMaker issues</title>
    <link>http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8220</link>
    <description>&lt;pre&gt; 
Jeremy Kajikawa wrote:



generator.image contains the result of loading the VMMaker (and
CMakeVMMaker) packages with their dependencies into a fresh Pharo Core
image.

You may get a better idea if you look at the LoadVMMaker.st file in
the codegen-scripts subdirectory of the repo.

generator.image will be used at the next step to run CMakeVMMaker and
emit VM sources (Slang -&amp;gt; C)

Hope this helps.

Thanks.

PS Not sure if I can answer your question about "blue book" though.

&lt;/pre&gt;</description>
    <dc:creator>Dmitry Golubovsky</dc:creator>
    <dc:date>2012-05-16T20:44:31</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8218">
    <title>CogDroid VMMaker issues</title>
    <link>http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8218</link>
    <description>&lt;pre&gt; 
Hi,

I have spotted this in the VM mailing list (I only read it via web
occasionally these days, so please cc me for faster response if there
is a problem, or file an issue in the squeakvm-tablet project).

Here are the instructions (still inexact, but someone followed them,
and succeeded).

# clone the repo

git clone https://git.gitorious.org/~golubovsky/cogvm/dmg-blessed.git

# go to the build scripts directory

cd &amp;lt;repo/root&amp;gt;/codegen-scripts

# create the base Pharo image

export SQUEAKVM=&amp;lt;path/to/precompiled/squeak/vm/executable&amp;gt;; sh
./buildImage.sh -headless

# make sure there is no PharoDebug.log in &amp;lt;repo/root&amp;gt;/build, and there
is generator.image (or there may be PharoDebug.log containing
unrelated warnings, e. g. about AbstractLauncher - use -nosound
instead of -headless if you would like to inspect the problem)

# generate the VM and plugins from VMMaker

sh ./generate.sh -headless StackEvtAndroidConfig

# build the native VM

cd &amp;lt;repo/root&amp;gt;/platforms/android/project

./ndk-build

This only builds the native VM. It is now librarified: to build actual
Android project, see under
&amp;lt;repo/root&amp;gt;/platforms/android/derived/generic - this should build an
actual apk

ant clean &amp;amp;&amp;amp; ant debug   (reference to the native library is already
in project.properties)

PS Some time ago I requested access to Jenkins to allow me set up
Cogdroid build jobs - has there been any progress?

Thanks.

&lt;/pre&gt;</description>
    <dc:creator>Dmitry Golubovsky</dc:creator>
    <dc:date>2012-05-16T19:10:46</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8212">
    <title>Compiling DBusPlugin</title>
    <link>http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8212</link>
    <description>&lt;pre&gt; Hi,

the official DBusPlugin source file defines argumentsAddInt16toIter() as

static sqInt argumentsAddInt16toIter(sqInt oop, DBusMessageIter*iter) {
dbus_int16_t intArg;

if (!((oop &amp;amp; 1))) {
msg("Oop is no integer value");
return interpreterProxy-&amp;gt;primitiveFail();
}
intArg = (oop &amp;gt;&amp;gt; 1);
if (!(dbus_message_iter_append_basic(iter, DBUS_TYPE_INT16, &amp;amp;intArg))) {
msg("Can not add Int16 argument.");
return interpreterProxy-&amp;gt;primitiveFail();
}
}


however, if I generate the sources using VMMaker, I get

static void
argumentsAddInt16toIter(sqInt oop, DBusMessageIter*iter)
{
    dbus_int16_t intArg;

    if (!((oop &amp;amp; 1))) {
        msg("Oop is no integer value");
        interpreterProxy-&amp;gt;primitiveFail(); return;
    }
    intArg = interpreterProxy-&amp;gt;integerValueOf(oop);
    if (!(dbus_message_iter_append_basic(iter, DBUS_TYPE_INT16, &amp;amp;intArg))) {
        msg("Can not add Int16 argument.");
        interpreterProxy-&amp;gt;primitiveFail(); return;
    }
}


The implementation and signature are different which makes the use of this
function not compile anymore:

[...]
_return_value = argumentsAddInt16toIter(arg, iter);
if (interpreterProxy-&amp;gt;failed()) {
return null;
}
interpreterProxy-&amp;gt;popthenPush(3, _return_value);
[...]


How can I change this code so that it works with the generated definition
of argumentsAddInt16toIter()?

Thank you

--
Damien Cassou
http://damiencassou.seasidehosting.st

"Lambdas are relegated to relative obscurity until Java makes them popular
by not having them." James Iry
&lt;/pre&gt;</description>
    <dc:creator>Damien Cassou</dc:creator>
    <dc:date>2012-05-16T15:41:56</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8211">
    <title>Passing additional parameters for a particular plugin</title>
    <link>http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8211</link>
    <description>&lt;pre&gt; 
Hi,

I try to build DBusPlugin (www.squeaksource.com/dbus). Unfortunately,
compiling the generated C file requires passing "$(pkg-config dbus-1
--cflags)" as additional compiler argument. How can I specify that?

Thanks

&lt;/pre&gt;</description>
    <dc:creator>Damien Cassou</dc:creator>
    <dc:date>2012-05-16T14:53:00</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8207">
    <title>CogDroid VMMaker issues</title>
    <link>http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8207</link>
    <description>&lt;pre&gt; In trying to generate sources from VMMaker per the instructions at http://code.google.com/p/squeakvm-tablet/wiki/CogNotes, I ran into a couple of issues.  The first one was a syntax error when loading CMakeVMMaker-golubovsky.136.mcz in StackEvtUnixConfig&amp;gt;&amp;gt;platformSources
"answer the same set of source files except that sqUnixMain.c is replaced with sqUnixEvtMain.c,
sqUnixHeartbeat.c is replaced with sqUnixEvtBeat.c"

  ^ super platformSources collect: [ :file | (file = 'sqUnixMain.c') 
ifTrue: 'sqUnixEvtMain.c'  
ifFalse: [(file = 'sqUnixHeartbeat.c') 
ifTrue: 'sqUnixEvtBeat.c'
ifFalse: file]
].

this was easy enough to fix (I had the same issue with version 141):

platformSources
"answer the same set of source files except that sqUnixMain.c is replaced with sqUnixEvtMain.c,
sqUnixHeartbeat.c is replaced with sqUnixEvtBeat.c"

  ^ super platformSources collect: [ :file | (file = 'sqUnixMain.c') 
ifTrue: ['sqUnixEvtMain.c']  
ifFalse: [(file = 'sqUnixHeartbeat.c') 
ifTrue: ['sqUnixEvtBeat.c']
ifFalse: file]
].

After everything was loaded without errors, I ran:

StackEvtAndroidConfig new
generateSources;
generate.

with CMakeVMMaker-golubovsky.136.mcz/VMMaker-oscog-golubovsky.111.mcz I get:

'MessageNotUnderstood: CMakeAndroidPluginGenerator&amp;gt;&amp;gt;append:with:'

so I tried the latest CMakeVMMaker-golubovsky.141.mcz/VMMaker-oscog-golubovsky.130.mcz I get:

'Error: Sets cannot meaningfully contain nil' in CCodeGeneratorGlobalStructure(CCodeGenerator)&amp;gt;&amp;gt;emitCConstantsOn: in the literalsDo: block which appears to be due to literal8 being set to nil-&amp;gt;VMClass class.

Any suggestions on how to proceed? (i.e. which version of the packages should I be trying to get working based on the versions of Pharo/VMMaker specified in Mariano's post?)

Thanks,
Phil&lt;/pre&gt;</description>
    <dc:creator>Phil (list</dc:creator>
    <dc:date>2012-05-14T22:51:07</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8202">
    <title>Bochs simulator plug-in structure</title>
    <link>http://comments.gmane.org/gmane.comp.lang.smalltalk.squeak.vm.devel/8202</link>
    <description>&lt;pre&gt; 
http://osrcon.ca/screen4.png

A slight correction. The host/vm image is only frozen, when it's 
scrolling output in that Morphic window. When it's not, the vm image can 
accept queries and produce details about the running vm. Very cool.

Chris

&lt;/pre&gt;</description>
    <dc:creator>Chris Cunnington</dc:creator>
    <dc:date>2012-05-12T17:24:59</dc:date>
  </item>
  <textinput rdf:about="http://search.gmane.org/?group=$group=gmane.comp.lang.smalltalk.squeak.vm.devel">
    <title>Search Engine</title>
    <description>Search the mailing list at Gmane</description>
    <name>query</name>
    <link>http://search.gmane.org/?group=$group=gmane.comp.lang.smalltalk.squeak.vm.devel</link>
  </textinput>
</rdf:RDF>

