These include stack ARM VMs for Spur and V3. CogVM binaries as per VMMaker.oscog-eem.1855/r3692 General: Fix a bad bug in primitiveVoidVMStateForMethod. One might think that the heap scan is unnecessary if the method does not have a cog method. But it could be the case that the code zone has recently been reclaimed and so not having a cog method is no indication that it didn't have a cog method some time in the recent past, and that there are indeed still contexts with machine code pcs out there. Correct slip in primitiveMethodXray, the flags were not set in each caseOf: branch (thanks to -Wunused-value). Change overflow tests in precondition rather than postcondition for small integer multiplication. Because integer overflow is undefined behaviour, and because we can't rely on undefined behaviour, the compiler has a license to eliminate the post-condition as dead code (at least since iso c89 acception). Post-condition currently works because we use -fwrapv compiler flag, but relying on specific compiler flags is bad practice in the long term. Fix regression in signed 32bit long access (introduced beginning of April). One symptom is: (Alien newGC: 4) signedLongAt: 1 put: -16r7287E552; signedLongAt: 1 Fix positive32BitIntegerFor: for Spur64 which worked only because the constant was generated ULL. Spur: Fix primitiveIsPinned. V3: Fix missing comparison operation in genPrimitiveIdentical on V3. This should fix Character = problem encounterd in Cuis. Debugging: Add printContextReferencesTo: & printActivationsOf: and have them print the pcs of the contexts they find. Cogit: Reorder annotation constants to simplify isPCMappedAnnotation:. Sista Cogit: Added a primitive to answer all the methods present in the machine code zone. allMachineCodeMethods <primitive: 'primitiveAllMethodsCompiledToMachineCode' module:''> ^#() Fix regression in VMMaker.oscog-eem.1823 when merging the two map enumerators into one that affects Sista. The merged enumerator must extend IsSendAnnotations with the AnnotationExtension. Plugins: Regenerate plugins using the recently revised type inferrence code. Slang: Extend type inference capabilities from the AST. Unify type inference used to #inferReturnTypeFromReturnsIn: with that based on AST. Now that type inference is a bit more thorough, release type restrictions in #isFunctional in order to obtain much more aggressive inlining. With those, a gain of 10% is possible on the LargeIntegersPlugin dominated bench: Use a type inference that better fits C rules (C99 standard section 6.3): - in (float op int), int is promoted to double not float - in (unsigned short op short) both operands are promoted to #int due to int promotion rules. Use minimum generality for generated integer constants: - use int if variable fits in int - else unsigned int - else long long (long would be enough for 64bits versions, but long long works for both 32 and 64) - else unsigned long long This is to avoid spurious unsigned promotion due to improved type inference. Mac OS X: Fix argument processing, so that e.g. myvm -breaksel aSelector my.image works (but -headless still fails). _,,,^..^,,,_ best, Eliot |
Free forum by Nabble | Edit this page |