[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [aspectj-users] OutOfMemory error in aspectj
|
Hi Andy,
I finally nailed the bug. The reason I was getting an OOM even though
I increased the memory was because I am using ajc script from the
command line which invokes the jvm with 64M. So, the option I give the
ajc doesn't really increase the memory of the JVM.
This bug went unnoticed for these reasons:
1) ajc was a script. I think it was a bad idea for a script to set the
maximum heap space. I think it should just leave the default JVM
value.
2) org.aspectj.tools.ajc.Main should not take a -Xmx option. It
shouldn't because it doesn't affect the heap space. If the user
provides it , ajc should exit with the message saying that this is an
incorrect option.
3) The log file generated by ajc shows the -X option provided by user
and not the heap space the JVM is using (64M in this case).
---- Command Line ---
-Xmx4096m
This is incorrect because on a 32 bit machine a process can't have
that much memory. Also, it was a dummy value which is not being used.
All these things gave me a false impression that I was running out of
4G of memory when I was not.
I think the simplest fix is to fail when a user provides -X option. I
just wasted 2 weeks of my life chasing a bug that didn't exist. Please
fix this. I can send a patch if you want.
-S-
On Sat, Mar 28, 2009 at 5:36 PM, Andy Clement <andrew.clement@xxxxxxxxx> wrote:
> Hi,
>
>> pointcut p1() : x
>> pointcut p2(): y
>> after(): p1() || p2() {
>> z
>> }
>> instead of
>> pointcut p1(): x
>>after (): p1() {
>> z
>>}
>>pointcut p2():y
>>after(): p2() {
>>z
>>}
>
> No - I meant pointcuts on their own are free - there is no cost until you
> attach advice. So you don't have to eliminate any pointcuts you aren't
> using yet in order to try and reduce memory consumption.
>
> >From the body of the method it has included in your trace, there certainly
> are a few advised join points aren't there.
>
> However, it still looks a bit like it is crashing whilst crashing - can you
> reduce it further? I'm expecting to see an error that is nothing to do with
> memory.
>
> The best way forward for you might to weave whatever it is in pieces rather
> than all in one go. Can you do some subset of the classes then another
> bunch of them? I imagine there are interdependencies but as long as the
> types are accessible on the classpath, they will be found.
>
> Andy.
>
>
> 2009/3/28 100ji <itz100ji@xxxxxxxxx>
>>
>> Hi Andy,
>>
>> Thanks for the response. This is a similar error, but in the weaver code
>> (with half the join points and advice). I hope this helps a bit more.
>>
>> Also from what you are saying, does it mean that I am less likely to run
>> over the limits if I implement my aspect like this
>>
>> pointcut p1() : x
>>
>> pointcut p2(): y
>>
>> after(): p1() || p2() {
>> z
>> }
>>
>> instead of
>>
>> pointcut p1(): x
>>
>> after (): p1() {
>> z
>> }
>>
>> pointcut p2():y
>>
>> after(): p2() {
>> z
>> }
>>
>> TIA,
>> -S-
>> ******************************
>> ************************************* log file
>> *****************************************************************
>>
>> ---- AspectJ Properties ---
>> AspectJ Compiler 1.6.3 built on Tuesday Dec 23, 2008 at 17:12:30 GMT
>> ---- Dump Properties ---
>> Dump file: ajcore.20090328.133623.913.txt
>> Dump reason: abort
>> Dump on exception: true
>> Dump at exit condition: abort
>> ---- System Properties ---
>> java.runtime.name=Java(TM) SE Runtime Environment
>> sun.boot.library.path=/usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/i386
>> java.vm.version=11.2-b01
>> java.vm.vendor=Sun Microsystems Inc.
>> java.vendor.url=http://java.sun.com/
>> path.separator=:
>> java.vm.name=Java HotSpot(TM) Server VM
>> file.encoding.pkg=sun.io
>> sun.java.launcher=SUN_STANDARD
>> user.country=US
>> sun.os.patch.level=unknown
>> java.vm.specification.name=Java Virtual Machine Specification
>> user.dir=/home/suman/exercise/steve_rnr/ytrace/ytrace
>> java.runtime.version=1.6.0_12-b04
>> java.awt.graphicsenv=sun.awt.X11GraphicsEnvironment
>> java.endorsed.dirs=/usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/endorsed
>> os.arch=i386
>> java.io.tmpdir=/tmp
>> line.separator=
>>
>> java.vm.specification.vendor=Sun Microsystems Inc.
>> os.name=Linux
>> sun.jnu.encoding=ANSI_X3.4-1968
>>
>> java.library.path=/usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/i386/server:/usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/i386:/usr/lib/jvm/java-6-sun-1.6.0.12/jre/../lib/i386:/u/suman/installs/lib:/usr/java/packages/lib/i386:/lib:/usr/lib
>> java.specification.name=Java Platform API Specification
>> java.class.version=50.0
>> sun.management.compiler=HotSpot Tiered Compilers
>> os.version=2.6.26-1-686
>> user.home=/home/suman
>> user.timezone=America/New_York
>> java.awt.printerjob=sun.print.PSPrinterJob
>> file.encoding=ANSI_X3.4-1968
>> java.specification.version=1.6
>>
>> java.class.path=/home/suman/installs/aspectj1.6/lib/aspectjtools.jar:/usr/lib/jvm/java-6-sun/lib/tools.jar:/u/suman/installs/aspectj1.6/lib/:/u/suman/installs/lib/java/:.
>> user.name=suman
>> java.vm.specification.version=1.0
>> java.home=/usr/lib/jvm/java-6-sun-1.6.0.12/jre
>> sun.arch.data.model=32
>> user.language=en
>> java.specification.vendor=Sun Microsystems Inc.
>> java.vm.info=mixed mode
>> java.version=1.6.0_12
>>
>> java.ext.dirs=/usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/ext:/usr/java/packages/lib/ext
>>
>> sun.boot.class.path=/usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/resources.jar:/usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/rt.jar:/usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/sunrsasign.jar:/usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/jsse.jar:/usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/jce.jar:/usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/charsets.jar:/usr/lib/jvm/java-6-sun-1.6.0.12/jre/classes
>> java.vendor=Sun Microsystems Inc.
>> file.separator=/
>> java.vendor.url.bug=http://java.sun.com/cgi-bin/bugreport.cgi
>> sun.io.unicode.encoding=UnicodeLittle
>> sun.cpu.endian=little
>> sun.cpu.isalist=
>> ---- Command Line ---
>> -Xmx4096m
>> -1.6
>> -classpath
>>
>> /home/suman/exercise/steve_rnr/ytrace/ytrace_examples/crawler/javasrc/edu/brown/cs/cs032/crawler/ytrace//analysis/build/aspects:/home/suman/exercise/steve_rnr/ytrace/ytrace/bin:/u/suman/installs/libs/java/jyaml-1.3.jar:/u/suman/installs/libs/java/log4j-1.2.15.jar:/u/suman/installs/aspectj1.6//lib/aspectjrt.jar:/home/suman/exercise/steve_rnr/ytrace/ytrace/bin:/u/suman/installs/libs/java/bcel-5.2.jar:/home/suman/exercise/steve_rnr/ytrace/ytrace_examples/crawler/lib/Tidy.jar:.
>> -aspectpath
>>
>> /home/suman/exercise/steve_rnr/ytrace/ytrace_examples/crawler/javasrc/edu/brown/cs/cs032/crawler/ytrace//analysis/build/aspects
>> -inpath
>> /home/suman/exercise/steve_rnr/ytrace/ytrace_examples/crawler/java/
>> -d
>>
>> /home/suman/exercise/steve_rnr/ytrace/ytrace_examples/crawler/javasrc/edu/brown/cs/cs032/crawler/ytrace//analysis/build/shared_bins
>> ---- Full Classpath ---
>> /usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/resources.jar(1140700 bytes)
>> /usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/rt.jar(51106468 bytes)
>> /usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/sunrsasign.jar(missing)
>> /usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/jsse.jar(618621 bytes)
>> /usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/jce.jar(88256 bytes)
>> /usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/charsets.jar(6737599 bytes)
>> /usr/lib/jvm/java-6-sun-1.6.0.12/jre/classes(missing)
>> /home/suman/exercise/steve_rnr/ytrace/ytrace_examples/crawler/java(1
>> entries)
>>
>> /home/suman/exercise/steve_rnr/ytrace/ytrace_examples/crawler/javasrc/edu/brown/cs/cs032/crawler/ytrace/analysis/build/aspects(3
>> entries)
>> /usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/ext/localedata.jar(841140 bytes)
>> /usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/ext/sunjce_provider.jar(170239
>> bytes)
>> /usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/ext/sunpkcs11.jar(226069 bytes)
>> /usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/ext/dnsns.jar(8239 bytes)
>>
>> /home/suman/exercise/steve_rnr/ytrace/ytrace_examples/crawler/javasrc/edu/brown/cs/cs032/crawler/ytrace/analysis/build/aspects(3
>> entries)
>> /home/suman/exercise/steve_rnr/ytrace/ytrace/bin(1 entries)
>> /home/suman/installs/libs/java/jyaml-1.3.jar(59324 bytes)
>> /home/suman/installs/libs/java/log4j-1.2.15.jar(391834 bytes)
>> /home/suman/installs/aspectj1.6/lib/aspectjrt.jar(115346 bytes)
>> /home/suman/exercise/steve_rnr/ytrace/ytrace/bin(1 entries)
>> /home/suman/installs/libs/java/bcel-5.2.jar(533339 bytes)
>>
>> /home/suman/exercise/steve_rnr/ytrace/ytrace_examples/crawler/lib/Tidy.jar(138902
>> bytes)
>> /home/suman/exercise/steve_rnr/ytrace/ytrace(10 entries)
>> ---- Compiler Messages ---
>> warning at /SharedBinsAspect.aj:216::0 does not match because declaring
>> type is java.util.Set, if match desired use target(java.util.HashSet)
>> [Xlint:unmatchedSuperTypeInCall]
>> see also: edu/brown/cs/cs032/crawler/crawl/CrawlTidyParser.java:76::0
>> warning at /SharedBinsAspect.aj:216::0 does not match because declaring
>> type is java.util.Set, if match desired use target(java.util.HashSet)
>> [Xlint:unmatchedSuperTypeInCall]
>> see also: edu/brown/cs/cs032/crawler/crawl/CrawlTidyParser.java:77::0
>> warning at /SharedBinsAspect.aj:216::0 does not match because declaring
>> type is java.util.Set, if match desired use target(java.util.HashSet)
>> [Xlint:unmatchedSuperTypeInCall]
>> see also: edu/brown/cs/cs032/crawler/crawl/CrawlTidyParser.java:78::0
>> warning at /SharedBinsAspect.aj:216::0 does not match because declaring
>> type is java.util.Set, if match desired use target(java.util.HashSet)
>> [Xlint:unmatchedSuperTypeInCall]
>> see also: edu/brown/cs/cs032/crawler/crawl/CrawlTidyParser.java:79::0
>> warning at /SharedBinsAspect.aj:216::0 does not match because declaring
>> type is java.util.Set, if match desired use target(java.util.HashSet)
>> [Xlint:unmatchedSuperTypeInCall]
>> see also: edu/brown/cs/cs032/crawler/crawl/CrawlTidyParser.java:80::0
>> warning at /SharedBinsAspect.aj:216::0 does not match because declaring
>> type is java.util.Set, if match desired use target(java.util.HashSet)
>> [Xlint:unmatchedSuperTypeInCall]
>> see also: edu/brown/cs/cs032/crawler/crawl/CrawlTidyParser.java:81::0
>> warning at /SharedBinsAspect.aj:216::0 does not match because declaring
>> type is java.util.Set, if match desired use target(java.util.HashSet)
>> [Xlint:unmatchedSuperTypeInCall]
>> see also: edu/brown/cs/cs032/crawler/crawl/CrawlTidyParser.java:82::0
>> warning at /SharedBinsAspect.aj:216::0 does not match because declaring
>> type is java.util.Set, if match desired use target(java.util.HashSet)
>> [Xlint:unmatchedSuperTypeInCall]
>> see also: edu/brown/cs/cs032/crawler/crawl/CrawlTidyParser.java:83::0
>> warning at /SharedBinsAspect.aj:216::0 does not match because declaring
>> type is java.util.Set, if match desired use target(java.util.HashSet)
>> [Xlint:unmatchedSuperTypeInCall]
>> see also: edu/brown/cs/cs032/crawler/crawl/CrawlTidyParser.java:84::0
>> warning at /SharedBinsAspect.aj:216::0 does not match because declaring
>> type is java.util.Set, if match desired use target(java.util.HashSet)
>> [Xlint:unmatchedSuperTypeInCall]
>> see also: edu/brown/cs/cs032/crawler/crawl/CrawlTidyParser.java:85::0
>> warning at /SharedBinsAspect.aj:216::0 does not match because declaring
>> type is java.util.Set, if match desired use target(java.util.HashSet)
>> [Xlint:unmatchedSuperTypeInCall]
>> see also: edu/brown/cs/cs032/crawler/crawl/CrawlTidyParser.java:86::0
>> warning at /SharedBinsAspect.aj:216::0 does not match because declaring
>> type is java.util.Set, if match desired use target(java.util.HashSet)
>> [Xlint:unmatchedSuperTypeInCall]
>> see also: edu/brown/cs/cs032/crawler/crawl/CrawlTidyParser.java:87::0
>> warning at /SharedBinsAspect.aj:216::0 does not match because declaring
>> type is java.util.Set, if match desired use target(java.util.HashSet)
>> [Xlint:unmatchedSuperTypeInCall]
>> see also: edu/brown/cs/cs032/crawler/crawl/CrawlTidyParser.java:88::0
>> warning at /SharedBinsAspect.aj:216::0 does not match because declaring
>> type is java.util.Set, if match desired use target(java.util.HashSet)
>> [Xlint:unmatchedSuperTypeInCall]
>> see also: edu/brown/cs/cs032/crawler/crawl/CrawlTidyParser.java:89::0
>> warning at /SharedBinsAspect.aj:216::0 does not match because declaring
>> type is java.util.Set, if match desired use target(java.util.HashSet)
>> [Xlint:unmatchedSuperTypeInCall]
>> see also: edu/brown/cs/cs032/crawler/crawl/CrawlTidyParser.java:90::0
>> warning at /SharedBinsAspect.aj:216::0 does not match because declaring
>> type is java.util.Set, if match desired use target(java.util.HashSet)
>> [Xlint:unmatchedSuperTypeInCall]
>> see also: edu/brown/cs/cs032/crawler/crawl/CrawlTidyParser.java:91::0
>> warning at /SharedBinsAspect.aj:216::0 does not match because declaring
>> type is java.util.Set, if match desired use target(java.util.HashSet)
>> [Xlint:unmatchedSuperTypeInCall]
>> see also: edu/brown/cs/cs032/crawler/crawl/CrawlTidyParser.java:92::0
>> warning at /SharedBinsAspect.aj:216::0 does not match because declaring
>> type is java.util.Set, if match desired use target(java.util.HashSet)
>> [Xlint:unmatchedSuperTypeInCall]
>> see also: edu/brown/cs/cs032/crawler/crawl/CrawlTidyParser.java:93::0
>> warning at /SharedBinsAspect.aj:216::0 does not match because declaring
>> type is java.util.Set, if match desired use target(java.util.HashSet)
>> [Xlint:unmatchedSuperTypeInCall]
>> see also: edu/brown/cs/cs032/crawler/crawl/CrawlTidyParser.java:94::0
>> warning at /SharedBinsAspect.aj:216::0 does not match because declaring
>> type is java.util.Set, if match desired use target(java.util.HashSet)
>> [Xlint:unmatchedSuperTypeInCall]
>> see also: edu/brown/cs/cs032/crawler/crawl/CrawlTidyParser.java:95::0
>> warning at /SharedBinsAspect.aj:216::0 does not match because declaring
>> type is java.util.Set, if match desired use target(java.util.HashSet)
>> [Xlint:unmatchedSuperTypeInCall]
>> see also: edu/brown/cs/cs032/crawler/crawl/CrawlTidyParser.java:96::0
>> warning at /SharedBinsAspect.aj:216::0 does not match because declaring
>> type is java.util.Set, if match desired use target(java.util.HashSet)
>> [Xlint:unmatchedSuperTypeInCall]
>> see also: edu/brown/cs/cs032/crawler/crawl/CrawlTidyParser.java:97::0
>> warning at /SharedBinsAspect.aj:216::0 does not match because declaring
>> type is java.util.Set, if match desired use target(java.util.HashSet)
>> [Xlint:unmatchedSuperTypeInCall]
>> see also: edu/brown/cs/cs032/crawler/crawl/CrawlTidyParser.java:98::0
>> warning at /SharedBinsAspect.aj:216::0 does not match because declaring
>> type is java.util.Set, if match desired use target(java.util.HashSet)
>> [Xlint:unmatchedSuperTypeInCall]
>> see also: edu/brown/cs/cs032/crawler/crawl/CrawlTidyParser.java:99::0
>> warning at /SharedBinsAspect.aj:216::0 does not match because declaring
>> type is java.util.Set, if match desired use target(java.util.HashSet)
>> [Xlint:unmatchedSuperTypeInCall]
>> see also: edu/brown/cs/cs032/crawler/crawl/CrawlTidyParser.java:100::0
>> warning at /SharedBinsAspect.aj:216::0 does not match because declaring
>> type is java.util.Set, if match desired use target(java.util.HashSet)
>> [Xlint:unmatchedSuperTypeInCall]
>> see also: edu/brown/cs/cs032/crawler/crawl/CrawlTidyParser.java:101::0
>> warning at /SharedBinsAspect.aj:216::0 does not match because declaring
>> type is java.util.Set, if match desired use target(java.util.HashSet)
>> [Xlint:unmatchedSuperTypeInCall]
>> see also: edu/brown/cs/cs032/crawler/crawl/CrawlTidyParser.java:102::0
>> warning at /SharedBinsAspect.aj:216::0 does not match because declaring
>> type is java.util.Set, if match desired use target(java.util.HashSet)
>> [Xlint:unmatchedSuperTypeInCall]
>> see also: edu/brown/cs/cs032/crawler/crawl/CrawlTidyParser.java:103::0
>> warning at /SharedBinsAspect.aj:216::0 does not match because declaring
>> type is java.util.Set, if match desired use target(java.util.HashSet)
>> [Xlint:unmatchedSuperTypeInCall]
>> see also: edu/brown/cs/cs032/crawler/crawl/CrawlTidyParser.java:104::0
>> warning at /SharedBinsAspect.aj:216::0 does not match because declaring
>> type is java.util.Set, if match desired use target(java.util.HashSet)
>> [Xlint:unmatchedSuperTypeInCall]
>> see also: edu/brown/cs/cs032/crawler/crawl/CrawlTidyParser.java:105::0
>> warning at /SharedBinsAspect.aj:216::0 does not match because declaring
>> type is java.util.Set, if match desired use target(java.util.HashSet)
>> [Xlint:unmatchedSuperTypeInCall]
>> see also: edu/brown/cs/cs032/crawler/crawl/CrawlParser.java:165::0
>> warning at /SharedBinsAspect.aj:216::0 does not match because declaring
>> type is java.util.Set, if match desired use target(java.util.HashSet)
>> [Xlint:unmatchedSuperTypeInCall]
>> see also: edu/brown/cs/cs032/crawler/crawl/CrawlParser.java:169::0
>> warning at /SharedBinsAspect.aj:216::0 does not match because declaring
>> type is java.util.Set, if match desired use target(java.util.HashSet)
>> [Xlint:unmatchedSuperTypeInCall]
>> see also: edu/brown/cs/cs032/crawler/url/UrlHandle.java:84::0
>> warning at /SharedBinsAspect.aj:216::0 does not match because declaring
>> type is java.util.Set, if match desired use target(java.util.HashSet)
>> [Xlint:unmatchedSuperTypeInCall]
>> see also: edu/brown/cs/cs032/crawler/url/UrlHandle.java:85::0
>> abort trouble in:
>> public class edu.brown.cs.cs032.crawler.crawl.CrawlMain extends
>> java.lang.Object implements edu.brown.cs.cs032.crawler.crawl.CrawlConstants:
>> private int num_threads
>> private String url_file
>> private boolean do_test
>> private boolean do_create
>> private int start_at
>> private int url_count
>> private int active_count
>> private int page_total
>> private int pages_queued
>> private String base_directory
>> private Object work_sema
>> private Object urls_sema
>> private Object future_sema
>> private java.util.Set work_queue
>> [Signature(Ljava/util/Set<Ledu/brown/cs/cs032/crawler/CrawlerUrl;>;)]
>> private java.util.Set urls_done
>> [Signature(Ljava/util/Set<Ljava/lang/String;>;)]
>> private java.util.Set future_urls
>> [Signature(Ljava/util/Set<Ljava/lang/String;>;)]
>> private java.util.Collection thread_set
>> [Signature(Ljava/util/Collection<Ledu/brown/cs/cs032/crawler/crawl/CrawlThread;>;)]
>> private edu.brown.cs.cs032.crawler.CrawlerUrlManager url_manager
>> public static void main(String[]):
>> method-execution(void
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.main(java.lang.String[]))
>> | NEW edu.brown.cs.cs032.crawler.crawl.CrawlMain (line
>> 58)
>> | DUP
>> | ALOAD_0 // [Ljava/lang/String; args
>> | INVOKESPECIAL
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.<init> ([Ljava/lang/String;)V
>> | ASTORE_1
>> | ALOAD_1 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; cm (line 60)
>> | method-call(void
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.process())
>> | | INVOKESPECIAL
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.process ()V
>> | method-call(void
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.process())
>> | ICONST_0 (line 62)
>> | method-call(void java.lang.System.exit(int))
>> | | INVOKESTATIC java.lang.System.exit (I)V
>> | method-call(void java.lang.System.exit(int))
>> | RETURN (line 63)
>> method-execution(void
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.main(java.lang.String[]))
>> end public static void main(String[])
>>
>> private void <init>(String[]):
>> ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 99)
>> INVOKESPECIAL java.lang.Object.<init> ()V
>> constructor-execution(void
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.<init>(java.lang.String[]))
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 100)
>> | ICONST_2
>> | field-set(int
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.num_threads)
>> | | PUTFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.num_threads I
>> | field-set(int
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.num_threads)
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 101)
>> | LDC "/u/spr/crawler/data/urllist"
>> | field-set(java.lang.String
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.url_file)
>> | | PUTFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.url_file Ljava/lang/String;
>> | field-set(java.lang.String
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.url_file)
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 102)
>> | ICONST_1
>> | field-set(boolean
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.do_test)
>> | | PUTFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.do_test Z
>> | field-set(boolean
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.do_test)
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 103)
>> | ICONST_0
>> | field-set(boolean
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.do_create)
>> | | PUTFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.do_create Z
>> | field-set(boolean
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.do_create)
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 104)
>> | ICONST_0
>> | field-set(int edu.brown.cs.cs032.crawler.crawl.CrawlMain.start_at)
>> | | PUTFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.start_at I
>> | field-set(int edu.brown.cs.cs032.crawler.crawl.CrawlMain.start_at)
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 105)
>> | SIPUSH 128
>> | field-set(int edu.brown.cs.cs032.crawler.crawl.CrawlMain.url_count)
>> | | PUTFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.url_count I
>> | field-set(int edu.brown.cs.cs032.crawler.crawl.CrawlMain.url_count)
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 106)
>> | ICONST_0
>> | field-set(int
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.active_count)
>> | | PUTFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.active_count I
>> | field-set(int
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.active_count)
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 107)
>> | SIPUSH 10000
>> | field-set(int edu.brown.cs.cs032.crawler.crawl.CrawlMain.page_total)
>> | | PUTFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.page_total I
>> | field-set(int edu.brown.cs.cs032.crawler.crawl.CrawlMain.page_total)
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 108)
>> | ICONST_0
>> | field-set(int
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.pages_queued)
>> | | PUTFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.pages_queued I
>> | field-set(int
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.pages_queued)
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 110)
>> | NEW java.lang.Object
>> | DUP
>> | INVOKESPECIAL java.lang.Object.<init> ()V
>> | field-set(java.lang.Object
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.work_sema)
>> | | PUTFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.work_sema Ljava/lang/Object;
>> | field-set(java.lang.Object
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.work_sema)
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 111)
>> | NEW java.util.LinkedHashSet
>> | DUP
>> | INVOKESPECIAL java.util.LinkedHashSet.<init> ()V
>> | field-set(java.util.Set
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.work_queue)
>> | | PUTFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.work_queue Ljava/util/Set;
>> | field-set(java.util.Set
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.work_queue)
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 112)
>> | NEW java.util.HashSet
>> | DUP
>> | INVOKESPECIAL java.util.HashSet.<init> ()V
>> | field-set(java.util.Set
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.work_queue)
>> | | PUTFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.work_queue Ljava/util/Set;
>> | field-set(java.util.Set
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.work_queue)
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 113)
>> | NEW java.lang.Object
>> | DUP
>> | INVOKESPECIAL java.lang.Object.<init> ()V
>> | field-set(java.lang.Object
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.urls_sema)
>> | | PUTFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.urls_sema Ljava/lang/Object;
>> | field-set(java.lang.Object
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.urls_sema)
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 114)
>> | NEW java.util.HashSet
>> | DUP
>> | INVOKESPECIAL java.util.HashSet.<init> ()V
>> | field-set(java.util.Set
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.urls_done)
>> | | PUTFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.urls_done Ljava/util/Set;
>> | field-set(java.util.Set
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.urls_done)
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 115)
>> | NEW java.lang.Object
>> | DUP
>> | INVOKESPECIAL java.lang.Object.<init> ()V
>> | field-set(java.lang.Object
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.future_sema)
>> | | PUTFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.future_sema Ljava/lang/Object;
>> | field-set(java.lang.Object
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.future_sema)
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 116)
>> | NEW java.util.HashSet
>> | DUP
>> | INVOKESPECIAL java.util.HashSet.<init> ()V
>> | field-set(java.util.Set
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.future_urls)
>> | | PUTFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.future_urls Ljava/util/Set;
>> | field-set(java.util.Set
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.future_urls)
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 117)
>> | NEW java.util.ArrayList
>> | DUP
>> | INVOKESPECIAL java.util.ArrayList.<init> ()V
>> | field-set(java.util.Collection
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.thread_set)
>> | | PUTFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.thread_set Ljava/util/Collection;
>> | field-set(java.util.Collection
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.thread_set)
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 118)
>> | ACONST_NULL
>> | field-set(java.lang.String
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.base_directory)
>> | | PUTFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.base_directory Ljava/lang/String;
>> | field-set(java.lang.String
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.base_directory)
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 120)
>> | ALOAD_1 // [Ljava/lang/String; args
>> | method-call(void
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.scanArgs(java.lang.String[]))
>> | | INVOKESPECIAL
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.scanArgs ([Ljava/lang/String;)V
>> | method-call(void
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.scanArgs(java.lang.String[]))
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 122)
>> | method-call(edu.brown.cs.cs032.crawler.CrawlerUrlManager
>> edu.brown.cs.cs032.crawler.CrawlerFactory.createUrlManager())
>> | | INVOKESTATIC
>> edu.brown.cs.cs032.crawler.CrawlerFactory.createUrlManager
>> ()Ledu/brown/cs/cs032/crawler/CrawlerUrlManager;
>> | method-call(edu.brown.cs.cs032.crawler.CrawlerUrlManager
>> edu.brown.cs.cs032.crawler.CrawlerFactory.createUrlManager())
>> | field-set(edu.brown.cs.cs032.crawler.CrawlerUrlManager
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.url_manager)
>> | | PUTFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.url_manager
>> Ledu/brown/cs/cs032/crawler/CrawlerUrlManager;
>> | field-set(edu.brown.cs.cs032.crawler.CrawlerUrlManager
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.url_manager)
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 123)
>> | field-get(edu.brown.cs.cs032.crawler.CrawlerUrlManager
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.url_manager)
>> | | GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.url_manager
>> Ledu/brown/cs/cs032/crawler/CrawlerUrlManager;
>> | field-get(edu.brown.cs.cs032.crawler.CrawlerUrlManager
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.url_manager)
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this
>> | field-get(boolean
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.do_test)
>> | | GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.do_test Z
>> | field-get(boolean
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.do_test)
>> | method-call(void
>> edu.brown.cs.cs032.crawler.CrawlerUrlManager.setDoTesting(boolean))
>> | | INVOKEINTERFACE
>> edu.brown.cs.cs032.crawler.CrawlerUrlManager.setDoTesting (Z)V
>> | method-call(void
>> edu.brown.cs.cs032.crawler.CrawlerUrlManager.setDoTesting(boolean))
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 124)
>> | field-get(java.lang.String
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.base_directory)
>> | | GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.base_directory Ljava/lang/String;
>> | field-get(java.lang.String
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.base_directory)
>> | IFNULL L0
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 125)
>> | field-get(edu.brown.cs.cs032.crawler.CrawlerUrlManager
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.url_manager)
>> | | GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.url_manager
>> Ledu/brown/cs/cs032/crawler/CrawlerUrlManager;
>> | field-get(edu.brown.cs.cs032.crawler.CrawlerUrlManager
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.url_manager)
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this
>> | field-get(java.lang.String
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.base_directory)
>> | | GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.base_directory Ljava/lang/String;
>> | field-get(java.lang.String
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.base_directory)
>> | method-call(void
>> edu.brown.cs.cs032.crawler.CrawlerUrlManager.setBaseDirectory(java.lang.String))
>> | | INVOKEINTERFACE
>> edu.brown.cs.cs032.crawler.CrawlerUrlManager.setBaseDirectory
>> (Ljava/lang/String;)V
>> | method-call(void
>> edu.brown.cs.cs032.crawler.CrawlerUrlManager.setBaseDirectory(java.lang.String))
>> | L0: ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 127)
>> | field-get(boolean
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.do_create)
>> | | GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.do_create Z
>> | field-get(boolean
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.do_create)
>> | IFEQ L1
>> | field-get(java.io.PrintStream java.lang.System.err)
>> | | GETSTATIC java.lang.System.err Ljava/io/PrintStream;
>> (line 128)
>> | field-get(java.io.PrintStream java.lang.System.err)
>> | LDC "CRAWL: Clearing Repository"
>> | method-call(void java.io.PrintStream.println(java.lang.String))
>> | | INVOKEVIRTUAL java.io.PrintStream.println
>> (Ljava/lang/String;)V
>> | method-call(void java.io.PrintStream.println(java.lang.String))
>> | catch java.io.IOException -> E0
>> | | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 130)
>> | | field-get(edu.brown.cs.cs032.crawler.CrawlerUrlManager
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.url_manager)
>> | | | GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.url_manager
>> Ledu/brown/cs/cs032/crawler/CrawlerUrlManager;
>> | | field-get(edu.brown.cs.cs032.crawler.CrawlerUrlManager
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.url_manager)
>> | | method-call(void
>> edu.brown.cs.cs032.crawler.CrawlerUrlManager.clearRepository())
>> | | | INVOKEINTERFACE
>> edu.brown.cs.cs032.crawler.CrawlerUrlManager.clearRepository ()V
>> | | method-call(void
>> edu.brown.cs.cs032.crawler.CrawlerUrlManager.clearRepository())
>> | catch java.io.IOException -> E0
>> | GOTO L1 (line 134)
>> | E0: ASTORE_2 (line 131)
>> | field-get(java.io.PrintStream java.lang.System.err)
>> | | GETSTATIC java.lang.System.err Ljava/io/PrintStream;
>> (line 132)
>> | field-get(java.io.PrintStream java.lang.System.err)
>> | NEW java.lang.StringBuilder
>> | DUP
>> | INVOKESPECIAL java.lang.StringBuilder.<init> ()V
>> | LDC "Problem clearing repository: "
>> | method-call(java.lang.StringBuilder
>> java.lang.StringBuilder.append(java.lang.String))
>> | | INVOKEVIRTUAL java.lang.StringBuilder.append
>> (Ljava/lang/String;)Ljava/lang/StringBuilder;
>> | method-call(java.lang.StringBuilder
>> java.lang.StringBuilder.append(java.lang.String))
>> | ALOAD_2 // Ljava/io/IOException; e
>> | method-call(java.lang.StringBuilder
>> java.lang.StringBuilder.append(java.lang.Object))
>> | | INVOKEVIRTUAL java.lang.StringBuilder.append
>> (Ljava/lang/Object;)Ljava/lang/StringBuilder;
>> | method-call(java.lang.StringBuilder
>> java.lang.StringBuilder.append(java.lang.Object))
>> | method-call(java.lang.String java.lang.StringBuilder.toString())
>> | | INVOKEVIRTUAL java.lang.StringBuilder.toString
>> ()Ljava/lang/String;
>> | method-call(java.lang.String java.lang.StringBuilder.toString())
>> | method-call(void java.io.PrintStream.println(java.lang.String))
>> | | INVOKEVIRTUAL java.io.PrintStream.println
>> (Ljava/lang/String;)V
>> | method-call(void java.io.PrintStream.println(java.lang.String))
>> | ICONST_1 (line 133)
>> | method-call(void java.lang.System.exit(int))
>> | | INVOKESTATIC java.lang.System.exit (I)V
>> | method-call(void java.lang.System.exit(int))
>> | L1: RETURN (line 136)
>> constructor-execution(void
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.<init>(java.lang.String[]))
>> end private void <init>(String[])
>>
>> private void scanArgs(String[]):
>> method-execution(void
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.scanArgs(java.lang.String[]))
>> | ICONST_0 (line 145)
>> | ISTORE_2
>> | L0: ILOAD_2 // I i
>> | ALOAD_1 // [Ljava/lang/String; args
>> | ARRAYLENGTH
>> | IF_ICMPGE L10
>> | ALOAD_1 // [Ljava/lang/String; args (line 146)
>> | ILOAD_2 // I i
>> | AALOAD
>> | LDC "-t"
>> | method-call(boolean java.lang.String.startsWith(java.lang.String))
>> | | INVOKEVIRTUAL java.lang.String.startsWith
>> (Ljava/lang/String;)Z
>> | method-call(boolean java.lang.String.startsWith(java.lang.String))
>> | IFEQ L1
>> | ILOAD_2 // I i
>> | ICONST_1
>> | IADD
>> | ALOAD_1 // [Ljava/lang/String; args
>> | ARRAYLENGTH
>> | IF_ICMPGE L1
>> | catch java.lang.NumberFormatException -> E0
>> | | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 149)
>> | | ALOAD_1 // [Ljava/lang/String; args
>> | | IINC_2 1 // I i
>> | | ILOAD_2 // I i
>> | | AALOAD
>> | | method-call(int java.lang.Integer.parseInt(java.lang.String))
>> | | | INVOKESTATIC java.lang.Integer.parseInt
>> (Ljava/lang/String;)I
>> | | method-call(int java.lang.Integer.parseInt(java.lang.String))
>> | | field-set(int
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.num_threads)
>> | | | PUTFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.num_threads I
>> | | field-set(int
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.num_threads)
>> | catch java.lang.NumberFormatException -> E0
>> | GOTO L9 (line 152)
>> | E0: ASTORE_3 (line 150)
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 151)
>> | method-call(void
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.badArgs())
>> | | INVOKESPECIAL
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.badArgs ()V
>> | method-call(void
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.badArgs())
>> | GOTO L9 (line 152)
>> | L1: ALOAD_1 // [Ljava/lang/String; args (line 153)
>> | ILOAD_2 // I i
>> | AALOAD
>> | LDC "-u"
>> | method-call(boolean java.lang.String.startsWith(java.lang.String))
>> | | INVOKEVIRTUAL java.lang.String.startsWith
>> (Ljava/lang/String;)Z
>> | method-call(boolean java.lang.String.startsWith(java.lang.String))
>> | IFEQ L2
>> | ILOAD_2 // I i
>> | ICONST_1
>> | IADD
>> | ALOAD_1 // [Ljava/lang/String; args
>> | ARRAYLENGTH
>> | IF_ICMPGE L2
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 155)
>> | ALOAD_1 // [Ljava/lang/String; args
>> | IINC_2 1 // I i
>> | ILOAD_2 // I i
>> | AALOAD
>> | field-set(java.lang.String
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.url_file)
>> | | PUTFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.url_file Ljava/lang/String;
>> | field-set(java.lang.String
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.url_file)
>> | GOTO L9
>> | L2: ALOAD_1 // [Ljava/lang/String; args (line 156)
>> | ILOAD_2 // I i
>> | AALOAD
>> | LDC "-s"
>> | method-call(boolean java.lang.String.startsWith(java.lang.String))
>> | | INVOKEVIRTUAL java.lang.String.startsWith
>> (Ljava/lang/String;)Z
>> | method-call(boolean java.lang.String.startsWith(java.lang.String))
>> | IFEQ L3
>> | ILOAD_2 // I i
>> | ICONST_1
>> | IADD
>> | ALOAD_1 // [Ljava/lang/String; args
>> | ARRAYLENGTH
>> | IF_ICMPGE L3
>> | catch java.lang.NumberFormatException -> E1
>> | | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 160)
>> | | ALOAD_1 // [Ljava/lang/String; args
>> | | IINC_2 1 // I i
>> | | ILOAD_2 // I i
>> | | AALOAD
>> | | method-call(int java.lang.Integer.parseInt(java.lang.String))
>> | | | INVOKESTATIC java.lang.Integer.parseInt
>> (Ljava/lang/String;)I
>> | | method-call(int java.lang.Integer.parseInt(java.lang.String))
>> | | field-set(int edu.brown.cs.cs032.crawler.crawl.CrawlMain.start_at)
>> | | | PUTFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.start_at I
>> | | field-set(int edu.brown.cs.cs032.crawler.crawl.CrawlMain.start_at)
>> | catch java.lang.NumberFormatException -> E1
>> | GOTO L9 (line 163)
>> | E1: ASTORE_3 (line 161)
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 162)
>> | method-call(void
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.badArgs())
>> | | INVOKESPECIAL
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.badArgs ()V
>> | method-call(void
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.badArgs())
>> | GOTO L9 (line 163)
>> | L3: ALOAD_1 // [Ljava/lang/String; args (line 164)
>> | ILOAD_2 // I i
>> | AALOAD
>> | LDC "-p"
>> | method-call(boolean java.lang.String.startsWith(java.lang.String))
>> | | INVOKEVIRTUAL java.lang.String.startsWith
>> (Ljava/lang/String;)Z
>> | method-call(boolean java.lang.String.startsWith(java.lang.String))
>> | IFEQ L4
>> | ILOAD_2 // I i
>> | ICONST_1
>> | IADD
>> | ALOAD_1 // [Ljava/lang/String; args
>> | ARRAYLENGTH
>> | IF_ICMPGE L4
>> | catch java.lang.NumberFormatException -> E2
>> | | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 167)
>> | | ALOAD_1 // [Ljava/lang/String; args
>> | | IINC_2 1 // I i
>> | | ILOAD_2 // I i
>> | | AALOAD
>> | | method-call(int java.lang.Integer.parseInt(java.lang.String))
>> | | | INVOKESTATIC java.lang.Integer.parseInt
>> (Ljava/lang/String;)I
>> | | method-call(int java.lang.Integer.parseInt(java.lang.String))
>> | | field-set(int
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.url_count)
>> | | | PUTFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.url_count I
>> | | field-set(int
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.url_count)
>> | catch java.lang.NumberFormatException -> E2
>> | GOTO L9 (line 170)
>> | E2: ASTORE_3 (line 168)
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 169)
>> | method-call(void
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.badArgs())
>> | | INVOKESPECIAL
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.badArgs ()V
>> | method-call(void
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.badArgs())
>> | GOTO L9 (line 170)
>> | L4: ALOAD_1 // [Ljava/lang/String; args (line 171)
>> | ILOAD_2 // I i
>> | AALOAD
>> | LDC "-n"
>> | method-call(boolean java.lang.String.startsWith(java.lang.String))
>> | | INVOKEVIRTUAL java.lang.String.startsWith
>> (Ljava/lang/String;)Z
>> | method-call(boolean java.lang.String.startsWith(java.lang.String))
>> | IFEQ L5
>> | ILOAD_2 // I i
>> | ICONST_1
>> | IADD
>> | ALOAD_1 // [Ljava/lang/String; args
>> | ARRAYLENGTH
>> | IF_ICMPGE L5
>> | catch java.lang.NumberFormatException -> E3
>> | | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 174)
>> | | ALOAD_1 // [Ljava/lang/String; args
>> | | IINC_2 1 // I i
>> | | ILOAD_2 // I i
>> | | AALOAD
>> | | method-call(int java.lang.Integer.parseInt(java.lang.String))
>> | | | INVOKESTATIC java.lang.Integer.parseInt
>> (Ljava/lang/String;)I
>> | | method-call(int java.lang.Integer.parseInt(java.lang.String))
>> | | field-set(int
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.page_total)
>> | | | PUTFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.page_total I
>> | | field-set(int
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.page_total)
>> | catch java.lang.NumberFormatException -> E3
>> | GOTO L9 (line 177)
>> | E3: ASTORE_3 (line 175)
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 176)
>> | method-call(void
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.badArgs())
>> | | INVOKESPECIAL
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.badArgs ()V
>> | method-call(void
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.badArgs())
>> | GOTO L9 (line 177)
>> | L5: ALOAD_1 // [Ljava/lang/String; args (line 178)
>> | ILOAD_2 // I i
>> | AALOAD
>> | LDC "-c"
>> | method-call(boolean java.lang.String.startsWith(java.lang.String))
>> | | INVOKEVIRTUAL java.lang.String.startsWith
>> (Ljava/lang/String;)Z
>> | method-call(boolean java.lang.String.startsWith(java.lang.String))
>> | IFEQ L6
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 179)
>> | ICONST_1
>> | field-set(boolean
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.do_create)
>> | | PUTFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.do_create Z
>> | field-set(boolean
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.do_create)
>> | GOTO L9
>> | L6: ALOAD_1 // [Ljava/lang/String; args (line 180)
>> | ILOAD_2 // I i
>> | AALOAD
>> | LDC "-r"
>> | method-call(boolean java.lang.String.startsWith(java.lang.String))
>> | | INVOKEVIRTUAL java.lang.String.startsWith
>> (Ljava/lang/String;)Z
>> | method-call(boolean java.lang.String.startsWith(java.lang.String))
>> | IFEQ L7
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 181)
>> | ICONST_0
>> | field-set(boolean
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.do_test)
>> | | PUTFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.do_test Z
>> | field-set(boolean
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.do_test)
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 182)
>> | ICONST_0
>> | field-set(boolean
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.do_create)
>> | | PUTFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.do_create Z
>> | field-set(boolean
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.do_create)
>> | GOTO L9
>> | L7: ALOAD_1 // [Ljava/lang/String; args (line 183)
>> | ILOAD_2 // I i
>> | AALOAD
>> | LDC "-d"
>> | method-call(boolean java.lang.String.startsWith(java.lang.String))
>> | | INVOKEVIRTUAL java.lang.String.startsWith
>> (Ljava/lang/String;)Z
>> | method-call(boolean java.lang.String.startsWith(java.lang.String))
>> | IFEQ L8
>> | ILOAD_2 // I i
>> | ICONST_1
>> | IADD
>> | ALOAD_1 // [Ljava/lang/String; args
>> | ARRAYLENGTH
>> | IF_ICMPGE L8
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 185)
>> | ALOAD_1 // [Ljava/lang/String; args
>> | IINC_2 1 // I i
>> | ILOAD_2 // I i
>> | AALOAD
>> | field-set(java.lang.String
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.base_directory)
>> | | PUTFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.base_directory Ljava/lang/String;
>> | field-set(java.lang.String
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.base_directory)
>> | GOTO L9
>> | L8: ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 187)
>> | method-call(void
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.badArgs())
>> | | INVOKESPECIAL
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.badArgs ()V
>> | method-call(void
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.badArgs())
>> | L9: IINC_2 1 // I i (line 145)
>> | GOTO L0
>> | L10: RETURN (line 189)
>> method-execution(void
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.scanArgs(java.lang.String[]))
>> end private void scanArgs(String[])
>>
>> private void badArgs():
>> method-execution(void
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.badArgs())
>> | field-get(java.io.PrintStream java.lang.System.err)
>> | | GETSTATIC java.lang.System.err Ljava/io/PrintStream;
>> (line 192)
>> | field-get(java.io.PrintStream java.lang.System.err)
>> | LDC "CRAWL: crawl [-t #threads] [-u urlfile] [-run]
>> [-s start#] [-n #pages]"
>> | method-call(void java.io.PrintStream.println(java.lang.String))
>> | | INVOKEVIRTUAL java.io.PrintStream.println
>> (Ljava/lang/String;)V
>> | method-call(void java.io.PrintStream.println(java.lang.String))
>> | field-get(java.io.PrintStream java.lang.System.err)
>> | | GETSTATIC java.lang.System.err Ljava/io/PrintStream;
>> (line 194)
>> | field-get(java.io.PrintStream java.lang.System.err)
>> | LDC " [-p #urls to process] [-create]"
>> | method-call(void java.io.PrintStream.println(java.lang.String))
>> | | INVOKEVIRTUAL java.io.PrintStream.println
>> (Ljava/lang/String;)V
>> | method-call(void java.io.PrintStream.println(java.lang.String))
>> | ICONST_0 (line 195)
>> | method-call(void java.lang.System.exit(int))
>> | | INVOKESTATIC java.lang.System.exit (I)V
>> | method-call(void java.lang.System.exit(int))
>> | RETURN (line 196)
>> method-execution(void
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.badArgs())
>> end private void badArgs()
>>
>> private void process():
>> method-execution(void
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.process())
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 205)
>> | ICONST_1
>> | field-set(int
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.active_count)
>> | | PUTFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.active_count I
>> | field-set(int
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.active_count)
>> | field-get(java.io.PrintStream java.lang.System.err)
>> | | GETSTATIC java.lang.System.err Ljava/io/PrintStream;
>> (line 207)
>> | field-get(java.io.PrintStream java.lang.System.err)
>> | NEW java.lang.StringBuilder
>> | DUP
>> | INVOKESPECIAL java.lang.StringBuilder.<init> ()V
>> | LDC "CRAWL: Start processing at "
>> | method-call(java.lang.StringBuilder
>> java.lang.StringBuilder.append(java.lang.String))
>> | | INVOKEVIRTUAL java.lang.StringBuilder.append
>> (Ljava/lang/String;)Ljava/lang/StringBuilder;
>> | method-call(java.lang.StringBuilder
>> java.lang.StringBuilder.append(java.lang.String))
>> | NEW java.util.Date
>> | DUP
>> | INVOKESPECIAL java.util.Date.<init> ()V
>> | method-call(java.lang.StringBuilder
>> java.lang.StringBuilder.append(java.lang.Object))
>> | | INVOKEVIRTUAL java.lang.StringBuilder.append
>> (Ljava/lang/Object;)Ljava/lang/StringBuilder;
>> | method-call(java.lang.StringBuilder
>> java.lang.StringBuilder.append(java.lang.Object))
>> | method-call(java.lang.String java.lang.StringBuilder.toString())
>> | | INVOKEVIRTUAL java.lang.StringBuilder.toString
>> ()Ljava/lang/String;
>> | method-call(java.lang.String java.lang.StringBuilder.toString())
>> | method-call(void java.io.PrintStream.println(java.lang.String))
>> | | INVOKEVIRTUAL java.io.PrintStream.println
>> (Ljava/lang/String;)V
>> | method-call(void java.io.PrintStream.println(java.lang.String))
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 209)
>> | method-call(void
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.startThreads())
>> | | INVOKESPECIAL
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.startThreads ()V
>> | method-call(void
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.startThreads())
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 210)
>> | method-call(void
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.loadUrls())
>> | | INVOKESPECIAL
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.loadUrls ()V
>> | method-call(void
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.loadUrls())
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 212)
>> | field-get(java.lang.Object
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.work_sema)
>> | | GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.work_sema Ljava/lang/Object;
>> | field-get(java.lang.Object
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.work_sema)
>> | DUP
>> | ASTORE_1
>> | MONITORENTER
>> | finally -> E1
>> | | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 213)
>> | | DUP
>> | | field-get(int
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.active_count)
>> | | | GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.active_count I
>> | | field-get(int
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.active_count)
>> | | ICONST_1
>> | | ISUB
>> | | field-set(int
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.active_count)
>> | | | PUTFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.active_count I
>> | | field-set(int
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.active_count)
>> | | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 214)
>> | | field-get(int
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.active_count)
>> | | | GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.active_count I
>> | | field-get(int
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.active_count)
>> | | IFNE L0
>> | | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 215)
>> | | field-get(java.lang.Object
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.work_sema)
>> | | | GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.work_sema Ljava/lang/Object;
>> | | field-get(java.lang.Object
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.work_sema)
>> | | method-call(void java.lang.Object.notifyAll())
>> | | | INVOKEVIRTUAL java.lang.Object.notifyAll ()V
>> | | method-call(void java.lang.Object.notifyAll())
>> | | L0: ALOAD_1 (line 216)
>> | | MONITOREXIT
>> | finally -> E1
>> | GOTO L1
>> | finally -> E1
>> | | E1: ASTORE_2
>> | | ALOAD_1
>> | | MONITOREXIT
>> | finally -> E1
>> | ALOAD_2
>> | ATHROW
>> | L1: ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 218)
>> | method-call(void
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.waitForDone())
>> | | INVOKESPECIAL
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.waitForDone ()V
>> | method-call(void
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.waitForDone())
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 220)
>> | field-get(edu.brown.cs.cs032.crawler.CrawlerUrlManager
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.url_manager)
>> | | GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.url_manager
>> Ledu/brown/cs/cs032/crawler/CrawlerUrlManager;
>> | field-get(edu.brown.cs.cs032.crawler.CrawlerUrlManager
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.url_manager)
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this
>> | field-get(java.lang.String
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.url_file)
>> | | GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.url_file Ljava/lang/String;
>> | field-get(java.lang.String
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.url_file)
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this
>> | field-get(java.util.Set
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.future_urls)
>> | | GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.future_urls Ljava/util/Set;
>> | field-get(java.util.Set
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.future_urls)
>> | method-call(void
>> edu.brown.cs.cs032.crawler.CrawlerUrlManager.addFutureUrls(java.lang.String,
>> java.util.Collection))
>> | | INVOKEINTERFACE
>> edu.brown.cs.cs032.crawler.CrawlerUrlManager.addFutureUrls
>> (Ljava/lang/String;Ljava/util/Collection;)V
>> | method-call(void
>> edu.brown.cs.cs032.crawler.CrawlerUrlManager.addFutureUrls(java.lang.String,
>> java.util.Collection))
>> | field-get(java.io.PrintStream java.lang.System.err)
>> | | GETSTATIC java.lang.System.err Ljava/io/PrintStream;
>> (line 222)
>> | field-get(java.io.PrintStream java.lang.System.err)
>> | NEW java.lang.StringBuilder
>> | DUP
>> | INVOKESPECIAL java.lang.StringBuilder.<init> ()V
>> | LDC "CRAWL: Done processing at "
>> | method-call(java.lang.StringBuilder
>> java.lang.StringBuilder.append(java.lang.String))
>> | | INVOKEVIRTUAL java.lang.StringBuilder.append
>> (Ljava/lang/String;)Ljava/lang/StringBuilder;
>> | method-call(java.lang.StringBuilder
>> java.lang.StringBuilder.append(java.lang.String))
>> | NEW java.util.Date
>> | DUP
>> | INVOKESPECIAL java.util.Date.<init> ()V
>> | method-call(java.lang.StringBuilder
>> java.lang.StringBuilder.append(java.lang.Object))
>> | | INVOKEVIRTUAL java.lang.StringBuilder.append
>> (Ljava/lang/Object;)Ljava/lang/StringBuilder;
>> | method-call(java.lang.StringBuilder
>> java.lang.StringBuilder.append(java.lang.Object))
>> | method-call(java.lang.String java.lang.StringBuilder.toString())
>> | | INVOKEVIRTUAL java.lang.StringBuilder.toString
>> ()Ljava/lang/String;
>> | method-call(java.lang.String java.lang.StringBuilder.toString())
>> | method-call(void java.io.PrintStream.println(java.lang.String))
>> | | INVOKEVIRTUAL java.io.PrintStream.println
>> (Ljava/lang/String;)V
>> | method-call(void java.io.PrintStream.println(java.lang.String))
>> | RETURN (line 223)
>> method-execution(void
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.process())
>> end private void process()
>>
>> private void loadUrls():
>> method-execution(void
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.loadUrls())
>> | catch java.io.IOException -> E1
>> | | NEW java.io.LineNumberReader (line 233)
>> | | DUP
>> | | NEW java.io.FileReader
>> | | DUP
>> | | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this
>> | | field-get(java.lang.String
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.url_file)
>> | | | GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.url_file Ljava/lang/String;
>> | | field-get(java.lang.String
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.url_file)
>> | | INVOKESPECIAL java.io.FileReader.<init>
>> (Ljava/lang/String;)V
>> | | INVOKESPECIAL java.io.LineNumberReader.<init>
>> (Ljava/io/Reader;)V
>> | | ASTORE_1
>> | | ICONST_0 (line 236)
>> | | ISTORE_2
>> | | L0: ILOAD_2 // I i
>> | | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this
>> | | field-get(int edu.brown.cs.cs032.crawler.crawl.CrawlMain.start_at)
>> | | | GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.start_at I
>> | | field-get(int edu.brown.cs.cs032.crawler.crawl.CrawlMain.start_at)
>> | | IF_ICMPGE L2
>> | | ALOAD_1 // Ljava/io/LineNumberReader; lnr (line
>> 237)
>> | | method-call(java.lang.String java.io.LineNumberReader.readLine())
>> | | | INVOKEVIRTUAL java.io.LineNumberReader.readLine
>> ()Ljava/lang/String;
>> | | method-call(java.lang.String java.io.LineNumberReader.readLine())
>> | | ASTORE_3
>> | | ALOAD_3 // Ljava/lang/String; ln (line 238)
>> | | IFNONNULL L1
>> | catch java.io.IOException -> E1
>> | RETURN (line 239)
>> | catch java.io.IOException -> E1
>> | | L1: IINC_2 1 // I i (line 236)
>> | | GOTO L0
>> | | L2: ICONST_0 (line 241)
>> | | ISTORE_2
>> | | L3: ILOAD_2 // I i
>> | | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this
>> | | field-get(int
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.url_count)
>> | | | GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.url_count I
>> | | field-get(int
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.url_count)
>> | | IF_ICMPGE L6
>> | | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this
>> | | field-get(int
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.pages_queued)
>> | | | GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.pages_queued I
>> | | field-get(int
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.pages_queued)
>> | | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this
>> | | field-get(int
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.page_total)
>> | | | GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.page_total I
>> | | field-get(int
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.page_total)
>> | | IF_ICMPGT L6
>> | | ALOAD_1 // Ljava/io/LineNumberReader; lnr (line
>> 242)
>> | | method-call(java.lang.String java.io.LineNumberReader.readLine())
>> | | | INVOKEVIRTUAL java.io.LineNumberReader.readLine
>> ()Ljava/lang/String;
>> | | method-call(java.lang.String java.io.LineNumberReader.readLine())
>> | | ASTORE_3
>> | | ALOAD_3 // Ljava/lang/String; ln (line 243)
>> | | IFNONNULL L4
>> | | GOTO L6 (line 244)
>> | | L4: ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 245)
>> | | field-get(edu.brown.cs.cs032.crawler.CrawlerUrlManager
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.url_manager)
>> | | | GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.url_manager
>> Ledu/brown/cs/cs032/crawler/CrawlerUrlManager;
>> | | field-get(edu.brown.cs.cs032.crawler.CrawlerUrlManager
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.url_manager)
>> | | ALOAD_3 // Ljava/lang/String; ln
>> | | ACONST_NULL
>> | | method-call(edu.brown.cs.cs032.crawler.CrawlerUrl
>> edu.brown.cs.cs032.crawler.CrawlerUrlManager.normalizeNewUrl(java.lang.String,
>> edu.brown.cs.cs032.crawler.CrawlerUrl))
>> | | | INVOKEINTERFACE
>> edu.brown.cs.cs032.crawler.CrawlerUrlManager.normalizeNewUrl
>> (Ljava/lang/String;Ledu/brown/cs/cs032/crawler/CrawlerUrl;)Ledu/brown/cs/cs032/crawler/CrawlerUrl;
>> | | method-call(edu.brown.cs.cs032.crawler.CrawlerUrl
>> edu.brown.cs.cs032.crawler.CrawlerUrlManager.normalizeNewUrl(java.lang.String,
>> edu.brown.cs.cs032.crawler.CrawlerUrl))
>> | | ASTORE 4
>> | | ALOAD 4 // Ledu/brown/cs/cs032/crawler/CrawlerUrl;
>> url (line 246)
>> | | IFNULL L5
>> | | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this
>> | | ALOAD 4 // Ledu/brown/cs/cs032/crawler/CrawlerUrl;
>> url
>> | | method-call(boolean
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.addUrlCandidate(edu.brown.cs.cs032.crawler.CrawlerUrl))
>> | | | INVOKESPECIAL
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.addUrlCandidate
>> (Ledu/brown/cs/cs032/crawler/CrawlerUrl;)Z
>> | | method-call(boolean
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.addUrlCandidate(edu.brown.cs.cs032.crawler.CrawlerUrl))
>> | | IFEQ L5
>> | | IINC_2 1 // I i (line 247)
>> | | L5: GOTO L3 (line 248)
>> | | L6: ALOAD_1 // Ljava/io/LineNumberReader; lnr (line
>> 249)
>> | | method-call(void java.io.LineNumberReader.close())
>> | | | INVOKEVIRTUAL java.io.LineNumberReader.close ()V
>> | | method-call(void java.io.LineNumberReader.close())
>> | catch java.io.IOException -> E1
>> | GOTO L7 (line 253)
>> | E1: ASTORE_1 (line 250)
>> | field-get(java.io.PrintStream java.lang.System.err)
>> | | GETSTATIC java.lang.System.err Ljava/io/PrintStream;
>> (line 251)
>> | field-get(java.io.PrintStream java.lang.System.err)
>> | NEW java.lang.StringBuilder
>> | DUP
>> | INVOKESPECIAL java.lang.StringBuilder.<init> ()V
>> | LDC "CRAWL: Problem reading url file: "
>> | method-call(java.lang.StringBuilder
>> java.lang.StringBuilder.append(java.lang.String))
>> | | INVOKEVIRTUAL java.lang.StringBuilder.append
>> (Ljava/lang/String;)Ljava/lang/StringBuilder;
>> | method-call(java.lang.StringBuilder
>> java.lang.StringBuilder.append(java.lang.String))
>> | ALOAD_1 // Ljava/io/IOException; e
>> | INVOKEVIRTUAL java.lang.StringBuilder.append
>> (Ljava/lang/Object;)Ljava/lang/StringBuilder;
>> | INVOKEVIRTUAL java.lang.StringBuilder.toString
>> ()Ljava/lang/String;
>> | INVOKEVIRTUAL java.io.PrintStream.println
>> (Ljava/lang/String;)V
>> | ICONST_1 (line 252)
>> | INVOKESTATIC java.lang.System.exit (I)V
>> | L7: RETURN (line 254)
>> method-execution(void
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.loadUrls())
>> end private void loadUrls()
>>
>> void addRedirectUrl(edu.brown.cs.cs032.crawler.CrawlerUrl, String):
>> ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 257)
>> GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.url_manager
>> Ledu/brown/cs/cs032/crawler/CrawlerUrlManager;
>> ALOAD_2 // Ljava/lang/String; nm
>> ALOAD_1 // Ledu/brown/cs/cs032/crawler/CrawlerUrl;
>> base
>> INVOKEINTERFACE
>> edu.brown.cs.cs032.crawler.CrawlerUrlManager.normalizeNewUrl
>> (Ljava/lang/String;Ledu/brown/cs/cs032/crawler/CrawlerUrl;)Ledu/brown/cs/cs032/crawler/CrawlerUrl;
>> ASTORE_3
>> ALOAD_3 // Ledu/brown/cs/cs032/crawler/CrawlerUrl;
>> url (line 259)
>> IFNULL L0
>> ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 260)
>> ALOAD_3 // Ledu/brown/cs/cs032/crawler/CrawlerUrl;
>> url
>> INVOKESPECIAL
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.addUrlCandidate
>> (Ledu/brown/cs/cs032/crawler/CrawlerUrl;)Z
>> POP
>> L0: RETURN (line 261)
>> end void addRedirectUrl(edu.brown.cs.cs032.crawler.CrawlerUrl, String)
>>
>> edu.brown.cs.cs032.crawler.CrawlerUrl
>> addUrlCandidate(edu.brown.cs.cs032.crawler.CrawlerUrl, String):
>> ALOAD_2 // Ljava/lang/String; nm (line 264)
>> IFNONNULL L0
>> ACONST_NULL (line 265)
>> ARETURN
>> L0: ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 267)
>> GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.url_manager
>> Ledu/brown/cs/cs032/crawler/CrawlerUrlManager;
>> ALOAD_2 // Ljava/lang/String; nm
>> ALOAD_1 // Ledu/brown/cs/cs032/crawler/CrawlerUrl;
>> base
>> INVOKEINTERFACE
>> edu.brown.cs.cs032.crawler.CrawlerUrlManager.normalizeNewUrl
>> (Ljava/lang/String;Ledu/brown/cs/cs032/crawler/CrawlerUrl;)Ledu/brown/cs/cs032/crawler/CrawlerUrl;
>> ASTORE_3
>> ALOAD_3 // Ledu/brown/cs/cs032/crawler/CrawlerUrl;
>> url (line 269)
>> IFNULL L1
>> ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this
>> GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.pages_queued I
>> ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this
>> GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.page_total I
>> IF_ICMPLE L2
>> L1: ALOAD_3 // Ledu/brown/cs/cs032/crawler/CrawlerUrl;
>> url (line 270)
>> ARETURN
>> L2: ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 272)
>> ALOAD_3 // Ledu/brown/cs/cs032/crawler/CrawlerUrl;
>> url
>> INVOKESPECIAL
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.addUrlCandidate
>> (Ledu/brown/cs/cs032/crawler/CrawlerUrl;)Z
>> POP
>> ACONST_NULL (line 274)
>> ARETURN
>> end edu.brown.cs.cs032.crawler.CrawlerUrl
>> addUrlCandidate(edu.brown.cs.cs032.crawler.CrawlerUrl, String)
>>
>> private boolean addUrlCandidate(edu.brown.cs.cs032.crawler.CrawlerUrl):
>> ALOAD_1 // Ledu/brown/cs/cs032/crawler/CrawlerUrl;
>> url (line 278)
>> IFNONNULL L0
>> ICONST_0 (line 279)
>> IRETURN
>> L0: ALOAD_1 // Ledu/brown/cs/cs032/crawler/CrawlerUrl;
>> url (line 281)
>> INVOKEINTERFACE
>> edu.brown.cs.cs032.crawler.CrawlerUrl.getNormalizedName ()Ljava/lang/String;
>> ASTORE_2
>> ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 283)
>> GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.urls_sema Ljava/lang/Object;
>> DUP
>> ASTORE_3
>> MONITORENTER
>> finally -> E2
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 284)
>> | GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.urls_done Ljava/util/Set;
>> | ALOAD_2 // Ljava/lang/String; surl
>> | INVOKEINTERFACE java.util.Set.contains
>> (Ljava/lang/Object;)Z
>> | IFEQ L1
>> | ICONST_0 (line 285)
>> | ALOAD_3
>> | MONITOREXIT
>> finally -> E2
>> IRETURN
>> finally -> E2
>> | L1: ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 286)
>> | GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.urls_done Ljava/util/Set;
>> | ALOAD_2 // Ljava/lang/String; surl
>> | INVOKEINTERFACE java.util.Set.add
>> (Ljava/lang/Object;)Z
>> | POP
>> | ALOAD_3 (line 287)
>> | MONITOREXIT
>> finally -> E2
>> GOTO L2
>> finally -> E2
>> | E2: ASTORE 4
>> | ALOAD_3
>> | MONITOREXIT
>> finally -> E2
>> ALOAD 4
>> ATHROW
>> L2: ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 289)
>> GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.work_sema Ljava/lang/Object;
>> DUP
>> ASTORE_3
>> MONITORENTER
>> finally -> E5
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 290)
>> | GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.work_queue Ljava/util/Set;
>> | ALOAD_1 // Ledu/brown/cs/cs032/crawler/CrawlerUrl;
>> url
>> | INVOKEINTERFACE java.util.Set.contains
>> (Ljava/lang/Object;)Z
>> | IFEQ L3
>> | ICONST_0 (line 291)
>> | ALOAD_3
>> | MONITOREXIT
>> finally -> E5
>> IRETURN
>> finally -> E5
>> | L3: ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 292)
>> | GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.pages_queued I
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this
>> | GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.page_total I
>> | IF_ICMPGT L4
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 293)
>> | DUP
>> | GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.pages_queued I
>> | ICONST_1
>> | IADD
>> | PUTFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.pages_queued I
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 294)
>> | GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.work_queue Ljava/util/Set;
>> | ALOAD_1 // Ledu/brown/cs/cs032/crawler/CrawlerUrl;
>> url
>> | INVOKEINTERFACE java.util.Set.add
>> (Ljava/lang/Object;)Z
>> | POP
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 295)
>> | GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.work_sema Ljava/lang/Object;
>> | INVOKEVIRTUAL java.lang.Object.notify ()V
>> | L4: ALOAD_3 (line 297)
>> | MONITOREXIT
>> finally -> E5
>> GOTO L5
>> finally -> E5
>> | E5: ASTORE 5
>> | ALOAD_3
>> | MONITOREXIT
>> finally -> E5
>> ALOAD 5
>> ATHROW
>> L5: ICONST_1 (line 299)
>> IRETURN
>> end private boolean
>> addUrlCandidate(edu.brown.cs.cs032.crawler.CrawlerUrl)
>>
>> edu.brown.cs.cs032.crawler.CrawlerUrl getNextUrl():
>> ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 303)
>> GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.work_sema Ljava/lang/Object;
>> DUP
>> ASTORE_1
>> MONITORENTER
>> finally -> E1
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 304)
>> | DUP
>> | GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.active_count I
>> | ICONST_1
>> | ISUB
>> | PUTFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.active_count I
>> | ALOAD_1 (line 305)
>> | MONITOREXIT
>> finally -> E1
>> GOTO L0
>> finally -> E1
>> | E1: ASTORE_2
>> | ALOAD_1
>> | MONITOREXIT
>> finally -> E1
>> ALOAD_2
>> ATHROW
>> L0: ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 310)
>> GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.work_sema Ljava/lang/Object;
>> DUP
>> ASTORE_2
>> MONITORENTER
>> finally -> E5
>> | L1: ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 311)
>> | GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.work_queue Ljava/util/Set;
>> | INVOKEINTERFACE java.util.Set.isEmpty ()Z
>> | IFEQ L3
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 312)
>> | GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.active_count I
>> | IFNE L2
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 313)
>> | GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.work_sema Ljava/lang/Object;
>> | INVOKEVIRTUAL java.lang.Object.notifyAll ()V
>> | ACONST_NULL (line 314)
>> | ALOAD_2
>> | MONITOREXIT
>> finally -> E5
>> ARETURN
>> finally -> E5
>> | catch java.lang.InterruptedException -> E2
>> | | L2: ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 317)
>> | | GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.work_sema Ljava/lang/Object;
>> | | INVOKEVIRTUAL java.lang.Object.wait ()V
>> | catch java.lang.InterruptedException -> E2
>> | GOTO L1 (line 319)
>> | E2: ASTORE_3 (line 318)
>> | GOTO L1 (line 319)
>> | L3: ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 322)
>> | GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.work_queue Ljava/util/Set;
>> | INVOKEINTERFACE java.util.Set.iterator
>> ()Ljava/util/Iterator;
>> | ASTORE_3
>> | ALOAD_3 // Ljava/util/Iterator; it (line 323)
>> | INVOKEINTERFACE java.util.Iterator.next
>> ()Ljava/lang/Object;
>> | CHECKCAST edu.brown.cs.cs032.crawler.CrawlerUrl
>> | ASTORE_1
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 324)
>> | GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.work_queue Ljava/util/Set;
>> | ALOAD_1 // Ledu/brown/cs/cs032/crawler/CrawlerUrl;
>> u
>> | INVOKEINTERFACE java.util.Set.remove
>> (Ljava/lang/Object;)Z
>> | POP
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 325)
>> | DUP
>> | GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.active_count I
>> | ICONST_1
>> | IADD
>> | PUTFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.active_count I
>> | ALOAD_2 (line 326)
>> | MONITOREXIT
>> finally -> E5
>> GOTO L4
>> finally -> E5
>> | E5: ASTORE 4
>> | ALOAD_2
>> | MONITOREXIT
>> finally -> E5
>> ALOAD 4
>> ATHROW
>> L4: ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 328)
>> GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.url_manager
>> Ledu/brown/cs/cs032/crawler/CrawlerUrlManager;
>> ALOAD_1 // Ledu/brown/cs/cs032/crawler/CrawlerUrl;
>> u
>> INVOKEINTERFACE
>> edu.brown.cs.cs032.crawler.CrawlerUrlManager.beginProcessing
>> (Ledu/brown/cs/cs032/crawler/CrawlerUrl;)Z
>> IFEQ L5
>> ALOAD_1 // Ledu/brown/cs/cs032/crawler/CrawlerUrl;
>> u (line 329)
>> ARETURN
>> L5: ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 331)
>> GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.work_sema Ljava/lang/Object;
>> DUP
>> ASTORE_2
>> MONITORENTER
>> finally -> E7
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 332)
>> | DUP
>> | GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.page_total I
>> | ICONST_1
>> | IADD
>> | PUTFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.page_total I
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 333)
>> | DUP
>> | GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.active_count I
>> | ICONST_1
>> | ISUB
>> | PUTFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.active_count I
>> | ALOAD_2 (line 334)
>> | MONITOREXIT
>> finally -> E7
>> GOTO L6
>> finally -> E7
>> | E7: ASTORE 5
>> | ALOAD_2
>> | MONITOREXIT
>> finally -> E7
>> ALOAD 5
>> ATHROW
>> L6: GOTO L0 (line 336)
>> end edu.brown.cs.cs032.crawler.CrawlerUrl getNextUrl()
>>
>> void addFutureUrls(java.util.Collection):
>> ALOAD_1 // Ljava/util/Collection; c (line 340)
>> IFNULL L0
>> ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 341)
>> GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.future_sema Ljava/lang/Object;
>> DUP
>> ASTORE_2
>> MONITORENTER
>> finally -> E1
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 342)
>> | GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.future_urls Ljava/util/Set;
>> | ALOAD_1 // Ljava/util/Collection; c
>> | INVOKEINTERFACE java.util.Set.addAll
>> (Ljava/util/Collection;)Z
>> | POP
>> | ALOAD_2 (line 343)
>> | MONITOREXIT
>> finally -> E1
>> GOTO L0
>> finally -> E1
>> | E1: ASTORE_3
>> | ALOAD_2
>> | MONITOREXIT
>> finally -> E1
>> ALOAD_3
>> ATHROW
>> L0: RETURN (line 345)
>> end void addFutureUrls(java.util.Collection)
>>
>> private void startThreads():
>> ICONST_0 (line 354)
>> ISTORE_1
>> L0: ILOAD_1 // I i
>> ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this
>> GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.num_threads I
>> IF_ICMPGE L2
>> NEW edu.brown.cs.cs032.crawler.crawl.CrawlThread
>> (line 355)
>> DUP
>> ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this
>> ILOAD_1 // I i
>> INVOKESPECIAL
>> edu.brown.cs.cs032.crawler.crawl.CrawlThread.<init>
>> (Ledu/brown/cs/cs032/crawler/crawl/CrawlMain;I)V
>> ASTORE_2
>> ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 356)
>> GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.thread_set Ljava/util/Collection;
>> ALOAD_2 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlThread; ct
>> INVOKEINTERFACE java.util.Collection.add
>> (Ljava/lang/Object;)Z
>> POP
>> ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 357)
>> GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.work_sema Ljava/lang/Object;
>> DUP
>> ASTORE_3
>> MONITORENTER
>> finally -> E1
>> | ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 358)
>> | DUP
>> | GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.active_count I
>> | ICONST_1
>> | IADD
>> | PUTFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.active_count I
>> | ALOAD_2 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlThread; ct (line 359)
>> | INVOKEVIRTUAL
>> edu.brown.cs.cs032.crawler.crawl.CrawlThread.start ()V
>> | ALOAD_3 (line 360)
>> | MONITOREXIT
>> finally -> E1
>> GOTO L1
>> finally -> E1
>> | E1: ASTORE 4
>> | ALOAD_3
>> | MONITOREXIT
>> finally -> E1
>> ALOAD 4
>> ATHROW
>> L1: IINC_1 1 // I i (line 354)
>> GOTO L0
>> L2: RETURN (line 362)
>> end private void startThreads()
>>
>> private void waitForDone():
>> ALOAD_0 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlMain; this (line 365)
>> GETFIELD
>> edu.brown.cs.cs032.crawler.crawl.CrawlMain.thread_set Ljava/util/Collection;
>> INVOKEINTERFACE java.util.Collection.iterator
>> ()Ljava/util/Iterator;
>> ASTORE_1
>> L0: ALOAD_1 // Ljava/util/Iterator; i$
>> INVOKEINTERFACE java.util.Iterator.hasNext ()Z
>> IFEQ L2
>> ALOAD_1 // Ljava/util/Iterator; i$
>> INVOKEINTERFACE java.util.Iterator.next
>> ()Ljava/lang/Object;
>> CHECKCAST edu.brown.cs.cs032.crawler.crawl.CrawlThread
>> ASTORE_2
>> catch java.lang.InterruptedException -> E0
>> | ALOAD_2 //
>> Ledu/brown/cs/cs032/crawler/crawl/CrawlThread; ct (line 367)
>> | INVOKEVIRTUAL
>> edu.brown.cs.cs032.crawler.crawl.CrawlThread.join ()V
>> catch java.lang.InterruptedException -> E0
>> GOTO L1 (line 369)
>> E0: ASTORE_3 (line 368)
>> L1: GOTO L0 (line 369)
>> L2: RETURN (line 371)
>> end private void waitForDone()
>>
>> end public class edu.brown.cs.cs032.crawler.crawl.CrawlMain
>> -- (OutOfMemoryError) GC overhead limit exceeded
>> GC overhead limit exceeded
>> java.lang.OutOfMemoryError: GC overhead limit exceeded
>> at java.util.Arrays.copyOfRange(Arrays.java:3209)
>> at java.lang.String.<init>(String.java:216)
>> at java.lang.StringBuffer.toString(StringBu
>
> _______________________________________________
> aspectj-users mailing list
> aspectj-users@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>
>