[V8] Allow a script to be flagged as "native"
authorAaron Kennedy <aaron.kennedy@nokia.com>
Fri, 9 Sep 2011 04:16:12 +0000 (14:16 +1000)
committerQt by Nokia <qt-info@nokia.com>
Thu, 26 Apr 2012 06:56:39 +0000 (08:56 +0200)
Native scripts do not appear in backtraces, or in the source and
line number when exceptions are thrown from within them.  This is
useful to be able to write code in JavaScript instead of C++ and
still have it appear sensibly to the user.

Change-Id: I324ad60d8712c0afba7f0e4f26ce5ab931ae91dd
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
src/3rdparty/v8/include/v8.h
src/3rdparty/v8/src/compiler.cc

index 0f23f21..78b6beb 100644 (file)
@@ -588,8 +588,9 @@ class ScriptOrigin {
 class V8EXPORT Script {
  public:
   enum CompileFlags {
-      Default = 0x00,
-      QmlMode = 0x01
+      Default    = 0x00,
+      QmlMode    = 0x01,
+      NativeMode = 0x02
   };
 
   /**
index ffd124e..6435068 100644 (file)
@@ -508,7 +508,7 @@ Handle<SharedFunctionInfo> Compiler::Compile(Handle<String> source,
 
     // Create a script object describing the script to be compiled.
     Handle<Script> script = FACTORY->NewScript(source);
-    if (natives == NATIVES_CODE) {
+    if (natives == NATIVES_CODE || compile_flags & v8::Script::NativeMode) {
       script->set_type(Smi::FromInt(Script::TYPE_NATIVE));
     }
     if (!script_name.is_null()) {