| Index: src/bootstrapper.cc
|
| diff --git a/src/bootstrapper.cc b/src/bootstrapper.cc
|
| index 54eb9b8a8f7ca9599f4d0131292022bccd1a887e..996721a5797b2f651483531c7ec789c454737ab6 100644
|
| --- a/src/bootstrapper.cc
|
| +++ b/src/bootstrapper.cc
|
| @@ -390,32 +390,25 @@ Handle<DescriptorArray> Genesis::ComputeFunctionInstanceDescriptor(
|
|
|
| DescriptorArray::WhitenessWitness witness(*descriptors);
|
|
|
| - int index = 0;
|
| -
|
| { // Add length.
|
| Handle<Foreign> f(factory()->NewForeign(&Accessors::FunctionLength));
|
| - CallbacksDescriptor d(*factory()->length_symbol(), *f, attribs, index + 1);
|
| - descriptors->Set(index, &d, witness);
|
| - ++index;
|
| + CallbacksDescriptor d(*factory()->length_symbol(), *f, attribs);
|
| + descriptors->Append(&d, witness);
|
| }
|
| { // Add name.
|
| Handle<Foreign> f(factory()->NewForeign(&Accessors::FunctionName));
|
| - CallbacksDescriptor d(*factory()->name_symbol(), *f, attribs, index + 1);
|
| - descriptors->Set(index, &d, witness);
|
| - ++index;
|
| + CallbacksDescriptor d(*factory()->name_symbol(), *f, attribs);
|
| + descriptors->Append(&d, witness);
|
| }
|
| { // Add arguments.
|
| Handle<Foreign> f(factory()->NewForeign(&Accessors::FunctionArguments));
|
| - CallbacksDescriptor d(
|
| - *factory()->arguments_symbol(), *f, attribs, index + 1);
|
| - descriptors->Set(index, &d, witness);
|
| - ++index;
|
| + CallbacksDescriptor d(*factory()->arguments_symbol(), *f, attribs);
|
| + descriptors->Append(&d, witness);
|
| }
|
| { // Add caller.
|
| Handle<Foreign> f(factory()->NewForeign(&Accessors::FunctionCaller));
|
| - CallbacksDescriptor d(*factory()->caller_symbol(), *f, attribs, index + 1);
|
| - descriptors->Set(index, &d, witness);
|
| - ++index;
|
| + CallbacksDescriptor d(*factory()->caller_symbol(), *f, attribs);
|
| + descriptors->Append(&d, witness);
|
| }
|
| if (prototypeMode != DONT_ADD_PROTOTYPE) {
|
| // Add prototype.
|
| @@ -423,9 +416,8 @@ Handle<DescriptorArray> Genesis::ComputeFunctionInstanceDescriptor(
|
| attribs = static_cast<PropertyAttributes>(attribs & ~READ_ONLY);
|
| }
|
| Handle<Foreign> f(factory()->NewForeign(&Accessors::FunctionPrototype));
|
| - CallbacksDescriptor d(
|
| - *factory()->prototype_symbol(), *f, attribs, index + 1);
|
| - descriptors->Set(index, &d, witness);
|
| + CallbacksDescriptor d(*factory()->prototype_symbol(), *f, attribs);
|
| + descriptors->Append(&d, witness);
|
| }
|
|
|
| descriptors->Sort(witness);
|
| @@ -542,32 +534,25 @@ Handle<DescriptorArray> Genesis::ComputeStrictFunctionInstanceDescriptor(
|
|
|
| DescriptorArray::WhitenessWitness witness(*descriptors);
|
|
|
| - int index = 0;
|
| { // Add length.
|
| Handle<Foreign> f(factory()->NewForeign(&Accessors::FunctionLength));
|
| - CallbacksDescriptor d(*factory()->length_symbol(), *f, attribs, index + 1);
|
| - descriptors->Set(index, &d, witness);
|
| - ++index;
|
| + CallbacksDescriptor d(*factory()->length_symbol(), *f, attribs);
|
| + descriptors->Append(&d, witness);
|
| }
|
| { // Add name.
|
| Handle<Foreign> f(factory()->NewForeign(&Accessors::FunctionName));
|
| - CallbacksDescriptor d(*factory()->name_symbol(), *f, attribs, index + 1);
|
| - descriptors->Set(index, &d, witness);
|
| - ++index;
|
| + CallbacksDescriptor d(*factory()->name_symbol(), *f, attribs);
|
| + descriptors->Append(&d, witness);
|
| }
|
| { // Add arguments.
|
| Handle<AccessorPair> arguments(factory()->NewAccessorPair());
|
| - CallbacksDescriptor d(
|
| - *factory()->arguments_symbol(), *arguments, attribs, index + 1);
|
| - descriptors->Set(index, &d, witness);
|
| - ++index;
|
| + CallbacksDescriptor d(*factory()->arguments_symbol(), *arguments, attribs);
|
| + descriptors->Append(&d, witness);
|
| }
|
| { // Add caller.
|
| Handle<AccessorPair> caller(factory()->NewAccessorPair());
|
| - CallbacksDescriptor d(
|
| - *factory()->caller_symbol(), *caller, attribs, index + 1);
|
| - descriptors->Set(index, &d, witness);
|
| - ++index;
|
| + CallbacksDescriptor d(*factory()->caller_symbol(), *caller, attribs);
|
| + descriptors->Append(&d, witness);
|
| }
|
|
|
| if (prototypeMode != DONT_ADD_PROTOTYPE) {
|
| @@ -576,9 +561,8 @@ Handle<DescriptorArray> Genesis::ComputeStrictFunctionInstanceDescriptor(
|
| attribs = static_cast<PropertyAttributes>(attribs | READ_ONLY);
|
| }
|
| Handle<Foreign> f(factory()->NewForeign(&Accessors::FunctionPrototype));
|
| - CallbacksDescriptor d(
|
| - *factory()->prototype_symbol(), *f, attribs, index + 1);
|
| - descriptors->Set(index, &d, witness);
|
| + CallbacksDescriptor d(*factory()->prototype_symbol(), *f, attribs);
|
| + descriptors->Append(&d, witness);
|
| }
|
|
|
| descriptors->Sort(witness);
|
| @@ -967,42 +951,33 @@ bool Genesis::InitializeGlobal(Handle<GlobalObject> inner_global,
|
| DescriptorArray::WhitenessWitness witness(*descriptors);
|
| PropertyAttributes final =
|
| static_cast<PropertyAttributes>(DONT_ENUM | DONT_DELETE | READ_ONLY);
|
| - int index = 0;
|
| {
|
| // ECMA-262, section 15.10.7.1.
|
| FieldDescriptor field(heap->source_symbol(),
|
| JSRegExp::kSourceFieldIndex,
|
| - final,
|
| - index + 1);
|
| - descriptors->Set(index, &field, witness);
|
| - ++index;
|
| + final);
|
| + descriptors->Append(&field, witness);
|
| }
|
| {
|
| // ECMA-262, section 15.10.7.2.
|
| FieldDescriptor field(heap->global_symbol(),
|
| JSRegExp::kGlobalFieldIndex,
|
| - final,
|
| - index + 1);
|
| - descriptors->Set(index, &field, witness);
|
| - ++index;
|
| + final);
|
| + descriptors->Append(&field, witness);
|
| }
|
| {
|
| // ECMA-262, section 15.10.7.3.
|
| FieldDescriptor field(heap->ignore_case_symbol(),
|
| JSRegExp::kIgnoreCaseFieldIndex,
|
| - final,
|
| - index + 1);
|
| - descriptors->Set(index, &field, witness);
|
| - ++index;
|
| + final);
|
| + descriptors->Append(&field, witness);
|
| }
|
| {
|
| // ECMA-262, section 15.10.7.4.
|
| FieldDescriptor field(heap->multiline_symbol(),
|
| JSRegExp::kMultilineFieldIndex,
|
| - final,
|
| - index + 1);
|
| - descriptors->Set(index, &field, witness);
|
| - ++index;
|
| + final);
|
| + descriptors->Append(&field, witness);
|
| }
|
| {
|
| // ECMA-262, section 15.10.7.5.
|
| @@ -1010,9 +985,8 @@ bool Genesis::InitializeGlobal(Handle<GlobalObject> inner_global,
|
| static_cast<PropertyAttributes>(DONT_ENUM | DONT_DELETE);
|
| FieldDescriptor field(heap->last_index_symbol(),
|
| JSRegExp::kLastIndexFieldIndex,
|
| - writable,
|
| - index + 1);
|
| - descriptors->Set(index, &field, witness);
|
| + writable);
|
| + descriptors->Append(&field, witness);
|
| }
|
| descriptors->Sort(witness);
|
|
|
| @@ -1158,26 +1132,21 @@ bool Genesis::InitializeGlobal(Handle<GlobalObject> inner_global,
|
| // Create the descriptor array for the arguments object.
|
| Handle<DescriptorArray> descriptors = factory->NewDescriptorArray(3);
|
| DescriptorArray::WhitenessWitness witness(*descriptors);
|
| - int index = 0;
|
| { // length
|
| - FieldDescriptor d(*factory->length_symbol(), 0, DONT_ENUM, index + 1);
|
| - descriptors->Set(index, &d, witness);
|
| - ++index;
|
| + FieldDescriptor d(*factory->length_symbol(), 0, DONT_ENUM);
|
| + descriptors->Append(&d, witness);
|
| }
|
| { // callee
|
| CallbacksDescriptor d(*factory->callee_symbol(),
|
| *callee,
|
| - attributes,
|
| - index + 1);
|
| - descriptors->Set(index, &d, witness);
|
| - ++index;
|
| + attributes);
|
| + descriptors->Append(&d, witness);
|
| }
|
| { // caller
|
| CallbacksDescriptor d(*factory->caller_symbol(),
|
| *caller,
|
| - attributes,
|
| - index + 1);
|
| - descriptors->Set(index, &d, witness);
|
| + attributes);
|
| + descriptors->Append(&d, witness);
|
| }
|
| descriptors->Sort(witness);
|
|
|
| @@ -1775,22 +1744,20 @@ bool Genesis::InstallNatives() {
|
| reresult_descriptors->CopyFrom(0, *array_descriptors, old, witness);
|
| if (copy_result->IsFailure()) return false;
|
|
|
| - int index = 1;
|
| + reresult_descriptors->SetLastAdded(0);
|
| +
|
| {
|
| FieldDescriptor index_field(heap()->index_symbol(),
|
| JSRegExpResult::kIndexIndex,
|
| - NONE,
|
| - index + 1);
|
| - reresult_descriptors->Set(index, &index_field, witness);
|
| - ++index;
|
| + NONE);
|
| + reresult_descriptors->Append(&index_field, witness);
|
| }
|
|
|
| {
|
| FieldDescriptor input_field(heap()->input_symbol(),
|
| JSRegExpResult::kInputIndex,
|
| - NONE,
|
| - index + 1);
|
| - reresult_descriptors->Set(index, &input_field, witness);
|
| + NONE);
|
| + reresult_descriptors->Append(&input_field, witness);
|
| }
|
| reresult_descriptors->Sort(witness);
|
|
|
|
|