5 #ifndef V8_X87_CODE_STUBS_X87_H_
6 #define V8_X87_CODE_STUBS_X87_H_
14 Label* call_generic_code);
17 class StringHelper :
public AllStatic {
45 Register scratch, Label* chars_not_equal,
46 Label::Distance chars_not_equal_near = Label::kFar);
107 class DictionaryBits:
public BitField<int, 0, 3> {};
108 class ResultBits:
public BitField<int, 3, 3> {};
109 class IndexBits:
public BitField<int, 6, 3> {};
110 class LookupModeBits:
public BitField<LookupMode, 9, 1> {};
213 if (
object.is(
ecx)) {
314 if (candidate.
is(
ecx))
continue;
315 if (candidate.
is(
r1))
continue;
316 if (candidate.
is(
r2))
continue;
317 if (candidate.
is(
r3))
continue;
365 class ObjectBits:
public BitField<int, 0, 3> {};
366 class ValueBits:
public BitField<int, 3, 3> {};
367 class AddressBits:
public BitField<int, 6, 3> {};
368 class RememberedSetActionBits:
public BitField<RememberedSetAction, 9, 1> {};
369 class SaveFPRegsModeBits :
public BitField<SaveFPRegsMode, 10, 1> {};
371 RegisterAllocation
regs_;
void fnsave(const Operand &adr)
void add(Register dst, Register src1, const Operand &src2, SBit s=LeaveCC, Condition cond=al)
void sub(Register dst, Register src1, const Operand &src2, SBit s=LeaveCC, Condition cond=al)
void frstor(const Operand &adr)
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 mov(Register rd, Register rt)
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)
void Save(MacroAssembler *masm)
RegisterAllocation(Register object, Register address, Register scratch0)
Register GetRegThatIsNotEcxOr(Register r1, Register r2, Register r3)
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 GenerateCompareFlatOneByteStrings(MacroAssembler *masm, Register left, Register right, Register scratch1, Register scratch2, Register scratch3)
static void GenerateFlatOneByteStringEquals(MacroAssembler *masm, Register left, Register right, Register scratch1, Register scratch2)
static void GenerateOneByteCharsCompareLoop(MacroAssembler *masm, Register left, Register right, Register length, Register scratch, Label *chars_not_equal, Label::Distance chars_not_equal_near=Label::kFar)
DISALLOW_IMPLICIT_CONSTRUCTORS(StringHelper)
static void GenerateCopyCharacters(MacroAssembler *masm, Register dest, Register src, Register count, Register scratch, String::Encoding encoding)
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()