[prev in list] [next in list] [prev in thread] [next in thread]
List: squeak-vm-dev
Subject: [Vm-dev] VM Maker: CogTools-LM.94.mcz
From: commits () source ! squeak ! org
Date: 2023-11-23 16:13:14
Message-ID: 20231123161317.27564583D0E () mail ! squeak ! org
[Download RAW message or body]
Leon Matthes uploaded a new version of CogTools to project VM Maker:
http://source.squeak.org/VMMaker/CogTools-LM.94.mcz
==================== Summary ====================
Name: CogTools-LM.94
Author: LM
Time: 23 November 2023, 5:13:14.611051 pm
UUID: bf8819e7-2069-49db-a7d9-593bfad324c2
Ancestors: CogTools-eem.93
Filter Linux symbols on an image level, not in the primitive.
Follow-up for VMMaker.threaded-LM.3348
This ensures that even if the primitive leaves an entry of the Array empty, the \
Manager just filters it out.
=============== Diff against CogTools-eem.93 ===============
Item was changed:
----- Method: VMProfilerLinuxSymbolsManager>>initializeMost (in category \
'initialize-release') ----- initializeMost
| shortNames |
initialized := false.
maxAddressMask := (2 raisedToInteger: 32) - 1.
modulesByName := Dictionary new.
symbolsByModule := Dictionary new.
shortNames := Set new.
tempDir := self class tempDirectory.
CompatibilityClass ensureExistenceOfDirectory: tempDir.
modules := self primitiveExecutableModules.
modules := (1 to: modules size by: 2) collect:
[:i| | fileName shortName counter longName |
fileName := modules at: i.
+ "The linux-gate.so.1 library may result in an empty entry."
+ fileName ifNotNil: [
+ (fileName beginsWith: '/dgagent') ifTrue:
+ [fileName := fileName allButFirst: 8].
+ shortName := CompatibilityClass nameOfFile: fileName in: tempDir.
+ counter := 0.
+ [shortNames includes: shortName] whileTrue:
+ [counter := counter + 1.
+ shortName := (CompatibilityClass nameOfFile: fileName in: tempDir), \
counter printString]. + shortNames add: shortName.
+ longName := (modules at: i + 1)
+ ifNil: [fileName]
+ ifNotNil:
+ [:symlink|
+ symlink first = $/
+ ifTrue: [symlink]
+ ifFalse: [( CompatibilityClass parentPathOfFile: fileName ), '/', \
symlink]]. + "some files are off limits (e.g. /dgagent/lib/preload.so)"
+ (CompatibilityClass exists: longName) ifTrue:
+ [(modulesByName
+ at: longName
+ put: VMPExecutableModuleSymbol new)
+ name: longName;
+ shortName: shortName]]].
- (fileName beginsWith: '/dgagent') ifTrue:
- [fileName := fileName allButFirst: 8].
- shortName := CompatibilityClass nameOfFile: fileName in: tempDir.
- counter := 0.
- [shortNames includes: shortName] whileTrue:
- [counter := counter + 1.
- shortName := (CompatibilityClass nameOfFile: fileName in: tempDir), counter \
printString].
- shortNames add: shortName.
- longName := (modules at: i + 1)
- ifNil: [fileName]
- ifNotNil:
- [:symlink|
- symlink first = $/
- ifTrue: [symlink]
- ifFalse: [( CompatibilityClass parentPathOfFile: fileName ), '/', \
symlink]].
- "some files are off limits (e.g. /dgagent/lib/preload.so)"
- (CompatibilityClass exists: longName) ifTrue:
- [(modulesByName
- at: longName
- put: VMPExecutableModuleSymbol new)
- name: longName;
- shortName: shortName]].
"The primitive always answers the VM info in the first entry."
vmModule := modules first.
"now filter out the files we can't read..."
modules := modules select: [:m| m notNil and: [modulesByName includesKey: m \
name]]!
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic