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 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
101 class Integer; | 101 class Integer; |
102 class Isolate; | 102 class Isolate; |
103 class Number; | 103 class Number; |
104 class NumberObject; | 104 class NumberObject; |
105 class Object; | 105 class Object; |
106 class ObjectOperationDescriptor; | 106 class ObjectOperationDescriptor; |
107 class ObjectTemplate; | 107 class ObjectTemplate; |
108 class Platform; | 108 class Platform; |
109 class Primitive; | 109 class Primitive; |
110 class RawOperationDescriptor; | 110 class RawOperationDescriptor; |
111 class Script; | |
112 class Signature; | 111 class Signature; |
113 class StackFrame; | 112 class StackFrame; |
114 class StackTrace; | 113 class StackTrace; |
115 class String; | 114 class String; |
116 class StringObject; | 115 class StringObject; |
117 class Symbol; | 116 class Symbol; |
118 class SymbolObject; | 117 class SymbolObject; |
119 class Private; | 118 class Private; |
120 class Uint32; | 119 class Uint32; |
121 class Utils; | 120 class Utils; |
(...skipping 1018 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1140 V8_INLINE Handle<Boolean> ResourceIsSharedCrossOrigin() const; | 1139 V8_INLINE Handle<Boolean> ResourceIsSharedCrossOrigin() const; |
1141 private: | 1140 private: |
1142 Handle<Value> resource_name_; | 1141 Handle<Value> resource_name_; |
1143 Handle<Integer> resource_line_offset_; | 1142 Handle<Integer> resource_line_offset_; |
1144 Handle<Integer> resource_column_offset_; | 1143 Handle<Integer> resource_column_offset_; |
1145 Handle<Boolean> resource_is_shared_cross_origin_; | 1144 Handle<Boolean> resource_is_shared_cross_origin_; |
1146 }; | 1145 }; |
1147 | 1146 |
1148 | 1147 |
1149 /** | 1148 /** |
1150 * A compiled JavaScript script, not yet tied to a Context. | 1149 * A compiled JavaScript script. |
1151 */ | 1150 */ |
1152 class V8_EXPORT UnboundScript { | 1151 class V8_EXPORT Script { |
1153 public: | 1152 public: |
1154 /** | 1153 /** |
1155 * Binds the script to the currently entered context. | 1154 * Compiles the specified script (context-independent). |
| 1155 * |
| 1156 * \param source Script source code. |
| 1157 * \param origin Script origin, owned by caller, no references are kept |
| 1158 * when New() returns |
| 1159 * \param pre_data Pre-parsing data, as obtained by ScriptData::PreCompile() |
| 1160 * using pre_data speeds compilation if it's done multiple times. |
| 1161 * Owned by caller, no references are kept when New() returns. |
| 1162 * \return Compiled script object (context independent; when run it |
| 1163 * will use the currently entered context). |
1156 */ | 1164 */ |
1157 Local<Script> BindToCurrentContext(); | 1165 static Local<Script> New(Handle<String> source, |
| 1166 ScriptOrigin* origin = NULL, |
| 1167 ScriptData* pre_data = NULL); |
1158 | 1168 |
| 1169 /** |
| 1170 * Compiles the specified script using the specified file name |
| 1171 * object (typically a string) as the script's origin. |
| 1172 * |
| 1173 * \param source Script source code. |
| 1174 * \param file_name file name object (typically a string) to be used |
| 1175 * as the script's origin. |
| 1176 * \return Compiled script object (context independent; when run it |
| 1177 * will use the currently entered context). |
| 1178 */ |
| 1179 static Local<Script> New(Handle<String> source, |
| 1180 Handle<Value> file_name); |
| 1181 |
| 1182 /** |
| 1183 * Compiles the specified script (bound to current context). |
| 1184 * |
| 1185 * \param source Script source code. |
| 1186 * \param origin Script origin, owned by caller, no references are kept |
| 1187 * when Compile() returns |
| 1188 * \param pre_data Pre-parsing data, as obtained by ScriptData::PreCompile() |
| 1189 * using pre_data speeds compilation if it's done multiple times. |
| 1190 * Owned by caller, no references are kept when Compile() returns. |
| 1191 * \return Compiled script object, bound to the context that was active |
| 1192 * when this function was called. When run it will always use this |
| 1193 * context. |
| 1194 */ |
| 1195 static Local<Script> Compile(Handle<String> source, |
| 1196 ScriptOrigin* origin = NULL, |
| 1197 ScriptData* pre_data = NULL); |
| 1198 |
| 1199 /** |
| 1200 * Compiles the specified script using the specified file name |
| 1201 * object (typically a string) as the script's origin. |
| 1202 * |
| 1203 * \param source Script source code. |
| 1204 * \param file_name File name to use as script's origin |
| 1205 * \return Compiled script object, bound to the context that was active |
| 1206 * when this function was called. When run it will always use this |
| 1207 * context. |
| 1208 */ |
| 1209 static Local<Script> Compile(Handle<String> source, |
| 1210 Handle<Value> file_name); |
| 1211 |
| 1212 /** |
| 1213 * Runs the script returning the resulting value. If the script is |
| 1214 * context independent (created using ::New) it will be run in the |
| 1215 * currently entered context. If it is context specific (created |
| 1216 * using ::Compile) it will be run in the context in which it was |
| 1217 * compiled. |
| 1218 */ |
| 1219 Local<Value> Run(); |
| 1220 |
| 1221 /** |
| 1222 * Returns the script id. |
| 1223 */ |
1159 int GetId(); | 1224 int GetId(); |
| 1225 |
| 1226 /** |
| 1227 * Returns the name value of one Script. |
| 1228 */ |
1160 Handle<Value> GetScriptName(); | 1229 Handle<Value> GetScriptName(); |
1161 | 1230 |
1162 /** | 1231 /** |
1163 * Returns zero based line number of the code_pos location in the script. | 1232 * Returns zero based line number of the code_pos location in the script. |
1164 * -1 will be returned if no information available. | 1233 * -1 will be returned if no information available. |
1165 */ | 1234 */ |
1166 int GetLineNumber(int code_pos); | 1235 int GetLineNumber(int code_pos); |
1167 | 1236 |
1168 static const int kNoScriptId = 0; | 1237 static const int kNoScriptId = 0; |
1169 }; | 1238 }; |
1170 | 1239 |
1171 | 1240 |
1172 /** | |
1173 * A compiled JavaScript script, tied to a Context which was active when the | |
1174 * script was compiled. | |
1175 */ | |
1176 class V8_EXPORT Script { | |
1177 public: | |
1178 /** | |
1179 * A shorthand for ScriptCompiler::CompileBound(). | |
1180 */ | |
1181 static Local<Script> Compile(Handle<String> source, | |
1182 ScriptOrigin* origin = NULL); | |
1183 | |
1184 // To be decprecated, use the Compile above. | |
1185 static Local<Script> Compile(Handle<String> source, | |
1186 Handle<String> file_name); | |
1187 | |
1188 /** | |
1189 * Runs the script returning the resulting value. It will be run in the | |
1190 * context in which it was created (ScriptCompiler::CompileBound or | |
1191 * UnboundScript::BindToGlobalContext()). | |
1192 */ | |
1193 Local<Value> Run(); | |
1194 | |
1195 /** | |
1196 * Returns the corresponding context-unbound script. | |
1197 */ | |
1198 Local<UnboundScript> GetUnboundScript(); | |
1199 | |
1200 // To be deprecated; use GetUnboundScript()->GetId(); | |
1201 int GetId() { | |
1202 return GetUnboundScript()->GetId(); | |
1203 } | |
1204 | |
1205 // Use GetUnboundScript()->GetId(); | |
1206 V8_DEPRECATED("Use GetUnboundScript()->GetId()", | |
1207 Handle<Value> GetScriptName()) { | |
1208 return GetUnboundScript()->GetScriptName(); | |
1209 } | |
1210 | |
1211 /** | |
1212 * Returns zero based line number of the code_pos location in the script. | |
1213 * -1 will be returned if no information available. | |
1214 */ | |
1215 V8_DEPRECATED("Use GetUnboundScript()->GetLineNumber()", | |
1216 int GetLineNumber(int code_pos)) { | |
1217 return GetUnboundScript()->GetLineNumber(code_pos); | |
1218 } | |
1219 }; | |
1220 | |
1221 | |
1222 /** | |
1223 * For compiling scripts. | |
1224 */ | |
1225 class V8_EXPORT ScriptCompiler { | |
1226 public: | |
1227 /** | |
1228 * Compilation data that the embedder can cache and pass back to speed up | |
1229 * future compilations. The data is produced if the CompilerOptions passed to | |
1230 * the compilation functions in ScriptCompiler contains produce_data_to_cache | |
1231 * = true. The data to cache can then can be retrieved from | |
1232 * UnboundScript. | |
1233 */ | |
1234 struct V8_EXPORT CachedData { | |
1235 CachedData() : data(NULL), length(0) {} | |
1236 // Caller keeps the ownership of data and guarantees that the data stays | |
1237 // alive long enough. | |
1238 CachedData(const uint8_t* data, int length) : data(data), length(length) {} | |
1239 // TODO(marja): Async compilation; add constructors which take a callback | |
1240 // which will be called when V8 no longer needs the data. | |
1241 const uint8_t* data; | |
1242 int length; | |
1243 }; | |
1244 | |
1245 /** | |
1246 * Source code which can be then compiled to a UnboundScript or | |
1247 * BoundScript. | |
1248 */ | |
1249 struct V8_EXPORT Source { | |
1250 Source(Local<String> source_string, const ScriptOrigin& origin, | |
1251 const CachedData& cached_data = CachedData()); | |
1252 Source(Local<String> source_string, | |
1253 const CachedData& cached_data = CachedData()); | |
1254 | |
1255 Local<String> source_string; | |
1256 | |
1257 // Origin information | |
1258 Handle<Value> resource_name; | |
1259 Handle<Integer> resource_line_offset; | |
1260 Handle<Integer> resource_column_offset; | |
1261 Handle<Boolean> resource_is_shared_cross_origin; | |
1262 | |
1263 // Cached data from previous compilation (if any). | |
1264 CachedData cached_data; | |
1265 }; | |
1266 | |
1267 enum CompileOptions { | |
1268 kNoCompileOptions, | |
1269 kProduceDataToCache = 1 << 0 | |
1270 }; | |
1271 | |
1272 /** | |
1273 * Compiles the specified script (context-independent). | |
1274 * | |
1275 * \param source Script source code. | |
1276 * \return Compiled script object (context independent; for running it must be | |
1277 * bound to a context). | |
1278 */ | |
1279 static Local<UnboundScript> CompileUnbound( | |
1280 Isolate* isolate, const Source& source, | |
1281 CompileOptions options = kNoCompileOptions); | |
1282 | |
1283 /** | |
1284 * Compiles the specified script (bound to current context). | |
1285 * | |
1286 * \param source Script source code. | |
1287 * \param pre_data Pre-parsing data, as obtained by ScriptData::PreCompile() | |
1288 * using pre_data speeds compilation if it's done multiple times. | |
1289 * Owned by caller, no references are kept when this function returns. | |
1290 * \return Compiled script object, bound to the context that was active | |
1291 * when this function was called. When run it will always use this | |
1292 * context. | |
1293 */ | |
1294 static Local<Script> Compile( | |
1295 Isolate* isolate, const Source& source, | |
1296 CompileOptions options = kNoCompileOptions); | |
1297 }; | |
1298 | |
1299 | |
1300 /** | 1241 /** |
1301 * An error message. | 1242 * An error message. |
1302 */ | 1243 */ |
1303 class V8_EXPORT Message { | 1244 class V8_EXPORT Message { |
1304 public: | 1245 public: |
1305 Local<String> Get() const; | 1246 Local<String> Get() const; |
1306 Local<String> GetSourceLine() const; | 1247 Local<String> GetSourceLine() const; |
1307 | 1248 |
1308 /** | 1249 /** |
1309 * Returns the resource name for the script from where the function causing | 1250 * Returns the resource name for the script from where the function causing |
(...skipping 5446 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6756 */ | 6697 */ |
6757 | 6698 |
6758 | 6699 |
6759 } // namespace v8 | 6700 } // namespace v8 |
6760 | 6701 |
6761 | 6702 |
6762 #undef TYPE_CHECK | 6703 #undef TYPE_CHECK |
6763 | 6704 |
6764 | 6705 |
6765 #endif // V8_H_ | 6706 #endif // V8_H_ |
OLD | NEW |