GnuSmalltalkUsersGuide:BaseChapter 037

From 흡혈양파의 번역工房
Jump to navigation Jump to search
CompiledBlock

CompiledBlock

네임스페이스 Smalltalk에 정의됨

슈퍼클래스: CompiledCode

범주: 언어-구현


나는 컴파일된 블록을 표현한다.


CompiledBlock 클래스: 인스턴스 생성

new: numBytecodes header: anInteger method: outerMethod

주어진 바이트코드 수와 주어진 헤더(header)의 공간이 있는 수신자의 새 인스턴스를 응답하라.

numArgs: args numTemps: temps bytecodes: bytecodes depth: depth literals: literalArray

(거의) 완전한 CompiledBlock을 응답하라. 이를 완전하게 만들기 위해서는 새 객체의 'method' 변수를 설정하거나, 이것을 BlockClosure로 넣고 BlockClosure를 CompiledMethod의 리터럴로 넣어야 한다. 블록의 cleanness는 자동으로 계산된다.


CompiledBlock: 접근하기

flags

블록의 'cleanness'를 응답하라. 0 = 깨끗함; 1 = 수신자 변수와/또는 self로 접근; 2-30 = 1-29 컨텍스트 떨어진 변수로 접근; 31 = 메서드로부터 리턴 또는 thisContext를 밀어넣음

method

수신자가 상추하는 CompiledMethod 를 응답하라.

methodClass

수신자가 설치된 클래스를 응답하라.

methodClass: methodClass

수신자의 클래스 인스턴스 변수를 설정하라.

numArgs

수신자에게 전달되는 인자 수를 응답하라.

numLiterals

수신자에 대한 리터럴 수를 응답하라.

numTemps

수신자가 사용하는 임시 변수의 수를 응답하라.

selector

메서드가 어떤 선택자를 통해 호출되는지 응답하라.

selector: aSymbol

메서드가 어떤 선택자를 통해 호출되는지 설정하라.

sourceCodeLinesDelta

LINE NUMBER 바이트코드 내 번호부터 소스 코드 행 번호까지 delta를 응답하라.

sourceCodeMap

바이트코드 색인을 소스 코드 행 번호로 매핑하는 배열을 응답하라. 0 값은 유효하지 않은 명령어 포인터 색인을 나타낸다.

stackDepth

수신자에게 필요한 스택 슬롯의 개수를 응답하라.


CompiledBlock: 기본

= aMethod

수신자가 aMethod와 같은지 응답하라.

methodCategory

메서드 범주를 응답하라.

methodCategory: aCategory

메서드 범주를 주어진 문자열로 설정하라.

methodSourceCode

메서드 소스 코드를 응답하라 (FileSegment, String, nil 중 하나)

methodSourceFile

메서드 소스 코드가 보관되는 파일을 응답하라.

methodSourcePos

methodSourceFile 내에서 메서드 소스 코드가 보관되는 위치를 응답하라.

methodSourceString

메서드 소스 코드를 문자열로 응답하라.


CompiledBlock: 인쇄하기

printOn: aStream

수신자의 클래스와 선택자를 aStream 상에 인쇄하라.


CompiledBlock: 저장하기와 로딩하기

binaryRepresentationObject

해당 메서드는 PluggableProxy를 CompiledBlock와 함께 사용하도록 만들기 위해 구현된다. 수신자를 포함하는 CompiledMethod로 #blockAt: 을 전송하는 DirectedMessage를 응답하라.


Notes