| Index: src/objects.cc
|
| ===================================================================
|
| --- src/objects.cc (revision 2708)
|
| +++ src/objects.cc (working copy)
|
| @@ -4780,6 +4780,48 @@
|
| }
|
|
|
|
|
| +int SharedFunctionInfo::CalculateInstanceSize() {
|
| + int instance_size =
|
| + JSObject::kHeaderSize +
|
| + expected_nof_properties() * kPointerSize;
|
| + if (instance_size > JSObject::kMaxInstanceSize) {
|
| + instance_size = JSObject::kMaxInstanceSize;
|
| + }
|
| + return instance_size;
|
| +}
|
| +
|
| +
|
| +int SharedFunctionInfo::CalculateInObjectProperties() {
|
| + return (CalculateInstanceSize() - JSObject::kHeaderSize) / kPointerSize;
|
| +}
|
| +
|
| +
|
| +void SharedFunctionInfo::SetThisPropertyAssignmentsInfo(
|
| + bool only_this_property_assignments,
|
| + bool only_simple_this_property_assignments,
|
| + FixedArray* assignments) {
|
| + ASSERT(this_property_assignments()->IsUndefined());
|
| + set_compiler_hints(BooleanBit::set(compiler_hints(),
|
| + kHasOnlyThisPropertyAssignments,
|
| + only_this_property_assignments));
|
| + set_compiler_hints(BooleanBit::set(compiler_hints(),
|
| + kHasOnlySimpleThisPropertyAssignments,
|
| + only_simple_this_property_assignments));
|
| + set_this_property_assignments(assignments);
|
| + set_this_property_assignments_count(assignments->length() / 3);
|
| +}
|
| +
|
| +
|
| +String* SharedFunctionInfo::GetThisPropertyAssignmentName(int index) {
|
| + Object* obj = this_property_assignments();
|
| + ASSERT(obj->IsFixedArray());
|
| + ASSERT(index < this_property_assignments_count());
|
| + obj = FixedArray::cast(obj)->get(index * 3);
|
| + ASSERT(obj->IsString());
|
| + return String::cast(obj);
|
| +}
|
| +
|
| +
|
| // Support function for printing the source code to a StringStream
|
| // without any allocation in the heap.
|
| void SharedFunctionInfo::SourceCodePrint(StringStream* accumulator,
|
| @@ -4826,6 +4868,8 @@
|
| IteratePointers(v, kNameOffset, kConstructStubOffset + kPointerSize);
|
| IteratePointers(v, kInstanceClassNameOffset, kScriptOffset + kPointerSize);
|
| IteratePointers(v, kDebugInfoOffset, kInferredNameOffset + kPointerSize);
|
| + IteratePointers(v, kThisPropertyAssignmentsOffset,
|
| + kThisPropertyAssignmentsOffset + kPointerSize);
|
| }
|
|
|
|
|
|
|