353 intptr_t symbol_mode() const { return _symbol_mode; }
354 void set_symbol_mode(intptr_t m) { _symbol_mode = m; }
355
356 Method* method() const { return _method; }
357 void set_method(Method* p) { _method = p; }
358
359 oop method_type() const { return _method_type; }
360 oop* method_type_addr() { return &_method_type; }
361 void set_method_type(oop p) { _method_type = p; }
362
363 SymbolPropertyEntry* next() const {
364 return (SymbolPropertyEntry*)HashtableEntry<Symbol*, mtSymbol>::next();
365 }
366
367 SymbolPropertyEntry** next_addr() {
368 return (SymbolPropertyEntry**)HashtableEntry<Symbol*, mtSymbol>::next_addr();
369 }
370
371 void print_on(outputStream* st) const {
372 symbol()->print_value_on(st);
373 st->print("/mode="INTX_FORMAT, symbol_mode());
374 st->print(" -> ");
375 bool printed = false;
376 if (method() != NULL) {
377 method()->print_value_on(st);
378 printed = true;
379 }
380 if (method_type() != NULL) {
381 if (printed) st->print(" and ");
382 st->print(INTPTR_FORMAT, p2i((void *)method_type()));
383 printed = true;
384 }
385 st->print_cr(printed ? "" : "(empty)");
386 }
387 };
388
389 // A system-internal mapping of symbols to pointers, both managed
390 // and unmanaged. Used to record the auto-generation of each method
391 // MethodHandle.invoke(S)T, for all signatures (S)T.
392 class SymbolPropertyTable : public Hashtable<Symbol*, mtSymbol> {
393 friend class VMStructs;
|
353 intptr_t symbol_mode() const { return _symbol_mode; }
354 void set_symbol_mode(intptr_t m) { _symbol_mode = m; }
355
356 Method* method() const { return _method; }
357 void set_method(Method* p) { _method = p; }
358
359 oop method_type() const { return _method_type; }
360 oop* method_type_addr() { return &_method_type; }
361 void set_method_type(oop p) { _method_type = p; }
362
363 SymbolPropertyEntry* next() const {
364 return (SymbolPropertyEntry*)HashtableEntry<Symbol*, mtSymbol>::next();
365 }
366
367 SymbolPropertyEntry** next_addr() {
368 return (SymbolPropertyEntry**)HashtableEntry<Symbol*, mtSymbol>::next_addr();
369 }
370
371 void print_on(outputStream* st) const {
372 symbol()->print_value_on(st);
373 st->print("/mode=" INTX_FORMAT, symbol_mode());
374 st->print(" -> ");
375 bool printed = false;
376 if (method() != NULL) {
377 method()->print_value_on(st);
378 printed = true;
379 }
380 if (method_type() != NULL) {
381 if (printed) st->print(" and ");
382 st->print(INTPTR_FORMAT, p2i((void *)method_type()));
383 printed = true;
384 }
385 st->print_cr(printed ? "" : "(empty)");
386 }
387 };
388
389 // A system-internal mapping of symbols to pointers, both managed
390 // and unmanaged. Used to record the auto-generation of each method
391 // MethodHandle.invoke(S)T, for all signatures (S)T.
392 class SymbolPropertyTable : public Hashtable<Symbol*, mtSymbol> {
393 friend class VMStructs;
|