1 // Copyright 2012 the V8 project authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef V8_ARM_CODE_STUBS_ARM_H_ 6 #define V8_ARM_CODE_STUBS_ARM_H_ 7 8 namespace v8 { 9 namespace internal { 10 11 // Trampoline stub to call into native code. To call safely into native code 12 // in the presence of compacting GC (which can move code objects) we need to 13 // keep the code which called into native pinned in the memory. Currently the 14 // simplest approach is to generate such stub early enough so it can never be 15 // moved by GC 16 class DirectCEntryStub: public PlatformCodeStub { 17 public: DirectCEntryStub(Isolate * isolate)18 explicit DirectCEntryStub(Isolate* isolate) : PlatformCodeStub(isolate) {} 19 void GenerateCall(MacroAssembler* masm, Register target); 20 21 private: NeedsImmovableCode()22 Movability NeedsImmovableCode() override { return kImmovable; } 23 24 DEFINE_NULL_CALL_INTERFACE_DESCRIPTOR(); 25 DEFINE_PLATFORM_CODE_STUB(DirectCEntry, PlatformCodeStub); 26 }; 27 28 } // namespace internal 29 } // namespace v8 30 31 #endif // V8_ARM_CODE_STUBS_ARM_H_ 32