59 #if V8_TARGET_ARCH_IA32
61 #elif V8_TARGET_ARCH_X64
63 #elif V8_TARGET_ARCH_ARM64
65 #elif V8_TARGET_ARCH_ARM
67 #elif V8_TARGET_ARCH_MIPS
69 #elif V8_TARGET_ARCH_MIPS64
71 #elif V8_TARGET_ARCH_X87
74 #error "Unknown architecture."
78 #ifndef V8_INTERPRETED_REGEXP
79 #if V8_TARGET_ARCH_IA32
81 #elif V8_TARGET_ARCH_X64
83 #elif V8_TARGET_ARCH_ARM64
85 #elif V8_TARGET_ARCH_ARM
87 #elif V8_TARGET_ARCH_MIPS
89 #elif V8_TARGET_ARCH_MIPS64
91 #elif V8_TARGET_ARCH_X87
94 #error "Unknown architecture."
129 enabled_cpu_features_(0),
130 emit_debug_code_(FLAG_debug_code),
131 predictable_code_size_(
false),
133 serializer_enabled_(isolate && isolate->serializer_enabled()) {
134 if (FLAG_mask_constants_with_cookie &&
isolate !=
NULL) {
140 if (
own_buffer_) buffer = NewArray<byte>(buffer_size);
141 buffer_ =
static_cast<byte*
>(buffer);
158 : assembler_(assembler),
159 expected_size_(expected_size),
160 start_offset_(assembler->pc_offset()),
161 old_value_(assembler->predictable_code_size()) {
180 : assembler_(assembler) {
183 uint64_t mask =
static_cast<uint64_t
>(1) << f;
185 #if V8_TARGET_ARCH_ARM
188 mask |=
static_cast<uint64_t
>(1) <<
ARMv7;
195 CpuFeatureScope::~CpuFeatureScope() {
196 assembler_->set_enabled_cpu_features(old_enabled_);
209 int Label::pos()
const {
210 if (pos_ < 0)
return -pos_ - 1;
211 if (pos_ > 0)
return pos_ - 1;
291 const int kMaxStandardNonCompactModes = 14;
340 for (; pc_jump > 0; pc_jump = pc_jump >>
kChunkBits) {
351 void RelocInfoWriter::WriteTaggedPC(
uint32_t pc_delta,
int tag) {
353 pc_delta = WriteVariableLengthPCJump(pc_delta);
354 *--pos_ = pc_delta <<
kTagBits | tag;
358 void RelocInfoWriter::WriteTaggedData(intptr_t data_delta,
int tag) {
363 void RelocInfoWriter::WriteExtraTag(
int extra_tag,
int top_tag) {
370 void RelocInfoWriter::WriteExtraTaggedPC(
uint32_t pc_delta,
int extra_tag) {
372 pc_delta = WriteVariableLengthPCJump(pc_delta);
373 WriteExtraTag(extra_tag, 0);
378 void RelocInfoWriter::WriteExtraTaggedIntData(
int data_delta,
int top_tag) {
381 *--pos_ =
static_cast<byte>(data_delta);
388 void RelocInfoWriter::WriteExtraTaggedPoolData(
int data,
int pool_type) {
391 *--pos_ =
static_cast<byte>(data);
398 void RelocInfoWriter::WriteExtraTaggedData(intptr_t data_delta,
int top_tag) {
401 *--pos_ =
static_cast<byte>(data_delta);
408 void RelocInfoWriter::Write(
const RelocInfo* rinfo) {
410 byte* begin_pos = pos_;
413 DCHECK(rinfo->pc() - last_pc_ >= 0);
415 <= kMaxStandardNonCompactModes);
428 DCHECK(
static_cast<int>(rinfo->data()) == rinfo->data());
429 int id_delta =
static_cast<int>(rinfo->data()) - last_id_;
439 last_id_ =
static_cast<int>(rinfo->data());
442 DCHECK(
static_cast<int>(rinfo->data()) == rinfo->data());
443 int pos_delta =
static_cast<int>(rinfo->data()) - last_position_;
449 WriteTaggedData(pos_delta, pos_type_tag);
453 WriteExtraTaggedIntData(pos_delta, pos_type_tag);
455 last_position_ =
static_cast<int>(rinfo->data());
463 WriteExtraTaggedPoolData(
static_cast<int>(rinfo->data()),
472 WriteExtraTaggedPC(pc_delta, saved_mode);
474 last_pc_ = rinfo->pc();
476 DCHECK(begin_pos - pos_ <= kMaxSize);
550 byte pc_jump_part = *--
pos_;
566 int8_t signed_b = *
pos_;
574 int8_t signed_b = *
pos_;
734 bool RelocInfo::RequiresRelocation(
const CodeDesc& desc) {
748 #ifdef ENABLE_DISASSEMBLER
752 return "no reloc 32";
754 return "no reloc 64";
756 return "embedded object";
758 return "code target (js construct call)";
760 return "debug break";
762 return "code target";
764 return "code target with id";
766 return "property cell";
768 return "runtime entry";
776 return "statement position";
778 return "external reference";
780 return "internal reference";
782 return "constant pool";
784 return "veneer pool";
786 return "debug break slot";
788 return "code_age_sequence";
791 return "number_of_modes";
793 return "unknown relocation type";
797 void RelocInfo::Print(Isolate* isolate, OStream& os) {
798 os <<
pc_ <<
" " << RelocModeName(
rmode_);
800 os <<
" (" <<
reinterpret_cast<char*
>(
data_) <<
")";
802 os <<
" (" << Brief(target_object()) <<
")";
804 ExternalReferenceEncoder ref_encoder(isolate);
805 os <<
" (" << ref_encoder.NameOfAddress(target_reference()) <<
") ("
806 << target_reference() <<
")";
812 os <<
" (id=" <<
static_cast<int>(
data_) <<
")";
815 os <<
" (" <<
data() <<
")";
817 isolate->deoptimizer_data() !=
NULL) {
822 os <<
" (deoptimization bailout " <<
id <<
")";
832 void RelocInfo::Verify(Isolate* isolate) {
835 Object::VerifyPointer(target_object());
838 Object::VerifyPointer(target_cell());
845 Address addr = target_address();
849 Object* found = isolate->FindCodeObject(addr);
850 CHECK(found->IsCode());
851 CHECK(code->address() == HeapObject::cast(found)->address());
881 void ExternalReference::SetUp() {
889 static_cast<double>(
static_cast<uint32_t>(0xFFFFFFFF)) + 1;
895 void ExternalReference::InitializeMathExpData() {
902 const int kTableSizeBits = 11;
903 const int kTableSize = 1 << kTableSizeBits;
904 const double kTableSizeDouble =
static_cast<double>(kTableSize);
915 const double constant3 = (1 << kTableSizeBits) / std::log(2.0);
918 static_cast<double>(
static_cast<int64_t
>(3) << 51);
925 for (
int i = 0;
i < kTableSize;
i++) {
926 double value = std::pow(2,
i / kTableSizeDouble);
927 uint64_t bits = bit_cast<uint64_t, double>(value);
928 bits &= (
static_cast<uint64_t
>(1) << 52) - 1;
929 double mantissa = bit_cast<double, uint64_t>(bits);
938 void ExternalReference::TearDownMathExpData() {
949 : address_(Redirect(isolate, Builtins::c_function_address(id))) {}
952 ExternalReference::ExternalReference(
954 Type type = ExternalReference::BUILTIN_CALL,
955 Isolate* isolate =
NULL)
956 : address_(Redirect(isolate, fun->address(), type)) {}
960 : address_(isolate->builtins()->builtin_address(
name)) {}
965 : address_(Redirect(isolate, Runtime::FunctionForId(id)->entry)) {}
968 ExternalReference::ExternalReference(
const Runtime::Function* f,
970 : address_(Redirect(isolate, f->entry)) {}
973 ExternalReference ExternalReference::isolate_address(Isolate* isolate) {
974 return ExternalReference(isolate);
978 ExternalReference::ExternalReference(
const IC_Utility& ic_utility,
980 : address_(Redirect(isolate, ic_utility.address())) {}
983 ExternalReference::ExternalReference(StatsCounter* counter)
988 : address_(isolate->get_address_from_id(id)) {}
991 ExternalReference::ExternalReference(
const SCTableReference& table_ref)
992 : address_(table_ref.address()) {}
995 ExternalReference ExternalReference::
996 incremental_marking_record_write_function(Isolate* isolate) {
997 return ExternalReference(Redirect(
1003 ExternalReference ExternalReference::
1004 store_buffer_overflow_function(Isolate* isolate) {
1005 return ExternalReference(Redirect(
1011 ExternalReference ExternalReference::flush_icache_function(Isolate* isolate) {
1012 return ExternalReference(
1017 ExternalReference ExternalReference::delete_handle_scope_extensions(
1019 return ExternalReference(Redirect(
1025 ExternalReference ExternalReference::get_date_field_function(
1031 ExternalReference ExternalReference::get_make_code_young_function(
1033 return ExternalReference(Redirect(
1038 ExternalReference ExternalReference::get_mark_code_as_executed_function(
1040 return ExternalReference(Redirect(
1045 ExternalReference ExternalReference::date_cache_stamp(Isolate* isolate) {
1046 return ExternalReference(isolate->date_cache()->stamp_address());
1050 ExternalReference ExternalReference::stress_deopt_count(Isolate* isolate) {
1051 return ExternalReference(isolate->stress_deopt_count_address());
1055 ExternalReference ExternalReference::new_deoptimizer_function(
1057 return ExternalReference(
1062 ExternalReference ExternalReference::compute_output_frames_function(
1064 return ExternalReference(
1069 ExternalReference ExternalReference::log_enter_external_function(
1071 return ExternalReference(
1076 ExternalReference ExternalReference::log_leave_external_function(
1078 return ExternalReference(
1083 ExternalReference ExternalReference::keyed_lookup_cache_keys(Isolate* isolate) {
1084 return ExternalReference(isolate->keyed_lookup_cache()->keys_address());
1088 ExternalReference ExternalReference::keyed_lookup_cache_field_offsets(
1090 return ExternalReference(
1091 isolate->keyed_lookup_cache()->field_offsets_address());
1095 ExternalReference ExternalReference::roots_array_start(Isolate* isolate) {
1096 return ExternalReference(isolate->heap()->roots_array_start());
1100 ExternalReference ExternalReference::allocation_sites_list_address(
1102 return ExternalReference(isolate->heap()->allocation_sites_list_address());
1106 ExternalReference ExternalReference::address_of_stack_limit(Isolate* isolate) {
1107 return ExternalReference(isolate->stack_guard()->address_of_jslimit());
1111 ExternalReference ExternalReference::address_of_real_stack_limit(
1113 return ExternalReference(isolate->stack_guard()->address_of_real_jslimit());
1117 ExternalReference ExternalReference::address_of_regexp_stack_limit(
1119 return ExternalReference(isolate->regexp_stack()->limit_address());
1123 ExternalReference ExternalReference::new_space_start(Isolate* isolate) {
1124 return ExternalReference(isolate->heap()->NewSpaceStart());
1128 ExternalReference ExternalReference::store_buffer_top(Isolate* isolate) {
1129 return ExternalReference(isolate->heap()->store_buffer()->TopAddress());
1133 ExternalReference ExternalReference::new_space_mask(Isolate* isolate) {
1134 return ExternalReference(
reinterpret_cast<Address>(
1135 isolate->heap()->NewSpaceMask()));
1139 ExternalReference ExternalReference::new_space_allocation_top_address(
1141 return ExternalReference(isolate->heap()->NewSpaceAllocationTopAddress());
1145 ExternalReference ExternalReference::new_space_allocation_limit_address(
1147 return ExternalReference(isolate->heap()->NewSpaceAllocationLimitAddress());
1151 ExternalReference ExternalReference::old_pointer_space_allocation_top_address(
1153 return ExternalReference(
1154 isolate->heap()->OldPointerSpaceAllocationTopAddress());
1158 ExternalReference ExternalReference::old_pointer_space_allocation_limit_address(
1160 return ExternalReference(
1161 isolate->heap()->OldPointerSpaceAllocationLimitAddress());
1165 ExternalReference ExternalReference::old_data_space_allocation_top_address(
1167 return ExternalReference(
1168 isolate->heap()->OldDataSpaceAllocationTopAddress());
1172 ExternalReference ExternalReference::old_data_space_allocation_limit_address(
1174 return ExternalReference(
1175 isolate->heap()->OldDataSpaceAllocationLimitAddress());
1179 ExternalReference ExternalReference::handle_scope_level_address(
1185 ExternalReference ExternalReference::handle_scope_next_address(
1191 ExternalReference ExternalReference::handle_scope_limit_address(
1197 ExternalReference ExternalReference::scheduled_exception_address(
1199 return ExternalReference(isolate->scheduled_exception_address());
1203 ExternalReference ExternalReference::address_of_pending_message_obj(
1205 return ExternalReference(isolate->pending_message_obj_address());
1209 ExternalReference ExternalReference::address_of_has_pending_message(
1211 return ExternalReference(isolate->has_pending_message_address());
1215 ExternalReference ExternalReference::address_of_pending_message_script(
1217 return ExternalReference(isolate->pending_message_script_address());
1221 ExternalReference ExternalReference::address_of_min_int() {
1222 return ExternalReference(
reinterpret_cast<void*
>(&
double_constants.min_int));
1226 ExternalReference ExternalReference::address_of_one_half() {
1227 return ExternalReference(
reinterpret_cast<void*
>(&
double_constants.one_half));
1231 ExternalReference ExternalReference::address_of_minus_one_half() {
1232 return ExternalReference(
1237 ExternalReference ExternalReference::address_of_negative_infinity() {
1238 return ExternalReference(
1243 ExternalReference ExternalReference::address_of_canonical_non_hole_nan() {
1244 return ExternalReference(
1249 ExternalReference ExternalReference::address_of_the_hole_nan() {
1250 return ExternalReference(
1255 ExternalReference ExternalReference::address_of_uint32_bias() {
1256 return ExternalReference(
1261 ExternalReference ExternalReference::is_profiling_address(Isolate* isolate) {
1262 return ExternalReference(isolate->cpu_profiler()->is_profiling_address());
1266 ExternalReference ExternalReference::invoke_function_callback(
1270 ApiFunction thunk_fun(thunk_address);
1271 return ExternalReference(&thunk_fun, thunk_type, isolate);
1275 ExternalReference ExternalReference::invoke_accessor_getter_callback(
1279 ExternalReference::PROFILING_GETTER_CALL;
1280 ApiFunction thunk_fun(thunk_address);
1281 return ExternalReference(&thunk_fun, thunk_type, isolate);
1285 #ifndef V8_INTERPRETED_REGEXP
1287 ExternalReference ExternalReference::re_check_stack_guard_state(
1290 #if V8_TARGET_ARCH_X64
1292 #elif V8_TARGET_ARCH_IA32
1294 #elif V8_TARGET_ARCH_ARM64
1296 #elif V8_TARGET_ARCH_ARM
1298 #elif V8_TARGET_ARCH_MIPS
1300 #elif V8_TARGET_ARCH_MIPS64
1302 #elif V8_TARGET_ARCH_X87
1307 return ExternalReference(Redirect(isolate,
function));
1311 ExternalReference ExternalReference::re_grow_stack(Isolate* isolate) {
1312 return ExternalReference(
1316 ExternalReference ExternalReference::re_case_insensitive_compare_uc16(
1318 return ExternalReference(Redirect(
1324 ExternalReference ExternalReference::re_word_character_map() {
1325 return ExternalReference(
1329 ExternalReference ExternalReference::address_of_static_offsets_vector(
1331 return ExternalReference(
1332 reinterpret_cast<Address>(isolate->jsregexp_static_offsets_vector()));
1335 ExternalReference ExternalReference::address_of_regexp_stack_memory_address(
1337 return ExternalReference(
1338 isolate->regexp_stack()->memory_address());
1341 ExternalReference ExternalReference::address_of_regexp_stack_memory_size(
1343 return ExternalReference(isolate->regexp_stack()->memory_size_address());
1349 ExternalReference ExternalReference::math_log_double_function(
1351 typedef double (*d2d)(
double x);
1352 return ExternalReference(Redirect(isolate,
1358 ExternalReference ExternalReference::math_exp_constants(
int constant_index) {
1360 return ExternalReference(
1365 ExternalReference ExternalReference::math_exp_log_table() {
1371 ExternalReference ExternalReference::page_flags(Page* page) {
1372 return ExternalReference(
reinterpret_cast<Address>(page) +
1377 ExternalReference ExternalReference::ForDeoptEntry(
Address entry) {
1378 return ExternalReference(entry);
1382 ExternalReference ExternalReference::cpu_features() {
1388 ExternalReference ExternalReference::debug_is_active_address(
1390 return ExternalReference(isolate->debug()->is_active_address());
1394 ExternalReference ExternalReference::debug_after_break_target_address(
1396 return ExternalReference(isolate->debug()->after_break_target_address());
1401 ExternalReference::debug_restarter_frame_function_pointer_address(
1403 return ExternalReference(
1404 isolate->debug()->restarter_frame_function_pointer_address());
1409 int y_int =
static_cast<int>(
y);
1418 return (std::isinf(x)) ? 0 : 1.0 /
fast_sqrt(x + 0.0);
1429 double m = (
y < 0) ? 1 / x : x;
1430 unsigned n = (
y < 0) ? -
y :
y;
1433 if ((n & 1) != 0) p *= m;
1435 if ((n & 2) != 0) p *= m;
1444 #if defined(__MINGW64_VERSION_MAJOR) && \
1445 (!defined(__MINGW64_VERSION_RC) || __MINGW64_VERSION_RC < 1)
1448 if ((x == 0.0 || std::isinf(x)) && std::isfinite(
y)) {
1450 if (std::modf(
y, &f) != 0.0) {
1456 int y_int =
static_cast<int>(
y);
1458 return std::ldexp(1.0, y_int);
1465 if (std::isnan(
y) || ((x == 1 || x == -1) && std::isinf(
y))) {
1468 return std::pow(x,
y);
1472 ExternalReference ExternalReference::power_double_double_function(
1474 return ExternalReference(Redirect(isolate,
1476 BUILTIN_FP_FP_CALL));
1480 ExternalReference ExternalReference::power_double_int_function(
1482 return ExternalReference(Redirect(isolate,
1484 BUILTIN_FP_INT_CALL));
1492 case Token::EQ_STRICT:
return (op1 == op2);
1493 case Token::NE:
return (op1 != op2);
1494 case Token::LT:
return (op1 < op2);
1495 case Token::GT:
return (op1 > op2);
1496 case Token::LTE:
return (op1 <= op2);
1497 case Token::GTE:
return (op1 >= op2);
1505 ExternalReference ExternalReference::mod_two_doubles_operation(
1507 return ExternalReference(Redirect(isolate,
1509 BUILTIN_FP_FP_CALL));
1513 ExternalReference ExternalReference::debug_break(Isolate* isolate) {
1514 return ExternalReference(Redirect(isolate,
FUNCTION_ADDR(Debug_Break)));
1518 ExternalReference ExternalReference::debug_step_in_fp_address(
1520 return ExternalReference(isolate->debug()->step_in_fp_addr());
1524 void PositionsRecorder::RecordPosition(
int pos) {
1527 state_.current_position = pos;
1529 CodeLinePosInfoAddPositionEvent(jit_handler_data_,
1530 assembler_->pc_offset(),
1535 void PositionsRecorder::RecordStatementPosition(
int pos) {
1538 state_.current_statement_position = pos;
1540 CodeLinePosInfoAddStatementPositionEvent(
1542 assembler_->pc_offset(),
1547 bool PositionsRecorder::WriteRecordedPositions() {
1548 bool written =
false;
1552 if (state_.current_statement_position != state_.written_statement_position) {
1553 EnsureSpace ensure_space(assembler_);
1555 state_.current_statement_position);
1556 state_.written_statement_position = state_.current_statement_position;
1562 if (state_.current_position != state_.written_position &&
1563 state_.current_position != state_.written_statement_position) {
1564 EnsureSpace ensure_space(assembler_);
1566 state_.written_position = state_.current_position;
Isolate represents an isolated instance of the V8 engine.
static double nan_value()
void set_enabled_cpu_features(uint64_t features)
Isolate * isolate() const
static const int kMinimalBufferSize
AssemblerBase(Isolate *isolate, void *buffer, int buffer_size)
void set_predictable_code_size(bool value)
uint64_t enabled_cpu_features() const
double canonical_non_hole_nan
static Code * GetCodeFromTargetAddress(Address address)
static bool IsYoungSequence(Isolate *isolate, byte *sequence)
static const char * Kind2String(Kind kind)
static void MarkCodeAsExecuted(byte *sequence, Isolate *isolate)
byte * relocation_start()
static void MakeCodeAgeSequenceYoung(byte *sequence, Isolate *isolate)
byte * instruction_start()
byte * FindCodeAgeSequence()
static void FlushICache(void *start, size_t size)
static bool IsSupported(CpuFeature f)
static unsigned cache_line_size_
static unsigned supported_
static void ComputeOutputFrames(Deoptimizer *deoptimizer)
static Deoptimizer * New(JSFunction *function, BailoutType type, unsigned bailout_id, Address from, int fp_to_sp_delta, Isolate *isolate)
static const int kNotDeoptimizationEntry
static int GetDeoptimizationId(Isolate *isolate, Address addr, BailoutType type)
static Address current_limit_address(Isolate *isolate)
static void DeleteExtensions(Isolate *isolate)
static Address current_next_address(Isolate *isolate)
static Address current_level_address(Isolate *isolate)
Isolate * GetIsolate() const
static void RecordWriteFromCode(HeapObject *obj, Object **slot, Isolate *isolate)
base::RandomNumberGenerator * random_number_generator()
static Object * GetField(Object *date, Smi *index)
static void LeaveExternal(Isolate *isolate)
static void EnterExternal(Isolate *isolate)
static const int kFlagsOffset
static Address GrowStack(Address stack_pointer, Address *stack_top, Isolate *isolate)
static Address word_character_map_address()
static int CaseInsensitiveCompareUC16(Address byte_offset1, Address byte_offset2, size_t byte_length, Isolate *isolate)
AssemblerBase * assembler_
~PredictableCodeSizeScope()
PredictableCodeSizeScope(AssemblerBase *assembler, int expected_size)
static int CheckStackGuardState(Address *return_address, Code *re_code, Address re_frame, int start_offset, const byte **input_start, const byte **input_end)
static int CheckStackGuardState(Address *return_address, Code *re_code, Address re_frame)
static int CheckStackGuardState(Address *return_address, Code *re_code, Address re_frame)
static int CheckStackGuardState(Address *return_address, Code *re_code, Address re_frame)
static int CheckStackGuardState(Address *return_address, Code *re_code, Address re_frame)
static int CheckStackGuardState(Address *return_address, Code *re_code, Address re_frame)
static int ModeMask(Mode mode)
static const int kCodeTargetMask
static const int kPositionMask
static bool IsVeneerPool(Mode mode)
static bool IsComment(Mode mode)
static bool IsRuntimeEntry(Mode mode)
static bool IsPosition(Mode mode)
static const int kApplyMask
static bool IsCodeTarget(Mode mode)
static const char *const kFillerCommentString
static const int kMaxCallSize
@ LAST_STANDARD_NONCOMPACT_ENUM
static bool IsConstPool(Mode mode)
static const int kMaxSmallPCDelta
static const int kMinRelocCommentSize
static const int kNoPosition
void AdvanceReadVariableLengthPCJump()
byte * code_age_sequence_
bool SetMode(RelocInfo::Mode mode)
void AdvanceReadPoolData()
void ReadTaggedPosition()
RelocIterator(Code *code, int mode_mask=-1)
int GetLocatableTypeTag()
void Advance(int bytes=1)
void AdvanceReadPosition()
static void StoreBufferOverflow(Isolate *isolate)
static bool IsCompareOp(Value op)
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 enable alignment of csp to bytes on platforms which prefer the register to always be NULL
#define LOG_CODE_EVENT(isolate, Call)
#define CHECK_EQ(expected, value)
#define DCHECK(condition)
void DeleteArray(T *array)
const int kEmbeddedObjectTag
double power_double_int(double x, int y)
bool EvalComparison(Token::Value op, double op1, double op2)
const int kSmallPCDeltaMask
const int kLastChunkTagBits
TypeImpl< ZoneTypeConfig > Type
const int kDataJumpExtraTag
double fast_sqrt(double input)
static double * math_exp_constants_array
bool is_uintn(int64_t x, unsigned n)
double power_helper(double x, double y)
const int kLastChunkTagMask
double modulo(double x, double y)
kSerializedDataOffset Object
static int * GetInternalPointer(StatsCounter *counter)
static double * math_exp_log_table_array
void InvokeFunctionCallback(const v8::FunctionCallbackInfo< v8::Value > &info, v8::FunctionCallback callback)
const int kPCJumpExtraTag
const int kStatementPositionTag
const int kNonstatementPositionTag
double power_double_double(double x, double y)
static RelocInfo::Mode GetPositionModeFromTag(int tag)
static bool math_exp_data_initialized
const uint64_t kHoleNanInt64
const int kSmallPCDeltaBits
bool is_intn(int64_t x, unsigned n)
void InvokeAccessorGetterCallback(v8::Local< v8::Name > property, const v8::PropertyCallbackInfo< v8::Value > &info, v8::AccessorNameGetterCallback getter)
const int kLocatableTypeTagBits
static base::Mutex * math_exp_data_mutex
const int kVariableLengthPCJumpTopTag
static DoubleConstant double_constants
Debugger support for the V8 JavaScript engine.