Ported to ARM and x64. Please review the new files.
http://codereview.chromium.org/8492004/diff/15004/src/ia32/deoptimizer-ia32.cc File src/ia32/deoptimizer-ia32.cc (right): http://codereview.chromium.org/8492004/diff/15004/src/ia32/deoptimizer-ia32.cc#newcode62 src/ia32/deoptimizer-ia32.cc:62: Address curr_reloc_address = code_start_address + pc_offset; On 2011/11/10 15:50:54, Vyacheslav Egorov wrote:
You can just use prev_pc_offset instead calculating real address.
pc_delta = pc_offset - prev_pc_offset;
start address is irrelevant.
Done. http://codereview.chromium.org/8492004/diff/15004/src/ia32/deoptimizer-ia32.cc#newcode156 src/ia32/deoptimizer-ia32.cc:156: RelocInfo rinfo(curr_address + 1, // 1 after the call opcode. On 2011/11/10 15:50:54, Vyacheslav Egorov wrote:
relocation info is not used? I think this is not GC safe
Good catch. Done. http://codereview.chromium.org/8492004/diff/15004/src/ia32/lithium-codegen-ia32.cc File src/ia32/lithium-codegen-ia32.cc (right): http://codereview.chromium.org/8492004/diff/15004/src/ia32/lithium-codegen-ia32.cc#newcode1978 src/ia32/lithium-codegen-ia32.cc:1978: RecordPosition(instr->pointer_map()->position()); On 2011/11/10 15:50:54, Vyacheslav Egorov wrote:
I think this can be rolled back into CallCodeGeneric because it seems
to be just
code duplication now.
Correct. Done. http://codereview.chromium.org/8492004/diff/15004/src/ia32/lithium-codegen-ia32.cc#newcode4419 src/ia32/lithium-codegen-ia32.cc:4419: void LCodeGen::DoLazyBailout(LLazyBailout* instr) { On 2011/11/10 15:50:54, Vyacheslav Egorov wrote:
maybe instruction should be renamed to LazyDeopt?
Yes, I'll do a renaming only change. http://codereview.chromium.org/8492004/diff/15004/src/ia32/lithium-codegen-ia32.h File src/ia32/lithium-codegen-ia32.h (right): http://codereview.chromium.org/8492004/diff/15004/src/ia32/lithium-codegen-ia32.h#newcode215 src/ia32/lithium-codegen-ia32.h:215: void RegisterEnvironmentForDeoptimization(LEnvironment* environment, On 2011/11/10 15:50:54, Vyacheslav Egorov wrote:
maybe use Safepoint::DeoptMode instead of boolean?
Done. http://codereview.chromium.org/8492004/diff/15004/src/lithium.h File src/lithium.h (right): http://codereview.chromium.org/8492004/diff/15004/src/lithium.h#newcode488 src/lithium.h:488: void Register(int deoptimization_index, int translation_index, On 2011/11/10 15:50:54, Vyacheslav Egorov wrote:
one argument on a line
Done. http://codereview.chromium.org/8492004/diff/15004/src/safepoint-table.h File src/safepoint-table.h (right): http://codereview.chromium.org/8492004/diff/15004/src/safepoint-table.h#newcode71 src/safepoint-table.h:71: kDeoptIndexBits> {}; // NOLINT On 2011/11/10 15:50:54, Vyacheslav Egorov wrote:
LONG LINE
Done. http://codereview.chromium.org/8492004/ -- v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev
