OLD | NEW |
1 // Copyright 2009 the V8 project authors. All rights reserved. | 1 // Copyright 2009 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
306 // Check whether the elements is a pixel array. | 306 // Check whether the elements is a pixel array. |
307 // rax: untagged index | 307 // rax: untagged index |
308 // rcx: elements array | 308 // rcx: elements array |
309 __ bind(&check_pixel_array); | 309 __ bind(&check_pixel_array); |
310 __ CompareRoot(FieldOperand(rcx, HeapObject::kMapOffset), | 310 __ CompareRoot(FieldOperand(rcx, HeapObject::kMapOffset), |
311 Heap::kPixelArrayMapRootIndex); | 311 Heap::kPixelArrayMapRootIndex); |
312 __ j(not_equal, &slow); | 312 __ j(not_equal, &slow); |
313 __ cmpl(rax, FieldOperand(rcx, PixelArray::kLengthOffset)); | 313 __ cmpl(rax, FieldOperand(rcx, PixelArray::kLengthOffset)); |
314 __ j(above_equal, &slow); | 314 __ j(above_equal, &slow); |
315 __ movq(rcx, FieldOperand(rcx, PixelArray::kExternalPointerOffset)); | 315 __ movq(rcx, FieldOperand(rcx, PixelArray::kExternalPointerOffset)); |
316 __ movb(rax, Operand(rcx, rax, times_1, 0)); | 316 __ movzxbq(rax, Operand(rcx, rax, times_1, 0)); |
317 __ Integer32ToSmi(rax, rax); | 317 __ Integer32ToSmi(rax, rax); |
318 __ ret(0); | 318 __ ret(0); |
319 | 319 |
320 // Slow case: Load name and receiver from stack and jump to runtime. | 320 // Slow case: Load name and receiver from stack and jump to runtime. |
321 __ bind(&slow); | 321 __ bind(&slow); |
322 __ IncrementCounter(&Counters::keyed_load_generic_slow, 1); | 322 __ IncrementCounter(&Counters::keyed_load_generic_slow, 1); |
323 Generate(masm, ExternalReference(Runtime::kKeyedGetProperty)); | 323 Generate(masm, ExternalReference(Runtime::kKeyedGetProperty)); |
324 __ bind(&check_string); | 324 __ bind(&check_string); |
325 // The key is not a smi. | 325 // The key is not a smi. |
326 // Is it a string? | 326 // Is it a string? |
(...skipping 1000 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1327 | 1327 |
1328 // Cache miss: Jump to runtime. | 1328 // Cache miss: Jump to runtime. |
1329 Generate(masm, ExternalReference(IC_Utility(kStoreIC_Miss))); | 1329 Generate(masm, ExternalReference(IC_Utility(kStoreIC_Miss))); |
1330 } | 1330 } |
1331 | 1331 |
1332 | 1332 |
1333 #undef __ | 1333 #undef __ |
1334 | 1334 |
1335 | 1335 |
1336 } } // namespace v8::internal | 1336 } } // namespace v8::internal |
OLD | NEW |