Chromium Code Reviews| Index: src/ia32/stub-cache-ia32.cc |
| diff --git a/src/ia32/stub-cache-ia32.cc b/src/ia32/stub-cache-ia32.cc |
| index 6de9a410d13deb15902d7f26823c10fe987e64c0..1d2e68c599ca05f693f0a3ca7cad5cb06267d472 100644 |
| --- a/src/ia32/stub-cache-ia32.cc |
| +++ b/src/ia32/stub-cache-ia32.cc |
| @@ -3155,6 +3155,43 @@ MaybeObject* KeyedLoadStubCompiler::CompileLoadSpecialized(JSObject* receiver) { |
| } |
| +MaybeObject* KeyedLoadStubCompiler::CompileLoadPixelArray(JSObject* receiver) { |
| + // ----------- S t a t e ------------- |
| + // -- eax : key |
| + // -- edx : receiver |
| + // -- esp[0] : return address |
| + // ----------------------------------- |
| + Label miss; |
| + |
| + // Check that the receiver isn't a smi. |
| + __ test(edx, Immediate(kSmiTagMask)); |
| + __ j(zero, &miss, not_taken); |
| + |
| + // Check that the map matches. |
| + __ cmp(FieldOperand(edx, HeapObject::kMapOffset), |
|
Mads Ager (chromium)
2011/02/01 12:02:12
CheckMap? I believe CheckMap can check for smi as
danno
2011/02/03 12:53:26
Done.
|
| + Immediate(Handle<Map>(receiver->map()))); |
| + __ j(not_equal, &miss, not_taken); |
| + |
| + GenerateFastPixelArrayLoad(masm(), |
| + edx, |
| + eax, |
| + ecx, |
| + ebx, |
| + eax, |
| + &miss, |
| + &miss, |
| + &miss); |
| + |
| + // Handle load cache miss. |
| + __ bind(&miss); |
| + Handle<Code> ic(Builtins::builtin(Builtins::KeyedLoadIC_Miss)); |
| + __ jmp(ic, RelocInfo::CODE_TARGET); |
| + |
| + // Return the generated code. |
| + return GetCode(NORMAL, NULL); |
| +} |
| + |
| + |
| // Specialized stub for constructing objects from functions which only have only |
| // simple assignments of the form this.x = ...; in their body. |
| MaybeObject* ConstructStubCompiler::CompileConstructStub(JSFunction* function) { |