5 #ifndef V8_X64_CODE_STUBS_X64_H_
6 #define V8_X64_CODE_STUBS_X64_H_
15 class StringHelper :
public AllStatic {
40 Register scratch, Label* chars_not_equal,
41 Label::Distance near_jump = Label::kFar);
102 class DictionaryBits:
public BitField<int, 0, 4> {};
103 class ResultBits:
public BitField<int, 4, 4> {};
104 class IndexBits:
public BitField<int, 8, 4> {};
105 class LookupModeBits:
public BitField<LookupMode, 12, 1> {};
208 if (
object.is(
rcx)) {
299 if (candidate.
is(
rcx))
continue;
300 if (candidate.
is(
r1))
continue;
301 if (candidate.
is(
r2))
continue;
302 if (candidate.
is(
r3))
continue;
350 class ObjectBits:
public BitField<int, 0, 4> {};
351 class ValueBits:
public BitField<int, 4, 4> {};
352 class AddressBits:
public BitField<int, 8, 4> {};
353 class RememberedSetActionBits:
public BitField<RememberedSetAction, 12, 1> {};
354 class SaveFPRegsModeBits:
public BitField<SaveFPRegsMode, 13, 1> {};
357 RegisterAllocation
regs_;
void movp(Register dst, void *ptr, RelocInfo::Mode rmode)
byte * instruction_start()
static void FlushICache(void *start, size_t size)
Source to read snapshot and builtins files from.
static const int kHeaderSize
static const int kElementsStartIndex
static const int kCapacityIndex
IncrementalMarking * incremental_marking()
void ActivateGeneratedStub(Code *stub)
void PushCallerSaved(SaveFPRegsMode fp_mode, Register exclusion1=no_reg, Register exclusion2=no_reg, Register exclusion3=no_reg)
void PopCallerSaved(SaveFPRegsMode fp_mode, Register exclusion1=no_reg, Register exclusion2=no_reg, Register exclusion3=no_reg)
static const int kElementsStartOffset
virtual bool SometimesSetsUpAFrame()
static const int kCapacityOffset
Register dictionary() const
static void GeneratePositiveLookup(MacroAssembler *masm, Label *miss, Label *done, Register elements, Register name, Register r0, Register r1)
DEFINE_NULL_CALL_INTERFACE_DESCRIPTOR()
static const int kTotalProbes
NameDictionaryLookupStub(Isolate *isolate, Register dictionary, Register result, Register index, LookupMode mode)
static const int kInlinedProbes
DEFINE_PLATFORM_CODE_STUB(NameDictionaryLookup, PlatformCodeStub)
static void GenerateNegativeLookup(MacroAssembler *masm, Label *miss, Label *done, Register properties, Handle< Name > name, Register r0)
void Restore(MacroAssembler *masm)
void SaveCallerSaveRegisters(MacroAssembler *masm, SaveFPRegsMode mode)
Register GetRegThatIsNotRcxOr(Register r1, Register r2, Register r3)
void Save(MacroAssembler *masm)
RegisterAllocation(Register object, Register address, Register scratch0)
void RestoreCallerSaveRegisters(MacroAssembler *masm, SaveFPRegsMode mode)
void GenerateIncremental(MacroAssembler *masm, Mode mode)
void Activate(Code *code)
void InformIncrementalMarker(MacroAssembler *masm)
RememberedSetAction remembered_set_action() const
SaveFPRegsMode save_fp_regs_mode() const
RecordWriteStub(Isolate *isolate, Register object, Register value, Register address, RememberedSetAction remembered_set_action, SaveFPRegsMode fp_mode)
OnNoNeedToInformIncrementalMarker
@ kUpdateRememberedSetOnNoNeedToInformIncrementalMarker
@ kReturnOnNoNeedToInformIncrementalMarker
static const byte kTwoByteNopInstruction
DEFINE_NULL_CALL_INTERFACE_DESCRIPTOR()
RecordWriteStub(uint32_t key, Isolate *isolate)
virtual Major MajorKey() const FINAL OVERRIDE
static const byte kFiveByteJumpInstruction
void CheckNeedsToInformIncrementalMarker(MacroAssembler *masm, OnNoNeedToInformIncrementalMarker on_no_need, Mode mode)
DISALLOW_COPY_AND_ASSIGN(RecordWriteStub)
static const byte kFiveByteNopInstruction
static void Patch(Code *stub, Mode mode)
static const byte kTwoByteJumpInstruction
virtual bool SometimesSetsUpAFrame()
static Mode GetMode(Code *stub)
virtual void Generate(MacroAssembler *masm) OVERRIDE
static void GenerateCopyCharacters(MacroAssembler *masm, Register dest, Register src, Register count, String::Encoding encoding)
static void GenerateFlatOneByteStringEquals(MacroAssembler *masm, Register left, Register right, Register scratch1, Register scratch2)
DISALLOW_IMPLICIT_CONSTRUCTORS(StringHelper)
static void GenerateCompareFlatOneByteStrings(MacroAssembler *masm, Register left, Register right, Register scratch1, Register scratch2, Register scratch3, Register scratch4)
static void GenerateOneByteCharsCompareLoop(MacroAssembler *masm, Register left, Register right, Register length, Register scratch, Label *chars_not_equal, Label::Distance near_jump=Label::kFar)
enable harmony numeric enable harmony object literal extensions Optimize object Array DOM strings and string trace pretenuring decisions of HAllocate instructions Enables optimizations which favor memory size over execution speed maximum source size in bytes considered for a single inlining maximum cumulative number of AST nodes considered for inlining trace the tracking of allocation sites deoptimize every n garbage collections perform array bounds checks elimination analyze liveness of environment slots and zap dead values flushes the cache of optimized code for closures on every GC allow uint32 values on optimize frames if they are used only in safe operations track concurrent recompilation artificial compilation delay in ms do not emit check maps for constant values that have a leaf deoptimize the optimized code if the layout of the maps changes enable context specialization in TurboFan execution budget before interrupt is triggered max percentage of megamorphic generic ICs to allow optimization enable use of SAHF instruction if enable use of VFP3 instructions if available enable use of NEON instructions if enable use of SDIV and UDIV instructions if enable use of MLS instructions if enable loading bit constant by means of movw movt instruction enable unaligned accesses for enable use of d16 d31 registers on ARM this requires VFP3 force all emitted branches to be in long enable alignment of csp to bytes on platforms which prefer the register to always be expose gc extension under the specified name show built in functions in stack traces use random jit cookie to mask large constants minimum length for automatic enable preparsing CPU profiler sampling interval in microseconds trace out of bounds accesses to external arrays default size of stack region v8 is allowed to maximum length of function source code printed in a stack trace min size of a semi the new space consists of two semi spaces print one trace line following each garbage collection do not print trace line after scavenger collection print cumulative GC statistics in name
enable harmony numeric enable harmony object literal extensions Optimize object Array DOM strings and string trace pretenuring decisions of HAllocate instructions Enables optimizations which favor memory size over execution speed maximum source size in bytes considered for a single inlining maximum cumulative number of AST nodes considered for inlining trace the tracking of allocation sites deoptimize every n garbage collections perform array bounds checks elimination analyze liveness of environment slots and zap dead values flushes the cache of optimized code for closures on every GC allow uint32 values on optimize frames if they are used only in safe operations track concurrent recompilation artificial compilation delay in ms do not emit check maps for constant values that have a leaf deoptimize the optimized code if the layout of the maps changes enable context specialization in TurboFan execution budget before interrupt is triggered max percentage of megamorphic generic ICs to allow optimization enable use of SAHF instruction if enable use of VFP3 instructions if available enable use of NEON instructions if enable use of SDIV and UDIV instructions if enable use of MLS instructions if enable loading bit constant by means of movw movt instruction enable unaligned accesses for enable use of d16 d31 registers on ARM this requires VFP3 force all emitted branches to be in long mode(MIPS only)") DEFINE_BOOL(enable_always_align_csp
#define DCHECK(condition)
bool AreAliased(const CPURegister ®1, const CPURegister ®2, const CPURegister ®3=NoReg, const CPURegister ®4=NoReg, const CPURegister ®5=NoReg, const CPURegister ®6=NoReg, const CPURegister ®7=NoReg, const CPURegister ®8=NoReg)
void ArrayNativeCode(MacroAssembler *masm, Label *call_generic_code)
Debugger support for the V8 JavaScript engine.
static Register from_code(int code)
static Register FromAllocationIndex(int index)
bool is(Register reg) const
static int NumAllocatableRegisters()