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

Unified Diff: src/builtins/builtins-constructor-gen.cc

Issue 2861983002: [ignition] Optimize JSGenerator creation (Closed)
Patch Set: rebase Created 3 years, 7 months 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
« no previous file with comments | « no previous file | src/builtins/builtins-definitions.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/builtins/builtins-constructor-gen.cc
diff --git a/src/builtins/builtins-constructor-gen.cc b/src/builtins/builtins-constructor-gen.cc
index cefc280ee47aca2bbc0d27b6a344d3be963f0831..705b766e6789982ed86c38289ba0a79becc61639 100644
--- a/src/builtins/builtins-constructor-gen.cc
+++ b/src/builtins/builtins-constructor-gen.cc
@@ -282,76 +282,8 @@ Node* ConstructorBuiltinsAssembler::EmitFastNewObject(Node* context,
Node* object = AllocateJSObjectFromMap(initial_map, properties.value());
- Node* instance_size_words = ChangeUint32ToWord(LoadObjectField(
- initial_map, Map::kInstanceSizeOffset, MachineType::Uint8()));
- Node* instance_size =
- WordShl(instance_size_words, IntPtrConstant(kPointerSizeLog2));
-
// Perform in-object slack tracking if requested.
- Node* bit_field3 = LoadMapBitField3(initial_map);
- Label slack_tracking(this), finalize(this, Label::kDeferred), done(this);
- GotoIf(IsSetWord32<Map::ConstructionCounter>(bit_field3), &slack_tracking);
-
- // Initialize remaining fields.
- {
- Comment("no slack tracking");
- InitializeFieldsWithRoot(object, IntPtrConstant(JSObject::kHeaderSize),
- instance_size, Heap::kUndefinedValueRootIndex);
- Goto(&end);
- }
-
- {
- BIND(&slack_tracking);
-
- // Decrease generous allocation count.
- STATIC_ASSERT(Map::ConstructionCounter::kNext == 32);
- Comment("update allocation count");
- Node* new_bit_field3 = Int32Sub(
- bit_field3, Int32Constant(1 << Map::ConstructionCounter::kShift));
- StoreObjectFieldNoWriteBarrier(initial_map, Map::kBitField3Offset,
- new_bit_field3,
- MachineRepresentation::kWord32);
- GotoIf(IsClearWord32<Map::ConstructionCounter>(new_bit_field3), &finalize);
-
- Node* unused_fields = LoadObjectField(
- initial_map, Map::kUnusedPropertyFieldsOffset, MachineType::Uint8());
- Node* used_size =
- IntPtrSub(instance_size, WordShl(ChangeUint32ToWord(unused_fields),
- IntPtrConstant(kPointerSizeLog2)));
-
- Comment("initialize filler fields (no finalize)");
- InitializeFieldsWithRoot(object, used_size, instance_size,
- Heap::kOnePointerFillerMapRootIndex);
-
- Comment("initialize undefined fields (no finalize)");
- InitializeFieldsWithRoot(object, IntPtrConstant(JSObject::kHeaderSize),
- used_size, Heap::kUndefinedValueRootIndex);
- Goto(&end);
- }
-
- {
- // Finalize the instance size.
- BIND(&finalize);
-
- Node* unused_fields = LoadObjectField(
- initial_map, Map::kUnusedPropertyFieldsOffset, MachineType::Uint8());
- Node* used_size =
- IntPtrSub(instance_size, WordShl(ChangeUint32ToWord(unused_fields),
- IntPtrConstant(kPointerSizeLog2)));
-
- Comment("initialize filler fields (finalize)");
- InitializeFieldsWithRoot(object, used_size, instance_size,
- Heap::kOnePointerFillerMapRootIndex);
-
- Comment("initialize undefined fields (finalize)");
- InitializeFieldsWithRoot(object, IntPtrConstant(JSObject::kHeaderSize),
- used_size, Heap::kUndefinedValueRootIndex);
-
- CallRuntime(Runtime::kFinalizeInstanceSize, context, initial_map);
- Goto(&end);
- }
-
- BIND(&end);
+ HandleSlackTracking(context, object, initial_map, JSObject::kHeaderSize);
return object;
}
« no previous file with comments | « no previous file | src/builtins/builtins-definitions.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698