KR100818919B1 - 메소드 호출 방법 및 이를 이용한 자바 가상 머신 - Google Patents

메소드 호출 방법 및 이를 이용한 자바 가상 머신 Download PDF

Info

Publication number
KR100818919B1
KR100818919B1 KR1020060018412A KR20060018412A KR100818919B1 KR 100818919 B1 KR100818919 B1 KR 100818919B1 KR 1020060018412 A KR1020060018412 A KR 1020060018412A KR 20060018412 A KR20060018412 A KR 20060018412A KR 100818919 B1 KR100818919 B1 KR 100818919B1
Authority
KR
South Korea
Prior art keywords
frame
executing
called
bytecode
virtual machine
Prior art date
Application number
KR1020060018412A
Other languages
English (en)
Other versions
KR20070088160A (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
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020060018412A priority Critical patent/KR100818919B1/ko
Priority to US11/652,597 priority patent/US8341606B2/en
Priority to JP2007026490A priority patent/JP2007226784A/ja
Priority to EP07102947A priority patent/EP1830255A3/en
Publication of KR20070088160A publication Critical patent/KR20070088160A/ko
Application granted granted Critical
Publication of KR100818919B1 publication Critical patent/KR100818919B1/ko

Links

Images

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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • 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/4482Procedural
    • G06F9/4484Executing subprograms

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)
  • Stored Programmes (AREA)

Abstract

본 발명은 메소드 호출 방법 및 이를 이용한 자바 가상 머신에 관한 것이다.
본 발명의 실시예에 따른 메소드 호출 방법은 제1 메소드가 호출되는 경우 상기 제1 메소드의 실행에 필요한 정보를 포함하는 프레임을 생성하는 단계, 및 소정의 조건을 만족하는 제2 메소드가 호출되는 경우, 상기 생성된 프레임을 사용하여 상기 제2 메소드를 실행하는 단계를 포함한다.
자바 가상 머신, 인터프리터, 프레임

Description

