OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "src/accessors.h" | 5 #include "src/accessors.h" |
6 | 6 |
7 #include "src/api.h" | 7 #include "src/api.h" |
8 #include "src/contexts.h" | 8 #include "src/contexts.h" |
9 #include "src/deoptimizer.h" | 9 #include "src/deoptimizer.h" |
10 #include "src/execution.h" | 10 #include "src/execution.h" |
(...skipping 451 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
462 Handle<AccessorInfo> Accessors::ScriptCompilationTypeInfo( | 462 Handle<AccessorInfo> Accessors::ScriptCompilationTypeInfo( |
463 Isolate* isolate, PropertyAttributes attributes) { | 463 Isolate* isolate, PropertyAttributes attributes) { |
464 Handle<String> name(isolate->factory()->InternalizeOneByteString( | 464 Handle<String> name(isolate->factory()->InternalizeOneByteString( |
465 STATIC_CHAR_VECTOR("compilation_type"))); | 465 STATIC_CHAR_VECTOR("compilation_type"))); |
466 return MakeAccessor(isolate, name, &ScriptCompilationTypeGetter, nullptr, | 466 return MakeAccessor(isolate, name, &ScriptCompilationTypeGetter, nullptr, |
467 attributes); | 467 attributes); |
468 } | 468 } |
469 | 469 |
470 | 470 |
471 // | 471 // |
472 // Accessors::ScriptGetLineEnds | |
473 // | |
474 | |
475 | |
476 void Accessors::ScriptLineEndsGetter( | |
477 v8::Local<v8::Name> name, | |
478 const v8::PropertyCallbackInfo<v8::Value>& info) { | |
479 i::Isolate* isolate = reinterpret_cast<i::Isolate*>(info.GetIsolate()); | |
480 HandleScope scope(isolate); | |
481 Handle<Object> object = Utils::OpenHandle(*info.Holder()); | |
482 Handle<Script> script( | |
483 Script::cast(Handle<JSValue>::cast(object)->value()), isolate); | |
484 Script::InitLineEnds(script); | |
485 DCHECK(script->line_ends()->IsFixedArray()); | |
486 Handle<FixedArray> line_ends(FixedArray::cast(script->line_ends())); | |
487 // We do not want anyone to modify this array from JS. | |
488 DCHECK(*line_ends == isolate->heap()->empty_fixed_array() || | |
489 line_ends->map() == isolate->heap()->fixed_cow_array_map()); | |
490 Handle<JSArray> js_array = | |
491 isolate->factory()->NewJSArrayWithElements(line_ends); | |
492 info.GetReturnValue().Set(Utils::ToLocal(js_array)); | |
493 } | |
494 | |
495 | |
496 Handle<AccessorInfo> Accessors::ScriptLineEndsInfo( | |
497 Isolate* isolate, PropertyAttributes attributes) { | |
498 Handle<String> name(isolate->factory()->InternalizeOneByteString( | |
499 STATIC_CHAR_VECTOR("line_ends"))); | |
500 return MakeAccessor(isolate, name, &ScriptLineEndsGetter, nullptr, | |
501 attributes); | |
502 } | |
503 | |
504 | |
505 // | |
506 // Accessors::ScriptSourceUrl | 472 // Accessors::ScriptSourceUrl |
507 // | 473 // |
508 | 474 |
509 | 475 |
510 void Accessors::ScriptSourceUrlGetter( | 476 void Accessors::ScriptSourceUrlGetter( |
511 v8::Local<v8::Name> name, | 477 v8::Local<v8::Name> name, |
512 const v8::PropertyCallbackInfo<v8::Value>& info) { | 478 const v8::PropertyCallbackInfo<v8::Value>& info) { |
513 i::Isolate* isolate = reinterpret_cast<i::Isolate*>(info.GetIsolate()); | 479 i::Isolate* isolate = reinterpret_cast<i::Isolate*>(info.GetIsolate()); |
514 DisallowHeapAllocation no_allocation; | 480 DisallowHeapAllocation no_allocation; |
515 HandleScope scope(isolate); | 481 HandleScope scope(isolate); |
(...skipping 769 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1285 Handle<AccessorInfo> Accessors::ErrorStackInfo(Isolate* isolate, | 1251 Handle<AccessorInfo> Accessors::ErrorStackInfo(Isolate* isolate, |
1286 PropertyAttributes attributes) { | 1252 PropertyAttributes attributes) { |
1287 Handle<AccessorInfo> info = | 1253 Handle<AccessorInfo> info = |
1288 MakeAccessor(isolate, isolate->factory()->stack_string(), | 1254 MakeAccessor(isolate, isolate->factory()->stack_string(), |
1289 &ErrorStackGetter, &ErrorStackSetter, attributes); | 1255 &ErrorStackGetter, &ErrorStackSetter, attributes); |
1290 return info; | 1256 return info; |
1291 } | 1257 } |
1292 | 1258 |
1293 } // namespace internal | 1259 } // namespace internal |
1294 } // namespace v8 | 1260 } // namespace v8 |
OLD | NEW |