decoration decoration
Stories

GROKLAW
When you want to know more...
decoration
For layout only
Home
Archives
Site Map
Search
About Groklaw
Awards
Legal Research
Timelines
ApplevSamsung
ApplevSamsung p.2
ArchiveExplorer
Autozone
Bilski
Cases
Cast: Lawyers
Comes v. MS
Contracts/Documents
Courts
DRM
Gordon v MS
GPL
Grokdoc
HTML How To
IPI v RH
IV v. Google
Legal Docs
Lodsys
MS Litigations
MSvB&N
News Picks
Novell v. MS
Novell-MS Deal
ODF/OOXML
OOXML Appeals
OraclevGoogle
Patents
ProjectMonterey
Psystar
Quote Database
Red Hat v SCO
Salus Book
SCEA v Hotz
SCO Appeals
SCO Bankruptcy
SCO Financials
SCO Overview
SCO v IBM
SCO v Novell
SCO:Soup2Nuts
SCOsource
Sean Daly
Software Patents
Switch to Linux
Transcripts
Unix Books

Gear

Groklaw Gear

Click here to send an email to the editor of this weblog.


You won't find me on Facebook


Donate

Donate Paypal


No Legal Advice

The information on Groklaw is not intended to constitute legal advice. While Mark is a lawyer and he has asked other lawyers and law students to contribute articles, all of these articles are offered to help educate, not to provide specific legal advice. They are not your lawyers.

Here's Groklaw's comments policy.


What's New

STORIES
No new stories

COMMENTS last 48 hrs
No new comments


Sponsors

Hosting:
hosted by ibiblio

On servers donated to ibiblio by AMD.

Webmaster
Tweets from the courtoom | 125 comments | Create New Account
Comments belong to whoever posts them. Please notify us of inappropriate comments.
Corrections Thread
Authored by: bugstomper on Tuesday, May 15 2012 @ 10:25 AM EDT
Please post corrections here, summarizing in the Title box error->correction
or s/error/correction/ to make it easy to scan to see what errors have already
been reported.

