summaryrefslogtreecommitdiff
path: root/libjava/contrib/aotcompile.py.in
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/contrib/aotcompile.py.in')
-rw-r--r--libjava/contrib/aotcompile.py.in18
1 files changed, 13 insertions, 5 deletions
diff --git a/libjava/contrib/aotcompile.py.in b/libjava/contrib/aotcompile.py.in
index 9e25c9061a1..9db08d2b59c 100644
--- a/libjava/contrib/aotcompile.py.in
+++ b/libjava/contrib/aotcompile.py.in
@@ -177,11 +177,14 @@ class Job:
def __init__(self, path):
self.path, self.classes, self.blocks = path, {}, None
+ self.classnames = {}
- def addClass(self, bytes):
+ def addClass(self, bytes, name):
"""Subclasses call this from their __init__ method for
every class they find."""
- self.classes[md5.new(bytes).digest()] = bytes
+ digest = md5.new(bytes).digest()
+ self.classes[digest] = bytes
+ self.classnames[digest] = name
def __makeBlocks(self):
"""Split self.classes into chunks that can be compiled to
@@ -200,7 +203,12 @@ class Job:
if the job is subsetted."""
names = {}
for hash, bytes in self.classes.items():
- name = classname(bytes)
+ try:
+ name = classname(bytes)
+ except:
+ warn("job %s: class %s malformed or not a valid class file" \
+ % (self.path, self.classnames[hash]))
+ raise
if not names.has_key(name):
names[name] = []
names[name].append(hash)
@@ -302,7 +310,7 @@ class JarJob(Job):
if bytes.startswith(ZIPMAGIC):
self._walk(zipfile.ZipFile(StringIO.StringIO(bytes)))
elif bytes.startswith(CLASSMAGIC):
- self.addClass(bytes)
+ self.addClass(bytes, name)
class DirJob(Job):
"""A Job whose origin was a directory of classfiles."""
@@ -319,7 +327,7 @@ class DirJob(Job):
fp = open(path, "r")
magic = fp.read(4)
if magic == CLASSMAGIC:
- self.addClass(magic + fp.read())
+ self.addClass(magic + fp.read(), name)
def weed_jobs(jobs):
"""Remove any jarfiles that are completely contained within