soiz1's picture
Upload folder using huggingface_hub
8f3f8db verified
translating builtins
generateAsIfVarAsValue: aNode on: aStream indent: anInteger
| cName fName class index fetchNode |
cName := String streamContents:
[:scStr | self emitJSExpression: aNode args first on: scStr].
class := Smalltalk
at: (cName asSymbol)
ifAbsent: [nil].
(class isNil not and: [class isBehavior]) ifFalse:
[^self error: 'first arg must identify class'].
fName := aNode args second value.
index := class allInstVarNames
indexOf: fName
ifAbsent: [^self error: 'second arg must be instVar'].
fetchNode := TSendNode new
setSelector: #fetchPointer:ofObject:
receiver: (TVariableNode new setName: 'interpreterProxy')
arguments: (Array
with: (TConstantNode new setValue: index - 1)
with: aNode receiver).
cName := aNode args third nameOrValue.
class := Smalltalk
at: (cName asSymbol)
ifAbsent: [nil].
(class isNil not and: [class isBehavior]) ifFalse:
[^self error: 'third arg must identify class'].
class jscg: self generateCoerceToValueFrom: fetchNode on: aStream