Remove obsolete Runtime_CreateObjectLiteralShallow.
R=verwaest@chromium.org Review URL: https://codereview.chromium.org/24096019 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16793 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
4da303d937
commit
ff2719a075
@ -77,7 +77,7 @@ void FastCloneShallowObjectStub::InitializeInterfaceDescriptor(
|
||||
descriptor->register_param_count_ = 4;
|
||||
descriptor->register_params_ = registers;
|
||||
descriptor->deoptimization_handler_ =
|
||||
Runtime::FunctionForId(Runtime::kCreateObjectLiteralShallow)->entry;
|
||||
Runtime::FunctionForId(Runtime::kCreateObjectLiteral)->entry;
|
||||
}
|
||||
|
||||
|
||||
|
@ -1651,13 +1651,11 @@ void FullCodeGenerator::VisitObjectLiteral(ObjectLiteral* expr) {
|
||||
__ mov(r0, Operand(Smi::FromInt(flags)));
|
||||
int properties_count = constant_properties->length() / 2;
|
||||
if ((FLAG_track_double_fields && expr->may_store_doubles()) ||
|
||||
expr->depth() > 1) {
|
||||
__ Push(r3, r2, r1, r0);
|
||||
__ CallRuntime(Runtime::kCreateObjectLiteral, 4);
|
||||
} else if (Serializer::enabled() || flags != ObjectLiteral::kFastElements ||
|
||||
expr->depth() > 1 || Serializer::enabled() ||
|
||||
flags != ObjectLiteral::kFastElements ||
|
||||
properties_count > FastCloneShallowObjectStub::kMaximumClonedProperties) {
|
||||
__ Push(r3, r2, r1, r0);
|
||||
__ CallRuntime(Runtime::kCreateObjectLiteralShallow, 4);
|
||||
__ CallRuntime(Runtime::kCreateObjectLiteral, 4);
|
||||
} else {
|
||||
FastCloneShallowObjectStub stub(properties_count);
|
||||
__ CallStub(&stub);
|
||||
|
@ -6743,8 +6743,7 @@ class HToFastProperties V8_FINAL : public HUnaryOperation {
|
||||
ASSERT(value->IsCallRuntime());
|
||||
#ifdef DEBUG
|
||||
const Runtime::Function* function = HCallRuntime::cast(value)->function();
|
||||
ASSERT(function->function_id == Runtime::kCreateObjectLiteral ||
|
||||
function->function_id == Runtime::kCreateObjectLiteralShallow);
|
||||
ASSERT(function->function_id == Runtime::kCreateObjectLiteral);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -4179,9 +4179,7 @@ void HOptimizedGraphBuilder::VisitObjectLiteral(ObjectLiteral* expr) {
|
||||
Add<HPushArgument>(Add<HConstant>(constant_properties));
|
||||
Add<HPushArgument>(Add<HConstant>(flags));
|
||||
|
||||
Runtime::FunctionId function_id =
|
||||
(expr->depth() > 1 || expr->may_store_doubles())
|
||||
? Runtime::kCreateObjectLiteral : Runtime::kCreateObjectLiteralShallow;
|
||||
Runtime::FunctionId function_id = Runtime::kCreateObjectLiteral;
|
||||
literal = Add<HCallRuntime>(isolate()->factory()->empty_string(),
|
||||
Runtime::FunctionForId(function_id),
|
||||
4);
|
||||
|
@ -82,7 +82,7 @@ void FastCloneShallowObjectStub::InitializeInterfaceDescriptor(
|
||||
descriptor->register_param_count_ = 4;
|
||||
descriptor->register_params_ = registers;
|
||||
descriptor->deoptimization_handler_ =
|
||||
Runtime::FunctionForId(Runtime::kCreateObjectLiteralShallow)->entry;
|
||||
Runtime::FunctionForId(Runtime::kCreateObjectLiteral)->entry;
|
||||
}
|
||||
|
||||
|
||||
|
@ -1586,21 +1586,15 @@ void FullCodeGenerator::VisitObjectLiteral(ObjectLiteral* expr) {
|
||||
: ObjectLiteral::kNoFlags;
|
||||
int properties_count = constant_properties->length() / 2;
|
||||
if ((FLAG_track_double_fields && expr->may_store_doubles()) ||
|
||||
expr->depth() > 1) {
|
||||
__ mov(edi, Operand(ebp, JavaScriptFrameConstants::kFunctionOffset));
|
||||
__ push(FieldOperand(edi, JSFunction::kLiteralsOffset));
|
||||
__ push(Immediate(Smi::FromInt(expr->literal_index())));
|
||||
__ push(Immediate(constant_properties));
|
||||
__ push(Immediate(Smi::FromInt(flags)));
|
||||
__ CallRuntime(Runtime::kCreateObjectLiteral, 4);
|
||||
} else if (Serializer::enabled() || flags != ObjectLiteral::kFastElements ||
|
||||
expr->depth() > 1 || Serializer::enabled() ||
|
||||
flags != ObjectLiteral::kFastElements ||
|
||||
properties_count > FastCloneShallowObjectStub::kMaximumClonedProperties) {
|
||||
__ mov(edi, Operand(ebp, JavaScriptFrameConstants::kFunctionOffset));
|
||||
__ push(FieldOperand(edi, JSFunction::kLiteralsOffset));
|
||||
__ push(Immediate(Smi::FromInt(expr->literal_index())));
|
||||
__ push(Immediate(constant_properties));
|
||||
__ push(Immediate(Smi::FromInt(flags)));
|
||||
__ CallRuntime(Runtime::kCreateObjectLiteralShallow, 4);
|
||||
__ CallRuntime(Runtime::kCreateObjectLiteral, 4);
|
||||
} else {
|
||||
__ mov(edi, Operand(ebp, JavaScriptFrameConstants::kFunctionOffset));
|
||||
__ mov(eax, FieldOperand(edi, JSFunction::kLiteralsOffset));
|
||||
|
@ -78,7 +78,7 @@ void FastCloneShallowObjectStub::InitializeInterfaceDescriptor(
|
||||
descriptor->register_param_count_ = 4;
|
||||
descriptor->register_params_ = registers;
|
||||
descriptor->deoptimization_handler_ =
|
||||
Runtime::FunctionForId(Runtime::kCreateObjectLiteralShallow)->entry;
|
||||
Runtime::FunctionForId(Runtime::kCreateObjectLiteral)->entry;
|
||||
}
|
||||
|
||||
|
||||
|
@ -1653,13 +1653,11 @@ void FullCodeGenerator::VisitObjectLiteral(ObjectLiteral* expr) {
|
||||
__ li(a0, Operand(Smi::FromInt(flags)));
|
||||
int properties_count = constant_properties->length() / 2;
|
||||
if ((FLAG_track_double_fields && expr->may_store_doubles()) ||
|
||||
expr->depth() > 1) {
|
||||
__ Push(a3, a2, a1, a0);
|
||||
__ CallRuntime(Runtime::kCreateObjectLiteral, 4);
|
||||
} else if (Serializer::enabled() || flags != ObjectLiteral::kFastElements ||
|
||||
expr->depth() > 1 || Serializer::enabled() ||
|
||||
flags != ObjectLiteral::kFastElements ||
|
||||
properties_count > FastCloneShallowObjectStub::kMaximumClonedProperties) {
|
||||
__ Push(a3, a2, a1, a0);
|
||||
__ CallRuntime(Runtime::kCreateObjectLiteralShallow, 4);
|
||||
__ CallRuntime(Runtime::kCreateObjectLiteral, 4);
|
||||
} else {
|
||||
FastCloneShallowObjectStub stub(properties_count);
|
||||
__ CallStub(&stub);
|
||||
|
@ -506,32 +506,6 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_CreateObjectLiteral) {
|
||||
}
|
||||
|
||||
|
||||
RUNTIME_FUNCTION(MaybeObject*, Runtime_CreateObjectLiteralShallow) {
|
||||
HandleScope scope(isolate);
|
||||
ASSERT(args.length() == 4);
|
||||
CONVERT_ARG_HANDLE_CHECKED(FixedArray, literals, 0);
|
||||
CONVERT_SMI_ARG_CHECKED(literals_index, 1);
|
||||
CONVERT_ARG_HANDLE_CHECKED(FixedArray, constant_properties, 2);
|
||||
CONVERT_SMI_ARG_CHECKED(flags, 3);
|
||||
bool should_have_fast_elements = (flags & ObjectLiteral::kFastElements) != 0;
|
||||
bool has_function_literal = (flags & ObjectLiteral::kHasFunction) != 0;
|
||||
|
||||
// Check if boilerplate exists. If not, create it first.
|
||||
Handle<Object> boilerplate(literals->get(literals_index), isolate);
|
||||
if (*boilerplate == isolate->heap()->undefined_value()) {
|
||||
boilerplate = CreateObjectLiteralBoilerplate(isolate,
|
||||
literals,
|
||||
constant_properties,
|
||||
should_have_fast_elements,
|
||||
has_function_literal);
|
||||
RETURN_IF_EMPTY_HANDLE(isolate, boilerplate);
|
||||
// Update the functions literal and return the boilerplate.
|
||||
literals->set(literals_index, *boilerplate);
|
||||
}
|
||||
return isolate->heap()->CopyJSObject(JSObject::cast(*boilerplate));
|
||||
}
|
||||
|
||||
|
||||
static Handle<AllocationSite> GetLiteralAllocationSite(
|
||||
Isolate* isolate,
|
||||
Handle<FixedArray> literals,
|
||||
|
@ -299,7 +299,6 @@ namespace internal {
|
||||
/* Literals */ \
|
||||
F(MaterializeRegExpLiteral, 4, 1)\
|
||||
F(CreateObjectLiteral, 4, 1) \
|
||||
F(CreateObjectLiteralShallow, 4, 1) \
|
||||
F(CreateArrayLiteral, 3, 1) \
|
||||
F(CreateArrayLiteralShallow, 3, 1) \
|
||||
\
|
||||
|
@ -78,7 +78,7 @@ void FastCloneShallowObjectStub::InitializeInterfaceDescriptor(
|
||||
descriptor->register_param_count_ = 4;
|
||||
descriptor->register_params_ = registers;
|
||||
descriptor->deoptimization_handler_ =
|
||||
Runtime::FunctionForId(Runtime::kCreateObjectLiteralShallow)->entry;
|
||||
Runtime::FunctionForId(Runtime::kCreateObjectLiteral)->entry;
|
||||
}
|
||||
|
||||
|
||||
|
@ -1609,21 +1609,15 @@ void FullCodeGenerator::VisitObjectLiteral(ObjectLiteral* expr) {
|
||||
: ObjectLiteral::kNoFlags;
|
||||
int properties_count = constant_properties->length() / 2;
|
||||
if ((FLAG_track_double_fields && expr->may_store_doubles()) ||
|
||||
expr->depth() > 1) {
|
||||
__ movq(rdi, Operand(rbp, JavaScriptFrameConstants::kFunctionOffset));
|
||||
__ push(FieldOperand(rdi, JSFunction::kLiteralsOffset));
|
||||
__ Push(Smi::FromInt(expr->literal_index()));
|
||||
__ Push(constant_properties);
|
||||
__ Push(Smi::FromInt(flags));
|
||||
__ CallRuntime(Runtime::kCreateObjectLiteral, 4);
|
||||
} else if (Serializer::enabled() || flags != ObjectLiteral::kFastElements ||
|
||||
expr->depth() > 1 || Serializer::enabled() ||
|
||||
flags != ObjectLiteral::kFastElements ||
|
||||
properties_count > FastCloneShallowObjectStub::kMaximumClonedProperties) {
|
||||
__ movq(rdi, Operand(rbp, JavaScriptFrameConstants::kFunctionOffset));
|
||||
__ push(FieldOperand(rdi, JSFunction::kLiteralsOffset));
|
||||
__ Push(Smi::FromInt(expr->literal_index()));
|
||||
__ Push(constant_properties);
|
||||
__ Push(Smi::FromInt(flags));
|
||||
__ CallRuntime(Runtime::kCreateObjectLiteralShallow, 4);
|
||||
__ CallRuntime(Runtime::kCreateObjectLiteral, 4);
|
||||
} else {
|
||||
__ movq(rdi, Operand(rbp, JavaScriptFrameConstants::kFunctionOffset));
|
||||
__ movq(rax, FieldOperand(rdi, JSFunction::kLiteralsOffset));
|
||||
|
Loading…
Reference in New Issue
Block a user