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