Updated per your comments, removed the code-patching & cache-flushing (and
assembler.cc,h external references.) Will move all that to the remaining
changelist.

Regarding the inlining of the map constant, I will try to provide a little more
detail in separate email, but the short version is that mips does not have
pc-relative loads/stores like arm does, so we cannot use constant pools. We
inline all 32-bit constants into two instructions that load upper 16-bits and
'or' in lower 16-bits. These are LUI (load-upper-immediate) and ORI (or
immediate). Since these are in the instruction stream, we have to invalidate the
I-cache.

Arm has similar instructions movt and movw, and some experimentation was done long ago to replace constant pools there, by Erik, I think. It did not get used, so I presume its slower. We borrowed some of his code/ideas to get our approach
working with relocating.

None of this directly uses INTERNAL_REFERENCES, but we do use those elsewhere.
Will explain in email.

http://codereview.chromium.org/7888004/

--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to