Branch: refs/heads/Cog Home: https://github.com/OpenSmalltalk/opensmalltalk-vm Commit: 5df7f5af3bbea09bd56817795ac15d050ae2337e https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/5df7f5af3bbea09bd56817795ac15d050ae2337e Author: Eliot Miranda <[hidden email]> Date: 2017-01-09 (Mon, 09 Jan 2017) Changed paths: M nsspur64src/vm/cogit.h M nsspur64src/vm/cogitX64.c M nsspur64src/vm/cointerp.c M nsspur64src/vm/cointerp.h M nsspur64src/vm/gcc3x-cointerp.c M nsspursrc/vm/cogit.h M nsspursrc/vm/cogitARMv5.c M nsspursrc/vm/cogitIA32.c M nsspursrc/vm/cogitMIPSEL.c M nsspursrc/vm/cointerp.c M nsspursrc/vm/cointerp.h M nsspursrc/vm/gcc3x-cointerp.c M nsspurstack64src/vm/gcc3x-interp.c M nsspurstack64src/vm/interp.c M nsspurstacksrc/vm/gcc3x-interp.c M nsspurstacksrc/vm/interp.c M spur64src/vm/cogit.h M spur64src/vm/cogitX64.c M spur64src/vm/cointerp.c M spur64src/vm/cointerp.h M spur64src/vm/gcc3x-cointerp.c M spursista64src/vm/cogit.h M spursista64src/vm/cogitX64.c M spursista64src/vm/cointerp.c M spursista64src/vm/cointerp.h M spursista64src/vm/gcc3x-cointerp.c M spursistasrc/vm/cogit.h M spursistasrc/vm/cogitARMv5.c M spursistasrc/vm/cogitIA32.c M spursistasrc/vm/cogitMIPSEL.c M spursistasrc/vm/cointerp.c M spursistasrc/vm/cointerp.h M spursistasrc/vm/gcc3x-cointerp.c M spursrc/vm/cogit.h M spursrc/vm/cogitARMv5.c M spursrc/vm/cogitIA32.c M spursrc/vm/cogitMIPSEL.c M spursrc/vm/cointerp.c M spursrc/vm/cointerp.h M spursrc/vm/gcc3x-cointerp.c M spurstack64src/vm/gcc3x-interp.c M spurstack64src/vm/interp.c M spurstacksrc/vm/gcc3x-interp.c M spurstacksrc/vm/interp.c M src/plugins/ADPCMCodecPlugin/ADPCMCodecPlugin.c M src/plugins/B2DPlugin/B2DPlugin.c M src/plugins/B3DAcceleratorPlugin/B3DAcceleratorPlugin.c M src/plugins/BitBltPlugin/BitBltPlugin.c M src/plugins/CroquetPlugin/CroquetPlugin.c M src/plugins/DSAPrims/DSAPrims.c M src/plugins/FilePlugin/FilePlugin.c M src/plugins/GeniePlugin/GeniePlugin.c M src/plugins/IA32ABI/IA32ABI.c M src/plugins/JPEGReaderPlugin/JPEGReaderPlugin.c M src/plugins/LargeIntegers/LargeIntegers.c M src/plugins/ScratchPlugin/ScratchPlugin.c M src/plugins/SoundGenerationPlugin/SoundGenerationPlugin.c M src/plugins/Squeak3D/Squeak3D.c M src/plugins/SqueakFFIPrims/ARM32FFIPlugin.c M src/plugins/SqueakFFIPrims/IA32FFIPlugin.c M src/plugins/SqueakFFIPrims/X64SysVFFIPlugin.c M src/plugins/SqueakFFIPrims/X64Win64FFIPlugin.c M src/plugins/StarSqueakPlugin/StarSqueakPlugin.c M src/plugins/UnicodePlugin/UnicodePlugin.c M src/plugins/VMProfileLinuxSupportPlugin/VMProfileLinuxSupportPlugin.c M src/plugins/VMProfileMacSupportPlugin/VMProfileMacSupportPlugin.c M src/plugins/Win32OSProcessPlugin/Win32OSProcessPlugin.c M src/plugins/ZipPlugin/ZipPlugin.c M src/vm/cogit.h M src/vm/cogitARMv5.c M src/vm/cogitIA32.c M src/vm/cogitMIPSEL.c M src/vm/cointerp.c M src/vm/cointerp.h M src/vm/cointerpmt.c M src/vm/cointerpmt.h M src/vm/gcc3x-cointerp.c M src/vm/gcc3x-cointerpmt.c M stacksrc/vm/gcc3x-interp.c M stacksrc/vm/interp.c Log Message: ----------- CogVM source as per VMMaker.oscog-eem.2079 Slang: Add support for constant reduction of const ifTrue: [bool] ifFalse: [statements] => bool to reduce isVanillaBlockClosure: to true if not using SistaV1BytecodeSet, and hence rescue C compilation of the non-Sista sources (ensureMethodIsCoggeds: needs this). Fix code generation for bitInvert64, fixing recently generated 64-bit sources. Fix indenting for not. To make code more readable when implementing SpurPlanningCompactor, markedBitShift was made a macro. That caused Slang to generate a bogus version of nullHeaderForMachineCodeMethod because it could no longer infer the type of the shift operand for the marked bit, and so generated 1UL << 55 instead of 1ULL << 55. Consequently nullHeaderForMachineCodeMethod answered 0 (!!). Add TParseNode>>constantNumbericValueIfAtAllPossibleOrNilIn: that provides a value for defines and methods answerinf constants as well as explicit constants and use it in generateShiftLeft:on:indent:, hence fixing nullHeaderForMachineCodeMethod. Fix inlining bugs due to an overcomplex and inaccurate completion check. Specifically: - inlineableFunctionCall:in: & inlineableSend:in: must see if a method wants to be inlined, so that completeness can be computed properly. - fix slips in tryToInlineMethodsIn: exiting too soon and always setting complete in a macro. - refactor checkForCompleteness:in: to checkForCompletenessIn: and simplify, setting complete if no incomplete send is found, rather than assuming completeness and then looking for inlineability, which is wrong. Have collectInlineList: set inline to false (rather than nil) if using asSpecified or asSpecifiedOrQuick. Fix pruneUnreachableMethods: to not delete <api> methods. Add cppIf:ifTrue: to statementsListsForInliningIn:'s filtering out. SmartSyntaxPlugin Slang: Avoid generating unreachable code when failing. Avoid an unnecessary test for failed if returning an expression which can't fail. And don't generate the return guard if there's nothing to guard. Clean up primitiveHasSocketAccess to be smart syntax. CoInterpreter: Fixed a bug where Cog would compiled compiledBlock like a compiledMethod, leading to very strange crashes. Refactor ensureMethodIsCogged: & ensureBlockIsCogged: numCopied: into ensureMethodIsCogged:maybeClosure: to reduce duplication. At the same time streamline ensureMethodIsCogged:maybeClosure: to avoid multiple calls on the Cogit. Cogit: Correct generateCogMethod/FullBlock which might write one byte too far. Indeed, (padIfPossibleWithStopsFrom: startAddress to: endAddress) is inclusive (it will write a byte into endAddress). So it must be called with (self padIfPossibleWithStopsFrom: startAddress to: startAddress + size - 1). Sista: Added identityHash in-line primitive Bytecode Set/Lowcode ExtB 00000000 1xxxxxxx constant decoding bug fix. Add some missing entries in the IA32 concretize instruction the dispatch table. IMMUTABILITY: Fix the NumTrampolines issue with the IMMUTABLE command line define. Spur: Move the attemptToShrink from fullGC to globalGarbageCollect so that it is included in lemming debugging. Make checkHeapFreeSpaceIntegrity check totalFreeOldSpace and hence catch SpurPlannngCompactor not freeing a free object at the end of an already compacted heap. Fix the free space leak checker invocations for the allocateSlots*InOldSpace:... One cannot invoke the leak checker until the allocated object's header has been filled in. Refactor scavengeInProgress into gcPhaseInProgress so that SpurPlanningCompactor can identify sliding compaction. Refactor shouldRemapObj:/remapObj: to double-dispatch through the compactor so that SpurPlanningCompactor can use its implicit forwarding test isMobile: to decide if a forwasrding pointer should be followed. Move globalGarbageCollect's segmentManager prepareForGlobalSweep send to immediately before compactor compact. Rename excludeUnmarkedNewSpaceObjs to excludeUnmarkedObjs throughout the leak checker; indeed any unmarked obj should be excluded immediately after the mark phase. General: Add printMethodImplementorsOf: for debugging. Extract the printing in printOopsFrom:to: into printEntity:, which is useful on its own for debugging. Plugins: FFIPlugin: Fix access to 64 bits int from 32 bit VM in primitiveFFIIntegerAtPut |
Free forum by Nabble | Edit this page |