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 |