Reviewers: Michael Starzinger,

Description:
Handlify GetSourceCode-related functions.


Please review this at http://codereview.chromium.org/9374013/

SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge

Affected files:
  M src/objects.h
  M src/objects.cc
  M src/runtime.cc


Index: src/objects.cc
diff --git a/src/objects.cc b/src/objects.cc
index e4f165ae44e5e64051c8ea176e5687b6869ef11b..5690e9ae5411db7eca1dac94983ab9cdf64075a2 100644
--- a/src/objects.cc
+++ b/src/objects.cc
@@ -7615,13 +7615,12 @@ bool SharedFunctionInfo::HasSourceCode() {
 }


-Object* SharedFunctionInfo::GetSourceCode() {
-  Isolate* isolate = GetIsolate();
-  if (!HasSourceCode()) return isolate->heap()->undefined_value();
-  HandleScope scope(isolate);
-  Object* source = Script::cast(script())->source();
-  return *SubString(Handle<String>(String::cast(source), isolate),
-                    start_position(), end_position());
+Handle<Object> SharedFunctionInfo::GetSourceCode() {
+  if (!HasSourceCode()) {
+    return Handle<Object>(GetIsolate()->heap()->undefined_value());
+  }
+  Handle<String> source(String::cast(Script::cast(script())->source()));
+  return SubString(source, start_position(), end_position());
 }


Index: src/objects.h
diff --git a/src/objects.h b/src/objects.h
index 76ac347d32a27e3bd3d2edd56d9f18f5ab61d0f8..68306c84e5209e5c874e615c67e450a19bc2853c 100644
--- a/src/objects.h
+++ b/src/objects.h
@@ -5324,7 +5324,7 @@ class SharedFunctionInfo: public HeapObject {

   // [source code]: Source code for the function.
   bool HasSourceCode();
-  Object* GetSourceCode();
+  Handle<Object> GetSourceCode();

   inline int opt_count();
   inline void set_opt_count(int opt_count);
Index: src/runtime.cc
diff --git a/src/runtime.cc b/src/runtime.cc
index d80b4a6945218e15ad17039b851db98822959266..62d3525cbc2f17293ae94abf8f031d59af308b58 100644
--- a/src/runtime.cc
+++ b/src/runtime.cc
@@ -2001,11 +2001,12 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_FunctionGetScript) {


 RUNTIME_FUNCTION(MaybeObject*, Runtime_FunctionGetSourceCode) {
-  NoHandleAllocation ha;
+  HandleScope scope(isolate);
   ASSERT(args.length() == 1);

-  CONVERT_CHECKED(JSFunction, f, args[0]);
-  return f->shared()->GetSourceCode();
+  CONVERT_ARG_CHECKED(JSFunction, f, 0);
+  Handle<SharedFunctionInfo> shared(f->shared());
+  return *shared->GetSourceCode();
 }




--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to