[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [aspectj-users] OutOfMemory error in aspectj
|
Sorry to hear you were hit by this issue - I do see it come up now and
again that the script specifies the heap size.
> 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.
i agree with that.
> 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.
sure
There are other -X options that are fine because they are AspectJ options...
-Xset, -Xnoinline, -Xlint
so I wouldn't police -X options in general - I would perhaps police any
that the arg parser isn't explicitly handling.
If you do me a patch, I'll look to integrate it.
cheers,
Andy.
2009/4/6 100ji <itz100ji@xxxxxxxxx>:
> 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:
>
> 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
>>
>>
> _______________________________________________
> aspectj-users mailing list
> aspectj-users@xxxxxxxxxxx
> h