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
Symbolic References != Indirect Indexes | 484 comments | Create New Account
Comments belong to whoever posts them. Please notify us of inappropriate comments.
Symbolic vs Numeric References
Authored by: bugstomper on Tuesday, May 15 2012 @ 10:13 PM EDT
"If the numeric references (referred to as CCCC in the trial) were used as
symbolic references as Oracle states, wouldn't the table be in the form of
CCCC1, data1, CCCC2, data2, etc.?"

Not quite, there is another less time-efficient possibility, which is what
Dalvik does to save space.

The Field Table specifies the field's name as a string, and also points to the
class object in the Class Table. The class object has a list of fields, each
containing a name as a string.

Instead of looking up a name in some symbol table like you describe, the code
does a linear search through all the fields of the class looking for the string.
That is slower but it saves space, and the extra time is all spent in advance
during the static symbol resolution when dexopt is run.

[ Reply to This | Parent | # ]

Symbolic vs Numeric References
Authored by: Anonymous on Wednesday, May 16 2012 @ 12:24 AM EDT

CCCC is a number, in hexadecimal.

Hexadecimal is base 16, which is 2 raised to the 4th power. Since we have 10 digits (0-9), six more must be added: A (10), B (11), C (12), D (13), E (14), and F (15).

[ Reply to This | Parent | # ]

Symbolic References != Indirect Indexes
Authored by: Anonymous on Wednesday, May 16 2012 @ 05:03 AM EDT
They are confusing terms of art.


A Symbolic reference needs to be converted first to a
Direct Address or Direct Index or an Indirect Index

But they are not the same thing.


Any data processing program does the same thing, so of course dexopt can resolve
symbolic references

[ Reply to This | Parent | # ]

Shuffle a deck of cards...
Authored by: BitOBear on Wednesday, May 16 2012 @ 06:53 AM EDT
Index Reference: "Give me the third card".

Symbolic Reference: "Give me the jack of diamonds".

In an index, numeric, or address reference you do not have to examine the
contents of the data (e.g. waht's on the card) to determine whether the card in
hand is the card to be returned. You can "dereference" the reference
blindfolded. "Blindfolded" in a computational sense is "using
pure math".

In a Symbolic reference, you must examine each candidate card to determine if
the candidate being considered is the item to be returned. You can not do it
blindfolded.

Now lets pretend that each card has had "an action directive" added to
it on the "back" side of the card. Many are innocuous like "stand
up for one minute", some are positive "hug a stranger", and some
are negative "kill a stranger". These acts themselves are
"found" by finding the card. In the numeric/table lookup/index version
the "front side" of the card could even be blank. In the symbolic
version it must not be blank.

Now once you know that "the ace of spades" is the "kill a
stranger" card, you don't need to look for it in the deck again next time
it comes up. You already know what you will read when you flip over that card.
So when some DRM cartel boss tells you to "pull the ace of spades" you
can just walk directly out and do the deed without consulting the cards. This
direct act is the "optimization".

In the 104 patent you learn which cards are which -only- when you are sent in
search of a card.

In Dalvic, the dexopt process just reads all the cards once, then looks at all
the code for "go do (a card)" instructions and replaces them with the
"go do this act" instructions. (e.g. iget becomes iget_quick).

Now it turns out that Dalvic -never- has a "go do 'the ace of spades'"
(e.g. a symbolic reference) because it has -never- actually shuffled the deck.
It knows that the Ace of Spades is the 52nd card, and the king of spades is the
51st card right down to the ace of hearts being the 1st card. So it never uses
the cards names, it just has "go do card number 52" and it cant -ever-
have the symbol instead of the location.

Now Dalvic has several decks of cards. It has the deck of strings, the deck of
constants, the deck of types and so on. But this doesn't matter because the
instruction knows which deck is which.

Dalvic can also "resolve symbolic references" by having the deck of
strings contain the names of something stored in another place. Curcially,
however, those strings never end up "in the instruction" because the
instruction reference can only be a numeric index.

Crucially again, the dexopt -never- resolves these runtime dynamic references
because it is WHOLLY UNABLE TO DO SO because it is run on the program which
exists -before- there is any data or symbols to reference in this way. The
static optimization can only optimize the static data because the dynamic data
doesn't exist yet.

For instance, the dynamic data in your "contact list" is your list of
friends and enemies and family members and whatnot. When your phone was
delivered the contact list application was installed long before there was a you
with respect to this phone, who could then put those actual contacts in that
list.

Likewise if you update the contact list application dexopt does the same install
task to the application dex file -before- that file is run, and it is running
that file that lets the application read the list of contacts out of the
"list of contacts file or database" and into the application. Again,
no dynamic data can be generated until execution of the application -creates-
-some- -dynamic- -data-.

So number with math to find thing is "table lookup" or "index
lookup".

Against symbol plus pawing around in a bunch of data to find the matching weenee
is "symbol lookup" or "symbolic dereference" or
"resolving a symbolic reference".

The fact that being told to get the "three of clubs" involves the
number 3 is immaterial, because you have to look at the cards to find the card
you want.

Symbolic References are the basis of the worst (most expensive) card trick in
the computer party entertainment fun pack.

[ 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 )