summaryrefslogtreecommitdiffstats
path: root/source/compiler/aslpredef.c
diff options
context:
space:
mode:
authorjkim <jkim@FreeBSD.org>2013-05-17 23:13:40 +0000
committerjkim <jkim@FreeBSD.org>2013-05-17 23:13:40 +0000
commitaf69f95bba3597db53a980597cfd371c9f6ee7cf (patch)
tree740dae2325e162bb086ea6e7e5d481c4b669e232 /source/compiler/aslpredef.c
parent00f95aec269522bc092cf85fe57fcfc19efecec9 (diff)
downloadFreeBSD-src-af69f95bba3597db53a980597cfd371c9f6ee7cf.zip
FreeBSD-src-af69f95bba3597db53a980597cfd371c9f6ee7cf.tar.gz
Import ACPICA 20130517.
Diffstat (limited to 'source/compiler/aslpredef.c')
-rw-r--r--source/compiler/aslpredef.c22
1 files changed, 21 insertions, 1 deletions
diff --git a/source/compiler/aslpredef.c b/source/compiler/aslpredef.c
index 3895681..60b5269 100644
--- a/source/compiler/aslpredef.c
+++ b/source/compiler/aslpredef.c
@@ -310,7 +310,6 @@ ApCheckPredefinedReturnValue (
break;
default:
-
/*
* All other ops are very difficult or impossible to typecheck at
* compile time. These include all Localx, Argx, and method
@@ -379,6 +378,7 @@ ApCheckForPredefinedObject (
return;
default:
+
break;
}
@@ -624,33 +624,53 @@ ApCheckObjectType (
case PARSEOP_ONE:
case PARSEOP_ONES:
case PARSEOP_INTEGER:
+
ReturnBtype = ACPI_RTYPE_INTEGER;
TypeName = "Integer";
break;
case PARSEOP_STRING_LITERAL:
+
ReturnBtype = ACPI_RTYPE_STRING;
TypeName = "String";
break;
case PARSEOP_BUFFER:
+
ReturnBtype = ACPI_RTYPE_BUFFER;
TypeName = "Buffer";
break;
case PARSEOP_PACKAGE:
case PARSEOP_VAR_PACKAGE:
+
ReturnBtype = ACPI_RTYPE_PACKAGE;
TypeName = "Package";
break;
case PARSEOP_NAMESEG:
case PARSEOP_NAMESTRING:
+ /*
+ * Ignore any named references within a package object.
+ *
+ * For Package objects, references are allowed instead of any of the
+ * standard data types (Integer/String/Buffer/Package). These
+ * references are resolved at runtime. NAMESEG and NAMESTRING are
+ * impossible to typecheck at compile time because the type of
+ * any named object can be changed at runtime (for example,
+ * CopyObject will change the type of the target object).
+ */
+ if (PackageIndex != ACPI_NOT_PACKAGE_ELEMENT)
+ {
+ return (AE_OK);
+ }
+
ReturnBtype = ACPI_RTYPE_REFERENCE;
TypeName = "Reference";
break;
default:
+
/* Not one of the supported object types */
TypeName = UtGetOpName (Op->Asl.ParseOpcode);
OpenPOWER on IntegriCloud