| Index: src/objects.cc
|
| diff --git a/src/objects.cc b/src/objects.cc
|
| index 10971cfb7c53c8695f620f49129373c1f489e882..e10caf72aed6d1f975256dbb675a3edc10e40772 100644
|
| --- a/src/objects.cc
|
| +++ b/src/objects.cc
|
| @@ -9647,114 +9647,6 @@ int SharedFunctionInfo::CalculateInObjectProperties() {
|
| }
|
|
|
|
|
| -bool SharedFunctionInfo::CanGenerateInlineConstructor(Object* prototype) {
|
| - // Check the basic conditions for generating inline constructor code.
|
| - if (!FLAG_inline_new
|
| - || !has_only_simple_this_property_assignments()
|
| - || is_generator()
|
| - || this_property_assignments_count() == 0) {
|
| - return false;
|
| - }
|
| -
|
| - Isolate* isolate = GetIsolate();
|
| - Heap* heap = isolate->heap();
|
| -
|
| - // Traverse the proposed prototype chain looking for properties of the
|
| - // same names as are set by the inline constructor.
|
| - for (Object* obj = prototype;
|
| - obj != heap->null_value();
|
| - obj = obj->GetPrototype(isolate)) {
|
| - JSReceiver* receiver = JSReceiver::cast(obj);
|
| - for (int i = 0; i < this_property_assignments_count(); i++) {
|
| - LookupResult result(heap->isolate());
|
| - String* name = GetThisPropertyAssignmentName(i);
|
| - receiver->LocalLookup(name, &result);
|
| - if (result.IsFound()) {
|
| - switch (result.type()) {
|
| - case NORMAL:
|
| - case FIELD:
|
| - case CONSTANT_FUNCTION:
|
| - break;
|
| - case INTERCEPTOR:
|
| - case CALLBACKS:
|
| - case HANDLER:
|
| - return false;
|
| - case TRANSITION:
|
| - case NONEXISTENT:
|
| - UNREACHABLE();
|
| - break;
|
| - }
|
| - }
|
| - }
|
| - }
|
| -
|
| - return true;
|
| -}
|
| -
|
| -
|
| -void SharedFunctionInfo::ForbidInlineConstructor() {
|
| - set_compiler_hints(BooleanBit::set(compiler_hints(),
|
| - kHasOnlySimpleThisPropertyAssignments,
|
| - false));
|
| -}
|
| -
|
| -
|
| -void SharedFunctionInfo::SetThisPropertyAssignmentsInfo(
|
| - bool only_simple_this_property_assignments,
|
| - FixedArray* 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);
|
| -}
|
| -
|
| -
|
| -void SharedFunctionInfo::ClearThisPropertyAssignmentsInfo() {
|
| - Heap* heap = GetHeap();
|
| - set_compiler_hints(BooleanBit::set(compiler_hints(),
|
| - kHasOnlySimpleThisPropertyAssignments,
|
| - false));
|
| - set_this_property_assignments(heap->undefined_value());
|
| - set_this_property_assignments_count(0);
|
| -}
|
| -
|
| -
|
| -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);
|
| -}
|
| -
|
| -
|
| -bool SharedFunctionInfo::IsThisPropertyAssignmentArgument(int index) {
|
| - Object* obj = this_property_assignments();
|
| - ASSERT(obj->IsFixedArray());
|
| - ASSERT(index < this_property_assignments_count());
|
| - obj = FixedArray::cast(obj)->get(index * 3 + 1);
|
| - return Smi::cast(obj)->value() != -1;
|
| -}
|
| -
|
| -
|
| -int SharedFunctionInfo::GetThisPropertyAssignmentArgument(int index) {
|
| - ASSERT(IsThisPropertyAssignmentArgument(index));
|
| - Object* obj =
|
| - FixedArray::cast(this_property_assignments())->get(index * 3 + 1);
|
| - return Smi::cast(obj)->value();
|
| -}
|
| -
|
| -
|
| -Object* SharedFunctionInfo::GetThisPropertyAssignmentConstant(int index) {
|
| - ASSERT(!IsThisPropertyAssignmentArgument(index));
|
| - Object* obj =
|
| - FixedArray::cast(this_property_assignments())->get(index * 3 + 2);
|
| - return obj;
|
| -}
|
| -
|
| -
|
| // Support function for printing the source code to a StringStream
|
| // without any allocation in the heap.
|
| void SharedFunctionInfo::SourceCodePrint(StringStream* accumulator,
|
|
|