OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 1035 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1046 | 1046 |
1047 void FunctionTemplate::Inherit(v8::Handle<FunctionTemplate> value) { | 1047 void FunctionTemplate::Inherit(v8::Handle<FunctionTemplate> value) { |
1048 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); | 1048 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
1049 if (IsDeadCheck(isolate, "v8::FunctionTemplate::Inherit()")) return; | 1049 if (IsDeadCheck(isolate, "v8::FunctionTemplate::Inherit()")) return; |
1050 ENTER_V8(isolate); | 1050 ENTER_V8(isolate); |
1051 Utils::OpenHandle(this)->set_parent_template(*Utils::OpenHandle(*value)); | 1051 Utils::OpenHandle(this)->set_parent_template(*Utils::OpenHandle(*value)); |
1052 } | 1052 } |
1053 | 1053 |
1054 | 1054 |
1055 Local<FunctionTemplate> FunctionTemplate::New(InvocationCallback callback, | 1055 Local<FunctionTemplate> FunctionTemplate::New(InvocationCallback callback, |
1056 v8::Handle<Value> data, v8::Handle<Signature> signature) { | 1056 v8::Handle<Value> data, v8::Handle<Signature> signature, int length) { |
1057 i::Isolate* isolate = i::Isolate::Current(); | 1057 i::Isolate* isolate = i::Isolate::Current(); |
1058 EnsureInitializedForIsolate(isolate, "v8::FunctionTemplate::New()"); | 1058 EnsureInitializedForIsolate(isolate, "v8::FunctionTemplate::New()"); |
1059 LOG_API(isolate, "FunctionTemplate::New"); | 1059 LOG_API(isolate, "FunctionTemplate::New"); |
1060 ENTER_V8(isolate); | 1060 ENTER_V8(isolate); |
1061 i::Handle<i::Struct> struct_obj = | 1061 i::Handle<i::Struct> struct_obj = |
1062 isolate->factory()->NewStruct(i::FUNCTION_TEMPLATE_INFO_TYPE); | 1062 isolate->factory()->NewStruct(i::FUNCTION_TEMPLATE_INFO_TYPE); |
1063 i::Handle<i::FunctionTemplateInfo> obj = | 1063 i::Handle<i::FunctionTemplateInfo> obj = |
1064 i::Handle<i::FunctionTemplateInfo>::cast(struct_obj); | 1064 i::Handle<i::FunctionTemplateInfo>::cast(struct_obj); |
1065 InitializeFunctionTemplate(obj); | 1065 InitializeFunctionTemplate(obj); |
1066 int next_serial_number = isolate->next_serial_number(); | 1066 int next_serial_number = isolate->next_serial_number(); |
1067 isolate->set_next_serial_number(next_serial_number + 1); | 1067 isolate->set_next_serial_number(next_serial_number + 1); |
1068 obj->set_serial_number(i::Smi::FromInt(next_serial_number)); | 1068 obj->set_serial_number(i::Smi::FromInt(next_serial_number)); |
1069 if (callback != 0) { | 1069 if (callback != 0) { |
1070 if (data.IsEmpty()) data = v8::Undefined(); | 1070 if (data.IsEmpty()) data = v8::Undefined(); |
1071 Utils::ToLocal(obj)->SetCallHandler(callback, data); | 1071 Utils::ToLocal(obj)->SetCallHandler(callback, data); |
1072 } | 1072 } |
| 1073 obj->set_length(length); |
1073 obj->set_undetectable(false); | 1074 obj->set_undetectable(false); |
1074 obj->set_needs_access_check(false); | 1075 obj->set_needs_access_check(false); |
1075 | 1076 |
1076 if (!signature.IsEmpty()) | 1077 if (!signature.IsEmpty()) |
1077 obj->set_signature(*Utils::OpenHandle(*signature)); | 1078 obj->set_signature(*Utils::OpenHandle(*signature)); |
1078 return Utils::ToLocal(obj); | 1079 return Utils::ToLocal(obj); |
1079 } | 1080 } |
1080 | 1081 |
1081 | 1082 |
1082 Local<Signature> Signature::New(Handle<FunctionTemplate> receiver, | 1083 Local<Signature> Signature::New(Handle<FunctionTemplate> receiver, |
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1233 Local<ObjectTemplate> templ = | 1234 Local<ObjectTemplate> templ = |
1234 ObjectTemplate::New(v8::Handle<FunctionTemplate>(this)); | 1235 ObjectTemplate::New(v8::Handle<FunctionTemplate>(this)); |
1235 Utils::OpenHandle(this)->set_instance_template(*Utils::OpenHandle(*templ)); | 1236 Utils::OpenHandle(this)->set_instance_template(*Utils::OpenHandle(*templ)); |
1236 } | 1237 } |
1237 i::Handle<i::ObjectTemplateInfo> result(i::ObjectTemplateInfo::cast( | 1238 i::Handle<i::ObjectTemplateInfo> result(i::ObjectTemplateInfo::cast( |
1238 Utils::OpenHandle(this)->instance_template())); | 1239 Utils::OpenHandle(this)->instance_template())); |
1239 return Utils::ToLocal(result); | 1240 return Utils::ToLocal(result); |
1240 } | 1241 } |
1241 | 1242 |
1242 | 1243 |
| 1244 void FunctionTemplate::SetLength(int length) { |
| 1245 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
| 1246 if (IsDeadCheck(isolate, "v8::FunctionTemplate::SetLength()")) return; |
| 1247 ENTER_V8(isolate); |
| 1248 Utils::OpenHandle(this)->set_length(length); |
| 1249 } |
| 1250 |
| 1251 |
1243 void FunctionTemplate::SetClassName(Handle<String> name) { | 1252 void FunctionTemplate::SetClassName(Handle<String> name) { |
1244 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); | 1253 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
1245 if (IsDeadCheck(isolate, "v8::FunctionTemplate::SetClassName()")) return; | 1254 if (IsDeadCheck(isolate, "v8::FunctionTemplate::SetClassName()")) return; |
1246 ENTER_V8(isolate); | 1255 ENTER_V8(isolate); |
1247 Utils::OpenHandle(this)->set_class_name(*Utils::OpenHandle(*name)); | 1256 Utils::OpenHandle(this)->set_class_name(*Utils::OpenHandle(*name)); |
1248 } | 1257 } |
1249 | 1258 |
1250 | 1259 |
1251 void FunctionTemplate::SetHiddenPrototype(bool value) { | 1260 void FunctionTemplate::SetHiddenPrototype(bool value) { |
1252 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); | 1261 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
(...skipping 5451 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6704 | 6713 |
6705 v->VisitPointers(blocks_.first(), first_block_limit_); | 6714 v->VisitPointers(blocks_.first(), first_block_limit_); |
6706 | 6715 |
6707 for (int i = 1; i < blocks_.length(); i++) { | 6716 for (int i = 1; i < blocks_.length(); i++) { |
6708 v->VisitPointers(blocks_[i], &blocks_[i][kHandleBlockSize]); | 6717 v->VisitPointers(blocks_[i], &blocks_[i][kHandleBlockSize]); |
6709 } | 6718 } |
6710 } | 6719 } |
6711 | 6720 |
6712 | 6721 |
6713 } } // namespace v8::internal | 6722 } } // namespace v8::internal |
OLD | NEW |