langtools/src/share/classes/com/sun/tools/javac/jvm/Items.java
changeset 14046 8ef5d5b19998
parent 8036 17b976649c61
child 14443 91c05eb19277
equal deleted inserted replaced
14045:c66c0a81c4ab 14046:8ef5d5b19998
     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      */