PL193009B1 - Sposób wprowadzania nowego kodu do systemu przetwarzania Java z modyfikowaną pulą stałą - Google Patents

Sposób wprowadzania nowego kodu do systemu przetwarzania Java z modyfikowaną pulą stałą

Info

Publication number
PL193009B1
PL193009B1 PL342994A PL34299498A PL193009B1 PL 193009 B1 PL193009 B1 PL 193009B1 PL 342994 A PL342994 A PL 342994A PL 34299498 A PL34299498 A PL 34299498A PL 193009 B1 PL193009 B1 PL 193009B1
Authority
PL
Poland
Prior art keywords
constant pool
offset
class
pool
packet
Prior art date
Application number
PL342994A
Other languages
English (en)
Other versions
PL342994A1 (en
Inventor
Michael Baentsch
Peter Buhler
Marcus Oestreicher
Original Assignee
Ibm
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=8231635&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=PL193009(B1) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Ibm filed Critical Ibm
Publication of PL342994A1 publication Critical patent/PL342994A1/xx
Publication of PL193009B1 publication Critical patent/PL193009B1/pl

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • 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
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • 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
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators

Landscapes

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

Abstract

1. Sposób wprowadzania nowego kodu do systemu przetwarzania Java z modyfikowana pula stala, w którym za pomoca interpetera opartego na stosie wykonuje sie pakiet zawie- rajacy kody posrednie i struktury klas, zna- mienny tym, ze laczy sie wewnetrznie nowy kod z pakietem istniejacym w systemie, przy czym przesuniecie adresowe nowego kodu wzgledem niego samego zastepuje sie przez odniesienie znane dopiero w czasie laczenia, okresla sie lacza zewnetrzne przy uzyciu iden- tyfikatorów jako indeksów w puli stalej pakietu i usuwa sie z puli stalej przynajmniej informa- cje, która stosowano do zastapienia przez od- niesienia znane dopiero w czasie laczenia. PL PL PL

Description

Opis wynalazku
Przedmiotem wynalazku jest sposób wprowadzania nowego kodu do systemu przetwarzania Java z modyfikowaną pulą stałą, przez dynamiczne ładowanie i łączenie kodu w środowisku przetwarzania języka Java z ograniczeniami zasobów.
Java jest językiem programowania i środowiskiem opracowanym przez firmę Sun Microsystems z USA. Wyczerpujące omówienie języka Java i jego implementacji jest przedstawione przez J. Goslina, B. Joya i G. Tele'a w publikacji „The Java Language Specification” - Opis języka Java oraz T. Lindholma i F. Yellina w publikacji „The Java Virtual machinę Specification” - Opis maszyny wirtualnej Java.
W znanym systemie Java, odniesienia do struktur klas wewnętrznych i zewnętrznych są określane przy użyciu przeglądania pośredniego nazw przez tak zwaną pulę stałą. Takie podejście stosuje się tylko w systemie zapewniającym zasoby dostateczne pod względem mocy przetwarzania i zasobów wewnętrznych.
W systemie przetwarzania z ograniczonymi zasobami, na przykład JavaCard, to podejście nie jest zadawalające. Zamiast tego stosuje się określanie odniesienia do struktur klas, unikając pośrednictwa i konieczności utrzymywania puli stałej. Określanie odniesień ma znaczenie przy łączeniu.
Sposób według wynalazku charakteryzuje się tym, że łączy się wewnętrznie nowy kod z pakietem istniejącym w systemie, przy czym przesunięcie adresowe nowego kodu względem niego samego zastępuje się przez odniesienie znane dopiero w czasie łączenia, określa się łącza zewnętrzne przy użyciu identyfikatorów jako indeksów w puli stałej pakietu i usuwa się z puli stałej przynajmniej informację, którą stosowano do zastąpienia przez odniesienia znane dopiero w czasie łączenia.
Korzystnie z puli stałej usuwa się również informację stosowaną do łączenia pakietów zewnętrznych.
Korzystnie za pomocą informacji pozostałej w puli stałej udostępnia się innym pakietom i apletom, które ładuje się później, poprawnie nowy kod i późniejsze wiązanie kodu.
Korzystnie jako system przetwarzania Java stosuje się system przetwarzania JavaCard.
Zaletą wynalazku jest osiągnięcie skutecznego łączenia w środowisku przetwarzania języka Java z ograniczeniami zasobów, szczególnie w odniesieniu do przestrzeni i czasu.
Przedmiot wynalazku jest pokazany w przykładach wykonania na rysunku, na którym fig. 1 przedstawia łączenie przy użyciu formatu pliku CAP proponowanego przez JavaSoft, fig. 2 - łączenie przez przesunięcie adresowe przy użyciu formatu pakietu według wynalazku i fig. 3 - łączenie przez nazwę przy użyciu formatu pliku według wynalazku.
Fig. 1 i 2 przedstawiają łączenie przy użyciu formatu pliku CAP czyli formatu programowania wspomaganego komputerowo oraz według wynalazku. Zastosowano maszynę wirtualną JavaCard, która różni się od maszyny wirtualnej Java pod kilkoma względami, ponieważ stosuje tylko pewien podzbiór i dodatkowe kody pośrednie.
Propozycja formatu pliku CAP JavaSoft polega na tym, że format pliku CAP dzieli plik CAP na kilka sekcji. Plik CAP zawiera ogólnie sekcję tekstową i sekcję danych. Sekcja tekstowa zawiera struktury klas, struktury metod i rozkazy kodu pośredniego. Sekcja danych zawiera pola statyczne subarkusza.
Sekcja tekstowa odnosi się do wszystkich symboli - klas, metod, itp., których rzeczywiste adresy nie są znane przed momentem połączenia za pośrednictwem przesunięcia adresowego w puli stałej. Dla każdego takiego symbolu pula stała zawiera identyfikator AID dla pakietu docelowego i przesunięcie adresowe symbolu w tym pakiecie docelowym, to znaczy pakiecie dołączonym. Pula stała zapewnia przesunięcia adresowe dla wszystkich symboli importowanych, to jest symboli zdefiniowanych w innych pakietach i dla wszystkich symboli eksportowanych, to jest symboli zdefiniowanych i dostępnych w ładowanym subarkuszu.
Organizacja sekcji tekstowej, sekcji danych i puli stałej zapewnia informację dostateczną do wykonania subarkusza. Po załadowaniu subarkusza program łączący jest w stanie przechodzić krokami przez pulę stałą i zastępować przesunięcia adresowe symboli pakietami docelowymi z rzeczywistymi adresami. Program łączący musi po prostu przejrzeć specyficzny pakiet według danego identyfikatora AID, dodać adres początkowy do przesunięcia adresowego symbolu i zapamiętać tę informację z powrotem wpuli stałej. Maszyna wirtualna JavaCard stosuje adresy w puli stałej do interpretacji. Jednak sama pula stała nie jest potrzebna w czasie przetwarzania. W rzeczywistości dla znalezienia adresu symbolu podczas interpretacji żąda ona jednej dodatkowej, niekoniecznej drogi pośredniej.
PL 193 009 B1
Ponadto pula stała zajmuje niepotrzebnie przestrzeń na arkuszu. Format pliku CAP JavaSoft stosuje zatem tablice uporządkowania dla poszczególnych sekcji do usuwania żądania z puli stałej po połączeniu. Tablica uporządkowania zawiera w sekcji tekstowej wszystkie pozycje, w których nastąpiła relokacja. Program łączący przechodzi krokami przez tablicę uporządkowania i pobiera przesunięcie adresowe pozycji wpuli stałej, a następnie ustala adres tego symbolu i zapamiętuje go w pozycji pierwotnej w sekcji tekstowej. Interpreter stosuje wtedy bezpośrednio adresy w czasie przetwarzania, a pulę stalą po procesie łączenia usuwa się. Po procesie łączenia na arkuszu pozostaje jedynie sekcja tekstowa i sekcja danych.
Łączenie subarkuszy z obliczonymi wstępnie lub kodowanymi sprzętowo przesunięciami adresowymi w pakiety docelowe zapewnia zwartość systemu, jednak nie zapewnia elastyczności dostatecznej do umożliwienia różnych implementacji klas systemowych i specyficznych rozszerzeń na różnych arkuszach. Na przykład jest mało prawdopodobne, aby subarkusz, który został poddany konwersji względem klas systemowych IBM i rozszerzenia JavaSoft, działał na arkuszu z subarkuszem systemowym JavaSoft i subarkuszem pochodzącym z IBM. Podstawowym tego powodem jest to, że przesunięcia adresowe poszczególnych klas, metod i przesunięcia adresowe pól różnią się dla różnych implementacji.
Wynalazek rozciąga się na idee aktualnej propozycji JavaSoft i wzbogaca je o dodatkowy nieskomplikowany i elastyczny, symboliczny mechanizm łączenia.
Format pliku CAP według wynalazku również dzieli plik CAP na różne sekcje. Sekcja tekstowa zawiera struktury klas, struktury metod i rozkazy kodu pośredniego, natomiast sekcja danych - pola statyczne. Plik CAP w tablicach uporządkowania przechowuje również niezbędną informację relokacji. Dla każdego pakietu, do którego jest dołączany subarkusz, to znaczy dla pakietu docelowego, występuje jedna tablica uporządkowania.
Tablica uporządkowania zawiera z kolei pozycję w sekcji tekstowej lub danych, w której ma nastąpić relokacja. W prostym przypadku miejsca te są również przemieszczane o wartość wstępnie obliczonego przesunięcia adresowego do sprawdzonych i znanych pakietów docelowych. W tym przypadku program łączący przegląda adres początkowy pakietu o danym identyfikatorze docelowym AID, dodaje przesunięcie adresowe do pakietu docelowego i zapisuje tę wartość w pozycji pierwotnej w sekcji tekstowej. Przesunięcie adresowe do pakietu docelowego jest przechowywane albo w tablicy uporządkowania albo w sekcji tekstowej w adresie relokacji dla otrzymania mniejszych rozmiarów tablicy uporządkowania. Relokacja z przesunięciem adresowym jest zawsze stosowana dla większości odniesień w samym załadowanym subarkuszu. Do obliczania wstępnego przesunięć adresowych bez utraty kompatybilności jest stosowany przetwornik.
Ze względu na integralność systemową, odniesień do pakietów zewnętrznych nie należy dołączać przez obliczanie wstępne przesunięcia adresowego. Zamiast tego do odniesień do innych pakietów w procesie łączenia należy używać nazwy lub identyfikatora. Te nazwy i przyporządkowane im wartości są przechowywane tylko na arkuszu pakietów, które są dzielone między wiele apletów. Ponieważ te tablice par nazw/wartości powinny być możliwie małe, to w tym formacie pliku CAP ogranicza się nazewnictwo elementów pliku klas, lecz nadal z zachowaniem możliwości stosowania specyficznych implementacji różnych specyfikacji dostawcy. Mianowicie klasy publiczne muszą być nazwane i eksportowalne, podobnie jak i publiczne statyczne metody i konstruktory oraz publiczne pola statyczne. Stosuje się metody wirtualne, w których interpreter wyszukuje metodę wirtualną za pośrednictwem indeksu wskazującego w wirtualnej tablicy metod. Te indeksy i wirtualna tablica metod są określana na arkuszu, jeżeli środowisko JavaCard ma obsługiwać późniejsze wiązanie metod wirtualnych standardowego kodu Java. Podczas zestawiania tablicy metod, program łączący decyduje, czy dana metoda w tablicy metod dziedziczy inną metodę. Ponieważ te metody mogłyby być definiowane w różnych subarkuszach, to konieczne jest wprowadzenie globalnego układu nazewniczego dla metod wcelu decydowania, czy dwie metody są tego samego typu. Ponieważ późniejsze wiązanie metody wirtualnej wymaga globalnego układu nazewniczego i dodatkowych zasobów na arkuszu dla określania i nazywania metod wirtualnych, to format pliku CAP według wynalazku nie obsługuje go. Nawet przy tym ograniczeniu pozostaje dostateczna przestrzeń dla specyficznej implementacji pakietów podstawowych i rozszerzeń dostawcy. Programista swobodnie wprowadza prywatne lub statyczne metody i klasy, a także nieprywatne przykładowe metody, jeżeli nie są dziedziczone i opisywane jako ostateczne. Następnie przetwornik zastępuje wywołania tych metod wywołaniami bezpośrednimi.
PL 193 009 B1
Liczba i typy przykładowych pól w klasie nie są zwykle definiowane przez specyfikacje i zmieniają się dla implementacji różnych dostawców. Stosowanie pól odnoszących się do procesu łączenia dzieli się na następujące trzy kategorie.
Pierwszą kategorią są obliczane wstępnie przesunięcia adresowe pól. Rozkaz pobierz/wstaw pole odnosi się do pola, którego klasa i wszystkie superklasy są zdefiniowane w zawierającym je subarkuszu. Przesunięcie adresowe tego pola jest wtedy obliczane wstępnie przez przetwornik i nie musi być łączone podczas procesu ładowania. Jeżeli jest uzgodnienie, że klasa Obiekt nie zawiera żadnych opisów pola, to na tę kategorię przypada wiele dostępów do pól.
Drugą kategorią jest dostęp do pól klas wewnętrznych subarkusza z dowolnymi superklasami zewnętrznymi subarkusza. Ten przypadek wymaga obsługi przez format pliku CAP dla umożliwienia podziału na podklasy klas zdefiniowanych w oddzielnych pakietach. Przetwornik oblicza przesunięcie adresowe pola w odniesieniu do przykładowego rozmiaru superklasy zewnętrznej subarkusza i zapisuje tę wartość w pliku CAP. Podczas procesu łączenia rzeczywiste przesunięcie adresowe pola wymaga obliczenia na podstawie rozmiaru klasy bazowej. To samo odbywa się w przypadku elementu o przykładowym rozmiarze klasy wewnętrznej subarkusza.
Trzecią kategorią jest dostęp do pól w klasach zewnętrznych subarkusza lub w dowolnej klasie zewnętrznej. Chociaż przykładowe pola są rzadko opisywane jako publiczne, to są często opisywane jako chronione. Dostęp do pól chronionych jest zawsze przyznawany przy specyfikacji chronionych metod pobierz/wstaw pole, lecz proponowany format pliku CAP umożliwia dostęp bezpośredni również do takich pól opisywanych jako chronione lub publiczne. Pakiet, który eksportuje chronione lub publiczne pole przykładowe, musi zawierać nazwę i przesunięcie adresowe dla takiego pola wcelu umożliwienia łączenia symbolicznego.
Pakiet, który eksportuje klasy, metody lub pola, zawiera pulę stałą, której pozycje zawierają typ klasy itp., nazwę i wartość dla tego symbolu. Ponieważ format pliku CAP nie wymaga utrzymywania globalnego układu nazewniczego, to łatwa jest specyfikacja nazw dla przyporządkowanych symboli. Symbole są numerowane od 0do n lub są wydawane wraz ze specyfikacją interfejsu programów użytkowych API.
Programista wykonujący taką specyfikację jest nadal w stanie eksportować dodatkowe klasy itp. przez wybór nowych nazw, rozpoczynając od n +1.
Fig. 3 przedstawia symboliczne powiązanie apletu z pakietem docelowym. Zapisy w tablicy uporządkowania zawierają typ relokacji, przesunięcie adresowe relokacji w sekcji tekstowej i nazwę symbolu, który dla oszczędności przestrzeni jest również przechowywany w pozycji przeznaczonej do relokacji. W proponowanym układzie nazewniczym nazwa jest stosowana w charakterze indeksu wpuli stałej pakietu docelowego. Zapisy w puli stałej zawierają typ pozycji, nazwę i przyporządkowaną wartość. Program łączący dokonuje relokacji zapisów w tablicy uporządkowania, zależnie od typu zapisu.
Relokacja metody polega na tym, że pozycja puli stałej pakietu docelowego o danej nazwie musi być typu metody. Wartość musi być przesunięciem adresowym w pakiecie docelowym, w którym metoda jest określona. Program łączący oblicza adres metody i wyznacza sekcję tekstową z danym przesunięciem adresowym.
Relokacja klasy jest jak powyżej, z tym wyjątkiem, że pozycja puli stałej z indeksem symbolu i nazwą musi być typu klasy.
Relokacja pola statycznego jest jak powyżej, z tym wyjątkiem, że pozycja puli stałej z indeksem symbolu i nazwą musi być typu pola statycznego, a wartość stanowi przesunięcie adresowe w sekcji danych pakietu.
Relokacja względnego przykładowego przesunięcia adresowego pola lub względna wartość rozmiaru przykładowej klasy polega na tym, że pozycja puli stałej pakietu docelowego o danej nazwie musi być typu klasy. Program łączący oblicza adres klasy docelowej i pobiera przykładowy rozmiar klasy, który stanowi element struktury klasy. Program łączący dodaje przykładowy rozmiar do wartości podanej w przesunięciu adresowym sekcji tekstowej i zastępuje to sumą.
Dostęp bezwzględny pola do niezdefiniowanej klasy polega na tym, że pozycja puli stałej pakietu docelowego o danej nazwie musi być typu przykładowego pola. Wartość tej pozycji stanowi bezwzględne przesunięcie adresowe tego pola w przykładzie jego klasy.
Jeżeli załadowany subarkusz jest wspólnym pakietem i eksportuje pola chronione lub publiczne, to program łączący przemieszcza jego zapisy również w puli stałej. Ich rzeczywiste przesunięcia adresowe są przemieszczane w ten sam sposób, jak przesunięcia adresowe przykładowych pól.
PL 193 009 B1
Tablice uporządkowania po zakończeniu procesu łączenia są ewentualnie usuwane. Aplety nie wymagają puli stałej, a tylko pakiety, które mogą być dzielone między wiele apletów, wymagają puli stałej do przyszłego stosowania. Rozmiar puli stałej zależy od liczby eksportowanych pozycji i od rozmiaru pozycji. Pula stała dla aktualnych klas systemu JavaCart zajmuje obecnie około 160 pozycji. Pozycja puli stałej zawiera pole typu, nazwę i wartość, które są zapisywane w 4 bajtach, a przy użyciu układu nazewniczego według wynalazku są redukowane nawet do trzech bajtów. Daje to w wyniku rozmiar puli stałej wynoszący 720 bajtów dla wszystkich klas systemowych.
Różnice względem propozycji JavaSoft polegają na tym, że pula stała JavaSoft aktualnie nie dokonuje rozróżnienia między pozycjami określanymi wewnętrznie i zewnętrznie. Utrudnia to usunięcie pozycji puli stałej, zajmujących pozycje definiowane wewnętrznie. Przesunięcia adresowe pola w rozkazach pobierz/wstaw pole i pola o przykładowym rozmiarze w strukturze klasy mają szerokość tylko 8 bitów. Uniemożliwia to obecnie stosowanie tych wartości jako indeksów w puli stałej, gdzie jest przechowywana informacja do wiązania przesunięcia adresowego pola podczas procesu łączenia.
Z powodu tych dwóch ograniczeń, aktualna propozycja JavaSoft wymaga rozszerzeń dla umożliwienia uproszczenia niezbędnego układu nazewniczego, jak w przypadku tej propozycji.
Rozszerzenia o mniejszym znaczeniu polegają na tym, że w niektórych środowiskach podczas procesu łączenia może nie być potrzebna w ogóle jakakolwiek informacja symboliczna na arkuszu, na przykład wystarcza stosowanie tylko obliczonych z góry przesunięć adresowych. Format pliku CAP według wynalazku jest rozszerzany w bezpieczny sposób w tym kierunku, że pakiet lub aplet zawiera nie tylko numer wersji, lecz również identyfikator dostawcy lub identyfikator implementacji. Zapisy tablic uporządkowania mają pozycje odniesienia puli stałej, zawierające również przesunięcia adresowe, które przetwornik oblicza także w czasie przetwarzania. Na początku procesu ładowania program ładujący sprawdza, czy pakiety żądane przez aplet pochodzą od tego samego dostawcy, na przykład z tej samej implementacji, co już aktualnie zainstalowane na arkuszu. Jeżeli tak jest, to program ładujący stosuje podczas procesu łączenia przesunięcia adresowe pliku CAP apletu. W przeciwnym przypadku proces ładowania nie kończy się pomyślnie.
Specyfikacje w przypadku odnośnych pozycji formatu pliku CAP polegają na tym, że celem szczegółowego opisu nie jest dokładne wyszczególnianie zawartości pliku CAP.
Zamiast tego zapewnia się szczegółowe omówienie elementów, które powinny i które muszą znaleźć się w pliku CAP, wychodząc z propozycji JavaSoft. Tym niemniej, zapewnia się również bardziej formalne specyfikacje pozycji formatu pliku CAP wspomnianego w tym opisie w postaci wyrażeń zgłoszonych do języka C.
Dla przejrzystości wyszczególniono je poniżej w postaci nieoptymalizowanej:
//format tablicy uporządkowania typedef struct_fixup_table{ u1 target_aid_cnt;
u1 target_aid[ ]; u1 entries_cnt; fixup_entry_t entries[ ];
};
//układ zapisu uporządkowania typedef struct_fixup_entry{ u1 type;
u2 offset;
//przesunięcie tekstu lub danych union{ u2 target_offset;
//przesunięcie pakietu docelowego u2 symbol_name;
//nazwa i indeks docelowej puli stałej } value;
} fixup_entry_t;
PL 193 009 B1 // typy poszczególnych zapisów uporządkowania //relokacja 16-bitowego adresu w sekcji tekstowej lub danych za pomocą przesunięcia, //to może pokryć adresy klas, metod itp.
#define RELO_TEXT_16BIT_WITH_OFFSET #define RELO_TEXT_16BIT_WITH_OFFSET //relokacja wartości symbolu do sekcji tekstu #define RELO_CLASS_BY_SYM #define RELO_METHOD_BY_SYM #define RELO_STATICFIELD_BY_SYM #define RELO_INSTANCEFIELD_BY_SYM //układ puli stałej typedef struct_constant_pool{ u2 cnt;
cp_item_t items [cnt];
};
// układ pozycji puli stałej typedef struct_cp_item{ unsigned type:4 //typ pozycji unsigned name:12;
//nazwa, jeżeli w ogóle potrzebna u2 offset;
//offset };
//typy pozycji puli stałej #define CONSTPOOL_CLASS #define CONSTPOOL_METHOD #define CONSTPOOL_STATICFIELD #define CONSTPOOL_INSTANCEFIELD.

