summaryrefslogtreecommitdiff
path: root/src/binding.cc
diff options
context:
space:
mode:
authorRyan Dahl <ry@tinyclouds.org>2018-08-02 13:13:32 -0400
committerGitHub <noreply@github.com>2018-08-02 13:13:32 -0400
commitc7c6203e61cb6bb85051b96eabd6deae7995a787 (patch)
treeef463466f34fd72a4ac5a30eecd3cc94254f321f /src/binding.cc
parente30bdb71aa8b9902078e1ed8e7d014a68eb9eb2e (diff)
Source map support (#429)
This change increases size: out/debug/obj/libdeno/from_snapshot.o 19M -> 34M out/release/deno 32M -> 47M
Diffstat (limited to 'src/binding.cc')
-rw-r--r--src/binding.cc13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/binding.cc b/src/binding.cc
index 1c4deaa23..19448ca2a 100644
--- a/src/binding.cc
+++ b/src/binding.cc
@@ -270,7 +270,8 @@ bool Execute(v8::Local<v8::Context> context, const char* js_filename,
}
void InitializeContext(v8::Isolate* isolate, v8::Local<v8::Context> context,
- const char* js_filename, const char* js_source) {
+ const char* js_filename, const std::string& js_source,
+ const std::string* source_map) {
v8::HandleScope handle_scope(isolate);
v8::Context::Scope context_scope(context);
@@ -293,11 +294,19 @@ void InitializeContext(v8::Isolate* isolate, v8::Local<v8::Context> context,
skip_onerror = true;
{
- auto source = deno::v8_str(js_source);
+ auto source = deno::v8_str(js_source.c_str());
CHECK(global->Set(context, deno::v8_str("mainSource"), source).FromJust());
bool r = deno::ExecuteV8StringSource(context, js_filename, source);
CHECK(r);
+
+ if (source_map != nullptr) {
+ CHECK_GT(source_map->length(), 1u);
+ std::string set_source_map = "setMainSourceMap( " + *source_map + " )";
+ CHECK_GT(set_source_map.length(), source_map->length());
+ r = deno::Execute(context, "set_source_map.js", set_source_map.c_str());
+ CHECK(r);
+ }
}
skip_onerror = false;
}