메소드 호출 방법 및 이를 이용한 자바 가상 머신{Method for invoking method and java virtual machine using the same}
도 1은 본 발명의 일 실시예에 따른 자바 가상 머신이 탑재된 디지털 연산 장치의 구성도이다.
도 2는 본 발명의 일 실시예에 따른 클래스 파일을 나타낸 도면이다.
도 3은 본 발명의 일 실시예에 따른 자바 가상 머신을 나타낸 블록도이다.
도 4는 본 발명의 일 실시예에 따른 메소드 블록을 나타낸 도면이다.
도 5는 본 발명의 일 실시예에 따른 프레임의 구조를 나타낸 도면이다.
도 6은 본 발명의 일 실시예에 따른 메소드 블록 제공 과정을 나타낸 나타낸 흐름도이다.
도 7a 및 도 7b는 본 발명의 일 실시예에 따른 메소드 호출 구조를 나타낸 도면이다.
도 8은 본 발명의 일 실시예에 따른 메소드 호출 과정을 나타낸 흐름도이다.
도 9는 본 발명의 일 실시예에 따른 메소드 호출 상태와 그에 따른 프레임 관리 상태를 나타낸 도면이다.
<도면의 주요 부분에 관한 부호의 설명>
310 : 클래스 로더 320 : 인터프리터
330 : 가비지 컬렉터
본 발명은 자바 가상 머신에 관한 것으로서, 더욱 상세하게는 메소드 호출 방법 및 이를 이용한 자바 가상 머신에 관한 것이다.
하드웨어 플랫폼에 의존적인 어플리케이션 프로그램을 개발하기 위해서는 동일한 작업을 수행하는 어플리케이션 프로그램이라고 하더라도 각각의 하드웨어 플랫폼에 적합하도록 별도로 설계하여야 하는 불편함이 있다. 따라서, 하드웨어 플랫폼에 의존하지 않는 어플리케이션 프로그램에 대한 요구가 있어왔으며, 이러한 요구를 충족시키기 위하여 하드웨어 플랫폼을 추상화시킨 가상 머신(virtual machine)이 개발되었다. 가상 머신 중 대표적인 것이 자바 가상 머신(Java virtual machine)이다.
자바(Java)는 플랫폼 독립적인 실행 파일을 생성하기 위하여 소스 코드(source code)를 자바만의 독특한 바이트코드(bytecode) 형식으로 컴파일하고, 자바 가상 머신을 이용하여 수행시킨다.
종래의 자바 가상 머신을 실행 엔진을 기준으로 분류하면 인터프리팅(interpreting) 방식의 자바 가상 머신, Just-In-Time(JIT) 컴파일 방식의 자바 가상 머신, 인터프리팅과 JIT 컴파일을 모두 사용하는 방식의 자바 가상 머신, 또는 Ahead-of-Time(AOT)컴파일 방식의 자바 가상 머신 등으로 분류 할 수 있다.
이 중 인터프리팅(interpreting) 방식의 자바 가상 머신에서는, 수행해야 할 메소드(method)의 바이트코드(bytecode)를 인터프리터가 하나씩 해석함으로써 어플리케이션 프로그램이 동작할 수 있도록 한다. 인터프리터는 수행 중인 메소드에 대한 정보를 프레임이라는 자료 구조로 관리한다.
호출될 메소드가 충분히 길고 복잡할 경우에는 새로운 프레임을 만듦으로써 각 메소드에 대하여 독립된 프레임을 보존하여야 할 필요가 충분하다고 할 수 있다. 그러나, 호출될 메소드가 매우 간단한 메소드인 경우(예를 들어 세터(setter) 함수나 게터(getter) 함수와 같이 단순히 클래스 내의 필드를 접근하여 필요한 값을 읽거나 쓰는 메소드), 이러한 메소드를 호출하기 위해서 매번 새로운 프레임을 만드는 작업이 수행되는 것은 비효율적이며, 전체 작업시간을 연장시키는 결과를 낳는다.
한국공개특허 10-2005-0074766(자바 프로그램의 처리 속도를 향상시키는 시스템 및 그 방법)은 자바 가상 머신에서 클래스 파일의 로딩 과정과 컴파일 과정을 동시에 수행하여, 어플리케이션 프로그램의 수행 성능을 향상키는 기술을 개시하고 있다. 그러나 한국공개특허 10-2005-0074766은 컴파일러를 이용하여 자바 프로그램의 처리 속도를 향상시키는 기술이므로, 인터프리터를 이용하는 자바 가상 머신에 대해서는 적용하기 어려운 점이 있다.
본 발명은 자바 가상 머신에서 인터프리터의 메소드 호출 성능을 향상시키는데 그 목적이 있다.
본 발명의 목적들은 이상에서 언급한 목적들로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 목적을 달성하기 위하여, 본 발명의 실시예에 따른 메소드 호출 방법은 제1 메소드가 호출되는 경우 상기 제1 메소드의 실행에 필요한 정보를 포함하는 프레임을 생성하는 단계, 및 소정의 조건을 만족하는 제2 메소드가 호출되는 경우, 상기 생성된 프레임을 사용하여 상기 제2 메소드를 실행하는 단계를 포함한다.
상기 목적을 달성하기 위하여, 본 발명의 실시예에 따른 자바 가상 머신은 소정의 클래스 파일을 로딩하는 클래스 로더, 및 상기 로딩된 클래스 파일에 포함된 메소드 중에서 제1 메소드가 호출되는 경우 상기 제1 메소드의 실행에 필요한 정보를 포함하는 프레임을 생성하고, 소정의 조건을 만족하는 제2 메소드가 호출되는 경우 상기 생성된 프레임을 사용하여 상기 제2 메소드를 실행하는 인터프리터를 포함한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형 태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명하기로 한다.
도 1은 본 발명의 일 실시예에 따른 자바 가상 머신이 탑재된 디지털 연산 장치의 구성도이다. 도시된 디지털 연산 장치(100)는 자바 가상 머신(110), 주 기억부(120), 입출력부(130), 및 제어부(140)를 포함한다.
자바 가상 머신(110)은 디지털 연산 장치(100)에서 필요로 하는 특정 기능을 수행한다. 예를 들어, 디지털 연산 장치(100)가 방송 수신 장치인 경우, 자바 가상 머신(110)은 수신된 방송 정보를 보여주는 기능을 수행할 수 있다. 다른 예로써, 디지털 연산 장치(100)가 인터넷 통신 장치인 경우, 자바 가상 머신(110)은 웹 브라우저를 구동시키거나, 애플릿(applet), 미들릿(middlet), 엑슬릿(xlet) 등을 실행하는 기능을 제공할 수 있다. 이밖에도 자바 가상 머신(110)은 다양한 형태의 자바 어플리케이션을 실행할 수 있다.
자바 가상 머신(110)은 그 동작을 위하여 클래스 파일(200)을 로딩하는데, 본 발명의 일 실시예에 따른 클래스 파일(200)을 도 2에 도시하였다.
클래스 파일(200)은 클래스 파일(200)의 기본 속성들을 표시하는 클래스 헤더(210), 메소드 실행을 위한 상수들을 포함하는 상수 풀(constant pool)(220), 클 래스 파일(200)의 인터페이스(interface)와 필드(field)에 대한 정보를 포함하는 인터페이스 부분(230)과 필드 부분(240), 및 하나 이상의 메소드(method)(250)를 포함한다. 각 메소드는 소정의 명령어(opcode)와 피연산자(operand)를 포함한다.
이밖에도 클래스 파일(200)은 공지된 다른 정보들을 더 포함할 수 있다.
다시 도 1을 참조하면, 주 기억부(120)는 자바 가상 머신(110)의 동작 시 필요한 스택과 버퍼 등이 구현될 수 있는 메모리를 제공한다. 본 발명의 일 실시예에 따르면, 주 기억부(120)는 램(Random Access Memory)으로 구현될 수 있으며, 램의 종류로는 DRAM, SRAM, SDRAM 등을 들 수 있다.
입출력부(130)는 자바 가상 머신(110)의 동작에 필요한 데이터를 제공하고, 자바 가상 머신(110)의 작업 결과를 출력 받는다. 예를 들어, 클래스 파일(200)은 네트워크, 외부 장치, 또는 디지털 연산 장치(100)의 보조 기억 장치(도시하지 않음) 등 다양한 장소에 존재할 수 있는데, 클래스 파일(200)을 얻기 위하여 입출력부(130)는 네트워크 인터페이스, 외부 장치 인터페이스, 보조 기억 장치 인터페이스 등을 포함할 수 있다. 또한, 입출력부(130)는 자바 가상 머신(110)의 작업 결과를 소정의 디스플레이나 스피커로 출력시킬 수도 있다.
제어부(140)는 전술한 구성 요소들(110 내지 130) 간의 동작을 제어한다.
도 1을 참조하여 설명한 디지털 연산 장치(100)는 휴대폰, PDA, 디지털 TV, 셋탑 박스, 노트북 컴퓨터, 데스크탑 컴퓨터 등 데이터 저장 능력과 프로세싱 능력을 갖는 다양한 전자 제품으로 구현될 수 있다. 이하, 본 발명의 일 실시예에 따른 자바 가상 머신(110)에 대하여 보다 구체적으로 설명하도록 한다.
도 3은 본 발명의 일 실시예에 따른 자바 가상 머신(110)을 나타낸 블록도이다. 도시된 자바 가상 머신(110)은 클래스 로더(class loader)(310), 인터프리터(interpreter)(320), 및 가비지 컬렉터(garbage collector)(330)를 포함한다.
클래스 로더(310)는 클래스 파일(200)을 로딩하고, 클래스 파일(200)에 포함된 각 메소드들(250)에 대응하는 메소드 블록을 생성한다. 메소드 블록은 메소드에 대한 정보를 포함하는데, 본 발명의 일 실시예에 따른 메소드 블록을 도 4에 도시하였다.
도 4에 도시된 메소드 블록(400)은 메소드를 구성하는 바이트코드들(410), 메소드가 속한 클래스의 정보(420), 메소드의 크기(430), 메소드의 시작 위치(440), 및 메소드 유형 정보(450)를 포함한다. 여기서 메소드 유형 정보(450)는 메소드 블록에 대응하는 메소드가 일반 메소드, 프레임 공여 메소드, 및 프레임 차용 메소드 중에서 어떠한 메소드인지를 나타내는 정보이다. 여기서, 일반 메소드는 자신만을 위한 프레임을 갖는다. 또한 프레임 공여 메소드는 프레임 차용 메소드와 공유할 프레임을 갖으며, 프레임 차용 메소드는 프레임 공여 메소드의 프레임을 공유하게 된다. 여기서 프레임 공여 메소드는 구성이나 동작 면에서 일반 메소드와 실질적으로 다르지는 않으나, 설명의 편의상 프레임 차용 메소드와 프레임을 공유할 메소드를 구분되도록 지칭하기 위하여 일반 메소드와 다른 명칭(프레임 공여 메소드)으로 사용하는 것이다. 다만 일반 메소드에게는 일반 메소드의 실행을 위해 필요한 크기의 피연산자 스택(operand stack)이 할당되나, 프레임 공여 메소드에게는 프레임 공여 메소드의 실행을 위하여 필요한 크기보다 소정의 크기만큼 더 큰 피연산자 스택이 할당된다는 차이점이 있다.
메소드 블록(400)을 생성하기 위하여, 클래스 로더(310)는 로딩된 클래스 파일에 대하여 검증(verification) 작업을 수행할 수 있다. 검증 작업 시 클래스 로더(310)는 클래스 파일(200)의 구조와 내용이 올바르게 작성되었는지를 판별할 수 있다. 특히, 클래스 로더(310)는 클래스 파일(200)에 포함된 메소드들(250)에 대한 검증을 통해서 각 메소드에 포함된 바이트코드들이 모두 유효한지의 여부를 검사하게 된다.
또한, 본 발명의 일 실시예에 따라서 클래스 로더(310)는 클랙스 파일(200) 검증 시 각 메소드가 프레임 공여 메소드와 프레임 차용 메소드로 동작할 수 있는지의 여부를 판단하고, 프레임 공여 메소드나 프레임 차용 메소드의 메소드 블록에는 각각 프레임 공여 메소드나 프레임 차용 메소드임을 나타내는 메소드 유형 정보를 설정하고, 이외의 메소드의 메소드 블록에는 일반 메소드임을 나타내는 메소드 유형 정보를 설정 한다. 어떠한 메소드가 프레임 공여 메소드와 프레임 차용 메소드로 설정될 수 있는가에 대한 내용은 도 6 내지 도 9의 설명을 통해서 이해될 수 있을 것이다.
다시 도 3을 참조하면, 인터프리터(320)는 클래스 로더(310)가 로딩한 클래스 파일(200)에 포함된 메소드들(250)을 실행시킨다. 보다 구체적으로 인터프리터(320)는 메소드를 구성하는 바이트코드들을 인식하고, 인식된 바이트코드에 대응하는 핸들러(handler)를 실행시키게 된다.
인터프리터(320)는 현재 실행중인 메소드에 대한 정보를 프레임이라는 자료 구조를 사용하여 관리한다. 따라서 메소드를 호출할 때 인터프리터(320)는 새로운 프레임을 생성하여 메소드의 실행에 필요한 정보들을 관리하게 된다. 그런데, 호출될 메소드가 프레임 차용 메소드라면, 인터프리터(320)는 새로운 프레임을 생성하지 않고, 프레임 공여 메소드의 프레임을 사용하여 프레임 차용 메소드를 실행하게 된다.
본 발명의 일 실시예에 따른 프레임의 구조를 도 5에 도시하였다. 도시된 프레임(500)은 메소드 블록 포인터(510), 프로그램 카운터(Program Counter; PC) 정보(520), 리턴 주소(return address)(530), 탑오브스택(TopOfStack) 정보(540), 및 피연산자 스택(operand stack)(550)을 포함한다.
메소드 블록 포인터(510)는 실행 중인 메소드에 대응하는 메소드 블록을 지시하고, 프로그램 카운터 정보(520)는 실행 중인 바이트코드의 위치 정보를 저장한다. 리턴 주소(530)는 현재 실행 중인 메소드의 종료시 리턴할 바이트코드의 위치를 지시하고, 탑오브스택 정보(540)는 인터프리터(320)가 사용하고 있는 피연산자 스택(550)의 최상위 위치 정보를 저장한다. 피연산자 스택(550)은 메소드의 실행을 위하여 필요한 피연산자들의 저장 공간이다.
프로그램 카운터 정보(520)와 탑오브스택 정보(540)는 메소드의 호출이나 가비지 컬렉터(330)의 호출, 또는 자바 예외처리와 같이 메소드의 실행을 잠시 중단하고 다른 작업을 처리해야 할 경우에 해당 메소드의 실행중인 상태를 보존하기 위하여 프레임(500)에 저장되는 것이므로, 프로그램 카운터 정보(520)와 탑오브스택 정보(540)는 바이트코드의 실행 시 마다 프레임(500)에 저장될 필요는 없다.
만약 호출되는 메소드가 프레임 공여 메소드라면, 인터프리터(320)는 프레임 생성시 프레임 공여 메소드의 실행을 위하여 필요한 크기보다 소정의 크기만큼 더 큰 메모리 공간으로 피연산자 스택을 할당한다. 이는, 프레임 공여 메소드의 프레임을 사용하여 프레임 차용 메소드를 실행할 경우, 프레임 차용 메소드의 실행에 필요한 크기의 피연산자 스택을 확보하기 위함이다. 프레임 공여 메소드의 프레임 생성시, 프레임 공여 메소드의 실행에 필요한 크기 보다 어느 정도나 더 큰 피연산자 스택을 할당할 것인가의 문제는 본 발명을 한정하지 않으며, 실시예에 따라서 다양한 구현이 가능하다.
한편, 호출되는 메소드가 프레임 차용 메소드인 경우, 인터프리터(320)는 프레임 차용 메소드의 실행을 위하여 프레임 공여 메소드의 프레임을 사용 한다. 즉, 프레임 차용 메소드는 프레임 공여 메소드의 프레임을 공유하게 되는 것이다. 이를 위하여, 인터프리터(320)는 프레임 차용 메소드의 호출시 실행 중이던 메소드의 바이트코드 중에서 프레임 차용 메소드를 호출한 바이트코드의 다음 바이트코드의 위치 정보를 프레임에서 리턴 주소로 저장하고, 프레임 차용 메소드의 첫번째 바이트코드의 위치로 프로그램 카운터를 이동시킨다. 그 후, 인터프리터(320)는 프레임 차용 메소드의 실행을 위하여 프레임 공여 메소드의 프레임에 포함된 피연산자 스택을 사용한다.
만약 호출되는 메소드가 일반 메소드라면, 인터프리터(320)는 종래의 기술에서와 같이 프레임을 생성하고 호출된 메소드를 실행하게 된다.
다시 도 3을 참조하면, 가비지 컬렉터(330)는 인터프리터(320)가 메소드의 실행 시 사용하는 메모리 중에서 필요없는 메모리를 재사용할 수 있도록 수집한다.
이밖에도 자바 가상 머신(110)은 소정 기능을 실행하는 공지의 구성 요소를 더 포함할 수 있다.
이상 도 3을 참조하여 설명한 자바 가상 머신(110)의 구성 요소들(310 내지 330)은 일종의 모듈로 구현될 수도 있다. 여기서, 모듈은 소프트웨어 또는 Field Programmable Gate Array(FPGA) 또는 주문형 반도체(Application Specific Integrated Circuit, ASIC)과 같은 하드웨어 구성요소를 의미하며, 모듈은 어떤 역할들을 수행한다. 그렇지만 모듈은 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. 모듈은 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 실행시키도록 구성될 수도 있다. 따라서, 일 예로서 모듈은 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다. 구성요소들과 모듈들에서 제공되는 기능은 더 작은 수의 구성요소들 및 모듈들로 결합되거나 추가적인 구성요소들과 모듈들로 더 분리될 수 있다.
도 6은 본 발명의 일 실시예에 따른 메소드 블록 제공 과정을 나타낸 나타낸 흐름도이다.
클래스 로더(310)는 네트워크, 외부 장치, 또는 보조 기억 장치 등으로부터 클래스 파일(200)을 로딩한다(S610).
그 후, 클래스 로더(310)는 로딩된 클래스 파일(200)에 포함된 메소드들(250)의 메소드 유형을 판별한다(S620). 이를 통해서 메소드들(250)은 일반 메소드, 프레임 공여 메소드, 및 프레임 차용 메소드 중에서 어느 하나로 설정될 수 있다.
여기서 메소드의 유형을 판별하는 기준은 실시예에 따라서 다양하게 설정될 수 있다. 본 발명의 일 실시예로써, 프레임 공여 메소드는 자신으로부터 파생되며 임계 레벨 이하의 메소드 호출 레벨로 이루어진 메소드 호출 경로가 존재하는 메소드일 수 있다. 여기서, 임계 레벨은 실시예에 따라서 다양한 값으로 설정될 수 있다. 또한, 프레임 차용 메소드는 프레임 공여 메소드로부터 파생되며 임계 레벨 이하의 메소드 호출 레벨로 이루어진 메소드 호출 경로 상에 존재하는 메소드일 수 있다.
예를 들어 도 7a에 도시된 메소드 호출 구조를 살펴보면 메소드A는 메소드B를 호출한다. 따라서 메소드B는 메소드A로부터 파생된 메소드 호출 경로 상에 존재하며, 메소드A에서 메소드B로 이어지는 메소드 호출 경로의 메소드 호출 레벨은 1이다.
다른 예로써, 도 7b에 도시된 메소드 호출 구조를 살펴보면 메소드C는 메소드D를 호출하고, 메소드D는 메소드E를 호출한다. 따라서 메소드D와 메소드E는 메소드C로부터 파생된 제1 메소드 호출 경로 상에 존재한다. 여기서 제1 메소드 호출 경로는 메도스C에서 메소드D를 거쳐서 메소드E까지 이어지므로 제1 메소드 호출 경로의 메소드 호출 레벨은 2가 된다. 도 7b에 도시된 메소드 호출 구조에서 메소드D와 메소드C 만의 관계를 고려한다면, 메소드E는 메소드D로부터 파생된 제2 메소드 호출 경로 상에 존재하기도 한다. 여기서 제2 메소드 호출 경로의 메소드 호출 레벨은 1이 된다.
만약, 임계 레벨이 1로 설정되어 있다면, 도 7b에 도시된 실시예에서 임계 레벨 이하의 메소드 호출 레벨로 이루어진 메소드 호출 경로는 제2 메소드 호출 경로이다. 이 경우, 메소드D는 프레임 공여 메소드가 되고 메소드E는 제2 메소드 호출 경로로 인하여 메소드D에 대한 프레임 차용 메소드가 될 수 있다.
그러나 임계 레벨이 2로 설정되어 있다면, 도 7b에 도시된 실시예에서 제1 메소드 호출 경로와 제2 메소드 호출 경로가 모두 임계 레벨 이하의 메소드 호출 레벨로 이루지게 된다. 이 경우, 제2 메소드 호출 경로를 파생시킨 메소드D는 제1 메소드 호출 경로를 파생시킨 메소드C로부터 호출되므로, 클래스 로더(310)는 제1 메소드 호출 경로에 기반하여 프레임 공여 메소드와 프레임 차용 메소드를 결정한다. 즉, 임계 레벨 이하의 메소드 호출 레벨로 이루어지는 복수의 메소드 호출 경로가 중첩되는 경우, 클래스 로더(310)는 가장 메소드 호출 레벨이 가장 높은 메소드 호출 경로를 기준으로 하여 프레임 공여 메소드와 프레임 차용 메소드를 결정하게 된다. 이에 따라서 임계 레벨이 2로 설정되어 있다면, 도 7b에 도시된 실시예에서 메소드C가 프레임 공여 메소드로 설정되고, 메소드D와 메소드E는 메소드A에 대하여 프레임 차용 메소드로 설정된다. 여기서, 제2 메소드 호출 경로를 독립적으로 본다면, 메소드D가 메소드E에 대하여 프레임 공여 메소드가 될 수 있을 것으로 보이나, 앞서 설명한 바와 같이 메소드D는 이미 메소드C에 프레임 차용 메소드이므로 프레임 공여 메소드로 설정될 수 없게 된다.
본 발명의 다른 실시예로써, 메소드의 유형을 판별하는 기준으로서 메소드의 실행에 필요한 피연산자 스택의 크기가 고려될 수도 있다. 즉, 클래스 로더(310)는 실행에 필요한 피연산자 스택이 임계 크기 이하이고 다른 메소드로부터 호출되는 메소드를 프레임 차용 메소드로 설정할 수 있으며, 프레임 차용 메소드를 호출하는 메소드를 프레임 공여 메소드로 설정할 수도 있다. 이러한 경우, 특정 값을 읽어오도록 하는 게터(getter) 함수나 특정 값을 변경시키는 셋터(setter) 함수와 같은 간단한 메소드를 호출할 경우 프레임을 생성하는데 소요되는 시간과 자원을 절약할 수 있게 된다.
바람직하게는, 클래스 로더(310)는 더 이상 다른 메소드를 호출하지 않는 메소드인 리프 메소드(leaf method)를 프레임 차용 메소드로 설정하고, 리프 메소드를 직접 호출하는 메소드를 프레임 공여 메소드로 설정할 수 있다.
다시 도 6을 참조하면 클래스 로더(310)는 메소드 유형 판별 결과에 따라서, 메소드 유형 정보를 포함하고 각 메소드에 대응하는 메소드 블록을 생성한다(S630). 생성된 메소드 블록은 주 기억부(120)가 제공하는 소정의 메모리 영역에 저장될 수 있으며, 메소드 블록의 실시예는 도 4를 참조하여 설명한 바와 같다.
도 6의 과정에서 도시하지는 않았으나, 클래스 로더(310)는 검증(verification) 작업, 준비(preparation) 작업, 및 분해(resolution) 작업을 수행할 수 있다.
검증 작업은 클래스 파일(200)의 구조와 내용이 올바르게 작성되었는지를 판별하는 과정으로서, 검증 작업을 통해서 클래스 파일(200) 내의 메소드들(250)의 메소드 호출 관계 및 필요한 피연산자 스택의 크기 등을 알 수 있다.
준비 작업은 클래스 파일(200)에 정의된 상수나 변수의 디폴트 값을 지정하는 과정이며, 분해 과정은 상수 풀(220)에 명시된 심볼(symbol)들을 클래스 실행 중에 필요한 리소스의 물리적인 위치 정보로 치환하는 단계이다.
전술한 과정들이 마쳐지면, 소정 메모리 영역에 로드된 클래스 파일을 초기화한 후에 메소드들(250)을 실행하는 작업이 수행되는데, 이에 대하여 도 8을 참조하여 설명하도록 한다.
도 8은 본 발명의 일 실시예에 따른 메소드 호출 과정을 나타낸 흐름도이다. 도 8의 과정은 이미 특정 메소드를 위하여 생성된 프레임이 존재하는 경우를 가정한다.
소정의 메소드가 호출되면(S810), 인터프리터(320)는 호출된 메소드가 프레임 차용 메소드인지 판단한다(S815). 프레임 차용 메소드인지의 여부는 호출된 메소드에 대응하는 메소드 블록의 메소드 유형 정보를 통해서 확인할 수 있다.
만약 호출된 메소드가 프레임 차용 메소드가 아니라면, 인터프리터(320)는 호출된 메소드에게 피연산자 스택을 할당한다(S820). 여기서 호출된 메소드가 일반 메소드라면, 인터프리터(320)는 호출된 메소드의 실행에 필요한 크기의 피연산자 스택을 할당할 수 있다. 그러나 호출된 메소드가 프레임 공여 메소드라면, 인터프리터(320)는 호출된 메소드의 실행에 필요한 크기보다 소정 크기만큼 더 큰 피연산자 스택을 할당할 수 있다.
그 후, 인터프리터(320)는 호출된 메소드를 위한 프레임을 생성하고(S825), 생성된 프레임의 프로그램 카운터 정보(520)와 탑오브스택 정보(540)로서 메소드 호출을 지시한 바이트코드의 다음 바이트코드의 위치 정보와 수행 중이던 메소드에 할당된 피연산자 스택의 최상위 위치 정보를 각각 저장한다(S830). 저장된 정보들은 호출된 메소드의 종료후 리턴 과정에서 사용될 수 있다.
그 후, 인터프리터(320)는 프로그램 카운터와 탑오브스택을 호출된 메소드의 첫번째 바이트코드와 호출된 메소드에 할당된 피연산자 스택의 최상위 위치로 이동시키고(S835), 호출된 메소드를 실행한다(S840).
한편, 과정 S815의 판단 결과 호출된 메소드가 프레임 차용 메소드라면, 인터프리터(320)는 새로운 메소드의 호출을 지시한 바이트 코드의 다음 바이트코드의 위치 정보를 기존 프레임의 리턴 주소(530)로 저장하고(S845), 호출된 메소드의 첫번째 바이트코드의 위치로 프로그램 카운터를 이동시킨다(S850). 여기서, 탑오브스텍은 이동시키지 않게되는데, 이는 프레임 차용 메소드가 프레임 공여 메소드의 피연산자 스텍을 공유하기 때문이다. 만약 프레임 차용 메소드를 호출한 메소드 또한 프레임 차용 메소드였다면 기존 프레임 상에 이미 리턴 주소(530)가 저장되어 있을 것이며, 인터프리터(320)는 이미 설정된 리턴 주소와 구별되는 또 하나의 리턴 주소를 기존 프레임 상에 저장한다. 즉, 하나의 프레임 공여 메소드에 대하여 복수의 프레임 차용 메소드가 존재한다면, 인터프리터(320)는 프레임 공여 메소드의 프레임에 복귀 주소(530)를 복수로 저장할 수도 있다.
그 후, 인터프리터(320)는 기존 프레임의 피연산자 스택을 사용하여 호출된 메소드를 실행한다(S855).
도 8은 앞서 말한 바와 같이, 이미 특정 메소드를 위하여 생성된 프레임이 존재하는 경우를 가정한 것이다. 만약 최초의 메소드가 실행되는 경우라면, 최초의 메소드는 프레임 공여 메소드와 일반 메소드 중 어느 하나일 것이므로, 도 8의 과정 S810 내지 S840를 참조하여 최초 메소드의 실행 과정을 이해할 수 있을 것이다.
한편, 호출된 메시지의 실행이 종료되어 기존의 메시지로 리턴하는 과정은, 일반 메소드와 프레임 공여 메소드에 대해서는 종래와 같이 수행될 수 있다. 반면, 프레임 차용 메소드의 경우에는 리턴 과정에서 프레임의 리턴 주소(530)를 참조하게 된다.
도 9는 본 발명의 일 실시예에 따른 메소드 호출 상태와 그에 따른 프레임 관리 상태를 나타낸 도면이다. 도시된 실시예에서 메소드a는 일반 메소드이고, 메소드b는 프레임 공여 메소드이고, 메소드c는 프레임 차용 메소드이며, 각 메소드 내의 블록들은 바이트코드를 나타낸다.
메소드a가 호출된 경우 인터프리터(320)는 메소드a를 위하여 프레임a를 생성하고, 프레임a를 사용하여 메소드a를 실행한다. 메소드a 호출 시 인터프리터(320)는 메소드a의 실행을 위하여 필요한 크기의 피연산자 스택을 할당하게 된다.
메소드a의 실행 중에 메소드b를 호출하는 바이트코드(910)에 의하여 메소드b가 호출되면, 인터프리터(320)는 메소드b를 위하여 프레임b를 생성하고, 프레임b를 사용하여 메소드b를 실행한다. 메소드b는 프레임 공여 메소드이므로, 메소드b의 호출시 인터프리터(320)는 메소드b의 실행을 위하여 필요한 크기보다 소정의 크기만큼 더 큰 피연산자 스택을 할당하게 된다.
한편, 인터프리터(320)는 메소드a에서 메소드b를 호출하는 바이트코드(910)의 다음 바이트코드(920)의 위치 정보를 프레임b의 프로그램 카운터 정보(930)로 저장한다. 또한, 인터프리터(320)는 프로그램 카운터를 메소드b의 첫번째 바이트코드(940)로 이동시키고, 메소드b에게 할당된 피연산자 스택의 최상위 위치로 탑오브스택을 이동시킨다.
메소드b의 실행 중에 메소드c를 호출하는 바이트코드(950)에 의하여 메소드c가 호출되면, 인터프리터(320)는 프레임b를 그대로 사용하여 메소드c를 실행한다. 메소드c는 프레임 차용 메소드이므로 메소드c를 위한 프레임은 별도로 생성하지 않는 것이다.
메소드c의 호출시 인터프리터(320)는 프레임b에서 메소드c를 호출하는 바이트코드(950)의 다음 바이트코드(960)의 위치 정보를 리턴 주소(970)로 저장한다. 또한, 인터프리터는 메소드c의 첫번째 바이트코드(980)로 프로그램 카운터를 이동시킨다. 메소드c의 실행시에는 프레임b의 피연산자 스택(990)이 사용된다.
메소드c의 실행이 마쳐지면, 인터프리터(320)는 프로그램 카운터를 프레임b의 리턴 주소(970)로 저장된 바이트코드의 위치 정보를 사용하여 이동시키고, 해당 바이트코드(960)에서부터 메소드b를 실행하게 된다.
메소드b의 실행이 마쳐지면, 인터프리터(320)는 프레임b의 프로그램 카운터 정보(930)에 저장된 바이트코드의 위치 정보를 이용하여 프로그램 카운터를 이동시키고, 해당 바이트코드(920)에서부터 메소드a를 실행하게 된다. 이 때, 프레임b는 삭제될 수 있다.
본 발명의 일 실시예에 따르면, 도 6내지 도 9를 참조하여 설명한 자바 가상 머신(110)의 동작 과정을 실행하기 위한 컴퓨터로 읽을 수 있는 프로그램을 플래쉬 메모리, CD, 하드디스크 등 소정의 기록매체에 기록하여 두고, 기록매체에 기록된 프로그램을 컴퓨터가 수행함으로써 본 발명을 구현하는 것도 가능하다.
이상과 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적 인 것이며 한정적이 아닌 것으로 이해해야만 한다.
상기한 바와 같은 본 발명의 메소드 호출 방법 및 이를 이용한 자바 가상 머신에 따르면 자바 가상 머신에서 인터프리터의 메소드 호출 성능을 향상시키는 효과가 있다.

