From 260f0f9c48be66d31382065fb678273bf4469738 Mon Sep 17 00:00:00 2001 From: Eugene Zhuravlev Date: Thu, 16 Feb 2012 19:41:59 +0100 Subject: [PATCH 01/26] optimized file manager for javac 1.7 --- .../jetbrains/jps/javac/JavacFileManager.java | 9 ++ .../jps/javac/OptimizedFileManager17.java | 149 ++++++++++++++++++ .../jps/server/ClasspathBootstrap.java | 24 ++- jps/lib/optimizedFileManager.jar | Bin 4525 -> 7940 bytes 4 files changed, 181 insertions(+), 1 deletion(-) create mode 100644 jps/jps-builders/src/org/jetbrains/jps/javac/OptimizedFileManager17.java diff --git a/jps/jps-builders/src/org/jetbrains/jps/javac/JavacFileManager.java b/jps/jps-builders/src/org/jetbrains/jps/javac/JavacFileManager.java index 73e238f9bdd7..19c920988311 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/javac/JavacFileManager.java +++ b/jps/jps-builders/src/org/jetbrains/jps/javac/JavacFileManager.java @@ -37,6 +37,15 @@ class JavacFileManager extends ForwardingJavaFileManager list(Location location, + String packageName, + Set kinds, + boolean recurse) throws IOException { + final Iterable result = super.list(location, packageName, kinds, recurse); + return result; + } + public boolean setOutputDirectories(final Map> outputDirToSrcRoots) { for (File outputDir : outputDirToSrcRoots.keySet()) { // this will validate output dirs diff --git a/jps/jps-builders/src/org/jetbrains/jps/javac/OptimizedFileManager17.java b/jps/jps-builders/src/org/jetbrains/jps/javac/OptimizedFileManager17.java new file mode 100644 index 000000000000..7e1eb9f5958b --- /dev/null +++ b/jps/jps-builders/src/org/jetbrains/jps/javac/OptimizedFileManager17.java @@ -0,0 +1,149 @@ +package org.jetbrains.jps.javac; + +import com.sun.tools.javac.file.*; +import com.sun.tools.javac.util.Context; +import com.sun.tools.javac.util.List; +import com.sun.tools.javac.util.ListBuffer; + +import javax.lang.model.SourceVersion; +import javax.tools.*; +import java.io.File; +import java.io.IOException; +import java.lang.reflect.Field; +import java.util.Arrays; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; + +/** + * WARNING: Loaded via reflection, do not delete + * + * @noinspection UnusedDeclaration + */ +class OptimizedFileManager17 extends com.sun.tools.javac.file.JavacFileManager { + private boolean myUseZipFileIndex; + private final Map myArchives; + private final Map myIsFile = new ConcurrentHashMap(); + + public OptimizedFileManager17() throws Throwable { + super(new Context(), true, null); + final Field archivesField = com.sun.tools.javac.file.JavacFileManager.class.getDeclaredField("archives"); + archivesField.setAccessible(true); + myArchives = (Map) archivesField.get(this); + } + + @Override + public Iterable list(Location location, String packageName, Set kinds, boolean recurse) throws IOException { + Iterable path = getLocation(location); + if (path == null) { + return List.nil(); + } + + RelativePath.RelativeDirectory subdirectory = new RelativePath.RelativeDirectory(packageName.replace('.', '/')); + + ListBuffer results = new ListBuffer(); + + for (File file : path) { + Archive archive = myArchives.get(file); + + final boolean isFile; + if (archive != null) { + isFile = true; + } + else { + isFile = isFile(file); + } + + if (isFile) { + // Not a directory; either a file or non-existant, create the archive + try { + if (archive == null) { + archive = openArchive(file); + } + listArchive(archive, subdirectory, kinds, recurse, results); + } + catch (IOException ex) { + log.error("error.reading.file", file, getMessage(ex)); + } + } + else { + listDirectory(file, subdirectory, kinds, recurse, results); + } + + } + return results.toList(); + } + + private static void listArchive(Archive archive, RelativePath.RelativeDirectory subdirectory, Set fileKinds, boolean recurse, ListBuffer resultList) { + // Get the files directly in the subdir + List files = archive.getFiles(subdirectory); + if (files != null) { + for (; !files.isEmpty(); files = files.tail) { + String file = files.head; + if (isValidFile(file, fileKinds)) { + resultList.append(archive.getFileObject(subdirectory, file)); + } + } + } + if (recurse) { + for (RelativePath.RelativeDirectory s: archive.getSubdirectories()) { + if (contains(subdirectory, s)) { + // Because the archive map is a flat list of directories, + // the enclosing loop will pick up all child subdirectories. + // Therefore, there is no need to recurse deeper. + listArchive(archive, s, fileKinds, false, resultList); + } + } + } + } + + private void listDirectory(File directory, RelativePath.RelativeDirectory subdirectory, Set fileKinds, boolean recurse, ListBuffer resultList) { + File d = subdirectory.getFile(directory); + + File[] files = d.listFiles(); + if (files == null) { + return; + } + + if (sortFiles != null) { + Arrays.sort(files, sortFiles); + } + + for (File f: files) { + String fileName = f.getName(); + if (f.isDirectory()) { + if (recurse && SourceVersion.isIdentifier(fileName)) { + listDirectory(directory, new RelativePath.RelativeDirectory(subdirectory, fileName), fileKinds, recurse, resultList); + } + } + else { + if (isValidFile(fileName, fileKinds)) { + //JavaFileObject fe = new RegularFileObject(this, fname, new File(d, fname)); + JavaFileObject fe = getRegularFile(f); + resultList.append(fe); + } + } + } + } + + private boolean isFile(File root) { + Boolean cachedIsFile = myIsFile.get(root); + if (cachedIsFile == null) { + cachedIsFile = root.isFile(); + myIsFile.put(root, cachedIsFile); + } + return cachedIsFile.booleanValue(); + } + + private static boolean contains(RelativePath.RelativeDirectory subdirectory, RelativePath.RelativeDirectory other) { + final String subdirPath = subdirectory.getPath(); + final String otherPath = other.getPath(); + return otherPath.length() > subdirPath.length() && otherPath.startsWith(subdirPath); + } + + private static boolean isValidFile(String name, Set fileKinds) { + JavaFileObject.Kind kind = getKind(name); + return fileKinds.contains(kind); + } + +} diff --git a/jps/jps-builders/src/org/jetbrains/jps/server/ClasspathBootstrap.java b/jps/jps-builders/src/org/jetbrains/jps/server/ClasspathBootstrap.java index 3d99d2fb30c2..65ba0c22b12d 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/server/ClasspathBootstrap.java +++ b/jps/jps-builders/src/org/jetbrains/jps/server/ClasspathBootstrap.java @@ -64,6 +64,24 @@ public class ClasspathBootstrap { } } + private static class OptimizedFileManager17ClassHolder { + static final String CLASS_NAME = "org.jetbrains.jps.javac.OptimizedFileManager17"; + static final Class managerClass; + static { + Class aClass = null; + try { + aClass = (Class)Class.forName(CLASS_NAME); + } + catch (Throwable e) { + aClass = null; + } + managerClass = aClass; + } + + private OptimizedFileManager17ClassHolder() { + } + } + private ClasspathBootstrap() { } @@ -150,7 +168,11 @@ public class ClasspathBootstrap { @Nullable public static Class getOptimizedFileManagerClass() { - return OptimizedFileManagerClassHolder.managerClass; + final Class aClass = OptimizedFileManagerClassHolder.managerClass; + if (aClass != null) { + return aClass; + } + return OptimizedFileManager17ClassHolder.managerClass; } public static File getResourcePath(Class aClass) { diff --git a/jps/lib/optimizedFileManager.jar b/jps/lib/optimizedFileManager.jar index 52b7a691c645f3835e039c464001d39a9d2949c4..dbdeba34d491a4484d55c326d31624886b734f1f 100644 GIT binary patch literal 7940 zcmb7pWmFv7x-G%o-GVy=_XzINXyeehyGw$*OK^8@yz$VuCb$Q8Cs>f&?7Po-`;K?_ zK4aXkM%A~f#+-Als`YEuR8@e3$A|f&K4hzY`0v5LF7Us*ql@Jm)qg}_{tIDa?gnx( zv379%4_Ms)g|%_|pLq5EZ+7Cp#oL&8n3(>*S&(7Si}^kreQuc<{k;@#8Wa(2W{8N_sS@__=bKQ1sb6qh9` z=z$o^OPF7OacwPhZIRu>^LMp^{O-DkU@|x#ht3?beW!%JNBW*^d@*w9BNcVfF=!z%9buS+y<1KL)kE#)7}3qD-2Al2Rr{$N#)c4;u<*8o+aTDh?|P zdI}JZu)MH?x!!_MY4u%`8X|*~S4sM!y_iEjUq;y(&Rystw~L;-Lyj?)I++DJ33ldN zcP}U)=LSN4DlXne(;umb-pyVlnmvGD=ULtJMzHu1_V3?|yF5?F*X;-y+1@imlsK2! zb*D~vx}4upkH^0jzsGrFeJ_U_H@aszvPZP^G%8KS6ylU<*k-<6K-V{x(?^7#d4aSD zzr)GoOWpI;JB%rDf-R{#Wk0$hAw9LsxmKUQ(Hi6tsDtFOPG{<&6Kt!8(#X7IdPYap zKI~|`KR0t3V2i{IyrIZ8f02pSmIg6JM%R z{XGdKi{9G@27q1CpSy4=hjggmm)6laS=1FiokVb9Kt^azsGsv>Wlo;VmYJLP!|CE za%$1iU1b9+r#`Q!U`@A^W?KItK9zyL;>RRxqhbpo#R#!$@$O5Kt7?ZEODchrPHNL^ zn_Uaj4oeqfqP8!1tBDX916NgZH2n`=Id+ zw@mv^vufh!iVAxWCLRf5+i4B@MU0SDIdD6N>EhsHfh-`5U3%dVqb4EUKL|2UK4osJ zGJowzwWe@AC6YsqzE?adVOU7(+A}0u#+u>HpT`z7eq)h@Rv2ks<5FGOKi&%u(O! zONU2K4fesXfqXy+iiB1vR2KNwW3nn{oGx=T<&4tX(ziujU{;(5wJP#KW4C=Wri`el z4L^TYUagC-x;Sxtse4Q0Wjys7DMEvQ1uy8dLSNWn`91`Vz*Aw^02b|~K#Wv_;F3oE$h*P#>Q+;O4j#&a#PtW$lwgXk!`bX7> z(4wW>0L+BuyF!zCV5`q;@~%A})yIW*f6femK+Y6oAlk5(*`xGh96(8AIY*^bEQiei zZhJYN0xFwYNL@qR*8w$hGQ=gU+#A^rG_0m# zuP=<_aVq7|!sV)!x40=3BVvu#bOTocl_~`Soa3rm+kwFgJsHYn(+b5(Md6eUAvw0A zgPZj^azwEpC8g?;=;i@oVdVh_#bft&p!VLa(8qI2+nx096HOfRc*nGC7xW)X^Z$^fPJ8b4&Ov{b4XboWqejfOi9X( zWINp(&pdn|aAY{au=@kI)OibBj)3^2M%^jLI<}}O`BNCp^~q~dR@T8wJB{XGItKVx zuEv}ljj`U|{p+HKQ5+-M6}SrRc11o;7z{Cj^f|QCi$G4_NA{uFq|(ZZN3~-C?i$`~ zwwc+5lfdY$<3C?7`X&o7=Jc$3KY(fL5(mvJf)e9!wH&5lPE03?kn)Bk7rCAqW zGmHkR{8wQ<3etLNesfDdj6tdgw&uH7v7&b!G6QSoxc79A0MT6Lx-R`DW zpO8WJ?kIVm6|73cmkHFze~u%R7=Xs{u^%E`?y%Q+?!IxR-$y&~I=utJ5dUelq>SaMDpvGL(ZiXmHUu zC7$ujE_BWOD`{iT)A9#H#N_eDRmAbeUN1E8PWRp-SnKSySUzN#C&;)-SUBkG>DM}` zNd1gZR(3v{l0ide3bCc;bocaYfPjd0(%Q6Dk=3qQ6G3m{q(?xCG39tDLOpgWFy?f+ zT=Fg9fDL&w^(X~SrJ58$C77?51Z%-^h@W#~D~f0>q7jK@5ia>Vnu*j87tQ?mqNR-m>}`(oR(MLvOCa;II-Rl9u31}K8w?lk;s3+WYfe8 z8kkOrag4b}1MQ(CotIYi4%Lv{grLeV%>zQ|0bwPPN8FMwLcAdF!X}zay+}6KQD+yVGD{fao0DQbBV5}EDnd6&`)+8DIm$pyZMfA)~&s2Mda-?yUmJBeSfNchC6a#m8#4y zW+U#>IhG+^waGm6t`@uK2H~G>wl%8_vm@!(3~Wl@4a3aFMk~x^>h*1#O8HL`mD~J6 zJ(0UKyb%J)>bK~o9LIcLzmzwe%v)Nyo|5iG!0IMRbGWC0s7G8s$$51N`FwYuT~1a!j7$?>#KX z^CIn?3G4%Swx8u{JL8(Thp5)tQV@kBS*(h6Nf>8d!MRn&bxQOk3e1zWfX!48f)#F4 z#@fwQAT2VtDYm|v=lJd5_$!RDvWo4mu8Sh6629b>60-D4JxoFDq{>+`Mmfr&QIN$+ zktpwju_9o2@N1mnM`2}O;rD(+=2GUjZ*Z7 zM__CW0@5#}S!er1&>lk%^LM}4>eMXbqE0>lJ&V~ojJc!(*a?i{Mr)P5bdeWIW0q@B z6kabNIVEuSa}=*ZMOv8E1(q(rAgEO5hLs5*W>1Tg5ptOE{6IbIN`Tg0DY z%r&)yPLM)+_FuJdacqXaXAm588k-$_;4_c2auZwLHmoMTjWeD|2AeJVV$3If*^1`A zVf7n><{o9%pCeYEhJ|P+RpVV_{`z?!*pJ4liA7Hy&Sg%n430OJ7s3UUPNoVv^gE+Y zx)(SH;OKMARHV>gO=ga|h8~@6)9vyRC^{^;_M%(_b-`*2Z?IX_$vItVgzr?;(xir1 zYqiO6MTb?%;AqB?I(>qKy?&A1!YB2-L?$6ko!dQ*%ePKF@T=u1(8Pioz5R|nPxj>} zmx|J&D_kauwc(`>{x)94yj&+^SW42^^8SuymBu?-vng=LV6_hg$Huxh)5OiVE@erA zgZk3EhXd9^-E1$ERLp=<09A)^^#`kfVz#SuoWBe>%X^%?ZLXUKpDa%_3egeAs)k(; z1Ya}e%OYCKqpEgXYwSMDkFHYVhCqnt;vL6&)hZ2cWVR4_2S|3_!cCGanAtb?Rarb+zk zJ$IZwW^u61QKh_XpH-8MX0J`OCcvuMs#&mZ^V3Yi2L0@O*WG%X=bE1Gs_*&lp>N$U zUm|IRkl`snrswyryDrC%-yaRHF3ttMV;Uz}eRYb(477E(YEy>Z2zR#ee~NVu4kNpE zPLAVXn+6lFxwPp(*L2IyokO zkW7Zx;)i47M>n~IL~A!uGWvEHAS|az7XUw$p5eDcOdoPF^}tR+m#v zq329VF9YQsYNPMyTkNZEw7;kIbrzWlb+T6Ulx_R_Q5n5YfyxNK8)U@YRgZki2%Fmd zK_tv_S(0+iisH|X)16r9&l-MCcXXEo#Uc&BC;rxAoRu=hi+W&> zRw@kE^36@f1(rH!yXKOd%C1~mbuAgvV_Vhh;aapq!SK99i3xx#S)j7gs$$7bi;jXr zm50%(nZ{LRWi)~g zFkr}k_m9qsOgrFpsUHtnKCf%R^YDrK#7LgOzELB`ucIa*Vlr`Hm1QfWm*q--ndm-} zPLgLY+~PN-=rdEpPoP)Cao8m3**xt^F{7+{drSFX*;01O@2gT(k#}!ftI&c_S_LQ7 zx}^kL5U?er<+>VGQe+d^_VdRBS9C~HWJ*}xFrP!&G-*J=l^PR-s$LxkNI%b1S*q?C z@xgw~Dxf}Hj7+Nx(6X(c){IRIU~0A=ORSWaSR&!sA4z9A<8wG2H@u7}$#^?yWJ`=$ z;xG{QS)m->*&jR5}Q1t zo%?{Sd;bi+vmZZ8ZNGa=sx`&LL|W5qI(@L0SO?iKX+RN+p6Z$+?v1rx&Rjmv{+T?p z{0?TShYRMQ8i3hKcE)@BBIcr}QL9nh_C6RPqd9#*dt>z@(`y&5 z5A!J`YO(o>+v~dC059SP?vo82;eFRjh1BZ!pl^f;P$PJkuMSwOOOwUGCjgzBf*84E60kItWNpDP7CQn)L>Z- zRxbMC6pe4=Ng!cm6tsg|g;5R_PS!67fHC7EZ7QkcF!e?zcR?H z!EV2BRA-7QaPk*&P!6Ii(WB_5cWn|dwW|-$wW}!&B)Pm51a}5D_ z-eDKWbqs!C7ibgM4>Y~H--dL!7V)!4#EHaW6B*C}`H|v*?%^Z|VL)koIRY8v>NE+9 z3qk&VS+1xuFtv0vNFoMjOf4Z--|4j5V)Ez?-x*G1(@uhoQ5+F-ka|3m4WpcTFlu*c zQYS9ijX^kVsb4VTpe04h|8g5Klv)d$)doZ_QO!0;B1kwy0wMqyM`#Y%{QePE7*B-f zBXEn58yMO)i(M66Pfb%ei)}7AjlEkaj)#Y#{|OBPhrpH?q{KCXZ5ug~30%NFj=aGD zFjt}j*rWKsfz+iD7$pV*-2EC{u{WR(IQgS$5u{)+b!oH`I=I4bO>w%MAd3uy2C$6q z;R+TVPz;Rxc#bQMcI&*_J|}lp(9R5|ZxsAIDTk+bS^S!2{~$Ur2Zs^q_7avAlhgo~ zEc7^RSjIb>c@!l~s(Q{WdJ^3&uae=-3}Z}t>NJF1%g2jR&>bA|{ z1oq|oY}By!(59gY;yE(B+KNcC4mkp>rg9gV?i}atRkD!)$c*m9EPA_^;n%eyiLMw- z%T~>XHTfU6vwRA#zd#QtMg(&0aDdj>!Sp3b!fP5T+O7g)zJkZkf>rKX#4(&I#+u{s zeL691&oE?69Y1H}1kA6PXBZq*)&-vsK?lHZC$m3VZhyeGm(6jT&s(}Gi%FC6i5;G7 zMyJr{BAzQgTZqsGC)MP!pSoB-n5|^;o8QLdQ)2iF`08bPN(yps*aijBGgy_xyr7qs zz_}hG3Q?_m>?4_8!2+t#Q+OKSHQq1xE};Ju{zyCQ+nQ(w$ZJxk7}EcsX6RC|y1U8d zTx#JH<*3(jxMyqDQdR1UL`*S>dr@hA;@PMp_b?%4z5UtovV0|fq9r?}(km>d(jEk7 zF0j%-rrVtdr|Ili?{Qv_%hd|ay^J5kZ)Ps$Z>&zk%*C!fAN~AeO*OD=f@hmze%wN5 ziFP4=HF>I*5O9kJ@01Gu_;8qd`Sx4^OQ})f$A4;*V5?(;jSNtLJOkbR~%5 zC0kL8IlbT8b;W!iyO=0%CzZsStous)jD!7H+@$2qjxWqIh|Tqsoheh@kQdCf9Euao z*)aVPO&T!zEme1TAr=%k`lK2lFo^87^#O%_Oo2bG3O!{#B1ko#tU$CozGhb9=QFYw zBN7n}kQ9}z?%${|*H21hkjqWDV`$T6Z?TR+08M2v+so_xOpqiXyz1Qx@! zliHL^%l@Fx1`W_}K=MP1N#}kjm%0XRyRO8rV_TM7BFn3!q}-Eh=+dnZ{sjmY{#eRX z@^(~6xj48mT_WpLQi0EedkdJ?QN@KtW^809E6i8SOE6?Y%0cT#zqU4E&wZW!V7*b_X$7x%+bHL-9ecijuMns&%b9wk!GNTFx~J>T$USyGW+twmhqL}>h!c)1#2I_)1$Xl-KKIhW1|f1jS}$jZgS z;*a*r3pAjt@!7+)Fh8dV)kLV@7r#bBI&HJO8m*a1;Mva{oSt=ZKmXSEYe8#5Mk7C7lUnG zh)af%O@%(|uhTkmDttF$id07GU8eXT%rf=P;x;6T06M?7XCoU^jNQ@AmT%?({Yhse z7{BV6W}V#n-Dd(!e5g$yP472rxJ@5dnANHGRhTS~YMD>xLgf@yPG5P|nZ8uJzmG{^ z2pj;46p#3I`MdP;=)9Sah9fc#R}BEatKcR^^)Shimw3nE3AzC}GFF;3)U1pMYnG0F z7zT#im~}sxb(@4H01C2&DmBh@dm5;A&Vs=!&xsicVy> z5wlXjScOH(BW5e<>p9nJIny~LjJ1fr9EoeVk7CRNWD>Bb1EA72d*gZatMQU<{yv27 zpJ-skf2Q<{Mgd9I_TG%)e;fUIg;dX$qu)$CcVko1Nk-;XZ|_Z1s$YRwtRqkJdI&Bx zn>M4^G@}$xwxK}aepH{8>44lkR6Lh%e@k?S8FEb>FaRHWBlX!x#4JQOrOL2^AifCW zcua7-{Gd;I_enp*oaH`y8D*ja+fXHsGc>6n>ZnNWgqU8kLP0u%0<~S%JTZQ57o>9^ zLDEMbA}XH^yYn2TX~p&OJz_2FDU;4MCDYG`PW}+2SoQg~d_>~4=bAevbKYW6ccCYV z_1H&*(M@s9x-n-2aESuOWSi}^@6-kB14Ld-+Z3$=?k>h0+3pO>*!L-h;-0NA*~7AT z0$R6dT9g3Hl5)$5jeY-0RpAvZKFmKSr@!si@527G{VPZPXT~2%>Yw!o<9Cqx-;Dp6 ztNt_hk7V`F`h%NP_yK>*|99^CZ-%D>b9x0_W}KtTLM1@ZUM@(Kn#cLwy8E7W_u2co=Z|~VehjpUNf-%!4wXEJ%CCn%ZzMm^%>yBB z@UIM-KN%={FIx{AM_11?T=l=G(f^H$azD%0`3s-*ANeR7ZyUS+b0H@H{#f-X`RUuJ zAEo&65)erJ$0~hyFGm+gKl|G-M`wFo8&?~Iy$9IN*~Zhe!(6?J0ZO+Keo+kF*r@I9 zyuR5TIo}&WMfTi)RLIq!laPiJ_w%h!@+Q9u5n(7(GTfoSzv0{6gS3h1 ztuZ&A9GE-x``h%$S~$Q(5?KnDMS60xt4splXQp{$>k_eBXms>X2lYhEZ{=8{;! z!AV!*`e`}5IzGSljW$l*iZ=Mb_u3LcI=zDA(zIK#)=x*w%% zczn3IcX~z=gM2+zx7m7xR0AK2w=CycTQTO))|gp@@d6@4DRr~tN5*p3*{0WvHdobl zIq6{4O{<>resjY6VjF16-4xV7&DComT-1B@4t0PJ-JbV|(jTE^w{4;Ws zwxZt0nbcp}F5U?1Fk4fy@$u^!^0*qZ20M;h$1K#`+~pS)Wq)XLtFKznsS?$uw&v|D zf3W*P@%{t}p?D7o_KAaK!se+<#Njntuv~#}&)fvCvI7qR^7P2At zGMNu+`we$=-_p$kSwbV|m$V_lDy>BLCQG1j@{1Qg1@&kjLLfe&D$C8?8dE4qB6(T1 z77%&o7~MZK8bI7RVLh@>Of0|#qtL&kvViKEN=wjG7eC1Yo(Q$xRv{zH+|Y5&cyMaX zRmW{A3eQ8}6t`hK&lo8B7^)S!y7rbrcM2V-Zu5r{L5?%#>8>b_QL9X>m!uc-&)8N} znHFcRELW8xm?5AoARw9L+qJj(;ARYAqG#%cTAr!VxyMCUX2pia)~A7@*tVGbZcSe~ z6e(vn!DD(z*1|6IT{A80yq-g089c!jVyIAWwLFNAumyD%_}BVRi5GvUhf}GXMi|Sg zo2v7TiobhvI9Z^F+EJ_U6bwA+;m@+g$<*=~*M&&+_vm!t7K5&5q-dly2M5hdCm;t* zWKfbJB~?tBIeb~z5>0lg`N_yq;dK}W+~B*pJEYc7w3Ov(5139hw4u;&NN~y?M`Zc! z>n}+hPR(wk76Au)K+#dB0HM(R(*+eN{q~^ss7l;Y$T>b zwh}dv`FBvWI=oPUJ_-C(7UEHz>~xSC#OHno7rfzqFT=TeXQ`|5(1y)QR{3h4 zSpyIXkEvPZteLG(`4$<4JU(A}ODq z8wcf1GY;f+Mke8nFb+sC8!{UyTW)}iFncN5bv-xw>Ww;MWGoG*Rce%RHlJJwrPGjS z(^2MAUds!63zo*8sW`W7jaD9k0SzKvsy^y{NG0+M81A+Wf#!-@y=(nj?~PY5A1LqR z)rUo{m*ZKEpZgvjRx&Xj)A6jv>?5 zw|S{6=Cq6TSqsaulD93Bu09EL*TqaQjYOzr9(>O7$8pdI`0>9l3=XBGOrF(qFV3NK z1tq-izJ3pSUf)DBF5ACjvHA$ClPCwdwush|wT5YT`Bp3#U!Ly96Ezn*b z4XFFzw?4j`E}M{83){QkaWNz5nsf8zCF8Z1V8Kb&%fnw`*krS3E~D=yTmpz+O(>5} z%vg%%&U|)W%j7E3Az$CEOYvlRfn}-K)E(@E%3C#niY260sizx zE`mO527wEjOVUY`Z{L_tOR(C{xV*F$o&aB!UC)hG4nmL*q{#d2Te_*5`Hj9DHZEq{ z>oeQzU-IFJXhv)#H=<`tHm^NIG;D$8>`j{+mI}7p+04y_QVCZlJWaGT1P4|XVh}O# z1)Oq_?@At+eEQ~3rLe5&U?-)LQ z&Fb}XbV_cjQDN;Z?;`g`w?;sq*@<7AV7h{@hk4ESr0-3ao(*z&B?%PQp6Y2G&tZah zR!9j|G*q}bg_)Ab^pGpGRc>^X=vPj(&^RgD-o$X?d&FqZkk)E{JYeQ(3*HrqXt!>E zNl{9!HfPQ3{p|T;br5r`{kgzLJ-Qzg_`b@%QOt(XZ)%2!QGQU%27a@X!<6C;SQLlD zIff;PtVM}%VmsN4S~yM-d_+l6%SkUXQUuv)rr&WTSMFvplx3ckqN;oLp5dc5B*_(9 zTVR(F5f^8;j0#7zWM(eAAOR?}1;I{1uEU5W(Y3CL5GDYM=qyT8OJ{2{){W6k(YPxy z59Mg~di5jdo*C|Hv!7PIbJd7ffb$CtCv`E7;UzkreMdrDD_=$dwwlP* z7!nY3pUj@fIawEzjyE2MwYvl6uy!+7Uxdveuh1G^N{_P>$PMFj%?<#(;}VUc^aXj* z=978i8!(Y<*qDsSj`W9x=E7fmqxfoy0@USlK0AjH5ul*BOO!ca!*UIN4%|g{`uwhr zN{YSIb1BSTuLP2^srT>fUU|R3C@13lj87S!ZO2SVWp_Sn0*fYJKIpLQSAAHU=9}vx zYp0~)!e32Cbx0!MuDEE5)-PFak!QwebB`!Q|q*r{n(<5RjSs@WS=>L>L46$ z=X_&Tz$cKG0pp$FV=TycGMTbc^#x!K(}Ar8&VQaQGJ)09H5cUriGPkp$pHj=_Naop z*K8#Sy#(T?d-gU#5!|;u#2@v4r600kG$%)mTtrWgql0%a#a{_cN%w08))LclLg>Wi zXUsy7y~1~CaEFQ`0?*bA%bWQQ6V%b%)oO1f`6)PH0}77{`=Vv0pbO`* zGt%AP1%)T89eJLF!?cio1Q4#t8?D=B?(17g))o9kbKv-|0ftGG#1|ZFsbk;Y$8M@9 zKLu0;fiwV**U^StszuVA!l-(|mJA8XCdsfSJIM?KaEIC(2l^OWsS3%ZgOn}tD?9YH zrdJ$zb>s!Av%usiNH-xpUa%POk^H!qidjJ1BGE*OBrgwCstq@sjEm2CTAYW@tHv-& z?VvuLYrx7IpL_qg?ozu^c4er6Pl#$hZ#jIP7SuZP=Db0qI zuyP%#gsFOl9!kd3Df!MjN#i6tMQ6}%SSwOOBqsNnojUriePRtVlk)W|W?zu0Ano0B zyh~lbYP5xdVVC6X$IuikgVxm5QU%5c_`A_!31X(foPm~l=*2Hz-@LOtcI>GNuCjO_ ztaHd~q4Pl;8Xt2RS6fb@@6!f}yCxrBr89ddiR;?#WMRk1OkCLE)d98VcR7&UT5!`}hSUvUC6 zH@YBcqS@Q}J@{eESAFs?=5Lj9noC4(%(VJay`}0RRr-#dB~>-gr$!1nsZA2xR>;h$ zwsRQXBtXe8QP(BEw(YbyVrs^4@nyP~$*e(r9NMYyf!HL!060Jk`a; z+MBJZ7d5>9fjeYqw}lQ{WX0_RK@uG(wI61Sw}$@J;D& zGED$(-C49ZU3@Xf|3|$2Iq3d?U-6uhfalkYkbsq7BLJJ}Io?nB8y$`k zf6f0(m4@J~>W>WlOZERF{aO8!+&}bx<8Pm{`hO4pXZ7{|rvI}IaMmNNfGGdxH~hxm zUS~c2-Yhul5%`ZDf3yzHI&JVwmjBwVKe2J} Date: Thu, 16 Feb 2012 20:46:23 +0100 Subject: [PATCH 02/26] cosmetics --- .../src/org/jetbrains/jps/javac/JavacFileManager.java | 9 --------- 1 file changed, 9 deletions(-) diff --git a/jps/jps-builders/src/org/jetbrains/jps/javac/JavacFileManager.java b/jps/jps-builders/src/org/jetbrains/jps/javac/JavacFileManager.java index 19c920988311..73e238f9bdd7 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/javac/JavacFileManager.java +++ b/jps/jps-builders/src/org/jetbrains/jps/javac/JavacFileManager.java @@ -37,15 +37,6 @@ class JavacFileManager extends ForwardingJavaFileManager list(Location location, - String packageName, - Set kinds, - boolean recurse) throws IOException { - final Iterable result = super.list(location, packageName, kinds, recurse); - return result; - } - public boolean setOutputDirectories(final Map> outputDirToSrcRoots) { for (File outputDir : outputDirToSrcRoots.keySet()) { // this will validate output dirs From 638d10cd7f0d59167d94f065425802fe85a6f6de Mon Sep 17 00:00:00 2001 From: Eugene Zhuravlev Date: Thu, 16 Feb 2012 21:39:37 +0100 Subject: [PATCH 03/26] exclude optimized file managers from compile --- .idea/compiler.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.idea/compiler.xml b/.idea/compiler.xml index e211f38930a2..5ee3618d9424 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -6,7 +6,8 @@