<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://trans.onionmixer.net/wiki/index.php?action=history&amp;feed=atom&amp;title=GnuSmalltalkUsersGuide%3ABaseChapter_037</id>
	<title>GnuSmalltalkUsersGuide:BaseChapter 037 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://trans.onionmixer.net/wiki/index.php?action=history&amp;feed=atom&amp;title=GnuSmalltalkUsersGuide%3ABaseChapter_037"/>
	<link rel="alternate" type="text/html" href="https://trans.onionmixer.net/wiki/index.php?title=GnuSmalltalkUsersGuide:BaseChapter_037&amp;action=history"/>
	<updated>2026-05-01T18:59:20Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.3</generator>
	<entry>
		<id>https://trans.onionmixer.net/wiki/index.php?title=GnuSmalltalkUsersGuide:BaseChapter_037&amp;diff=4024&amp;oldid=prev</id>
		<title>Onionmixer: GSUG CompiledBlock 페이지 추가</title>
		<link rel="alternate" type="text/html" href="https://trans.onionmixer.net/wiki/index.php?title=GnuSmalltalkUsersGuide:BaseChapter_037&amp;diff=4024&amp;oldid=prev"/>
		<updated>2014-01-23T10:04:23Z</updated>

		<summary type="html">&lt;p&gt;GSUG CompiledBlock 페이지 추가&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;;CompiledBlock&lt;br /&gt;
&lt;br /&gt;
==CompiledBlock==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;네임스페이스 Smalltalk에 정의됨&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;슈퍼클래스: CompiledCode&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;범주: 언어-구현&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:나는 컴파일된 블록을 표현한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===CompiledBlock 클래스: 인스턴스 생성===&lt;br /&gt;
&lt;br /&gt;
====new: numBytecodes header: anInteger method: outerMethod====&lt;br /&gt;
&lt;br /&gt;
주어진 바이트코드 수와 주어진 헤더(header)의 공간이 있는 수신자의 새 인스턴스를 응답하라. &lt;br /&gt;
&lt;br /&gt;
====numArgs: args numTemps: temps bytecodes: bytecodes depth: depth literals: literalArray====&lt;br /&gt;
&lt;br /&gt;
(거의) 완전한 CompiledBlock을 응답하라. 이를 완전하게 만들기 위해서는 새 객체의 &amp;#039;method&amp;#039; 변수를 설정하거나, 이것을 BlockClosure로 넣고 BlockClosure를 CompiledMethod의 리터럴로 넣어야 한다. 블록의 cleanness는 자동으로 계산된다. &lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===CompiledBlock: 접근하기===&lt;br /&gt;
&lt;br /&gt;
====flags====&lt;br /&gt;
&lt;br /&gt;
블록의 &amp;#039;cleanness&amp;#039;를 응답하라. 0 = 깨끗함; 1 = 수신자 변수와/또는 self로 접근; 2-30 = 1-29 컨텍스트 떨어진 변수로 접근; 31 = 메서드로부터 리턴 또는 thisContext를 밀어넣음&lt;br /&gt;
&lt;br /&gt;
====method====&lt;br /&gt;
&lt;br /&gt;
수신자가 상추하는 CompiledMethod 를 응답하라. &lt;br /&gt;
&lt;br /&gt;
====methodClass====&lt;br /&gt;
&lt;br /&gt;
수신자가 설치된 클래스를 응답하라. &lt;br /&gt;
&lt;br /&gt;
====methodClass: methodClass====&lt;br /&gt;
&lt;br /&gt;
수신자의 클래스 인스턴스 변수를 설정하라.&lt;br /&gt;
&lt;br /&gt;
====numArgs====&lt;br /&gt;
&lt;br /&gt;
수신자에게 전달되는 인자 수를 응답하라. &lt;br /&gt;
&lt;br /&gt;
====numLiterals====&lt;br /&gt;
&lt;br /&gt;
수신자에 대한 리터럴 수를 응답하라. &lt;br /&gt;
&lt;br /&gt;
====numTemps====&lt;br /&gt;
&lt;br /&gt;
수신자가 사용하는 임시 변수의 수를 응답하라. &lt;br /&gt;
&lt;br /&gt;
====selector====&lt;br /&gt;
&lt;br /&gt;
메서드가 어떤 선택자를 통해 호출되는지 응답하라. &lt;br /&gt;
&lt;br /&gt;
====selector: aSymbol====&lt;br /&gt;
&lt;br /&gt;
메서드가 어떤 선택자를 통해 호출되는지 설정하라.&lt;br /&gt;
&lt;br /&gt;
====sourceCodeLinesDelta====&lt;br /&gt;
&lt;br /&gt;
LINE NUMBER 바이트코드 내 번호부터 소스 코드 행 번호까지 delta를 응답하라.&lt;br /&gt;
&lt;br /&gt;
====sourceCodeMap====&lt;br /&gt;
&lt;br /&gt;
바이트코드 색인을 소스 코드 행 번호로 매핑하는 배열을 응답하라. 0 값은 유효하지 않은 명령어 포인터 색인을 나타낸다.&lt;br /&gt;
&lt;br /&gt;
====stackDepth====&lt;br /&gt;
&lt;br /&gt;
수신자에게 필요한 스택 슬롯의 개수를 응답하라. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===CompiledBlock: 기본===&lt;br /&gt;
&lt;br /&gt;
==== = aMethod====&lt;br /&gt;
&lt;br /&gt;
수신자가 aMethod와 같은지 응답하라.&lt;br /&gt;
&lt;br /&gt;
====methodCategory====&lt;br /&gt;
&lt;br /&gt;
메서드 범주를 응답하라.&lt;br /&gt;
&lt;br /&gt;
====methodCategory: aCategory====&lt;br /&gt;
&lt;br /&gt;
메서드 범주를 주어진 문자열로 설정하라.&lt;br /&gt;
&lt;br /&gt;
====methodSourceCode====&lt;br /&gt;
&lt;br /&gt;
메서드 소스 코드를 응답하라 (FileSegment, String, nil 중 하나)&lt;br /&gt;
&lt;br /&gt;
====methodSourceFile====&lt;br /&gt;
&lt;br /&gt;
메서드 소스 코드가 보관되는 파일을 응답하라.&lt;br /&gt;
&lt;br /&gt;
====methodSourcePos====&lt;br /&gt;
&lt;br /&gt;
methodSourceFile 내에서 메서드 소스 코드가 보관되는 위치를 응답하라. &lt;br /&gt;
&lt;br /&gt;
====methodSourceString====&lt;br /&gt;
&lt;br /&gt;
메서드 소스 코드를 문자열로 응답하라.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===CompiledBlock: 인쇄하기===&lt;br /&gt;
&lt;br /&gt;
====printOn: aStream====&lt;br /&gt;
&lt;br /&gt;
수신자의 클래스와 선택자를 aStream 상에 인쇄하라.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===CompiledBlock: 저장하기와 로딩하기===&lt;br /&gt;
&lt;br /&gt;
====binaryRepresentationObject====&lt;br /&gt;
&lt;br /&gt;
해당 메서드는 PluggableProxy를 CompiledBlock와 함께 사용하도록 만들기 위해 구현된다. 수신자를 포함하는 CompiledMethod로 #blockAt: 을 전송하는 DirectedMessage를 응답하라.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:GnuSmalltalkUsersGuide]]&lt;/div&gt;</summary>
		<author><name>Onionmixer</name></author>
	</entry>
</feed>