File size: 1,042 Bytes
8f3f8db
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
JS code generation
emitJSHeaderOn: aStream generator: aCodeGen
	"Emit a C function header for this method onto the given stream."

	aStream cr. 
	self emitJSFunctionHeader: aStream generator: aCodeGen.
	aStream nextPutAll: ' {'; cr.
	self emitGlobalStructReferenceOn: aStream.
	locals do: [ :var | | varDecl |
		aStream nextPutAll: '	var ', (aCodeGen returnPrefixFromVariable: var).
		varDecl := declarations at: var asString ifAbsent: [''].
		(varDecl includes: $=)
			ifTrue: [ | const |
				const := ((varDecl copyAfter: $=) replaceAll: ${ with: $[) replaceAll: $} with: $].
				aStream nextPutAll: ' =', const]
			ifFalse: [(varDecl includes: $[)
					ifTrue: [ | size |
						size := (varDecl copyAfter: $[) copyUpTo: $].
						size ifEmpty: [self halt].
						aStream nextPutAll: ' = new Array(', size, ')']].
		aStream nextPutAll: ';'; cr
	].
	(#(primitiveExtractChannel primitiveCondenseSound) includes: selector)
		ifTrue: [#(src dst) do: [:v | aStream nextPutAll: '	var _', v, ' = 0;'; cr]].
	locals isEmpty ifFalse: [ aStream cr ].