loadClasses
author Jan Vrany <jan.vrany@fit.cvut.cz>
Sat, 19 Jan 2013 23:54:47 +0000
branchrefactoring-vmdata
changeset 1986 9e63ab553922
parent 1818 2e5ed72e7dfd
child 2380 9195eccdcbd9
permissions -rw-r--r--
JavaNativeMethod & their implementation transformed to pass a reveiver. Java still does not boot at this point, some overloaded natives in sun,misc.Unsafe has to be fixed manually.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
     1
"{ package:'stx:libjava' }"
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
     2
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
     3
|files|
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
     4
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
     5
'loading package stx:libjava ...' printCR.
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
     6
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
     7
Scanner allowDollarInIdentifier:true.
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
     8
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
     9
"/
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    10
"/ base system
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    11
"/
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    12
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    13
files := #(
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    14
	'Java.st'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    15
	'JavaVM.st'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    16
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    17
	'JavaConstantPool.st'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    18
	'JavaSlotIndexCache.st'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    19
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    20
	'JavaObject.st'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    21
	'JavaClass.st'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    22
	'JavaMethod.st'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    23
	'JavaMethodWithException.st'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    24
	'JavaMethodWithHandler.st'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    25
	'JavaNativeMethod.st'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    26
	'JavaContext.st'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    27
	'JavaProcess.st'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    28
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    29
	'JavaClassReader.st'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    30
	'JavaDecompiler.st'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    31
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    32
	'JavaExceptionTableEntry.st'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    33
	'JavaLocalVariableTable.st'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    34
	'JavaLocalVariableTableEntry.st'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    35
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    36
	'JavaRef.st'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    37
	'JavaClassRef.st'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    38
	'JavaField.st'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    39
	'JavaFieldref.st'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    40
	'JavaMethodref.st'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    41
	'JavaInterfaceMethodref.st'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    42
	'JavaNameandType.st'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    43
	'JavaClassPointerRef.st'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    44
	'JavaBuiltInClassPointerRef.st'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    45
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    46
	'JavaUnresolvedConstant.st'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    47
	'JavaUnresolvedRefConstant.st'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    48
	'JavaUnresolvedClassConstant.st'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    49
	'JavaUnresolvedFieldrefConstant.st'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    50
	'JavaUnresolvedMethodrefConstant.st'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    51
	'JavaUnresolvedInterfaceMethodrefConstant.st'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    52
	'JavaUnresolvedNameandTypeConstant.st'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    53
	'JavaUnresolvedStringConstant.st'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    54
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    55
	'JavaView.st'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    56
	'JavaTopView.st'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    57
	'JavaPopUpView.st'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    58
	'JavaEmbeddedFrameView.st'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    59
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    60
	'SmalltalkAppletContext.st'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    61
	'SmalltalkAppletStub.st'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    62
).
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    63
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    64
(Smalltalk loadClassLibraryIfAbsent:'libjava') ifTrue:[
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    65
    |handle loaded|
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    66
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    67
    loaded := OrderedCollection new.
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    68
    handle := ObjectFileLoader loadedObjectHandles 
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    69
		detect:[:h | |cls|
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    70
		    cls := h classes firstIfEmpty:nil.
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    71
		    cls notNil and:[cls package = 'stx:libjava']
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    72
		]
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    73
		ifNone:nil.
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    74
    handle notNil ifTrue:[
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    75
	handle classes do:[:c| c isMeta ifFalse:[loaded add:c classFilename]].
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    76
    ].
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    77
    files := files asOrderedCollection.
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    78
    loaded do:[:f| files remove:f ifAbsent:[]].
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    79
].
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    80
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    81
files size > 0 ifTrue:[
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    82
  files do:[:s|
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    83
    '.' print.
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    84
    Smalltalk fileIn:s.
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    85
  ].
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    86
  ' ' printCR.
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    87
].
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    88
'done (stx:libjava).' printCR.
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    89
!
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    90
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    91