summaryrefslogtreecommitdiff
path: root/deps/v8/src/snapshot
diff options
context:
space:
mode:
authorMichaël Zasso <targos@protonmail.com>2017-05-02 10:50:00 +0200
committerMichaël Zasso <targos@protonmail.com>2017-05-06 20:02:35 +0200
commit60d1aac8d225e844e68ae48e8f3d58802e635fbe (patch)
tree922f347dd054db18d88666fad7181e5a777f4022 /deps/v8/src/snapshot
parent73d9c0f903ae371cd5011af64c3a6f69a1bda978 (diff)
downloadandroid-node-v8-60d1aac8d225e844e68ae48e8f3d58802e635fbe.tar.gz
android-node-v8-60d1aac8d225e844e68ae48e8f3d58802e635fbe.tar.bz2
android-node-v8-60d1aac8d225e844e68ae48e8f3d58802e635fbe.zip
deps: update V8 to 5.8.283.38
PR-URL: https://github.com/nodejs/node/pull/12784 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Gibson Fahnestock <gibfahn@gmail.com>
Diffstat (limited to 'deps/v8/src/snapshot')
-rw-r--r--deps/v8/src/snapshot/code-serializer.cc42
-rw-r--r--deps/v8/src/snapshot/code-serializer.h20
-rw-r--r--deps/v8/src/snapshot/deserializer.cc6
-rw-r--r--deps/v8/src/snapshot/deserializer.h2
-rw-r--r--deps/v8/src/snapshot/partial-serializer.cc4
-rw-r--r--deps/v8/src/snapshot/serializer-common.cc3
-rw-r--r--deps/v8/src/snapshot/serializer.cc2
-rw-r--r--deps/v8/src/snapshot/snapshot-common.cc1
8 files changed, 54 insertions, 26 deletions
diff --git a/deps/v8/src/snapshot/code-serializer.cc b/deps/v8/src/snapshot/code-serializer.cc
index 1776cf1e4f..7f57f0aa64 100644
--- a/deps/v8/src/snapshot/code-serializer.cc
+++ b/deps/v8/src/snapshot/code-serializer.cc
@@ -7,8 +7,10 @@
#include <memory>
#include "src/code-stubs.h"
+#include "src/counters.h"
#include "src/log.h"
#include "src/macro-assembler.h"
+#include "src/objects-inl.h"
#include "src/snapshot/deserializer.h"
#include "src/snapshot/snapshot.h"
#include "src/version.h"
@@ -229,14 +231,20 @@ MaybeHandle<SharedFunctionInfo> CodeSerializer::Deserialize(
return scope.CloseAndEscape(result);
}
+WasmCompiledModuleSerializer::WasmCompiledModuleSerializer(
+ Isolate* isolate, uint32_t source_hash, Handle<Context> native_context,
+ Handle<SeqOneByteString> module_bytes)
+ : CodeSerializer(isolate, source_hash) {
+ reference_map()->AddAttachedReference(*isolate->native_context());
+ reference_map()->AddAttachedReference(*module_bytes);
+}
+
std::unique_ptr<ScriptData> WasmCompiledModuleSerializer::SerializeWasmModule(
Isolate* isolate, Handle<FixedArray> input) {
Handle<WasmCompiledModule> compiled_module =
Handle<WasmCompiledModule>::cast(input);
- WasmCompiledModuleSerializer wasm_cs(isolate, 0);
- wasm_cs.reference_map()->AddAttachedReference(*isolate->native_context());
- wasm_cs.reference_map()->AddAttachedReference(
- compiled_module->module_bytes());
+ WasmCompiledModuleSerializer wasm_cs(isolate, 0, isolate->native_context(),
+ handle(compiled_module->module_bytes()));
ScriptData* data = wasm_cs.Serialize(compiled_module);
return std::unique_ptr<ScriptData>(data);
}
@@ -281,11 +289,35 @@ MaybeHandle<FixedArray> WasmCompiledModuleSerializer::DeserializeWasmModule(
Handle<WasmCompiledModule> compiled_module(
static_cast<WasmCompiledModule*>(*obj.ToHandleChecked()), isolate);
- WasmCompiledModule::RecreateModuleWrapper(isolate, compiled_module);
+ WasmCompiledModule::ReinitializeAfterDeserialization(isolate,
+ compiled_module);
DCHECK(WasmCompiledModule::IsWasmCompiledModule(*compiled_module));
return compiled_module;
}
+void WasmCompiledModuleSerializer::SerializeCodeObject(
+ Code* code_object, HowToCode how_to_code, WhereToPoint where_to_point) {
+ Code::Kind kind = code_object->kind();
+ switch (kind) {
+ case Code::WASM_FUNCTION:
+ case Code::JS_TO_WASM_FUNCTION:
+ // Just serialize the code_object.
+ break;
+ case Code::WASM_TO_JS_FUNCTION:
+ // Serialize the illegal builtin instead. On instantiation of a
+ // deserialized module, these will be replaced again.
+ code_object = *isolate()->builtins()->Illegal();
+ break;
+ default:
+ UNREACHABLE();
+ }
+ SerializeGeneric(code_object, how_to_code, where_to_point);
+}
+
+bool WasmCompiledModuleSerializer::ElideObject(Object* obj) {
+ return obj->IsWeakCell() || obj->IsForeign() || obj->IsBreakPointInfo();
+}
+
class Checksum {
public:
explicit Checksum(Vector<const byte> payload) {
diff --git a/deps/v8/src/snapshot/code-serializer.h b/deps/v8/src/snapshot/code-serializer.h
index 15757379f0..4d87a731f7 100644
--- a/deps/v8/src/snapshot/code-serializer.h
+++ b/deps/v8/src/snapshot/code-serializer.h
@@ -64,23 +64,13 @@ class WasmCompiledModuleSerializer : public CodeSerializer {
protected:
void SerializeCodeObject(Code* code_object, HowToCode how_to_code,
- WhereToPoint where_to_point) override {
- Code::Kind kind = code_object->kind();
- if (kind == Code::WASM_FUNCTION || kind == Code::WASM_TO_JS_FUNCTION ||
- kind == Code::JS_TO_WASM_FUNCTION) {
- SerializeGeneric(code_object, how_to_code, where_to_point);
- } else {
- UNREACHABLE();
- }
- }
-
- bool ElideObject(Object* obj) override {
- return obj->IsWeakCell() || obj->IsForeign();
- };
+ WhereToPoint where_to_point) override;
+ bool ElideObject(Object* obj) override;
private:
- WasmCompiledModuleSerializer(Isolate* isolate, uint32_t source_hash)
- : CodeSerializer(isolate, source_hash) {}
+ WasmCompiledModuleSerializer(Isolate* isolate, uint32_t source_hash,
+ Handle<Context> native_context,
+ Handle<SeqOneByteString> module_bytes);
DISALLOW_COPY_AND_ASSIGN(WasmCompiledModuleSerializer);
};
diff --git a/deps/v8/src/snapshot/deserializer.cc b/deps/v8/src/snapshot/deserializer.cc
index 87e430baf5..86d20e14c0 100644
--- a/deps/v8/src/snapshot/deserializer.cc
+++ b/deps/v8/src/snapshot/deserializer.cc
@@ -4,13 +4,17 @@
#include "src/snapshot/deserializer.h"
+#include "src/api.h"
+#include "src/assembler-inl.h"
#include "src/bootstrapper.h"
#include "src/external-reference-table.h"
-#include "src/heap/heap.h"
+#include "src/heap/heap-inl.h"
#include "src/isolate.h"
#include "src/macro-assembler.h"
+#include "src/objects-inl.h"
#include "src/snapshot/natives.h"
#include "src/v8.h"
+#include "src/v8threads.h"
namespace v8 {
namespace internal {
diff --git a/deps/v8/src/snapshot/deserializer.h b/deps/v8/src/snapshot/deserializer.h
index 7b1ced8159..0348956eb6 100644
--- a/deps/v8/src/snapshot/deserializer.h
+++ b/deps/v8/src/snapshot/deserializer.h
@@ -84,7 +84,7 @@ class Deserializer : public SerializerDeserializer {
DCHECK_EQ(kWordAligned, next_alignment_);
int alignment = data - (kAlignmentPrefix - 1);
DCHECK_LE(kWordAligned, alignment);
- DCHECK_LE(alignment, kSimd128Unaligned);
+ DCHECK_LE(alignment, kDoubleUnaligned);
next_alignment_ = static_cast<AllocationAlignment>(alignment);
}
diff --git a/deps/v8/src/snapshot/partial-serializer.cc b/deps/v8/src/snapshot/partial-serializer.cc
index b78a1edbd0..7f30c9cd04 100644
--- a/deps/v8/src/snapshot/partial-serializer.cc
+++ b/deps/v8/src/snapshot/partial-serializer.cc
@@ -93,10 +93,6 @@ void PartialSerializer::SerializeObject(HeapObject* obj, HowToCode how_to_code,
// Clear literal boilerplates.
if (obj->IsJSFunction()) {
JSFunction* function = JSFunction::cast(obj);
- LiteralsArray* literals = function->literals();
- for (int i = 0; i < literals->literals_count(); i++) {
- literals->set_literal_undefined(i);
- }
function->ClearTypeFeedbackInfo();
}
diff --git a/deps/v8/src/snapshot/serializer-common.cc b/deps/v8/src/snapshot/serializer-common.cc
index ca4db75239..89aabdf263 100644
--- a/deps/v8/src/snapshot/serializer-common.cc
+++ b/deps/v8/src/snapshot/serializer-common.cc
@@ -7,6 +7,7 @@
#include "src/external-reference-table.h"
#include "src/ic/stub-cache.h"
#include "src/list-inl.h"
+#include "src/objects-inl.h"
namespace v8 {
namespace internal {
@@ -21,6 +22,8 @@ ExternalReferenceEncoder::ExternalReferenceEncoder(Isolate* isolate) {
ExternalReferenceTable* table = ExternalReferenceTable::instance(isolate);
for (uint32_t i = 0; i < table->size(); ++i) {
Address addr = table->address(i);
+ // Ignore duplicate API references.
+ if (table->is_api_reference(i) && !map_->Get(addr).IsNothing()) continue;
DCHECK(map_->Get(addr).IsNothing());
map_->Set(addr, i);
DCHECK(map_->Get(addr).IsJust());
diff --git a/deps/v8/src/snapshot/serializer.cc b/deps/v8/src/snapshot/serializer.cc
index 2e971e3407..d99ca2ab30 100644
--- a/deps/v8/src/snapshot/serializer.cc
+++ b/deps/v8/src/snapshot/serializer.cc
@@ -4,6 +4,8 @@
#include "src/snapshot/serializer.h"
+#include "src/assembler-inl.h"
+#include "src/heap/heap-inl.h"
#include "src/macro-assembler.h"
#include "src/snapshot/natives.h"
diff --git a/deps/v8/src/snapshot/snapshot-common.cc b/deps/v8/src/snapshot/snapshot-common.cc
index 83ad2e7d39..1658b3bdcf 100644
--- a/deps/v8/src/snapshot/snapshot-common.cc
+++ b/deps/v8/src/snapshot/snapshot-common.cc
@@ -9,6 +9,7 @@
#include "src/api.h"
#include "src/base/platform/platform.h"
#include "src/full-codegen/full-codegen.h"
+#include "src/objects-inl.h"
#include "src/snapshot/deserializer.h"
#include "src/snapshot/snapshot-source-sink.h"
#include "src/version.h"