01.06.2013 Views

JIT - Dipartimento di Sistemi e Informatica

JIT - Dipartimento di Sistemi e Informatica

JIT - Dipartimento di Sistemi e Informatica

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Dipartimento</strong> <strong>di</strong> <strong>Sistemi</strong> e <strong>Informatica</strong>, University of Florence<br />

<strong>Sistemi</strong> Distribuiti, Prof. Paolo Nesi<br />

Common Language Specification<br />

Il CLS definisce un sottoinsieme del Common Type System al<br />

quale tutti i fornitori <strong>di</strong> librerie <strong>di</strong> classi e progettisti <strong>di</strong> linguaggi linguaggi<br />

che puntano al CLR, devono aderire.<br />

Se un componente scritto in un linguaggio (ad esempio C#)<br />

dovrà dovr essere utilizzato da un altro linguaggio (ad esempio<br />

VB.NET), allora chi scrive il componente dovrà dovr aderire ai tipi e<br />

alle strutture definite dal CLS.<br />

Ad Ad esempio, il tipo Int32 è compatibile con il CLS ed i linguaggi<br />

e gli strumenti possono aspettarsi che altri linguaggi e<br />

strumenti conformi al CLS sappiano come utilizzarlo<br />

correttamente<br />

<strong>Sistemi</strong> Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 21<br />

<strong>JIT</strong> – Just in Time Compiler<br />

Il co<strong>di</strong>ce non viene caricato tutto in memoria<br />

il compilatore <strong>JIT</strong> compila solo il co<strong>di</strong>ce necessario,<br />

quin<strong>di</strong> memorizza nella cache il co<strong>di</strong>ce nativo compilato<br />

per riutilizzarlo<br />

L’overhead overhead è una lieve <strong>di</strong>fferenza che, nella maggior<br />

parte dei casi, non verrà verr rilevata<br />

Quando viene caricata una classe, il caricatore aggiunge<br />

uno stub a ogni metodo della classe<br />

La prima volta che viene chiamato il metodo, il co<strong>di</strong>ce<br />

stub cede il controllo al compilatore <strong>JIT</strong>, che compila<br />

MSIL nel co<strong>di</strong>ce nativo.<br />

Lo stub viene quin<strong>di</strong> mo<strong>di</strong>ficato per puntare al co<strong>di</strong>ce<br />

nativo appena creato, affinché affinch le chiamate successive<br />

passino <strong>di</strong>rettamente al co<strong>di</strong>ce nativo<br />

<strong>Sistemi</strong> Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 22<br />

11

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!