src/share/classes/com/sun/tools/javac/jvm/Items.java

changeset 1336
26d93df3905a
parent 820
2d5aff89aaa3
child 1393
d7d932236fee
equal deleted inserted replaced
1335:99983a4a593b 1336:26d93df3905a
1 /* 1 /*
2 * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. 2 * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 * 4 *
5 * This code is free software; you can redistribute it and/or modify it 5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as 6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Oracle designates this 7 * published by the Free Software Foundation. Oracle designates this
108 */ 108 */
109 Item makeStackItem(Type type) { 109 Item makeStackItem(Type type) {
110 return stackItem[Code.typecode(type)]; 110 return stackItem[Code.typecode(type)];
111 } 111 }
112 112
113 /** Make an item representing a dynamically invoked method.
114 * @param member The represented symbol.
115 */
116 Item makeDynamicItem(Symbol member) {
117 return new DynamicItem(member);
118 }
119
113 /** Make an item representing an indexed expression. 120 /** Make an item representing an indexed expression.
114 * @param type The expression's type. 121 * @param type The expression's type.
115 */ 122 */
116 Item makeIndexedItem(Type type) { 123 Item makeIndexedItem(Type type) {
117 return new IndexedItem(type); 124 return new IndexedItem(type);
452 return stackItem[rescode]; 459 return stackItem[rescode];
453 } 460 }
454 461
455 public String toString() { 462 public String toString() {
456 return "static(" + member + ")"; 463 return "static(" + member + ")";
464 }
465 }
466
467 /** An item representing a dynamic call site.
468 */
469 class DynamicItem extends StaticItem {
470 DynamicItem(Symbol member) {
471 super(member);
472 }
473
474 Item load() {
475 assert false;
476 return null;
477 }
478
479 void store() {
480 assert false;
481 }
482
483 Item invoke() {
484 // assert target.hasNativeInvokeDynamic();
485 MethodType mtype = (MethodType)member.erasure(types);
486 int rescode = Code.typecode(mtype.restype);
487 code.emitInvokedynamic(pool.put(member), mtype);
488 return stackItem[rescode];
489 }
490
491 public String toString() {
492 return "dynamic(" + member + ")";
457 } 493 }
458 } 494 }
459 495
460 /** An item representing an instance variable or method. 496 /** An item representing an instance variable or method.
461 */ 497 */

mercurial