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
which patent is which | 400 comments | Create New Account
Comments belong to whoever posts them. Please notify us of inappropriate comments.
Day 15 at the Oracle v. Google Trial ~pj
Authored by: Anonymous on Friday, May 11 2012 @ 07:12 PM EDT
Google exposed this on redirect, but they'd better hammer that point in their
closing statement, because (from the report here) they may not have put enough
emphasis on it in the jury's mind...

MSS2

[ Reply to This | Parent | # ]

Also dynamic vs. static
Authored by: YurtGuppy on Friday, May 11 2012 @ 07:38 PM EDT
Oracle and Google are also tussling over
dynamic and static.

Dynamic: it happens while the app is running
Static: it happens any other time (in this case, before)

Imagine a trip to the grocery store (you are executing the brain-program
"trip to store").

A static optimizer looks at the map, rubs it's chin and sees the shorter route
before you've started off.

As you travel, a dynamic optimizer would say "No! turn here and we'll get
there faster!"



Static - changing the plan before you start out
Dynamic - changing the plan while the plan is in execution

So McFadden says there isn't any data during the static optimization, the app
isn't running. No sloshing around of network packets or whatever. The app is a
cold dead nothing.

Oracle tries really hard to get the word "dynamic" to come out of
McFadden's mouth. At the end they change the context just to get the word to
appear.



---
a small fish in an even smaller pond

[ Reply to This | Parent | # ]

Day 15 at the Oracle v. Google Trial ~pj
Authored by: Anonymous on Friday, May 11 2012 @ 09:12 PM EDT
I agree with your analysis here. The Oracle lawyers simply don't understand the
difference between a symbolic reference and an indirect reference. These two
terms are chalk and cheese, and they're certainly not disputed as they go back
to the 60's at least. Oracle's case has a mistaken foundation as a matter of
fact.

The trouble is, this is obvious to us because we have the required CompSci
background, but the jury does not. Google still has some work to do to make
this rather dramatic mistake plain to the jury and to make sure they realize
that it's not just a matter of opinion.

After all, these are two completely different concepts, and you can't have the
patent cover one concept but the verdict be based on use of the other.

[ Reply to This | Parent | # ]

Can Google get Donald Knuth as a rebuttal witness?
Authored by: Guil Rarey on Friday, May 11 2012 @ 10:06 PM EDT
Just to provide definitions of:
dynamic
static
symbolic reference
reference resolution
indirect index (or correct term of art)
index lookup (to contrast reference resolution)

1)As they are used in computer science and
2)When those terms and their usage became standard within that discipline

Just to clarify for the jury that these terms have specific, well-understood
technical definitions which were well-established long before this patent was
written.

Also, can you imagine qualifying him as an expert? "Look your Honor,
imagine that John Marshall, Learned Hand, and Oliver Wendell Holmes *together*
just strolled in to give you a few pointers on your opinions. It's like
that." No, I know, that's not how it works. But imagine Oracle objecting
on the grounds that Knuth hasn't even managed to complete his primary work.
"You've only managed to complete 4 volumes of a 7 volume work. How do we
know you're really an expert?"


---
If the only way you can value something is with money, you have no idea what
it's worth. If you try to make money by making money, you won't. You might con
so

[ Reply to This | Parent | # ]

which patent is which
Authored by: Anonymous on Friday, May 11 2012 @ 11:33 PM EDT
Because I keep getting the two confused, let me summarize them both here:


US Patent 6,061,520 is about the "clinit optimization".

This is where the Java compiler (or the VM? I'm not sure) simulates execution of some of the bytecodes in the <clinit> method, to figure out what values those bytecodes will put into an array (the optimization only applies to arrays that are initialized with a bunch of numbers, or other values).

Although Android also has an optimization for array initialization in <clinit>, their version doesn't infringe the '520 patent because it doesn't simulate execution of the bytecodes at all (which would require tracking the effect of each bytecode on a stack). Android uses a completely different, much simpler technique: pattern matching. It just checks for the expected pattern of bytecodes, and whenever its found it says "yup, thats an array initialization" and steals the numbers from the proper parts of the pattern. Because of this, it can't cope with other patterns which would also be valid array initialization code, but who cares, because all Java compilers actually emit the same simple pattern!


US Patent RE38,104 covers dynamic resolving of a symbolic reference which is embedded in a bytecode instruction, and then replacing that bytecode instruction with a different one containing the resolved index (so that you won't have to resolve it all over again the next time you execute that instruction).

This is just an example of a standard decades-old CS technique called memoization, and its absolutely shameful that a patent was issued for it (even if the patent is limited to using memoization in this specific kind of situation, its still ludicrous). If the patent office doesn't reject this patent, I will just cry.

Anyway, Google doesn't infringe this one for several reasons: it covers a dynamic bytecode-replacing optimization, and to the extent that dexopt does a similar bytecode-replacing optimization, it is a static optimization (it doesn't happen at run-time, but rather when the application is compiled or installed). Also it requires resolving a symbolic reference which is embedded in a bytecode instruction, and Dalvik doesn't have symbolic references in its bytecode instructions. They are stored in a different part of the .dex file and referred to by index. It also sounds like they are not resolved lazily during the program's execution, the way Java VMs do it. Instead, it sounds like in Android, they are resolved by the dexopt tool before the application can even be run. (In other words, they are resolved "statically", not "dynamically").

[ Reply to This | Parent | # ]

Day 15 at the Oracle v. Google Trial ~pj
Authored by: Anonymous on Saturday, May 12 2012 @ 05:54 PM EDT
Minor nitpick: A symbol isn't necessarily a string. In fact, it could be a
number, and you could have symbolic references based on numbers *as symbols*;
this would be implemented in the same basic way, where a reference table maps
the number to the corresponding data. The core distinction here being, the
numbers may or may not be sorted, and they may not be consecutive: just because
there's a data location associated with 1, 3, 4 and 5 doesn't mean there's any
data location associated with 2. (I wonder if that's why the judge focused so
heavily on the missing '1' in that testimony, where only the locations of the
start of an instruction were numbered. I hope that's been adequately
clarified.)

This contrasts with what the witness called 'numeric reference' and what I might
call 'indexed reference', or 'pointer arithmetic' for C buffs. In that case, the
location of the data is inherently derivable from a known location and the
number itself. For instance, in C, the syntactic sugar for finding the fourth
element in an int array called 'z' is z[4]. This is actually implemented as and
equivalent to: z+4*sizeof(int); i.e. so long as you know where the array is (and
the size of the data it contains), the numeric reference gives you everything
you need to *arithmetically calculate* the location of the element you want. No
searching involved.

The important take away here is that there is a fundamental difference between
mapping symbols (units of meaning which can be extremely diverse) to data, which
has a cost, and imposing an ordering on data which allows its location to be
derived independently of any such mapping (which can have its own radically
different costs)

[ Reply to This | Parent | # ]

Day 15 at the Oracle v. Google Trial ~pj
Authored by: jjs on Sunday, May 13 2012 @ 02:23 PM EDT
What's described here is similar to Intel indirect memory - it stores a pointer
to the actual location. Used since at least the 8086 (not certain about the
8080, 8008), which was, well, more years ago than needed for the patent to have
expired. And I'm certain (but without proof) it goes back well before that.

This is really old-school stuff.

---
(Note IANAL, I don't play one on TV, etc, consult a practicing attorney, etc,
etc)

[ Reply to This | Parent | # ]

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 )