Claims (4)

  1. Zastrzeżenia patentowe
    1. Sposób wprowadzania nowego kodu do systemu przetwarzania Java z modyfikowaną pulą stałą, w którym za pomocą interpetera opartego na stosie wykonuje się pakiet zawierający kody pośrednie i struktury klas, znamienny tym, że łączy się wewnętrznie nowy kod z pakietem istniejącym w systemie, przy czym przesunięcie adresowe nowego kodu względem niego samego zastępuje się przez odniesienie znane dopiero w czasie łączenia, określa się łącza zewnętrzne przy użyciu identyfikatorów jako indeksów wpuli stałej pakietu i usuwa się z puli stałej przynajmniej informację, którą stosowano do zastąpienia przez odniesienia znane dopiero w czasie łączenia.
  2. 2. Sposób według zastrz. 1, znamienny tym, że z puli stałej usuwa się również informację stosowaną do łączenia pakietów zewnętrznych.
  3. 3. Sposób według zastrz. 1, znamienny tym, że za pomocą informacji pozostałej wpuli stałej udostępnia się innym pakietom i apletom, które ładuje się później, poprawnie nowy kod i późniejsze wiązanie kodu.
  4. 4. Sposób według zastrz. 1, znamienny tym, że jako system przetwarzania Java stosuje się system przetwarzania JavaCard.
