summaryrefslogtreecommitdiff
path: root/deps/v8/src/compiler/js-heap-copy-reducer.cc
diff options
context:
space:
mode:
authorMichaël Zasso <targos@protonmail.com>2018-09-21 09:14:51 +0200
committerMichaël Zasso <targos@protonmail.com>2018-09-22 18:29:25 +0200
commit0e7ddbd3d7e9439c67573b854c49cf82c398ae82 (patch)
tree2afe372acde921cb57ddb3444ff00c5adef8848c /deps/v8/src/compiler/js-heap-copy-reducer.cc
parent13245dc50da4cb7443c39ef6c68d419d5e6336d4 (diff)
downloadandroid-node-v8-0e7ddbd3d7e9439c67573b854c49cf82c398ae82.tar.gz
android-node-v8-0e7ddbd3d7e9439c67573b854c49cf82c398ae82.tar.bz2
android-node-v8-0e7ddbd3d7e9439c67573b854c49cf82c398ae82.zip
deps: update V8 to 7.0.276.20
PR-URL: https://github.com/nodejs/node/pull/22754 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Refael Ackermann <refack@gmail.com> Reviewed-By: Ali Ijaz Sheikh <ofrobots@google.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Diffstat (limited to 'deps/v8/src/compiler/js-heap-copy-reducer.cc')
-rw-r--r--deps/v8/src/compiler/js-heap-copy-reducer.cc85
1 files changed, 85 insertions, 0 deletions
diff --git a/deps/v8/src/compiler/js-heap-copy-reducer.cc b/deps/v8/src/compiler/js-heap-copy-reducer.cc
new file mode 100644
index 0000000000..0bcc662771
--- /dev/null
+++ b/deps/v8/src/compiler/js-heap-copy-reducer.cc
@@ -0,0 +1,85 @@
+// Copyright 2018 the V8 project authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "src/compiler/js-heap-copy-reducer.h"
+
+#include "src/compiler/common-operator.h"
+#include "src/compiler/js-heap-broker.h"
+#include "src/compiler/js-operator.h"
+#include "src/heap/factory-inl.h"
+#include "src/objects/map.h"
+#include "src/objects/scope-info.h"
+
+namespace v8 {
+namespace internal {
+namespace compiler {
+
+// In the functions below, we call the ObjectRef (or subclass) constructor in
+// order to trigger serialization if not yet done.
+
+JSHeapCopyReducer::JSHeapCopyReducer(JSHeapBroker* broker) : broker_(broker) {}
+
+JSHeapBroker* JSHeapCopyReducer::broker() { return broker_; }
+
+Reduction JSHeapCopyReducer::Reduce(Node* node) {
+ switch (node->opcode()) {
+ case IrOpcode::kHeapConstant: {
+ ObjectRef(broker(), HeapConstantOf(node->op()));
+ break;
+ }
+ case IrOpcode::kJSCreateArray: {
+ CreateArrayParameters const& p = CreateArrayParametersOf(node->op());
+ Handle<AllocationSite> site;
+ if (p.site().ToHandle(&site)) AllocationSiteRef(broker(), site);
+ break;
+ }
+ case IrOpcode::kJSCreateCatchContext: {
+ ScopeInfoRef(broker(), ScopeInfoOf(node->op()));
+ break;
+ }
+ case IrOpcode::kJSCreateClosure: {
+ CreateClosureParameters const& p = CreateClosureParametersOf(node->op());
+ SharedFunctionInfoRef(broker(), p.shared_info());
+ HeapObjectRef(broker(), p.feedback_cell());
+ HeapObjectRef(broker(), p.code());
+ break;
+ }
+ case IrOpcode::kJSCreateEmptyLiteralArray: {
+ // TODO(neis, jarin) Force serialization of the entire feedback vector
+ // rather than just the one element.
+ FeedbackParameter const& p = FeedbackParameterOf(node->op());
+ FeedbackVectorRef(broker(), p.feedback().vector());
+ Handle<Object> feedback(
+ p.feedback().vector()->Get(p.feedback().slot())->ToObject(),
+ broker()->isolate());
+ ObjectRef(broker(), feedback);
+ break;
+ }
+ case IrOpcode::kJSCreateFunctionContext: {
+ CreateFunctionContextParameters const& p =
+ CreateFunctionContextParametersOf(node->op());
+ ScopeInfoRef(broker(), p.scope_info());
+ break;
+ }
+ case IrOpcode::kJSCreateLiteralArray:
+ case IrOpcode::kJSCreateLiteralObject: {
+ CreateLiteralParameters const& p = CreateLiteralParametersOf(node->op());
+ ObjectRef(broker(), p.feedback().vector());
+ break;
+ }
+ case IrOpcode::kJSLoadNamed:
+ case IrOpcode::kJSStoreNamed: {
+ NamedAccess const& p = NamedAccessOf(node->op());
+ NameRef(broker(), p.name());
+ break;
+ }
+ default:
+ break;
+ }
+ return NoChange();
+}
+
+} // namespace compiler
+} // namespace internal
+} // namespace v8