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

Unified Diff: src/code-stubs.cc

Issue 2435023002: Use a different map to distinguish eval contexts (Closed)
Patch Set: relax dchecks Created 4 years, 1 month 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 d63453676f4cbbb81b69a3b1176bc4ab7eff64c2..68e12a20be9a5790c26530f240e6d7f3d18a4348 100644
--- a/src/code-stubs.cc
+++ b/src/code-stubs.cc
@@ -2629,10 +2629,13 @@ void FastNewClosureStub::GenerateAssembly(CodeStubAssembler* assembler) const {
Generate(assembler, assembler->Parameter(0), assembler->Parameter(1)));
}
-// static
-compiler::Node* FastNewFunctionContextStub::Generate(
- CodeStubAssembler* assembler, compiler::Node* function,
- compiler::Node* slots, compiler::Node* context) {
+namespace {
+
+compiler::Node* GenerateFastNewFunctionContextStub(CodeStubAssembler* assembler,
+ compiler::Node* function,
+ compiler::Node* slots,
+ compiler::Node* context,
+ Handle<Map> map) {
typedef compiler::Node Node;
Node* min_context_slots =
@@ -2646,9 +2649,8 @@ compiler::Node* FastNewFunctionContextStub::Generate(
Node* function_context = assembler->Allocate(size);
Isolate* isolate = assembler->isolate();
- assembler->StoreMapNoWriteBarrier(
- function_context,
- assembler->HeapConstant(isolate->factory()->function_context_map()));
+ assembler->StoreMapNoWriteBarrier(function_context,
+ assembler->HeapConstant(map));
assembler->StoreObjectFieldNoWriteBarrier(function_context,
Context::kLengthOffset,
assembler->SmiFromWord32(length));
@@ -2682,6 +2684,17 @@ compiler::Node* FastNewFunctionContextStub::Generate(
return function_context;
}
+} // namespace
+
+// static
+compiler::Node* FastNewFunctionContextStub::Generate(
+ CodeStubAssembler* assembler, compiler::Node* function,
+ compiler::Node* slots, compiler::Node* context) {
+ Handle<Map> map = assembler->isolate()->factory()->function_context_map();
+ return GenerateFastNewFunctionContextStub(assembler, function, slots, context,
+ map);
+}
+
void FastNewFunctionContextStub::GenerateAssembly(
CodeStubAssembler* assembler) const {
typedef compiler::Node Node;
@@ -2693,6 +2706,26 @@ void FastNewFunctionContextStub::GenerateAssembly(
}
// static
+compiler::Node* FastNewEvalContextStub::Generate(CodeStubAssembler* assembler,
+ compiler::Node* function,
+ compiler::Node* slots,
+ compiler::Node* context) {
+ Handle<Map> map = assembler->isolate()->factory()->eval_context_map();
+ return GenerateFastNewFunctionContextStub(assembler, function, slots, context,
+ map);
+}
+
+void FastNewEvalContextStub::GenerateAssembly(
+ CodeStubAssembler* assembler) const {
+ typedef compiler::Node Node;
+ Node* function = assembler->Parameter(Descriptor::kFunction);
+ Node* slots = assembler->Parameter(FastNewFunctionContextDescriptor::kSlots);
+ Node* context = assembler->Parameter(Descriptor::kContext);
+
+ assembler->Return(Generate(assembler, function, slots, context));
+}
+
+// static
compiler::Node* FastCloneRegExpStub::Generate(CodeStubAssembler* assembler,
compiler::Node* closure,
compiler::Node* literal_index,

Powered by Google App Engine
This is Rietveld 408576698