From 8552dd60aed0caad9cd716c518d2db406fd1f4e8 Mon Sep 17 00:00:00 2001 From: Michael Bogdanov Date: Thu, 2 Apr 2015 17:52:19 +0300 Subject: [PATCH] patch moveto stack --- .../jetbrains/kotlin/codegen/StackValue.java | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/StackValue.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/StackValue.java index d3ccbf17b41..6cb40510fa2 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/StackValue.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/StackValue.java @@ -570,10 +570,28 @@ public abstract class StackValue { int size = this.type.getSize(); if (size == 1) { v.swap(); - } else if (size == 2) { + } + else if (size == 2) { v.dupX2(); v.pop(); - } else { + } + else { + throw new UnsupportedOperationException("don't know how to move type " + type + " to top of stack"); + } + + coerceTo(type, v); + } + else if (depth == 2) { + int size = this.type.getSize(); + if (size == 1) { + v.dup2X1(); + v.pop2(); + } + else if (size == 2) { + v.dup2X2(); + v.pop2(); + } + else { throw new UnsupportedOperationException("don't know how to move type " + type + " to top of stack"); }