PL342994A 1998-03-23 1998-11-12 Sposób wprowadzania nowego kodu do systemu przetwarzania Java z modyfikowaną pulą stałą PL193009B1 (pl)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP98105179 1998-03-23
PCT/IB1998/001799 WO1999049392A1 (en) 1998-03-23 1998-11-12 Java runtime system with modified constant pool

Publications (2)

Publication Number Publication Date
PL342994A1 PL342994A1 (en) 2001-07-16
PL193009B1 true PL193009B1 (pl) 2007-01-31

Family

ID=8231635

Family Applications (1)

Application Number Title Priority Date Filing Date
PL342994A PL193009B1 (pl) 1998-03-23 1998-11-12 Sposób wprowadzania nowego kodu do systemu przetwarzania Java z modyfikowaną pulą stałą

Country Status (13)

Country Link
US (1) US6792612B1 (pl)
EP (1) EP1066562B1 (pl)
JP (1) JP3632598B2 (pl)
KR (1) KR100404785B1 (pl)
CN (1) CN1109971C (pl)
CA (1) CA2322686A1 (pl)
CZ (1) CZ20003437A3 (pl)
DE (1) DE69814174T2 (pl)
HK (1) HK1033700A1 (pl)
HU (1) HUP0101368A3 (pl)
MY (1) MY124662A (pl)
PL (1) PL193009B1 (pl)
WO (1) WO1999049392A1 (pl)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6581206B2 (en) * 1999-11-12 2003-06-17 Sun Microsystems, Inc. Computer program language subset validation
US7150005B2 (en) * 1999-07-02 2006-12-12 Beryl Technical Assays, Llc Method and system for global constant management for memory
US6968549B1 (en) * 1999-07-02 2005-11-22 Beryl Technical Assays Llc Method and system for dynamically loading data structures into memory with global constant pool
KR100319755B1 (ko) * 1999-12-02 2002-01-05 오길록 내장형 자바가상머신을 위한 바이트코드 압축 방법
US20010007146A1 (en) * 1999-12-23 2001-07-05 Uwe Hansmann Method for providing a set of software components
US7080359B2 (en) 2002-01-16 2006-07-18 International Business Machines Corporation Stack unique signatures for program procedures and methods
US7024657B2 (en) * 2000-02-21 2006-04-04 Matsushita Electric Industrial Co., Ltd. Program generation apparatus for program execution system, replaces variable name in each class file by assigned offset number so that same offset numbers are assigned to non-dependent variables with same variable name
FR2815801B1 (fr) * 2000-10-20 2004-10-29 Trusted Logic Protocole de transmission d'une pluralite de flux logiques d'echange multiple de couples de commande/reponse sur un canal physique unique d'echange entre maitre et esclave et systeme de suivi et de controle d'execution d'appliquettes
US6779732B2 (en) 2001-08-31 2004-08-24 Schulumberger Malco, Inc. Method and apparatus for linking converted applet files
FR2831684B1 (fr) * 2001-10-31 2004-03-05 Gemplus Card Int Installation de programme compile notamment dans une carte a puce
US7131121B2 (en) 2001-11-14 2006-10-31 Axalto, Inc. Method and apparatus for linking converted applet files without relocation annotations
US7114152B2 (en) 2002-01-08 2006-09-26 International Business Machines Corporation Method, apparatus, and program to determine the mutability of an object at loading time
NL1019876C2 (nl) * 2002-01-31 2003-08-04 Chess Embedded Technology B V Systeem en werkwijze voor het laden van een programmacode in een inrichting alsmede een werkwijze voor het voeden van een programmacode aan een inrichting.
US7272827B2 (en) 2002-04-03 2007-09-18 International Business Machines Corporation Statically detecting externally referenced interfaces of a program
CN100395703C (zh) 2002-11-29 2008-06-18 捷讯研究有限公司 产生用于存储在具有有限存储单元的设备中的可解译代码的方法
FR2864650B1 (fr) * 2003-12-24 2006-03-24 Trusted Logic Procede de mise a jour d'applications pour carte a puce
KR100643268B1 (ko) * 2004-01-17 2006-11-10 삼성전자주식회사 자바 가상 머신의 성능을 향상시키는 방법 및 상기 방법에의해 동작되는 시스템
US7886281B2 (en) * 2004-03-30 2011-02-08 Symantec Corporation System and methods for cross-tier transaction tracing
US7356811B2 (en) * 2004-07-08 2008-04-08 International Business Machines Corporation Method and apparatus for referencing a constant pool in a java virtual machine
DE102004058882A1 (de) * 2004-12-06 2006-06-08 Giesecke & Devrient Gmbh Erzeugen von Programmcode in einem Ladeformat und Bereitstellen von ausführbarem Programmcode
US8352925B2 (en) * 2007-01-16 2013-01-08 Oracle America, Inc. Mechanism for enabling a set of code intended for a first platform to be executed on a second platform
WO2011075825A1 (en) 2009-12-21 2011-06-30 Kik Interactive, Inc. Systems and methods for accessing and controlling media stored remotely
US9846631B2 (en) * 2011-02-28 2017-12-19 Typemock Ltd. Methods, circuits, apparatus, systems and associated software modules for evaluating code behavior
US9195568B2 (en) * 2011-02-28 2015-11-24 Typemock Ltd. Methods, circuits, apparatus, systems and associated software modules for evaluating code behavior
US9042266B2 (en) 2011-12-21 2015-05-26 Kik Interactive, Inc. Methods and apparatus for initializing a network connection for an output device
US9383448B2 (en) 2012-07-05 2016-07-05 Deca System Co., Ltd. Golf GPS device with automatic hole recognition and playing hole selection
CN103677778B (zh) * 2012-09-18 2016-09-14 北京中电华大电子设计有限责任公司 一种CAP文件Classref常量的解析方法
US9223555B2 (en) * 2013-11-07 2015-12-29 Netronome Systems, Inc. Hierarchical resource pools in a linker
US10268465B2 (en) * 2016-10-24 2019-04-23 International Business Machines Corporation Executing local function call site optimization

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5291601A (en) 1989-06-01 1994-03-01 Hewlett-Packard Company Shared libraries implemented with linking program loader
US5594903A (en) * 1991-02-26 1997-01-14 Lynx Real-Time Systems, Inc. Operating System architecture with reserved memory space resident program code identified in file system name space
US5581768A (en) 1995-02-27 1996-12-03 Intel Corporation Method and apparatus for executing applications in place from write once/seldom memories
US6112025A (en) * 1996-03-25 2000-08-29 Sun Microsystems, Inc. System and method for dynamic program linking
US5815718A (en) * 1996-05-30 1998-09-29 Sun Microsystems, Inc. Method and system for loading classes in read-only memory
MY126363A (en) * 1996-10-25 2006-09-29 Gemalto Sa Using a high level programming language with a microcontroller
US6366876B1 (en) * 1997-09-29 2002-04-02 Sun Microsystems, Inc. Method and apparatus for assessing compatibility between platforms and applications

