438
439 /** The represented symbol.
440 */
441 Symbol member;
442
443 StaticItem(Symbol member) {
444 super(Code.typecode(member.erasure(types)));
445 this.member = member;
446 }
447
448 Item load() {
449 code.emitop2(getstatic, member, PoolWriter::putMember);
450 return stackItem[typecode];
451 }
452
453 void store() {
454 code.emitop2(putstatic, member, PoolWriter::putMember);
455 }
456
457 Item invoke() {
458 MethodType mtype = (MethodType)member.erasure(types);
459 int rescode = Code.typecode(mtype.restype);
460 code.emitInvokestatic(member, mtype);
461 return stackItem[rescode];
462 }
463
464 public String toString() {
465 return "static(" + member + ")";
466 }
467 }
468
469 /** An item representing a dynamic call site.
470 */
471 class DynamicItem extends StaticItem {
472 DynamicItem(Symbol member) {
473 super(member);
474 }
475
476 Item load() {
477 Assert.check(member.kind == Kinds.Kind.VAR);
478 Type type = member.erasure(types);
|
438
439 /** The represented symbol.
440 */
441 Symbol member;
442
443 StaticItem(Symbol member) {
444 super(Code.typecode(member.erasure(types)));
445 this.member = member;
446 }
447
448 Item load() {
449 code.emitop2(getstatic, member, PoolWriter::putMember);
450 return stackItem[typecode];
451 }
452
453 void store() {
454 code.emitop2(putstatic, member, PoolWriter::putMember);
455 }
456
457 Item invoke() {
458 MethodType mtype = (MethodType)member.externalType(types); // static factories
459 int rescode = Code.typecode(mtype.restype);
460 code.emitInvokestatic(member, mtype);
461 return stackItem[rescode];
462 }
463
464 public String toString() {
465 return "static(" + member + ")";
466 }
467 }
468
469 /** An item representing a dynamic call site.
470 */
471 class DynamicItem extends StaticItem {
472 DynamicItem(Symbol member) {
473 super(member);
474 }
475
476 Item load() {
477 Assert.check(member.kind == Kinds.Kind.VAR);
478 Type type = member.erasure(types);
|