mirror of
				https://github.com/lxsang/Diya-API.git
				synced 2025-10-31 18:25:38 +01:00 
			
		
		
		
	initial comit
This commit is contained in:
		
							
								
								
									
										3
									
								
								.properties
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								.properties
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| { | ||||
| 	#format : #tonel | ||||
| } | ||||
							
								
								
									
										5
									
								
								Diya/DiyaBaseObject.class.st
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								Diya/DiyaBaseObject.class.st
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | ||||
| Class { | ||||
| 	#name : #DiyaBaseObject, | ||||
| 	#superclass : #Object, | ||||
| 	#category : #'Diya-Core' | ||||
| } | ||||
							
								
								
									
										34
									
								
								Diya/DiyaBoot.class.st
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								Diya/DiyaBoot.class.st
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,34 @@ | ||||
| Class { | ||||
| 	#name : #DiyaBoot, | ||||
| 	#superclass : #DiyaBaseObject, | ||||
| 	#category : #'Diya-Runtime' | ||||
| } | ||||
|  | ||||
| { #category : #'system startup' } | ||||
| DiyaBoot class >> getLoadedClasses [ | ||||
| 	^ SessionManager default startupList | ||||
| 		collect: [ :c |  | ||||
| 			(c respondsTo: #registeredClass) | ||||
| 				ifTrue: [ c registeredClass ] | ||||
| 				ifFalse: [ c ] ] | ||||
| ] | ||||
|  | ||||
| { #category : #'class initialization' } | ||||
| DiyaBoot class >> initialize [ | ||||
| 	Smalltalk addToStartUpList: DiyaBoot  | ||||
| ] | ||||
|  | ||||
| { #category : #'system startup' } | ||||
| DiyaBoot class >> startUp: status [ | ||||
| 	self getLoadedClasses | ||||
| 		do: [ :c |  | ||||
| 			Transcript | ||||
| 				show: c className; | ||||
| 				cr ]. | ||||
| 	Transcript show: self tickSinceStart; cr. | ||||
| ] | ||||
|  | ||||
| { #category : #'system startup' } | ||||
| DiyaBoot class >> tickSinceStart [ | ||||
| 	^ self ffiCall: #( uint clock() ) module: 'libc.so.6'. | ||||
| ] | ||||
							
								
								
									
										95
									
								
								Diya/ImageInitializer.class.st
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										95
									
								
								Diya/ImageInitializer.class.st
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,95 @@ | ||||
| Class { | ||||
| 	#name : #ImageInitializer, | ||||
| 	#superclass : #CommandLineHandler, | ||||
| 	#category : #'Diya-Runtime' | ||||
| } | ||||
|  | ||||
| { #category : #accessing } | ||||
| ImageInitializer class >> commandName [ | ||||
| 	^'init' | ||||
| ] | ||||
|  | ||||
| { #category : #activation } | ||||
| ImageInitializer >> activate [ | ||||
| 	self initializeImage. | ||||
| 	(self hasOption: 'save') | ||||
| 		ifTrue: [ | ||||
| 			self snap | ||||
| 		]. | ||||
| 	^ self exitSuccess | ||||
| ] | ||||
|  | ||||
| { #category : #'init-image' } | ||||
| ImageInitializer >> getInitListExclude: loaded [ | ||||
| 	^ Smalltalk allClasses | ||||
| 		select: [ :c |  | ||||
| 			(loaded includes: c) not | ||||
| 				and: (c class selectors indexOf: #initialize ifAbsent: [  ]) isNotNil ] | ||||
| ] | ||||
|  | ||||
| { #category : #'init-image' } | ||||
| ImageInitializer >> getLoadedClasses [ | ||||
| 	| list | | ||||
| 	list := (SessionManager default startupList | ||||
| 		collect: [ :c |  | ||||
| 			(c respondsTo: #registeredClass) | ||||
| 				ifTrue: [ c registeredClass ] | ||||
| 				ifFalse: [ c ] ]) asSet. | ||||
| 	list add: SourceFileArray. | ||||
| 	list add: FFICompilerPlugin. | ||||
| 	^ list | ||||
| ] | ||||
|  | ||||
| { #category : #'init-image' } | ||||
| ImageInitializer >> initializeImage [ | ||||
| 	| initializeList retryList loaded | | ||||
| 	retryList := Set new. | ||||
| 	loaded := self getLoadedClasses. | ||||
| 	self preloadSystem: loaded. | ||||
| 	initializeList := self getInitListExclude: loaded. | ||||
| 	initializeList | ||||
| 		do: [ :c |  | ||||
| 			[ c initialize ] | ||||
| 				on: Error | ||||
| 				do: [ c = Cursor | ||||
| 						ifFalse: [ retryList add: c ] ] ]. | ||||
| 	retryList | ||||
| 		do: [ :c |  | ||||
| 			Transcript | ||||
| 				show: 'CLASS: ' , c asString , ' is not initialized'; | ||||
| 				cr. | ||||
| 			c initialize ]. | ||||
| 	FFIMethodRegistry resetAll. | ||||
| 	Smalltalk garbageCollect. | ||||
| 	SourceFiles := SourceFileArray new. | ||||
| 	Transcript show: 'Image initialized'; cr. | ||||
| ] | ||||
|  | ||||
| { #category : #'init-image' } | ||||
| ImageInitializer >> preloadSystem: loaded [ | ||||
| 	"load unicode" | ||||
| 	|udata ucase base| | ||||
| 	base := Smalltalk imageDirectory  pathString. | ||||
| 	udata := base,'/UnicodeData.txt'. | ||||
| 	ucase := base,'/CaseFolding-8.0.0.txt'. | ||||
| 	loaded add: (TextConstants initialize; yourself ). | ||||
| 	loaded add: (InflateStream  initialize; yourself ). | ||||
| 	loaded add: (FastInflateStream  initialize; yourself ). | ||||
| 	EncodedCharSet initialize. | ||||
| 	Unicode initializeTagConstants. | ||||
| 	Unicode  | ||||
| 		parseUnicodeDataFrom: (ZnCharacterReadStream on: (File named: udata ) readStream encoding: 	'utf8'); | ||||
| 		parseCaseMappingFrom: (ZnCharacterReadStream on: (File named: ucase ) readStream encoding: 'utf8').  | ||||
| 	Character characterSet: Unicode. | ||||
| 	ByteTextConverter initialize. | ||||
| 	CombinedChar parseCompositionMappingFrom: (ZnCharacterReadStream on: (File named: udata ) readStream encoding: 'utf8'). | ||||
| ] | ||||
|  | ||||
| { #category : #activation } | ||||
| ImageInitializer >> snap [ | ||||
| 	|pkg| | ||||
| 	self class removeFromSystem. | ||||
| 	Smalltalk garbageCollect. | ||||
| 	Smalltalk snapshot: true andQuit: false. | ||||
| 	 | ||||
| ] | ||||
							
								
								
									
										1
									
								
								Diya/package.st
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								Diya/package.st
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| Package { #name : #Diya } | ||||
		Reference in New Issue
	
	Block a user