| Index: src/ia32/lithium-codegen-ia32.cc
|
| diff --git a/src/ia32/lithium-codegen-ia32.cc b/src/ia32/lithium-codegen-ia32.cc
|
| index 423cb69c756ab970e9d1bebe4b1aba06875f4fb3..4fa5baec68e2454b040f2349024109a2c667ad8a 100644
|
| --- a/src/ia32/lithium-codegen-ia32.cc
|
| +++ b/src/ia32/lithium-codegen-ia32.cc
|
| @@ -4218,6 +4218,35 @@ void LCodeGen::DoOsrEntry(LOsrEntry* instr) {
|
| }
|
|
|
|
|
| +void LCodeGen::DoIn(LIn* instr) {
|
| + LOperand* obj = instr->object();
|
| + LOperand* key = instr->key();
|
| + if (key->IsConstantOperand()) {
|
| + __ push(ToImmediate(key));
|
| + } else {
|
| + __ push(ToOperand(key));
|
| + }
|
| + if (obj->IsConstantOperand()) {
|
| + __ push(ToImmediate(obj));
|
| + } else {
|
| + __ push(ToOperand(obj));
|
| + }
|
| + ASSERT(instr->HasPointerMap() && instr->HasDeoptimizationEnvironment());
|
| + LPointerMap* pointers = instr->pointer_map();
|
| + LEnvironment* env = instr->deoptimization_environment();
|
| + RecordPosition(pointers->position());
|
| + RegisterEnvironmentForDeoptimization(env);
|
| + // Create safepoint generator that will also ensure enough space in the
|
| + // reloc info for patching in deoptimization (since this is invoking a
|
| + // builtin)
|
| + SafepointGenerator safepoint_generator(this,
|
| + pointers,
|
| + env->deoptimization_index());
|
| + __ mov(esi, Operand(ebp, StandardFrameConstants::kContextOffset));
|
| + __ InvokeBuiltin(Builtins::IN, CALL_FUNCTION, &safepoint_generator);
|
| +}
|
| +
|
| +
|
| #undef __
|
|
|
| } } // namespace v8::internal
|
|
|