5 #ifndef V8_OBJECTS_SCRIPT_INL_H_ 6 #define V8_OBJECTS_SCRIPT_INL_H_ 8 #include "src/objects/script.h" 10 #include "src/objects/shared-function-info.h" 11 #include "src/objects/smi-inl.h" 12 #include "src/objects/string-inl.h" 15 #include "src/objects/object-macros.h" 22 ACCESSORS(Script, source, Object, kSourceOffset)
23 ACCESSORS(Script, name, Object, kNameOffset)
24 SMI_ACCESSORS(Script,
id, kIdOffset)
25 SMI_ACCESSORS(Script, line_offset, kLineOffsetOffset)
26 SMI_ACCESSORS(Script, column_offset, kColumnOffsetOffset)
27 ACCESSORS(Script, context_data, Object, kContextOffset)
28 SMI_ACCESSORS(Script, type, kTypeOffset)
29 ACCESSORS(Script, line_ends, Object, kLineEndsOffset)
30 ACCESSORS_CHECKED(Script, eval_from_shared_or_wrapped_arguments, Object,
31 kEvalFromSharedOrWrappedArgumentsOffset,
32 this->type() != TYPE_WASM)
33 SMI_ACCESSORS_CHECKED(Script, eval_from_position, kEvalFromPositionOffset,
34 this->type() != TYPE_WASM)
35 ACCESSORS(Script, shared_function_infos, WeakFixedArray,
36 kSharedFunctionInfosOffset)
37 SMI_ACCESSORS(Script, flags, kFlagsOffset)
38 ACCESSORS(Script, source_url, Object, kSourceUrlOffset)
39 ACCESSORS(Script, source_mapping_url, Object, kSourceMappingUrlOffset)
40 ACCESSORS2(Script, host_defined_options, FixedArray, kHostDefinedOptionsOffset)
41 ACCESSORS_CHECKED(Script, wasm_module_object, Object,
42 kEvalFromSharedOrWrappedArgumentsOffset,
43 this->type() == TYPE_WASM)
45 bool Script::is_wrapped()
const {
46 return eval_from_shared_or_wrapped_arguments()->IsFixedArray();
49 bool Script::has_eval_from_shared()
const {
50 return eval_from_shared_or_wrapped_arguments()->IsSharedFunctionInfo();
53 void Script::set_eval_from_shared(SharedFunctionInfo* shared,
54 WriteBarrierMode mode) {
55 DCHECK(!is_wrapped());
56 set_eval_from_shared_or_wrapped_arguments(shared, mode);
59 SharedFunctionInfo* Script::eval_from_shared()
const {
60 DCHECK(has_eval_from_shared());
61 return SharedFunctionInfo::cast(eval_from_shared_or_wrapped_arguments());
64 void Script::set_wrapped_arguments(FixedArray value, WriteBarrierMode mode) {
65 DCHECK(!has_eval_from_shared());
66 set_eval_from_shared_or_wrapped_arguments(value, mode);
69 FixedArray Script::wrapped_arguments()
const {
71 return FixedArray::cast(eval_from_shared_or_wrapped_arguments());
74 Script::CompilationType Script::compilation_type() {
75 return BooleanBit::get(flags(), kCompilationTypeBit) ? COMPILATION_TYPE_EVAL
76 : COMPILATION_TYPE_HOST;
78 void Script::set_compilation_type(CompilationType type) {
79 set_flags(BooleanBit::set(flags(), kCompilationTypeBit,
80 type == COMPILATION_TYPE_EVAL));
82 Script::CompilationState Script::compilation_state() {
83 return BooleanBit::get(flags(), kCompilationStateBit)
84 ? COMPILATION_STATE_COMPILED
85 : COMPILATION_STATE_INITIAL;
87 void Script::set_compilation_state(CompilationState state) {
88 set_flags(BooleanBit::set(flags(), kCompilationStateBit,
89 state == COMPILATION_STATE_COMPILED));
91 ScriptOriginOptions Script::origin_options() {
92 return ScriptOriginOptions((flags() & kOriginOptionsMask) >>
95 void Script::set_origin_options(ScriptOriginOptions origin_options) {
96 DCHECK(!(origin_options.Flags() & ~((1 << kOriginOptionsSize) - 1)));
97 set_flags((flags() & ~kOriginOptionsMask) |
98 (origin_options.Flags() << kOriginOptionsShift));
101 bool Script::HasValidSource() {
102 Object* src = this->source();
103 if (!src->IsString())
return true;
104 String src_str = String::cast(src);
105 if (!StringShape(src_str).IsExternal())
return true;
106 if (src_str->IsOneByteRepresentation()) {
107 return ExternalOneByteString::cast(src)->resource() !=
nullptr;
108 }
else if (src_str->IsTwoByteRepresentation()) {
109 return ExternalTwoByteString::cast(src)->resource() !=
nullptr;
117 #include "src/objects/object-macros-undef.h" 119 #endif // V8_OBJECTS_SCRIPT_INL_H_