KR19990078103A - 신속하게 서브-클래스 검사와 서브-타입 검사를 구현하는 방법과 장치 - Google Patents

신속하게 서브-클래스 검사와 서브-타입 검사를 구현하는 방법과 장치 Download PDF

Info

Publication number
KR19990078103A
KR19990078103A KR19990009588A KR19990009588A KR19990078103A KR 19990078103 A KR19990078103 A KR 19990078103A KR 19990009588 A KR19990009588 A KR 19990009588A KR 19990009588 A KR19990009588 A KR 19990009588A KR 19990078103 A KR19990078103 A KR 19990078103A
Authority
KR
South Korea
Prior art keywords
type
class
candidate
sub
computer
Prior art date
Application number
KR19990009588A
Other languages
English (en)
Other versions
KR100649799B1 (ko
Inventor
배크 라스
미트로빅 슬젼
휄즐레 어스
Original Assignee
썬 마이크로시스템즈, 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US09/107,224 external-priority patent/US6714991B1/en
Application filed by 썬 마이크로시스템즈, 인코포레이티드 filed Critical 썬 마이크로시스템즈, 인코포레이티드
Publication of KR19990078103A publication Critical patent/KR19990078103A/ko
Application granted granted Critical
Publication of KR100649799B1 publication Critical patent/KR100649799B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/465Distributed object oriented systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/449Object-oriented method invocation or resolution

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

프로그램 실행 중(中)에 신속하게 서브-타입 검사(fast subtype check)를 실행하는 방법(method)과 장치(apparatus)를 발표한다. 본 발명의 하나의 특징에 따라서, 객체를 바탕으로 하는 컴퓨팅 시스템(object-based computing system)의 일부분이 되는 객체와 관련이 있는 클래스(class)가 또 하나 타입(type)의 서브-타입(subtype)인지를 결정하는 방법은, 객체와 연관성이 있는 클래스와 관련이 있는 동적(動的) 스토리지 위치(dynamic storage location)에서 후보 타입(candidate type)을 얻는 단계, 그리고 후보 타입(candidate type)과 같을 가능성이 있는 제 1 타입(first type)에 대하여 후보 타입(candidate type)을 비교하는 단계 등을 포함한다. 그 다음에, 후보 타입(candidate type)이 실질적으로 제 1 타입(first type)과 일치하는지에 관하여 결정을 한다. 후보 타입(candidate type)이 실질적으로 제 1 타입(first type)과 일치한다고 결정을 할 때, 후보 타입(candidate type)이 제 1 타입(first type)의 서브-타입(subtype)이라는 것에 대한 표시(indication)를 공급한다. 하나의 실시예(實施例)에 있어서, 동적(動的) 스토리지 위치에서 얻어진 후보 타입(candidate type)이, 객체와 관련이 있는 클래스에 있는 캐시 요소(cache element)에서 얻어진다.

Description

신속하게 서브-클래스 검사와 서브-타입 검사를 구현하는 방법과 장치{METHOD AND APPARATUS FOR IMPLEMENTING FAST SUBCLASS AND SUBTYPE CHECKS}
본 발명은 일반적으로 객체를 바탕으로 하는 시스템(object-based system)에 있는 객체(客體) 사이의 관계를 결정하는 것에 관한 것이다. 보다 더 상세하게, 본 발명은 객체를 바탕으로 하는 시스템(object-based system)에 있는 객체(客體)에서 효율적으로 서브-타입 검사(subtype check)를 실행하는 것에 관한 것이다.
객체가 특별한 클래스(class)와 서브-클래스(sub-class) 등의 일부가 되도록 객체를 바탕으로 하는 많은 컴퓨팅 시스템(computing system)을 구성하는데, 이러한 클래스(class)와 서브-클래스(sub-class) 등은 객체에 대하여 이용 가능한 기능을 정의한다. 프로그램 실행 중(中)에, 일반적으로 가상 기계(virtual machine)는 프로그램의 실행을 쉽게 하도록 객체 사이의 관계를 검사(check)한다. 실례(實例)에 의하여, 가상 기계(virtual machine)는 서브-클래스(sub-class), 서브-타입(subtype), 또는 객체 사이의 관계 등을 검사할 수 있다. 캘리포니아에 있는 Palo Alto 의 Sun Microsystems, Inc 에 의하여 개발된 JavaTM프로그래밍 언어와 같은, 어떤 프로그래밍 언어에 있어서, 프로그래밍 언어 내(內)에 있는 구성은 서브-클래스 검사(sub-class check)를 포함한다. 이러한 서브-클래스 검사는 일반적으로 특별한 객체가 주어진 타입을 가지는지에 대한 결정을 포함한다. 즉, 특별한 객체의 타입을 결정하도록 프로그램과 관련이 있는 클래스 구성을 검사한다.
도 1 은, 종래의 클래스 구성(conventional class structure)의 대표 그림을 나타낸다. 클래스 구성(102)(class structure), 예를 들면, 클래스 분류 체계(class hierarchy)는 클래스(106)(class)와 서브-클래스(110)(sub-class) 등을 포함한다. 일반적으로, 클래스(106)(class)는 다수의 서브-클래스(110)를 포함할 수 있는 추상 클래스(abstract class)이다. 도 1 에서 나타난 것처럼, 서브-클래스"1"(110a), 서브-클래스"2"(110b), 및 서브-클래스"N"(110c) 등은 클래스(106)의 "직접(direct)" 서브-클래스인데, 서브-클래스"A1"(110d)은 서브-클래스"1"(110a)의 직접 서브-클래스이다. 서브-클래스"A1"(110d)이 클래스(106)의 서브-클래스가 되는 서브-클래스"1"(110a)의 서브-클래스이기 때문에, 서브-클래스"A1"(110d)은 클래스(106)의 간접 클래스(indirect class)로써 고려될 수 있다.
클래스(106)는 일반적으로 서로 다른 함수(function), 또는 방법(method)의 다양성을 포함한다. 각각의 서브-클래스(110)는 서로 다른 세트의 함수를 포함한다. 실례(實例)에 의하여, 서브-클래스"1"(110a)은 이러한 클래스의 멤버가 되는 객체에 대하여 특별한 함수를 일반적으로 포함한다. 클래스(106)의 멤버가 되는 객체는 실질적으로 클래스(106)와 관련이 있는 모든 함수를 실행한다. 또한, 서브-클래스(110) 중(中)에서 어떤 서브-클래스의 멤버가 되는 객체는, 클래스(106)의 멤버가 된다. 이와 같이, 또한, 서브-클래스(110) 중(中)에서 어떤 서브-클래스의 멤버가 되는 객체는, 클래스(106)와 관련이 있는 함수를 실행할 수 있다. 하지만, 특별한 서브-클래스, 예를 들면, 서브-클래스"1"(110a)의 멤버가 되는 객체는, 이러한 클래스와는 다른 서브-클래스, 예를 들면, 서브-클래스"2"(110b)와 관련이 있는 특별한 함수를 실행하지 않을 수 있다. 그러므로, 객체가 어떤 서브-클래스(110)에 효율적으로 속하는지에 대한 결정은, 객체가 실행할 수 있는 함수를 결정한다.
서브-클래스"1"(110a)에 의하여 정의되는 객체로써 클래스(106)에 의하여 정의되는 객체를 효율적으로 나타낼 목적으로, 프로그램이 실행되는 시간(runtime)에서 한정된 예상(narrowing cast)을 이용할 수 있다. 하지만, 클래스(106)에 의하여 정의되는 객체는 서브-클래스"1"(110a)에 의하여서 보다는 서브-클래스"2"(110b)에 의하여 정의될 수 있기 때문에, 서브-클래스"1"(110a)과 관련이 있는 객체가 정확한지를 결정할 목적으로, 일반적으로 검사는 실행된다. 당해 기술 종사 업자에 의하여 높이 평가되는 것처럼, 객체가 서브-클래스"1"(110a)과 관련이 있는지에 관한 검사는, 객체는 서브-클래스"1"(110a)과 적어도 관련이 있음을 결정하는 검사로써 효율적이다. 달리 말하면, 서브-클래스"A1"(110d)과 관련이 있는 객체는, 또한 서브-클래스"1"(110a)과 관련이 있도록 일반적으로 결정될 것이다.
JavaTM환경에 있어서, 객체의 서브-타입, 예를 들면, is_subtype 함수는 정적(靜的)으로 인코딩(encoding)된다. 함수를 정적(靜的)으로 인코딩(encoding)하는데 이용되는 방법은 다양할 수 있지만, 통상적으로 이용되는 하나의 방법은 2 차원의 비트 매트릭스(two-dimensional bit matrix)의 이용을 포함하는데, 여기서 (i,j)에 의하여 정의되는 위치에서 비트는 is_subtype(ti,tj)의 결과를 인코딩(encoding)한다. 이러한 매트릭스를 이용하여, 서브-타입 검사(subtype check)는 객체의 서브-타입을 결정하는데 매트릭스로의 인덱싱(indexing)을 효율적으로 포함한다. 하지만, 매트릭스의 크기는 실질적으로 중요하고, 서브-타입 검사는 때때로 일반적으로 요구되는 명령의 비트 조정으로 인(因)하여 느려진다.
일반적으로, 서브-타입 검사를 할 때, 타입의 실질적인 모든 서브-타입, 예를 들면, 클래스의 실질적인 모든 서브-클래스는, 특별한 객체의 서브-타입을 결정하는데 일반적으로 검사될 수 있다. 어떤 분류 체계적인 클래스 구성에 있어서, 예를 들면, 도 1 에서의 클래스 구성(102)에 있어서, 검사되어야만 하는 서브-클래스의 숫자는 상대적으로 크다. 실례(實例)에 의하여, 어떤 클래스는 이와 관련이 있는 수 백개의 서브-클래스를 가질 수 있다. 이와 같이, JavaTM프로그래밍 언어에서 정의되는 인터페이스와 관련이 있는 경우에서와 같이, 다수의 서브-타입이 이용 가능할 때, 서브-타입 검사의 구현은 때때로 효율적이지 않다고 입증된다. 즉, 다수의 서브-타입이 이용 가능할 때, 위에서 기술(記述)된 것처럼, 각각의 서브-타입을 검사하는 것은 일반적으로 시간을 낭비한다. 추가로, 다수의 상속을 받은 레이어를 이용하는 시스템에 있어서, 예를 들면, C++ 프로그래밍 언어에 의하여 정의되는 시스템에 있어서, 서브-타입 검사를 구현하는 것은 또한 때때로 효율적이지 않다. 다수의 상속을 받은 레이어를 갖춘 시스템에 대하여, 상속을 받은 각각의 레이어를 검사한다는 사실로 인(因)하여, 서브-타입 검사(subtype check)는 일반적으로 효율적으로 구현하는 것이 어렵다.
효율이 있는 서브-타입 검사의 구현은, 검사가 빈번하게 일어나기 때문에 중요하다. 프로그램의 실행 중(中)에 검사가 빈번하게 일어날 때, 검사와 관련이 있는 오버헤드(overhead)는 상대적으로 크다. 어떤 경우에 있어서, 당해 기술 종사 업자에 의하여 높이 평가되는 것처럼, 프로그램이 실행되는 동안에 있게 되는 되풀이되는 서브-타입 검사를 하는 것에 관하여 특별하게, 프로그램이 실행되는 동안에 있게 되는 서브-타입 검사(subtype check), 또는 서브-타입 테스트(subtype test)는, 전체적인 프로그램에 관하여 중요할 수 있는 순서에 의하여 정(定)해지는 여덟 개의 명령을 필요로 한다. 그러므로, 빈번하게 일어나는 서브-타입 검사에 의하여, 프로그램이 실행되는 속도를 떨어뜨린다.
일반적으로, 프로그램의 실행 중(中)에 서브-타입을 검사할 때, 프로그램과 관련이 있는 실질적인 모든 클래스와 방법 등은 공지되어 있다. 때때로, 데이터 구조는 프로그램과 관련이 있는 모든 클래스와 방법 등을 나열하도록 구성됨으로써, 클래스와 방법에 쉽게 접근 가능하다. 달리 말하면, 상기 데이터 구조는 때때로 상대적으로 크고, 중요한 시스템 자원(資源)을 낭비한다. 덧붙여서, 프로그램과 관련이 있는 모든 클래스와 방법 등에서 공지된 요구 사항은, 동적(動的) 연결, 또는 동적(動的) 클래스 적재를 이용하는 시스템과 호환(互換) 가능하지 않은데, 여기서 동적(動的) 연결에 의하여 프로그램과 관련이 있는 클래스와 방법 등은 효율적으로 변환된다. 프로그램의 기능은 동적(動的) 연결을 이용하는 기능이 없는 것에 의하여 이루어질 수 있다. 동적 연결(dynamic linking)을 이용하는 환경에 있어서, 클래스 적재를 포함하는 각각의 작동 후(後)에 일반적으로 데이터 구조는 다시 계산되는데, 이러한 것은 시간을 낭비함으로써 효율적이지 않다.
그러므로, 요구되어지는 것은 서브-타입 검사(subtype check)가 일어날 때 효율을 개선시키는 방법과 장치 등이다. 보다 더 상세하게, 정말로 요구되어지는 것은, 클래스 적재 작동(class loading operation)이 일어날 때마다 데이터 구조(data structure)를 다시 계산할 필요없이, 서브-타입 검사(subtype check)를 효율적으로 실행하는 방법과 장치 등이다.
프로그램 실행 중(中)에 신속하게 서브-타입 검사(fast subtype check)를 실행하는 방법(method)과 장치(apparatus)를 발표한다. 본 발명의 하나의 특징에 따라서, 객체를 바탕으로 하는 컴퓨팅 시스템(object-based computing system)의 부분인 객체(客體)와 관련이 있는 타입을 신속하게 효율적으로 결정하는 방법(method)은, 객체와 연관성이 있는 클래스와 관련이 있는 동적(動的) 스토리지 위치(dynamic storage location)에서 후보 타입(candidate type)을 얻는 단계, 그리고 후보 타입(candidate type)과 같을 가능성이 있는 제 1 타입(first type)에 대하여 후보 타입(candidate type)을 비교하는 단계 등을 포함한다. 그 다음에, 후보 타입(candidate type)이 실질적으로 제 1 타입(first type)과 일치하는지에 관하여 결정을 한다. 후보 타입(candidate type)이 실질적으로 제 1 타입(first type)과 일치한다고 결정을 할 때, 후보 타입(candidate type)이 제 1 타입(first type)의 서브-타입(subtype)이라는 것에 대한 표시(indication)를 공급한다.
본 발명의 하나의 특징에 따라서, 컴퓨터 시스템에서 존재하는 제 1 객체와 관련이 있는 타입(type)을 결정하도록 컴퓨터 시스템(computer system)은 설치된다. 이러한 컴퓨터 시스템은 프로세서(processor), 메모리, 후보 타입을 메모리로 적재하도록 설치되는 적재 메커니즘(loading mechanism) 등을 포함한다. 후보 타입은 제 1 객체와 관련이 있는 클래스 객체에서 얻어진다. 컴퓨터 시스템은 또한 제 1 타입에 대하여 후보 타입(candidate type)을 비교하도록 설치되는 비교 메커니즘(comparison mechanism), 그리고 후보 타입이 제 1 타입과 실질적으로 일치하는지를 결정하도록 설치되는 결정 메커니즘(determination mechanism) 등을 포함한다. 후보 타입이 실질적으로 제 1 타입과 일치한다고 결정할 때, 후보 타입이 제 1 타입에 실질적으로 일치하는 표시(indication)를 공급하도록 설치되는 표시기(indicator)를 공급하도록, 컴퓨터 시스템에 있는 표시기(indicator)는 설치된다.
본 발명의 또 하나의 특징에 따라서, 특별한 클래스의 멤버(member)가 되는 객체에서 서브-타입 검사(subtype check)를 실행하는 방법은, 특별한 클래스와 관련이 있는 위치에서 저장된 요소(stored element)를 얻는 단계를 포함한다. 저장된 요소(stored element)는 객체와 관련이 있을 가능성이 있는 제 1 서브-타입과 연관성이 있는 정보를 포함한다. 또한, 방법은, 저장된 요소에서 포함되는 정보는 객체와 연관성이 있는 실제 서브-타입(actual subtype)과 관련이 있다고 결정하는 단계, 그리고 저장된 요소와 실제 서브-타입 등이 관련이 있을 때, 저장된 요소에 포함된 정보는 실제 서브-타입과 관련이 있다는 표시(indication)를 공급하는 단계 등을 포함한다. 하나의 실시예에 있어서, 또한, 방법은, 저장된 요소에 포함된 정보는 실제 서브-타입과 관련이 없을 때, 객체의 실제 서브-타입을 결정하는 단계, 그리고 특별한 클래스와 연관성이 있는 위치로 실제 서브-타입과 관련이 있는 정보를 저장하는 단계 등을 포함한다.
본 발명은 다음의 상세한 기술(記述)을 읽으면서, 그리고 도면의 다양한 그림을 연구하면서 보다 더 잘 이해할 것이다.
본 발명은, 특별한 실시예(實施例)에서, 부속된 도면과 관련하여 얻어지는 다음의 기술(記述)에 의하여 이해될 수 있다.
도 1 은, 종래의 클래스 분류 체계(conventional class hierarchy)의 대표 그림을 나타낸다 ;
도 2a 는, 본 발명의 실시예(實施例)에 따라서, 객체가 특별한 타입의 서브-타입(subtype)인지를 결정하는 것과 관련이 있는 단계를 나타내는 처리 순서도를 나타낸다 ;
도 2b 는, 본 발명의 실시예(實施例)에 따라서, 적재된 캐시(loaded cache)에 대하여 타입(type)을 비교하는 것과 관련이 있는 단계, 예를 들면, 도 2a 의 단계(208)를 나타내는 처리 순서도를 나타낸다 ;
도 2c 는, 본 발명의 실시예(實施例)에 따라서, 캐시 요소(cache element)를 갖춘 클래스(class)의 대표 그림을 나타낸다 ;
도 3 는, 본 발명을 구현하는데 적합한 컴퓨터 시스템(computer system)의 대표 그림을 나타낸다 ; 그리고
도 4 는, 본 발명의 실시예(實施例)에 따라서, 가상 기계(virtual machine)의 대표 그림을 나타낸다.
*참조 번호 설명
102 : 클래스 구조(class structure)
202 : 객체가 타입"B"의 서브-타입(subtype)인지를 결정하는 방법
330 : 컴퓨터 시스템(computer system)
405 : 컴파일-시간 환경(compile-time environment)
435 : 실행-시간 환경(runtime environment)
440 : 가상 기계(virtual machine)
일반적으로, 객체(客體) 사이의 서브-타입 관계(subtype relationship)를 결정하기 위하여 실행되는 서브-타입 검사(subtype check)는 컴퓨터 메모리 공간의 상당한 양(量)을 필요로 한다. 서브-타입 검사(subtype check)를 실행하는 것과 관련이 있는 명령을 위한, 그리고 컴퓨터 프로그램의 실행과 관련이 있는 모든 타입과 방법을 저장하는데 때때로 이용되는 미리 계산된 데이터 구조(pre-computed data structure)를 위한 공간을 필요로 한다. 되풀이되는 서브-타입 검사를 실행하기 위하여 필요로 하는 오버헤드(overhead)에 추가하여, 서브-타입 검사(subtype check)를 위하여 필요로 하는 공간은 때때로 프로그램을 실행하는 속도를 때때로 떨어뜨린다.
서브-타입 검사의 예상되는 결과를 저장하는 것에 의하여, 서브-타입 검사를 실행하는 것과 관련이 있는 오버헤드(overhead)의 양(量)은 효율적으로 감소된다. 특별하게, 당해 기술 종사 업자에 의하여 높이 평가되는 것처럼, 프로그램이 실행되는 시간에, 먼저 객체와 관련이 있는 서브-타입은 특별한 타입에 대하여 검사될 것인데, 실질적으로 어떤 방법을 이용하여 실제 검사(actual check)를 한다. 같은 클래스의 객체에서 결과적으로 일어나는 검사는 같은 서브-타입 결과를 가지는 것처럼 보이기 때문에, 실제 검사의 결과를 저장하는 것, 예를 들면, 제 1 검사의 컴퓨터 계산에 의한 결과를 저장하는 것에 의하여, 서브-타입 검사를 실행하는 것과 관련이 있는 오버헤드(overhead)는 눈에 뜨이게 줄어들 것이다. 달리 말하면, 같은 검사에 있어서, 캐쉬에 저장된 값이 올바른지, 예를 들면, 적합한지를 결정하는데 고속처리를 위하여 저장된 값을 이용하는 것에 의하여 결과적으로 실행될 때 ; 고속처리를 위한 저장(caching)을 이용하는, 동적(動的)으로 서브-타입을 검사하는 메커니즘(dynamic subtype checking mechanism)에 의하여, 이전(以前)에 있었던 서브-타입 검사의 결과는, 동일한 것에 대한 검사의 속도를 증가시키는데 고속처리를 위하여 저장(caching)된다. 하나의 실시예(實施例)에 있어서, 고속처리를 위하여 저장된 데이터(cached data)는 값에 대한 타입 설명자(type descriptor)에서, 예를 들면, 검사되는 객체(客體)에서 수용될 수 있다.
클래스와 관련이 있는, 객체"s"의 서브-타입의 결정하는 초기의 검사가 실행된 후(後)에, 초기 검사의 결과는 저장된다. 초기 서브-타입 검사의 결과를 저장하는 것에 의하여, 객체"s"의 서브-타입을 결정하는 검사를 필요로 하는 다음 번에, 저장되는 값에 의하여 같은 서브-타입 검사는 보다 더 빠르게 진행된다. 실례(實例)에 의하여, 객체"s"의 서브-타입이 타입"T"에 대하여 검사될 때, 예를 들면, 객체"s"가 특별한 서브-타입"T"를 가지는지에 관하여 결정을 할 때, 객체"s"와 관련이 있는 저장되어 있는 타입 설명자(stored type descriptor)와 서브-타입"T" 사이에서 상대적으로 빠른 비교를 한다. 객체"s"의 타입이 서브-타입"T"와 같을 때, 비교는 성공적으로 실행된 것이고, 종래의 서브-타입 검사는 필요하지 않다. 그러므로, 종래의 서브-타입 검사와 관련이 있는 오버헤드를 우회(迂廻)할 수 있다. 대신에, 객체"s"의 타입이 서브-타입"T"에 일치하지 않을 때, 종래의 서브-타입 검사는 객체"s"의 타입을 결정하는데 이용될 수 있다. 어떤 경우에 있어서, 이러한 검사는, 적합한 서브-타입을 위치시키는데 클래스 분류 체계를 자세히 고찰하는 것, 그리고 적합한 서브-타입을 찾을 수 없을 때 예외를 제기하는 것 등을 포함할 수 있다.
도 2a 에 있어서, 객체가 특별한 타입에서의 서브-타입이나 서브-클래스인지를 결정하는 것과 관련이 있는 단계는, 본 발명의 실시예(實施例)에 따라서 기술(記述)될 것이다. 특별하게, 객체가 타입"B"의 서브-타입인지를 결정하는 처리를 기술(記述)할 것이다. 객체가 타입"B"의 서브-타입(subtype)인지를 결정하는 방법(202)(process)은 단계(204)에서 시작하는데, 객체의 타입, 예를 들면, 객체의 클래스는 컴퓨터 시스템과 관련이 있는 레지스터로 적재된다. 당해 기술 종사 업자에 의하여 높이 평가되는 것처럼, 객체의 전체적인 클래스, 예를 들면, 객체의 추상 클래스(abstract class)는 공지되어 있다. 객체의 클래스가 일단 레지스터로 적재된다면, 단계(206)에서 적재된 클래스(loaded class)의 캐시 요소(cache element)를 적재하는데, 예를 들면, 컴퓨터의 메모리로 적재된다. 캐시 요소나 캐시 등은 도 2c 와 관하여 기술(記述)될 것이다.
캐시가 적재된 후(後)에, 타입 B 는 단계(208)에서 적재된 캐시에 대하여 비교된다. 적재된 캐시와 타입 B 를 비교하는 것과 관련이 있는 단계는 도 2b 에 관하여 아래에서 기술(記述)될 것이다. 적재된 캐시에 대하여 타입 B 의 비교에 대한 결과에 관하여, 단계(210)에서 결정을 한다. 기술(記述)된 실시예(實施例)에 있어서, 타입 B 와 적재된 캐시와의 비교의 결과가 참이라면, 예를 들면, 타입 B 와 적재된 캐시 등이 일치된다는 비교를 결정한다면, 단계(222)에서 객체가 타입 B 의 서브-타입인지에 대한 결정을 요구하는 함수로 참 값이 리턴(return)된다. 달리 말하면, 적재된 클래스와 타입 B 등이 동일한 클래스라면, 또는 적재된 클래스가 타입 B 의 서브-타입이라면, 참 값은 리턴(return)된다. 일단 참 값이 리턴(return)되면, 객체가 타입 B 인지에 대한 결정의 처리를 완성한다.
대신에, 단계(210)에서 적재된 캐시에 대하여 타입 B 의 비교가 참 결과를 공급하지 않는다고 결정한다면, 객체의 클래스와 타입 B 사이에서 서브-타입 관계(subtype relationship)는 단계(212)에서 완성된다. 즉, 객체의 클래스와 타입 B 등이 같지 않다고 결정할 때, 객체의 클래스와 타입 B 사이에서 어떤 관계가 있다면 그 관계를 결정하는 컴퓨터에 의한 계산을 실행한다. 서브-타입 관계가 완성된 후(後)에, 처리 흐름은 단계(214)로 진행되는데, 서브-타입에 대한 계산이 참 결과를 일으키는지에 관하여, 즉, 객체의 클래스와 타입 B 사이의 서브-타입 관계가 유효한지에 관하여, 단계(214)에서 결정을 내린다.
객체의 클래스와 타입 B 사이에서 서브-타입 관계가 존재하지 않는다고 단계(214)에서 결정한다면, 단계(220)에서 거짓 값을 서브-타입 검사를 요구하는 함수로 리턴(return)한다. 거짓 값을 일단 리턴(return)한다면, 객체가 타입 B 의 서브-타입인지를 결정하는 처리는 완성된다. 하지만, 객체의 클래스와 타입 B 사이에서 서브-타입이 존재한다고 단계(214)에서 결정한다면, 처리의 흐름은 단계(216)로 진행되는데, 단계(216)에서 객체에 있는 클래스의 캐시(cache)는 클래스 B 로 "채워진다". 달리 말하면, 클래스 B, 또는 타입 B 에 대한 참조(reference) 등은 객체에 있는 클래스의 캐시 요소에 저장된다. 마지막으로, 객체에 있는 클래스의 캐시는 타입 B 로 채워진 후(後)에, 객체의 클래스와 타입 B 사이에서 서브-타입 관계가 있다는 것을 가리키도록, 단계(218)에서 참 값을 시스템으로 리턴(return)한다. 그 다음에, 객체가 타입 B 의 서브-타입인지를 결정하는 처리는 완성된다.
이제, 도 2b 에 있어서, 적재된 캐시(loaded cache), 예를 들면, 특별한 객체의 클래스에 대하여 타입 B 를 비교하는 단계는, 본 발명의 실시예(實施例)에 따라서 기술(記述)될 것이다. 즉, 도 2a 에 있는 단계(208)의 하나의 실시예(實施例)는 논의될 것이다. 적재된 캐시에 대하여 타입 B 의 비교는 단계(232)에서 시작하는데, 캐시 요소(cache element)는 레지스터(register)로 적재된다. 특별하게, 도 2c 에서 아래에서 기술(記述)될 것이지만, 객체에 있는 클래스의 캐시 요소는 레지스터로 적재된다. 캐시 요소를 레지스터로 적재시킨 후(後)에, 레지스터에 있는 내용은 단계(234)에서 타입 B 에 비교된다. 위에서 논의된 것처럼, 고속처리를 위하여 저장된 값(cached value)을 이용하는 것에 의하여 결과적으로 동일한 것에 대한 검사가 실행될 때 ; 고속처리를 위한 저장(caching)을 이용하는 검사 메커니즘(checking mechanism)에 의하여, 이전(以前)에 있었던 서브-타입 검사의 결과는 동일 검사의 속도를 증가시키는데 고속처리를 위하여 저장(caching)된다. 검사에서 이용되도록 고속처리를 위하여 저장된 요소(cached element)를 가지는 것에 의하여, 요소에 쉽게 접근 가능하다. 캐시 요소와 레지스터에 있는 내용을 비교하도록 실질적인 어떤 적합한 방법은 이용된다. 일반적으로, 당해 기술 종사 업자에 의하여 이러한 방법은 공지되어 있다. 레지스터의 내용이 타입 B 에 일단 비교되면, 적재된 캐시에 대하여 타입 B 를 비교하는 처리는 완성된다.
앞에서 논의된 것처럼, 클래스, 예를 들면, 클래스 객체는 캐시 요소를 포함하는데, 이전(以前)에 있었던 서브-타입 검사의 결과는 저장된다. 도 2c 는, 본 발명의 실시예(實施例)에 따라서 캐시 요소(cache element)를 갖춘 클래스(class)의 대표 그림을 나타낸다. 객체"S"(252)는 헤더(256)(header)를 포함하고, 클래스(260)에 대한 클래스 포인터를 가진다. 클래스(260)는 헤더(264)(header)와 캐시 요소(268)(cache element) 등을 포함한다. 앞에서 기술(記述)된 것처럼, 캐시 요소(268)는 이전(以前)에 있었던, 예를 들면, 클래스(260)와 관련이 있는 제 1, 서브-타입 검사의 결과를 저장하도록 설치된다. 클래스(260)를 초기화할 때, 캐시 요소(268)는 일반적으로 어떤 값으로 초기화되는 것은, 높이 평가할 만하다. 실례(實例)에 의하여, 캐시 요소(268)는 클래스(260)를 확인하도록 초기화될 수 있다. 일반적으로, 프로그램을 실행할 때, 또는 보다 더 상세하게 서브-타입 검사를 실행할 때, 캐시 요소(268)에 저장된 결과는 변화될 수 있기 때문에, 캐시 요소(268)는 "동적(動的)" 저장 요소로써 고려될 수 있다. 즉, 캐시 요소(268)의 내용은 갱신될 수 있다.
객체"s"(252)는 클래스(260)의 멤버(member)로써 공지될 때, 객체"s"(252)를 포함하는 서브-타입 검사 중(中)에, 클래스(260)를 포함하는 가장 최근의 서브-타입 검사의 결과를 얻도록, 캐시 요소(268)에 접근할 수 있다. 일반적으로, 클래스(260)를 포함하는 가장 최근의 서브-타입 검사를 저장하도록, 캐시 요소(268)는 갱신될 수 있다. 이와 같이, 캐시 요소(268)에 저장된 결과는 객체"s"(252)와 관련이 있는 서브-타입이 아니라면, 일단 결정이 된 객체"s"(252)와 관련이 있는 실제 서브-타입은 캐시 요소(268)에 저장될 수 있다. 어떤 실시예(實施例)에 있어서, 캐시 요소(268)에서 정보를 저장하고, 또한 검색하는 것은, 일어날 수 있는 캐시 정합 명령(cache coherency issue)을 처리하는데 동기(同期)를 포함한다는 사실은, 높이 평가할 만하다.
도 3 은, 본 발명을 구현하는데 적합한 일반적이고 전형적인 목적을 갖춘 컴퓨터 시스템을 설명하고 있다. 컴퓨터 시스템(330)(computer system)은 어떤 숫자의 프로세서(332)(processor)를 포함하는데, 메모리 장치에 결합되어 있고, 중앙 처리 장치(central processing units, CPUs)라고 불린다. 일반적으로, 메모리 장치(memory device)는 RAM 과 같은 제 1 스토리지 장치(334)(primary storage device), 그리고 ROM 과 같은 제 1 스토리지 장치(336)(primary storage device) 등을 포함한다.
당해 기술 종사 업자에 의하여 높이 평가되는 것처럼, 컴퓨터 시스템(330), 또는 보다 더 상세하게 CPUs(332)는 가상 기계(virtual machine)를 보조하도록 설치될 수 있다. 컴퓨터 시스템에서 보조로써 작동하는 가상 기계의 하나의 실례(實例)는, 도 4 에 관하여 아래에서 기술(記述)될 것이다. 당해 기술에서 공지된 것처럼, ROM(336)은 CPUs(332)로 데이터와 명령을 한쪽 방향으로 전달하도록 작동하고, RAM(334)은 CPUs 에서 또는 CPUs 로 데이터와 명령을 양쪽 방향으로 전달하도록 작동한다. 제 1 스토리지 장치(334, 336) 등 양쪽에 있어서, 실질적으로 어떤 적합하게 이용되는 컴퓨터에 의하여 판독 가능한 매체(computer-readable media)가 포함된다. 일반적으로 매스 메모리 장치(mass memory device)가 되는 제 2 스토리지 매체(338)(secondary storage medium)는 양쪽 방향으로 CPUs 에 또한 결합될 수 있다. 일반적으로, 제 2 스토리지 매체(338)는 추가의 데이터 스토리지 용량을 공급하도록 설치되고, 컴퓨터 코드를 포함하는 프로그램, 컴퓨터 프로그램 코드 장치, 데이터, 및 유사 장치 등을 저장할 수 있도록 이용되는 컴퓨터에 의하여 판독 가능한 매체(computer-readable medium)로써 제 2 스토리지 매체(338)는 될 수 있다. 일반적으로, 제 2 스토리지 매체(338)는 제 1 스토리지 장치(334, 336)보다 더 늦을 수 있는 하드디스크나 테이프 등과 같은 스토리지 매체가 된다. 자기 테이프 판독기(magnetic tape reader)와 페이퍼 테이프 판독기(paper tape reader) 등을 포함하는, 이러한 것에 제한되지는 않지만, 공지된 장치의 형(型)을, 제 2 스토리지 매체(338)는 취할 수 있다. 당해 기술 종사 업자에 의하여 높이 평가되는 것처럼, 적합한 경우에 있어서, 제 2 스토리지 매체(338) 내(內)에서 존속되는 정보는 가상 메모리(virtual memory)와 같은 RAM(334)의 부분으로써 표준 형(型)으로 합체(合體)될 수 있다. CD-ROM 과 같은 특별한 제 1 스토리지 장치(334)는 CPUs(332)와 한쪽 방향으로 데이터를 교환할 수 있다.
비디오 모니터, 트랙 볼, 마우스, 키보드, 마이크로폰, 접촉에 의한 디스플레이, 트랜스듀서 카드 판독기, 자기나 페이퍼 테이프 판독기, 타블릿, 스타일러스, 음성이나 손에 의하여 기록되는 인식 장치, 그리고 다른 컴퓨터와 같은 공지된 입력 장치 등을 포함하는, 하지만 이러한 것에 제한되지는 않고, 하나 이상의 입력/출력 장치(340)(input/output device)에, CPUs(332)는 결합될 수 있다. 마지막으로, (312)에서 나타난 것과 같은 네트워크 연결을 이용하여, 인터넷 네트워크(internet network)나 인트라넷 네트워크(intranet network) 등과 같은 컴퓨터 네트워크(computer network)나 원격 통신 네트워크(telecommunication network) 등에, CPUs(332)는 선택적으로 결합될 수 있다. 상기 네트워크 연결(312)(network connection)에 있어서, CPUs(332)는 네트워크(network)에서 정보를 수신할 수 있다는 것을 고려할 수 있다. 또한, CPUs(332)는 위에서 기술(記述)된 방법 단계를 실행하는 과정에서 네트워크로 정보를 출력할 수 있다. CPUs(332)를 이용하여 실행되는 일련(一連)의 명령으로써 때때로 대표되는 상기 정보는, 예를 들면, 반송파(搬送波)에서 구현되는 컴퓨터 데이터 신호의 형(型)으로 네트워크에서 수신될 수 있고 네트워크로 출력될 수 있다. 위에서 기술(記述)된 장치와 물질 등은, 컴퓨터 하드웨어와 컴퓨터 소프트웨어 등에 종사하는 당해 기술자에 공지되어 있다.
앞에서 기술(記述)된 것처럼, 가상 기계(virtual machine)는 컴퓨터 시스템(330)에서 실행될 수 있다. 도 4 는, 도 3 에 있는 컴퓨터 시스템(330)에 의하여 보조되는, 그리고 본 발명을 구현하는데 적합한 가상 기계(virtual machine)의 대표 그림을 나타낸다. 컴퓨터 프로그램, 예를 들면, JavaTM프로그래밍 언어에서 기록되는 컴퓨터 프로그램이 실행될 때, 컴파일-시간 환경(405)(compile-time environment) 내(內)에서 컴파일러(420)(compiler)에 소스 코드(410)(source code)를 공급한다. 컴파일러(420)(compiler)는 소스 코드(410)(source code)를 바이트 코드(430)(byte code)로 변환한다. 일반적으로, 소스 코드(410)가 소프트웨어 개발자에 의하여 만들어지는 시간에, 소스 코드(410)는 바이트 코드(430)로 변환된다.
일반적으로 바이트 코드(430)는 다시 생성되거나, 다운-로드되거나, 그렇지 않으면 네트워크, 예를 들면, 도 3 의 네트워크(312)를 통하여 분포되거나, 도 3 의 제 1 스토리지(334)와 같은 스토리지 장치에 저장된다. 기술(記述)된 실시예(實施例)에 있어서, 바이트 코드(430)는 플랫폼(platform)에 독립적이다. 즉, 바이트 코드(430)는 적합한 가상 기계(440)(virtual machine)에서 실행되는 실질적인 어떤 컴퓨터 시스템에서 실행될 수 있다.
가상 기계(440)를 포함하는 실행-시간 환경(435)(runtime environment)에 바이트 코드(430)를 공급한다. 하나의 실시예(實施例)에 있어서, 가상 기계는 JavaTM가상 기계가 될 수 있다. 실행-시간 환경(435)은 일반적으로 도 3 의 CPUs(332)와 같은 프로세서나 몇몇의 프로세서를 이용하여 실행될 수 있다. 가상 기계(440)는 컴파일러(442)(compiler), 인터프리터(444)(interpreter), 및 실행-시간 시스템(446)( runtime system) 등을 포함한다. 컴파일러(442), 그렇지 않으면 인터프리터(444)에 바이트 코드(430)를 공급할 수 있다.
바이트 코드(430)를 컴파일러(442)에 공급할 때, 바이트 코드(430)에 포함된 방법(method)은 기계 명령어로 컴파일(compile)된다. 하나의 실시예(實施例)에 있어서, 컴파일러(442)는, 방법이 막 실행될 때까지 바이트 코드(430)에 있는 방법의 컴파일(compile)을 지연시키는 저스트-인-타임 컴파일러(just-in-time compiler)이다. 인터프리터(444)에 바이트 코드(430)를 공급할 때, 바이트 코드(430)는 인터프리터(444)에서 단번에 하나의 바이트 코드로 읽혀진다. 그 다음에, 각각의 바이트 코드가 인터프리터(444)에서 읽혀질 때, 인터프리터(444)는 각각의 바이트 코드에 의하여 정의되는 작동을 실행한다. 즉, 당해 기술 종사 업자에 의하여 높이 평가되는 것처럼, 인터프리터(444)는 바이트 코드(430)를 "인터프릿(interpret)"한다. 일반적으로, 인터프리터(444)는 바이트 코드(430)를 처리하고, 인터프리터(444)는 계속해서 실질적으로 바이트 코드(430)와 관련이 있는 작동을 실행한다.
방법이 또 하나의 방법에 의하여 발동(실현)될 때, 또는 실행-시간 환경(435)에서 발동(실현)될 때, 방법을 인터프릿(interpret)한다면, 실행-시간 시스템(446)은 일련의 바이트 코드(430)의 형(型)으로 실행-시간 환경에서 방법을 얻을 수 있는데, 이러한 것은 인터프리터(444)에 의하여 직접적으로 실행될 수 있다. 다른 각도에서 보면, 발동(실현)되는 방법이 컴파일(compile)이 일어나지 않았던 컴파일된 방법(compiled method)이라면, 실행-시간 시스템(446)은 또한 일련(一連)의 바이트 코드(430)의 형(型)으로 실행-시간 환경(435)에서 방법을 얻고, 그 다음에 컴파일(442)을 계속해서 작동시킬 수 있다. 그 다음에, 컴파일러(442)는 바이트 코드(430)에서 기계 명령어를 생성시키고, 결과로써 일어나는 기계 명령어는 도 3 의 CPUs(332)에 의하여 직접적으로 실행될 수 있다. 일반적으로, 기계-언어 명령어는 가상 기계(440)가 종료될 때 없어진다.
본 발명에 대하여 몇몇 실시예(實施例)만이 기술(記述)되었지만, 본 발명의 범위나 사상(思想)에서 벗어나지 않으면서 많은 다른 특별한 형(型)에서 본 발명은 실시(實施)될 수 있다는 사실을 이해해야만 한다. 실례(實例)에 의하여, 어떤 실시예(實施例)에 있어서, 클래스 객체(class object)는 하나 이상의 캐시 요소(cache element)를 포함할 수 있다. 클래스 객체가 하나 이상의 캐시 요소를 포함할 때, 서브-타입 검사(subtype check)의 하나 이상의 이전(以前)에 있었던 결과는 저장될 수 있다. 즉, 객체를 위한 하나 이상의 가능성이 있는 서브-타입을 저장함으로써, 하나의 캐시 요소에 저장된 서브-타입은 객체를 위한 서브-타입이 아니라고 결정된다면, 또 하나의 캐시 요소에 저장된 서브-타입을 검사할 수 있다. 클래스의 캐시 요소에 있는 서브-타입 검사의 이전(以前)에 있었던 결과를 저장하는 것에 관하여 본 발명을 기술(記述)하였지만, 이전(以前)에 있었던 결과는 캐시 요소에서 반드시 저장될 필요는 없다는 사실을 높이 평가해야만 한다. 대신에, 이전(以前)에 있었던 결과는 실질적으로 어떤 동적(動的) 스토리지 위치(dynamic storage location)에 저장될 수 있는데, 여기서 동적(動的) 스토리지 위치(dynamic storage location)는 서브-타입 검사 중(中)에 접근 가능하다. 실례(實例)에 의하여, 이전(以前)에 있었던 서브-타입 검사의 결과는, 클래스와 직접적으로 관련이 없는 컴퓨터 코드의 섹션에 저장될 수 있다. 대신(代身)에, 이전(以前)에 있었던 서브-타입 검사의 결과는 동적(動的)으로 전역으로 접근 가능한 테이블(dynamic, globally accessible table)에 저장될 수 있는데, 특별한 클래스를 포함하는 서브-타입 검사가 실행될 수 있을 때마다 이러한 테이블에 접근 가능하다. 이러한 테이블은 특별한 클래스와 직접적으로 관련이 있을 수 있다.
하나의 실시예(實施例)에 있어서, 특별한 객체가 어떤 서브-타입을 포함하는지를 결정하기 위하여 검사를 구현하는 대신(代身)에, 특별한 객체가 어떤 서브-타입을 포함하지 않는다고 결정하도록 검사는 구현될 수 있다는 사실은 높이 평가할 만한다. 일반적으로, 컴퓨터 코드의 세그먼트(segment)에서, 또는 전역 테이블(global table)의 부분으로써, 상기 검사의 결과는 클래스의 캐시 요소에 저장될 수 있다. 달리 말하면, 캐시 요소는 특별한 서브-타입 검사를 위하여 매칭(matching)되지 않는 서브-타입 표시(subtype designation)를 수용하도록 설치될 수 있다.
일반적으로, 서브-타입 검사를 이용하는 명령어(instruction), 또는 작동(operation) 등은, 특별한 시스템의 요구 사항에 의존하면서 넓은 범위에서 다양할 수 있다. JavaTM환경에서, 예를 들면, "aastore" 명령어, "checkcast" 명령어, 그리고 "instanceof" 명령어 등은 서브-타입 검사를 일반적으로 이용한다.
덧붙여서, 본 발명에 따라서 서브-타입 검사를 실행하는 것과 관련이 있는 단계는 다양할 수 있다. 본 발명의 범위나 사상(思想)에서 벗어나지 않으면서, 이러한 단계는 변경되고, 다시 순서를 정하고, 추가되고, 그리고 제거된다. 실례(實例)에 의하여, 비교에 의하여 "참(true)" 표시를 나타낸다고 결정하는 것은, 비교에 의하여 "거짓(false)" 표시를 나타낸다고 결정하는 것으로 대신(代身)할 수 있다. 대신에, 클래스 객체가 하나 이상의 캐시 요소를 포함할 때, 서브-타입 검사를 실행하는 것과 관련이 있는 단계는, 서브-타입 매치(subtype match)를 찾을 때까지, 그렇지 않으면 모든 캐시 요소를 검사할 때까지, 각각의 캐시 요소를 통하여 효율적으로 순환하는 단계를 포함할 수 있다. 그러므로, 본 실시예(實施例)는 실례(實例)로써 고려될 수 있고, 여기에 제한되지 않고, 그리고 본 발명은 여기에서 주어진 상세함에 제한되지 않지만, 부속된 특허청구범위와 그와 동일한 범위에 의하여 한계를 드러낸다.

Claims (23)

  1. 객체와 연관성이 있는 클래스와 관련이 있는 동적(動的) 스토리지 위치(dynamic storage location)에서 후보 타입(candidate type)을 얻는 단계 ;
    제 1 타입(first type)에 대하여 후보 타입(candidate type)을 비교하는 단계 ;
    후보 타입(candidate type)이 제 1 타입(first type)에 실질적으로 일치하는지를 결정하는 단계 ; 그리고
    후보 타입(candidate type)이 실질적으로 제 1 타입(first type)과 일치한다고 결정을 할 때, 후보 타입(candidate type)이 제 1 타입(first type)의 서브-타입(subtype)이라는 표시(indication)를 공급하는 단계 ; 등을 포함하는 것을 특징으로 하는, 객체를 바탕으로 하는 컴퓨팅 시스템(object-based computing system)의 일부분이 되는 객체와 관련이 있는 클래스(class)가 또 하나 타입(another type)의 서브-타입(subtype)인지를 결정하는, 컴퓨터에 의하여 구현된 방법(computer-implemented method).
  2. 제 1 항에 있어서, 객체와 연관성이 있는 클래스와 관련이 있는 동적(動的) 스토리지 위치에서 얻어진 후보 타입(candidate type)이, 객체와 연관성이 있는 클래스에 있는 캐시 요소(cache element)에서 얻어지는 것을 특징으로 하는, 객체와 관련이 있는 클래스(class)가 또 하나 타입(another type)의 서브-타입(subtype)인지를 결정하는, 컴퓨터에 의하여 구현된 방법(computer-implemented method).
  3. 제 2 항에 있어서, 제 1 타입에 대하여 후보 타입(candidate type)을 비교하는 단계는,
    후보 타입(candidate type)을 캐시 요소에서 레지스터로 적재하는 단계 ; 그리고
    캐시 요소의 내용을 제 1 타입에 비교하는 단계 ; 등을 포함하는 것을 특징으로 하는, 객체와 관련이 있는 클래스(class)가 또 하나 타입(another type)의 서브-타입(subtype)인지를 결정하는, 컴퓨터에 의하여 구현된 방법(computer- implemented method).
  4. 상기 항 중(中)에서 어느 하나의 항에 있어서, 후보 타입(candidate type)이 제 1 타입과 실질적으로 일치하지 않을 때,
    객체에 있는 클래스와 제 1 타입 사이에서 타입 관계(type relationship)를 계산하는 단계를 덧붙여서 포함하는 것을 특징으로 하는, 객체와 관련이 있는 클래스(class)가 또 하나 타입(another type)의 서브-타입(subtype)인지를 결정하는, 컴퓨터에 의하여 구현된 방법(computer-implemented method).
  5. 제 4 항에 있어서, 객체에 있는 클래스와 제 1 타입 사이에서 타입 관계(type relationship)가 존재하는지를 결정하는 단계를 덧붙여서 포함하는데, 객체에 있는 클래스와 제 1 타입 사이에서 타입 관계(type relationship)가 존재한다고 결정할 때, 제 1 타입의 표시(indication)는 객체에 있는 클래스의 캐시 요소에 저장되는 것을 특징으로 하는, 객체와 관련이 있는 클래스(class)가 또 하나 타입(another type)의 서브-타입(subtype)인지를 결정하는, 컴퓨터에 의하여 구현된 방법(computer-implemented method).
  6. 상기 항 중(中)에서 어느 하나의 항에 있어서, 객체에 있는 클래스를 레지스터로 적재하는 단계를 덧붙여서 포함하는 것을 특징으로 하는, 객체와 관련이 있는 클래스(class)가 또 하나 타입(another type)의 서브-타입(subtype)인지를 결정하는, 컴퓨터에 의하여 구현된 방법(computer-implemented method).
  7. 프로세서(processor) ;
    컴퓨터 시스템과 관련이 있는 메모리로 후보 타입(candidate type)을 적재하도록 설치되는 적재 메커니즘(loading mechanism) - 여기서, 후보 타입은 제 1 객체와 연관성이 있는 클래스 객체와 관련이 있는 스토리지 위치(storage location)에서 얻어지고 - ;
    제 1 타입에 대하여 후보 타입(candidate type)을 비교하도록 설치되는 비교 메커니즘(comparison mechanism) ;
    후보 타입이 제 1 타입과 실질적으로 일치하는지를 결정하도록 설치되는 결정 메커니즘(determination mechanism) ; 그리고
    후보 타입이 실질적으로 제 1 타입과 일치한다고 결정할 때, 후보 타입이 제 1 타입의 서브-타입이라는 표시(indication)를 공급하도록 설치되는 표시기(indicator) ; 등을 포함하는 것을 특징으로 하는, 컴퓨터 시스템에서 존재하는 제 1 객체와 관련이 있는 서브-타입을 결정하도록 설치되는 컴퓨터 시스템(computer system).
  8. 제 7 항에 있어서, 클래스 객체에서 얻어지는 후보 타입은 클래스 객체에 있는 캐시 요소에서 얻어지는 것을 특징으로 하는, 컴퓨터 시스템에서 존재하는 제 1 객체와 관련이 있는 서브-타입을 결정하도록 설치되는 컴퓨터 시스템(computer system).
  9. 제 8 항에 있어서, 제 1 타입에 대하여 후보 타입을 비교하도록 설치되는 비교 메커니즘(comparison mechanism)은
    후보 타입을 캐시 요소에서 레지스터로 적재하도록 설치되는 적재 메커니즘(loading mechanism) ; 그리고
    캐시 요소의 내용이 제 1 타입과 비교되도록 설치되는 비교 메커니즘(comparison mechanism) ; 등을 포함하는 것을 특징으로 하는, 컴퓨터 시스템에서 존재하는 제 1 객체와 관련이 있는 서브-타입을 결정하도록 설치되는 컴퓨터 시스템(computer system).
  10. 제 7 항 내지 제 9 항 등에서 어느 하나의 항에 있어서, 후보 타입이 제 1 타입과 실질적으로 일치하는지를 결정할 때, 클래스 객체와 제 1 타입 사이에서 타입 관계(type relationship)를 계산하도록 설치되는 컴퓨팅 메커니즘(computing mechanism)을 덧붙여서 포함하는 것을 특징으로 하는, 컴퓨터 시스템에서 존재하는 제 1 객체와 관련이 있는 서브-타입을 결정하도록 설치되는 컴퓨터 시스템(computer system).
  11. 제 10 항에 있어서, 클래스 객체와 제 1 타입 사이에서 타입 관계가 존재하는지를 결정하도록 설치되는 결정 메커니즘(determination mechanism) ; 그리고
    클래스 객체와 제 1 타입 사이에서 타입 관계가 존재한다고 결정할 때, 제 1 타입의 표시를 클래스 객체의 캐시 요소로 저장하도록 설치되는 스토리지 메커니즘(storage mechanism) ; 등을 덧붙여서 포함하는 것을 특징으로 하는, 컴퓨터 시스템에서 존재하는 제 1 객체와 관련이 있는 서브-타입을 결정하도록 설치되는 컴퓨터 시스템(computer system).
  12. 제 1 객체와 관련이 있는 클래스 객체에서 후보 타입을 얻는 컴퓨터 코드(computer code) ;
    제 1 타입에 대하여 후보 타입을 비교하는 컴퓨터 코드 ;
    후보 타입이 실질적으로 제 1 타입에 일치하는지를 결정하는 컴퓨터 코드 ;
    후보 타입이 실질적으로 제 1 타입과 일치한다고 결정할 때, 후보 타입이 제 1 타입의 서브-타입이라는 표시(indication)를 공급하는 컴퓨터 코드 ; 그리고
    컴퓨터 코드를 저장하는 컴퓨터에 의하여 판독 가능한 매체(computer readable medium) ; 등을 포함하는 것을 특징으로 하는, 컴퓨터(computer)에 의하여 객체를 바탕으로 하는 컴퓨팅 시스템(object-based computing system)의 일부분이 되는 제 1 객체와 관련이 있는 서브-타입(subtype)을 결정하도록 설치되는 컴퓨터 프로그램 프로덕트(computer program product).
  13. 제 12 항에 있어서, 컴퓨터에 의하여 판독 가능한 매체는 반송파(搬送波)에서 구현되는 데이터 신호인 것을 특징으로 하는, 컴퓨터(computer)에 의하여 객체를 바탕으로 하는 컴퓨팅 시스템(object-based computing system)의 일부분이 되는 제 1 객체와 관련이 있는 서브-타입(subtype)을 결정하도록 설치되는 컴퓨터 프로그램 프로덕트(computer program product).
  14. 특별한 클래스와 관련이 있는 위치에서 저장된 요소(stored element)를 얻는 단계 - 여기서, 저장된 요소(stored element)는 객체와 관련이 있을 가능성이 있는 제 1 서브-타입과 연관성이 있는 정보를 포함하고 - ;
    저장된 요소에서 포함되는 정보는, 객체와 연관성이 있는 실제 서브-타입(actual subtype)과 관련이 있다고 결정하는 단계 ; 그리고
    저장된 요소에서 포함되는 정보는, 실제 서브-타입(actual subtype)과 관련이 있다고 결정할 때, 저장된 요소에 포함되는 정보는 실제 서브-타입(actual subtype)과 관련이 있다는 표시(indication)를 공급하는 단계 ; 등을 포함하는 것을 특징으로 하는, 특별한 클래스의 멤버(member)가 되는 객체에서 서브-타입 검사(subtype check)를 실행하는, 컴퓨터에 의하여 구현된 방법(computer-implemented method).
  15. 제 14 항에 있어서,
    저장된 요소에서 포함되는 정보는, 실제 서브-타입(actual subtype)과 관련이 없다고 결정할 때, 객체와 관련이 있는 실제 서브-타입을 결정하는 단계 ; 그리고
    특별한 클래스와 관련이 있는 위치에서 실제 서브-타입과 연관성이 있는 정보를 저장하는 단계 ; 등을 덧붙여서 포함하는 것을 특징으로 하는, 특별한 클래스의 멤버(member)가 되는 객체에서 서브-타입 검사(subtype check)를 실행하는, 컴퓨터에 의하여 구현된 방법(computer-implemented method).
  16. 객체에 대하여 후보 타입이 되는 제 2 타입을 얻는 단계 ;
    제 2 타입에 대하여 제 1 타입을 비교하는 단계 ;
    제 2 타입이 실질적으로 제 1 타입에 일치하는지를 결정하는 단계 ; 그리고
    제 2 타입이 실질적으로 제 1 타입에 일치한다고 결정할 때, 객체와 연관성이 있는 클래스와 관련이 있는 동적(動的) 스토리지 위치에서 제 2 타입과 관련이 있는 정보를 저장하는 단계 - 여기서, 동적(動的) 스토리지 위치에서 정보를 저장하는 단계에 의하여, 결과적으로 일어나는 검사에 대하여 정보에 접근 가능하고 - ; 등을 포함하는 것을 특징으로 하는, 객체를 바탕으로 하는 컴퓨팅 시스템(object-based computing system)의 일부분이 되는 객체와 관련이 있는 클래스(class)는 - 여기서, 객체는 제 1 객체이고 - 또 하나 타입의 서브-타입(subtype)인지를 결정하는, 컴퓨터에 의하여 구현된 방법(computer-implemented method).
  17. 제 16 항에 있어서, 제 2 타입이 제 1 타입과 실질적으로 일치한다고 결정할 때, 제 2 타입은 제 1 타입의 서브-타입이라는 표시(indication)를 공급하는 단계를 덧붙여서 포함하는 것을 특징으로 하는, 객체를 바탕으로 하는 컴퓨팅 시스템(object-based computing system)의 일부분이 되는 객체와 관련이 있는 클래스(class)는 - 여기서, 객체는 제 1 객체이고 - 또 하나 타입의 서브-타입(subtype)인지를 결정하는, 컴퓨터에 의하여 구현된 방법(computer-implemented method).
  18. 제 16 항과 제 17 항 등에서 어느 하나의 항에 있어서, 제 2 타입을 얻는 단계는, 다수의 타입을 포함하는 데이터 구조(data structure)에서 제 2 타입을 얻는 단계를 포함하는 것을 특징으로 하는, 객체를 바탕으로 하는 컴퓨팅 시스템(object-based computing system)의 일부분이 되는 객체와 관련이 있는 클래스(class)는 - 여기서, 객체는 제 1 객체이고 - 또 하나 타입의 서브-타입(subtype)인지를 결정하는, 컴퓨터에 의하여 구현된 방법(computer-implemented method).
  19. 제 18 항에 있어서, 다수의 타입을 포함하는 데이터 구조를 생성시키는 단계를 덧붙여서 포함하는 것을 특징으로 하는, 객체를 바탕으로 하는 컴퓨팅 시스템(object-based computing system)의 일부분이 되는 객체와 관련이 있는 클래스(class)는 - 여기서, 객체는 제 1 객체이고 - 또 하나 타입의 서브-타입(subtype)인지를 결정하는, 컴퓨터에 의하여 구현된 방법(computer-implemented method).
  20. 제 16 항 내지 제 19 항 등에서 어느 하나의 항에 있어서,
    제 2 타입이 실질적으로 제 1 타입에 일치하지 않는다고 결정할 때, 제 3 타입을 얻는 단계 - 여기서, 제 3 타입은 객체에 대하여 후보 타입인데, 제 3 타입은 다수의 타입을 포함하는 데이터 구조에서 얻어지고 - ;
    제 3 타입에 대하여 제 1 타입을 비교하는 단계 ;
    제 3 타입이 제 1 타입에 실질적으로 일치하는지를 결정하는 단계 ; 그리고
    제 3 타입이 실질적으로 제 1 타입에 일치한다고 결정할 때, 동적(動的) 스토리지 위치에서 제 3 타입과 관련이 있는 정보를 저장하는 단계 ; 등을 포함하는 것을 특징으로 하는, 객체를 바탕으로 하는 컴퓨팅 시스템(object-based computing system)의 일부분이 되는 객체와 관련이 있는 클래스(class)는 - 여기서, 객체는 제 1 객체이고 - 또 하나 타입의 서브-타입(subtype)인지를 결정하는, 컴퓨터에 의하여 구현된 방법(computer-implemented method).
  21. 객체와 연관성이 있는 클래스와 관련이 있는 동적(動的) 스토리지 위치에서 제 1 후보 타입을 저장하는 단계 ;
    동적(動的) 스토리지 위치에서 제 1 후보 타입을 얻는 단계 ;
    객체 타입에 대하여 제 1 후보 타입을 비교하는 단계 - 여기서, 객체 타입은 객체와 관련이 있고 - ;
    제 1 후보 타입과 객체 타입 등이 실질적으로 같은지를 결정하는 단계 ; 그리고
    제 1 후보 타입과 객체 타입 등이 실질적으로 같다고 결정할 때, 제 1 후보 타입이 객체 타입의 서브-타입이라는 표시를 공급하는 단계 ; 등을 포함하는 것을 특징으로 하는, 객체를 바탕으로 하는 컴퓨팅 시스템(object-based computing system)의 일부분이 되는 객체와 관련이 있는 클래스(class)는 또 하나 타입의 서브-타입(subtype)인지를 결정하는, 컴퓨터에 의하여 구현된 방법(computer-implemented method).
  22. 제 21 항에 있어서, 제 1 후보 타입과 객체 타입 등이 실질적으로 같지 않다고 결정할 때,
    제 2 후보 타입을 얻는 단계 - 여기서 제 2 후보 타입은 동적(動的) 스토리지 위치에서 얻어지지 않고 - ;
    객체 타입에 대하여 제 2 후보 타입을 비교하는 단계 ;
    제 2 후보 타입과 객체 타입 등이 실질적으로 같은지를 결정하는 단계 ;
    제 2 후보 타입과 객체 타입 등이 실질적으로 같다고 결정할 때, 제 2 후보 타입이 객체 타입의 서브-타입이라는 표시를 공급하는 단계 ; 그리고
    동적 스토리지 위치에서 제 2 후보 타입을 저장하는 단계 ; 등을 덧붙여서 포함하는 것을 특징으로 하는, 객체를 바탕으로 하는 컴퓨팅 시스템(object-based computing system)의 일부분이 되는 객체와 관련이 있는 클래스(class)는 또 하나 타입의 서브-타입(subtype)인지를 결정하는, 컴퓨터에 의하여 구현된 방법(computer-implemented method).
  23. 프로세서(processor) ;
    객체에 대하여 후보 타입이 되는 제 2 타입을 얻도록 설치되는 제 1 메커니즘(first mechanism) ;
    제 2 타입에 대하여 제 1 타입을 비교하는 비교기(comparator) ;
    제 2 타입이 실질적으로 제 1 타입에 일치하는지를 결정하는 결정 메커니즘(determination mechanism) ; 그리고
    제 2 타입이 실질적으로 제 1 타입에 일치한다고 결정할 때, 객체와 연관성이 있는 클래스와 관련이 있는 동적(動的) 스토리지 위치에서 제 2 타입과 관련이 있는 정보를 저장하는, 동적(動的) 스토리지 메커니즘(dynamic storage mechanism) - 여기서, 결과적으로 일어나는 타입 검사에 대하여 동적(動的) 스토리지 위치에 있는 정보에 접근 가능하도록 설치되고 - ; 등을 포함하는 것을 특징으로 하는, 컴퓨터 시스템에서 존재하는 제 1 타입의 객체와 관련이 있는 서브-타입을 결정하도록 설치되는 컴퓨터 시스템(computer system).
KR1019990009588A 1998-03-23 1999-03-22 고속 서브-클레스 검사 및 서브-타입 검사를 컴퓨터에 의해 구현하는 방법 그 시스템 KR100649799B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US60/079,110 1998-03-23
US09/107,224 US6714991B1 (en) 1998-03-23 1998-06-30 Method and apparatus for implementing fast subclass and subtype checks
US09/107,224 1998-06-30
US9/107,224 1998-06-30

Publications (2)

Publication Number Publication Date
KR19990078103A true KR19990078103A (ko) 1999-10-25
KR100649799B1 KR100649799B1 (ko) 2006-11-24

Family

ID=39047487

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990009588A KR100649799B1 (ko) 1998-03-23 1999-03-22 고속 서브-클레스 검사 및 서브-타입 검사를 컴퓨터에 의해 구현하는 방법 그 시스템

Country Status (1)

Country Link
KR (1) KR100649799B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007136437A1 (en) * 2006-05-18 2007-11-29 Microsoft Corporation Deploying virtual machine to host based on workload characterizations

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007136437A1 (en) * 2006-05-18 2007-11-29 Microsoft Corporation Deploying virtual machine to host based on workload characterizations

Also Published As

Publication number Publication date
KR100649799B1 (ko) 2006-11-24

Similar Documents

Publication Publication Date Title
US6553565B2 (en) Method and apparatus for debugging optimized code
EP3314422B1 (en) Extending a virtual machine instruction set architecture
US8479050B2 (en) Identifying access states for variables
US6363522B1 (en) Method and apparatus for handling exceptions as normal control flow
US5848274A (en) Incremental byte code compilation system
US7269718B2 (en) Method and apparatus for verifying data types to be used for instructions and casting data types if needed
EP1114366B1 (en) Accurate method for inlining virtual calls
EP2348406B1 (en) Endian conversion tool
US7386690B2 (en) Method and apparatus for hardware awareness of data types
EP0945790B1 (en) Method and apparatus for implementing fast subclass and subtype checks
US20040003377A1 (en) Converting byte code instructions to a new instruction set
JP2000172512A (ja) バイトコ―ドを実行するための方法およびデ―タ処理システム
US6658657B1 (en) Method and apparatus for reducing the overhead of virtual method invocations
CN100378657C (zh) 用于改进java方法调用速度的方法和装置
US20150100951A1 (en) System and Method for Matching Synthetically Generated Inner Classes and Methods
US6604167B1 (en) Method and apparatus traversing stacks for just-in-time compilers for Java virtual machines
US7328374B2 (en) Method and apparatus for implementing assertions in hardware
US20050251706A1 (en) Method and apparatus for data-aware hardware operations
KR100649799B1 (ko) 고속 서브-클레스 검사 및 서브-타입 검사를 컴퓨터에 의해 구현하는 방법 그 시스템
Crary et al. Type structure for low-level programming languages
Nanjekye et al. Towards Reliable Memory Management for Python Native Extensions
Cutts et al. The PamCase Machine
Ferreira THE JEWEL VIRTUAL MACHINE
Kind An architecture for interpreted dynamic object-oriented languages
Owens Logical object tagging architecture

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee