Exemplo n.º 1
0
  return (address)a > (address)b ? +1 : -1;
}

static vmSymbols::SID vm_symbol_index[vmSymbols::SID_LIMIT];
extern "C" {
  static int compare_vmsymbol_sid(const void* void_a, const void* void_b) {
    Symbol* a = vmSymbols::symbol_at(*((vmSymbols::SID*) void_a));
    Symbol* b = vmSymbols::symbol_at(*((vmSymbols::SID*) void_b));
    return compare_symbol(a, b);
  }
}

#ifndef PRODUCT
#define VM_SYMBOL_ENUM_NAME_BODY(name, string) #name "\0"
static const char* vm_symbol_enum_names =
  VM_SYMBOLS_DO(VM_SYMBOL_ENUM_NAME_BODY, VM_ALIAS_IGNORE)
  "\0";
static const char* vm_symbol_enum_name(vmSymbols::SID sid) {
  const char* string = &vm_symbol_enum_names[0];
  int skip = (int)sid - (int)vmSymbols::FIRST_SID;
  for (; skip != 0; skip--) {
    size_t skiplen = strlen(string);
    if (skiplen == 0)  return "<unknown>";  // overflow
    string += skiplen+1;
  }
  return string;
}
#endif //PRODUCT

// Put all the VM symbol strings in one place.
// Makes for a more compact libjvm.
Exemplo n.º 2
0
# include "incls/_Symbols.cpp.incl"

#if !ROMIZED_PRODUCT

int system_symbols[Symbols::__number_of_system_symbols];

#define VM_SYMBOL_REGULAR(name, string)    {string, false},
#define VM_SYMBOL_SIGNATURE(name, string)  {string, true},

struct SymbolDefinition {
  const char * string;
  bool   is_signature;
};

static const SymbolDefinition definitions[] = {
  VM_SYMBOLS_DO(VM_SYMBOL_REGULAR, VM_SYMBOL_SIGNATURE)
};

void Symbols::initialize(JVM_SINGLE_ARG_TRAPS) {
  UsingFastOops fast_oops;
  Symbol::Fast sym;
  for (int i = 0; i < number_of_system_symbols(); i++) {
    char* string = (char*)definitions[i].string;
    if (definitions[i].is_signature) {
      sym = TypeSymbol::parse(string JVM_CHECK);
    } else {
      sym = SymbolTable::symbol_for(string JVM_CHECK);
    }
    *at(i) = sym;
  }
}