| OLD | NEW | 
|---|
| 1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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 6548 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 6559   __ j(equal, &normal_sequence); | 6559   __ j(equal, &normal_sequence); | 
| 6560   __ movq(rcx, FieldOperand(rbx, Cell::kValueOffset)); | 6560   __ movq(rcx, FieldOperand(rbx, Cell::kValueOffset)); | 
| 6561   Handle<Map> allocation_site_map( | 6561   Handle<Map> allocation_site_map( | 
| 6562       masm->isolate()->heap()->allocation_site_map(), | 6562       masm->isolate()->heap()->allocation_site_map(), | 
| 6563       masm->isolate()); | 6563       masm->isolate()); | 
| 6564   __ Cmp(FieldOperand(rcx, 0), allocation_site_map); | 6564   __ Cmp(FieldOperand(rcx, 0), allocation_site_map); | 
| 6565   __ j(not_equal, &normal_sequence); | 6565   __ j(not_equal, &normal_sequence); | 
| 6566 | 6566 | 
| 6567   // Save the resulting elements kind in type info | 6567   // Save the resulting elements kind in type info | 
| 6568   __ Integer32ToSmi(rdx, rdx); | 6568   __ Integer32ToSmi(rdx, rdx); | 
| 6569   __ movq(FieldOperand(rcx, AllocationSite::kPayloadOffset), rdx); | 6569   __ movq(FieldOperand(rcx, AllocationSite::kTransitionInfoOffset), rdx); | 
| 6570   __ SmiToInteger32(rdx, rdx); | 6570   __ SmiToInteger32(rdx, rdx); | 
| 6571 | 6571 | 
| 6572   __ bind(&normal_sequence); | 6572   __ bind(&normal_sequence); | 
| 6573   int last_index = GetSequenceIndexFromFastElementsKind( | 6573   int last_index = GetSequenceIndexFromFastElementsKind( | 
| 6574       TERMINAL_FAST_ELEMENTS_KIND); | 6574       TERMINAL_FAST_ELEMENTS_KIND); | 
| 6575   for (int i = 0; i <= last_index; ++i) { | 6575   for (int i = 0; i <= last_index; ++i) { | 
| 6576     Label next; | 6576     Label next; | 
| 6577     ElementsKind kind = GetFastElementsKindFromSequenceIndex(i); | 6577     ElementsKind kind = GetFastElementsKindFromSequenceIndex(i); | 
| 6578     __ cmpl(rdx, Immediate(kind)); | 6578     __ cmpl(rdx, Immediate(kind)); | 
| 6579     __ j(not_equal, &next); | 6579     __ j(not_equal, &next); | 
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 6671 | 6671 | 
| 6672   // The type cell may have undefined in its value. | 6672   // The type cell may have undefined in its value. | 
| 6673   __ Cmp(rdx, undefined_sentinel); | 6673   __ Cmp(rdx, undefined_sentinel); | 
| 6674   __ j(equal, &no_info); | 6674   __ j(equal, &no_info); | 
| 6675 | 6675 | 
| 6676   // The type cell has either an AllocationSite or a JSFunction | 6676   // The type cell has either an AllocationSite or a JSFunction | 
| 6677   __ Cmp(FieldOperand(rdx, 0), | 6677   __ Cmp(FieldOperand(rdx, 0), | 
| 6678          Handle<Map>(masm->isolate()->heap()->allocation_site_map())); | 6678          Handle<Map>(masm->isolate()->heap()->allocation_site_map())); | 
| 6679   __ j(not_equal, &no_info); | 6679   __ j(not_equal, &no_info); | 
| 6680 | 6680 | 
| 6681   __ movq(rdx, FieldOperand(rdx, AllocationSite::kPayloadOffset)); | 6681   __ movq(rdx, FieldOperand(rdx, AllocationSite::kTransitionInfoOffset)); | 
| 6682   __ SmiToInteger32(rdx, rdx); | 6682   __ SmiToInteger32(rdx, rdx); | 
| 6683   __ jmp(&switch_ready); | 6683   __ jmp(&switch_ready); | 
| 6684   __ bind(&no_info); | 6684   __ bind(&no_info); | 
| 6685   __ movq(rdx, Immediate(GetInitialFastElementsKind())); | 6685   __ movq(rdx, Immediate(GetInitialFastElementsKind())); | 
| 6686   __ bind(&switch_ready); | 6686   __ bind(&switch_ready); | 
| 6687 | 6687 | 
| 6688   if (argument_count_ == ANY) { | 6688   if (argument_count_ == ANY) { | 
| 6689     Label not_zero_case, not_one_case; | 6689     Label not_zero_case, not_one_case; | 
| 6690     __ testq(rax, rax); | 6690     __ testq(rax, rax); | 
| 6691     __ j(not_zero, ¬_zero_case); | 6691     __ j(not_zero, ¬_zero_case); | 
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 6797   __ bind(&fast_elements_case); | 6797   __ bind(&fast_elements_case); | 
| 6798   GenerateCase(masm, FAST_ELEMENTS); | 6798   GenerateCase(masm, FAST_ELEMENTS); | 
| 6799 } | 6799 } | 
| 6800 | 6800 | 
| 6801 | 6801 | 
| 6802 #undef __ | 6802 #undef __ | 
| 6803 | 6803 | 
| 6804 } }  // namespace v8::internal | 6804 } }  // namespace v8::internal | 
| 6805 | 6805 | 
| 6806 #endif  // V8_TARGET_ARCH_X64 | 6806 #endif  // V8_TARGET_ARCH_X64 | 
| OLD | NEW | 
|---|