Claims (20)

  1. 제1 메소드가 호출되는 경우 상기 제1 메소드의 실행에 필요한 정보를 포함하는 프레임을 생성하는 단계; 및
    소정의 조건을 만족하는 제2 메소드가 호출되는 경우, 상기 생성된 프레임을 사용하여 상기 제2 메소드를 실행하는 단계를 포함하는, 메소드 호출 방법.
  2. 제 1항에 있어서,
    상기 프레임은 실행중인 바이트코드의 위치를 지시하는 프로그램 카운터, 실행 중인 메소드의 종료시 리턴할 바이트코드의 위치를 지시하는 리턴 주소, 및 상기 실행중인 메소드가 사용할 피연산자 스택을 포함하는, 메소드 호출 방법.
  3. 제 2항에 있어서,
    상기 제2 메소드를 실행하는 단계는,
    상기 제2 메소드를 호출하는 바이트코드의 다음 바이트코드의 위치 정보를 상기 리턴 주소로 저장하는 단계;
    상기 제2 메소드의 첫번째 바이트코드의 위치로 상기 프로그램 카운터를 설정하는 단계; 및
    상기 피연산자 스택을 사용하여 상기 제2 메소드를 실행하는 단계를 포함하는, 메소드 호출 방법.
  4. 제 1항에 있어서,
    상기 제1 메소드를 호출하는 단계; 및
    상기 제1 메소드가 사용할 피연산자 스택을 할당하는 단계를 더 포함하는, 메소드 호출 방법.
  5. 제 4항에 있어서,
    상기 피연산자 스택은 상기 제1 메소드의 실행에 필요한 것보다 소정의 양만큼 더 큰, 메소드 호출 방법.
  6. 제 1항에 있어서,
    상기 제2 메소드는 상기 제1 메소드로부터 호출되고, 다른 메소드를 호출하지 않는 메소드인, 메소드 호출 방법.
  7. 제 1항에 있어서,
    상기 제2 메소드는 상기 제1 메소드로부터 파생된 메소드 호출 경로 상에 존재하는 메소드이고, 상기 메소드 호출 경로는 임계 레벨 이하의 메소드 호출 레벨로 구성되는, 메소드 호출 방법.
  8. 제 7항에 있어서,
    상기 제2 메소드는 상기 제2 메소드의 실행을 위하여 필요한 피연산자 스택의 크기가 임계크기 미만인 메소드인, 메소드 호출 방법.
  9. 제 1항에 있어서,
    소정의 클래스 파일을 로딩하는 단계; 및
    상기 클래스 파일에 포함된 메소드들 중에서 상기 제1 메소드로서 동작할 수 있는 메소드와 상기 제2 메소드로서 동작할 수 있는 메소드에 대한 정보를 제공하는 단계를 더 포함하는, 메소드 호출 방법.
  10. 소정의 클래스 파일을 로딩하는 클래스 로더; 및
    상기 로딩된 클래스 파일에 포함된 메소드 중에서 제1 메소드가 호출되는 경우 상기 제1 메소드의 실행에 필요한 정보를 포함하는 프레임을 생성하고, 소정의 조건을 만족하는 제2 메소드가 호출되는 경우 상기 생성된 프레임을 사용하여 상기 제2 메소드를 실행하는 인터프리터를 포함하는, 디지털 연산 장치.
  11. 제 10항에 있어서,
    상기 프레임은 실행중인 바이트코드의 위치를 지시하는 프로그램 카운터, 실행 중인 메소드의 종료시 리턴할 바이트코드의 위치를 지시하는 리턴 주소, 및 상기 실행중인 메소드가 사용할 피연산자 스택을 포함하는, 디지털 연산 장치.
  12. 제 11항에 있어서,
    상기 인터프리터는 상기 제2 메소드를 호출하는 바이트코드의 다음 바이트코드의 위치 정보를 상기 리턴 주소로 저장하고, 상기 제2 메소드의 첫번째 바이트코드의 위치로 상기 프로그램 카운터를 설정하고, 상기 피연산자 스택을 사용하여 상기 제2 메소드를 실행하는, 디지털 연산 장치.
  13. 제 10항에 있어서,
    상기 인터프리터는 상기 제1 메소드를 호출하고, 상기 제1 메소드가 사용할 피연산자 스택을 할당하는, 디지털 연산 장치.
  14. 제 13항에 있어서,
    상기 피연산자 스택은 상기 제1 메소드의 실행에 필요한 것보다 소정의 양만큼 더 큰, 디지털 연산 장치.
  15. 제 10항에 있어서,
    상기 제2 메소드는 상기 제1 메소드로부터 호출되고, 다른 메소드를 호출하지 않는 메소드인, 디지털 연산 장치.
  16. 제 10항에 있어서,
    상기 제2 메소드는 상기 제1 메소드로부터 파생된 메소드 호출 경로 상에 존재하는 메소드이고, 상기 메소드 호출 경로는 임계 레벨 이하의 메소드 호출 레벨로 구성되는, 디지털 연산 장치.
  17. 제 16항에 있어서,
    상기 제2 메소드는 상기 제2 메소드의 실행을 위하여 필요한 피연산자 스택의 크기가 임계크기 미만인 메소드인, 디지털 연산 장치.
  18. 제 10항에 있어서,
    상기 클래스 로더는 상기 클래스 파일에 포함된 메소드들 중에서 상기 제1 메소드로서 동작할 수 있는 메소드와 상기 제2 메소드로서 동작할 수 있는 메소드에 대한 정보를 제공하는, 디지털 연산 장치.
  19. 자바 가상 머신;
    상기 자바 가상 머신이 사용할 메모리를 제공하는 주 기억부; 및
    상기 자바 가상 머신에게 소정의 데이터를 입력하고, 상기 자바 가상 머신으로부터 소정의 작업 결과를 출력 받는 입출력부를 포함하고,
    상기 자바 가상 머신은,
    소정의 클래스 파일을 로딩하는 클래스 로더; 및
    상기 로딩된 클래스 파일에 포함된 메소드 중에서 제1 메소드가 호출되는 경우 상기 제1 메소드의 실행에 필요한 정보를 포함하는 프레임을 생성하고, 소정의 조건을 만족하는 제2 메소드가 호출되는 경우 상기 생성된 프레임을 사용하여 상기 제2 메소드를 실행하는 인터프리터를 포함하는, 디지털 연산 장치.
  20. 제 1항 내지 제 9항 중 어느 한 항에 의한 방법을 실행하기 위한 컴퓨터로 읽을 수 있는 프로그램을 기록한 기록매체.
