Merge V8 5.2.361.47 DO NOT MERGE
https://chromium.googlesource.com/v8/v8/+/5.2.361.47
FPIIM-449
Change-Id: Ibec421b85a9b88cb3a432ada642e469fe7e78346
(cherry picked from commit bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8)
diff --git a/src/assembler.cc b/src/assembler.cc
index a912bb6..17cd56b 100644
--- a/src/assembler.cc
+++ b/src/assembler.cc
@@ -201,7 +201,6 @@
void AssemblerBase::FlushICache(Isolate* isolate, void* start, size_t size) {
if (size == 0) return;
- if (CpuFeatures::IsSupported(COHERENT_CACHE)) return;
#if defined(USE_SIMULATOR)
Simulator::FlushICache(isolate->simulator_i_cache(), start, size);
@@ -514,7 +513,8 @@
if (RelocInfo::IsComment(rmode)) {
WriteData(rinfo->data());
} else if (RelocInfo::IsConstPool(rmode) ||
- RelocInfo::IsVeneerPool(rmode)) {
+ RelocInfo::IsVeneerPool(rmode) ||
+ RelocInfo::IsDeoptId(rmode)) {
WriteIntData(static_cast<int>(rinfo->data()));
}
}
@@ -705,7 +705,8 @@
Advance(kIntSize);
}
} else if (RelocInfo::IsConstPool(rmode) ||
- RelocInfo::IsVeneerPool(rmode)) {
+ RelocInfo::IsVeneerPool(rmode) ||
+ RelocInfo::IsDeoptId(rmode)) {
if (SetMode(rmode)) {
AdvanceReadInt();
return;
@@ -828,6 +829,8 @@
return "encoded internal reference";
case DEOPT_REASON:
return "deopt reason";
+ case DEOPT_ID:
+ return "deopt index";
case CONST_POOL:
return "constant pool";
case VENEER_POOL:
@@ -846,6 +849,8 @@
return "generator continuation";
case WASM_MEMORY_REFERENCE:
return "wasm memory reference";
+ case WASM_MEMORY_SIZE_REFERENCE:
+ return "wasm memory size reference";
case NUMBER_OF_MODES:
case PC_JUMP:
UNREACHABLE();
@@ -933,6 +938,7 @@
case STATEMENT_POSITION:
case EXTERNAL_REFERENCE:
case DEOPT_REASON:
+ case DEOPT_ID:
case CONST_POOL:
case VENEER_POOL:
case DEBUG_BREAK_SLOT_AT_POSITION:
@@ -941,6 +947,7 @@
case DEBUG_BREAK_SLOT_AT_TAIL_CALL:
case GENERATOR_CONTINUATION:
case WASM_MEMORY_REFERENCE:
+ case WASM_MEMORY_SIZE_REFERENCE:
case NONE32:
case NONE64:
break;
@@ -1072,6 +1079,12 @@
return ExternalReference(isolate->interpreter()->dispatch_table_address());
}
+ExternalReference ExternalReference::interpreter_dispatch_counters(
+ Isolate* isolate) {
+ return ExternalReference(
+ isolate->interpreter()->bytecode_dispatch_counters_table());
+}
+
ExternalReference::ExternalReference(StatsCounter* counter)
: address_(reinterpret_cast<Address>(counter->GetInternalPointer())) {}
@@ -1255,6 +1268,26 @@
Redirect(isolate, FUNCTION_ADDR(wasm::uint64_mod_wrapper)));
}
+ExternalReference ExternalReference::wasm_word32_ctz(Isolate* isolate) {
+ return ExternalReference(
+ Redirect(isolate, FUNCTION_ADDR(wasm::word32_ctz_wrapper)));
+}
+
+ExternalReference ExternalReference::wasm_word64_ctz(Isolate* isolate) {
+ return ExternalReference(
+ Redirect(isolate, FUNCTION_ADDR(wasm::word64_ctz_wrapper)));
+}
+
+ExternalReference ExternalReference::wasm_word32_popcnt(Isolate* isolate) {
+ return ExternalReference(
+ Redirect(isolate, FUNCTION_ADDR(wasm::word32_popcnt_wrapper)));
+}
+
+ExternalReference ExternalReference::wasm_word64_popcnt(Isolate* isolate) {
+ return ExternalReference(
+ Redirect(isolate, FUNCTION_ADDR(wasm::word64_popcnt_wrapper)));
+}
+
static void f64_acos_wrapper(double* param) { *param = std::acos(*param); }
ExternalReference ExternalReference::f64_acos_wrapper_function(
@@ -2023,12 +2056,12 @@
// Platform specific but identical code for all the platforms.
-
-void Assembler::RecordDeoptReason(const int reason, int raw_position) {
+void Assembler::RecordDeoptReason(const int reason, int raw_position, int id) {
if (FLAG_trace_deopt || isolate()->cpu_profiler()->is_profiling()) {
EnsureSpace ensure_space(this);
RecordRelocInfo(RelocInfo::POSITION, raw_position);
RecordRelocInfo(RelocInfo::DEOPT_REASON, reason);
+ RecordRelocInfo(RelocInfo::DEOPT_ID, id);
}
}