Fix mismatched new[]/delete.

Another two cases where a new[] is used but only a delete occurs.

Bug: 18202869
Change-Id: If68264807150f3a9783e44ef8823cc366bff8df2
diff --git a/runtime/stack.h b/runtime/stack.h
index e2af5ee..3f1bff8 100644
--- a/runtime/stack.h
+++ b/runtime/stack.h
@@ -74,12 +74,18 @@
   }
 
   // Create ShadowFrame in heap for deoptimization.
-  static ShadowFrame* Create(uint32_t num_vregs, ShadowFrame* link,
-                             mirror::ArtMethod* method, uint32_t dex_pc) {
+  static ShadowFrame* CreateDeoptimizedFrame(uint32_t num_vregs, ShadowFrame* link,
+                                             mirror::ArtMethod* method, uint32_t dex_pc) {
     uint8_t* memory = new uint8_t[ComputeSize(num_vregs)];
     return Create(num_vregs, link, method, dex_pc, memory);
   }
 
+  // Delete a ShadowFrame allocated on the heap for deoptimization.
+  static void DeleteDeoptimizedFrame(ShadowFrame* sf) {
+    uint8_t* memory = reinterpret_cast<uint8_t*>(sf);
+    delete[] memory;
+  }
+
   // Create ShadowFrame for interpreter using provided memory.
   static ShadowFrame* Create(uint32_t num_vregs, ShadowFrame* link,
                              mirror::ArtMethod* method, uint32_t dex_pc, void* memory) {