[ Reply to This | # ]

Off Topic threads
Authored by: bugstomper on Tuesday, May 15 2012 @ 10:30 AM EDT
Please stay off topic in these threads. Whatever topic that may be.

[ Reply to This | # ]

News Picks Thread
Authored by: bugstomper on Tuesday, May 15 2012 @ 10:33 AM EDT
Please type the title of the News Picks article in the Title box of your comment
and include the link to the article in the body of your comment, preferably make
it a clicky link and posting in HTML Formatted Mode to make it easy for the
readers once the article has scrolled off the News Picks sidebar.

[ Reply to This | # ]

Comes transcripts here
Authored by: bugstomper on Tuesday, May 15 2012 @ 10:39 AM EDT
Please post your transcriptions of the Comes exhibits here with full HTML markup
but posted in Plain Old Text mode to make it easy for PJ to copy and paste.

[ Reply to This | # ]

How many Lawyers (and Paralegals)
Authored by: complex_number on Tuesday, May 15 2012 @ 10:44 AM EDT
would it take to prepare that lot? I know there was a weekend but really?????
With Oracle's over long motion from last week, and not this lot, the costs in
legal bums on seats for both sides must be getting silly.
Will someone come to their senses and call a halt?

Yes and there goes that squadron of 'Flying Pigs (Gloucester Old Spot variety)'
taking off from Farnborough (UK) once again.


---
Ubuntu & 'apt-get' are not the answer to Life, The Universe & Everything which
is of course, "42" or is it 1.618?

[ Reply to This | # ]

How Dr. Mitchell is right even if his side is wrong
Authored by: bugstomper on Tuesday, May 15 2012 @ 10:54 AM EDT
This is really hard to write, since I am about to defend Dr. Mitchell's testimony even though I think that the correct verdict would exonerate Google.

I have been trying to answer one question that I did not see clearly answered by either side in the notes that were reported, and which I could not find delineated in the documentation I found on Dalvik. That documentation shows that the Field@CCCC operand of the iget instruction represents a numerical offset CCCC into a Field Table. It shows that the Field Table is an array of elements, one per field, each element containing three numbers: An index into a Class pool, an index into the Constant Pool pointing to a string which is the name of the field, and an index into the Constant pool pointing to a string which is the type descriptor of the field.

What it doesn't show is exactly how you get from an iget Field@CCCC instruction, which refers to element or offset CCCC in the Field Table, to the iget-quickened instruction which refers to a numerical offset of the data in the field in the instance object.

That conversion is done by dexopt. As described in the documentation, one of the optimizations it performs is that conversion:

For [the] instance field [of] get/put, replace the field index with a byte offset.
Oracle quotes that to try to show that dexopt does symbol resolution. Is the act of replacing the field index with a byte offset actually symbol resolution?

I saw that, and thought about Dr. Mitchell's testimony

Oracle: Do Dalvik instructions contain symbolic references?
Dr. Mitchell: Yes.
Dr. Mitchell: What are they?
Dr. Mitchell: The field indexes.
Oracle: But those are numbers, does it matter?
Dr. Mitchell: Not at all, a number can be a symbolic reference.
And compared it to Andy McFadden's testimony, I think talking about an iget instruction with an operand of Field@01
Google: What does "01" tell you?
Mr. McFadden: Index into the field IDs table.
Google: Does it tell you a location?
Mr. McFadden: Yes.
Google: What happens when you get to location 01 in the field table?
Mr. McFadden: You read the data there, and chase that to the next location.
Google: What happens when you reach the string data table?
Mr. McFadden: At that point, you're no longer working with numeric values; you've got string data, and you have to use those to find a matching field.
Hmm, was Andy McFadden talking about a symbol after all?

I finally chased down how the field index is replaced with a byte offset by looking in the source code. What I found was a bit of a shock. Dr. Mitchell is not talking nonsense, even if there are some semantics for him and Dr. August to argue over.

The code to find the byte offset from the field index ends up in a function in file http://source-android.frandroid.com/dalvik/vm/oo/Object.cpp with the following signature

InstField* dvmFindInstanceField(const ClassObject* clazz,
   const char* fieldName, const char* signature)
and which does the following loop to find the field with the requested name and type descriptor (signature):
  pField = clazz->ifields;
  for (i = 0; i < clazz->ifieldCount; i++, pField++) {
    if (strcmp(fieldName, pField->name) == 0 &&
      strcmp(signature, pField->signature) == 0)
    {
      return pField;
    }
  }
  return NULL;
For you non-programmers who skipped over the block of code instead of just stopping reading this comment, here is what the above code means: The function takes a string which is the name of the field, plus another string that specifies some other information about the field called a "signature", and it goes through every field of the class, one by one, comparing the name and signature of that field with the name and signature being looked for. When it finds a match, it returns a pointer directly to that field.

That lookup of a name as a string in a list of items one of which contains the same string, that is exactly what is meant in common programming parlance by "resolve a symbolic reference".

What Dr. Mitchell was saying is that the iget Field@CCCC instruction has an operand that is a number that refers to a symbol that is the name of the location containing the data to be fetched. When dexopt replaces the instruction with an iget-quicken that has as operand the byte offset into the instance, that is what is usually meant my "symbol resolution".

My conclusion: If you are using ordinary programming or computer science terminology, iget Field@CCCC is an instruction with a symbolic reference.

What about Dr August's testimony that disagrees with Dr. Mitchell? With this deeper understanding of the underlying technology I go back to his statements, recorded faithfully enough by reporter Zach that I can be pretty sure of what went on. Notice how carefully Dr. August is to talk in terms of "the court’s claim construction". He does that every time the result of using ordinary computer science definitions would lead to a different result.

August: [Fumbling to get a pointer stick and arrange the flip chart.] Here we have an instruction 52 and a single operand 01. What is that operand 01? Let’s apply the court’s claim construction and see. “A reference that identifies data.” But does it do so by name other than numeric memory location? Looking at this, 01 directly refers to the location of the data; the entry is at memory location 01. So the claim construction doesn’t apply. This is not a symbolic reference.
Google: Where is that entry 01 located?
August: A reference located in the instruction stream.
Google: Where does it point?
August: An entry in the field ID table in the data portion of the program.
Google: Let’s move to the field ID table. Do the data there qualify as symbolic references?
August: A two-part question as there are two pieces of data: yellow and magenta. Start with 02. It is a reference that identifies data, but 02 is the location of that data, so it’s not a symbolic reference.
Google: What about the 76 in the field id table?
August: The 76 also refers to data, identifies data. 76 is the location in the table in which is occurs, so it is also the numeric memory location.
Google: Is the 01 in the instruction stream referred to as an index?
August: Yes. It’s an index into the table.
Google: What’s the difference between an index and an offset?
August: Both are locations. Offset may be used more commonly when talking about how many bytes into a table you want to traverse. Index more commonly used for tables with larger size entries.
Google: At entry 76 in the string id table, is that a symbolic reference?
August: No, a numeric reference. Doesn’t fit the construction because it identifies the data by location.
Google: String data at entry 8 (string “fun” again). Is that symbolic reference?
August: It is a reference that identifies data. It’s not shown on this board, but I know from looking at the code that it is. To find “fun,” we need to resolve it by looking for the location where it refers to. In resolve.c, this is resolved dynamically, so this does qualify under the claim construction as a symbolic reference.
Google: What about in the course of dexopt? Would it qualify as a symbolic reference?
August: Not if it is resolved statically. Dexopt is a static linking process, so it operates statically and not dynamically.
Google: Were you here for Dr. Mitchell’s testimony? Did you hear him explain that some of the dexopt references were symbolic references?
August: Yes. Dr. Mitchell is saying that all these are symbolic references.
Google: How do you explain the difference in your opinions?
August: Mitchell is applying the court’s claim construction differently.
This is a bit of weaseling by Google and August. They start with the 01 and painfully step through every indexed redirection pointing out all the uses of numerical reference before finally getting to the string and finally admitting that there is a symbol which is being used to name the data being referenced. It sure won't seem to the jury like the 01 operand of the iget is a symbolic reference even though it is. But he never lied by saying that the instruction does not use symbolic reference to reference its target data, that is just an implication by listing all those "numeric references" before finally getting to the symbol. And then he can honestly say that it is not a symbolic reference under the court's construction when used in dexopt because it is not dynamic.

Ok, having defended Dr. Mitchell's testimony, I have to go into why I think Google has it right after all in regards to the '104 patent.

First, dynamic vs static resolution: Google is making the most of the claim construction that the Court imposed that hangs "dynamic resolution" on the definition of "symbolic reference". From a computer science perspective that is just weird, as they do not necessarily go together. From the '104 claims it was a strange thing for Judge Alsup to do, since the six claims of '104 that are in this case do not include any of the claims that mention "dynamic". The six claims are the broadest claims of the patent. On what basis is his reasoning for including "dynamic"?

The Abstract of the '104 patent is all about dynamic symbol resolution and an interpreter of intermediate code instructions, with the resolution happening during interpretation and instructions being rewritten.

IANAL, and certainly not a patent lawyer. I did find a law blog article about writing abstracts for patents that says, in part

Although only a summary, it is prudent to draft an Abstract with care. The Abstract is a part of a written disclosure of the application and Federal Courts may properly rely on an Abstract to construe claims. For this reason, it is beneficial to draft an Abstract at least as broadly as the broadest independent claim.
If that's true, then Judge Alsup could have been correct to hold all the claims to the limitations regarding dynamic resolution.

Oracle is doing their own weaseling about the dynamic aspect, trying to first conflate "dynamic" with the "at runtime" concept that is only relevant to the other patent in the case, and then making their obfuscation worse by conflating "at runtime" with "any time the phone is powered on and so the VM may be running something". In the face of that I don't feel so bad about Google gaining some advantage from the claim construction language they got from Court and then insisting on that language instead of conventional computer science definitions.

Then there are implications of the rejections from the PTO. The broader the patent is construed the more stronger teh rejections based on prior art. As far s I can see from the reexamination report, if any claims survive it will be only on the basis that they are construed as referring to interpreted instructions that specifically contain the symbolic reference and are replaced by the interpreter itself with new instructions that contain numeric references. Java doesn't practice that and I doubt anything else does.

[ Reply to This | # ]

Tweets from the courtoom
Authored by: Anonymous on Tuesday, May 15 2012 @ 11:23 AM EDT
With many thanks to Feldegast and the reporters

Feldegast tweets

Raw feed

[ Reply to This | # ]

1130 has a great parting-shot in it!
Authored by: Anonymous on Tuesday, May 15 2012 @ 10:51 PM EDT
1130 (Google's Memorandum in Opposition to Oracle's Motion to Defer Phase Three) finishes a great parting-shot. The part of the memo before the end, argues that the determination of damages resulting from phase 1 (including for those test files where Judge Alsup overruled the jury's verdict) should be done in this trial, by this jury. Then this:
Finally, Oracle argues that it would be prejudicial to have the jury that found no liability on the test files now be told to consider damages as to those files. Dkt. 1126 at 5-6. This concern can easily be addressed through the Court’s instructions to the jury on statutory damages. “Juries are presumed to follow the court's instructions.” Aguilar v. Alexander, 125 F.3d 815, 820 (9th Cir. 1997) (citing Richardson v. Marsh, 481 U.S. 200, 211, 107 S. Ct. 1702, 95 L. Ed. 2d 176 (1987)); see also Jules Jordan Video, Inc. v. 144942 Canada Inc., 617 F.3d 1146 (9th Cir. 2010) (“There is a strong presumption that juries follow curative instructions. See Doe ex. rel. Rudy-Glanzer v. Glanzer, 232 F.3d 1258, 1270 (9th Cir. 2000).”).

But if Oracle finds that still too risky, it could join Google in waiving the right to have the jury decide the damages for the eight test files and rangeCheck and agree to have these issues tried to the Court.

For all of the foregoing reasons, Oracle’s motion to defer phase three should be denied.

(the bold emphasis is mine, the italics are from the original).

Google basically says "if Oracle doesn't trust the jury, We'd be happy to let the Court decide". But somehow I don't think Oracle would want that...

I smirked when I read it, because the Judge Alsup has expressed a couple of times now, in stronger terms each time, his extreme scepticism with the infringers-profits tack Oracle is pursuing.

[ Reply to This | # ]

Oracle's witness list for phase 3
Authored by: Anonymous on Tuesday, May 15 2012 @ 10:57 PM EDT
1127 is Oracle's list of the next anticpated witnesses. Both Larry Page and Eric Schmidt are on it.

Sigh.

Google, for their part, doesn't have Larry Ellison on their list.

Too bad, I'd love to hear him explain under oath how this case got started.

[ Reply to This | # ]

Groklaw © Copyright 2003-2013 Pamela Jones.
All trademarks and copyrights on this page are owned by their respective owners.
Comments are owned by the individual posters.

PJ's articles are licensed under a Creative Commons License. ( Details )