Also Published As

Publication number Publication date
DE69814174T2 (de) 2004-03-04
EP1066562A1 (en) 2001-01-10
KR100404785B1 (ko) 2003-11-07
CZ20003437A3 (cs) 2001-11-14
EP1066562B1 (en) 2003-05-02
CN1109971C (zh) 2003-05-28
JP2002508544A (ja) 2002-03-19
CA2322686A1 (en) 1999-09-30
HUP0101368A3 (en) 2004-04-28
CN1286770A (zh) 2001-03-07
WO1999049392A1 (en) 1999-09-30
JP3632598B2 (ja) 2005-03-23
MY124662A (en) 2006-06-30
KR20010041716A (ko) 2001-05-25
HK1033700A1 (en) 2001-09-14
DE69814174D1 (de) 2003-06-05
HUP0101368A2 (hu) 2001-08-28
PL342994A1 (en) 2001-07-16
US6792612B1 (en) 2004-09-14

Similar Documents

Publication Publication Date Title
PL193009B1 (pl) Sposób wprowadzania nowego kodu do systemu przetwarzania Java z modyfikowaną pulą stałą
US5615400A (en) System for object oriented dynamic linking based upon a catalog of registered function set or class identifiers
US7644402B1 (en) Method for sharing runtime representation of software components across component loaders
JP4571710B2 (ja) ディスパッチテーブル構造のための方法と装置
US8359575B2 (en) Protection domains for a computer operating system
US8099729B2 (en) Method and device for creating and using pre-internalized program files
US8434099B2 (en) Efficient linking and loading for late binding and platform retargeting
CN109614165B (zh) 一种com组件的多版本并行运行方法和装置
US6823504B1 (en) Method and apparatus for interfacing a javascript interpreter with library of host objects implemented in java
KR100421234B1 (ko) 플랫폼-독립형 가상기계의 기호표 탐색 최적화
JPH10198570A (ja) 読み出し専用メモリにクラスをロードする方法及びシステム
JPH07160483A (ja) 指定のプログラムイメージと関連ライブラリプログラムとを実行可能なアプリケーションプログラムイメージに動的にリンクする方法
US6243668B1 (en) Instruction set interpreter which uses a register stack to efficiently map an application register state
JP2002536744A (ja) トークンに基づいたリンクステップ
US7665075B1 (en) Methods for sharing of dynamically compiled code across class loaders by making the compiled code loader reentrant
JP2003508844A (ja) オブジェクト指向コンピュータプログラムの変換および実行
JP2002536743A (ja) リソース制約デバイスのためのオブジェクト指向命令セット
US6951014B1 (en) Method and apparatus for representation of a JavaScript program for execution by a JavaScript interpreter
US7406687B1 (en) Sharing runtime representation of software component methods across component loaders
US6898786B1 (en) Javascript interpreter engine written in Java
US20040123308A1 (en) Hybird of implicit and explicit linkage of windows dynamic link labraries
KR950006617B1 (ko) 프로그램 동작시에 프로그램 유닛의 연결 방법 및 장치
US11347487B2 (en) Confining reflective access based on module boundaries
US7181724B2 (en) Representation of Java® data types in virtual machines
JP2003509767A (ja) オブジェクト指向コンピュータプログラムのロード

Legal Events

Date Code Title Description
LAPS Decisions on the lapse of the protection rights

Effective date: 20071112