Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] OutOfMemory error in aspectj

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="" href="http://java.sun.com/" target="_blank">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(StringBuffer.java:585)
    at org.aspectj.weaver.ReferenceType.makeParameterizedSignature(ReferenceType.java:828)
    at org.aspectj.weaver.ReferenceType.<init>(ReferenceType.java:75)
    at org.aspectj.weaver.TypeFactory.createParameterizedType(TypeFactory.java:44)
    at org.aspectj.weaver.ResolvedType.parameterize(ResolvedType.java:1945)
    at org.aspectj.weaver.ReferenceType.getSuperclass(ReferenceType.java:726)
    at org.aspectj.weaver.ResolvedType.getDirectSupertypes(ResolvedType.java:67)
    at org.aspectj.weaver.ReferenceType.isAssignableFrom(ReferenceType.java:431)
    at org.aspectj.weaver.ReferenceType.isAssignableFrom(ReferenceType.java:432)
    at org.aspectj.weaver.ReferenceType.isAssignableFrom(ReferenceType.java:302)
    at org.aspectj.weaver.patterns.KindedPointcut.warnOnConfusingSig(KindedPointcut.java:153)
    at org.aspectj.weaver.patterns.KindedPointcut.matchInternal(KindedPointcut.java:109)
    at org.aspectj.weaver.patterns.Pointcut.match(Pointcut.java:146)
    at org.aspectj.weaver.patterns.AndPointcut.matchInternal(AndPointcut.java:54)
    at org.aspectj.weaver.patterns.Pointcut.match(Pointcut.java:146)
    at org.aspectj.weaver.patterns.AndPointcut.matchInternal(AndPointcut.java:52)
    at org.aspectj.weaver.patterns.Pointcut.match(Pointcut.java:146)
    at org.aspectj.weaver.patterns.AndPointcut.matchInternal(AndPointcut.java:52)
    at org.aspectj.weaver.patterns.Pointcut.match(Pointcut.java:146)
    at org.aspectj.weaver.patterns.AndPointcut.matchInternal(AndPointcut.java:52)
    at org.aspectj.weaver.patterns.Pointcut.match(Pointcut.java:146)
    at org.aspectj.weaver.ShadowMunger.match(ShadowMunger.java:69)
    at org.aspectj.weaver.Advice.match(Advice.java:112)
    at org.aspectj.weaver.bcel.BcelAdvice.match(BcelAdvice.java:140)
    at org.aspectj.weaver.bcel.BcelClassWeaver.match(BcelClassWeaver.java:2981)
    at org.aspectj.weaver.bcel.BcelClassWeaver.matchInvokeInstruction(BcelClassWeaver.java:2940)
    at org.aspectj.weaver.bcel.BcelClassWeaver.match(BcelClassWeaver.java:2697)
    at org.aspectj.weaver.bcel.BcelClassWeaver.match(BcelClassWeaver.java:2483)
    at org.aspectj.weaver.bcel.BcelClassWeaver.weave(BcelClassWeaver.java:486)
    at org.aspectj.weaver.bcel.BcelClassWeaver.weave(BcelClassWeaver.java:98)

warning at /home/suman/exercise/steve_rnr/ytrace/ytrace_examples/crawler/javasrc/edu/brown/cs/cs032/crawler/ytrace

_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/aspectj-users



Back to the top