[cleanup] Add STATIC_ASSERTs for JSFunction size to relevant places.
Makes it easier to modify JSFunction; the failing asserts will tell which places need to be modified. Change-Id: I70c7cd0b89cf05964b4730990fb3d7f23927437a Reviewed-on: https://chromium-review.googlesource.com/781689 Reviewed-by: Igor Sheludko <ishell@chromium.org> Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Marja Hölttä <marja@chromium.org> Cr-Commit-Position: refs/heads/master@{#49732}
This commit is contained in:
parent
500d7b9315
commit
c08ab6dacc
@ -161,6 +161,7 @@ void AsyncBuiltinsAssembler::InitializeNativeClosure(Node* context,
|
||||
CSA_ASSERT(this, WordEqual(LoadMapInstanceSizeInWords(function_map),
|
||||
IntPtrConstant(JSFunction::kSizeWithoutPrototype /
|
||||
kPointerSize)));
|
||||
STATIC_ASSERT(JSFunction::kSizeWithoutPrototype == 7 * kPointerSize);
|
||||
StoreMapNoWriteBarrier(function, function_map);
|
||||
StoreObjectFieldRoot(function, JSObject::kPropertiesOrHashOffset,
|
||||
Heap::kEmptyFixedArrayRootIndex);
|
||||
|
@ -134,6 +134,7 @@ Node* ConstructorBuiltinsAssembler::EmitFastNewClosure(Node* shared_info,
|
||||
|
||||
BIND(&cell_done);
|
||||
}
|
||||
STATIC_ASSERT(JSFunction::kSizeWithoutPrototype == 7 * kPointerSize);
|
||||
StoreObjectFieldNoWriteBarrier(result, JSFunction::kFeedbackVectorOffset,
|
||||
literals_cell);
|
||||
StoreObjectFieldNoWriteBarrier(result, JSFunction::kSharedFunctionInfoOffset,
|
||||
|
@ -10586,6 +10586,7 @@ Node* CodeStubAssembler::AllocateFunctionWithMapAndContext(Node* map,
|
||||
CSA_ASSERT(this, Word32BinaryNot(IsConstructorMap(map)));
|
||||
CSA_ASSERT(this, Word32BinaryNot(IsFunctionWithPrototypeSlotMap(map)));
|
||||
Node* const fun = Allocate(JSFunction::kSizeWithoutPrototype);
|
||||
STATIC_ASSERT(JSFunction::kSizeWithoutPrototype == 7 * kPointerSize);
|
||||
StoreMapNoWriteBarrier(fun, map);
|
||||
StoreObjectFieldRoot(fun, JSObject::kPropertiesOrHashOffset,
|
||||
Heap::kEmptyFixedArrayRootIndex);
|
||||
|
@ -913,6 +913,7 @@ Reduction JSCreateLowering::ReduceJSCreateClosure(Node* node) {
|
||||
DCHECK(!function_map->is_dictionary_map());
|
||||
|
||||
// Emit code to allocate the JSFunction instance.
|
||||
STATIC_ASSERT(JSFunction::kSizeWithoutPrototype == 7 * kPointerSize);
|
||||
AllocationBuilder a(jsgraph(), effect, control);
|
||||
a.Allocate(function_map->instance_size());
|
||||
a.Store(AccessBuilder::ForMap(), function_map);
|
||||
|
@ -3433,6 +3433,7 @@ Handle<Object> TranslatedState::MaterializeCapturedObjectAt(
|
||||
// We temporarily allocated a JSFunction for the {Object} function
|
||||
// within the current context, to break cycles in the object graph.
|
||||
// The correct function and context will be set below once available.
|
||||
STATIC_ASSERT(JSFunction::kSizeWithoutPrototype == 7 * kPointerSize);
|
||||
Handle<Object> properties = materializer.FieldAt(value_index);
|
||||
Handle<Object> elements = materializer.FieldAt(value_index);
|
||||
Handle<Object> shared = materializer.FieldAt(value_index);
|
||||
|
Loading…
Reference in New Issue
Block a user