Oracle's counsel is
clearly resorting to underhanded tactics in this trial-
you may recall that
they outlined their strategy at the beginning of this phase
saying that Google
was going to depend upon wordplay to evade
responsibility.
[They agree that the dex tool does use
simulated execution of bytecodes in
other contexts, but not
here.]
Oracle: But you say the dex tool does not use simulated execution
for the
purpose of static array initialization, yes?
Mr. Parr: Yes. The
dex tool uses pattern matching, as I described. It does
not
represent
simulated execution of those bytecodes.
Oracle: Because according to
you, that has to be done on a stack machine,
against a stack?
Mr. Parr:
Yes. The only meaningful definition of simulated execution on a
stack
machine
is manipulation of a stack.
The dex tool does not manipulate the Java
stack, if you will, while it
determines
these static initialization
elements.
Oracle: Even though the word "stack" appears nowhere in this
claim, it's
your
contention that this claim requires the use of a
stack?
Mr. Parr: Yes, and the reason I think that--
Oracle:
That's enough; your counsel will have a chance to ask about that.
Let's look
again at line 37.
Mr. Parr: My favorite line. [chuckles]
Oracle:
Well, it's my favorite, I don't know if it'll be your favorite after
this.
So this class says it knows how to simulate the effects of
executing
bytecode.
You would agree that this class simulates the execution of
bytecodes?
Mr. Parr: Yes.
Oracle: Line 110, the word "simulate"
appears again. "Simulates the effect
of the
instruction at the given offset
..." That is the word that the engineer chose to
use.
Mr. Parr: Yes,
but I'd point out that-- [Oracle lawyer interrupts] Sorry,
sorry.
Oracle: [Points out lots more places in the code that refers to
simulating
execution; Parr agrees]
Oracle: So when the dex tool
receives the bytecodes to initialize an array,
you
agree that the class
Simulator will visit those bytecodes? You said it visits the
first two
bytecodes.
Mr. Parr: As part of array creation and initialization,
yes.
Redirect of Dr. Parr, by Google
Google: You got some
questions from Mr. Jacobs about the applications
you
looked at, right?
[something about the Mitchell report]
Mr. Parr: I don't remember seeing
an analysis of real-world applications by
Prof.
Mitchell.
Google: You
were shown some parts of the Simulator class. When you have
the
Simulator
class, and it uses parseInstruction, what does that parseInstruction
do?
Mr. Parr: It decodes the individual bytecodes. As Your Honor asked
earlier,
why
does it skip from 0 to 2, it's because it has to occupy two
positions.
parseInstruction decodes those.
Google: Does
parseInstruction lead to another class?
Mr. Parr: [pause] Yes, you're
calling that method on a BytecodeArray.
Google: Is parseNewarray called
by things other than the simulator?
Mr. Parr: Yes, it's used by at least
two things: the basic block identification,
and
something called dex dumper.
Neither of those have anything to do with the
simulator.
Google:
Visiting the first two bytecode instructions. Did those instructions
identify
the initialization of the array?
Mr. Parr: No. Those are the
instructions for creating the array.
ReCross of Dr. Parr by
Oracle:
Oracle: [I didn't understand this at all. The Oracle lawyer
pulled up the
same
debug trace that Parr used earlier to show that there are
no stack operations in
the array initialization, and he started literally
reading the debug messages
from that log. Then he looked at Parr accusingly,
and said something like "is
that correct?"]
Mr. Parr:
Yes.
Oracle: [triumphantly] No further
questions.
Did you notice that nonsensical bit at the end
(though that is not the only
example of nonsense in this transcript)? Oracle's
lawyer is counting
upon the jury being completely confused by these esoteric
technical details, and
puts on an emotional show, pretending that he is
pointing out a contradiction in
the witness's testimony. It's complete
subterfuge. It is quite obvious that Oracle
is putting on a charade hoping that
the lazy
or ignorant will side with them on purely superficial grounds. It is
an example
of the most cynical form of legal posturing.
It seems to me
that this judge understands what is going on and wishes to
nip this whole
affair in the bud, but it must be done in such a way as to follow
all of the
rules.