OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 4772 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4783 | 4783 |
4784 // A monomorphic miss (i.e, here the cache is not uninitialized) goes | 4784 // A monomorphic miss (i.e, here the cache is not uninitialized) goes |
4785 // megamorphic. | 4785 // megamorphic. |
4786 __ CompareRoot(r3, Heap::kTheHoleValueRootIndex); | 4786 __ CompareRoot(r3, Heap::kTheHoleValueRootIndex); |
4787 __ b(eq, &initialize); | 4787 __ b(eq, &initialize); |
4788 // MegamorphicSentinel is an immortal immovable object (undefined) so no | 4788 // MegamorphicSentinel is an immortal immovable object (undefined) so no |
4789 // write-barrier is needed. | 4789 // write-barrier is needed. |
4790 __ bind(&megamorphic); | 4790 __ bind(&megamorphic); |
4791 __ LoadRoot(ip, Heap::kUndefinedValueRootIndex); | 4791 __ LoadRoot(ip, Heap::kUndefinedValueRootIndex); |
4792 __ str(ip, FieldMemOperand(r2, JSGlobalPropertyCell::kValueOffset)); | 4792 __ str(ip, FieldMemOperand(r2, JSGlobalPropertyCell::kValueOffset)); |
| 4793 __ jmp(&done); |
4793 | 4794 |
4794 // An uninitialized cache is patched with the function or sentinel to | 4795 // An uninitialized cache is patched with the function or sentinel to |
4795 // indicate the ElementsKind if function is the Array constructor. | 4796 // indicate the ElementsKind if function is the Array constructor. |
4796 __ bind(&initialize); | 4797 __ bind(&initialize); |
4797 // Make sure the function is the Array() function | 4798 // Make sure the function is the Array() function |
4798 __ LoadArrayFunction(r3); | 4799 __ LoadArrayFunction(r3); |
4799 __ cmp(r1, r3); | 4800 __ cmp(r1, r3); |
4800 __ b(ne, ¬_array_function); | 4801 __ b(ne, ¬_array_function); |
4801 | 4802 |
4802 // The target function is the Array constructor, install a sentinel value in | 4803 // The target function is the Array constructor, install a sentinel value in |
(...skipping 2655 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7458 __ Jump(generic_construct_stub, RelocInfo::CODE_TARGET); | 7459 __ Jump(generic_construct_stub, RelocInfo::CODE_TARGET); |
7459 } | 7460 } |
7460 } | 7461 } |
7461 | 7462 |
7462 | 7463 |
7463 #undef __ | 7464 #undef __ |
7464 | 7465 |
7465 } } // namespace v8::internal | 7466 } } // namespace v8::internal |
7466 | 7467 |
7467 #endif // V8_TARGET_ARCH_ARM | 7468 #endif // V8_TARGET_ARCH_ARM |
OLD | NEW |