OLD | NEW |
1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 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 5112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5123 __ TailCallRuntime(Runtime::kRegExpConstructResult, 3, 1); | 5123 __ TailCallRuntime(Runtime::kRegExpConstructResult, 3, 1); |
5124 } | 5124 } |
5125 | 5125 |
5126 | 5126 |
5127 static void GenerateRecordCallTarget(MacroAssembler* masm) { | 5127 static void GenerateRecordCallTarget(MacroAssembler* masm) { |
5128 // Cache the called function in a global property cell. Cache states | 5128 // Cache the called function in a global property cell. Cache states |
5129 // are uninitialized, monomorphic (indicated by a JSFunction), and | 5129 // are uninitialized, monomorphic (indicated by a JSFunction), and |
5130 // megamorphic. | 5130 // megamorphic. |
5131 // r1 : the function to call | 5131 // r1 : the function to call |
5132 // r2 : cache cell for call target | 5132 // r2 : cache cell for call target |
5133 Isolate* isolate = masm->isolate(); | |
5134 Label done; | 5133 Label done; |
5135 | 5134 |
5136 ASSERT_EQ(*TypeFeedbackCells::MegamorphicSentinel(isolate), | 5135 ASSERT_EQ(*TypeFeedbackCells::MegamorphicSentinel(masm->isolate()), |
5137 isolate->heap()->undefined_value()); | 5136 masm->isolate()->heap()->undefined_value()); |
5138 ASSERT_EQ(*TypeFeedbackCells::UninitializedSentinel(isolate), | 5137 ASSERT_EQ(*TypeFeedbackCells::UninitializedSentinel(masm->isolate()), |
5139 isolate->heap()->the_hole_value()); | 5138 masm->isolate()->heap()->the_hole_value()); |
5140 | 5139 |
5141 // Load the cache state into r3. | 5140 // Load the cache state into r3. |
5142 __ ldr(r3, FieldMemOperand(r2, JSGlobalPropertyCell::kValueOffset)); | 5141 __ ldr(r3, FieldMemOperand(r2, JSGlobalPropertyCell::kValueOffset)); |
5143 | 5142 |
5144 // A monomorphic cache hit or an already megamorphic state: invoke the | 5143 // A monomorphic cache hit or an already megamorphic state: invoke the |
5145 // function without changing the state. | 5144 // function without changing the state. |
5146 __ cmp(r3, r1); | 5145 __ cmp(r3, r1); |
5147 __ b(eq, &done); | 5146 __ b(eq, &done); |
5148 __ CompareRoot(r3, Heap::kUndefinedValueRootIndex); | 5147 __ CompareRoot(r3, Heap::kUndefinedValueRootIndex); |
5149 __ b(eq, &done); | 5148 __ b(eq, &done); |
(...skipping 2231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7381 __ StoreNumberToDoubleElements(r0, r3, r1, r5, r6, r7, r9, r10, | 7380 __ StoreNumberToDoubleElements(r0, r3, r1, r5, r6, r7, r9, r10, |
7382 &slow_elements); | 7381 &slow_elements); |
7383 __ Ret(); | 7382 __ Ret(); |
7384 } | 7383 } |
7385 | 7384 |
7386 #undef __ | 7385 #undef __ |
7387 | 7386 |
7388 } } // namespace v8::internal | 7387 } } // namespace v8::internal |
7389 | 7388 |
7390 #endif // V8_TARGET_ARCH_ARM | 7389 #endif // V8_TARGET_ARCH_ARM |
OLD | NEW |