6921922: fix for 6911204 breaks tagged stack interpreter

Reviewed-by: kvn
This commit is contained in:
Tom Rodriguez 2010-02-03 12:28:30 -08:00
parent 0c27c5537e
commit aecc4f4081
3 changed files with 171 additions and 60 deletions

View file

@ -540,13 +540,30 @@ class AdapterHandlerEntry : public BasicHashtableEntry {
address _c2i_entry;
address _c2i_unverified_entry;
#ifdef ASSERT
// Captures code and signature used to generate this adapter when
// verifing adapter equivalence.
unsigned char* _saved_code;
int _code_length;
BasicType* _saved_sig;
int _total_args_passed;
#endif
void init(AdapterFingerPrint* fingerprint, address i2c_entry, address c2i_entry, address c2i_unverified_entry) {
_fingerprint = fingerprint;
_i2c_entry = i2c_entry;
_c2i_entry = c2i_entry;
_c2i_unverified_entry = c2i_unverified_entry;
#ifdef ASSERT
_saved_code = NULL;
_code_length = 0;
_saved_sig = NULL;
_total_args_passed = 0;
#endif
}
void deallocate();
// should never be used
AdapterHandlerEntry();
@ -566,6 +583,12 @@ class AdapterHandlerEntry : public BasicHashtableEntry {
return (AdapterHandlerEntry*)BasicHashtableEntry::next();
}
#ifdef ASSERT
// Used to verify that code generated for shared adapters is equivalent
void save_code(unsigned char* code, int length, int total_args_passed, BasicType* sig_bt);
bool compare_code(unsigned char* code, int length, int total_args_passed, BasicType* sig_bt);
#endif
#ifndef PRODUCT
void print();
#endif /* PRODUCT */