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/api.h" | 5 #include "src/api.h" |
6 | 6 |
7 #include <string.h> // For memcpy, strlen. | 7 #include <string.h> // For memcpy, strlen. |
8 #ifdef V8_USE_ADDRESS_SANITIZER | 8 #ifdef V8_USE_ADDRESS_SANITIZER |
9 #include <sanitizer/asan_interface.h> | 9 #include <sanitizer/asan_interface.h> |
10 #endif // V8_USE_ADDRESS_SANITIZER | 10 #endif // V8_USE_ADDRESS_SANITIZER |
(...skipping 2160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2171 source->cached_data->rejected = script_data->rejected(); | 2171 source->cached_data->rejected = script_data->rejected(); |
2172 } | 2172 } |
2173 delete script_data; | 2173 delete script_data; |
2174 } | 2174 } |
2175 RETURN_ESCAPED(ToApiHandle<UnboundScript>(result)); | 2175 RETURN_ESCAPED(ToApiHandle<UnboundScript>(result)); |
2176 } | 2176 } |
2177 | 2177 |
2178 | 2178 |
2179 MaybeLocal<UnboundScript> ScriptCompiler::CompileUnboundScript( | 2179 MaybeLocal<UnboundScript> ScriptCompiler::CompileUnboundScript( |
2180 Isolate* v8_isolate, Source* source, CompileOptions options) { | 2180 Isolate* v8_isolate, Source* source, CompileOptions options) { |
2181 DCHECK(!source->GetResourceOptions().IsModule()); | 2181 Utils::ApiCheck( |
| 2182 !source->GetResourceOptions().IsModule(), |
| 2183 "v8::ScriptCompiler::CompileUnboundScript", |
| 2184 "v8::ScriptCompiler::CompileModule must be used to compile modules"); |
2182 return CompileUnboundInternal(v8_isolate, source, options); | 2185 return CompileUnboundInternal(v8_isolate, source, options); |
2183 } | 2186 } |
2184 | 2187 |
2185 | 2188 |
2186 Local<UnboundScript> ScriptCompiler::CompileUnbound(Isolate* v8_isolate, | 2189 Local<UnboundScript> ScriptCompiler::CompileUnbound(Isolate* v8_isolate, |
2187 Source* source, | 2190 Source* source, |
2188 CompileOptions options) { | 2191 CompileOptions options) { |
2189 DCHECK(!source->GetResourceOptions().IsModule()); | 2192 Utils::ApiCheck( |
| 2193 !source->GetResourceOptions().IsModule(), |
| 2194 "v8::ScriptCompiler::CompileUnbound", |
| 2195 "v8::ScriptCompiler::CompileModule must be used to compile modules"); |
2190 RETURN_TO_LOCAL_UNCHECKED(CompileUnboundInternal(v8_isolate, source, options), | 2196 RETURN_TO_LOCAL_UNCHECKED(CompileUnboundInternal(v8_isolate, source, options), |
2191 UnboundScript); | 2197 UnboundScript); |
2192 } | 2198 } |
2193 | 2199 |
2194 | 2200 |
2195 MaybeLocal<Script> ScriptCompiler::Compile(Local<Context> context, | 2201 MaybeLocal<Script> ScriptCompiler::Compile(Local<Context> context, |
2196 Source* source, | 2202 Source* source, |
2197 CompileOptions options) { | 2203 CompileOptions options) { |
2198 DCHECK(!source->GetResourceOptions().IsModule()); | 2204 Utils::ApiCheck( |
| 2205 !source->GetResourceOptions().IsModule(), "v8::ScriptCompiler::Compile", |
| 2206 "v8::ScriptCompiler::CompileModule must be used to compile modules"); |
2199 auto isolate = context->GetIsolate(); | 2207 auto isolate = context->GetIsolate(); |
2200 auto maybe = CompileUnboundInternal(isolate, source, options); | 2208 auto maybe = CompileUnboundInternal(isolate, source, options); |
2201 Local<UnboundScript> result; | 2209 Local<UnboundScript> result; |
2202 if (!maybe.ToLocal(&result)) return MaybeLocal<Script>(); | 2210 if (!maybe.ToLocal(&result)) return MaybeLocal<Script>(); |
2203 v8::Context::Scope scope(context); | 2211 v8::Context::Scope scope(context); |
2204 return result->BindToCurrentContext(); | 2212 return result->BindToCurrentContext(); |
2205 } | 2213 } |
2206 | 2214 |
2207 | 2215 |
2208 Local<Script> ScriptCompiler::Compile( | 2216 Local<Script> ScriptCompiler::Compile( |
2209 Isolate* v8_isolate, | 2217 Isolate* v8_isolate, |
2210 Source* source, | 2218 Source* source, |
2211 CompileOptions options) { | 2219 CompileOptions options) { |
2212 auto context = v8_isolate->GetCurrentContext(); | 2220 auto context = v8_isolate->GetCurrentContext(); |
2213 RETURN_TO_LOCAL_UNCHECKED(Compile(context, source, options), Script); | 2221 RETURN_TO_LOCAL_UNCHECKED(Compile(context, source, options), Script); |
2214 } | 2222 } |
2215 | 2223 |
2216 MaybeLocal<Module> ScriptCompiler::CompileModule(Isolate* isolate, | 2224 MaybeLocal<Module> ScriptCompiler::CompileModule(Isolate* isolate, |
2217 Source* source) { | 2225 Source* source) { |
2218 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); | 2226 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); |
2219 | 2227 |
2220 DCHECK(source->GetResourceOptions().IsModule()); | 2228 Utils::ApiCheck(source->GetResourceOptions().IsModule(), |
| 2229 "v8::ScriptCompiler::CompileModule", |
| 2230 "Invalid ScriptOrigin: is_module must be true"); |
2221 auto maybe = CompileUnboundInternal(isolate, source, kNoCompileOptions); | 2231 auto maybe = CompileUnboundInternal(isolate, source, kNoCompileOptions); |
2222 Local<UnboundScript> unbound; | 2232 Local<UnboundScript> unbound; |
2223 if (!maybe.ToLocal(&unbound)) return MaybeLocal<Module>(); | 2233 if (!maybe.ToLocal(&unbound)) return MaybeLocal<Module>(); |
2224 | 2234 |
2225 i::Handle<i::SharedFunctionInfo> shared = Utils::OpenHandle(*unbound); | 2235 i::Handle<i::SharedFunctionInfo> shared = Utils::OpenHandle(*unbound); |
2226 return ToApiHandle<Module>(i_isolate->factory()->NewModule(shared)); | 2236 return ToApiHandle<Module>(i_isolate->factory()->NewModule(shared)); |
2227 } | 2237 } |
2228 | 2238 |
2229 | 2239 |
2230 class IsIdentifierHelper { | 2240 class IsIdentifierHelper { |
(...skipping 7938 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10169 Address callback_address = | 10179 Address callback_address = |
10170 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); | 10180 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); |
10171 VMState<EXTERNAL> state(isolate); | 10181 VMState<EXTERNAL> state(isolate); |
10172 ExternalCallbackScope call_scope(isolate, callback_address); | 10182 ExternalCallbackScope call_scope(isolate, callback_address); |
10173 callback(info); | 10183 callback(info); |
10174 } | 10184 } |
10175 | 10185 |
10176 | 10186 |
10177 } // namespace internal | 10187 } // namespace internal |
10178 } // namespace v8 | 10188 } // namespace v8 |
OLD | NEW |