KR1020060018412A 2006-02-24 2006-02-24 메소드 호출 방법 및 이를 이용한 자바 가상 머신 KR100818919B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020060018412A KR100818919B1 (ko) 2006-02-24 2006-02-24 메소드 호출 방법 및 이를 이용한 자바 가상 머신
US11/652,597 US8341606B2 (en) 2006-02-24 2007-01-12 Method of invoking inlined method and java virtual machine using the method
JP2007026490A JP2007226784A (ja) 2006-02-24 2007-02-06 インラインされたメソッドの呼出方法およびそれを用いたジャバ仮想マシン
EP07102947A EP1830255A3 (en) 2006-02-24 2007-02-23 Method execution in a computing environment

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060018412A KR100818919B1 (ko) 2006-02-24 2006-02-24 메소드 호출 방법 및 이를 이용한 자바 가상 머신

Publications (2)

Publication Number Publication Date
KR20070088160A KR20070088160A (ko) 2007-08-29
KR100818919B1 true KR100818919B1 (ko) 2008-04-03

Family

ID=37914003

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060018412A KR100818919B1 (ko) 2006-02-24 2006-02-24 메소드 호출 방법 및 이를 이용한 자바 가상 머신

Country Status (4)

Country Link
US (1) US8341606B2 (ko)
EP (1) EP1830255A3 (ko)
JP (1) JP2007226784A (ko)
KR (1) KR100818919B1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007328692A (ja) * 2006-06-09 2007-12-20 Canon Inc 代数演算方法及びその装置、プログラム
US8413125B2 (en) * 2007-01-26 2013-04-02 Oracle International Corporation Asynchronous dynamic compilation based on multi-session profiling to produce shared native code
US8813051B2 (en) * 2011-04-14 2014-08-19 International Business Machines Corporation Running multiple copies of native code in a Java Virtual Machine
US9753846B2 (en) * 2012-09-06 2017-09-05 Red Hat, Inc. Adjusting the operating memory used by a virtual machine during runtime
CN114003317B (zh) * 2021-10-29 2024-09-20 北京达佳互联信息技术有限公司 内联实现方法及装置、电子设备、存储介质及程序产品

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001084146A (ja) * 1999-08-30 2001-03-30 Internatl Business Mach Corp <Ibm> バイトコード実行装置およびその方法
US20030018679A1 (en) * 2001-03-27 2003-01-23 Sun Microsystems, Inc. Enhanced virtual machine instructions
US20050050528A1 (en) * 2003-07-03 2005-03-03 International Business Machines Corporation Method and apparatus to guarantee type and initialization safety in multithreaded programs
KR20060028568A (ko) * 2004-09-25 2006-03-30 삼성전자주식회사 이종의 자바 메소드를 실행하는 방법 및 장치

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6185597B1 (en) 1995-06-07 2001-02-06 Microsoft Corporation Method and system for expanding a buried stack frame
WO1999049238A1 (fr) * 1996-10-02 1999-09-30 Harmonic Drive Systems Inc. Appareil de regulation de phase
US6003038A (en) * 1997-03-31 1999-12-14 Sun Microsystems, Inc. Object-oriented processor architecture and operating method
US6138210A (en) * 1997-06-23 2000-10-24 Sun Microsystems, Inc. Multi-stack memory architecture
US6170083B1 (en) * 1997-11-12 2001-01-02 Intel Corporation Method for performing dynamic optimization of computer code
US6507946B2 (en) * 1999-06-11 2003-01-14 International Business Machines Corporation Process and system for Java virtual method invocation
GB9921721D0 (en) 1999-09-14 1999-11-17 Tao Group Ltd Loading object-oriented computer programs
US6658657B1 (en) 2000-03-31 2003-12-02 Intel Corporation Method and apparatus for reducing the overhead of virtual method invocations
US6934939B2 (en) * 2001-02-28 2005-08-23 International Business Machines Corporation Method for unwinding a program call stack
US7080368B2 (en) * 2002-10-31 2006-07-18 International Business Machines Corporation Object oriented apparatus and method for preserving stack frame identity during inlined method calls
KR100654428B1 (ko) 2004-01-14 2006-12-06 삼성전자주식회사 자바 프로그램의 처리 속도를 향상시키는 시스템 및 그 방법
JP2005284729A (ja) 2004-03-30 2005-10-13 Fujitsu Ltd バイトコードをネイティブコードにコンパイルする仮想マシン

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001084146A (ja) * 1999-08-30 2001-03-30 Internatl Business Mach Corp <Ibm> バイトコード実行装置およびその方法
US20030018679A1 (en) * 2001-03-27 2003-01-23 Sun Microsystems, Inc. Enhanced virtual machine instructions
US20050050528A1 (en) * 2003-07-03 2005-03-03 International Business Machines Corporation Method and apparatus to guarantee type and initialization safety in multithreaded programs
KR20060028568A (ko) * 2004-09-25 2006-03-30 삼성전자주식회사 이종의 자바 메소드를 실행하는 방법 및 장치

