BCompiler.st
changeset 247 fbb6e3b5764c
parent 246 abf09d4821fe
child 253 759ba0ddb672
--- a/BCompiler.st	Sun Apr 14 01:09:01 1996 +0200
+++ b/BCompiler.st	Sun Apr 14 01:29:58 1996 +0200
@@ -952,6 +952,7 @@
 
     (aSymbol == #storeClassVarS) ifTrue:[extra := #speciallitS.stackDelta := -1. ^ 40].
     (aSymbol == #storeGlobalS) ifTrue:[extra := #speciallitS. stackDelta := -1. ^ 40].
+    (aSymbol == #pushSpecialGlobal) ifTrue:[stackDelta := 1. extra := #index. ^ 200].
 
     (aSymbol == #storeOuterBlockVar) ifTrue:[stackDelta := -1. extra := #indexLevel. ^ 129].
 
@@ -1594,6 +1595,16 @@
     ^ false
 !
 
+isSpecialGlobalSymbol:nm
+    "return true, if unary selector sel is a special selector"
+
+    ^ #(Array String FloatArray DoubleArray
+      Point Symbol Smalltalk Processor) includesIdentical:nm
+
+    "Created: 13.4.1996 / 20:15:35 / cg"
+    "Modified: 13.4.1996 / 20:24:01 / cg"
+!
+
 isSpecialSendSelector:sel
     "return true, if unary selector sel is a special selector"
 
@@ -1813,6 +1824,20 @@
     ^ true
 !
 
+specialGlobalCodeFor:aSymbol
+    aSymbol == #Array ifTrue:[^ 0].
+    aSymbol == #String ifTrue:[^ 1].
+    aSymbol == #FloatArray ifTrue:[^ 2].
+    aSymbol == #DoubleArray ifTrue:[^ 3].
+    aSymbol == #Point ifTrue:[^ 4].
+    aSymbol == #Symbol ifTrue:[^ 5].
+    aSymbol == #Smalltalk ifTrue:[^ 6].
+    aSymbol == #Processor ifTrue:[^ 7].
+
+    self error:'invalid special global symbol'.
+    errorFlag := #Error
+!
+
 specialSendCodeFor:aSymbol
     aSymbol == #top ifTrue:[^ 0].
     aSymbol == #bottom ifTrue:[^ 1].
@@ -2177,6 +2202,6 @@
 !ByteCodeCompiler class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libcomp/Attic/BCompiler.st,v 1.72 1996-04-13 23:08:38 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libcomp/Attic/BCompiler.st,v 1.73 1996-04-13 23:29:58 cg Exp $'
 ! !
 ByteCodeCompiler initialize!