¤¿¤Þ¤Ë¤Ã¤¡£ / 2003-05-09
| Æü | ·î | ²Ð | ¿å | ÌÚ | ¶â | ÅÚ |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
2003-05-09 Fri
¢£ ¤Þ¤¿¤«¤è¡£ConstantPoolGen ¤ÎÉÔ¶ñ¹ç¡£
ClassGen ¤«¤é getConstantPool ¤Ç¼è¤ê½Ð¤·¤¿ ConstantPoolGen ¤ËÂФ·¤Æ
addUtf8 ¤È¤«¡¢addClass ¤È¤«¡¢addString ¤È¤«¡¢addNameAndType ¤È¤«
¤·¤¿¸å¤Ë ClassGen ¤Î getJavaClass ¤ÇºîÀ®¤·¤¿ JavaClass ¤Ï
addUtf8 ¤Ê¤É¤ÇÄɲä·¤¿ constant_pool ¤Î¥¨¥ó¥È¥ê¤¬²Ã¤¨¤é¤ì¤Æ¤¤¤Ê¤¤¡£
Á´¤¯¡¢¤É¤ó¤Ê¼ÂÁõ¤·¤Æ¤ó¤À¤è¡£
¤Ç¡¢²ò·èºö¡£
ConstantPoolGen ¤Î getFinalConstantPool ¤Ç¼èÆÀ¤·¤¿ ConstantPool ¤Ç
ConstantPoolGen ¤òºî¤êľ¤·¡¢ClassGen ¤Î setConstantPool ¤Ë
ºî¤Ã¤¿ ConstantPoolGen ¤òÅϤ¹¡£
¢£ ClassGen ¥¯¥é¥¹¤Ë¤Ê¤¼¡¤setInterfaceNames ¥á¥½¥Ã¥É¤¬¤Ê¤¤!
getInterface ¤·¤¿»þ¤Ë¾¡¼ê¤Ë constant_pool ¤Ë¥¨¥ó¥È¥ê¤ò²Ã¤¨¤ë¤Ê!
Èù̯¤ËáÚ¤¤¤È¤³¤í¤ËÆÏ¤«¤Ê¤¤¤Ê¡¤BCEL¡¥
²ò·èºö¡£addInterface, removeInterface ¤Ï ClassGen#getJavaClass ¤·¤¿»þ¤Ë
½é¤á¤Æ constant_pool ¤Ë¥¨¥ó¥È¥ê¤ò²Ã¤¨¤ë¤Î¤Ç¡¢Ì¾¾Î¤òÊѹ¹¤¹¤ë¾ì¹ç¤Ï
removeInterface ¤·¤Æ¤«¤é addInterface ¤¹¤ë¡£
¤½¤ó¤Ç¤â¤Ã¤Æ¡¢ºòÆü¤Î BCEL ¤Î²ò·èºö¡£
°Ê²¼¤Î¥¯¥é¥¹¤òºîÀ®¤·¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¼Â¹Ô»þ¤Ë
Repository.setRepository(new RepositoryWrapper(Repository.getRepository()));
¤È¤¹¤ë¡£
package com.oikaze.tama.dq;
import org.apache.bcel.classfile.JavaClass;
import org.apache.bcel.util.Repository;
public class RepositoryWrapper implements Repository{
private Repository repository;
public RepositoryWrapper(Repository repository){
this.repository = repository;
}
public void storeClass(JavaClass javaClass){
repository.storeClass(javaClass);
javaClass.setRepository(this);
}
public void removeClass(JavaClass javaClass){
repository.removeClass(javaClass);
}
public JavaClass findClass(String className){
return repository.findClass(className);
}
public JavaClass loadClass(String className) throws ClassNotFoundException{
JavaClass javaClass = findClass(className);
if(javaClass == null){
javaClass = repository.loadClass(className);
}
return javaClass;
}
public JavaClass loadClass(Class clazz) throws ClassNotFoundException{
JavaClass javaClass = findClass(clazz.getName());
if(javaClass == null){
javaClass = repository.loadClass(clazz);
}
return javaClass;
}
public void clear(){
repository.clear();
}
}
¢£ sandmark
<http://cgi.cs.arizona.edu/~sandmark/sandmark.html>
¥½¡¼¥¹¤ò¥À¥¦¥ó¥í¡¼¥É¤·¤¿¡¥
¥³¥ó¥Ñ¥¤¥ë¤·¤è¤¦¤È¤·¤¿¡¥
de.fub.bytecode.generic ¥Ñ¥Ã¥±¡¼¥¸¤¬¤ß¤Ä¤«¤é¤ó!
¤Ã¤ÆÅܤé¤ì¤¿¡¥¤Á¤ç¤Ã¤ÈÂÔ¤Æ! de.fub.bytecode ¥Ñ¥Ã¥±¡¼¥¸¤Ï
BCEL ¤¬ jakarta ¥×¥í¥¸¥§¥¯¥È¤Ë¤Ê¤ëÁ°¤Î¤â¤Î¤À¤¾!
»ÅÊý¤Ê¤¤¤Î¤Ç¡¤
for i in $(find sandmark -name '*.java') ; do \
(sed 's/de.fub.bytecode/org.apache.bcel/g' $i > aaa ; mv aaa $i) ; done
¤·¤Æ¤«¤é¥³¥ó¥Ñ¥¤¥ë¡¥¤·¤«¤â¥³¥ó¥Ñ¥¤¥ë¤â Make »È¤Ã¤Æ¤ë¤·¡¥
Ant »È¤¨¡¤Ant!!
¤Ç¡¢watermark ¤òÆþ¤ì¤¿¥¯¥é¥¹¥Õ¥¡¥¤¥ë¤ò¥¯¥é¥Ã¥¯¤·¤Æ¤ß¤ë¡£
¤É¤¦¤â¡¢°ì¤Ä¤Î jar ¥Õ¥¡¥¤¥ë¤ÎÃæ¤Î°ì¤Ä¤Î¥¯¥é¥¹¥Õ¥¡¥¤¥ë¤Ë¤·¤«Æþ¤ì¤Ê¤¤¤ß¤¿¤¤¡£
1 ¤Ä¤Î jar ¥Õ¥¡¥¤¥ë¤·¤«»î¤·¤Æ¤Ê¤¤¤«¤é³Î¼Â¤Ç¤Ï¤Ê¤¤¤¬¡£
¥Ð¥¤¥È¥³¡¼¥É¤ò¤Á¤é¤Ã¤È¸«¤¿¤À¤±¤À¤¬¡¢return ¤Î¸å¤Ë¿§¡¹¤È¥³¡¼¥É¤òËä¤á¹þ¤ó¤Ç¤¤¤ë¡£
¤·¤«¤âÆþ¤ì¤¿¤â¤Î¤¬ final ¥¯¥é¥¹¤Ç¤¢¤ë java.lang.Math ¤ò new ¤·¤Æ¤¤¤¿¤ê¡¢
abstract ¥¯¥é¥¹¤Ç¤¢¤ë Number ¤ò new ¤·¤Æ¤¤¤¿¤ê¤·¤Æ¤¤¤ë¡£
¤¦¡¼¤ó¡¢·ë¹½´Êñ¤Ë¼è¤ê³°¤»¤½¤¦¡£
¤È¤Ï¸À¤¨¡¢¤¤¤¯¤Ä¤«¤¢¤Ã¤¿ watermark ¤Î¥¢¥ë¥´¥ê¥º¥à¤ÎÆâ°ì¤Ä¤·¤«¸«¤Æ¤Ê¤¤¤Î¤Ç¡¢
¾¤Ë¤Ï¤â¤Ã¤È¤ï¤«¤ê¤Ë¤¯¤¤ watermark ¤ÎÆþ¤ìÊý¤¬¤¢¤ë¤«¤â¤·¤ì¤Ê¤¤¡£
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12
2002 : 01 02 03 04 05 06 07 08 09 10 11 12
2001 : 01 02 03 04 05 06 07 08 09 10 11 12
ºÇ½ª¹¹¿·»þ´Ö: 2008-08-22 18:52