Also Published As

Publication number Publication date
EP1830255A3 (en) 2009-05-06
US8341606B2 (en) 2012-12-25
US20070204258A1 (en) 2007-08-30
KR20070088160A (ko) 2007-08-29
EP1830255A2 (en) 2007-09-05
JP2007226784A (ja) 2007-09-06

Similar Documents

Publication Publication Date Title
US7406684B2 (en) Compiler, dynamic compiler, and replay compiler
US7181610B2 (en) Method and system to encapsulate a driver written for an operating system (OS) runtime environment in an OS independent environment firmware extension
WO2018099292A1 (zh) 一种进程管理方法及装置
KR101059633B1 (ko) 멀티태스킹 가상 머신을 위한 힙 구성
WO2020192705A1 (zh) 类加载方法和装置
US8200938B2 (en) Computer system and method providing a memory buffer for use with native and platform-independent software code
KR100818919B1 (ko) 메소드 호출 방법 및 이를 이용한 자바 가상 머신
US20220300264A1 (en) Implementing optional specialization when compiling code
KR100577366B1 (ko) 이종의 자바 메소드를 실행하는 방법 및 장치
US20140222410A1 (en) Hybrid emulation and kernel function processing systems and methods
US20100058305A1 (en) Automatic Generation of Language Bindings for Libraries Using Data from Compiler Generated Debug Information
US7213098B2 (en) Computer system and method providing a memory buffer for use with native and platform-independent software code
US20060070028A1 (en) Procedure invocation in an integrated computing environment having both compiled and interpreted code segments
CN109032572B (zh) 一种基于字节码的java程序方法内联的方法
US7100015B1 (en) Redirecting external memory allocation operations to an internal memory manager
US9389843B2 (en) Efficient interpreter profiling to obtain accurate call-path information
CN112711462A (zh) 一种云平台虚拟cpu热绑定方法、装置及计算机可读存储介质
KR101140522B1 (ko) 객체 관리 시스템 및 방법
US20240111555A1 (en) Unknown object sub-class identification
US11720374B1 (en) Dynamically overriding a function based on a capability set
JP5646591B2 (ja) マルチタスク仮想マシンのためのヒープ組織
WO2023154092A1 (en) Dynamically overriding a function based on a capability set during load time
CN118377559A (zh) 一种页面显示方法、可穿戴电子设备及可读存储介质
CN116010100A (zh) 区块链系统中的合约调用方法、装置、设备及存储介质
CN118656144A (zh) Matlab驱动加载方法、装置、存储介质及电子设备

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
FPAY Annual fee payment

Payment date: 20130221

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20140221

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20150212

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20160218

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20170220

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20180220

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20190220

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20200225

Year of fee payment: 13