Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(70)

Unified Diff: src/code-stubs.cc

Issue 2504153002: [TypeFeedbackVector] Root literal arrays in function literals slots (Closed)
Patch Set: REBASE. Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/code-stubs.cc
diff --git a/src/code-stubs.cc b/src/code-stubs.cc
index 2c87107ede4b3d538909e10ac19fdbc768cdce15..ec8a09f877d3350c3c38089dce2c7d9dab014e1a 100644
--- a/src/code-stubs.cc
+++ b/src/code-stubs.cc
@@ -2449,6 +2449,8 @@ void GetPropertyStub::GenerateAssembly(
// static
compiler::Node* FastNewClosureStub::Generate(CodeStubAssembler* assembler,
compiler::Node* shared_info,
+ compiler::Node* feedback_vector,
+ compiler::Node* slot,
compiler::Node* context) {
typedef compiler::Node Node;
typedef compiler::CodeAssembler::Label Label;
@@ -2563,14 +2565,15 @@ compiler::Node* FastNewClosureStub::Generate(CodeStubAssembler* assembler,
// Initialize the rest of the function.
Node* empty_fixed_array =
assembler->HeapConstant(factory->empty_fixed_array());
- Node* empty_literals_array =
- assembler->HeapConstant(factory->empty_literals_array());
assembler->StoreObjectFieldNoWriteBarrier(result, JSObject::kPropertiesOffset,
empty_fixed_array);
assembler->StoreObjectFieldNoWriteBarrier(result, JSObject::kElementsOffset,
empty_fixed_array);
+ // TODO(mvstanton): Do I need a write barrier here?
Benedikt Meurer 2016/12/10 17:20:36 A write barrier for a load?
mvstanton 2016/12/21 13:09:13 Ach, sorry the todo is for the store of the litera
+ Node* literals_array = assembler->LoadFixedArrayElement(
+ feedback_vector, slot, 0, CodeStubAssembler::SMI_PARAMETERS);
assembler->StoreObjectFieldNoWriteBarrier(result, JSFunction::kLiteralsOffset,
- empty_literals_array);
+ literals_array);
assembler->StoreObjectFieldNoWriteBarrier(
result, JSFunction::kPrototypeOrInitialMapOffset,
assembler->TheHoleConstant());
@@ -2596,8 +2599,14 @@ compiler::Node* FastNewClosureStub::Generate(CodeStubAssembler* assembler,
void FastNewClosureStub::GenerateAssembly(
compiler::CodeAssemblerState* state) const {
CodeStubAssembler assembler(state);
- assembler.Return(
- Generate(&assembler, assembler.Parameter(0), assembler.Parameter(1)));
+ if (FLAG_strong_rooted_literals) {
+ assembler.Return(Generate(&assembler, assembler.Parameter(0),
+ assembler.Parameter(1), assembler.Parameter(2),
+ assembler.Parameter(3)));
+ } else {
+ assembler.Return(Generate(&assembler, assembler.Parameter(0), NULL, NULL,
+ assembler.Parameter(1)));
+ }
}
// static
« no previous file with comments | « src/code-stubs.h ('k') | src/compiler.cc » ('j') | src/compiler/js-create-lowering.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698